一些编程语言的发展史

news/2025/9/18 15:14:12/文章来源:https://www.cnblogs.com/asda/p/19098831

计算机语言的发展史

C语言的命名由来

C语言,作为一种广泛使用的编程语言,其命名背后有着一段历史。C语言的前身是B语言,而B语言又是基于BCPL语言发展而来。BCPL(Basic Combined Programming Language)是由剑桥大学的Martin Richards在1967年为了简化CPL语言而创建的。接着,在1970年,美国贝尔实验室的Ken Thompson基于BCPL语言设计了B语言,并用它编写了第一个UNIX操作系统。

Dennis M. Ritchie,同样在贝尔实验室工作,于1972年在B语言的基础上开发出了C语言。他选择了BCPL名称中的第二个字母"C"作为这种新语言的名称。C语言的设计目的是提供一种能够简单编译、处理低级存储器、产生少量机器码的语言,同时不需要任何运行环境的支持即可运行。C语言在1973年初完成了主体设计,并被用来完全重写了UNIX操作系统。

C语言的强大移植性使其能够在不同类型的计算机上使用。与机器语言和汇编语言不同,C语言编写的程序可以在任何架构的处理器上运行,只要该架构有相应的C语言编译器和库。这种跨平台的特性,加上其对低级操作的支持,使C语言成为开发系统软件的首选语言。

随着时间的推移,C语言经历了多次标准化的过程。1977年,Dennis Ritchie发表了《可移植的C语言编译程序》,这是一个不依赖于具体机器系统的C语言编译文本。1983年,美国国家标准化协会(American National Standards Institute,ANSI)制定了C语言的标准,通常称之为ANSI C。此后,国际标准化组织(ISO)在1990年接受了ANSI C作为ISO C的标准,并在2011年发布了新的国际标准草案:ISO/IEC 9899:2011,增加了对多线程的支持和对Unicode的支持等新特性。

C++的诞生以及发展

C++ 是由 比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)在 20 世纪 80 年代初于贝尔实验室开发的一种编程语言。它的诞生源于对 C 语言 的扩展,旨在解决 C 语言在处理复杂系统时的局限性,同时引入面向对象编程的概念。

起源与动机

C++ 的开发始于 1979 年,当时斯特劳斯特鲁普在研究分布式系统时发现现有的编程工具无法满足需求。他希望创建一种语言,既能保留 C 语言的高效性和灵活性,又能支持 继承多态 等面向对象特性。最初,这种语言被称为 C with Classes,直到 1983 年正式更名为 C++,名称中的 “++” 取自 C 语言的递增运算符,象征着语言的自然演进。

语言特性与标准化

C++ 在设计上继承了 C 语言的语法和效率,同时引入了许多新特性,包括虚函数、模板、异常处理和标准模板库(STL)。这些特性使得 C++ 成为一种支持多种编程范式的通用语言,例如过程化编程、面向对象编程和泛型编程。

1998 年,C++ 被正式标准化为 ISO/IEC 14882:1998,标志着其成熟和广泛应用。此后,C++ 标准不断更新,最新版本为 C++20,引入了协程、模块和并行算法等现代特性。

影响与应用

C++ 的出现深刻影响了计算机科学的发展。它在操作系统、游戏开发、嵌入式系统和高性能计算等领域得到了广泛应用。C++ 的高效性和灵活性使其成为工业界的重要工具,同时也为程序员提供了强大的表达能力。

未来展望

尽管编程语言领域不断涌现新秀,C++ 仍然保持着强大的生命力。随着技术的进步和应用场景的扩展,C++ 将继续在高性能和复杂系统开发中发挥重要作用。它不仅是一种工具,更是一种编程思想的体现。

C++ 的发展历程是一部充满创新与挑战的传奇,它的成功离不开斯特劳斯特鲁普的贡献以及全球开发者的支持。

JAVA语言的诞生

Java 于 1995 年 5 月 23 日 在 Sun World 会议上正式发布,其前身是名为 Oak 的编程语言。Oak 的开发始于 1991 年,由 Sun Microsystems 的 James Gosling 和他的团队主导,最初设计用于嵌入式设备和家用电器。由于市场需求的变化和互联网的兴起,Oak 被重新命名为 Java,并转向网络应用开发。

Java 的名字来源于 印度尼西亚爪哇岛,以其咖啡闻名,这也解释了 Java 标志中咖啡杯的设计。Java 的发布标志着一种全新编程语言的诞生,其核心理念是 “一次编写,处处运行”(Write Once, Run Anywhere),通过 Java 虚拟机(JVM)实现跨平台能力。

