3.4 学编程不拘于语言,学语言不限于平台——《逆袭大学》连载

返回到【全文目录】

目录

3.4 学编程不拘于语言,学语言不限于平台

编程语言

软件和硬件——计算机要作为一个整体看待

语言的江湖

语言不是回事

多平台上的精彩


3.4 学编程不拘于语言,学语言不限于平台

学习程序设计,我们总是从一门语言学起。学什么语言,学了几门语言,这常常成为初学者最关心和最在意的一个问题。稍一打开视野就会发现,程序设计语言之多,令人咋舌。将来要从事的工作中,到底要用哪一种语言?如果工作中用B语言,我现在学的是A语言,这岂不是白学了?可恶的学校,居然就是在教A语言!再进一步,这个平台,那个框架,究竟哪个属于我,或者说,我应该属于哪一个?

学计算机,就要学语言。学哪个语言,如何去学,还真是个问题。

编程语言

按语言的一般分类,编程语言有机器语言、汇编语言和高级语言三类。

机器语言直接用0、1表示的代码编程序。如同刚刚诞生的婴儿只有能力消化乳汁一般,那时个头挺大的家伙,也只能“吃”得下0、1直接写就的程序。只苦了那一代的计算机科学家,用手拨弄着开关,那是在输入程序,把打了孔的纸带上的输出转抄出来,由此读出了计算的结果。前人就是这样栽树的,我们在轻松输出“Hello World”的时候,不知是否能感觉到阴凉?

后来有了汇编语言。指定让两个数加起来,不再是0110之类的一连串的二进制,指令写成了ADD,只是指令中要牵涉到寄存器、地址、端口,和具体的机器还是走得很近。但是汇编语言不得了,有了ADD之类的助记词,写程序的难度已经降低了很多。这种伴随年幼的计算机一起成长起来的语言,在今天仍然独占一方,要提到底层开发,需要超高的效率,必须想到它。

后来有了高级语言,其他的不消说,要将两个数加起来,也终于能写成人类熟悉的a+b了。使人变得轻松的背后,编译程序(或解释程序)在默默地奉献着,帮助人检查着词法和语法错误,将人能读懂的程序翻译成机器能懂的二进制指令序列。同样奉献的还有连接程序,帮忙将七零八脑的二进制文件连接成一个整体,成为一个可以执行的文件。

高级语言形成了一个热闹的大家庭。老大是Fortran,一帮子小兄弟COBOL、Algol带来了新风,BASIC乘着微型机的大船游遍天下,多能的Pascal结构严谨成了教学的首选,千年不遇的C语言精灵刚一出世就震惊天下,老牌的LISP把守着高端,自从Smalltalk找了对象,从C中长出了C++,Java挟着互联网之风呼啸而来,水果帮的Objective-C得了新宠,直译式的Python冷眼观瞧。这一大家子就这样热闹着,各自有自己的粉丝,相互之间的不服气、互相之间的看不惯成了一道风景,任凭TIOBE世界编程语言排行榜排来排去,粉丝们却也没有什么脾气。

表3–2中列出了TIOBE在2013年4月公布的近25年来名列前茅的语言1。叹新“人”辈出的背后,看到的是顺应发展趋势而生的新语言的强大冲击力——1995年诞生的Java语言适应的是互联网中跨平台的需求,Objective-C火爆完全是因为苹果Mac OS X平台和iPhone平台移动开发的热度升高,2000年诞生的C#强势而来,代表了微软从Java中抢得互联网份额的决心。

1 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 

表3–2 近25年来名列前茅的语言(2013年4月公布)

语言

2013年4月

2008年4月

1998年4月

1988年4月

C

1

2

1

1

Java

2

1

3

C++

3

3

2

5

Objective-C

4

42

C#

5

8

PHP

6

4

(Visual)Basic

7

5

4

8

Python

8

7

28

Perl

9

6

6

21

Ruby

