第一篇:2018年IT行业做编程开发好 还是做安全好
2018年IT行业做编程开发好 还是做安全好
2018年IT行业又有了新的格局,以大数据、云计算、人工智能、信息安全等新兴的、备受重视的细分行业占据了越来越重要的位置,传统的编程开发工作,由于其刚需与基础性,有着固定的市场份额。新兴行业越来越多的被人们所谈论,其中信息安全作为保障性的细分行业,由于其必要性愈发凸显,也被很多的新人从业者所关注。那么做为2018年才涉入IT行业的新人来说,选择哪一个方向比较好呢?
抛开个人的兴趣不谈,单从是IT行业的发展趋势来看,安全都要比编程开发好一些。国家把信息安全设为一级学科不是没有道理的。
开发和安全,从入门来看:
开发入门简单,门槛低,市场就业面广,需求人才较多,但是从业人员也不少。供需的话现在对开发人才的需求主要集中在经验型人才,也就是你最好有1年以上的编程开发经验,这就是为什么很多培训机构的学生要“包装简历,美化简历”的原因。当然如果你口才足够好,资历足够高(名牌大学毕业,学习态度和学习基础都不错)也能找到实习工作。
安全有几个方向,web安全和网络安全的话就不多说了和开发一样入门简单,门槛低,但是后期的发展全看个人造化。底层安全是现在安全的一个趋势,漏洞挖掘与利用,病毒反病毒,软件逆向,移动安全都归于这一类,门槛高,入门难,就业面窄,但是人才技术含量高发展前景光明,只要你坚持下来,一切都OK了。
此外编程开发行业有个定律,从业5年左右的人如果不能升任管理层,项目经理,他基本也就只能做程序员了,而年龄是程序员的一个硬伤,35岁你要考虑以后的事情,你要考虑身体,家庭等因素。还有一个原因就是,大多数程序员后期并没有太多的成长空间,工作性质更多的是熟练和效率。这就是为什么年龄一大,程序员的薪资会下降的原因。
安全呢?他会随着你的职业年限越来越有价值,是一个靠经验和时间积累下的悟性产生价值的方向。一个老的安全人员,就像一个老的科学家一样。
第二篇:“做报告”,还是“作报告”
昨天下午打球的时候,接到了宛霞的电话,问我,老师啊,“做报告”,还是“作报告”啊,“作”和“做”这两个字,到底用哪个呀?
这个问题,提得很有必有,“作”和“做”的某些用法,从来就是众说纷纭,专家们各有各的见解,好像到现在两个字的一些用法也没有一个规范的说法。
做和作这两字区别是什么呢?
我把《新编现代汉语多功能词典》和吕叔湘主编的《现代汉语八百词》的有关内容打出来,你自己参考吧。你一看就明白了。
《新编现代汉语多功能词典》的相关解释:
【辨】作和做:都可以作动词,表示从事某种活动。在“作(做)诗”“做(作)文章”“叫(作)做”“当(做)作”等词语中可以相互换用。
区别在于:
①适用的范围不同。用“做”的地方大多都可以换用“作”;但有的用“作”的地方,却不能用用“做”,如“枪声大作”、“成功之作”等。
②所带的宾语不同。“作”常带动词作宾语,如“安排”“演说”“估计”“斗争”“分析”“研究”“调查”“评论”等,也可带较抽象的、有较浓书面语色彩的名词作宾语如“文章”“曲”“诗”等;“做”多带较具体的、有较浓口语色彩的名词或代词作宾语,如“饭”“衣服”“事(儿)”“活(儿)”“手艺”等。
③词性不同。“作”还兼名词,“做”不兼名词。
《现代汉语八百词》的相关解释:
[比较]做与作
语音上二者在普通话里已经没有区别。习惯上,具体东西的制造一般写成“做”如“做桌子,做衣服,做文章”;抽象一点的,书面语色彩重一点的词语,特别是成语里,一般都写成“作”,如“作罢,作废,作对,作怪,作乱,作价,作曲、作文、作战、装模作样,认贼作父”等。
虽然说得很明白了,但是在具体的语言环境,两个字的用法有时很容易说清,约定俗成。
前些年,高中课经常辨析“做客”和“作客”的用法,这两个字,用法是相当清楚的。
“做客”,动词,是动宾关系,侧重指到亲戚、朋友处走访、聚会或是串门儿、聊天,强调的是就地、临时性的。或表示相互间的一种寒暄(客套话)。如,他去同事家做客。
“作客”,动词,是连动关系,“客”名词作动词用,是“寄居”、“客居”或“旅居”之意。侧重指寄居在别处,强调的是异地他乡、长期性或永久性的。如,作客于异地他乡。
这样说来,“邀请朋友到家里做客”中,一定要写成“做”,如果写成“作”就错了。但在有的时候,对两个字的用法还是争论不休的,比如“做报告”还是“作报告”。
有人说,作报告:指讲话类;在讲或讲过了。例:领导正在台上作报告。
做报告:编辑或整理,或者请某人来做报告。未发生讲。例:做报告是有技巧的,一个做得好的报告不仅内容丰富,还要很有针对性。
当然,两个字平时在一般情况下能够通用的,但如果是做政治或文学工作的,或是高考考生,那就得研究仔细点了,但这样的正在争论而无定论的问题一般情况下,高考是回避的。
报纸上的“直播十届人大三次会议开幕 温家宝总理作报告”,其中的“作报告”用的是“作”。
看到一则小笑话“某领导做报告:„如今男女平等,妇女同志站起来……‟在场的女同志全部起立等待指示。领导翻了一页念:„了!‟”其中“做报告”用的是“做”。
究竟是为什么,也真说不清,只能等待未来有专家们规范一下到底用哪个吧。
第三篇:压岁钱做理财还是做公益?
南方日报讯(记者/马喜生通讯员/邓维蔚)“大人给压岁钱是证明自己很大方,不给显得很小气。”“我列出一份用钱的购物清单,其余的压岁钱全部给爸妈,大人要礼尚往来,不然家长的钱包会大出血。”昨天,广州儿童活动中心邀请200名小学生讨论“压岁钱去哪儿了”,学生哥纷纷说出心里话,引来阵阵笑声,现场点评嘉宾司马春秋说:“今天我把一年的笑点都笑完了。”
压岁钱近半存银行
今年元宵节,媒体报道广州花都区的一名6岁男童要用1万元压岁钱买一辆电动车送给10岁的“女友”,结果被老板娘婉拒。压岁钱该怎么使用引发了家长和孩子的集体讨论。在现场,几乎全部学生都称春节收到超过1000元压岁钱,有近10名小学生自称压岁钱超过1万元。惠福西小学一位小学生说:“家长说把压岁钱都存在银行了,但是到底有没有存进去我就不知道了,我希望他们可以把存折拿给我看看。”主持人听完大笑,问:“今天你的家长到现场了吗?”“爸妈都没有来,家长不在我才敢说。”这位学生一本正经地说。一位小学生大胆地说:“我爸妈说,大部分压岁钱拿出来给别人封红包了,剩下的已经帮我存进银行,我想用朱自清散文《匆匆》的一句话提问,为什么我们的压岁钱一去不复返呢?”家长马上回应:“平时小孩要买什么东西我都能够满足他,压岁钱用完了,我们更要贴钱的。” 小学生将部分钱用于爱心捐赠
“压岁钱去哪儿了”绕不开小学生对压岁钱支配意愿的讨论。
昨天,约30名学生表示压岁钱无条件上交给家长;近半数小学生表示,压岁钱最终用于添购文具、报名兴趣班、过生日买礼物,甚至有小学生回答会将一部分压岁钱会用于爱心捐赠。近1/3的小学生希望,家长能够拿出一半的压岁钱给他们买“想买的东西”。
东风东路小学一位女学生说,她把压岁钱用于投资金币,保持压岁钱增值。第九届羊城“小市长”张熹则透露他的压岁钱理财之道:“我建议大家把压岁钱存入余额宝,利息要比银行存款高得多,还可以网购到平常需要的东西,可以说是一举两得。” 一位男学生说,他赞同把压岁钱交给家长保管,“我自己没有理财的能力,家长也会把钱用到我报兴趣班上。”一位一年级的小学生说:“妈妈把我的压岁钱存起来,长大了以后取出来买房子”。主持人逗她:“存进银行的钱要是贬值了怎么办?”“那我就继续赚钱呗。”小朋友回答道。
一位家长透露,给压岁钱是一种传统习俗,虽然钱最终回流到家长手里,但是平时只要孩子提出用钱的欲望,家长一般会满足。“我会让孩子列一张购物清单,要求合理的我们都用压岁钱去买。”
律师建议家长用钱要充分尊重孩子的想法 “认为压岁钱属于自己的请举手?”点评嘉宾、广东易春秋律师事务所主任司马春秋在现场提问。“很好,大概有30位小朋友举手。按照我们国家的法律,家长把钱给了你,钱就属于你自己的。”
“有多少小朋友认为家长可以无条件拿走压岁钱?”司马春秋接着提问。现场约有20位小学生犹犹豫豫地举手。司马春秋解释:“从法律的角度来说,家长可以无条件收走压岁钱,因为家长养育孩子的每一分钟都在花钱,家长可以使用孩子的压岁钱。即使压岁钱一去不复返,也是有法可依的。” 不过,司马春秋提议,日常生活中家长大多希望利用压岁钱来培养孩子的学习兴趣和理财习惯,“但是,家长要充分尊重孩子的想法,用压岁钱前双方要沟通,把钱用好、用舒服”。惠福西路小学校长朱思红说,压岁钱需要提早规划巧打理,她建议家长和孩子可以尝试新方法—把压岁钱捐给公益活动,帮助更多需要的人,让压岁钱传递出正能量。
塑料、塑料行业
http://plas100.com whddht
第四篇:做施工员还是设计人员
07年一所二本科工程管理毕业,工作后做过市政、搞过工装、做过高速公路的路面养护,现在做工业厂房,说实话虽然做过不少,但说实话还是不怎么喜欢在施工现场。现在有二级建造师证,实在不喜欢做施工到处跑,而且现在也老大不小的的本人84的,女朋友也难找,家里催的很,要是不做施工我还能做什么呢?
我毕业后在施工单位(二级)干了三年多,在设计院(丙级)干了一年多,个中甘苦我应该有发言权,二者要选择的话当然进设计院了,千万别听一些所谓的老人言,他们会让你三十岁之前的青春毁掉。我的同班同学就在昆明市建筑设计院,位于经济落后的西南地区,可现在每个月伍千少不掉,他只是个普通的设计人员而已。监理单位更不能去,看起来好像比较有权威,但是还不如施工单位,因为你施工的时候你做了你就懂了,监理成天只知道看来看去拿着规范图纸对照,怎么可能体会有你深?
拿我呆的上海来讲,比如你现在大学毕业,那么进一家丙级设计院的薪水绝对是你进一家施工单位的1.5到2倍(本人痛彻心肺的经验)。四年之后评上工程师,如果还没有其他的注册证书,薪水之比将达到2~3倍!
这些还在其次,我想你应该是男生吧?设计院比施工单位好还体现在以下方面。
一、工作环境的差别。你愿意坐在宽敞明亮的办公室自由自在的读书学习娱乐聊天,每天按时上下班周末可以有充足的时间做自己的事情呢,还是说愿意长年不分阴晴冷暖一直呆在室外,由于施工的连续性你周末根本无法正常休息,而且因为工地都在较为偏僻的地方,你连买一份自己喜爱的报纸都难上加难,况且一般的小规模的工地根本没有网络,你如何上网?更不要提长年都跟那些混了一辈子工地的老油条打交道了,他们的话题除了工作外就是女人和赌钱,真的,没有知道外面发生什么,报纸上的小道消息绝对比头版头条更加吸引他们。
二、所学知识的差别。常常有人说施工单位学到的都是真正的知识,根据我的经验那是扯淡!我毕业后到施工单位工作四年了,土建、水利、市政、公用、绿化,哪种图纸我都看得多了,施工起来都很简单,可是当我跳槽到设计院工作后才发现,我在施工单位看图纸施工所学到的知识太浅显了,一个中专生在设计院呆一年比我一个本科生在工地呆一年要学到更多的知识。原因就是现在我国的建筑施工状况根本就是不规范,说得直接点就是瞎干蛮干!三峡工程算大吧?可是真正在工地上做事的都是些高中中专毕业生,高级工程师博士生之类的全部都坐在办公室里,一天能出去一趟就算不错了,所以中国的工程施工普遍没有什么高深的理论知识,是人就可以干。有人说设计院没有现场知识,其实这都是看人的,你如果愿意去学,你可以经常到每个工地上去看去学,结合你自己画的图纸,所得到的效果绝对比你当施工员拿图纸埋头苦干强。
三、别人眼光的差别。施工单位的人普遍被人看不起,这是真的,因为事实如此!施工单位的男人长年呆在偏僻枯燥落后的地方工作,性生活的程度跟民工其实一样,连城市的下岗职工都比不上,所以少不了要出入桑拿足浴之类的地方,别人能拿好眼光看你?设计院就不同了,至少别人知道你在从事设计的工作,不论是什么专业,至少听起来是个高尚的职业,没有人会说设计院的人出去赌钱嫖娼吧?这些可能有些言重了。不过最直接的就体现在你的外表上,每个刚参加工作的人都会对未来抱有很大的期望,你难道愿意你每天蓬头垢面衣裳褴褛吗?你没办法保持你的干净,因为工地上的条件限制,你不敢穿新的好的衣服,因为它们常常会损坏。我映像深刻的是我刚工作第一个月才出了一次工地,因为直到那天才下雨,工地上休息了我才可以出去,那是去超市买牛奶,鞋子和裤子上全是混凝土和泥巴,众人嫌弃的眼光简直要把我给杀死了。
所以,总而言之,这是我切身体会,说得都是十分中肯的话,并没有针对过谁,说实话吧,就是在施工单位混上了经理老总的级别,走出去几乎任何一个人都比你大,你可能开上好车住上豪宅,可你要求人求一辈子,设计院的一个小小描图员的话都可以压死你。
我工作了五年了,在上海有房子,要车子的话也是说买就买,人品各方面都不比别人差,可根本没办法谈恋爱。因为没有办法和女方经常见面,也无法改变别人对我工作性质的看法。我在施工单位三年只相亲一次就失败了,在设计院只一年我就可以谈上两次恋爱。你可以说我矫情,也可以说我贪图安逸,但相信我,一开始我对工作的期待绝对不比你少一点点,我的雄心壮志也不比任何人差,可现实就是现实,你想过得舒服点,你想过得富裕点,你想过得体面点的话,兄弟,如果你希望你的青春不留白,就听我一句,千万别进施工单位!
西亚和非洲成天都有绑架中国工程师的案例,那可都是中建和中水建一类的国际大公司阿,可是你何时听说过中国的设计师被绑架了?为了你的为了和你的亲人,不要走错路。---------------
心得体会:
总之,土建施工从业人员的特点:
1、社会地位低:
从工地建点到工程竣工,监理、设计、业主、质检站、安检站、环卫局、环保局、交警、城管、派出所、市政管网部门、黑社会等,凡和施工扯上点关系的各衙门、各色人等无不把施工单位当一口肥猪,能宰就宰,毫不留情。
2、工资待遇低:
施工人员普遍没有节假日和双休日,每月上38天班(按照法律,双休日应双倍工资)、每天上12多个小时,折合法定22工作日、8小时工作制的话,工资才2000多。
3、工作环境差:
土建施工行业是个高危、安全事故频发行业,如果在城市里施工交通环境还好点,在深山老林、穷山恶水、戈壁大漠里施工,那环境简直和劳改犯工作环境一模一样。
4、生活方式差:
施工人员普遍没有双休日和节假日、没有固定的工作时间(每天24小时都得操心)、没有固定的工作场所(露天、钻洞或下水)、没有正常的家庭生活(夫妻两地分居、照顾不了家庭),吃喝嫖赌抽是施工人员的业余生活方式。
【看了很多经验贴,很多楼主,从头到尾都不知道自己要干什么……对未来没有个具体的规划,才会迷失在眼前的困难矛盾之上。我是一名大三学生,在大学我没玩过游戏,也没太深入学过专业知识,因为自始至终我都认为我不适合设计,而施工不适合干一生。所以大一到大三当班长,钻研自己热爱的领域金融股票投资。但是大三了,看了无数经验贴,我也是一名普通的农村子女,发现施工确实是不能干一生的,我喜欢财务,经济管理类的书籍,在学校也是苦头埋在图书馆,当然我不是读死书的人,我一直想得创业。如果进入房地产非技术类职业前途不明了,风险非常大,所以我决定从事造价,跟兴趣有关联性,相对施工,设计是稳定与发展都折中的选择,同时也是身体最健康的,设计也是年轻活,天天加夜班,周六日不休,在建筑业健康最重要,但是在土木建筑这一行混,你必须学习这个行业的语言,规则,所以施工一定要去,流程一定要搞懂,即使对于房地产公司,施工的质量也是房地产的根,不一定最重要,但是万丈高楼平地起,基础打得不牢,越高越危险。另一方面造价需要施工的实践基础,还有施工对人交流,为人处世,都是大学生快速成长的好地方,我也不是内向之人,喜欢交际,也算得上有思想吧。
去施工为了积累和成长
时间在1.5年到3年类
为了快速了解施工,需要比别人更积极,更努力。
另外找一家流动性大的企业也是升职,快速熟悉施工很重要的条件
这段时间仅仅为积累,钱,寂寞,困难都不重要,就当淬炼,军训吧
只要熟悉了场所,立刻转预算。给我20万年薪也不干,我要的是未来,事业和家庭生活的协调
之后有几条路【施工现场预算】【甲方预算】【咨询单位预算】进入【预算造价合同管理招投标】领域,具体选择,回头我会思考,不偏向蹲施工单位,这个阶段能稳在家乡省会城市为主参考。
因为了解施工流程,预算简单,当然还是有需要去工地,但稳定的多。
积累预算招投标知识
可能又要1—2年左右,这个阶段应该可以解决单身问题。
毕竟在城市中,大部分建筑的女孩都汇聚在甲方和造价室。
【所谓工程是算出来的,不是做出来的,对经济的不重视是技术工程师普遍忽略的问题,】如果顺利搞懂预决算,造价,招投标,年龄大致是22+3~5=25~27就可以开一家私人造价工作室
中国是社会主义的资本主义,早已是自由化市场〔土地供应以外:房价高的本质原因〕,资本主义的剥削制度遍地开花,我不剥削你,你就剥削我,既所谓压榨剩余价值,打工永远是创造10块钱价值,拿1块钱工资
而中国人就喜欢屁颠屁颠跟着别人,为人打工为人数钱。
之后拿造价工程师证书
获取人生第一筒金,开启在房建领域的老板之途……
之后可以通过关系积累做其他房建方面的,当然在本地,这样就可以守妻守儿守财
可以这么说,之后的事,我是看不到的,虽然我一直认为,我比别人远见,对人生有更高的大局观,但是未来终究是未来,我大一预测到大四毕业之后我是特立独行的人,因为我按照这样的宗旨生活,大多数人学习,所以我不学专业课,大多数人玩游戏,我不玩,转战那年老的图书馆书籍,广博知识,积累自我,一年后我仍然相信在招聘桌前我可以实现大一对自己的承诺:我独一无二……甚至可以说我的理想这只是起点,我的价值才实现一点点,因为我不是富二代初始积累必须也要我用双手完成,爸妈经常感觉愧疚与我,我反而感觉应该答谢他们,可以让我我白手起家,功成名就,带头振兴家门,荣光耀足的机会。也希望我的孩子可以继我之后振兴门族。最差我要把第二代人需要的初始积累积累好,不管是人脉钱脉还是其他,做为土木人我觉得最该反思的是对孩子的教育,如果这点做不到,我感觉愧为人父。你积累的东西也只会给后人挥霍,而不是继承发扬光大。
所以施工注定不是有能力有思想的人去干一生的。
但是初期短期经验积累是非常需要的我还有一招杀手锏:投资股票,在大学阶段跟一位大师淬炼2年了,从思想上有很大的收获,而且可以绝对的说,我这种喜欢思考总结,对数字敏感的天性,最适宜投资股票,当然系统性风险谁都不可避免。
如果积累初始资本我可以完全撒手工作,一心钻研投资之道,帮别人管理财富。金钱是四个轮子,人是两条腿。用资本赚钱的速度很夸张,1000万,10年可以变成1.2亿,很简单,但所有人都缺乏耐心,这是中国资本市场散户最缺少的地方,而大师都给我点到了。如果没有积累到初始资本,就要在工作中宣传自己的投资之道,以积累人脉,帮别人赚钱,帮自己赚钱。
因为是个人兴趣,如果去沿海从事投资领域没有专业优势,跟那一群海归坐一起,哪有优势,但在一群注定只听过股票的人谈股票投资之道,这就是优势,别人没有,核心竞争力。
如果土木是一门年轻活,不管施工,预算,设计都是加班……希望我可以老的时候,带着自己的妻儿原离世俗,去青山,去大海,去沙漠……因为只要智慧和时间还在,资本的滚动就会带来财富……虽然这本身其实并不重要
】
流动性大的 容易升职
真要请假,就以相亲,约会为名
我就把施工当一场长时间军训
一次服兵役。历练,苦难,寂寞,黑,短时间不一定对人生有多大的作用,但总有一天它淬炼的性格,为人处世,忍耐将伴随成就你的一生。
第五篇:关于Java不适做主要编程教学语言
关于Java不适做主要编程教学语言.txt38当乌云布满天空时,悲观的人看到的是“黑云压城城欲摧”,乐观的人看到的是“甲光向日金鳞开”。无论处在什么厄运中,只要保持乐观的心态,总能找到这样奇特的草莓。最近有一篇文章,说两位退休的美国大学教授上书反对将Java作为编程教学语言,对此我表示高度认同。对于Java,我并不反感,而且相信它在工业应用中的地位不可取代,但是,我一直反对将Java作为主要的编程教学语言,因为教学语言承担着与生产语言不同的任务,它必须能够帮助学生奠定坚实的技术基础,塑造核心技术能力。在这方面,Java不能够胜任。
1990年代中期以前,美国的计算机编程入门教育以Pascal为主。我的一位美国程序员朋友至今还怀念他与Pascal为伴的高中年代。到了1990年代中后期,由于ANSI C语言“纠正”了早期C语言的一些不适合编程教学的问题,因此成为很多美国高中和大学编程入门课的教学语言。1998年,美国指导编程教学的一个协会推荐将C++作为入门教学语言,在当时引起很大的反响,认为是编程教育方面的一个重要进步。但遗憾的是,C++非常复杂,而当时C++语言的教育体系又非常不成熟,因此很多地方的教学方法不得当,把学生迅速拖入无边无际的语言细节当中,引起了学生痛苦的抱怨。大约经过两三年不成功的实践之后,在本世纪初,美国计算机教育界普遍接受Java作为编程入门语言。此后在很短的时间里,Java迅速成为美国高中和大学里的首选编程教学语言,老师教得轻松,学生学得甜蜜,所以这个局面一直持续到现在。
而在中国,BASIC语言及其变体一直到1990年代中期都还是“算法语言”课程的主要教学内容,充分折射出当时中国计算机教学与工业应用之间的脱节。只是到了1990年代后期,C语言才确立了在中国工科计算机编程入门教育中的主流地位。到现在为止,大部分工科学生都“必修”“C程序设计语言”这门课程。不过事实上,根据我的了解,这门课程的总体教学质量相当糟糕,大部分学生可以说是满怀希望而来,两手空空而去。在这种情况下,中国高校计算机编程入门教育已经开始悄悄向Java过渡了。据我所知,有一些名校已经开始将Java设为编程入门课程,并且认为这是与国际接轨进步标志。
在我的朋友圈子里,大多数真正的一线开发者和技术领导者,对于将Java作为入门教学语言的“发展方向”都持质疑态度。他们中很多人目前主要的工作都集中在Java上,因此这种态度并非来自所谓语言宗教情绪,而是来自他们招聘和实际工作中的感受。他们发现,只学习Java、C#、VB等“现代”编程语言的学生,精于拿来主义,长于整合和快速开发,思维活跃,生产效率高,让他们来做直截了当的、有章可循的、非研究性和非创新性的工作比较合适,但是基础不扎实,对计算机系统的理解薄弱,处理细节和矛盾的能力不足,一旦他们熟悉的套路用不上,则缺少自主分析问题、解决问题的知识、能力和经验。
今天看到两位教授的“上书”,才知道原来他们也有同感。只不过这两位教授说的更直白,直接反对将Java作为入门编程语言,而是冒天下之大不韪,公然号召开历史倒车,要求退回到C、C++、Lisp和Ada去。
我是支持两位教授的。我认为,Java、C#、VB和其它虚拟机之上的语言都不适合作为专业程序员的入门教学语言。在中国还非常缺乏具有创新和独立解决问题的高水平程序员的局面下,我们应该认真做好的事情是努力提高C/C++的教学质量,而不是图快活转向Java。
教学语言的选择是至关重要的事情。作为大多数学生第一种需要认真学习理解的编程语
言,教学语言将会成为他们中间很多人的“编程母语”,深深地烙印在学生的思维方式中。这个编程母语要帮助学生破除计算机和软件的神秘感,建立对于程序的基本认识和对计算机模型的最初理解。在后续专业基础课和专业课程的学习中,这门编程语言应该作为主要工具贯穿始终,帮助学生认识计算机系统,掌握算法与数据结构技能,熟悉操作系统概念,理解编译原理知识,理解软件抽象及软件设计的基本思想,完成一定量的课程及课外项目实践,建立正确的软件开发实践习惯。不但如此,这种教学语言必须是工业界的主流语言,否则学生学非所用,学习动力无法保证。
按照这个标准来衡量,Java适合于作为主要的编程教学语言吗?我不这么认为。首先,我承认Java在教学上有一些优势,比如其开发环境和工具支持非常成熟,有助于培养学生正确的编程习惯;Java是当今第一工业主流语言,标准类库非常全面,可以迅速地开发具有实际用途的程序,有助于激发和保持学生的兴趣;而在数据结构、算法、编译原理的教学方面,Java也毫不落于下风,在软件抽象设计(面向对象)方面,Java还有着明显的优势;特别是在并行编程的教学方面,Java 1.5 concurrency包提供的优势是压倒性的。尽管有如上这些优势,但Java作为教学语言存在着一个致命的缺陷,即它是一个虚拟机语言,这一点就足以把它从教学语言的名单上去掉。
作为一个虚拟机语言,Java对开发者隔绝了下层的真实系统,从而构造了一个近乎完美的环境,在这个环境里,世界上只有一种机器,一个操作系统,内存是无限的,所有的机器都具有相同的字节顺序和一致的类型约定,为了设计的优美而牺牲速度永远是正义行为,从反射到运行时自动加载,从完备的容器类到统一字符编码,一大堆漂亮的功能都可以不费吹灰之力唾手而得。要是这个世界上每台计算机都是一个Java机器,每项编程任务都可以在这样一个近乎完美的环境中开发,那毫无以为,Java是最合适的编程教学语言。但是事实上呢?这样一个完美的环境是Java力量的源泉,但这却不是真实的世界。在真实世界里,我们可能面对非常原始的环境,苛刻的运行时限制,复杂多变的系统环境,令人窒息的细节魔鬼,要对付这些东西,需要开发者具有在应对复杂性,自己构造环境,在诸多限制条件下寻找解决方案的能力。而这种能力,被无数人无数次地证明是软件开发、特别是软件创新的核心能力。把Java作为教学语言,恰恰会导致这种核心能力的缺失。除此之外,如果耐心观察的话,不难发现,几乎在任何软件领域里的创新性成果都首先是由C/C++语言实现的,原因很简单,Java是站在C/C++基础之上的,只有C/C++先把大路趟开,Java才能够顺势而上。
相反,尽管C/C++语言作为教学语言有很多的不足,比如不同环境下开发模式差异大,细节繁多,开发效率低,容易犯错,测试和调试困难,学习者难以保持动力,等等,但是这些问题都可以解决。而C/C++的关键优点,是能够让学习者在真实的计算机抽象上、在大量的细节和矛盾中学会思考,学会解决问题,学会了解真实的系统,知轻重,明生死,从而建立核心能力。掌握了C/C++语言,再去学习和理解Java、C#、Python、Ruby和其它语言,就比较容易达到更高的境界。反之,如果习惯了舒舒服服躺在完美世界里当阔少,那就很难有勇气面对真实的世界。当然,很多开发者认为,现在更重要的能力是理解业务、整合现有资源的能力,而不是处理底层细节的技术。这种说法放在个人身上没有问题,但是不能成为整个编程教育的指导思想。我们需要各个层面上的人才,精通业务和设计的架构师固然很重要,但能够在底层作出创新成果的编程高手实际上更为稀缺和珍贵,很多时候也能够创造更大的价值。而且,更重要的是,一个精通系统知识的开发者在往上走的时候不会遇到大的障碍,而一个只知道拼装组合的“高级设计师”,往往连往下看的勇气都没有。
Java的另外一个问题,是其所倡导的繁琐设计风格,一个对象套一个对象,一个对象叠一个对象,概念之间彼此横七竖八地互相依赖,人为制造出一大堆貌似精美、实则累赘的所谓设计。这个问题我已经批评过多次,并且相信这股歪风一定会最终被人们抛弃,Java最终会归于质朴。但是在这一天到来之前,Java对于初学者来说,很可能蒙住他们的双眼,使他们看不到软件设计中最可贵的简单性和优美的统一,体会不到数据和程序的统一。在这一点上,C表现的非常好,而C++如果教学得体,可以做的更好。
当然,这并不是为现在的C/C++教学辩护。恰恰相反,从我了解的情况来看,目前普通高校的C/C++教学质量非常令人担忧。学生学不会,而且越学越没有兴趣,老师则感到教起来很棘手,迫于现实情况往往选择敷衍了事。反而是教Java,无论如何学生还能学到一点东西,对就业也有直接的帮助。至于学生的核心能力确实,发展后劲不足等问题,就让他们在现实工作中自己解决吧。坦率地说,这种想法也很有道理。不过,从教学角度来说,我认为老师们还是应该积极考虑如何提高C/C++的教学质量。毕竟学生阶段是十分宝贵的,基础不在这个时期夯实,将来想弥补,就算不是完全不可能,也将付出十倍的代价。本着对学生职业生涯的负责态度,还是应该帮助学生达到这个阶段应该达到的目标。在两位教授的公开信里,也充分表达出这个意思。
我赞成的编程教育过程,应当是以C/C++(基本上是C)为主线,贯穿起算法、数据结构、系统原理、编译和数据处理、软件设计和组件技术等关键知识领域,让学生能够从根本上理解现代软件系统的原理和构造,并通过有效的练习建立正确的软件设计观念和良好的工程实践习惯。在这个基础上,无论将来是深入学习C++,还是进入Java的繁荣世界,或者拥抱Python、Ruby,甚至于走向Web开发,都会心领神会,势如破竹。