Java 的正式发布后,迅速成为开发者的热门选择,尤其是在互联网和企业级应用领域。1996 年,Sun 发布了 JDK 1.0,标志着 Java 开发环境的初步成熟。Java 的安全性、跨平台性和面向对象特性使其在全球范围内广泛应用,并奠定了其在编程语言中的重要地位。

其背后有趣的故事

Java语言的名字背后有一个有趣的故事。Java语言的创始人詹姆斯·高斯林(James Gosling)在为新语言命名时,注意到他手中的咖啡杯,这杯咖啡来自印度尼西亚的爪哇岛,那里的咖啡豆是世界著名的特产。由此,高斯林灵机一动,决定将这门新语言命名为Java。

在Java语言的开发过程中,最初的代号是Oak(橡树),因为高斯林注意到自己办公室外的一棵茂密的橡树。然而,在申请商标时,发现Oak已经被其他公司注册,所以不得不重新取名。在命名征集会上,大家提出了很多名字,当时他们正喝着印尼爪哇岛出产的咖啡,其中一位成员灵机一动,提议叫Java,大家都表示喜欢。

Java语言与咖啡豆之间的联系不仅在于名字的起源。在Java语言中,有许多库类名称都与咖啡有关。例如,JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans(对象豆)等等。这些名称不仅使代码更具趣味性,也体现了Java语言与咖啡文化的紧密联系。

Java语言的名字选择与其简洁性和易记性也有关系。这个名字短小精悍,易于记忆,同时在当时是一个未被广泛使用的词汇,这意味着它在网络上的域名等资源相对容易获得。

总的来说,Java名字的由来不仅展示了命名的重要性,也提醒我们在生活中要善于发现和抓住灵感,有时候一个小小的创意就能够改变我们的生活和工作方式。

C#语言的传奇之旅:从诞生到辉煌

C#语言由微软公司开发,于2000年首次发布,作为.NET框架的一部分。它的设计目标是为开发者提供一种现代化、面向对象的编程语言,用于构建各种类型的应用程序,包括桌面、Web、移动和云服务。

C#的诞生背景可以追溯到20世纪90年代末。当时,随着互联网的迅速发展和软件复杂性的增加,传统编程语言(如C++)难以满足开发需求。微软意识到需要一种更强大、更高效的语言来应对这些挑战。

C#的设计深受C++、Java和Delphi等语言的启发,同时融入了微软的创新。它引入了诸如委托、属性、泛型和LINQ等特性,极大地提升了开发效率和代码质量。

C#的首次发布标志着微软在编程语言领域的重要一步,并迅速成为.NET平台的主要语言之一。

背后的故事

微软秘密组建了一个精英团队,而这个团队的灵魂人物,便是安德斯·海尔斯伯格(Anders Hejlsberg)。海尔斯伯格是一位传奇的程序员,他曾经参与开发了Turbo Pascal和Delphi等著名编程语言,被誉为“编程语言大师”。他的加入,为C#的诞生注入了强大的动力。

海尔斯贝格

在微软的总部,一个神秘的实验室里,海尔斯伯格和他的团队开始了艰苦的探索。他们日夜奋战,不断地讨论、设计、编写代码,试图创造出一种完美的编程语言。在这个过程中,他们面临着无数的困难和挑战。一方面,他们需要在保持C++语法风格的基础上,进行大胆的创新;另一方面,他们还要确保这种语言能够与.NET框架无缝对接,实现跨平台、跨语言的开发。

经过无数次的尝试和改进,终于在2000年,C#语言横空出世。它的名字来源于音乐中的“C#”音符,象征着它在编程语言中的独特地位和美妙旋律。C#的诞生,立刻引起了全球程序员的关注。它简洁的语法、强大的功能和高效的性能,让人们眼前一亮。许多程序员纷纷投入到C#的学习和开发中,一场新的编程革命悄然拉开序幕。

在C#语言的发展过程中,也并非一帆风顺。随着开源文化的兴起,许多程序员开始呼吁C#语言开源。他们认为,开源可以让更多的开发者参与到C#语言的开发和改进中,促进C#语言的发展。然而,微软作为一家商业公司,对于开源一直持谨慎态度。他们担心开源会影响C#语言的商业价值,同时也担心开源后会失去对C#语言的控制权。

