3

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

 2 years ago
source link: http://antkillerfarm.github.io/my%20story/2014/12/29/tech_history.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

入行以来涉及的技术简史

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

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

1.编程语言

1)LOGO

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

2)BASIC

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

3)PASCAL

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK