Antkillerfarm Hacking V7.0

入行以来涉及的技术简史(一)

2014-12-29

入行以来涉及的技术简史

今年是我本科毕业的第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的复杂性也让我在最初的时候,对它有所回避。

其实主要是按个按钮就能跑,还有就是编辑界面比TC友好的多。

3.Visual C++ 6.0(2003~2004)。

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

4.Visual Studio 2003(2005~2007)。

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

其实主要是因为买了一套VS 2003的盗版光盘,这也是光盘时代的绝响了。后面的软件直接下载即可,不需要光盘了。

5.Visual Studio 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.Visual Studio 2010(2010~2014)。

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

7.RVDS(2009~2011)。

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

8.Gcc(2011~)。

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

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

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

10.Visual Studio 2012(2017~)。

工作使用而已,无感。

11.Visual Studio 2015(2019~)。

工作使用而已,无感。使用的原因是:这个版本支持C++ 11标准。

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刚推出的时候就学习它。有时候,高手其实也就是比别人先行一步而已。

2019.4

由于Eclipse的开源特性,它不仅成为Java开发环境,还被众多半导体公司改造,成为特定硬件方案的IDE,尽管这些平台通常是使用C语言来开发。

但自2014年以来,基于VS code的HTML5开发环境日趋强势——最初主要是一些前端技术栈的IDE使用它,现在连半导体公司都在用了。

2019.6

Eclipse也顺应潮流推出了自己的web解决方案:Eclipse Che。

官网:

http://www.eclipse.org/che

5-IDEA(2016~)。

有段时间工作内容在Hadoop领域,所以重新拾起了Java。这时候Eclipse已经逐渐末路,IDEA成为了首选。

7)C#(2008)。

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

8)Python(2008~)。

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

2019.4

2013年之后,我的工作系统逐渐从Windows转向Linux。由于C#用不了,所以就用python+ImageMagick重写了上述的图片处理程序。

2016年前后,由于项目需要,我用python写了一些GTK/GStreamer的代码。

而进入2017年,由于接触了ML和DL,目前我的工作有一半的内容都在python上了。

由于之前主要是用python写小脚本,IDE几乎没用过。现在上大项目,自然不可能继续txt下去,因此选择了PyCharm。

9)Matlab(2012~)。

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

10)汇编(2002~2014)。

早期是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就是在这一段时间内接触到的。但是没有深究,做过一两个小工具之后,就置之不理了。

Fork me on GitHub