10

10

LISP

13

16

12

2

Ada

21

17

14

3

注:划“—”的语言在排名时还没有正式面世。

软件和硬件——计算机要作为一个整体看待

程序设计语言是用来开发软件的。软件已经成为我们这个时代耳熟能详的一个词汇。我那三岁半的小外甥拿起我的智能手机,笑嘻嘻地使坏:“我要卸载你的软件。”

软件是用来指挥计算机运行的各种程序的总和,再加上开发、使用和维护这些程序需要的各种技术资料。软件与语言密切相关,软件开发、软件维护,离不了计算机语言的支持。

和软件相对应,硬件是在计算机系统中能够用眼睛看得见的那些设备,芯片、电路板、连接线,排列整齐,却让人感觉目眩。计算机硬件建立了计算机应用的物质基础,而软件则是提供了发挥硬件功能的方法和手段。软件能扩大计算机的应用范围,并能改善计算机的操作界面,方便用户使用。形象地,我们可以认为硬件就是计算机的“躯体”,而软件是计算机的“灵魂”。没有软件的硬件被称为“裸机”,犹如僵尸一般没有多少实用价值;没有硬件的软件,无从附着,好像就是幽灵。

从计算机体系结构的角度,有一个硬件和软件等效定律:任何可以利用软件实现的事情可以利用硬件来实现,反之,任何可以利用硬件来实现的事情也可以利用软件来实现。不同的方案之间在性能、价格以及实现的难易程度上不同,因而实际的计算机产品常常是软硬件结合完成。

我在买第一台486计算机的时候,专门多花了2000元,配了一块视频解压卡,解压多媒体数据,必须用“硬解压”的方法。那时候计算机的速度听起来已经够快的了,但要处理多媒体数据,用软件的方式根本无法正常播放视频。如今播音乐、放视频,没有见还需要增加什么设备,一个播放器软件解决问题。20多年前计算机要处理汉字,需要专门买一块“汉卡”插到计算机的扩展槽,而现在更多语言的处理工作也完全由软件完成。可以发现,软件的便宜、方便、灵活占尽了优势,也越来越受到重视。但也并不意味着硬件的市场就被剥去。新的结构、需求仍然不断地产生,有一些在品质上有特殊要求的设备,比如游戏玩家需要的高性能显卡,音乐发烧友需要高品质的声卡,工业控制中需要的专门功能模块等,仍然要靠着硬件支撑。除了通用计算机的外围设备,专用的新产品需要不断开发出来,这都大量需要能在硬件层面上工作的人才。

软件和硬件之间,于是形成了一个明显的互动:软件实际能实现的功能受制于硬件,硬件性能的提高,可以为软件创造出更好的开发环境,并在此基础上可以开发出功能更强的软件。比如微型计算机的市场上,CPU的每一次升级,产生了微型机的新产品,操作系统软件的版本也随之提高,并产生出一系列新版的应用软件。反过来,软件的发展对硬件提出更高的要求,促使硬件性能的提高,甚至产生新的硬件。在软件和硬件共同的推动下,新产品不断推出,当然,用户需要不断地花钱购买新的软件和硬件,形成了经久不衰的IT行业和市场。

将计算机分成软件、硬件两个部分是必要的,但不可以将两者独立开来去看。一说起搞软件的就是编程序、敲代码;而搞硬件的,就是设计电路图,或者就是电烙铁、螺丝刀上阵比划。实际上软件和硬件之间的联系密不可分,唯有合二为一才能看清计算机的本来面貌。在计算机的学习路线上,可以有所侧重软件或者硬件,但不可以走向学软件就不要硬件,学硬件就不要软件的极端。对于关注软件的,理解了硬件系统,会帮助你理解保证计算效率的程序设计技术,写出优质的软件。而对于偏重于学习硬件的,并不是成天就是和各种芯片、电路板打交道,合适的工作要让软件去做,更方便、更灵活、更廉价,何乐而不为?况且,开发底层驱动程序,在操作系统的层面上做工作,这需要软硬件都过关的技术人员。具备这样能力的人,也自然是行业中能够稳固立足的人。

