Home About us Products Services Contact us Bookmark
:: wikimiki.org ::
C++

C++

-- C++,这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”, 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程式程序设计数据抽象面向对象程序设计泛型程序设计等多种程序设计风格。 本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数运算符重载多重继承模板异常RTTI名字空间逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 14882-1998。遗憾的是,由于C++语言过于复杂,以及他经历了长年的演变,直到现在(2004年)只有少数几个编译器完全符合这个标准。 另外,就目前学习C++而言,可以认为他是一门独立的语言;他并不依赖C语言,我们可以完全不学C语言,而直接学习C++。根据《C++编程思想》(Thinking in C++)一书所评述的,C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C++ 完全可以取代C语言。 C++语言发展大概可以分为三个阶段:第一阶段从80年代1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于JavaC#等语言的出现和硬件价格的大规模下降,C++开始逐渐退出用户级程序的开发领域,转向系统级别的程序开发;第三阶段从2000年至今,由于以LokiMPL等程序库为代表的产生式编程模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。

C++的Hello World程序

下面这个程序显示“Hello, world!”然后结束运行: #include 'using namespace std; 'int main()

C++程序员的数量

分析机构EvansData定期对开发人员展开调查,其调查结果与Stroustrup提出的C++正在扩张的说法相违背。EvansData的数据显示,以C++为工具的开发人员在整个开发界所占的比例由1998年春天的76%下降至2004年秋的46%。 Forrester最新的调查显示,C++、微软VisualBasic和Java是众多公司产品体系的首选语言。对100家公司的调查显示,C/C++、VisualBasic和Java在产品体系中的使用比例分别是59%、61%和66%。
- http://tech.sina.com.cn/it/2005-04-25/1042592385.shtml
- http://www.yesky.com/SoftChannel/72343471356116992/20050425/1940294.shtml

参考


- C++托管扩展
- 计算机科学课程列表

相关网站


