先附一张CS全景图(版权属于原作者,不做商业用途),看看这个坑有多大:
搞信息技术的人,都喜欢使用缩写,可能是这样显得比较专业和高端,此外其实真的是有一些实用价值,交流和表达比较简洁。我们今天就来探讨一下这几个行业中最常见常用的词汇: CS、SE和IT。
在一切开始之前,笔者想先从"信息"这个名词开始说起。
- Information 信息
这个不是一个缩写词。信息的定义很多,大多数都乏味无趣不知所云。 我们还是来引用信息论鼻祖香农在1948年一篇题为"通讯的数学理论"的论文中的阐述:
"信息是用来消除不确定性的东西"
information is a decrease in uncertainty.
大师确实气度非凡。香农从哲学和逻辑上阐述了信息的本质,并以此创建了描述不确定性的信息模型(信息熵)和计算方式,并提出使用bit作为信息度量的单位,从而开启了信息论,引领人类进入了信息时代。
- CS: Computer Science,计算机科学
思来想去,还是先引用一下维基百科的说法比较合适:计算机科学是系统性研究信息与计算的理论基础以及它们在计算机系统中如何实现与应用的实用技术的学科。它通常被形容为对那些创造、描述以及转换信息的算法处理的系统研究。它包括很多分支领域,有些强调特定结果的计算,比如计算机图形学;而有些是探讨计算问题的性质,比如计算复杂性理论,还有一些领域专注于怎样实现计算,比如编程语言理论和程序设计;而"人机交互"则是专注于怎样使电脑和计算变得有用、好用,以及随时随地为人所用。
- SE: Software Engineering, 软件工程
1968年秋季,北约(NATO)的科技委员会召集了近50名一流的编程人员、电脑科学家和工业界巨头,讨论和制定摆脱软件危机。在那次会议上第一次提出了软件工程(Software engineering)这个概念,并定义为用于研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。其后的几十年里,各种有关软件工程的技术、思想、方法和概念不断被提出,其逐步发展为一门独立的"科学"。
1993年,电气电子工程师学会(IEEE)给出了一个更加综合的定义:"将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程,即将工程化应用于软件开发中"。此后,IEEE多次完善和丰富软件工程的定义和内容。
- IT: Information Technology,信息技术
信息技术其实通常也称为信息和通信技术(Information And Communications Technology,ICT),是主要用于管理和处理信息所采用的各种技术的总称。它主要是应用计算机科学和和通信技术来设计、开发、安装和部署信息系统及应用软件。信息技术的发展包括前机械时代、机械时代、机电时代和电子时代等不同的阶段。
在商业领域,美国信息技术协会(ITAA)将其为"对于以电脑为基础之信息系统的研究、设计、开发、应用、实现、维护或应用"。此领域主要相关的任务包括网络管理、软件开发及安装、针对组织内信息技术生命周期的计划及管理,包括软硬件的维护、升级和更新等等。
信息技术一词最早是出现在1958年《哈佛商业评论》中,一篇由Harold J. Leavitt及Thomas L. Whisler所著的文章,其中提到"这种新技术还没有一个单一的名称,我们应该将其称为信息技术(information technology、IT)"。
- 结论
厘清了它们的权威表述、来源和定义。作为业内人士,我们应该能够更深刻的认识到它们之间的联系和区别,并相对明确的在不同的场合和场景中进行更合适的引用和表述。
个人理解,本质和广义而言,CS是最大的范畴,但在狭义上它们的侧重方向不同。 CS更倾向于原理性的逻辑和内容;SE其实是CS的一个重要分支,但强调其作为软件的特性和工程化的属性;IT更偏向于在真实世界、社会和工商业环境中的实际应用。
最后,用一句话来总结一下这三个词,看大家觉得这个理解怎么样:
CS是原理,SE是实现,IT是应用。
同样的道理,科学、工程和技术这三个名词(都是现代社会才有的名词),也可以进行类似的理解和阐述。爱因斯坦的质量能方程是原理是科学;在它的指导下曼哈顿工程搞出了大杀器;然后美国人用它逼降了日本人是技术和应用。