在大学阶段不可以过早地将自己归到了软件或者硬件的阵营。大学阶段的学习只是一个很基础的阶段,培养方案中的软、硬件技术都只是基本的知识,过早的“归口”,对大学阶段的学习非常有害,缩小了未来的发展空间,更使自己的知识结构限制在一个个的“知识孤岛”上。而有些软件工程专业的学生动辄就说“我是学Java的”,“我是学.NET的”,这更是一个更窄化的认识了。一个人的职业生涯会有几十年,要去穿越不同的时代,更需要对硬件和软件都熟悉的复合型人才。在大学中接受计算机类专业学习的同学,将计算机作为一个整体进行理解,不必要厚此薄彼地对待软件、硬件的问题。

语言的江湖

语言,是用于交流思想、传达信息的工具。人类社会的发展,产生了众多的自然语言,汉语、英语、德语、法语……语言是各民族优秀文化的代表。随着人类文明的发展和科学的进步,也诞生了数不清的人工语言。例如,阿拉伯数字是数学语言中的最基本最简单的部分;H2O代表着我们时刻都离不开的那种物质,分子式、反应方程式是化学的语言。依此展开,五线谱是音乐语言,图纸是工程语言,几乎所有的学科在发展过程中都提炼出了需要的一组符号,以及使用这些符号的语法规则,人们可以利用这些符号表述学科中特有的规律和规则。

计算机语言是人与计算机之间通信的人工语言。为了让计算机能进行工作,采用一套数字、字符和语法规范,组成了各种指令(或语句),编写成程序由计算机去执行。有趣的是,旧时土匪、帮会、秘密组织使用的黑话也可以称为人工语言,在不少对计算机保持神秘的人士看来,计算机专业人员用来和计算机对话的语言,大致也与我们听不懂的江湖黑话一样不可捉摸呢。

据统计,目前已有的计算机语言已经达到了一千多种。主流的语言在不断变化,新语言产生的浪潮还将继续下去。对于一名优秀的程序员,精通几门,熟悉十几门语言,实在不是一件稀罕的事。这也引发了一些初学者的恐慌:如此多的语言何时才能学完?岂不是要学死人了?这种担心大可不必,这么多人也都还在好好活着。

有人在吐槽这个行业为何总要出现新的语言,成天变来变去,为什么就不能有一种语言一统天下?而事实上,人们曾经试图发明集所有语言之优点的语言,但这种努力已经停止。我们看到的,是随着新需求的提出和技术的发展,老英雄依然横刀立马,新俊杰精彩不断。“古老”的语言中,沙子已经被强力洗去,留下的金子在适应其产生背景的领域里依然熠熠生辉。“中年”的语言是中流砥柱,用他们的成熟支撑着整个的产业,成为目前广大初学者竞逐的目标。而世界是年轻人的,年轻的语言也在开拓新的疆域中不断崭露头角,引领着未来的世界,也接受着该有的考验。

