五千年(敝帚自珍)

主题:关于Linux的推广——普通用户篇 -- 万斤

共:💬381 🌺357
全看分页树展 · 主题 跟帖
家园 关于Linux的推广——开发人员篇

今天我大概说说有关一个开发人员,就是对计算机有相当了解的人,如何逐步享受Linux提供的优势。

多说一句,我第一篇的点子,刚开始是一些简单,随意的个人行为。后来主要是受我女朋友的课题的影响,她的博士课题是研究某个现代管理系统,比如ERP系统,如何融入公司的。这个课题本身很复杂,她看过的材料大改1-2米还是有的,其实很多公司部署都或多或少地没有达到目标。所以现在都是采用按需分配,逐步改进,以用户满意,满足功能为目标。有很多具体的步骤。我上文提出的建议,也是参照了她的意见的。

和很多人想象的不太一样。实际上,我发现开发人员,尤其是windows下面的开发人员,远比普通用户对Linux来的排斥。尤其是上了班的人,他们宁愿用苹果也不会用Linux,所以目前大量对Linux的热心人实际上是在学校。

原因是非常简单的,对于win下面的计算机专业人员,他们对win系统投入远比一般用户多,而且对win很熟悉。像一般用户害怕的病毒,或者重装软件之类,并不陌生。而转换linux的成本,实际上远远比普通用户来的高。熟悉Linux的人都知道,那个东西对专业人员提供的功能要远远超过给普通用户提供的功能,而且要难的多。最简单的例子,在VC++(我用VC的时候是6.0,现在不清楚了)开发一个简单的程序,只要写好程序,直接运行就是。而在Linux下面,就要先学习编辑器,编辑器编程模式,GCC,Make,(甚至autotools)等等等一系列的工具,而这些工具每个都有很长的手册。所以等win系统的人已经开始直接写程序了,而linux下面的人通常还在花一两个星期在了解基本概念方面。而且对用户英语的要求实际上很高。广大英语不是母语的开发者对此往往很头痛。一个典型的例子就是,命令参数大多是英语的缩写,这对西方人不是问题,而中国人就要强行背。比如用tar的展开一个压缩包,命令是tar xzfv,我的同事用的时候,直接就念 tar eXtract Zipped File and Verify。中国人运用这个命令的难度就比GUI方式来的大。换句话说,命令行系统其实对语言要求比GUI来的严格,所以windows的流行不是一个偶然因素。

平心而论,Windows对开发界面方面还是投入了大量的精力,编辑器相当友好,直到现在我也认为Linux下面的程序编辑器没有一个达到它的水平,这个不可否认。所以当开发人员切换到Linux下面的时候,往往是从天上掉到地上。我记得01年的时候,我还在到处找一个合适的IDE和一个友善的编辑器(我记得用的是nedit)。所以,通常情况下,win开发人员不会轻易地转到Linux下面。实践生活中,我发现只有一个理由总是有效的:上面,或者工作强迫他这么做,或者单位里面都在用Linux/Unix系统。其他情况我想劝是难度很大的,伤感情。

但是,并不是说其他开发人员就不感兴趣。如果真要说突破口,那就几乎从一点开始的:源代码管理系统。我发现win下面的开发人员很多(我不能说大多数,但是据我接触的来说)几乎都没有源程序管理的意识。这个我猜想是由于SourceSafe功能长期比较弱有关。对Linux的高级用户来说,是不太可以想象的。比如我自己,不仅程序,文档要用SVN(最近正在转换到GIT)上。就是内核配置文件 /etc dpkg 数据库等也是用版本保留工具保存的。所以如果能在工作组建立服务器,帮助他们保存源代码,我想这是一个好的起点。(我建议采用SubVersion)。

下一步,通常来说,win开发人员第一个问题通常就是有关Linux IDE的,因为对他们来说,IDE通常就是开发程序的全部。当然有人提到Editplus,其实这个也是一个变相的IDE。而Linux下面,说实话,真正实用的IDE就只有emacs和vim。所以最大的问题首先是要回去阐述最核心的计算机编程问题,编译,链接(动态链接),宏展开,Linux的文件结构。这些基础问题如果不清楚,后面过渡起来非常困难。而很多win开发员,根据我的了解,他们实际上并不是很清楚,往往和学校学习的相脱节。而Linux还是保持了比较严格的步骤。