- [http://www.research.att.com/~bs/homepage.html Bjarne Stroustrup's homepage]
- [http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html Thinking in C++ 2nd Edition by Bruce Eckel] ja:C Plus Plus ko:C 플러스 플러스 simple:C plus plus

程序设计语言

程序设计语言,是一组用来定义计算机程序的语法规则。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。 程序设计语言原本是被设计成专门使用在计算机上的,但它们也可以用来定义算法或者数据结构。正是因为如此,程序员才会试图使程序代码更容易阅读。 设计语言往往使程序员能够比使用机器语言更准确地表达他们所想表达的目的。对那些从事计算机科学的人来说,懂得程序设计语言是十分重要的,因为在当今所有的计算都需要程序设计语言才能完成。 在过去的几十年间,大量的程序设计语言被发明、被取代、被修改或组合在一起。尽管人们多次试图创造一种通用的程序设计语言,却没有一次尝试是成功的。之所以有那么多种不同的编程语言存在的原因是,编写程序的初衷其实也各不相同;新手与老手之间技术的差距非常大,而有许多语言并对新手来说太难学;还有,不同程序之间的运行成本()各不相同。 有许多用于特殊用途的语言,只在特殊情况下使用。例如,PHP专门用来显示网页Perl更适合文本处理;C语言被广泛用于操作系统编译器的开发(所谓的系统编程)。 高级程序设计语言(也称高级语言)的出现使得计算机程序设计语言不再过度地倚赖某种特定的机器或环境。这是因为高级语言在不同的平台上会被编译成不同的机器语言,而不是直接被机器执行。最早出现的编程语言之一FORTRAN的一个主要目标,就是实现平台独立。 虽然大多数的语言可以既被编译()又被解译(),但大多数只在一种情况下能够良好运行。在一些编程系统中,程序要经过几个阶段的编译,一般而言,后阶段的编译往往更接近机器语言。这种常用的使用技巧最早在1960年代末用于BCPL,编译程序先编译一个叫做“0代码”的转换程序(),然后再使用虚拟器转换到可以运行于机器上的真实代码。这种成功的技巧之后又用于Pascal和P-code,以及Smalltalk和二进制码,虽然在很多时候,中间过渡的代码往往是解译,而不是编译的。 如果所使用的翻译的机制是将所要翻译的程序代码作为一个整体翻译,并之后运行内部格式,那么这个翻译过程就被成为编译。因此,一个编译器是一个将人可阅读的程序文本(叫做源代码)作为输入的数据,然后输出可执行文件()。所输出的可执行文件可以是机器语言,由计算机的中央处理器直接运行,或者是某种模拟器的二进制代码。 如果程序代码是在运行时才即时翻译,那么这种翻译机制就被称作解译。经解译的程序运行速度往往比编译的程序慢,但往往更具灵活性,因为它们能够与执行环境互相作用。参见解译语言

特点

每一种程序设计语言可以被看作是一套包含语法词汇含义的正式规范。 这些规范通常包括:
- 数据和数据结构
- 指令及流程控制
- 引用机制和重用
- 设计哲学 大多数被广泛使用或经久不衰的语言,拥有负责标准化的组织,经常会晤来创造及发布该语言的正式定义,并讨论扩展或贯彻现有的定义。

数据和数据结构

现代计算机内部的数据都只以二元方式储存,即开-关模式()。现实世界中代表信息的各种数据,例如名字、银行账号、度量以及同样低端的二元数据,都经由程序设计语言整理,成为高端的概念。 一个程序中专门处理数据的那个系统被称为程序语言的型态系统();对型态系统的研究和设计被称为型态理论()。语言可以被分为静态型态系统(),例如C++Java,和动态型态系统(),例如Lisp,JavaScript,Tcl和Prolog。前者可被进一步分为包含宣告型态()的语言,即每一个变量和函数的型态都清楚地宣告,或type-inferred语言(例如MUMPS,ML)。 大多数语言还能够在内置的型态基础上组合出复杂的数据结构型态(使用数组,列表,堆栈,文件等等)。面向对象语言(,又译作“物件导向语言”)允许程序员定义新的数据型态,即“对象”或“物件”(),以及运行于该对象的函数()和方法()。 除了何时以及如何确定表达式和型态的联系,另外一个重要的问题就是语言到底定义了哪些型态,以及允许哪些型态作为表达式的值。诸如C编程语言之类的低端语言允许程序命名内存位置、内存区域以及编译时的常量;ANSI C甚至允许表达式返回结构值()。功能性的语言一般允许变量直接使用运行时计算出的值,而不是指出该值可能储存的内存地址。

指令及流程控制

一旦数据被确定,机器必须被告知如何对这些数据进行处理。较简单的指令可以使用关键字或定义好的语法结构来完成。不同的语言利用序列系统来取得或组合这些语句。除此之外,一个语言中的其他指令也可以用来控制处理的过程(例如分支、循环等)。

引用机制和重用

引用的中心思想是必须有一种间接设计储存空间的方法。最常见的方法是通过命名变量。根据不同的语言,进一步的引用可以包括指向其他储存空间的指针。还有一种类似的方法就是命名一组指令。大多数程序设计语言使用宏调用、过程调用或函数调用。使用这些代替的名字能让程序更灵活,并更具重用性。

程序设计语言的历史

二十世纪四十年代当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,唯一想到利用程序设计语言来解决问题的人是德国工程师楚泽()。 几十年后,计算机的价格大幅度下跌,而计算机程序也越来越复杂。也就是说,开发时间已经远比运行时间来得宝贵。 于是,新的集成、可视的开发环境越来越流行。它们减少了所付出的时间、金钱(以及脑细胞)。只要轻敲几个键,一整段代码就可以使用了。这也得益于可以重用的程序代码库。

常见的程序设计语言


- APLA+J
- Ada
- 汇编语言
- AWK
- BasicFortran
- VBScript
- Brainfuck
- CC++
- C#
- Clipper
- COBOL
- dBase
- PASCALDelphi
- Forth
- FoxPro
- F#
- Fava
- IDL
- Java
- JavaScript
- J#
- LISP
- LOGO
- Modula
- Perl
- PHP
- PL/I
- Prolog
- Python
- Ruby
- Scheme
- Smalltalk
- SQL
- Tcl/Tk
- Visual Basic
- Visual FoxPro
- XML

参见


- 计算机科学课程列表
- 程序设计语言列表
- 编译器
- Hello World程序
- 脚本语言
- 維基程序員 category:人工語言 ja:プログラミング言語

20世纪

1901年2000年的这一段期间被稱為20世纪。這段時間剛離我們而去,其最令人深刻的記憶是前所未見的全球型戰爭與軍事對峙(第二次世界大戰冷戰)以及知識爆炸。在這世紀,影響人們最深遠的是共產主義資本主義的挑戰。雖然前者終歸失敗,卻促使後者在經濟社會上多重的修正與省思。此外,本世紀的殖民主義發展到極致,卻在1960年代後迅速瓦解。而上世紀廣佈歐洲的民族主義風潮傳到亞洲非洲大洋洲,卻意外導致恐怖主義在全球盛行,尤其透過網路等資訊媒體,造成全球性的恐慌,並使下個世紀初蒙上恐懼的陰影。而知識爆炸使更多人能接受知識,並質疑與檢討各學科的發展和研究。 在藝術上,以美國為發源地的大眾文化成為最為人所知的事物。尤其透過電視廣播電影,幾乎全球各地或多或少都受到其影響,甚至視其為“進步”、“便利”和“文明”的 象徵。但另一方面,各地的在地文化也利用這些科技媒體宣揚散播於本國或鄰近地區,這種現象尤以日本法國最為明顯。 此外,本世紀是人類史上流動速率最頻繁的時刻:為了勞動需求、政治庇護與更好的生活品質,大量的華人遷到北美與東南亞,許多土耳其人北非地區人民移居西歐,不少的西班牙裔透過合法或非法的方式進入美國。這些人口的流動打破過去以種族劃分的地理概念,卻也造成許多工業國家內部的社會問題。
- 年代 - 世纪 - 千年

歷史

東亞

南亞

中亞·中東

歐洲

北美

中南美

非洲

大洋洲

重要事件、发展与成就

科学技术

参看20世纪的科学成就
- 汽车工业以及其他工业开始使用流水装配线。这种大规模的生产使商品价格降低,产出更多。汽车也因此成为重要的交通工具。
- 航天器的发明让世界变小了。宇航器则带领人们向宇宙迈进,对宇宙进行的探索让我们更了解地球以外的世界。
- 电台电视电影等大众传媒的普及为人类带来巨大影响,它们娱乐大众,同样可以传播各种政治信息。
- 杀虫剂化学肥料的发明大大提高了农业产值,也带来的新的环境污染
- 在基础物理学领域内的重大发现,例如相对论量子物理学为人类带来了核武器核动力激光的发明。
- 宇宙学取得巨大进展,“大爆炸”理论被创立,人类开始研究宇宙的起源。
- 洗衣机空调冰箱电视机等电器的发明大大提高了人们的生活品质。
- 90年代互联网的兴起,较大幅度的影响了人类的生活。

战争与政治


- 德国法国英国美国俄国等几乎所有重要的西方工业化国家卷入了第一次世界大战。这场战争的起因之一就是欧洲高涨的民族主义情绪。战争也在东欧建立了许多新国家。
- 第一次世界大战所带来的经济以及政治因素导致了法西斯主义在欧洲的兴起和随后的第二次世界大战。世界上几乎所有国家都被卷入了这场大浩劫。第二次世界大战中平民伤亡惨重,空袭大屠杀原子弹等都造成大批平民的死伤。德国针对犹太人的史无前例的种族灭绝据称造成600万犹太人的死亡,日本军国主义对亚洲国家的侵略造成了约2000万人死亡,然而日本始终不愿面对他国造成的创伤。
- 俄国国内对腐朽的沙俄政权的不满导致了社会主义在俄国的兴起。二战之后,社会主义国家苏联成为政治、军事上的强国。共产主义思潮也向全球其他地区蔓延:中国东欧古巴中南半島地区相继成为社会主义国家。这也是冷战开始的主要原因。
- 20世纪90年代初共产主义阵营的瓦解使美国成为仅存的超级大国。冷战也导致了苏联南斯拉夫捷克斯洛伐克等社会主义国家的解体。
- 二战之后在联合国的框架下,国际合作增多。欧盟的成立以及欧元的使用标志着欧洲一体化进程的加快。
- 殖民主义的终结,在非洲亚洲建立了许多个独立的新国家。这些国家在冷战中往往与美国或苏联结盟,以求生存。
- 犹太人终于在祖先的土地上建立了自己的国家以色列。不过他们与阿拉伯人的冲突始终未能解决,并有不断扩大的趋势。
- 各种形式的恐怖主义极端主义在20世纪末期兴起,世贸大厦被撞以后这一系列问题越发引起了人们的注意。

文化娱乐


- 电影音乐媒体对时尚潮流以及生活的方方面面都有重大影响。很多电影、音乐等娱乐产品都来自美国,尤其是好莱坞的电影在世界各地广为传播,因此美国文化得以在全球发展。
- 最早在美国欧洲开始的女权运动愈演愈烈,女性取得更高地位。
- 现代艺术更多样化,抽象派印象派立体主义行为艺术等越来越受到传统主流艺术界的重视。
- 汽车大大提升了西方社会的运输能力,很多城市的规划中,汽车是主要的交通工具。汽车(尤其是私人汽车)的普及程度已经成为现代社会的标志。
- 体育不再是富人的享乐,而越来越成为社会的重要组成部分。收看体育赛事、参与体育活动已经成为普通人的重要娱乐项目之一。

社會與經濟

佛洛伊德發表《夢的解析》。

疾病与医学


- 人类在本世纪依然面对很多无法治愈的疾病。1918年1919年西班牙爆发的流行性感冒导致了2500万人的死亡。而爱滋病依然无法治愈,在很多国家,特别是发展中国家造成无数人的死亡。
- 医学的进步,如抗生素的发明,使人类免受更多疾病的困扰。避孕措施的广泛使用有效降低了人口增长,器官移植则挽救了许许多多病人的生命。DNA的发现使克隆(生物體複製)和基因工程的发展成为可能。

环境与自然资源


- 石油作为运输工具的燃料和塑料的原材料,在工业中广泛使用,石油成为宝贵的资源。中东,这个石油储量最多的地区,在20世纪后50年成为军事外交的角力场。
- 天然能源的过度使用导致了严重的环境破坏,而空气污染则是全球温室效应臭氧层破坏的元凶。森林的滥砍滥伐还使生物物种数量大幅度减少。随着开采科技的发展,人类在20世纪最后几年所能开采的天然资源要比20世纪初多初许多。

宗教與哲學

重要人物


- 列宁十月革命的发动者,苏联的奠基人;
- 希特勒纳粹德国元首第二次世界大战的主要发动者之一,后因德国战败而自杀;
- 罗斯福美国总统,带领美国走出经济危机并赢得第二次世界大战
- 邱吉尔英国首相,带领英国赢得第二次世界大战
- 爱因斯坦相对论的创始人;
- 斯大林苏联领导人,带领苏联成为一个超级大国并赢得苏德战争
- 毛泽东中华人民共和国领导人,带领中国共产党获得中国大陆的政权,使中国大陆摆脱了外国势力的影响,并发动多次中国政治运动

世界领导人


- 非洲
  - 曼德拉南非
- 美洲
  - 伍德羅·威爾遜美國
  - 富兰克林·罗斯福美国
  - 哈利·S·杜鲁门美国
  - 约翰·肯尼迪美国
  - 理查德·尼克松美国
  - 隆納·雷根美國
  - 乔治·W·布什美国
  - 卡斯特罗古巴
  - 皮诺切特智利
- 亚洲
  - 毛泽东中華人民共和國
  - 邓小平中華人民共和國
  - 江泽民中華人民共和國
  - 胡锦涛中華人民共和國
  - 甘地印度
  - 尼赫鲁印度
  - 胡志明越南
  - 孫中山中華民國
  - 蔣中正中華民國
  - 金日成北韓
  - 蘇卡諾印尼
- 欧洲
  - 尼尔·张伯伦英国
  - 温斯顿·邱吉尔英国
  - 阿道夫·希特勒德国
  - 威廉二世德国
  - 墨索里尼意大利
  - 夏爾·戴高樂法國
  - 弗朗西斯科·佛朗哥西班牙
  - 铁托南斯拉夫
- 西亞
  - 大卫·本-古里安以色列
  - 安瓦尔·萨达特埃及
  - 拉宾以色列
  - 阿拉法特巴勒斯坦
  - 萨达姆·候塞因伊拉克
- 俄罗斯苏联
  - 列宁
  - 史達林
  - 赫鲁雪夫
  - 戈巴契夫
  - 葉爾欽
  - 普京

科学家


- 阿尔伯特·爱因斯坦
- 海森堡
- 斯蒂芬·霍金
- 玻尔
- 伽莫夫
- 爱迪生
- 华罗庚

军事领袖


- 艾森豪威尔
- 巴顿
- 埃尔温·隆美尔
- 曼施坦因
- 朱可夫
- 麦克阿瑟
- 蒙哥马利
- 尼米兹
- 马歇尔
- 彭德怀

艺术家


- 凡高
- 达利
- 查理·卓别林
- 齐白石
- 张大千
- 毕加索

文学家


- 胡适
- 鲁迅
- 泰戈尔
- 马克·吐温
- 羅曼·羅蘭
- 葉慈
- 海明威
- 聶魯達
- 川端康成
- 索忍尼辛
- 巴金
- 冰心

宗教家及社會運動者


- 若望保祿二世
- 德蕾莎修女
- 馬丁·路德·金
- 十四世達賴喇嘛
- 黛安娜王妃 ja:20世紀 ko:20세기 nb:20. århundre simple:20th century

1980年代

世纪 19世纪 | 20世纪 | 21世纪
年代 1960年代 1970年代 | 1980年代 | 1990年代 2000年代
份: 1980年 1981年 1982年 1983年 1984年 1985年 1986年 1987年 1988年 1989年

大事记

出生

逝世

---- Category:20世纪 ja:1980年代 ko:1980년대 simple:1980s zh-min-nan:1980 nî-tāi

C语言

C,是一种通用的程序设计语言,它主要用来进行系统程序设计。具有高效、灵活、功能丰富、表达力强和移植性好等的特点,在程序员中备受青睐。 C语言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)和肯·汤普逊(Ken Thompson)于1970年研制出的B语言的基础上发展和完善起来的。C语言可以广泛应用于不同的操作系统,例如UNIXMS-DOSMicrosoft WindowsLinux等。C语言是一种面向过程的语言,同时具有高级语言汇编语言的优点。在C语言的基础上发展起来的有支持多种程序设计风格C++语言,网络上广泛使用的JavaJavaScript,微软的C#等。 1983年美国国家标准委员会(ANSI)对C语言进行了标准化,于1983年颁布了第一个C语言标准草案(83 ANSI C),后来于1987年又颁布了另一个C语言标准草案(87 ANSI C)。最新的C语言标准是在1999年颁布并在2000年3月被ANSI采用的 C99 ,但由于未得到主流编译器厂家的支持,直到2004年C99 并未被广泛使用,增加了若干新特性后 C99 已经逐渐让C语言和C++分道扬镳。