FORTRAN是第一门高级程序设计语言,广泛应用于科学和工程计算领域,其最大特性是接近数学公式的自然描述,这与计算机发展初期主要用于科学计算的背景相关。当今流行的MATLAB是商业数学软件,是用于算法开发、数据可视化、数据分析以及数值计算的高级计算语言和交互式环境。COBOL也是最早的高级程序设计语言之一,是世界上第一个面向商业的语言,代表了计算机由科学计算到事务管理的转变,直至现在还广泛用于数据处理领域。LISP是一种函数式编程语言,Prolog是一种逻辑编程语言,它们被广泛地应用在人工智能的研究中,可以用于专家系统建造、自然语言理解、智能知识库的建设等。Pascal是第一个结构化的编程语言,是一种计算机通用的高级程序设计语言,语法严谨,层次分明,程序易写,具有很强的可读性,产生于软件工程诞生初期。BASIC是设计给初学者使用的程序设计语言,随着微型计算机的兴起而普及,承载着比尔•盖茨“让每个人桌子上都有一台电脑”的梦想。C语言是世界上最流行、使用最广泛的高级程序设计语言之一,在操作系统等系统软件的开发,以及需要和硬件打交道的场合,C语言相对其他高级语言有明显优势。当面向对象程序设计技术兴起的时候,各门传统语言纷纷增加了面向对象的机制,由C有了C++,在需要性能保证的场合仍挑大梁,Pascal生出Delphi,曾经在数据库应用系统开发中风光无限,VB(Visual Basic)源于Basic,让应用开发的门槛降了下来。

桌面计算的时代让位给了互联网。Java是互联网时代的英雄,拿手好戏是编写跨平台应用软件。通用、高效、可移植、安全等诸多特性,使Java迅速拥有了全球最大的开发者专业群体,足迹踩遍个人计算机、数据中心、游戏控制台、超级计算机、移动电话和互联网各大领域。蓝色巨人Microsoft向来行动缓慢但从来不吃素,踏入互联网领域佩带的屠龙刀是C#(读作C Sharp),继承了C和C++强大功能,综合了VB简单的可视化操作和C++的高运行效率,以强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。基于浏览器的web应用是一块巨大的蛋糕,立住脚跟的是JSP和PHP。JSP出身名门,由Sun公司倡导,是由许多公司参与一起建立的一种跨平台的动态网页技术标准。相对而言,PHP更像是草莽英雄,高举开源的大旗,和同样开源的操作系统Linux、web服务器Apache、数据库MySQL并肩组成LAMP组合,占领了web开发的大半江山。此界的后起之秀是Python和Ruby,志在通用语言,志在简化编程难度、提高人的效率,虽然年岁不大,但为计算机语言世界带来了新的思路,成了最受欢迎的新型程序设计语言。在互联网中,还有一大帮子的语言默默无闻地支撑着信息描述、信息表达和信息显现的重任,然而有时人们更愿意把它们只当作标准而非语言,它们中的代表是超文本标记语言HTML、可扩展标记语言XML、层叠样式表CSS,还显稚嫩的HTML5华丽而来,脚本语言中的杰出代表JavaScript借此更加风采动人。

移动计算、云计算是业界新的热点。沉寂多年有Objective-C年岁已是不小,帮助苹果再次崛起,也让自己成了近年来风头最劲的语言,以坐着火箭的速度强势杀入了编程语言排行榜前三甲。生于谷歌的Go语言被寄予厚望,这个志在通吃服务器端和用户设备端的少侠还没有在江湖走动,重速度、重安全,想在多核处理器的并行处理上所作为,我们等着看这门新语言交出的答卷。

天下大势,就在这些新、老语言的争相斗艳中变来变去。新生的语言,再不是全靠自身魅力立足,一个好爸爸为其划好地盘也是少不了的条件。正当大家追捧新星之际,闻听某老将却配备了新装备再次杀回。洗牌之后的局面一时难辨,却发现某爷爷级语言的地盘仍然稳如磐石。这就是语言的江湖。各种语言的粉丝奋起而互掐,各种语言的变迁及恩怨是业界老人的谈资,唬得小辈们只能是瞪着眼睛不住点头。

于是,很多的初学者,弱弱地问出了一个不能回避的问题:我该学哪门语言?

语言不是回事

我该学哪门语言?这是一个没有办法直接给出答案的问题。

没有一门语言能够一直实用下去,没有一门语言能够满足一个人整个职业生涯的需要。更严重的是,在实际工作中,甚至一个项目都可能会用到不止一门语言。

