入行以来涉及的技术简史

来源:互联网 发布:考研数学有多难 知乎 编辑:程序博客网 时间:2024/04/29 03:14

http://antkillerfarm.github.io/

今年是我本科毕业的第10年。作为10年之前的菜鸟的我,现在虽不敢自称高手,但老鸟总还是当的上的。目前码农一个,马仔若干,不知道10年之后,是否仍以码农为业?

闲话休提,故事还是从头说起。流水帐一笔,一一记来。

1.编程语言

初二开始接触计算机,这是我最早学习的编程语言。从若干年后,对UcbLogo的研究,应该说LOGO语言还是一门很不错的新手入门语言,尤其海龟做图,更是计算机图形学的入门经典。

2)BASIC

初三学习BASIC语言,那时的BASIC语言还是需要行号的那种。不过由于初三已经要面对升学压力,因此,对这个研究属于浅尝辄止,之后也没有再继续。

3)PASCAL

高一的时候,老爸听从单位同事的推荐(从这里亦可看出当年PASCAL在工业界的影响力。),给了我一本PASCAL的书,是谭浩强写的。很多诸如顺序、分支、循环的面向过程的程序设计思想,实际上在这个时候就已经接触到了。当时的目标是实现一个贪吃蛇程序,但由于无人指点,最终也没有实现。后来上了大学,大一上学期的程序设计课程,也以PASCAL作为教学语言。但自从大一下学期学习C语言之后,就再也没有用过PASCAL。当时使用的IDE是Turbo Pascal 2.0——Borland的起家之作。

4)C

大二开始接触,但从大三自学C++之后,有很长一段时间,都很少使用它。直到2009年以后,由于工作内容转为嵌入式驱动开发,C重新成为我的主要工作语言。它也是我理解的最深刻的语言,无论是语法现象或者是具体的机器实现。由于所有的C++编译器都支持C,因此所使用的IDE将在讲到C++的时候再说。

5)C++

在同学W的带领下,自学成才。对于基本的继承、派生使用的还可以,但对于模板之类的高级语法特性,至今也不是太清楚。而且由于先学习C,再学习C++,思维中总是以面向过程的思想为主,搞得现在无论是使用Java、Python,还是Matlab,写程序都是一个路子。PS:当然只学C++的人,也有缺陷。当年大学里的一个老师就说过:“有的人什么都想编个类,离了类连程序都不会写了。”

以使用的编译环境为序,大概分为以下几个阶段:

1.Tubro C 2.0(2001)

貌似2005年以前的理工科非计算机专业学生都用过,有的人也只会用这个。

2.Borland C++ 5.0(2002)。

这个是很偶然的,当时买的一张盗版盘上的软件。事实上,Borland C++虽然盛极一时,被诸如梁肇新之类的前辈大神视为至宝(没有之一),但到了Borland C++ 5.0的时候,其实已经是VC的天下了。当时的我刚买了电脑,有能力用个比Tubro C 2.0强一些的IDE。同时VC的复杂性也让我在最初的时候,对它有所回避。

3.VisualC++ 6.0(2003~2004)。

VC 6.0是一个经典,直到2011年都还有同事在使用它编写程序。但长江后浪推前浪,这之后遇到的应届生已经没有用它的了,尽管老程序员中仍然有用它的。

4.VisualStudio 2003(2005~2007)。

在VS历史上VS 2002是一个里程碑的版本。微软的IDE,有三个阶段,早期的MS C++阶段,中期的VC阶段,和现在的VS阶段,每个阶段之间的IDE结构有较大区别,而阶段內各版本的差别倒不是很大。我没有用过VS 2002,直接就是VS 2003。

5.VisualStudio 2005(2007~2010)。

这个是我个人觉得使用的比较广泛的一个版本。

它的成功,在我看来可以归为以下几点:

1)VC 6.0到了这个时候,毕竟已经很老迈了,无论多么成功的产品,也终会有被淘汰的一天。

2)EVC产品线合并到VS的第一个版本。EVC是MS在wince初期使用的IDE。这使得VS2005同时具备开发嵌入式软件的能力。