C语言的特色


- C语言是系统程序语言
- C语言保留了低级语言的特性,例如涉及内存的指针。
- 使用了预处理机制,使得程序里可以通过包含例如宏处理的方式来处理源程序。 C语言的不足可以由C语言发展而来的更新的编程语言改进。Cyclone语言的拥有提防对于内存错误的特性。C++和Objective C提供了用于面向对象的编程结构。Java和C#增加了面向对象的结构使得对内存的管理自动化。

C語言的主要特性


- C語言保留了低階語言的特性,例如涉及記憶體的指针。
- C語言通過參數在函數裏傳遞數值。
- 使用了預處理機制,使得程式裏可以通過包含例如巨集處理的方式來處理根源程式
- C語言提供了一套標準庫,這些庫裏提供了十分有用的功能。 但是並不是所有的這些特性都是有效的。例如,預處理通常作爲一個獨立的程式被處理,這使得预處理的程式並不一定被完全編譯。 雖然C是高階語言,但是它同時擁有一些組合語言的特性,對其他的語言來說這是接近低階語言的特點。例如,在C語言裏,程式師可以對電腦記憶體進行管理。在默認的情況下,C語言不會對陣列的範圍進行檢查,也就是說即使陣列越界,C語言也不會作出錯誤提示。對電腦記憶體的管理使得程式员可以编出更快捷、更有效的程式,這對於設備驅動程式來說尤爲重要。但是這也使得程式容易産生令人討厭的“臭蟲”,例如緩衝器溢出錯誤。然而,這些錯誤可以由一些工具來避免。 C語言的不足可以由从C語言發展而來的更新的編程語言改進。Cyclone語言的擁有提防對於記憶體錯誤的特性。C++和Objective C提供了用於面向物件的編程結構。Java和C#增加了面向物件的結構使得對記憶體的管理自動化。 近年来,由于Java的编译技术有了极大的提高,采取许多C和C++不能采用的动态编译技术,使得Java的性能日益突出。