所以,一个可以让人悲观事实是:学语言是一个没有完的事情。另一个让人能有些信心的事实是:IT技术人员,一人精通几门语言,熟悉十几门语言,这种情况并不罕见。这也是一个能让人兴奋和自豪的事。我们所处的行业的确是个常变常新的行业,终身学习,对IT人更现实,我们在引领着世界发展的潮流。熟悉多门语言其实算不得多大的挑战,语言无非是上阵时要用双节棍还是柳叶刀的问题,内功高深的人方为俊杰。IT人更需要坚决地打破旧有的学习观念,树立新的学习品格,而在此过程中获得的战斗力,将使我们有能力应对一切的变化。

然而,这些事实,也的确给很多的初学者带来压力。事实上,计算机语言之间有差异,但共同的成分更多一些。基本的无非是三种控制结构、有限的几种语句、输入输出,再加上子程序(有些语言称为函数、过程)机制,支持一些数据结构,有些语言加入了面向对象的机制。仅此而已。学过了一门语言,再学第二门时,都能体会到这一特点。计算机语言的学习,某种程度上讲,一通百通。如果第一门语言需要投入100小时,第二门语言只需50小时,再往后学其他语言,所需要的投入将会快速下降。

如果将学编程看作学开车,语言就是那车。学车时在驾校开捷达,学会了开自家的比亚迪,很自然的事。开车的方法会了,开车中需要的对速度和空间的感知有了,开什么车都一样。学会的一门语言没有市场了,是否会面临淘汰?我们要知道,“开了五年比亚迪,现在改开奥迪了,哥还是老司机!”

既然第一门语言无所谓,最现实的一种选择是,你所在的学校给你开哪一门语言,你就将这种语言学好。纵观国内的高校,第一门程序设计语言一般选择C、C++或者Java,都有其道理,也有极少数引入国外部分高校的模式,从Python学起。

学习第一门语言时,初学者往往会觉得有些困难。这个困难其实并不全是来自于语言,而是受限于编程序的概念正在建立,编程的方法、调试的手段也是从无到有,这中间需要的突破远远多于学语言本身。很多的教材名称叫做“×语言程序设计”,从中可以看到,学习的首先是程序设计,其次是用某一门语言作为表达方式的程序设计。作为初学者,是将所有问题混在一起看待,学编程起步中的所有问题,也就归到了语言的身上。

在学好第一门语言的基础上,我建议同学们可以自学,或者通过选修课的方式学习第二门语言。这是体验程序设计语言“一通百通”的机会,除了掌握语言本身,对程序设计的体会也将加深。同时学习几门语言对老手来讲很正常,但正在学习第一门语言的同学,不建议同时学第二门语言。编程的基本过程、基本概念尚未建立,其间带来的迷惑,以及可能存在的概念冲突,都可能会妨碍学习的效果和感受,使学习热情和兴趣受到打压。

建议在学好第一门语言的基础上再学习第二门语言,用第一门语言中习得的程序设计方法支持用第二门语言的程序设计。需要忌讳的学法是一门语言学个半截就又转而去学另一门语言。这种学法将使人永远处在只知道一点点的状态,久久不能得门而入,甚至最终打了退堂鼓。更糟糕的是,老师在教着A语言,听某人说B语言流行,放下A语言去独自攻打B语言,如此没有几天必去转学Q语言。最大的收获是,短短一年,能用多种语言输出hello world,用浮在表面的话题能吹牛唬唬外行而已。对于计算机语言,只要先将一门学精了,学会了解决问题的一般方法,就像学会了开车一样,上其他车稍加熟悉也就能上路了。