3).NET步入成熟期的产品。在这之后,.NET的改动除了增加Win7/8的新UI特性之外,已经不明显了。

4)非MS嵌入式平台的崛起。2009年以后,随着移动开发,尤其是iOS和Android,成为业界热点,VS的重要性日渐下降。因此很多开发人员没有动力升级工具,很多开源代码也往往停留在这个版本不愿升级。

6.VisualStudio 2010(2010~)。

同事X当时正在MS的外包干活,我用的是他弄出来的内部版本。后来随着工作重心的转移,虽然一直还在用,但是已经用的很少了,也没有继续升级的打算了。

7.RVDS(2009~2011)。

一个ARM编译器,工作需要曾用过。

8.Gcc(2011~)。

目前主要使用的环境(没有IDE)。

9.C++ Builder 6(2012~)。

维护公司目前的一件工具时用到了这个。即使以现在的眼光来看,这也是个不错的工具,至少入门比MFC要简单的多。

6)Java(2004~)。

大四的时候开始接触该语言,做过一些不太大的软件。因此后来在Android平台推出的时候,也算是如鱼得水了一阵子,是公司当时少数的C++和Java都会的人。但总的来说用的不多。

1-Notepad时代(2003)。

在那个时代,Java在学校的教学还处在初级阶段,当时书店介绍Java的书基本没有。校图书馆里倒是有5、6本,但翻翻年代大多是1998-2000年左右的,JDK1.0/1.1的。这一点上我倒是比较佩服图书馆的工作人员,能在Java还没有风生水起时,就引进这样的书。我赶了个早,将这5、6本全部收下,之后的同学就只有找我借了,因为这个课程在当时是没有教材的。

2-JCreater时代(2004)。

在2003年学习Java课程时,同学中开始有人使用IDE,主要有JCreater和JBuilder。其中Jcreater由于配置简单,在同学中尤为流行。我也从同学手里要了一份该软件。但在当时并没有使用。后来2004年底为了完成JSP的作业,开始使用该IDE。

3-JBuilder时代(2005)。

JBuilder接触的时间比较早,从JBuilder 5到JBuilder 9都用过,但之前的任务比较简单,3、5个源代码文件就用Jbuilder太大才小用了。直到实际开始做工程,才开始使用JBuilder。

4-MyEclipse时代(2008)。

Eclipse接触的时间也比较早,2004年,但它的设置比起Jcreater还是复杂不少,所以也不常用。直到后来看到Borland也采用了eclipse框架,我才下决心学习这个IDE。而且这次一步到位,直接就是MyEclipse。这也是我这些年学习工作得来的经验之一。故步自封的坚守老的IDE是没有任何意义的,技术的进步是谁都阻挡不了的。即使经典如TC2.0、VC 6.0,现在真正的工程中,也已经用的越来越少了,既然这样,我们还不如在新的IDE刚推出的时候就学习它。有时候,高手其实也就是比别人先行一步而已。

7)C#(2008)。

当时用C#接了一个私活,开发一个近万行的程序。后来又用J#做了一个图片处理程序,一直到现在都还在用,这也是我做的最日常实用的程序。

8)Python(2008~)。

同事L举办的内部讲座里介绍了这个语言,后来又自学了一下,但是用的不多也不好。目前多用于处理一些正则式相关的文本操作,还是蛮好用的。

9)Matlab(2012~)。

目前的工作涉及到一些数值相关的处理任务,所以自学了一下,会一些皮毛。

10)汇编(2002~)。

早期是X86汇编,然后是ARM汇编,现在是SPARC和Andes的汇编。

2.GUI框架

除去学校里的课程之外,我的编程生涯是从做GUI程序开始的,现将接触到的GUI框架罗列如下:

1)MFC