C语言的历史

C语言的第一次发展在1969年到1973年之间。C之所以被称为C是因为C语言的很多特性是由一种更早的被称为B语言的编程语言中发展而来的。 到了1973年,C语言已经可以用来编写Unix操作系统的内核。这是第一次用C语言来编写操作系统的内核。丹尼斯·里奇和Brian Kernighan在1978年出版了《C程序设计语言》(The C Programming Language,经常简称为“白皮书”或“K&R”)。 1980年以后,贝尔实验室使得C变得更为广泛的流行,使得C一度成为了操作系统和应用程序编程的首选。甚至到今天,它仍被广泛用于编写操作系统以及作为广泛的计算机教育的语言。但目前Java程序员的数量已经超过了C程序员和C++程序员的总和。2005年4月,C++之父称C++用户超过300万。   分析机构EvansData定期对开发人员展开调查,其调查结果与Stroustrup提出的C++正在扩张的说法相违背。EvansData的数据显示,以C++为工具的开发人员在整个开发界所占的比例由1998年春天的76%下降至2004年秋的46%。 Forrester最新的调查显示,C++、微软VisualBasic和Java是众多公司产品体系的首选语言。对100家公司的调查显示,C/C++、VisualBasic和Java在产品体系中的使用比例分别是59%、61%和66%。 http://tech.sina.com.cn/it/2005-04-25/1042592385.shtml http://www.yesky.com/SoftChannel/72343471356116992/20050425/1940294.shtml 而据路透社2004年6月报道,java程序员在那时就已经超过了420万,java程序员在一年内增长了120万。按最保守的估计,现在java程序员也有500万 http://news.ccidnet.com/pub/article/c1366_a125565_p1.html 1980年代晚期,布贾尼·斯特劳斯特卢普贝尔实验室为C语言添加了面向对象的特性.这种语言成为了C++。C++现在广泛应用的在Microsoft Windows下运行的商业应用程序的编制,然而C仍然是UNIX世界的热门编程语言。

C语言的版本

K&R C

C不断的从它的第一版本进行改进。在1978年,Kernighan和里奇的《C程序设计语言》第一版出版。它介绍了下面的有关C语言版本的特性:
- struct数据类型
- long int数据类型
- unsigned int数据类型
- 把运算符=+改为+=,依次类推。因为=+使得编译器混淆。 在以后的几年里,《C程序设计语言》一直被广泛作为C语言事实上的规范。在这本书中,C语言通常被表述成“K&R C”。(第二版的包括了ANSI C标准) K&R C通常被作为C编译器所支持的最基本的C语言部分。虽然现在的编译器并不一定都完全遵循ANSI标准,但K&R C作为C语言的最低要求仍然要编程人员掌握。但是无论怎样,现在使用广泛的C语言版本都已经与K&R C相距甚远了,因为这些编译器都使用ANSI C标准。 //....

ANSI C和ISO C

1989年,C语言被ANSI标准化。(ANSI X3.159-1989)。标准化的一个目的是扩展K&R C。这个标准包括了一些新的特性。在K&R出版后,一些新的特征被“非官方”的加到C语言中。
- void函数
- 函数返回structunion类型
- void
-
数据类型 在ANSI标准化自己的过程中,一些新的特征被加了进去。ANSI也标准了函数库。ANSI C标准被ISO国际标准化组织)采纳成为ISO 9899。ISO的第一个版本文件在1990年出版。

C99

在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,尽管C++继续在改进。(实际上,Normative Amendment1在1995年已经开发了一个新的C语言版本。但是这个版本很少为人所知。)标准在90年代才经历了改进,这就是ISO9899:1999(1999年出版)。这个版本就是通常提及的C99。它被ANSI于2000年三月采用。 在C99中包括的特性有:
- 对编译器限制增加了,比如源程序每行要求至少支持到 4095 字节,变量名函数名的要求支持到 63 字节 (extern 要求支持到 31)
- 预处理增强了。例如:
  - 支持取参数 #define Macro(...) __VA_ARGS__
  - 使用的时候,参数如果不写,里用 #,## 这样的东西会扩展成空串。(以前会出错的)
  - 支持 // 行注释(这个特性实际上在C89的很多编译器上已经被支持了)
- 增加了新关键字 restrict, inline, _Complex, _Imaginary, _Bool
  - 支持 long long, long double _Complex, float _Complex 这样的类型