不过作为过渡,很多人目前提到eclipse,尤其是使用Java的开发员,我本人没有用过eclipse,但是我听说,它可以链接到Subversion,而且C的模组写的相当好。所以我在这里做个推荐,当然如果有谁用过,麻烦添上相关信息。万分感谢。

开发人员真要迁移到Linux下面,通常会遇到我称为“学习死锁”的情况,要想熟练编程,通常需要学习某个“古怪”的编辑器,而要想真正能使用好此编辑器,又通常需要编程来带,并且要会各种命令行命令,而命令行命令本身又多又复杂,无从下手,需要学习无穷的帮助,而帮助本身还要看帮助。。。。为了解决某个小问题,都要牵涉所有的Linux的概念。通常为了解决问题,看了一圈最后,反而那个问题本身的解决方案无关紧要了。搭进去很多时间。这事我本人在转到Linux平台下,感觉最难的地方。即便是到了今天,也会遇到这种情况。

为了降低难度,我个人建议,一定不要盲目一下子脑袋发热,像学习windows那样,立刻装一个双启动Linux/win系统。实践证明,这样做是最费力气的。会导致这样的情况:Linux成为一个高级玩具,里面有很多好玩的东西,但是真正干活娱乐还是打开windows系统。好像Linux下面的东西了解很多,但是几乎不用来解决真正的问题。这个问题没有什么好避讳的:我差不多有一年半是这个状态。直到有一天,我把所有windows彻底删除为止。即便是到现在,我也是没有必要的情况下,绝不用windows系统。

为了解决“学习死锁”的问题,我个人建议一定要在win平台下学习至少一种编辑器,其实这个也没有什么好选的:vim,或者eclipse的编辑器,考虑到linux下面大量的配置工作,基本上vim是怎么也要学的。当然如果能学习eclipse 就更好了。vim刚开始学习比较困难,不过我这里有个诀窍:就是上来就了解一下vim 采用模式的思路。然后直接打印一份vim reference card放在桌子边上,很快就能学会基本的操作。

我这里起一个简单的转换方式,首先起一个独立的linux服务器/工作站来(我想目前大部分开发员都有两台以上机器)。这个机器上什么windows都别装,然后开始学习配置ssh和Subversion,通过两者的学习,了解基本的命令,和如何看帮助。这样做的目的主要是防止无目的“漫游式”地学习。接下来,我倒是建议,如果有时间,把Linux的启动过程好好了解一下,特别是如何使用rc.d系统重启服务。通常win程序员习惯重启,Linux下面这点应该得到改正。分发版我推荐Debian。Debian系统一个最大的好处就是,一开始安装的软件很少,所以你可以一步一步看到哪些包具体起什么作用。然后就是经典的 Hello world,这个程序。同时学习一些最简单的gcc/make的方式。

接下来一步很重要,我建议立刻倒回去整理了解linux的目录树结构,彻底了解比如 /lib /usr/include 之类的目录下到底是放什么的,还有就是库文件的命名方式。比如 libm.a 放在什么地方等等,命名规则怎么回事。这些事情很小,但是极端重要!了解这些对理解Make和GCC帮助极大。我以前就是太匆忙,结果回头还是要补上。

接下来Make是肯定要学习的。也不需要去通读Make 手册,简单看看就行,比如基本的变量,宏什么的。到这里,基本相关的Linux 开发基本步骤了解了。然后下一步是尝试把 hello world 用vim 下的subversion模块管理起来。我这里不是很熟悉,因为我个人通常使用emacs 系统。不过感觉应该是差不多。练习熟悉了,就可以考虑把windows下的程序移植到linux下来,直接进行开发。其他的linux相关配置可以暂时不用管它,用到再学:)

最后,我说一句,不要没事重装Linux系统,Linux的可维护性相当相当好,99%以上的问题都可以通过不重启来解决。

这是我自己转移过程中的一些感想,写出来,希望对大家有所帮助


本帖一共被 1 帖 引用 (帖内工具实现)
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河