2.3?我是“搞计算机的”——《逆袭大学》连载

返回到【全文目录】

目录

2.3 我是“搞计算机的”

公众眼中的IT人 

行家眼中的IT

搞计算机的人干什么 


2.3 我是“搞计算机的”

常听人讲“我是搞建筑的”、“我是搞新闻的”之类的话,这样说话的人底气很足,这就是专业人士。听人说这句话,不免肃然起敬,这就是科班出身的底气。

学了计算机类的专业,将来极可能会告诉别人“我是搞计算机的”。那“搞计算机的”究竟意味着什么个问题,决定着要学习什么,决定着要如何学。

公众眼中的IT人 

计算机已经成为了大众高度关注和参与的领域。许多介绍计算机技术和应用的刊物出现在街头的报刊亭中,这个行业中的许多头面人物几乎像娱乐明星一样被公众熟知,PC、Windows、WWW以至于塞班、安卓、iOS、Linux这些名词会随时从一位没有任何计算机专业背景的人的口中说出,下载、安装、杀毒、装系统、刷机、越狱、翻墙、超频等成为很多非专业人士可以炫耀的“一手”,当黑客、做机器人、开发自己的游戏、创业进入IT行业,成为不少中学生的梦想,乃至于更专业一些的编程话题,也能常常被公众提起。

昔日的高科技已经放下身段进入到了百姓中去了,走进计算机房也再不用换上软质的拖鞋和白大褂,这实在是一件很让人享受的事。IT行业在快速膨大,从业人员增多,行业细分加速,产生了大量的岗位,衍生出了众多的新型工作机会。计算机在各行业迅速渗透,本来修习别的专业的人员,靠着自学或其他的机会,也充实到从事与计算机有关的工作中来,干出了不少“抢饭碗”的事。不少这样的高手,做出的成绩常令专业人士感到惊奇和惭愧。在不少行业,由于要应用计算机技术的领域专业性很强,只具有计算机专业背景的人甚至很难深入到其中。

许多人会提及一种看法——“计算机只不过是工具”,类似的还有外语专业——“外语就是个交流的工具”。这样的说法有一定的道理,充分反映了这两个专业的适用面之广,放到哪里都有机会去发光发热。然而,以“计算机只不过是工具”作为计算机专业定位的出发点会产生极大的误导。即使以菜刀这样的工具为例,用菜刀切个菜、剁个肉,几乎人人都会。而涉及到制造菜刀,论选材,说工艺,还得靠“王麻子”们,而高档饭店中的改刀师,也不是随便就上岗的。正如外语专业人士的真功夫在于对跨民族的社会、文化、艺术方面的理解,计算机专业的优势也并不仅是会用某种编程语言写那么几行代码。做好一项工程,涉及科学、技术、工程和应用的各个层面,事关性能、效率、质量等方面的指标。“行家伸伸手,便知有没有”,学到专业的本质中去,其中的道道,不是谁都可以轻易说三道四。

在现实中,也经常会发现一些狭隘的说法,典型的如“学计算机(或软件工程)的,就是敲代码的”。这从一部分人工作成果的最终形态上看,是有点道理。事实上,行业中也真有不少人就这样说自己的工作。目前社会上大量的职业培训机构的教学内容集中在这个层面,以这种方式入行的“行家”们也会将这种认识层次保持下去,并继续传播这种观点。信奉这个观点的不少大学生,他整个的学习就局限在语言层面,那些不能直接用来写代码的知识,就是“工作中用不到的”知识。“敲代码”成了一门手艺,在动手能力的培养中,似乎与hand无关的,就是浪费。也还有不少的同学,因为“不喜欢敲代码”而走入到迷茫之中,全然不知还有别的选择。如同外语专业的人士的“专业”其实并不只是会说他国语言,而在于说出和写出的话符合两国的文化背景和习俗。作为计算机专业人士,写出的代码就是要达到人、机都舒服的境界,这是好工程中应该具备的特征。我常想起卖萌的两三岁的小孩子,说起话来溜道溜道,但知道他仍然幼稚,还有待成熟,会说话,会语言,这只是一个表面的阶段。