- 支持 <: :> <% %> %: %:%: ,等等奇怪的符号替代,D&E 里提过这个
- 支持了不定长的数组。数组的长度就可以用变量了。声明类型的时候呢,就用 int a[
- ] 这样的写法。不过考虑到效率和实现,这玩意并不是一个新类型。所以就不能用在全局里,或者 struct union 里面,如果你用了这样的东西,goto 语句就受限制了。
- 变量声明不必放在语句块的开头,for 语句提倡这么写 for(int i=0;i<100;++i) 就是说,int i 的声明放在里面,i 只在 for 里面有效。
- 当一个类似结构的东西需要临时构造的时候,可以用 (type_name) 这有点像 C++ 的构造函数
- 初始化结构的时候现在可以这样写: struct hehe[] = ; struct hehe = // 3,4 是对 .c,.d 赋值的
- 字符串里面,\u 支持 unicode 的字符
- 支持 16 进制的浮点数的描述
- 所以 printf scanf 的格式化串多支持了 ll / LL (VC6 里用的 I64) 对应新的 long long 类型。
- 浮点数的内部数据描述支持了新标准,这个可以用 #pragma 编译器指定
- 除了已经有的 __line__ __file__ 以外,又支持了一个 __func__ 可以得到当前的函数名
- 对于非常数的表达式,也允许编译器做化简
- 修改了对于 / % 处理负数上的定义,比如老的标准里 -22 / 7 = -3, -22 % 7 = -1 而现在 -22 / 7 = -4, -22 % 7 = 6
- 取消了不写函数返回类型默认就是 int 的规定
- 允许 struct 定义的最后一个数组写做 [] 不指定其长度描述
- const const int i; 将被当作 const int i; 处理
- 增加和修改了一些标准头文件, 比如定义 bool 的 定义一些标准长度的 int 的 定义复数的 定义宽字符的 有点泛型味道的数学函数 跟浮点数有关的 里多了一个 va_copy 可以复制 ... 的参数。 里多了个 struct tmx 对 struct tm 做了扩展
- 输入输出对宽字符还有长整数等做了相应的支持 但是各个公司对C99的支持所表现出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的时候,微软Borland却似乎对此不感兴趣。

C语言的Hello World程序

下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序: #include   int main(void)

进一步了解C

C语言由函数和变量组成。C的函数就像是Fortran中的子程序和函数。 在C语言中,程序从main开始执行。main函数通过调用和控制其他函数进行工作。例如上面的printf。程序员可以自己写函数,或从库中调用函数。在上面的return 0;使得main返回一个值给调用程序的外壳,表明程序已经成功运行。 一个C语言的函数由返回值、函数名、参数列表(或void表示没有返回值)和函数体组成。函数体的语法和其它的复合的语句部分是一样的。

复合语句

C语言中的复合语句的格式为: 复合语句可以使得几个语句变成一个语句。 但一般情况下,我们不推荐这样多个语句顺序书写, 因为这样会使其可读性减弱,加大代码维护难度。

条件语句

C语言有三种条件语句形式。两种是if,另一种是switch。 两种if包括: if (条件表达式) 语句; 以及 if (条件表达式) 语句; else 语句; 在条件表达式中,任何非零的值表示条件为真;如果条件不满足,程序将跳过if后面的语句,直接执行if后面的语句。但是如果if后面有else,则当条件不成立时,程序跳到else处执行。 switch通常用于对几种有明确值的条件进行控制。它要求的条件值通常是整数或字符。与switch搭配的条件转移是case。使用case后面的标值,控制程序将跳到满足条件的case处一直往下执行,直到语句结束或遇到break。通常可以使用default把其它例外的情况包含进去。如果switch语句中的条件不成立,控制程序将跳到default处执行。switch是可以嵌套的。 switch (<表达式>)

循环语句

C语言有三种形式的循环语句: do <语句> while (<表达式>); while (<表达式>) <语句>; for (<表达式1> ; <表达式2> ; <表达式3>) <语句>; whiledo中,语句将执行到表达式的值为零时结束。在do...while语句中,循环体将至少被执行一次。这三种循环结构可以互相转化: for (e1; e2; e3) s; 相当于 e1; while (e2) 当循环条件一直为真时,将产生死循环。

跳转语句

跳转语句包括四种:goto,continue,break和returngoto语句是无条件转移语句: goto 标记 标记必须在当前函数中定义,使用“标记:”的格式定义。程序将跳到标记处继续执行。由于goto容易产生阅读上的困难,所以应该尽量少用。 continue语句用在循环语句中,作用是结束当前一轮的循环,马上开始下一轮循环。 break语句用在循环语句或switch中,作用是结束当前循环,跳到循环体外继续执行。但是使用break只能跳出一层循环。在要跳出多重循环时,可以使用goto使得程序更为简洁。 当一个函数执行结束后要返回一个值时,使用returnreturn可以跟一个表达式或变量。如果return后面没有值,将执行不返回值。

在C99中运算符号

数据类型

基础数据类型

注意:以下是典型的数据位长和范围。但是编译器可能使用不同的数据位长和范围。这取决于使用的编译器。请参考具体的参考手册。 在头文件中说明了基础数据的长度。float,double和long double的范围就是在IEEE 754标准中提及的典型数据。

数组

如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NUL作为数组的结束。 例如: :int myvector [100]; :char mystring [80]; :float mymatrix [3] [2] = :int notfull [3][3] = (
- ) :char lexicon [10000] [300] ; /
- 共一万个最大长度为300的字符数组。
- / :int a[3][4];
上面最后一个例子创建了一个数组,但也可以把它看成是一个多维数组。注意数组的下标从0开始。这个数组的结构如下:
例子(
- )创建了一个3
- 3的二维数组,初始化时有些元素并未赋值.如下: :1 0 0 :1 2 3 :4 5 0
为0的位置的数值是随机的.

指针

如果一个变量声明时在前面使用
- 号,表明这个变量是一个指针。 例如: :int
- pi; /
- 指向整型数据的指针
- / :int
- api[3]; /
- 由指向整型数据的指针构成的数组,长度为3
- / :char
  - argv; /
- 指向一个字符指针的指针
- /
储存在指针中的地址所指向的数值在程序中可以由
- 读取。例如,在第一个例子中,
- pi
是一个整型数据。这叫做引用一个指针。 另一个运算符&,叫做取地址运算符,它将返回一个变量、数组或函数的存储地址。因此,下面的例子: :int i,
- pi; /
- int and pointer to int
- / :pi = &i;
i和
- pi
在程序中可以相互交替使用,直到pi被改变成指向另一个变量的指针。

字符串

