本文转载自:http://topic.csdn.net/u/20100524/13/f5cf8430-4bae-4b02-9421-e36bc318ea0f.html

外加自己的一点感受

《走出程序员的悲哀》

首先我想说的是,如何选择编程语言,在做出选择前,我们要先了解各种语言的优缺点:

编译型的语言:
  ASM: 汇编语言,几乎接近机器语言,优点执行效率高,是助记符的语言,难学也难理解, 缺点可移植性差, 开发效率低。

C: 相对汇编要高级的多的语言,结构化的语言,面向过程的,容易学,可移植性强,难点是它的指针(相对初学者);

PASCAL: 高级语言,和C同时出来的一种语言,也是结构化,面向过程,后来扩展的有Object PASCAL语言和原始PASCAL一样,增加了面向对像的特性。难度是面向对像和它的指针,但相对C语言要好得多,PASCAL的语法优美是任何语言不能比的,数据类型丰富,又支持指针。缺点,被定位为教学语言(我想这是被Brian Kernighan的误导所致),其实PASCAL也能做很重要的系统。

ADA: 源于美国军方的一个计划,旨在整合美军系统中运行着上百种不同的程序设计语言编写的程序,命名是为了纪念爱达·勒芙蕾丝而使用Ada, 不做细述。

COBOL: 面向商业的通用语言,又称为企业管理语言、数据处理语言等,Common Business Oriented Langauge)是最早的高级编程语言之一,是世界上第一个商用语言。在国内不是很流行。

MATLAB: 是一种数学软件,是一种数值计算环境和编程语言,主要包括MATLAB和Simulink两大部分。MATLAB基于矩阵(英语:Matrix)运算,其全称MATrix LABoratory即得名于此。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。在国内不流行。

C++ : C语言的扩展,兼容C的所有特性(但很别扭),主要优点面向对象,缺点,抽象难学,规则太多,其扩展到无所不能,无所不包了。

省略若干不实用的语言介绍
  .....
  解释型的语言