行家眼中的IT

ACM和IEEE-CS组成了联合攻关小组提交的报告《计算作为一门学科》中,第一次给出了计算机学科一个透彻的定义:计算机学科,是描述和变换信息的算法过程,包括对其理论、分析、设计、效率、现实和应用等进行的系统研究。这一学科起始于20世纪40年代初,来源于对算法理论、数理逻辑、计算模型、自动计算机器的研究,以及存储程序式电子计算机的发明。

在这段权威性的表述中,我们看不到当前所感知到的行业景象。从硬件设备的角度,只谈到了“自动计算机器的研究”和“存储程序式电子计算机的发明”,并没有具体计算机的形态。这种无形态的本质概括,实际上却释放出了无限的可能形态。例如,根据“软硬件逻辑功能等效性”原理,计算机的大部分功能既能由硬件完成,也能用软件完成。通常用硬件实现时执行速度快、成本高、修改困难,而软件正相反。在解决实际的问题时,可以给出多种选择。

例如,要实现一个有计时功能的系统 ,最常见的有电子表,也可以将其看成是一个简单的专用计算机:

  • 大学中学习数字逻辑的时候,用一些基本的逻辑器件可以组装一个电子表,这是一种纯硬件的解决方案。
  • 也可以在学习了单片机或嵌入式系统的之后,利用通用的单片机芯片和简单的外围器件,将编制好的程序写入芯片,从而制造出这个计时器。这是一种软、硬件结合的方案。
  • 其实还可以用任意一门程序设计语言,在通用计算机上用纯软件的手段去实现。要追求友好的用户界面的话,可以开发成图形用户界面的程序。
  • 当计时功能要作为一个工程项目中的一部分时,例如是要用于生产自动化中生产流程控制的计时功能,或者是用于网上购物团购倒计时,计时器的形式,需要根据具体情况确定。

不管采取什么样的方式实现,完成的都是“描述和变换信息的算法过程”,这个例子中,算法实现可以用软件,也可以用硬件,而信息指的是时间信息,要做的工作包括了“理论、分析、设计、效率、实现和应用”等诸多的环节。

即使着眼于当今我们认为更关注的软件领域,也看不到学科定义中对于语言、架构平台的描述。具体要用C,还是用Java实现,是在Windows下,还是在Linux下开发和运行,这都不是核心的问题。理论上,只要是可计算的问题,用任何的计算机语言都可以解决,选择了某种语言只是无限可以选择中的一种。我们选择一门语言进行学习,只是借此入门学习编程而已,至于未来的工作中用到什么语言,以及发展中又出现了更合适的语言,及时切换即可。

与公众眼中IT人不同,专家眼中的学科核心,要在高度的概括中剥去机器的具体组成,忽略诸多编程语言群雄逐鹿的壮观场面,从而要抽取出其中的最本质的、最核心的内容。“图灵奖”被誉为是计算机界的诺贝尔奖,考察从1966年开始的获奖人的主要成果,大部分涉及形式系统、算法及其复杂性理论等。如果不对行业的本质进行把握,很多人会惊奇这也算是“搞计算机的”。然而,正是这些卓越的工作,支撑了计算机学科的飞速发展,创造了各种工程、应用为大众服务的机会。

当我们对学科、专业、行业中要解决的问题逐一地进行考察时,看到的是各具形态的不同事物。在大学中,培养方案中的专业核心课程的设置,必须体现对学科本质的高度关注。而对于大学生的学习,也需要与这种思路产生“共鸣”,通过有效的学习,能将前人经过艰苦探索获得的经验中的精华,在短时间内据为己有。在此基础上,结合将来可能要从事的领域工作,掌握所需要的具体技术,形成自己实际工作的能力。实际上,直击专业核心的学习与具体技术的学习在培养方案的安排中是交叉进行的。掌握了专业核心课程的内容,将对具体技术的学习产生思维方式上的支持;而具体技术的学习,又能增加对核心内容的感悟。在学习上做一个有心人,让两者的交叉产生交互,整体地提高自己学习的效率和效果。