要使用字符串并不需要引用库,但是C标准库确实包含了一些用于对字符串进行操作的函数,使得它们看起来就像字符串而不是数组。使用这些函数需要引用头文件
- strcat(dest, source) - 连接两个字符串,把source加到dest末尾。
- strchr(s, c) -在字符串c中找出字符s第一次出现的位置。当没有找到时,返回Null。
- strcmp(a, b) - 比较字符串ab的大小。如果两个字符串相同,返回0;如果a>b,返回正数;如果a,返回负数。
- <- 把source中的n个字符追加到dest后面。null后面的值将不会被添加。
- strncmp(a, b, n) - 比较字符串abn个字符的大小。如果两个字符串相同,返回0;如果a>b,返回正数;如果a,返回负数。
- strncpy(dest, source, n) - 把字符串source拷贝到字符串dest中。(最多拷贝n个)
- strrchr(s, c) - 在s中查找最后一次出现c的位置。返回这个位置。如果找不到,返回null。

文件输入/输出

在C语言中,输入和输出是经由标准库中的一组函数来实现的。在ANSI/ISO C中,这些函数被定义在头文件中。

标准输入/输出

有三个标准输入/输出是预定义的:
- stdin 标准输入
- stdout 标准输出
- stderr 输入输出错误
这些定义在运行过程中是自动的打开和关闭的,所以它们并不需要进行显式定义。 下面的这个例子显示了一个过滤程序(filter program)是怎样构成的。 #include   int main()

传递命令行参数

在命令行赋予程序的参数将通过在main()函数中定义一个整型参数(int)和一个指向字符指针的指针型参数(char
  - )来实现,前者传递命令行参数的个数,后者传递命令行参数内容。习惯上将这两个参数分别命名为argcargv。程序文件名被作为第一个命令行参数。 对于下列程序: #include   int main(int argc, char
  - argv) 输入命令(假设该程序生成C:\TC\a.exe): a one two three 则会得到下面的输出结果:
0:C:\TC\A.EXE
1:one
2:two
3:three
C语言的标准库

以下列出由C语言提供的标准函数库,函数库通过#include进行引用。 在C89标准中:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
在95年的修正版中
-
-
-
在C99中增加了六个函数库
-
-
-
-
-
-

C语言的保留关键字

参见


- 计算机科学课程列表 ja:C言語 ko:C 프로그래밍 언어 ms:Bahasa pengaturcaraan C th:ภาษาซี

运算符重载

在计算机程序设计中,运算符重载是多态的一种。这里,运算符(比如 +, =

)被当作多态函数,他们的行为随着其参数类型的不同而不同。运算符并不一定总是符号。 运算符重载通常只是一种语法糖衣。它可以简单地通过函数调用来模拟: :a + b × c 在一个支持运算符重载的语言里,上面的写法要比下面的写法有效而简练: :operator_add (a, operator_multiply (b,c)) (假设 × 运算符的优先级高于 +) 当一种语言允许运算符在某种情况下被隐式调用的时候,运算符重载将不只提供写法上的方便。例如,Ruby 中的 to_s 运算符就是如此,它返回一个对象的字符串表示。

批评

运算符重载由于使程序员能够根据运算子类型的不同来决定运算符功能的不同而受到批评。C++<< 的使用就是一个例子。表达式 a << 1 当 a 是整型变量时将返回 a 的两倍,但是当 a 是一个输出流时将向这个流中写入“1”。因为运算符重载允许程序员改变运算符通常的语义,慎重使用运算符重载通常被认为是一个好习惯。

分类

支持运算符重载和定义新运算符的语言:
- PostgreSQL的SQL方言
- Ruby
- Haskell 支持运算符重载的语言:
- Ada
- C++
- C#
- D
- Perl
- Python
- Pico (某种程度上) 不支持运算符重载的语言:
- C
- Pascal
- Delphi
- Java
- Visual Basic category:计算机语言

國際標準化組織

国际标准化组织(ISO)成立於1947年2月23日,是制作全世界工商业国际标准的各国标准机构代表的国际标准建立机构。该组织自我定义为非政府组织官方语言英语法语俄语。参加者包括各会员国的标准机构和主要公司。 中华民国是ISO创始国之一,但因未按章交会费而在1950年被停止会籍。目前中华民国统治的台湾不是ISO成员,但中華民國中國國家標準》(不等於《中华人民共和国国家标准》)通常仍有参考ISO标准。 中华人民共和国1978年9月1日以中国标准化协会的名义参加ISO,并在1982年9月当选并连任理事国(1983年--1994年)。1985年1989年分别改由中国国家标准局和中国国家技术监督局参加。2001年起,在ISO代表中华人民共和国的会员机构是国家标准化管理委员会香港是ISO通讯成员。澳门已获同意成为ISO通讯成员但还未加入。 国际标准化组织与负责电子设备标准的国际电工委员会(IEC)密切合作。 国际标准化组织(ISO)的国际标准以号码表示。例如,ISO 11180:1993的11180是标准号码,而1993是出版年份。

国际标准化组织部份国际标准列表

因为中文不是国际标准化组织的官方语言,所以ISO标准没有正式中文名称。

外部连接


- 国际标准化组织的正式网站(英文及法文):http://www.iso.org/ Category:标准制订机构 ja:国際標準化機構 ko:국제 표준화 기구 zh-min-nan:ISO

1980年代

世纪 19世纪 | 20世纪 | 21世纪
年代 1960年代 1970年代 | 1980年代 | 1990年代 2000年代
份: 1980年 1981年 1982年 1983年 1984年 1985年 1986年 1987年 1988年 1989年

大事记

出生

逝世

---- Category:20世纪 ja:1980年代 ko:1980년대 simple:1980s zh-min-nan:1980 nî-tāi

1995年

---- ----

大事记


- 1月1日——世界贸易组织正式成立。
- 1月1日——阿拉法特呼吁制止以色列扩建犹太人定居点。
- 1月2日——波黑克族领导人祖巴克和西波斯尼亚穆斯林领导人签署停止敌对协议。
- 1月3日——斯里兰卡政府同泰米尔游击队恢复和谈。
- 1月4日——俄罗斯总统叶利钦下令停止轰炸车臣首都格罗兹尼
- 1月5日——法国总统密特朗重申核威慑仍是法國防务理论基础。
- 1月17日——日本發生阪神大地震,6000多人死亡。
- 2月26日——英國霸菱銀行宣布倒閉。
- 3月3日——台灣正式實施全民健保
- 3月3日——聯合國維和部隊結束在索馬利亞的維和任務。
- 3月20日——日本奥姆真理教發動東京地下鐵沙林毒氣攻擊事件,造成12人死亡及上百人受傷。
- 4月19日——美國奧克拉荷馬州聯邦大樓發生爆炸案,造成168人死亡。
- 5月16日——席哈克宣誓就任法國總統
- 5月16日——發動東京地下鐵沙林毒氣攻擊事件的奥姆真理教头目麻原彰晃被捕。
- 5月23日——Java編程語言官方發布。
- 5月28日——俄羅斯庫頁島發生芮氏規模7.6的強烈地震,造成超過2000人死亡。
- 6月7日——中華民國總統李登輝前往美國訪問。
- 6月29日——亞特蘭提斯號实现了航天飞机和平號空间站间的首次对接。
- 6月29日——韩国三丰百货大楼倒塌事故,造成501人死亡,937人受伤。
- 7月21日——中國台灣北方海面試射飛彈第三次台灣海峽危機爆發。
- 8月15日——日本首相村山富市举行战后50年村山谈话
- 8月24日——微軟正式發行Windows 95作業系統
- 8月30日——北約組織對位於波士尼亞境內的塞爾維亞據點展開轟炸。
- 10月30日——日本下令解散奧姆真理教
- 10月30日——加拿大魁北克省舉行第二次獨立公投,結果反對派以50.4%的些微多數獲勝。

