[会员中心]    [设为主页][加入收藏][发布文章]  [中文繁體]
电脑
软件
手机
软件
网站
源码
文章
资料
    文 章 搜 索
[选项]
    推 荐 文 章       More...
华硕易电脑(ASUS Eee PC 1025C)驱动程序(Windows XP)安装参考(图) 华硕易电脑(ASUS Eee PC 1025C..
  先来段开场白:为了外出携..
Acronis True Image 使用说明 Acronis True Image 使用说明
  一款可以在Windows下使用..
Norton Ghost 使用详解 Norton Ghost 使用详解
一、分区备份   使用Ghost..
Windows 2000/XP/2003 系统封装参考及工具 Windows 2000/XP/2003 系统封..
  一直以来,安装操作系统和..
    阅 读 排 行
Intel GMA 3600 V1.15 for Windows XP 驱动程序配置过程图解 Intel GMA 3600 V1.15 for Window..
Intel GMA 3600 V1.15 for Window..
夏普(SHARP) AR-1808S 以 A4 尺寸纸张扫描 夏普(SHARP) AR-1808S 以 A4 尺..
  新装的夏普(SHARP) AR-1808S..
中国电信的家庭宽带设置“端口映射”及获取公网IP地址 中国电信的家庭宽带设置“端口映..
  现在有些家庭/店铺安装了视..
路由器串联(路由器的分支再接一个路由器) 路由器串联(路由器的分支再接一..
  问题:路由器的分支再接一个..
XHTML 中 a 标签 target 属性失效的解决方法 XHTML 中 a 标签 target 属性失..
  在HTML 4.01/XHTML 1.0/XHTML..
19寸液晶显示器更换显卡后没有分辨率 1440*900 19寸液晶显示器更换显卡后没有分..
  宿舍的电脑更换显卡后,驱动..
申请/注销/关闭腾讯QQ空间 申请/注销/关闭腾讯QQ空间
  申请/注销/关闭腾讯QQ空间网..
电脑机箱(主板)前面板 USB 数据线的接线参考(图) 电脑机箱(主板)前面板 USB 数据..
  一、概述   因为每个 US..
  文 章 信 息
    编程工具的回忆
[留言][评论][收藏]
[文章分类:电脑系统/网络/软件编程/编译][字体:隶体/楷体/宋体/黑体][字号:12px/14px/16px/18px][颜色:] 
  有许多朋友对我说他们对编程语言发展的历史很感兴趣,可惜的是这方面的资料少之之少。我本人也很喜欢看这方面的东西,李维的两篇作品《我的回忆和一些有趣的故事》以及《C++圣战》是我看到过的两篇非常好的文章。我想在这里以Basic、Pascal和C这三大编程语言在DOS/Windows平台上的发展为主题,把我所知道的和自己经历过的一些事情记录下来,同时尽量避免和李维的文章在内容上发生撞车的情形。我自己并没有很丰富的资料,也缺乏足够的阅历,不过片言只语亦可聊供一观。因为是靠着记忆写下的,并不敢保证所有内容都非常准确,如果您有发现任何谬误的地方,非常欢迎您的指正。


  曾经有一度Basic是DOS操作系统上最风光的编程语言,而那时候各种各样的Basic编译器也可以说得上是百花齐放,包括IBM BASICA, Microsoft GW-Basic以及后来的QuickBasic,True Basic,连Borland也推出了Turbo系列的Turbo Basic,好不热闹。虽然我们现在常说Basic有这样那样的缺陷,然而在当时Basic却是非常强力的系统开发语言,比如可以用INTERRUPT语句调用DOS/BIOS中断(中断调用在DOS程序中的地位就好比是Windows下的API函数一样),也可以和汇编模块接口,所以即便是开发底层系统问题也不大。Microsoft在MS-DOS操作系统中还附带了一个QBasic(又是M$一贯的捆绑销售手段),可以看作是Microsoft QuickBasic的简化版本,目的是方便用户完成一些简单的任务,从中也可以大致看到Basic语言当年在DOS开发中的地位。

  各个厂商的Basic编译器共同造就了Basic语言的繁荣景象,不过也带来了一些问题。其中最大的问题就是Basic语言缺乏一个统一的规范。当时的软件工程思想还停留在极为原始的时代,而各个厂商为了提高自己产品的竞争力,总是尽力向自己的Basic产品中加入各种各样的扩展,这些扩展没有任何标准,不可避免的造成了非常混乱的局面,也导致了移植性等诸多让人头疼的问题。这些问题到后来愈演愈烈,以至于Basic语言的发明人G。Kemeny和T。Kurty也觉得无法再坐视不理,终于有一天他们联名发表了一封措辞激烈的公开信,抨击他们所谓的“Street Basic”,认为这些“Street Basic”的所作所为是在污染Basic语言的纯洁性,并且是在把Basic程序员向坏的道路上引导。在和所抨击的对象中,首当其冲的就是IBM BASICA和Microsoft GW-Basic。两位大师所推崇的是自己所编写的True Basic,他们认为True Basic才是结构化良好、风格优美的Basic语言的代表。此信发表后引起了极大的反响,也促使许多程序员开始重新审视和反思Basic语言。遗憾的是,Basic并没有按照两位大师所设想的那样发展下去,在激烈的市场竞争中许多Basic编译器包括一度被看好的True Basic都相继倒下,再到后来,Borland推出的Turbo Pascal和Turbo C成功占领了大半开发工具市场,Basic语言也逐渐退居二线,从此宣告了Basic黄金时代的终结。

  现在Visual Basic基本上是Basic语言在Windows平台上唯一的代言人了,有趣的是Visual Basic自从出世起就存在着极大的争议,激进的语言纯化论者认为Visual Basic是个怪胎,而实用主义者则觉得无所谓;并且Visual Basic的效率问题也一直是为人所诟病的焦点,其实Visual Basic自从5.0版本以后在效率上已经有了极大的提高,再非昔日吴下阿蒙。然而,有关Visual Basic“低效、迟缓”的说法仍然广泛流传,而且一直是反对者攻击Visual Basic的主要罪状,这倒是一个颇为有趣的现象。

  有关Visual Basic是否“简单”的问题倒是可以多说两句。Microsoft原本推出Visual Basic的时候,为了强调它的简便易用而隐藏了很多细节,对于整日在SDK里面摸爬滚打的程序员来说,Visual Basic的出现着实让人眼前一亮,于是许多人欢呼:原来编程也可以这么简单。在这个时候,Visual Basic简直成了Windows程序员的苦海明灯。可是,随着Windows的不断发展,新技术和新功能层出不穷,而Visual Basic面对这些新问题的时候却显得有些捉襟见肘,“VB只不过是玩具语言”的讥评也在这时候出现了。Microsoft只好不断的向Visual Basic添加新关键字来扩展它的功能,可是这种做法多少有些削足适履的嫌疑,也引起了不少语言专家的批评。Visual Basic现在也变得非常复杂了,这在一定程度上可以说已经违背了Microsoft当初设计Visual Basic的初衷。

  我本人对于“XX语言简单易学”这种说法抱着很大的怀疑态度。现实问题本来就是纷繁复杂的,所以任何致力于解决现实问题的程序语言也不可能非常简单。所谓“简单易学”者,要么是宣传口号,要么这种语言本身的功能就有所限制。(如果说某一特定领域的专有语言简单易学,那倒不是没有可能,比如Javascript这一类的脚本语言比起一般的程序设计语言来说就要简单的多。不过,要是将相关的其他网络编程元素一齐考虑进去,则即使是脚本语言也不是那么简单的。)

  提到DOS平台上开发工具的历史就不能不提起Borland,正是这个公司推出的Turbo Pascal和Turbo C这两款神兵利器成功奠定了C和Pascal这两大编程语言在DOS/Windows平台上不可动摇的根基,也开创了Borland历史上最为意气风发的一段时期。Turbo Pascal和Turbo C也是世界上使用人数最多的编译器,以至于在很长一段时期内它们几乎成了Pascal和C的代名词。在Turbo Pascal和Turbo C中引进的集成开发环境(IDE)概念,至今仍然让我们受益良多。早期的Borland是一个高手云集的地方,在那里集中了大批技术精英,包括Microsoft在内的其他任何编译器厂商都没有像Borland那样的技术实力,所以Borland的名字在当时就是品质的保证。不过,经历了后来发展的曲折和动荡,许多最优秀的人才渐渐从Borland流失,他们中间一部分到了像Numega这样技术性很强的公司继续谋求发展,还有一部分则被Microsoft所挖走,可惜的是除了Anders Hejlsberg等少数顶尖人物之外,他们中绝大部分人都渐渐湮没无闻,想想也令人扼腕叹息。

  在这个时期另外一个值得一提的名字是Watcom C++,要说起Watcom C++的兴起还不得不先说一点题外的话。我们知道Intel x86系列机器的基本地址定位是采用segment:offset这样的表达方法,不过这种方法其实是有许多弊端的,最典型的就是臭名卓著的“64k”限制,也就是说:任何代码段、数据段或者堆栈段的大小不得超过64k;任何动态分配的内存大小也不得超过64k。如果要跨段调用数据或者代码的话,又会引一连串难缠的问题。同时,这种内存寻址方式也限制了总共能够存取的内存大小不能超过1M,而实际上在DOS操作系统中,低端1M内存空间的高位(384k)要为设备驱动程序和ROM BIOS保留,所以真正留给程序的内存不足640K,要在这么有限的空间里编写程序简直就是带着镣铐跳舞。为了让程序员能够存取1M以上的内存,当时的多个厂商(包括IBM、Microsoft、Lotus等等)联合制定了一个扩充内存管理规范,这个规范的原理是将1M以上的内存划分成多个页面,程序员需要的时候可以换入指定的页面,不需要的时候再换出。(是不是很象Windows下面虚拟内存的概念?)不过这个规范实在是过于原始,原因之一是换入换出的操作步骤太过繁琐,另外,要程序员自己管理所有页面的分配和置换...呃,怎么说好呢...简直就不是人干的活。相应的,DOS下面的内存寻址也是麻烦的不得了,比如说光是指针就有near/far/huge模式的区别,而程序的内存模式也分成tiny/small/medium/large/huge/compact等等许多级别,如果稍微不注意这些地方的话,那DOS程序员要面对的就很可能是一场噩梦。(我就曾经有一段时间,被扩充内存、扩展内存、上位内存、高位内存、UMA、HMA、EMS、XMS这些看似相近,实际上大相径庭的名词弄得昏头转向不辨东西。)


【本文分页】[1] [2] [3] 
文章作者:未知  整理日期:2011-01-06
[文章浏览:][打印文章][发送文章]
上下篇章
·中华民族 2008-09-12
·Acronis True Image 使用说明 2011-01-26
·淘宝总部 卖家拉横幅抗议 2011-10-14
·《钓鱼岛是中国的固有领土》白皮书 2012-09-25
相关文章
·《诚斋诗话》原文 2010-12-31
·《练兵实纪》卷一 练伍法第一 2010-12-30
·《练兵实纪》卷二 练胆气第二 2010-12-30
·《练兵实纪》卷四 练手足第四 2010-12-30
·《练兵实纪》卷五 练营阵第五(场操) 2010-12-30
·《练兵实纪》卷六 练营阵第六(行营) 2010-12-30
·《练兵实纪》卷七 练营阵第七(野营) 2010-12-30
·《练兵实纪》卷八 练营阵第八(战略) 2010-12-30
·《三字经》注解 2007-07-31
·Windows 2000/XP/2003 系统封装参考及工具 2009-06-18
阅读说明
·本站大部分文章转载于网络,如有侵权请留言告知,本站即做删除处理。
·本站法律法规类文章转载自[中国政府网(www.org.cn)],相关法律法规如有修订,请浏览[中国政府网]网站。
·本站转载的文章,不为其有效性,实效性,安全性,可用性等做保证。
·如果有什么问题,或者意见建议,请联系[网站管理员]
原“浪人文章”网站改名“老若尔文章站”,域名:article.lre.cn
本站使用【啊估文章站】网站系统    [联系网站管理员]         闽ICP备08009617号