1.今天用yum安装了几个软件,感到了它的强大,这使我想起了曾经使用过的apt包管理机制,二者是何等的相似,从中我看到了软件之美,本文我不从开发和设计的角度,仅从应用的角度谈谈我的感想,软件的安装无论何时都是新安装完操作系统之后的头等大事,从何处获取软件便成了大事中的大事,以前使用windows的时候,我经常逛天空软件站,当时的书签中保存了很多常用软件的下载地址,其次还记住了几个常用软件的官方网站,虽然很自豪的使用了几个年头,但是当我第一次使用了debian之后,我毅然的删除了那些书签,因为我很少使用windows了,除了上班。最方便的操作系统应该将善意进行到底而不是为了打响自己的品牌,诱导别人点击自己的网站,用户的目的在于使用软件而不是为了使用软件而不得已先去点击一个自己并不感兴趣的网页,然后在一个很偏僻的角落里找到一个可能已经失效的链接,用户在一次一次的尝试中已然麻木,到最后有谁还会抱怨天空软件站是自己不感兴趣的呢?有人可能会说apt或者yum的配置很难,说它很难是因为你根本没有去使用,其实一点也不难,配置好了就一劳永逸了,需要说明的是,apt也好,yum也罢,都是c/s架构的,仅仅拥有一个客户端是不够的,还需要一个服务端,体现在源这个概念上,也就是从哪里可以得到基于apt或者yum的软件,幸运的是,apt和yum都拥有很多的源。

2.到底是多语言的平台好还是跨平台的语言好,这在几年前或许是.net和java之间的一个争论,.net作为一个多语言的平台显得要比跨平台的语言java更有优势,为什么呢?因为现在的应用软件离平台越来越高,很少有人再关注自己的平台了,很少有人会认为在不同的平台上构建一遍程序会很麻烦,更重要的是,.net应用与使用十分广泛的windows家族平台,其本身就拥有压倒的优势,使得java的跨平台的优势大大缩水,毕竟有多少平台可跨呢?超过半数的都是windows,这也是09年5月《程序员》杂志中的一句话的深刻含义:谁控制了操作系统谁就是赢家。然而.net马上就打赢战争的时候忽略了一个事实,那就是标准的开放性更加重要,jvm除了保证其上的java程序跨平台外,其本身就是一个平台,而且是一个开放的平台,越来越多的语言搬运到了这个平台,比如ruby,比如python...如此一来jvm就要比.net高出不止一截了,让它们PK一下,它们都是操作系统之上的平台,并且上面都支持多个开发语言,这一点打平,.net不跨平台,虽然有社区正致力于这方面的工作,但是java原生的就是跨平台的,这一点上java胜出;考虑一下和操作系统的关系,.net严重依赖windows操作系统家族,而jvm却什么也不依赖,最后一点java胜出,java vs .net的结构3:1.

3.知道并行编程最大的障碍吗?就是状态,状态在程序中用变量来表示,一个变量被多个执行绪访问就构成了竞争。

4.C语言中的指针不单单是提供了操作动态内存的把手,更重要的,几乎所有的语言机制都是C指针的胶合剂。

附:忍不住谈谈OS设计

记住,操作系统是个服务者,它不应该并且永远不应该过于大,特别是内核更是如此,当你的操作系统占用了你的磁盘的百分之10以上的时候,你就要质疑一下你的操作系统是否应该精简一下了,在这里windows和linux无论从OS架构还是磁盘分区都代表了两种模式,windows的内核基本包含了很多的模块而linux却只有vmlinuz,windows提倡将磁盘进行分区而linux却尽量避免将整体的磁盘分离,linux中提供的mount挂载是为了挂载外来磁盘或者是扩展用的,刚刚从windows转向linux的可能会将/home分为一个区,然而你可以很简单的在进入系统之后使用mount -t XXX /dev/YYY /home轻松做到这一点,因此linux的目标是最大效率的使用磁盘而不要发生有一个大文件,最大剩余空间的分区放不进去,然而所有空闲空间加和却超过的该大文件的情况,linux的树形磁盘管理结构是基于挂载的,而windows的平行的线性管理结构是实现确定的,比较符合磁盘MSR的建议。