当前位置:编程学习 > C#/ASP.NET >>

走出程序员的悲哀

走出程序员的悲哀

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

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

  好长时间没有写东西,动起笔来真TNND累。


发表于 @ 2009年06月24日 11:19:00 --------------------编程问答-------------------- it's too long to read... --------------------编程问答-------------------- 目前还没有LZ的深刻体会。。。 --------------------编程问答-------------------- 是初学者吧,看了几本杂志就以为自己悟了? --------------------编程问答-------------------- haode  --------------------编程问答--------------------
引用 1 楼 ahsun1987 的回复:
it's too long to read...


可怜的楼主,手累疼了吧
--------------------编程问答-------------------- Ctrl+V --------------------编程问答-------------------- 难道只有去学C么? --------------------编程问答-------------------- 学什么都一样,
赚钱才是真理 --------------------编程问答-------------------- 给你这么一说 没有几种语言是值得学的啦…… --------------------编程问答-------------------- 仁者见仁,智者见智! --------------------编程问答-------------------- 学什么都好,你只要能把技术转成money,那就好的工具!什么java,pb,vb,c#,c,c++....都行,能为你赚钱你又管什么编程工具呢,it更新的技术太快了! --------------------编程问答-------------------- 这个没什么好争的了, --------------------编程问答-------------------- it's too long to read
apologize --------------------编程问答-------------------- 无定论的东西,各抒己见,还是根据实际情况选择的比较好,需要时在学学。 --------------------编程问答-------------------- 想学汇编 --------------------编程问答-------------------- --在sql2005中更新用户 update syslogins
/*
EXEC sp_droplogin  't01'

 sp_help sysusers


select name,pass=SUBSTRING (rtrim(ltrim(name)),2,2),sid from sysusers where name like 'c%' or name like 't%' or name like 'f%'
select name,sid from master..syslogins where name like 'c%' or name like 't%' or name like 'f%'

sp_addlogin "t01", "01","yygl_new","us_english",0x5ACF95C4BBCDD042A9E69ACA7D254A30

sp_help system
*/

declare @name char(8)
declare @pass char(2)
declare @sid binary(16)
declare @data char(255)
declare @lanuage char(255)

select @data = 'sp_pacs'
select @lanuage = 'us_english'

declare cur_ck CURSOR for
select name,pass=SUBSTRING (rtrim(ltrim(name)),2,2),sid from sysusers where name like 'a%' --or name like 't%' or name like 'f%'
OPEN cur_ck
FETCH NEXT FROM cur_ck INTO @name,@pass,@sid

WHILE @@FETCH_STATUS = 0
begin
select @name = rtrim(ltrim(@name))
select @pass = rtrim(ltrim(@pass))

print 'name:'+@name+'--pass:'+@pass

--exec ("alter table "+@lc+"   DISABLE TRIGGER all")
--exec ("truncate table "+ @lc)--truncate table 
EXEC sp_droplogin  @name
exec sp_addlogin @name,'4s3c2a1p',@data,@lanuage,@sid

FETCH NEXT FROM cur_ck INTO @name,@pass,@sid
END
CLOSE cur_ck
DEALLOCATE cur_ck
go --------------------编程问答-------------------- 走过路过,也错过了。 --------------------编程问答-------------------- 好长... --------------------编程问答-------------------- 确实是这样,跟着MS走,自我感觉无所不能,到厌恶,厌弃,其实是什么原因呢?无非是我们每天都在重复着同样的事,拉控件,连数据库,这是最无聊透顶的却又是必须要做的。做其他的还好,反正我是非常讨厌数据库,整天插入,修改,删除,跟SB似的。 --------------------编程问答-------------------- 存在就是有道理! --------------------编程问答-------------------- C#: 也叫C Sharp,是ms发明的超级语言(何为超级,就是傻瓜都会用的编程语言)
被骂了都不知道,大家都别看了,看了会失去方向感。 --------------------编程问答--------------------
引用 13 楼 zxp8819 的回复:
it's too long to read
apologize

