C语言的演变史
1972 – C语言的先驱——B语言,被贝尔实验室开发。B语言是一个很快速的,容易维护的,而且对于从系统到应用开发是很好用的。设计这门语言的整个团队被马上解雇了,因为他们干了一件和电话通讯不相干的事情。最后这个项目转给了 Dennis Ritchie。他把这个语言变得不容易理解,很难维护,而且,只能用于系统方面的编程。而且,他还设计了一个指针系统,保让每一个程序都超过500行,并可以使用操作系统的指针。
1982 – 大家发现有97% 的C程序调用产生了“缓冲区溢出”问题。于是,C 程序员们开始意识到,就算是不必要也必需要初始化变量。然而,强制性的变量初始化这个明智的决定,很难影响了当时已经写成了的97%的C程序,所以结果什么也没有发生。
1984 – 操作系统出现了“错误指针”的问题数量开始戏剧性地增涨。
1985 – 一系列的让C语言有面向对象能力的解决方法出现了,一个叫“C With Classes”正准备商业化。然而,大家觉得名字“C With Classes”太清楚和容易被理解了,所以,最终的商业版本叫做—— C++。
1986 – C语言成为最流行的语句,其被很多业界分析师推荐于业务应用。他们向全世界宣称——由C语言写成的应用将可以运行在很多不同的平台上的,是跨平台的。目前看来,这些众多的分析者在当时有可能是因为某种迷幻而导致其大脑被所蛊惑了。
1988 – 业界的这些分析家们因为“摇头丸”吃完了。所以,在他们的幻觉过去以后,他们注意到,使用C语言来开发业务应用会增加5倍以上的开发时间,并且程序也不具备可移植性。他们开始停止向大众推荐使用C语言来开发业务应用了,只能很少一部服用可卡因的人开始转向推荐大众使用C++语言写业务应用程序,他们说,“那是面向对象的,所以,代码是很容易重用的”。
1990 – 在这个时候,所有的C编译器都转到了C++编译器上。但是,因为大多数的C++程序员并没有使用C++中那些面向对象的语言特性。也就是说,在实际上来说,那种浮肿的代码结构加上操作系统指针的代码被一种叫面向对象的编译器编译。
1990 – 在雇佣了一些转向“吸胶毒”的分析师后,Sun决定要创造一种叫Oak的语言,这种语言主要用于电视的机顶盒。因为当时几乎所有的程序员的DNA中都有C语的基因,所以,这个语言向C和C++中大量地借鉴了很多它们的语法和编程思路。然而,机顶盒上没有操作系统,也就不存在指针,所以,他们把指针从这门语言里给去掉了。
1994 – Sun公司里的某个人意识到为一个机顶盒开发一个语言是多么愚蠢的事情。于是,这个语言更名为Java,并且为其注入了“Internet”的特征,从而让其成为一个真正可以被移植的语言。其市场营销上相当成功,而那时有3%的业内人士开始明白什么是Internet,同时,那些精神不正常的分析师们还在不停地嗑药并向大众鼓吹他们的神话——“跨平台移植性”。
1995 – Sun 向业界的分析师们提供了免费蘑菇迷魂汤,导致那些分析师在喝下汤后,马上开始写下“Java是一门未来的可移植的和Ineternet高度可集成的语言”。
1996 中 – 17,468,972 篇文章出现,描述了Java是怎么一门未来的语言。这也是Java Applet开始进入Web页的时代。
1996 末– 程序员开始使用Java applet创建他们的Web页面,然后他们开始因为挫折和沮丧开始集体自杀。此时,那些分析师开始增大蘑菇迷魂汤的剂量。
1997 – 因为接受了产生幻觉分析师的建议,Corel 决定重写他们的应用,包括 WordPerfect,当然,是用Java写的。最终的结果是,这是迄今为止比“打字机”还慢的字处理软件。
1998 – 在意识到applet已在快速枯萎,Sun又一次的重新配置了Java,这次,他们叫Severlet,这是一个服务器的程序语言。这个设计在抄袭了Microsoft Transaction Server ,并且,他们说服所有人这个设计是他们创造的。
1999 – 业内那些喝多了的分析师们用一种咆哮的方式向大众介绍了Java 2 Enterprise Edition 。 21,499,512 文章被写出来。但是,实际上并没有人使用,因为J2EE太不成熟,而又太贵了。
2000 – J2EE 最终还是运转起来了(一点点)。而且,所有的Java卖主们开始准备向其砸钱,与此同时,Microsoft 宣布了.NET,这是一个包括了所有的J2EE功能但没那么贵的产品。实际上来说, Microsoft 决定让Windows的用户免费使用.NET 。 Scott McNealy 很愤怒,其对Microsoft开展了相关的法律诉讼。
.NET 包括了最新的C家族语言,叫C#,发音是“C-pound”,继承最家族的传统,使用着一个愚蠢的名字。
2001 – Microsoft 的市场部意识到,在市面上没有人谈论他们的产品,他们找了其中一个程序员一起吃中饭,才发现,他们把C#叫做 “C sharp”。
2002 – C# 成为 Microsoft .NET的一部分。 C++ 的开发者在 Microsoft 平台上为 “managed code”而欢呼雀跃,也就是说,他们最终得到了一个内存自动管理的功能,这一功能正是1991年的Visual Basic 及1995年的Java所创建的 。
copyright (C) 1996-2006 by Billy S. Hollis, originally posted on dotnetmasters.com 13 January 2006
文章:来源
(转载本站文章请注明作者和出处 宝酷 – sou-ip ,请勿用于任何商业用途)
《C语言的演变史》的相关评论
看起来像 .net & c# 的软文
看来,你幽默感不强。这篇文章很明显是一个幽默的文章。作者把C/C++/Java打击到不行,然后把C#提到一个很高的高度……,呵呵。文中一再强调那些“嗑药的分析师”,而且,文中最后描述世界又一次为C#疯狂,呵呵。你真的以为是软文?
有吸毒那些人才能发明新的语言哦
我要不要去搞点LSD磕磕
哈哈,笑死我了。
‘一个叫“C With Classes”正准备商业化。然而,大家觉得名字“C With Classes”太清楚和容易被理解了,所以,最终的商业版本叫做—— C++’ 这一句真是极品…
乍一看,还以为作者在”愤青”呢。
问一句耗子,copyright (C) 1996-2006这里的年份代表着什么?
再问一句,你的.cn没有备案吗?记得最初是.com的呀。
@ivan
在这样一个国度,不可能不备啊,以前的com域名不好记就没用了(做了301转向)。
努力的奋斗,有用吗???
觉得这是 c# 软文的你可能并不了解 c#……
当然,以后必然会有更好的语言产生
这不是软件文,是高级黑文……全黑了
我猜测c#取名字的时候,应该是想叫做c++++,以表示比c++更好,最后把四个+堆叠成了#
推介看看原文[ref1],读起来更有趣。
比如”1982 – … 然而,强制性的变量初始化这个明智的决定,很难影响了当时已经写成了的97%的C程序,所以结果什么也没有发生。”
原文是:
“However, since enforcing sensible variable initialization would break 97% of all C programs in existence, nothing is done about it.”
即:
然而,合理的变量初始化会破坏97%的现有C程序,所以并没有强制实行。
暗指许多C程序依赖未初始化(“天然”初始化)变量的值。
再比如”2002 – …也就是说,他们最终得到了一个内存自动管理的功能,这一功能正是1991年的Visual Basic 及1995年的Java所创建的 。”
原文是:
“… which means they finally receive the same automatic memory management features that Visual Basic has had since 1991 and Java has had since 1995.”
即:
也就是说,他们(C++开发者)终于有了自动内存管理的功能,而这一功能 Visual Basic 和 Java 分别在1991年和1995年就实现了。
后面的翻译读起来应该就很明显了,压根不是C# 的软文,反而是讽刺C#在造轮子,而且仿造的是磕药的轮子。
[1] https://www.dotnetmasters.com/HistoryOfCFamily.htm,似乎已不可访问,需要用互联网档案馆查看。