历史回眸:不同时代的程序员
混沌初开:软件与程序员 1950-60
从计算器到计算机
- 单一功能 -> 无限功能
- 软件:一组可变化的硬件配置
- 程序员:编写软件的人
早期计算机的特点
- 大:体积巨大、功能弱小、型号各异
- 裸:缺少辅助软件
硬件、软件的分离
- 程序员:精通机器结构,会编制逻辑的程序,还能够操作机器
- 电子接线、制作穿孔卡、操作终端tty与主机通讯和调试
恐龙时代:UNIX 1970
操作系统的诞生
- 计算机逐渐在大型部门普及,人们需要更方便的使用计算机
- 出现了操作系统,提供一些常用的基础性功能,如程序运行、IO、作业批处理等
- 恐龙时代的明星:IBM
- 林林总总的OS
UNIX与C语言
- write once compile to any OS
- POSIX:可移植操作系统接口标准,定义了操作系统应该为应用程序提供的接口标准
硬件、语言标准库、应用软件的分离
庶民的狂欢:PC 1980
游戏改变世界
- 人人都需要一台游戏机!各种各样的游戏机、游戏电脑纷纷诞生!
- 英特尔、摩托罗拉、苹果、惠普、王安电脑等公司纷纷登场(车库创业)
- 但这些电脑硬软件体系各异,如同巨型机的故事,程序员被分割在不同的硬件平台下
PC兼容机
- IBM:1981,提出PC兼容机概念:
即所谓开放架构,对组成计算机各个组件及其之间的通讯接口进行标准化,不再是一家公司生产电脑的所有组件,而是允许遵行标准,各自生产,统一组装。
PC称王
- 这种标准化的、允许各方参与的开放体系瞬间推动了PC的发展,诸如台湾的主板、韩国的内存、美国的硬盘,以及compaq、HP、DELL等等
- 有了统一的标准,PC兼容机一时风靡全球!干掉了所有的对手,譬如王安、APPLE!
微软的运气
- IBM需要一个OS,找到了比尔!
- 比尔购买了一个OS,MS DOS诞生了
- 但据说比尔的父亲就是IBM的董事!
创业第一定律
如果你是个富二代,请学好技术,你将超越你的父辈
东方英雄
MS OS的局限
- 面向的是普通用户,提供简单的磁盘文件管理、程序安装、外设使用等功能,对于程序员而言,近于裸系统。
但所幸PC机的硬件体系是标准化的,程序员只需要熟悉标准中为数不多的硬件(实际上即80x86指令集),即可大有作为!
中国的数字英雄:
- 中文环境ucdos的鲍岳霆、中文之星的王志东、中文表格cced的朱崇君、WPS的裘伯君和雷军、王江民杀毒软件等等,以及联想等等
他是谁?
- 早年靠写程序有一桶金,因卖保健品而发达,又因炒房地产破产,随后仍然依靠卖保健品而东山再起,现在靠网络游戏而风光,谁?
创业第二定律
如果你不是富二代,请学好技术,这将为你带来第一桶金
硬件、硬件标准、语言标准库、应用程序的分离
- 程序员:熟悉PC硬件及其指令(x86、ISA、DMA、PCI等等),熟悉诸如C/C++语言等
帝国崛起:windows 1990
windows
- 1991年,微软推出了win3.1,随后是win95、win98,直至winXP
- 最大的革新是:
- 统一的基于窗口的图形化用户操作界面GUI
- 一组涵盖PC机各类硬件功能的win32 API
这意味着:
- 用户按照统一的方式来使用计算机;
- 应用程序不需要了解具体硬件,而是通过现有的系统API来操作抽象的硬件;
windows的优点
- 程序员不必再考虑用户的界面使用的不一致性
- 程序员不再担心硬件的兼容性问题
- 程序员通过调用OS API及组件,可以立即的获得强大的系统功能,快速构建应用程序
这种统一且开放的API结构,迅速吸引和推动了大量第三方软件开发商的加入和成长,windows平台上的软件库大爆发,反过来促进win32 API的进一步强大,形成正反馈
windows的缺陷:
- 由于win32 API是微软私有且权限、源代码等均不开放,由于商业垄断利益的原因,则反过了阻碍了OS、应用软件两方面的发展
帝国称霸
- winX系列:垄断桌面OS市场
- office系列,利用OS优势,打败了诸如WPS之类对手
- VC、VB等结合MFC/OLE/COM等技术,雄霸桌面开放技术,除了borland的dephi等勉强支撑
- visual studio:桌面应用最好的IDE
- directx3D标准:桌面显卡事实上的3D硬件标准
- mediaplayer:击败realplayer
- IE6:一度99%的浏览器市场
- WIN NT: 抢占服务器OS市场
- sql server:进军企业服务市场
- XBOX:进军家庭游戏机市场
- MSN:门户站点,收购时代华纳、AOL等
- ……
硬件、操作系统、系统API、应用程序的分离
- 程序员:熟悉win32 API或之上的组件库(OLE/COM)进行编程
巨人在行动:JAVA 1990
SUN on JAVA
- 中小型机(服务器或工作站)依然处于硬件各异、OS林立、应用软件厂商割据各自为战的时代
- JAVA: write once run everywhere
JAVA的流行
- 受到传统巨人们和学术机构的支持,广泛应用大中型企业与网络应用,譬如J2EE、SSH等一时大行其道
- JAVA面向的是服务器市场
硬件、操作系统、虚拟机(JAVA)、语言标准库(JAVA)、应用程序的分离
互联网狂潮:WEB网站 2000
三大利器
- Internet: 基于开放的互联体系,催生了巨大的信息共享与交互需求
- Linux: 用PC机做服务器,廉价的硬件,免费的OS
- 开源运动: 为互联网生态圈提供了种类丰富、且层出不穷、日新月益的软件宝库
WEB网站的兴起
- 三大利器 + 对微软的一点怨恨,团结形成了史上最大的程序员社区,构建了史上最为开放和庞大的共同体:WEB网
- yahoo、google、facebook、twitter、百度、阿里、腾讯、新浪等等
硬件、WEB服务器、WEB浏览器、WEB网站
- 程序员:熟悉WEB标准,熟悉服务器端及其开发语言(如各种P)
明天的WEB: WEB应用
- WEB服务端的标准化,将形成统一的WEB API服务层,可类比于windows
- WEB浏览器的功能日益丰富,HTML5的成熟,将催生出全功能的浏览器
WEB应用
- 桌面软件与WEB应用的无缝融合与统一
- 本地软件与网络软件的无缝融合与统一
硬件、WEB服务器、WEB浏览器、WEB应用
- 程序员:熟悉WEB标准,熟悉浏览器API即HTML5及其开发语言Javascript
异军突起:APPLE 2010
Apple
- 一家比IBM的PC部门还古老的硬件公司,一家比微软更早推出窗口操作系统的公司,几十年如一日的坚持奉行封闭路线,曾因封闭而节节失利,今天终于因适当开放(app store)而雄霸天下!
- iphone: 杀手级的创新产品
- IOS与app store:提供API的强大OS与开放的商业生态
Android
- 坚持开源路线:开放的社区文化、商业生态以及开源工具
- google的支持:google的示范与强大的资本支持
硬件、WEB服务器、移动OS、移动应用
下一个风口:物联网 2020
万物互联:Internet for things
- 缺少一个杀手级的创新产品及软件
- 缺少标准化的统一编程平台
- 如win32API、WEB标准、市场上不超过3个的OS
硬件、WEB服务器、嵌入OS、物联网应用
未来:万网归一 2020
write once,run everwhere and do anything!
- 统一的服务端:WEB API服务将是强有力的候选者
- 统一的客户端: WEB?native?
一种尝试:react.js
- 原本是Facebook为开发WEB应用而构建的一套界面API,现在有标准化的趋势,即编写一次界面,可以运行于多个平台!
界面领域的java?
- react.js: for web
- react native: for IOS or android
- react desktop: 如atom编辑器
- other: 机顶盒等
注意:react仅定义和实现界面,而非功能!功能由调用本地宿主API或远程服务API实现