出生

逝世


- 逝世公告
- 3月24日 —— 李約瑟, 英國近代生物化學家和漢學家(生於1900年
- 4月10日 —— 陳雲
- 5月8日——鄧麗君台灣歌手(生於1953年
- 7月5日——福田赳夫日本第67任首相(生於1905年
- 7月24日——喬治·羅傑,英國攝影師(生於1908年
- 8月13日——米奇·曼托美國棒球選手(生於1931年)
- 8月23日——陈丕显
- 9月8日——張愛玲中國現代作家(生於1920年
- 11月4日——伊扎克·拉賓以色列總理,遭暗殺身亡(生於1922年

诺贝尔奖


- 物理馬丁·佩爾美國)、腓德烈·萊因斯美國
- 化学保罗·克鲁岑 马里奥·莫利纳弗兰克·罗兰
- 医学和生理Edward B. Lewis美國)、Christiane Nüsslein-Volhard德國)、Eric F. Wieschaus美國
- 文学希尼爱尔兰诗人)
- 和平Joseph Rotblat英國)、 Pugwash Conferences on Science and World Affairs (加拿大
- 经济小罗伯特·卢卡斯ROBERT LUCAS,Jr.美国

奥斯卡金像奖

(第68届,1996年颁发)
- 奥斯卡最佳影片奖——《勇敢的心》(Braveheart)
- 奥斯卡最佳导演奖——梅尔·吉布森(Mel Gibson) 《勇敢的心》
- 奥斯卡最佳男主角奖——尼古拉斯·凯奇(Nicolas Cage) 《离开拉斯维加斯
- 奥斯卡最佳女主角奖——苏珊·萨拉登(Susan Sarandon) 《死囚散步
- 奥斯卡最佳男配角奖——凯文·斯佩西(Kevin Spacey) 《通常嫌疑犯》
- 奥斯卡最佳女配角奖——米拉·索维诺(Mira Sorvino) 《伟大的阿佛洛狄特》 (其他奖项参见奥斯卡金像奖获奖名单Category:1995年 als:1995 ja:1995年 ko:1995년 ms:1995 simple:1995 th:พ.ศ. 2538

面向对象

面向对象方法,在台湾译作物件導向,是一个广泛使用但涵义并不清晰的术语1980年代面向对象主要指一种程序设计方法,但在随后的发展中,面向对象的方法已经渗透到计算机软件领域的许多分支。

定义

下面我们试图给出它的定义: 定义一: 面向对象方法是一种运用对象封装继承多态消息等概念来构造、测试、重构软件的方法。 定义二: 面向对象方法是以认识论为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。 由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。简言之,面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。 面向对象方法从对象出发,发展出对象,类,消息,继承等概念。

介绍

参考条目


- 计算机科学课程列表
- 面向对象的建模
- 面向对象的系统分析
- 面向对象的系统设计
- 面向对象的程序设计
- 面向对象的程序设计语言
- 面向对象方法学
- 统一建模语言
- 软件设计模式
- 分析模式
- 软件重构
- 调试 category:程序设计

标准模板库

标准模板库(STL)英文Standard Template Library的缩写。 模板是C++程序设计语言的一个比较新的重要特征,而标准模板库(STL)正是基于此特征。标准模板库(STL)使得C++在有了同Java一样强大的类库的同时,保有了更大的可扩展性Category:程序设计语言

Java

Java,是一种可以编写跨平台应用软件面向对象程序设计语言,由升阳(太阳微电子,Sun Microsystems)公司的詹姆斯·高斯林等人于1990年代初开发。它最初被命名为Oak,作为一种小家用电器编程语言,来解决诸如电视机电话闹钟烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近夭折之时,随着Internet的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,在1995年5月以"Java"的名称正式发布了。Java伴随着Internet的迅猛发展而发展,逐渐成为重要的Internet编程语言。 Java编程语言的风格十分接近C++语言。Java继承了C++语言面向对象技术的核心,舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载多重继承(以接口取代)等成分,增加了自动垃圾收集功能用于回收不再被引用的对象所占据的内存空间。在J2SE1.5版本中Java又引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java不同於一般的编輯執行計算機語言和解释执行计算机语言。它首先将源代码编译成字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,这同时也在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后,Java的计算能力有了大幅提升。 与传统程序不同,Sun公司在推出Java之际就将其作为一种开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun公司对Java编程语言的解释是:Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。 Java平台是基于Java语言的平台。这样的平台目前非常流行,因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言。

历史

Java名称的由来

在正式推出Java之前,升阳公司的工作人员正为了为这种新的程序设计语言取一个名称而苦恼。当时,这些软件工程师坐在充溢着香味的升阳公司总部一起边喝着爪哇咖啡一边思考。最后,大家一致同意以这种飘香的咖啡名字Java来命名这个新生的语言和技术。

早期的JAVA

升阳 Java平台和语言最开始只是升阳公司在1990年12开始研究的一个内部项目。升阳公司的一个叫做帕特里克·诺顿的工程师被太阳自己开发的C++C语言编译器搞得焦头烂额,因为其中的API极其难用。帕特里克决定改用NeXT,同时他也获得了研究公司的一个叫做“Stealth 计划”的项目的机会。 “Stealth 计划”后来改名为“Green计划”,詹姆斯·高斯林麦克·舍林丹也加入了帕特里克的工作小组。他们和其他几个工程师一起在加利福尼亚州门罗帕克沙丘路的一个小工作室里面研究开发新技术,瞄准下一代智能家电(如微波炉)的程序设计,升阳公司预料未来科技将在家用电器领域大显身手。团队最初考虑使用C++语言,但是很多成员包括升阳的首席科学家比尔·乔伊,发现C++和可用的API在某些方面存在很大问题。 工作小组使用的是内嵌类型平台,可以用的资源极其有限。很多成员发现C++太复杂以至很多开发者经常错误使用。他们发现C++缺少垃圾回收系统,还有可移植的安全性、分布程序设计、和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。 根据可用的资金,比尔·乔伊决定开发一种集C语言和Mesa语言大成的新语言,在一份报告上,乔伊把它叫做“未来”,他提议升阳公司的工程师应该在C++的基础上,开发一种面向对象的环境。最初,高斯林试图修改和扩展C++的功能,他自己称这种新语言为 C++ ++ --,但是后来他放弃了。他将要创造出一种全新的语言,被他命名为“Oak”(橡树),以他的办公室外的树而命名。 就像很多开发新技术的秘密的工程一样,工作小组没日没夜地工作到了1992年的夏天,他们能够演示新平台的一部分了,包括Green操作系统,Oak的程序设计语言,类库,和其硬件。最初的尝试是面向一种类PDA设备,被命名为Star7,这种设备有鲜艳的图形界面和被称为“Duke”的智能代理来帮助用户。1992年12月3日,这台设备进行了展示。 同年11月,Green计划被转化成了“FirstPerson有限公司”,一个升阳公司的全资子公司,团队也被重新安排到了帕洛阿尔托。FirstPerson团队对建造一种高度互动的设备感兴趣,当时代华纳发布了一个关于电视机顶盒的征求提议书时(Request for proposal),FirstPerson改变了他们的目标,作为对征求意见书的响应, 提出了一个机顶盒平台的提议。但是有线电视业界觉得FirstPerson的平台给予用户过多地控制权,因此FirstPerson的投标败给了SGI。与3DO 公司的另外一笔关于机顶盒的交易也没有成功,由于他们的平台不能在电视工业产生任何效益,公司再并回升阳公司。

JAVA遭遇互联网

1994年6、7月间,在经历了一场历时三天的头脑风暴的讨论后,约翰·盖吉、詹姆斯·高斯林比尔·乔伊帕特里克·诺顿韦恩·罗斯因埃里克·斯库米,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有限电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网浏览器,WebRunner,后来改名为HotJava。 同年,Oak改名为Java。商标搜索显示,Oak已被一家显卡制造商注册,因此团队找到了一个新名字。这个名字是在很多成员常去的本地咖啡馆中杜撰出来的。名字是不是首字母缩写还不清楚, 很大程度上来说不是。 虽然有人声称是开发人员名字的组合:James Gosling(詹姆斯·高斯林)+Arthur Van Hoff(阿瑟·凡·霍夫)+Andy Bechtolsheim(安迪·贝克托克姆),或“Just Another Vague Acronym”(只是另外一个含糊的缩写)。还有一种比较可信的说法是这个名字是出于对咖啡的喜爱,所以以java咖啡来命名。类文件的前四个字节如果用十六进制阅读的话,分别为CA FE BA BE, 就会拼出两个单词“CAFE BABE”(咖啡宝贝)。 1994年10月,HotJava和Java平台为公司高层进行演示。1994年, Java 1.0a版本已经可以提供下載,但是Java和HotJava浏览器的第一次公开发布却是在1995年3月23日SunWorld大会上进行的。升阳公司的科学指导约翰·盖吉宣告Java技术。这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的, 宣布网景将在其浏览器中包含对Java的支持。1996年1月,升阳公司成立了Java业务集团,专门开发Java技术。

JAVA近况

在流行几年之后,Java在浏览器中的地位被逐步侵蚀。它在简单交互性动画方面的用途已经完全被Macromedia公司的Flash排挤,2005年Java倾向只被用于雅虎游戏那样的更为复杂的应用程序。Java同时遭受到来自微软的反对,他们决定在新版本的Internet ExplorerWindows中不再附带Java平台。 与此相反。在万维网的服务端和手持设备上,Java变得更加流行。很多网站在前端使用JSP和其他的Java技术。 在桌面系统上,独立的Java程序还是相对少见,这是因为Java平台的运行开销较大。但是随着计算机计算能力在10年中取得了很大的进步,同时虚拟机和编译器的质量得到了越高,许多应用程序得到了广泛的使用, 包括NetBeansEclipse集成开放环境,和AzureusBitTorrent客户端。 目前Java提供以下三个版本:
- 嵌入式版的Java平台(Java Micro Edition)
- 标准版的Java平台(Java Standard Edition)
- 企业版的Java平台(Java Enterprise Edition)

版本历史(时间表)

企业版的Java平台
- 1995年5月23日,Java语言诞生
- 1996年1月,第一个JDK-JDK1.0诞生
- 1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术
- 1996年9月,约8.3万个网页应用了JAVA技术来制作
- 1997年2月18日JDK1.1发布
- 1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录
- 1997年9月JavaDeveloperConnection社区成员超过十万
- 1998年2月JDK1.1被下载超过2,000,000次
- 1998年12月8日JAVA2企业平台J2EE发布
- 1999年6月,SUN公司发布Java的三个版本:标准版、企业版和微型版(J2SEJ2EEJ2ME
- 2000年5月8日JDK1.3发布
- 2000年5月29日JDK1.4发布
- 2001年6月5日NOKIA宣布,到2003年将出售1亿部支持Java的手机
- 2001年9月24日J2EE1.3发布
- 2002年2月26日J2SE1.4发布,自此Java的计算能力有了大幅提升。
- 2004年9月30日18:00PM,J2SE1.5发布,是Java语言的发展史上的又一里程碑事件。为了表示这个版本的重要性,J2SE1.5更名为J2SE5.0
- 2005年6月JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字“2”:J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。

语言特性

Java之所以被开发,是要达到以下五个目的:
- 应当使用面向对象程序设计方法学
- 应当允许同一程序在不同的计算机平台执行
- 应当包括内建的对计算机网络的支持
- 应当被设计成安全地执行远端代码
- 应当易于使用,并借鉴以前那些面向对象语言(如C++)的长处。

面向对象

Java的特点之一就是面向对象,是程序设计方法的一种。“面向对象程序设计语言”的核心之一就是开发者在设计软件的时候可以使用自定义的类型和关联操作。代码和数据的实际集合体叫做“对象”。一个对象可以想象成绑定了很多“行为(代码)”和“状态(数据)”的物体。对于数据结构的改变需要和代码进行通信然后操作,反之