太long了 --------------------编程问答-------------------- 人生就像茶几,上面充满了杯具······ --------------------编程问答-------------------- I Dont't think so --------------------编程问答-------------------- 很是震撼!几年后我的转行了? --------------------编程问答-------------------- life need us to study every day!! --------------------编程问答-------------------- 长啊
看不完
--------------------编程问答-------------------- C#: 也叫C Sharp,是ms发明的超级语言,何为超级,就是傻瓜都会用的编程语言--------看到这句话很郁闷,不懂就不要乱说。经典之处在Framework。而不是熟练拖拽服务器控件。。就精通.NET了。。十年能不能熟练运用Framework。还要看有没有天赋。。 --------------------编程问答--------------------
引用 3 楼 assiwe 的回复:
是初学者吧,看了几本杂志就以为自己悟了?

+ --------------------编程问答-------------------- 顶一下。。。。 --------------------编程问答--------------------
引用 28 楼 fanliang11 的回复:
C#: 也叫C Sharp,是ms发明的超级语言,何为超级,就是傻瓜都会用的编程语言--------看到这句话很郁闷,不懂就不要乱说。经典之处在Framework。而不是熟练拖拽服务器控件。。就精通.NET了。。十年能不能熟练运用Framework。还要看有没有天赋。。


呵呵,你什么时候能整出个翻版c#,我支持。但是现在是MS,核心技术全在美国那边。用.net好玩嘛,整天被牵着鼻子走。就像我们小时候读书,老师教育我们说作者通过XX想表达XX,我想也许作者写的时候也许根本没有想要表达那么多思想吧。你何必去当那些老师呢?一个框架我们只需了解大方向就够了,如果取追寻它的细节,你觉得有意思吗?琢磨久了也许你根本不懂得创新来另辟蹊径,而只是在原来的基础上扩展扩展。这时别说你创新了,在我看来就像英文版翻译成中文版一样无聊。

在程序员这个世界,我觉得应该是中国人写开发工具,让美国那班人来学习咱们的框架。 --------------------编程问答-------------------- 好长啊。顶下 --------------------编程问答-------------------- hao long
--------------------编程问答-------------------- 目前还没有LZ的深刻体会。。。 --------------------编程问答-------------------- 楼主说的有一定道理的,但是也有写偏激,得确任何一门语言随着时代的发展都会产生变化,都有不适应性,之后在解决发展的矛盾中要不被淘汰,要不升华,不过程序员不应该只局限与某种语言的语法之类的,而更应该去思考其编程的思想,没有永恒的语言、没有永恒的平台,只有永恒的程序设计技术! --------------------编程问答-------------------- 菜鸟 看到备受打击啊    什么时候 国人能整个让美国娃学习 框架啊 --------------------编程问答-------------------- 顶!!!!! --------------------编程问答-------------------- 部分有理,部分偏激 --------------------编程问答-------------------- 评论还是比较中肯的,
这方面迷茫的同学可以认真看看。。。。 --------------------编程问答--------------------
引用 36 楼 screensnow 的回复:
菜鸟 看到备受打击啊 什么时候 国人能整个让美国娃学习 框架啊

未来好迷茫 --------------------编程问答--------------------

这话题一直都是这么纠结,改变不了的,该怎么样还是怎么样。 --------------------编程问答-------------------- 都有发展,呵呵,看自己了, --------------------编程问答-------------------- 倒是有几分道理 --------------------编程问答-------------------- 很长,看的累。。。
这样的文章看的很多人都没希望了。。。
程序员在中国本身就是一种悲哀。。。。

学什么都一样,
赚钱才是真理

人生就像茶几,上面充满了杯具······

--------------------编程问答-------------------- [Quote=引用 5 楼 vampire_ycq 的回复:]
引用 1 楼 ahsun1987 的回复:
it's too long to read...


辛苦你了  --------------------编程问答-------------------- LZ 就像个垂暮的老人 看破红尘了 呵呵~  思想偏激了 点  

存在就是道理 任何事情都是一样的 --------------------编程问答-------------------- 自己喜欢就好 --------------------编程问答-------------------- 我对这种文章麻木了 --------------------编程问答-------------------- 我是一个程序初学者啊,好不容易有点感觉了,看了这篇文章又开始晕啊,不知道自己该如何走出下一步,朝哪里走,怎么走。。。。

不知道这是好事还是坏事。。。我想学C和C++ ,现在刚开始学,哪位高人指点指点小弟啊。。。。迷茫 --------------------编程问答-------------------- 恩!学习了!最近也正在为学习什么而苦恼着!
补充:.NET技术 ,  非技术区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,