学会10多种语言是种什么样的体验?

80年代末,我第一次接触了Apple II电脑上的BASIC编程语言,从此走上了一条程序人生。十多年前我在博客园上开通了自己的博客,由于下象棋时经常出点“毒”招,所以网名干脆就叫“毒龙的程序人生”,2016年8月底申请公众号,名字就叫“申龙斌的程序人生”了。

回想这些年,由于项目需要或兴趣使然,竟然学了十多种编程语言。

BASIC

第一次接触计算机大概是在1987年,当时我的学校竟然引进了20台昂贵的Apple II计算机,我连如何操作电脑都不会,直接就学BASIC语言。

那时也不懂什么结构化编程,反正就是抄着书上的代码学,虽没写出什么成规模的BASIC程序,但也算编程入门了。记得曾把几个程序小心翼翼地保存在一张1.2M的大软盘中,可惜现在软盘也没了踪影,所以一行BASIC代码现在也没有留下,想怀念怀念过去都没了可能。

FORTRAN

FORTRAN是在读本科时学的,当时科学计算很流行,这是数学系的必修课。一个班几十人连接一台大型机(我已经忘了它的名字),提交程序后得等上十多分钟才能看到程序的编译结果,所以代码要写得非常认真,提前把代码写在本子上,仔细检查各种语法和逻辑错误,否则上机1小时可能连编译都无法通过。

参加工作时竟然还用FORTRAN语言做过项目,当时有一位北大毕业的CHAI师傅,能用FORTRAN写上几百行的代码,我就跟着他修改这一堆代码。当时能写代码的人就是高手,不管什么可维护性,GOTO语句满天飞,每做一个项目就复制、修改一份源程序,最后程序版本混乱,无法维护。

最让我震惊的是当时MIPS工作站上的一套国外开发的地震解释软件,竟然包含了全部的FORTRAN源代码,那套代码有上万行,注释详细,逻辑清晰。

那时的我明白了结构化编程的重要性,即使语言本身的特性不好,也同样能够写出可维护的优美代码。

PASCAL

大学里开了《数据结构》这门课,所有的例子代码都是用PASCAL语言写的,所以我又学了PASCAL语言。

以前学FORTRAN和BASIC时,养成了非结构化编程的坏毛病,因为有行号,语句之间可以随意跳转,也没有模块化的概念,乱用全局变量,程序的可维护性几乎为零。PASCAL这门语言的特点就是严谨,begin和end虽然啰嗦,但结构非常清晰,靠这门语言养成了结构化编程的好习惯。

工作后还曾经用Dephi(在Pascal基础上升级的面向对象的可视化编程语言)写过一个小项目,可惜也没有实际的应用效果。

C

C语言因为性能好,被UNIX、Windows各种机器所支持,所以使用广泛。大学时我们班里没有开这门课,我跑到计数班去听这门课,上机课就混他们的机时。

C语言中指针等概念虽然麻烦,但还是慢慢掌握了。我一开始学语言的动机实际上就是想着写游戏,当时俄罗斯方块正流行,自己也尝试着写一个。有一次,老师在微机课上巡查,发现我正在玩俄罗斯方块,当场对我提出严厉的批评。

我轻轻地按下一个功能键,游戏马上停止,此时显示出一排排的C代码,我正在调试自己写的C程序呢。老师盯着看了看,无语,向其他学生走去。

实际上,自己根本不可能沉迷于自己写的小游戏,而是更关心如何让动画更流畅、代码如何写得更简洁,如何调整难度级别、改进一下记分系统等等。在写游戏的过程中,逼得自己去掌握了编程的语法和算法。

工作后,这门语言的用处还挺大,当时分到物探方法室工作,主要接触UNIX工作站,只有C语言能用也会用,所以就经常帮着师傅们写点小程序,做些上万行数据的统计、格式转换之类的小活,实际上可是帮了他们的大忙。

Visual Basic

Visual Basic可视化式的编程开发开创了一个新的时代,当时用鼠标点点拖拖就可以产生一个Windows程序,这种感觉太美妙了,由于我有以前的BASIC基础,所以学这种语言飞快。

Visual Basic这款产品的兼容性真是没得说,最早的开发环境是在Windows 98上开发的,后来windows升级到2000, xp,windows 7,它仍能运行。

我现在仍在维护的一个用VB写的程序就是瑞士积分编排程序的表格生成器SwissTab,前前后后修改了无数次,至今仍在一些比赛中发挥作用。

CASL

CASL这语言估计很多人没听说过,它并不是一门真正的语言,只是一门考试用的汇编语言。参加工作后,项目并不多,就去报考高级程序员试试,其中有一道大题就是写CASL这种汇编语言。

由于我并非计算机专业毕业,基础知识薄弱,想通过高级程序员还是非常有难度的。第一年我没有通过,来年我把那套高程教材几乎都翻烂了,把所有的练习题都做了一遍,把历年的高程题都试了一遍,从而顺利通过,那时是1996年。就因为这个高级程序员证,还提前2年混到了中级职称。

JAVA

JAVA语言大概是在2000年学的,此时的JAVA语言火得一塌糊涂,“一次编写,到处运行”的理念好像是各个软件项目的救命稻草。本来以为它的优势是桌面端程序,没想到后来服务器程序却变成了它的强项,J2EE/EJB大行其道,写个服务器端程序非要吹出J2EE四个字来。

当前室里几个人组成了一个团队,写出了胜利信息网网站发布系统,2003年上线,一直沿用到了现在。这种跨平台的语言真是节省了大量的工作量,我们的java,JSP程序都在windows端编写、调试,最后的程序部署在unix机器上的weblogic上,非常方便。