在这种情况下,C#语言面临着一个艰难的抉择。是继续坚守商业化的道路,还是勇敢地迈出开源的步伐?经过长时间的思考和讨论,微软最终决定开源C#语言。2014年,微软宣布将C#语言开源,并将其捐赠给了.NET基金会。这一决定,标志着C#语言进入了一个新的时代。

开源后的C#语言,迎来了新的发展机遇。越来越多的开发者开始参与到C#语言的开发和改进中,C#语言的社区也日益壮大。同时,开源也使得C#语言能够更好地支持跨平台开发。微软推出了.NET Core,这是一个开源的、跨平台的.NET框架。C#语言与.NET Core的结合,使得C#语言能够在Linux、MacOS等操作系统上运行,大大拓展了C#语言的应用场景。

在早期的C#语言版本中,主要的创新集中在语法的改进和一些基本功能的增强上。例如,C# 2.0引入了泛型(Generics),使得程序员可以编写更加通用的代码;C# 3.0引入了匿名类型(Anonymous Types)和扩展方法(Extension Methods),这些特性使得C#语言更加灵活和强大。

随着技术的发展,C#语言的创新也逐渐向更深层次的方向发展。C# 5.0引入了异步编程(Async Programming),使得程序员可以更加轻松地编写异步代码,提高程序的性能和响应速度;C# 6.0引入了表达式体成员(Expression-bodied Members)和字符串插值(String Interpolation),这些特性使得C#语言的语法更加简洁和易读。