搞计算机的人干什么 

很多程序员吐槽过节回家团聚,干得最多的就是给各家的亲友“修理”电脑的各种毛病,装机、升级、杀毒,不一而足。呵呵,为人民服务的宗旨不能丢,利用自己的一点本领,解决手边的需求,这个境界可以有。

对于主修计算机类学科的学生,以及从其他途径要进入到这个行业中的人员,学有所成之后要从事的本行业的工作范围很广,却需要放开我们的视野,在科学、工程、技术和应用四大领域中搜索一番了。

按照传统的说法:

  • 从事科学的人是“发现者”,他们试图发现自然、社会等方面存在的规律。
  • 从事技术工作的人是“创造者”,他们利用已发现的规律试图创造新的物品、工具、方法来满足人类的需要。
  • 从事工程的人是“实现者”,以合理的成本建造或生产稳定可靠的结构或产品满足大量人群的需要。
  • 从事应用的人是“推广者”,将工程师创造的产品,普及到需要的地方,为社会大众服务。

从科学的角度讲,计算是一项体现人类高度智慧的活动,计算机器是一种人造工具,故而计算机科学研究的并不是自然现象,而是一类非自然结构的内在规律。每个科学学科都有其所谓的“终极”问题,计算机学科的终极问题是“什么可以被自动地计算。能够利用计算机解决的问题,称为可计算问题,“计算”被当作“问题求解”的代名词。计算科学的研究以构造性为特征,在对这一终极问题的追问中,不断突破已有思维、器件的限制,产生出更多对已有难解问题及不断产生的新型计算问题的解决方案。计算机科学发展了几十年,即使是在传统的算法领域,很多问题还没有解答,需要我们去发现答案,而新兴的需求又不停地制造着需要研究的新课题。例如在人工智能领域,“更深的蓝”战胜了卡斯帕罗夫不能完全说明机器智能超过人类智能,仍然有不少的难题等待解决,而建造一支机器人足球队战胜人类的世界冠军队的新目标,引出了包含合作技术在内的一大批新的问题。近年来的探索,发现博弈论等传统经济学领域中的基础理论,原来也是算法的基础。再如,互联网的发展已经是势不可挡,但我们对互联网在发展中形成的结构特征、数据与服务的分布规律、需求的模式、协同方式等等还了解很少,快速兴起的社交网络,引出了对网络科学的更多期待。在软件领域,软件本身日益复杂,如什么是合理的体系结构、软件的可靠性如何保障之类的问题,在工程上可以有一些方法去应对,但根本的突破还是需要加深我们对计算机软件系统及其有效性的理解,希望寄托在相关计算理论的突破,需要一批矢志计算机科学的人才。

工程和技术的关系有些复杂。技术是人在改造自然、改造社会,以及改造自我的过程中所用到的一切手段、方法的总和。技术人员是创造者,是开发、发现这些手段和方法的人。工程师作为制造者、实现者,与发现者、创造者有很大的不同,他们的工作目标就是产品,要为用户负责,在一定的制度与规范约束下开展合作。技术对工程起着支撑作用,工程的立项必须要在技术可行性分析的前提下开展。关键技术问题不能解决,再有价值的工程项目也不能去实施。技术要创造,其前提是科学上的认识,之后再有了工程上的实施。例如青藏铁路是一项工程,而工程立项之前,解决多年冻土、高原缺氧、环境保护等诸多问题的技术方案必须经过论证。在化工等传统的工程领域,基于已经有的科学发现,工程技术人员会在实验室中探寻可用的生产流程和生产工艺等技术问题,然后扩大规模进行“中试”,通过后才能进入工程的阶段,开展大规模的生产。而在IT行业,尤其是软件行业中,不存在有形物质的生产,由技术到工程的环节不明显,更有必要采用合理、稳妥的办法将二者连接起来。技术对工程有着绝对的指导意义,技术在一个工程项目中往往起着决定性的作用,而涉及到工程,生产的组织、人员的搭配、团队建设等,也都是不可或缺的组成部分。作为一个有志于从事实践性工作的IT人,所要积累的,不仅是学语言、写代码的那一点东西。