此系统被强行交给信息室维护,项目和人员全部解散,以后我再也没有用JAVA做过项目。

C#

这是在项目中应用最多的一门语言,相对其它语言来说,在Windows上开发,学习门槛较低,在国企里能建立起这样一支队伍已属不易。现在带着团队还在完善、推广和维护的系统就是EDSS系统了。

另外用C#写的几个小程序:

Haskell

2008年,无意中接触到纯函数式编程语言Haskell。这种语言与以前学的命令式编程(Imperative Programming)完全不是一种思路。Haskell语言是一群数学家发明的,写起来就像一条条公式,欣赏一下这段优美的快速排序代码:

qsort [] = []
qsort (x:xs) = qsort smaller ++ [x] ++ qsort larger
    where
        smaller = [ a | a <- xs, a < x ]
        larger  = [ b | b <- xs, b >= x ]

用一行代码打印100以内的勾股数:

[(x,y,z) | x<-[1..100], y<-[x..100], z<-[y..100], x*x + y*y == z*z]

后来出现的新编程语言很多都借鉴了函数式编程语言中的语法特点,Python中也能写出类似这样的语句。

Objective-C

2011年,苹果APP非常吃香,我也交了99刀的学费体验了一把苹果开发者。历经一年的折磨,踩了无数坑,终于提交了一个小程序XQViewer,当时也不懂什么推广和流量,最终只卖出了几美金,连第二年的开发者证书费用都交不起,更别谈用APP挣钱了。

R

看《大数据时代》和《赤裸裸的统计学》这本书时,又学了一点R语言,这门语言中竟然全部都是向量计算,统计功能强大,我试着用R分析孩子们的考试成绩,短短的代码,立刻可以生成多种直观的分析图表。

我的教训

1)学习新技能时没有目的和计划性,虽然学了10多种编程语言,只有C#算是用得最熟练的,其它的都不精,连最重要的前端JavaScript竟然都没好好学。不管学哪门语言,一定要写一款产品,然后不断打磨它。

2)各种语言实际上主要分为两大体系:过程式(或命令式)、函数式,过程式阵营中掌握JAVA或C#即可,纯函数式的编程语言几乎没有,只要了解Haskell或Lua等的理念即可,实际上现代的编程语言都已经吸收了函数式编程的先进思想。

3)学了一堆语言的一点点好处,就是当遇到一个实际问题时,马上会想到用某种语言解决起来会更加简洁高效。

4)学了十多种语言后,再学其它语言时,只用一、二周就能学完所有语法,比如Python。其实最麻烦的部分是每种语言都带着庞大的类库,这些东西只能通过项目慢慢熟悉。

5)学了这些语言后,现在发现只剩下一个优势了,就是当别人编程遇到障碍时,能够很快发现对方可能的错误,看来我的使命就是辅导别人学编程了。

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序人生

代码结构的演进

过年了,各种公众号都在玩拜年,玩红包,甚至在玩喜羊羊,连程序君订阅的一些技术类的公号也不能免俗。作为大年三十还在苦逼上班的程序君,自然不会放过这个绝好的机会写点...

3315
来自专栏CodingToDie

编程伊始

在上大学前,我家并没有电脑,现在也没有。因为我父母并不会使用,我也不在家,他们感觉,买了放在那里不用也是浪费钱。

4479
来自专栏编程坑太多

打字速度对编程的影响大吗?

572
来自专栏Crossin的编程教室

【每周一坑】让程序替你等待

管挖不管埋的每周一坑又来了,今天是个实用的坑。 在1999年的时候,曾经有人搞过一场真人秀,就是给你一些钱和“电子货币”,把你关在一个可以上网的房间里。你需要借...

33510
来自专栏SDNLAB

SDN实战团分享(九):Next-Gen光交换技术+ODL构建Cloud Data Center

大家晚上好,首先声明一下,今天在这里分享的内容为个人技术关点,不代表公司立场。SDN和Optical这块知识我不是专家给大家起个穿针引线,哪块说的不对还请各位多...

3308
来自专栏FreeBuf

利用蓝牙功能两秒内攻击解锁Tapplock智能挂锁

有点不可思议,这段视频引发了我对 Tapplock 智能挂锁的安全性好奇,这款具备指纹识别、手机蓝牙和莫尔斯码解锁的智能挂锁,在方便的同时,它安全性如何呢?由此...

1034
来自专栏PHP技术

PHP将死。何以为继?

是到了PHP落幕的时候了。就在我这个顽固的PHP分子正要把一个现有的Ruby on Rails代码库转换成PHP时,我要说这样的话。 历史在重演 我认为PHP将...

2856
来自专栏华章科技

程序员那些牛逼闪闪的禁术,看到第二条我就忍不住哈哈哈哈哈哈哈哈

在和产品经理进行需求对峙时,一本正经地把不好/不想实现的功能通过玄学等方式口述出来,让产品经理当场懵逼,知难而退。

562
来自专栏安智客

Python 为什么这么火?

现在,全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种。TIOBE编程社区指数是流行编程语言的一个指标。该指数每月更新一次。该评级是基于世界各...

1885
来自专栏Python中文社区

Python金融股票爬虫实战源码大全

Stock [1]- 终端实时获取股票价格,实时查询股票价格,默认查询了沪指、深指。需要安装requests库,通过调用新浪股票API,实时查询股票价格,支持查...

5217

扫码关注云+社区