大学四年的时光,光两门语言,也真是不够,需要逐步地拓展,再学到其他语言,体验用其他语言的编程,学会做出一些“项目”来。大学四年中,在学习语言上的节奏,我建议前两年,目标定为只会用两种语言即可,一门精通,另一门了解。第三门语言完全可以按“因为用到所以要学”的思路去选择。进入到了大三,编程方法有了基础,眼界也拓宽了,选择一个自己感兴趣的方向,学习这个方向上惯用的语言,以做出一个小项目当就业敲门砖为目标,借此树立自己的特色。对语言的兴趣可能会在学习过程中换一换,但是不要换得太勤。一个方向,仅靠一门语言可能不够,而是需要学习相关的一组语言,用着什么学什么,不必犹豫太多。对于一些简单的,但应该是常识性的语言的学习,如HTML等,可以在四年当中随时启动。有些语言,在培养方案中会安排老师授课,你的计划可以与培养方案接轨,也可以自主安排。

在编程学习中常见的哀叹是:好好学了两年C++,最后做Java了,白学了,可惜了,我好杯具。对此要反问的是,如果真是这样,有哪一天Java的工作机会也不再有了,是否自己也跟着进到博物馆?还是前面所讲的道理,不管用什么语言,学的是编程。练出的功夫不只是体现在拳脚上,而是无论哪里发力,使什么样的兵器,丹田之气都能随之跟进。当需要换语言之时,用丰富的编程经历与体验迎接新语言的到来,无论何时需要新语言加入到你的知识体系中,坦然接受即可。这样的焦虑,只对学了一两门语言的初学者存在,对于已经窥到门径的人来说已经不是问题。初学者也倒是可以放心地投入进去,不要被这种阶段性的顾虑束住了手脚。

初学编程,常常关注的是C++、Java这样的通用编程语言。实际上,在计算机类专业的培养方案中,还会有不少的语言不会单独设课,而是包含在某门课程中。例如计算机组成原理、微机原理等课程中要涉及指令系统、汇编语言。目前,即使进行电路设计这样的纯硬件工作,也通过高级语言实现,常用的是硬件描述语言VHDL。在数据库中离不开SQL语言,这是所有关系型数据库操纵的通用标准语言,在数据库原理课中学习。学习有关操作系统、计算机网络时,不可避免地要使用命令行,需要用脚本语言写一些批处理。语言不仅指编程时用的语言,还有在设计阶段用到的语言,比如面向对象分析与设计中使用的统一建模语言UML,并不是要用它编出程序来,却是在编出程序之前描述设计方案的。诸如程序流程图、数据流图之类的图形工具,也属于设计语言的范畴,是软件工程中离不开的工具。再拓展开来,理论计算机中用到的形式语言,包括用于表示程序设计语言这样的上下文相关语言,也包括用来描述自然语言这样的上下文无关语言,这些都是语言。学习了计算机,将语言的概念拓展开来,才能深深地体会到语言就是用于交流思想、传达信息的工具这一本质。

回到程序设计语言上来。其实还有不少语言,是可以用来学着玩的。众所周知的Logo语言,用简单的指令,指使着一只小海龟行走,画出不同的图案来,这一直是幼儿学习程序设计的启蒙语言。我前几年科研中用过的NetLogo,广泛用于多智能体系统的仿真,其主要的阵地却在中小学教育中,方便地模拟各学科中涉及的自然、社会现象,用于辅助教学。RoboMind是一个简单的教育性质的编程环境,能让初学者对机器人编程。这些语言语法简单、资源丰富,有闲时可以搜索并下载来玩一玩,定给你带来意外的享受,丰富编程的体验。

在大学阶段对语言的学习,注重对编程的理解。起步学的第一门语言,是为了学会编程;而确定专业方向后学习的一组语言,是为了能够在一段时期内从事实际工作所用。在进入工作阶段后,语言的学习不会停下,要根据工作的实际需求选择语言。有了大学中所学的专业基础和理论,这样的自学能力可以有,这也是大学的价值所在。对于一个计算机类专业的大学生而言,老师教过的语言课就是那么两三门,学生是否学会取决于他自己在学习中的投入和表现。大学中的专业核心课程,无论其表现形式是什么,都是围绕对计算机的理解而开设,能够落实和体现到编程能力上来,使学生能够理解语言的原理,学会设计,学会解决问题的方法。一名真正合格的毕业生,已然是具备了自学语言的基础,能够充分、从容地面对语言的变化。