由此也可以看出在计算机类的诸多专业中,计算机科学与技术专业的面向范围更广,更追求学科自身的内容,而软件工程、网络工程、物联网工程等其他专业的知识领域受科学与技术发展的影响,但同时要更关注实施工程中的其他问题。这些专业有共通的基础,但内涵有所区别,关注点也有不同。在把握共同基础的前提下,学习者可以依据自己的兴趣和实际情况安排学习,适当调整形成自己的特色,学习过程受专业培养方案框架的限制,但出路却不必完全受专业名称的影响。这也是我给大学生试图讲这些的意图所在。

对待工程和技术之间的关系中还有另一种观点,将解决工程问题的手段和方法也称为技术,于是有了前述学术型、工程型、技术型和技能型人才的划分。在实际的生产企业,被称为技术员的,也就是在一线组织生产的人员,他们熟知实施工程中各个环节生产任务的实现方法和手段,此时的角色已经不是创造者,而是实施的执行者了,这是包括高等职业教育在内的职业教育重视的技术型和技能型人才的培养。对技术的两种不同看法,是在不同语境下已经形成的观点,没有对错,但需要在必要时加以区分,找到工程和技术学习的基点。

最后说到应用。按照CC2004中对计算机学科中划分的方向,信息系统和信息技术两个方向划分为应用型。信息系统方向的任务是负责建立和维护信息系统,这是让计算机技术和工程直接发挥作用的环节,是信息化社会的基本保障。为维护计算设备以及在其上运行的各种软件系统需要大量的人员,在大型IT企业,甚至其他的企事业单位,都有专门的运维部门,至少安排专人从事运维工作。这一部专业人员的工作中,不是研究和开发,而是要保证系统正常运行,充分发挥已有的设备和应用程序的作用。运维人员需要熟悉系统运行的环境,不少工作需要编制批处理命令,让日常的数据备份、安全检查等工作能自动运行。让系统能够运行起来,稳定运行,安全运行,高效运行,每高一层次的要求,都需要会出运维人员的努力。运行、使用系统的时间要比开发的时间多得多,由此也看出运维的重要。

从事“信息技术”应用,是要在各个不同的专业领域内用计算机去实现特定的计算需求。完成这部分工作的人员可以是别的行业的人员,他们在业务领域有专长,再补充了计算机应用的知识和技能后可以承担这些工作。计算机类的专业人员,工作以后接受一定的应用领域知识和技能的培训后,也可以从事这样的工作,都是实现“计算机技术的应用”。这给不同的人员加入到IT相关行业和岗位提供了无限的可能。对于另有所爱的计算机类专业大学生,以及钟情于计算机,却在其他专业学习的大学生,机会就在这种交叉之中,合理设计自己的知识结构,为将来从事心仪的工作做准备,这里存在着无数从事相关交叉领域的研究与工程技术工作的可能。

“应用型人才培养”可能是目前大学中人才培养方面最火的一个词语。应用型人才培养强调要改变一直以来的以理论灌输为主要方式的教学,应用的内涵是能将计算理论应用于技术开发。这需要在理论的教与学的模式上有所突破,也要能将学到的技术应用于工程项目,能将学得的知识应用于实际的生产、生活当中去。这也是大多数大学生应该的选择。

科学、技术、工程和应用不仅需要不同的知识和技能背景,更重要的是他们具有不同的思维方式和工作模式。在不追求成为一个通才的前提下,搞清楚这里的差别,明确作为一个“搞计算机的人”,要做什么样的选择。

返回到【全文目录】【下一节】

 

 

来源:迂者-贺利坚

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年1月8日
下一篇 2019年1月8日

相关推荐