基础软件到底是什么?普奥创始人陈德基以个人经历深入浅出告诉你!
基础软件是啥?我也不清楚,如果人们使用的软件叫做应用软件,那基础软件应该是用来实现应用软件的软件。举例如操作系统、数据库、代码管理软件、编译软件、通信协议软件等,它们是软件世界中最底层最基础的。
开发软件当然要用编程语言。编程语言包括最原始的机器语言,往上是汇编语言、结构化语言如C、面向目标的语言如C++、以及后来的Java、然后是基于Java的如Python、然后有逻辑编程语言如Lisp、最后是接近自然语言的如自动代码生成工具。还有一种图形化编程语言,你设计你想要的,设计的结果就可以翻译成执行软件。早期有个词描述这个叫做WYSIWYG(What You See Is What You Get)。
把编程语言写的代码翻译成机器代码的软件叫编译软件。编译软件是基础软件。我本科的一个课程实习就是写一个小的数据库软件,支持几条基本的数据库查询语言,把用户的查询编译成可执行代码。编译软件其实已经很完备了,不再需要太多的研发。互联网时代各种眼花缭乱的语言如Python、Ruby、PHP等等,都是用Java搭起来了。它们的编译可以先翻译成Java,再用Java的编译器。而Java编译器基本上是翻译成C再用C编译器。C++编译器基本上是翻译成C再用C编译器。我留学时,从清华来的一个学霸说他曾经用C创造了一个类似C++的程序语言。他没有发明C++的Stroustrup有运气;人家是图灵奖级的贡献。
编程语言越来越高级。我女儿10岁时就用Roblox编小游戏了。这其实是一个进步,就好比开车的人不再需要有汽车专业背景。我认识的一位Java程序员,对C语言嗤之以鼻,不会也不想学。当然最优秀的驾驶员往往是汽车专家。
实时操作系统也是基础软件,如华为推出的LiteOS和阿里推出的AliOS。嵌入式编程一般都用实时操作系统。PC上的操作系统基本上统一到了Windows和Unix。我个人认为实时操作系统也最好统一到一个版本,同时最好是开源的。
很多非计算机专业的人事也加入了软件开发的大军,他们有时只需要学会Java。基础软件的开发人员一定要有计算机专业背景,要熟悉各种专业基础知识如数据结构、数据库、操作系统、通信协议等。
计算机专业的程序员还是有必要的,他们开发的软件往往更优秀。基础软件是他们的用武之地。实时系统还很难由非专业人士用Java这类高级程序语言来开发,因为时间参数来自最底层的物理世界。时间参数很难抽象到高级编程语言里,很难被编译软件保真到机器代码。计算机专业的人很清楚一个程序必须有代码针对任何一个可能性,哪怕概率几乎为零。否则程序就可能宕掉,或者被骇客攻击。编程太投入后,我们这种人生活得也很累,做任何事情前都要穷举所有的可能性。
免 费 资 料 下 载
往 期 精 彩阅 读
是否可能出现通用性的工业互联网平台产品?从艾默生的DeltaV产品解读这一疑问!
.........