这么说来,语言是个事,但也真不用把语言太当回事。

多平台上的精彩

就在“写出程序”的层面,语言也仅仅是其中的一个方面。选定了语言,开发和运行都需要有平台的支持。这些与语言有关,事关编程的质量和效率,会给编程者带来不同的感受。

程序是计算机执行的指令序列。早年用机器码写程序时,每台机器上运行的程序,编写方式都不一样,程序完全受运行程序的硬件平台的限制。有了高级语言,用高级语言写出程序的过程中,一般不用考虑运行在什么硬件平台、软件环境中。高级语言程序通过编译程序“翻译成”的机器代码,在各种操作系统(如Linux和Windows)上有差异,但这可以由各操作系统使用不同的编译程序来保证。对于同一种高级语言,比如C语言,在不同操作系统中使用的编译程序会不同,于是在不同操作系统下,生成的目标代码不同,适合各自的要求。不过,这样的差别在初学者刚学编程的角度看,可以暂时不必过分关注。主要是在产品开发时,尤其是开发跨平台的软件时,对这种问题才需要给予足够的重视。

除了程序的运行平台,编程初学者更关心程序的开发平台。我们在编程时,常常使用集成开发环境(Integrated Development Environment,IDE),这是开发平台中初学者能够直接感知到的部分。IDE是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具,是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套件。学习C和C++的同学用VC++6.0、C++Builder,学习Java的同学用Eclipse、NetBeans,设计网站时使用的HomeSite、DreamWeaver等,这些都是IDE。其实,支持C++的还有DEV C++、CodeBlocks、Qt,Eclipse加上插件也能支持C++。所以一种语言可以用多种IDE编程,一种IDE也可能支持多种语言。IDE可视化的操作界面、漂亮的语法着色、所见即所得的设计过程、语法错误的随时反馈、单步执行等调试工具,这给编程者带来了好的感受,很多IDE还提供了协作开发等功能,极大地提高了生产效率,甚至自动处理各种运行平台的差异。各种IDE也有自己的粉丝,照样诸多互相看不惯:Qt的小资,CodeBlocks的洋气,让用老旧VC++6.0的不敢多说话。

实际上,很多初学者不知道,任何语言的程序都可以只用记事本之类的简单编辑器就可以进行编辑,用命令行,可以完成程序的编译、连接和运行。至今,还有不少高手在安心地利用vi一类的老式行编辑器工作,而对界面友好的新式IDE中繁杂的菜单选项频频吐槽。事实上,新加入到行业中的新人,实在用不着玩酷回到那个年代的方式中去了,用好方便的IDE即可。

初学者最关心开发平台选择的问题。学C语言的说,老师要我们用VC,但有人说该用CodeBlocks;学Java的说,配置Eclipse很麻烦,某高手就是记事本加命令行。那究竟应该怎么办?

前面我们谈过“语言不是回事”。初学程序,不限于用哪一种语言。涉及开发平台,也自然没有那么多的约束,哪个方便用哪个即可。进一步的建议是,在学习一门语言的过程中,可以体验不同的开发环境,让自己会用多种开发平台,具备适应不同开发环境的能力。学会灵活使用开发平台,最后做到驾驭自如,不要让不同IDE中菜单和快捷键上的差异,成为束缚编程思维和编程过程提高的障碍。做这件事,其实并不难,只要去尝试,就会有结果。从中得到的,就是那种很宝贵的“感觉”。

会开比亚迪,就能开奥迪;走过了国道,咱也能上高速。此所谓“学编程不拘于语言,学语言不限于平台。

返回到【全文目录】【下一节】

 

你可能感兴趣的:(逆袭大学,逆袭大学——传给IT学子正能量)