(C#语言来源材料作者:槐月)

PHP语言的发展史

PHP 最初由程序员 Rasmus Lerdorf1994 年 开发。最初的版本是一个用 C 语言 编写的工具套件,名为 Personal Home Page Tools,用于统计他个人网页的访问量。这一工具的发布标志着 PHP 的起点。

1995 年 6 月 8 日,Rasmus 将 PHP Tools 的源代码公开发布,这一事件被视为 PHP 的正式诞生。此时的 PHP 主要用于实现简单的网页功能,例如访客计数器和留言板,为网页注入了动态交互的能力。

随后,PHP 经过多次迭代和改进,从一个简单的工具逐步演变为功能强大的编程语言,成为互联网开发的重要基石。

JavaScript 语言的诞生

JavaScript 的诞生可以追溯到 1995 年,当时网景公司(Netscape)主导了浏览器市场,但意识到静态网页的局限性。为了让网页具备交互能力,网景决定开发一种轻量级的脚本语言。Brendan Eich 在短短 10 天内设计出了 JavaScript 的第一个版本。

这门语言最初被称为 Mocha,随后改名为 LiveScript,最终因网景与 Sun 公司合作而命名为 JavaScript,以借助 Java 的热度进行市场推广。

设计理念与技术来源

Brendan Eich 的设计融合了多种编程范式的精华:

  • C 语言的基本语法,降低学习门槛。
  • Java 的数据类型和内存管理。
  • Scheme 的函数式编程思想,将函数提升为“一等公民”。
  • Self 的原型继承机制。

因此,JavaScript 是一种结合了 函数式编程面向对象编程 的混合语言。

初期应用与局限

JavaScript 最初的目标是处理简单的网页交互,例如表单验证和动态内容更新。通过 DOM 操作事件处理,开发者可以实现动态网页效果。

然而,由于设计时间短暂,JavaScript 的早期版本存在许多不严谨之处,导致代码混乱。Brendan Eich 后来坦言,他对 JavaScript 的设计并不满意,甚至称其为“C 和 Self 的一夜LOVE产物”。

JavaScript 的命名误解

尽管名字中包含“Java”,但 JavaScript 与 Java 几乎没有直接关系。这个名字纯粹是网景的营销策略,旨在借助 Java 的流行度推广 JavaScript。

影响与发展

JavaScript 的诞生为网页注入了“灵魂”,从静态内容转向动态交互。它不仅成为浏览器中的核心语言,还随着技术的演进扩展到服务器端(Node.js)、移动端(React Native)和桌面应用(Electron)等领域。

JavaScript 的成功证明了简单性与灵活性的力量。尽管起初被视为“玩具语言”,它如今已成为改变世界的全能编程语言。

背后的趣事

JavaScript的诞生于浏览器的鼻祖网景公司(Netscape),大约是1994年左右,网景公司(Netscape)发布了Navigator浏览器0.9版,这是一款很经典的浏览器,网景公司(Netscape)的用户数因此而出现了井喷的态势,但是Navigator0.9不具备和访问者互动的能力,在那个上网速度比蜗牛还慢的时代,网景公司(Netscape)急需一种脚本语言,使得浏览器和网页进行交互,从而提升用户的体验。

针对这个问题,网景公司(Netscape)有两种选择,一是采用现有的脚本语言,二是自己发明一个新的脚本语言。当时网景公司(Netscape)的高层对这个问题争论不休。在这些喋喋不休的争论里,时间走到了1995年,这一年发生了一件创造历史的大事件编程语言Java横空出世,Java凭借"一次编写,到处运行的"强大宣传,大有未来主宰的霸气,这些让网景公司(Netscape)高层们一下子被Java所俘获,如是网景公司(Netscape)和sun公司结盟,网景公司(Netscape)不仅允许Java程序以applet的形式嵌入到浏览器,直接在浏览器里面运行,甚至还打算把Java作为脚本嵌入到网页,只是最后发现网页会变的过于复杂而放弃,但是JavaScript的Java印记永远都挥之不去。

事情的转折发生在1995年4月,网景公司(Netscape)录用了BremdanEich(布兰登·艾奇)(虽然BremdanEich(布兰登·艾奇)是JavaScript的祖师爷,但是他的介入或许也是JavaScript悲剧的开始)。我们还是接着说网景公司(Netscape)吧,1995年5月,网景公司(Netscape)做出了决策,未来的网页脚本语言必须看上去和Java足够相似,但是比Java简单,使得非专业的网页作者能很快的上手。

BremdanEich(布兰登·艾奇)被任命为这个简化版的Java的设计师。但是BremdanEich(布兰登·艾奇)对Java一点兴趣都没有,为了应付公司的安排的任务,他只用10天时间就设计出了JavaScript。悲剧就这么诞生了。

BrendanEich的主要方向和兴趣是函数式编程,网景公司招聘他的目的,是研究将Scheme语言作为网页脚本语言的可能性。BrendanEich本人也是这样想的,以为进入新公司后,会主要与Scheme语言打交道。(没想到美国公司也有这样的恶习,我以前有家公司非常的BT,特别是对刚毕业或者工作时间不长的程序员,你想做Java我偏偏不给你做,让你做C#,你想做C#,别天真,你去倒腾Java,很多程序员就是这么被致残的)。

10天诞生一种语言,不管怎么说我还是把BrendanEich当神看。但是神创造世界也不能太一蹴而就了,我们这些凡夫俗子很多时候做个小功能模块如果领导就给你10天时间,也会叫苦连天的,10天诞生一种语言这不是神还是啥啊。由于JavaScript设计的时间实在太短,导致很多细节考虑不周,因此JavaScript写出的程序混乱不堪,成了许多程序员的梦魇,差点被人抛弃,直到ajax的出世,才让人们终于找到理由忍受他的畸形。

其实一直到现在BrendanEich还是看不起讨厌Java。假如不是公司决策BrendanEich绝对不会把Java作为JavaScript的设计原型,即使是现在,BrendanEich还是讨厌自己的作品。他曾经说过:"与其说我爱JavaScript,不如说我恨它。它是C语言和Self语言的产物。十八世纪英国文学家约翰逊博士说得好:'它的优秀之处并非原创,它的原创之处并不优秀。"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql生成uuid,3种实用方法详解

你知道MySQL中有几种生成唯一标识符的方法吗?作为数据库开发者,我们经常需要为数据记录生成全局唯一的ID。与自增ID相比,UUID具有全局唯一性和分布式友好的特性,特别适合微服务架构下的数据库设计。 UUID基础概念 …

vmware ubuntu共享文件夹

sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other,uid=1000,gid=1000 开机自动挂载 编辑/etc/fstab文件,添加以下行(需确保共享文件夹名称…

Oracle数据库镜像大全

Oracle数据库镜像大全Posted on 2025-09-18 15:01 lzhdim 阅读(0) 评论(0) 收藏 举报这次整理了Oracle数据库的镜像。通过网盘分享的文件:  链接: https://pan.baidu.com/s/1H5e7P6MK52lwlLAbobbP1A?pwd=fete…

深入解析:【2025年华为秋招(AI)-9月17日-第二题(200分)- 大模型Attention模块开发】(题目+思路+JavaC++Python解析+在线测试)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【10章】n8n+AI工作流:从入门到企业级AI应用实战

【10章】n8n+AI工作流:从入门到企业级AI应用实战 网 盘 地址:……/s/14l-lQhw9M2TuBny5O4Ru8A 提取码:0hm4 在数字时代的浪潮中,自动化已成为提升效率的关键驱动力。当灵活的n8n工作流平台与强大的人工智能相遇…

CodeGPT AI代码狂潮来袭!个人完全免费使用谷歌Gemini大模型 超越DeepSeek几乎是地表最强

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注CodeGPT是什么 CodeGPT是一款基于AI人工智…

svg和canvas的区别

SVG(Scalable Vector Graphics)与 Canvas 是 Web 开发中两种图形技术,其核心差异体现在 ​​渲染方式、交互性、性能表现​​ 等多个维度。以下是基于最新技术标准的深度对比分析:一、核心技术差异​​对比维度​​…

MySQL LIMIT 和 ORDER BY 优化

MySQL LIMIT 和 ORDER BY 优化MySQL LIMIT 子句 MySQL LIMIT 子句是控制 SELECT 语句返回行数的重要工具。通过指定从结果集中获取的最大行数,它可以让你处理数据子集,尤其是在涉及大表的情况下。该功能可提高查询性…

固态电池革命:我们离“续航焦虑终结者”还有多远?

大家好,我是爱折腾。 最近琢磨着换车,跟大家一样,每天在网上刷各种评测和资讯。刷得多了,就老看到“固态电池”。各种文章都说它是“续航焦虑的终结者”、“下一代电池技术革命”,好像不聊这个就跟不上时代了。 说…

心得

心得关于开发 那种方式才是最佳实践? 有很多种类,很容易导致非常隐蔽的问题比如使用 sessionStorage 进行页面间数据传递 公共状态在获取前被使用的时序问题 页面级组件与其容器的组合方法 全局的错误拦截 路由的文件…

深入解析:深入剖析C++内存模型:超越原子性的多线程编程基石

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Spring Security 框架 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Android 安卓 困难处理记录 腾讯IM和厂商离线推送难题 点击离线推送无法唤醒APP启动页但某些Service服务和Application被启动

Android 安卓 困难处理记录 腾讯IM和厂商离线推送难题 点击离线推送无法唤醒APP启动页但某些Service服务和Application被启动pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !im…

百度地图如何获取瓦片图

百度地图如何获取瓦片图1.根据百度地图的经度和纬度来获取瓦片图的 x、y坐标值。 使用第三方javascript库,已经有牛人实现了。 tile-lnglat-transform-es6 如果想表现一下自己很牛,也可以自己去根据思路是实现。 使…

Codeforces Round 1051 (Div 2)

cf1051 Div2 ABCD1D2E题解Problem - A. All Lengths Subtraction 思路: 我们希望 n 和 n - 1 相邻,n - 1, n 和 n - 2 相邻 ... 不断往外扩展 所以我们可以维护 l 和 r 表示当前扩展到了哪里 通过判断下一个数是否和…

scheduleAtFixedRate

定时任务中的scheduleAtFixedRate方法 在Java的并发编程中,scheduleAtFixedRate是ScheduledExecutorService接口中的一个方法,用于在给定的初始延迟后,以固定的周期执行所提交的任务。这个方法非常适合需要多次执行…

redis-string类型常用命令

redis-string类型常用命令String类型value是Redis中最常用,最基本的类型,String类型的value可以存放任意类型数据,包括数值型,二进制的图片,音频,视频,序列化对象等等。一个String类型的value最大时521M。 1.se…

CRMEB标准版PHP核销功能深度解析,附权限配置技巧

订单核销,使用核销码或立即核销进行核销 核销订单:用户购买商品时选择到店自提的订单。到店后需要出示核销码以供核销。 1、收入核销码核销 订单—>订单管理—>立即核销在订单列表页,点击左上角订单核销按钮,…

一文详细说明大模型安全评估要怎么做

一文详细说明大模型安全评估要怎么做《网络安全技术 生成式人工智能服务安全基本要求》 《基本要求》是大模型安全总纲性文件,提纲挈领地指出模型备案上线所需具备的基础条件,是大模型备案技术性指导文件《生成式人工…

apache doris 和 clickhouse的区别

Apache Doris 和 ClickHouse 均为 MPP(大规模并行处理)架构的列式存储 OLAP 数据库,核心定位都是解决海量数据下的高性能分析查询场景,但二者在技术设计、生态适配、适用场景等维度存在显著差异。以下从 核心架构、…