MFC是VC 6.0的标准框架,相对于直接用Win32 API编程,尤其是编写对话框程序来说,还是方便了不少。但是MFC的框架其实还是相当复杂的,尤其是Doc/View模型估计真正弄懂的人也不是太多。顺便提一句,当年毕业的时候,西安有家叫海软的公司,曾经到我们学校招聘MFC相关的人,我和L是少数几个通过第一轮面试的人。这家公司当初曾经许诺能提供15K的月薪,但最终也没有看到谁拿了它的offer。以现在的角度来看,估计是某个外企在国内开分部,所以把国外的薪水搬过来了。不然,即便是通货膨胀的今天,恐怕应届生想在西安拿这个数也几乎是不可能的。

2)WxWidget

在LT公司的时代,Windows编程由于上手快,招人容易,程序员薪水普遍不高。倒是旁边一个研究Linux的小组,待遇不错。因此,我也有心拓展自己的能力,向这方面发展。WxWidget就是在这一段时间内接触到的。但是没有深究,做过一两个小工具之后,就置之不理了。

3)QT

同上。

4).NET

.NET使用了一套与MFC不同的GUI框架。从接口来看,其实更像是MS的死敌Borland的VCL的那套东西。现在使用这个编写PC工具似乎已经非常普遍了,而且随着应用的广泛,目前自带.NET Framework的PC也越来越多。很多时候,我们只用发布程序就好了。同事W算是这方面的高手,基本上这边的PC工具有八成都是他主导制作的。将公司在这方面的水准提升了一个台阶。

5)GTK

这是去年下半年开始自学的GUI框架。主要原因是目前已有部分工作转移到Linux下,总要有个称手的GUI框架才好。其次,目前的工具代码,大多是copy自产品代码的某一部分。产品使用gcc作为编译器,而gcc的语法和VC也不尽相同。产品代码中使用的比较多的局部动态数组,VC到目前仍不支持。

3.移动平台

工作以来,一直在嵌入式领域打拼,也经历了不少的移动平台,罗列如下:

1)Wince/Windows Mobile

这是接触的第一个移动平台,在学校的时候,我甚至连SD卡都没见过。应该说Windows Mobile是iOs和Android崛起之前,最高端大气的移动平台。由于API与Win32 API高度兼容,上手难度也不高,着实风光了一把。同期的竞争对手Symbian由于对触摸屏的支持不好,加之硬件规格较低,对于导航地图之类的当时的“超级应用”来说,还是有些力不从心的。

2)Nucleares/Brew/MTK/Symbian S60/Symbian UIQ/Moblin

这些平台没有做过大的项目,但是看过其中的应用代码。应该说这些都是iOS和Android出现之前,功能手机和嵌入式设备的主流系统。

3)Android

没有在该平台上开发过商业产品。但是作为从其诞生之初就一直在关注的人士。无论对它的应用层,还是对它的中间层和驱动层都有一定的了解。基本上从见到Android的第一眼开始,我就预见到Nokia和黑莓的衰败。即便黑莓在稍后的2009~2010年达到它的顶峰,也不曾让我改变观点。

4)RTKE

这是飞利浦开发的一个实时内核,我在S公司工作期间主要用于手机基带芯片的控制。当时公司投入很大精力,想在一颗处理器上集成基带处理和应用处理的功能,其软件核心是在RTKE的基础上,搭建一个Linux虚拟机以运行Android应用。这个项目的初衷是推出千元以下的手机。但是后来随着硬件性能的提升和价格的下降,千元以下的手机的确是做出来了,但实际上所用的处理器的个数不仅没有减少,反而越来越多。PS:RTKE的用途不仅于此,有同事说他之前在其他公司也用过RTKE,然后细谈才知道飞利浦的剃须刀上用的也是RTKE。

4.其他

研究生时代研究过CORBA技术,主要用于通信运营商的网管系统的应用。工作之后,很久都没有听说过这个名词。前段时间,在招聘网上,搜了一下,发现CORBA技术本身并未灭绝,但是用途居然还是局限在网管系统的应用上。而且由于体系的庞大低效,原先使用CORBA构筑的GNOME桌面等PC程序,也将IPC转为更高效(但不通用,也不支持联网)的DBUS技术了。

0 0
原创粉丝点击