BASIC: (Beginner's All-purpose Symbolic Instruction Code,又译培基),意思就是“初学者的全方位符式指令代码”,是一种设计给初学者使用的程序设计语言。BASIC是一种解译式的编程语言,在完成编写后不须经由编译及链接等手续即可运行,但如果需要单独运行时仍然需要将其建立成运行档。

JAVA: SUN公司的基于C/C++的扩展,风格似C/面向对象的像C++,做了很多优化的工作,并在虚拟机上运行,可以说是其优点也是其缺点,具有跨平台的能力。

C#: 也叫C Sharp,是ms发明的超级语言(何为超级,就是傻瓜都会用的编程语言),是结合JAVA的模式创造的,也可以说是为了对抗JAVA,ms特此发明 C#,语法也和JAVA差不多,但只运行在Windows平台上的.net 环境下,linuxSUSE上支持.net平台所以也可运行在linuxSUSE平台上。其缺点不能通用的跨平台,不能像JAVA那样,但比JAVA的运行速度快。

脚本语言这里就略了,不讲了......

如果要选择的话:
  按操作系统平台来学习的话,建议:如果只在windows平台直接学习C#它傻瓜式的,快速开发爽啊;若在unix/linux平台上的话,学习C /C++;

如果游走在Windows/Unix/linux等多平台上,学习C/C++/java;

如果只想学习编程找乐趣,学习PASCAL,BASIC两种非常合适。

下面说说关于专业的程序员,该如何选择以及未来的行业发展趋势,我们该如何把握主动权(方向)不能跟着技术潮流,被“淹死”。

我知道有很多专业程序员,做了多年程序开发,感觉自己技术还像个刚出生的婴儿,没有更很好的技术积累,新技术来临不知道如何选择取向,然后只有慢慢等着被新技的潮水淹死;然而,新的程序员又如洪水般的涌进来,然后又这样的后浪赶前浪的牺生在沙滩上。不是说中国的程序员是吃青春饭的,30岁以后要么做管理,要么转行。其实,我们广大程序员都是在一个恶性循环中转悠;先说个慨念,中国人多程序员也多,当然需求的也多,需求的技术类型也多,所以我们的广大程序员队伍中什么样技术类型的人都有,但学习的编程类型却很单一几乎全是windows平台开发,当然linux也有不少,多的是Web上的开发。为什么会这样,一来是十多年来盗版太猖狂(ms纵容的),windows垄断了中国的操作系统平台,几乎影响了一代人,可以说是学电脑就是学windows了,那么就可以100%说,学编程就是学Windows API(windows上编程就是调用Win32SDK API了); 去年,ms开始收网了,打击盗版,对我们广大程序员也是非常振撼的,也很郁闷的,用了多年的盗版突然不能用,还出具体措施打击个人盗版,程序员的我们会不会有这样的想法,枉我追随ms这么多年,我们学到的东西也还给他了,要知道我们学他的东西就是间接的给他挣银子。现在还要受打击,早不打晚不打,全民都用上了windows就开始打,这不是居心叵测嘛。但也不能怪他什么,10年前盖茨都说让你们盗版,最终还是要还的。别人先警告在前吗。话说回来,盖茨还是有功的,如果没有windows很多人是不会用电脑的,也不会有现在这么发达的IT科技的。记得2004年的一个老项目经理对我这样说,如果95年没有出来win95他是不会加入IT行业的。可见windows带给人们的变化是多么大的,可以说对ms我们都有这样一种既爱又恨的心情,但他是商业性的公司不是慈善机构,我们不能永远免费的用别人家的东西,这就像你自己家的东西,借给别人用一天两天没事,时间长了你心里是怎想的呢?
  上面扯远了,在windows上编程,我们有个误区,只知道ms和borland的开发工具,又快又容易的,完成一个不大不小的项目,三下五去二,搞定,完成后,那成就感不用说,大家心里应该有数的。于是,一个接一个的项目就这样就摆平了,慢慢的成就感也消失殆尽,但还是一个接一个的项目,并重复写同样的代码,做同样的事情。几年下来,大家都觉越学越难,越学越不精,越学越没有信心。更可怕的是ms的技术平均两年更新一次,从win9x到NT, 其他的COM、ACTIVEX, 到现在的.net, 等等,学都学不完,每次更新的技术又只用能管两年,又得更新。ms的开发语言也是损人的主,当初的VB就如同现在的C#,是他们的主打产品,现在怎样么呢?可怜的VB程序员,还有VFP,用VFP的程序员也不在少数,后来的VJ++都是忽悠人的东西,跟错了方向的直接倒下了,没有跟错的,也九死一生。也难怪,商业性的公司,不更新是没有利润进来的,这次打盗版也是利润的驱动下才有所作为的,不然ms可能不会打的。那么我们之前在9x下的学到的东西,到 nt下我们还有多少可以用呢?不言自明,再到现在的.net 我们之前学的东西,又月多少可以用呢?这就是我们广大程序员的恶性循环,不断的跟在ms的屁股后面跑,跑一次就会损一代的程序员,他们倒下(30转行,或其他),后面呢,还很多新的程序员补上,然后又这样倒下。现在windows vsta还没有用,就来了windows 7, 技术又有了新东西,当然新的东西那绝对是吸引人的,但最重要的是让ms 能营利,他营利是小我们广大程序员惨了,不知又要多学多少西,不知又要多写多少无用的代码。所有说,商业就是商业,不营利,他是活不下去的,那么他只有牺牲众人的利益(大家的时间)来成就自己。记住,在商业公司面前,客户(程序员也是客户)只有被宰的份,要牺牲也只是客户的利益,它不会牺牲自己的利益的。
    
  再说说开发语言及开发工具之争吧,曾经的开发工具之争,那战争的销烟,可了不得。在开发工具之争中,ms既是运动员也是裁判,为什么这样呢?我们来了解一下,在windows平台上,系统是ms的,主要的技术方向(主动权)发展趋势,掌握在自己手里,它自己又开发IED开发工具。在2002年以前,比较有名的IDE工具开发商,borland的IDE、编译器算是主流的,delphi便是其中最响当当的杰作之一,delphi出来后几乎是borland的天下,后来ms的VB与之抗衡但根本不是一个量级上的东西;到了2002年以后,ms新技术出现,其中诸多原因,borland就开始走下坡了,天平倒向了ms,值到现在,ms一直统治着windows上的开发IDE。在ms的垄断下,他带领着广大程序员朝左,程序员们就不敢朝右,一且就是按照ms设计的路线走,掉队的就被淘汰出去。在这样的环境下,程序员们没有选择,没有他路可走,除非不在windows上做开发。因此我们只站在windows平台上这个圈圈里,看到的天空,也只有window这么大一块,和坐井观天没有任何区别,那么该如何跳出这个恶性的环境呢?当然,操作系统平台,其他语言的开发的选择还是多的是,要不要出来,看自己了,或许你会说,UNIX/linux平台难啊,没有比windows更简单的了,在这我要说的是,unix /linux是操作系统入门难,入门后, 是比windows还要容易,那有windows那么复杂的东西,其实windows是最复杂的系统。用过其他操作系统的人都知道,不光是编程还是操作系统的使用上,只是unix/linux没有习惯,windows已经习惯多年了。
  说说unix/linux编程吧,在unix/linux平台下编程,用的最多是C语言,C++做GUI库界面的多。IDE集成开发环境就少,有名的有 KDeveloer ,但都是没有windows上的方便易用,在unix/linux下用VI(代码编辑器)的人也不在少数,GCC编译,GDB调试;也有自动化工具来简化工作,但比较麻烦抽像,和windows下编程有质的不同。在windows下可不用写一句代就可以运行一个很好的程序框架来,linux下现在也有可行的,QT就行。那么有了unix/linux编程的选择,自己可以不倒在ms的技术浪潮下了,因为我们在unix/linux上会有更多的选择,并且不会出现像去年那样的盗版尴尬局面。只在windows上跟着ms做开发,它束缚了我们视野,阻碍了我们的发展,无论我们怎么学习它(windows)自己只能算是一个小小的蚂蚁,给ms积累粮食(给它赚银子),因为学会windows编程就是间接的为ms挣利润了,而更坏的却是,我们永远有学不完的新技术,永远积累不到经验,永远像个新人一样的在学习它(windows)。
    
  我们反观unix/linux平台上的编程只有c/c++,几十年不变,技术更新也是开源的,只要掌握了就不会像ms那样永远在它指定的路线上听话的走,但在unix/linux上我们的选择更多,linux大致内核一样,变化不太大,容易积累经验,且编程也就是c/c++其他的就少了,只要精通c语言,可以说在unix/linux平台下便是天下无敌了。不管是在windows/unix/linux下面,c语言几乎通吃,win32内核,SDK接口都是c语言实现的,这才是“真正的程序员是C程序员”的真正意义。在windows上编程的当然也有很多选择,这里需要说的就是,如果要快速的开发,borland的delphi是最好的选择,指delphi7版本以前的,delphi7以后的版本,就跟ms是一个鼻空出气的,就是ms忽悠过来,borland就忽悠过去,在windows上的程序员转来转去的大有人在,不相信,会有很多程序员是从borland转ms,后来又转向 borland上去了的。他们两家开发商也是打的你死我活的,最终borland倒下,当然这也伤不少borland fans的心,又转向ms的开发平台。想想这部分转来游去的程序员是多么的悲哀,是谁害的?

说来也怪,国内的delphi陈营曾经风华正茂时,不知有多风光,但没有几个人用FreePascal,在国外freepascal发展的很不错,有名的 Lazarus(基于freePascal)跨平台集成ide开发工具并和delphi极像,而且是开源的,国内没有人使用,感觉现在的 freepascal 比delphi还更有潜力,lazarus是跨平台的,支持linux。我想其中最重的原因,是因盗版delphi太多击失败了开源的软件,毕竟 lazarus没有delphi智能易用。话又说回来,dephi7版本以前的真的很不错在2002年以前,大家可能还记得“聪明的程序员用 delphi”这个美好的雅号,也就是这个时代的borland赚到钱了,如果后来的程序员还拿这个雅号来激励自己学习delphi那将是最大的误区和悲哀,因为此时的delphi不在是当年borland的delphi了。
  ms,也没有什么东西好到那儿去,vc++到现在的vs的VC++一直沿着MFC,说它和delphi的VCL比,它简直是个垃圾,但有人还拿它当个宝,晚上枕着,白天抱着, 到现在的VS里面来MFC又扩展了不少东西,应该说是又加了更多的“变态的东西”进去,还不如直接使用SDK来得容易方便。C#是个例外,但按照片ms的营利游戏规则C#的寿命能有多长,我们只有拭目以待,我相信不太长,太长不符合ms的规则,VB可能就是他的前身,VB的今天就是C#的明天。想想当初的 VB那时的风光及程序员们的狂热和现在的C#有过而无不及也,现在VB怎样,没落了,又有几个旧人用,新人去学呢?当然VFP,VJ++是同样的命运。那些曾经用VB+VFP的程序员们是不是现在已经转向了C#或java呢?还是其他呢?

再来看看,JAVA吧,辉煌的时刻,只要是编程培训点的课程,全部只有JAVA了,现在的JAVA培训也不在少数,可能只会引诱那些不懂编程的初学者。 java又是怎样的一翻风景呢?相信在传出甲骨文收购SUN消息的时候,我们广大的java程序员们有没有郁闷或是信心受到打击呢?就连我这个不是 java的拥趸都感觉震惊和痛惜,sun会被收购。sun竟会沦落到被人收购,只能说,他会慢慢的像borland一样被这个时代没落掉。java本身定位是“一次编写、到处执行”的目标初衷, 但给人的感觉是“一次编写,到处调试”,现在怎样呢?没有多大的改观,那么失败是必然的,java是跨平台的运行在虚拟机环境上的,与其说他与平台无关,其实java本身就是一个平台,是基于操作系统的平台。为什么java程序会慢,就是因为是基于操作系统平台的,解释一次,执一次,要比编译性的程序慢一倍,是绝对的。就个人体会,如果广大java程序员想写跨平台的程序,倒不如选择一个比较好的跨平GUI库,如GTK, QT, wxWidget , 它们可以“一次编写,到处编译”要好的多。另外它们做嵌入式的开发也行。

C++程序员不要太高兴了,还没有说到这儿来呢?
  C++我想指出的是,目前大多数系统,包括windows,没有使用C++写的,顶多就是上层/应用层的如GUI库,界面,用的C++多,可是看到市面上,却把C++神话了,面向对象是C++的强项,也是唯一的优点,但又是其缺点,相信我们大多数C++程序员有这样的感受,用了几年的C++居然还有很多功能自己没有用到,或是不会用,其中的规则太多,乃致学都学不完,简直是又臭又长的条条框框。就如一段匿名但又非常著名的评论描述,C++就像“狗被钉上了软肢,而变成的章鱼”,章鱼是什么,不仅让人联想到,很多舞牙扒爪的东西,到处延伸的感觉,但就做GUI(比较成功的如QT GUI库非常不错),应用方面,其他领域,C是更好的选择,更方便易用。

总结,只在ms平台上的程序员,几乎没有什么好的出路,几年下来不是转行就是做管理,很少能长期坚持做下来的。这就是大部分人说程序员是吃青春饭的原因所在。在开发语言上没有什么可争论的,算法数据结构几乎每种语言都能实现,学什么语言都一样,不一样的就是你所在的开发环境与开发平台。另外就是开源平台与非开源平台,有着很大的关系,开源的话,枝术你能基本全掌握,不开源,你就只有跟着别人走,按别人的路线为别人创收,自己只得那么一丁点儿而已。

评:以上作者写的其实我也都明白,感同身受,只是我写不出来这么多;明白是明白,但是我仍然定位不明,技术路线也有合理的指定,但问题是,我靠什么来继续坚持这条技术路线,Linux平台,C语言,QT GUI库,OCP认证,精通oracle,Linux C网络编程;我也坚信这些技术也会经久不衰不会像微软平台的一样;但是业务领域问题,选择哪个领域,是否一定要一直坚持把这条路走下去,微软平台的技术是否需要再接触,这些问题才是我真正要苦恼的东西,我甚至已经要丧失了对做程序员的信心,对自己的学习效率,已经畏难情绪感到非常不满意;技术平台的怪圈走出来了,却又陷入另一个怪圈,又无法自拔

走出程序员的悲哀+自己的一点感受相关推荐

  1. 2011中国编程者=走出程序员的悲哀=谁说中国程序员只能吃青春饭?

    首先我想说的是,如何选择编程语言,在做出选择前,我们要先了解各种语言的优缺点: 编译型的语言:         ASM:    汇编语言,几乎接近机器语言,优点执行效率高,是助记符的语言,难学也难理解 ...

  2. Android程序员的悲哀是什么?

    前言 老早网上有人说,安卓开发干不过30岁,后来又有人说干不过35岁,后来又有人说干不过40岁,后来又有人说干不过45岁--各种说法很多,这里我采取通俗的说法,认为过了30岁的安卓程序员算是大龄程序员 ...

  3. 为什么要走上程序员这条道路

    工作快一年了,我在自己的工作岗位上痛苦并快乐着.趁着项目进入测试阶段,想想自己为什么会走上程序员的道路. 我出生在农村,小时候放牛,玩泥沙,下河摸鱼(现在的河都没鱼了),农忙时作为重要劳动力.小时候的 ...

  4. 程序员在火车站候车室写代码画面曝光,网友:程序员的悲哀

    大过节的,许多在外打拼的人们纷纷奔向回家的路程,本该是欢声笑语的一路,可是却因为工作缠身而显得有些不美好.比如下面这位,一名程序员网友正在火车站候车室候车,无意中看到一名同行在电脑上"奋笔疾 ...

  5. 有人晒出程序员聚餐照片,网友:根据头发量能看出技术水平高低!

    有人晒出程序员聚餐照片,网友:根据头发量能看出技术水平高低! 关于程序员的头发一直是网友们爱调侃的一个话题,说什么程序员容易秃顶,这样的话题被大家聊得很热,甚至有人还拿出一组程序员工作一年,三年,五年 ...

  6. 也说中国程序员的悲哀

    上网搜一下"中国程序员的悲哀",能搜出一大箩抱怨.我这里也抱怨悲哀几句.大概中国的国情就是这样吧,重市场轻技术,然后做技术的眼红市场,结果技术也做不好.只要能赚到钱,做得再烂都无所 ...

  7. 程序员白头发是怎样一种感受?

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:程序员白头发是怎样一种感受? 程序员白发年龄相对提前,主要原因是用眼过度导致的肝血不足, 白头这个,遗传也有一点吧,貌似跟睡眠 ...

  8. 题目:我立志成为一名好销售,万万没想到,我还是走了程序员的路,原因竟然是....

    [程序员养成第一步] [丛立志当一名销售到决定从事程序员的蜕变] 学习生活中,我阅读了数不清的推送.博文,看了数不清的作者的故事,精彩的各种推送,以及各类技术大神的解答贴,为我的求学之路提供了技术上的 ...

  9. 就这样,我走完了程序员的前五年。一路风雨泥泞,前方阳光正好。

    你好呀,我是why. 前几天看到大学母校的一篇公众号文章推送,文章摘要写的是"仅以此片献给2021届毕业学子". 那一刻我才恍惚到:哦,距离我离开校门,喊出那句"混不好我 ...

最新文章

  1. PHP date函数参数详解
  2. ubuntu 18.04 配置notebook远程连接的坑
  3. java instance变量_java 类方法和实例方法 以及 类变量和实例变量
  4. ThinkPHP实现支付宝接口功能
  5. 今天讲个小故事,Javascript诞生记
  6. Postgres 数据库大批量单表导入数据引发性能故障的处理
  7. 群辉服务器根目录新建文件夹,群晖 synology NAS 存储创建存储空间的方法
  8. 边缘保留滤波matlab,【DIP】各种边缘保留滤波器一览
  9. 相关性分析的五种方法
  10. android 时钟旋转动画,抖音上超火的时间轮盘时钟轮盘八卦太极动态壁纸软件分享安卓苹果都可以设置!...
  11. 解决egret引擎List虚拟布局不同高度Item对象重用时导致的布局异常问题
  12. 物流管理过程中如何避免客户个人隐私信息泄露
  13. 何为功能平价?特斯拉「抛弃」多传感融合,背后有哪些门道
  14. 关于常用(?)字符串处理函数的合集
  15. 【读书笔记->推荐系统】02-03 逻辑回归
  16. 9,kubernetes-Helm及其他功能性组件
  17. 超强技巧分享,如何将人民币大小写转换?
  18. 镜头景深计算公式的推导
  19. 【题解】「JSOI2012」玄武密码(AC自动机)
  20. 办公技巧整合(不定时更新)

热门文章

  1. 程序员吐槽:编了慌,杭州阿里p7背调严格么?网友:还有一丝机会
  2. 兰州有没有招聘关于计算机专业的,2016年兰州市直招聘事业单位人员岗位表
  3. 学校计算机损坏和赔偿记录,校园发生伤害事故学校应该怎么处理,校园伤害事件如何判定学校过错和责任-华律网专题...
  4. 2022年哪些工具适合设计企业产品手册?
  5. 学习总结——注意力机制(transformer、DETR)
  6. js中简单的使用webSocket
  7. com.baomidou.mybatisplus.autoconfigure.IdentifierGeneratorAutoConfiguration$InetUtilsAutoConfig.iden
  8. 成都郫县php开发学校_成都市郫县希望职业学校2020年招生简介【要求】_高职招生网...
  9. #创新实训#VR漫游项目汇报
  10. 自定义seekbar详解