著名的软件都用什么语言编写?

你是否曾经好奇,身边那些耳熟能详的软件,它们究竟是用什么语言编写的?从操作系统到浏览器、从数据库到编程工具,每一款软件背后都承载着开发者们的智慧与技术选型。那么,究竟哪些编程语言成就了这些世界级的软件呢?

在面对复杂的软件开发时,为什么不同的软件会选择不同的编程语言?这些语言的选择是如何影响软件的性能、功能和生态的?

 

不同软件选择不同语言的原因
  1. 性能需求
    例如 操作系统数据库,需要非常高的性能来保证系统稳定运行。因此,它们通常选择 C 语言或 C++ 来进行开发,因为这两种语言接近底层,能直接操作硬件,运行效率极高。

  2. 开发效率与跨平台支持
    JavaPythonJavaScript 等语言则主要关注开发效率和跨平台支持。例如,Java 被广泛用于 企业级应用Android 应用,它的 虚拟机(JVM) 提供了很好的跨平台能力。Python 以其简洁的语法和丰富的库在 数据分析自动化脚本 等领域成为开发者的最爱。

  3. 生态与社区支持
    JavaScript前端开发全栈开发 中占据主导地位,得益于其庞大的社区和丰富的开发框架(如 React、Vue)。而 Ruby

1、操作系统

Microsoft Windows :汇编 -> C -> C++

图片

备注:曾经在智能手机的操作系统(Windows Mobile)考虑掺点C#写的程序,比如软键盘,结果因为写出来的程序太慢,实在无法和别的模块合并,最终又回到C++重写。

相信很多朋友都知道Windows Vista,这个系统开发早期比尔盖茨想全部用C#写,但最终因为执行慢而放弃,结果之前无数软件工程师日夜劳作成果一夜之间被宣告作废。

Linux :C

图片

Apple MacOS : 主要为C,部分为C++。

备注:之前用的语言比较杂,最早是汇编和Pascal。

图片

Sun Solaris :C

HP-UX :C

Symbian OS : 汇编,主要为C++(诺基亚手机)

Google Android :2008 年推出:C语言(有传言说是用Java开发的操作系统,但最近刚推出原生的C语言SDK)

RIM BlackBerry OS 4.x :黑莓 C++

 
 

2、图形界面层

Microsoft Windows UI :C++

Apple MacOS UI (Aqua) :C++

Gnome (Linux图形界面之一,大脚):C和C++, 但主要是C

KDE (Linux图形界面):C++

3、桌面搜索工具

Google Desktop Search :C++

图片

Microsoft Windows Desktop Search :C++

Beagle (Linux/Windows/UNIX 下):C# (基于开源的 .net : Mono)

4、办公软件

Microsoft Office :在 汇编 -> C -> 稳定在C++

图片

Sun Open Office : 部分JAVA(对外接口),主要为C++ (开源,可下载其源代码)

Corel Office/WordPerfect Office :1996年尝试过Java,次年被抛弃,重新回到C/C++

Adobe Systems Acrobat Reader/Distiller :C++

5、关系型数据库

Oracle : 汇编、C、C++、Java。主要为C++

图片

MySQL :C++

图片

IBM DB2 :汇编、C、C++,但主要为C

图片

Microsoft SQL Server : 汇编 -> C->C++

IBM Informix : 汇编、C、C++,但主要为C

SAP DB/MaxDB :C++

6、Web Browsers/浏览器

Microsoft Internet Explorer :C++

图片

Mozilla Firefox :C++

图片

Netscape Navigator :The code of Netscape browser was written in C, and Netscape engineers, all bought to Java (see M. Cusumano book and article) redeveloped the browser using Java. It was too slow and abandoned. Mozilla, the next version, was later developed using C++.

Safari : (2003年1月发布)C++

Google Chrome : (2008的发布)C++

图片

Sun HotJava :Java (死于1999年)

Opera :C++ (手机上占用率比较大)

Opera Mini :Opera Mini (2007) has a very funny architecture, and is indeed using both C++ and Java. The browser is split in two parts, an ultra thin (less than 100Kb) "viewer" client part and a server side responsible of rendering. The first uses Java and receives the page under the OBML format, the latter reuses classical Opera (C++) rendering engine plus Opera's Small Screen Rendering, on the server. This allows Opera to penetrate various J2ME-enabled portable devices, such as phones, while preserving excellent response time. This comes obviously with a few sacrifices, for instance on JavaScript execution.

Mosaic : 鼻祖(已死) C 语言

7、邮件客户端

Microsoft Outlook :C++

图片

IBM Lotus Notes :Java

图片

Foxmail : Delphi

图片

8、软件开发集成环境/IDE

Microsoft Visual Studio :C++

图片

Eclipse :Java (其图形界面SWT基于C/C++)

图片

Code::Blocks :C++

图片

易语言:C++

图片

火山中文:C++

火山移动:C++

9、虚拟机

Microsoft .Net CLR (.NET的虚拟机):C++

图片

Java Virtual Machine (JVM) : Java 虚拟机:C++

图片

10、ERP软件 (企业应用)

SAP mySAP ERP :C,后主要为“ABAP/4”语言

Oracle Peoplesoft :C++ -> Java

图片

Oracle E-Business Suite :Java

11、商业智能(Business Intelligence )

Business Objects :C++

12、图形处理

Adobe Photoshop :C++

图片

The GIMP :C

13、搜索引擎

Google : 汇编 与 C++,但主要为C++

14、著名网站

eBay :2002年为C++,后主要迁至Java

facebook :C++ 和 PHP

This line is only about facebook, not its plugins. Plugins can be developed in many different technologies, thanks to facebook's ORB/application server, Thrift. Thrift contains a compiler coded in C++. facebook people write about Thrift: "The multi-language code generation is well suited for search because it allows for application development in an efficient server side language (C++) and allows the Facebook PHP-based web application to make calls to the search service using Thrift PHP libraries." Aside the use of C++, facebook has adopted a LAMP architecture.

图片

阿里巴巴和淘宝:php->C++/Java(主要用)

图片

15、游戏

汇编、C、C++

星际争霸、魔兽争霸、CS、帝国时代、跑跑卡丁车、传奇、魔兽世界.... 数不胜数了,自己数吧

图片

都是用C++开发的,C++语言靠近系统底层,执行速度最快。比如你的两个朋友与你分别玩用VB、Java、与C++编写的“跑跑卡丁车”,你玩C++编写的游戏已经跑玩结束了,发现你的两个朋友还没开始跑呢,那是相当的卡啊。

16、编译器

Microsoft Visual C++ 编译器:C++

Microsoft Visual Basic 解释、编译器:C++

Microsoft Visual C# :编译器:C++

gcc (GNU C compiler) :C

javac (Sun Java compiler) :Java

Perl :C++

PHP :C

17、3D引擎

Microsoft DirectX :C++

图片

OpenGL :C

图片

OGRE 3D :C++

图片

18、Web Servers (网页服务)

Apache :C和C++,但主要为C

图片

Microsoft IIS :C++

Tomcat :Java

图片

Jboss :Java

图片

19、邮件服务

Microsoft Exchange Server :C->C++

Postfix : C

hMailServer : C++

Apache James : Java

20、CD/DVD刻录

Nero Burning ROM :C++

图片

K3B :C++

21、媒体播放器

Nullsoft Winamp :C++

图片

Microsoft Windows Media Player :C++

22、Peer to Peer (P2P软件)

eMule :C++

μtorrent :C++

Azureus :Java (图形界面使用基于C/C++的SWT,类Eclipse)

23、全球定位系统(GPS)

TomTom :C++

图片

Hertz NeverLost :C++

Garmin :C++

Motorola VIAMOTO :2007年6月,停止服务,Java

24、3D引擎

Microsoft DirectX :C++(相信玩游戏的同学都知道这个,现在最高版本是DX11)

OpenGL :C

OGRE 3D :C++

25、服务器软件

Apache:C

Nginx:C

图片

IIS:C

26、其它

OpenStack:Python

图片

随着技术的不断发展,开发者们面对日益复杂的需求和多样化的平台,编程语言的选择不再单一。我们看到,不同的语言根据其特点被用于不同的应用领域,形成了 语言生态的多样性。例如,Python 的数据分析库、JavaScript 的前端框架、Go 语言的高并发特性,都成了各自领域的标准。

每一款著名的软件背后,都有着精心选择的编程语言。无论是为了追求性能、开发效率,还是跨平台支持,编程语言的选型都直接决定了软件的优势与不足。作为开发者,我们不仅要掌握这些技术,更要理解它们的背后逻辑,才能做出更明智的决策。

“编程语言的选择,就像是工具的选择,合适的工具能让你事半功倍,错误的选择会让你的努力付诸东流。”

 

作者:土豆居士

来源:一口Linux

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高效自携式潜水装备,助力水下探索|鼎跃安全

水域安全是水上作业、救援和科研活动的重要保障,面对复杂多变的水下环境,一套轻便、高效的全能的智能设备,能在极大的程度上给潜水活动提供保障。传统潜水装备因体积庞大、操作复杂,已无法满足多样化任务需求。自携式潜水装备凭借…

uni-app深度解码:跨平台APP开发的核心引擎与创新实践

在当今数字化浪潮中,移动应用市场呈现出爆炸式增长。为了满足不同用户群体在不同操作系统上的需求,跨平台 APP 开发成为众多开发者的首选策略。uni-app 作为一款领先的跨平台开发框架,以其独特的优势和创新的实践在众多同类产品中脱颖而出。它…

【74HC192减法24/20/72进制】2022-5-17

缘由用74ls192设计一个72进制的减法计数器,需要有逻辑电路图-硬件开发-CSDN问答

第十届“挑战杯”大学生课外学术科技作品竞赛解析及资料

“挑战杯”被誉为大学生科技创新创业的“奥林匹克”盛会,它汇聚了来自各个学科、各个年级的精英人才。在这里,同学们带着对未知的好奇和对知识的渴望,组成一个个团队,向难题发起挑战。现在,第十届“挑战杯”大学生课外…

Linux实验报告14-Linux内存管理实验

目录 一:实验目的 二:实验内容 1、编辑模块的源代码mm_viraddr.c 2、编译模块 3、编写测试程序mm_test.c 4、编译测试程序mm_test.c 5、在后台运行mm_test 6、验证mm_viraddr模块 一:实验目的 (1)掌握内核空间、用户空间&#xff…

趣味编程:心形曲线

目录 1.序言 2.代码展示 3.代码详解 3.1 头文件包含 3.2 绘制坐标轴函数 3.3 main 函数主体部分 4. 小结 1.序言 2025年的第一篇博客就用这个笛卡尔心形图开篇吧,寓意着新年大家能够有心有所属,祝诸位程序猿 / 程序媛 能够早点遇到自己的另一半。…

Ansys Aqwa 中 Diffraction Analysis 的疲劳结果

了解如何执行疲劳分析,包括由 Ansys Aqwa 计算的海浪行为。 了解疲劳分析 大多数机器故障是由于负载随时间变化,而不是静态负载。这种失效通常发生在应力水平明显低于材料的屈服强度时。因此,当存在动态载荷时,仅依赖静态失效理…

CAD图块是什么?如何进行CAD图块分解?

CAD图块是CAD软件中的一个重要概念,它指的是由一组图形元素(如点、线、弧、圆、多边形等)组合而成的整体。在CAD画图中,为了能够简化操作、提高效率,保持设计的一致性,很多时候,我们会选择建立C…

黑马JavaWeb开发跟学(十四).SpringBootWeb原理

黑马JavaWeb开发跟学 十四.SpringBootWeb原理 SpingBoot原理1. 配置优先级2. Bean管理2.1 获取Bean2.2 Bean作用域2.3 第三方Bean 3. SpringBoot原理3.1 起步依赖3.2 自动配置3.2.1 概述3.2.2 常见方案3.2.2.1 概述3.2.2.2 方案一3.2.2.3 方案二 3.2.3 原理分析3.2.3.1 源码跟踪…

被催更了,2025元旦源码继续免费送

“时间从来不会停下,它只会匆匆流逝。抓住每一刻,我们才不会辜负自己。” 联系作者免费领💖源💖码。 三联支持:点赞👍收藏⭐️留言📝欢迎留言讨论 更多内容敬请期待。如有需要源码可以联系作者免…

Python基础语法(上)

目录 一、print函数及常量表达式 1.print函数 2.常量表达式 二、变量 1.定义变量的规则 2.python的动态类型特性 3.字符串 三、注释 四、input函数 1.input函数 2.变量类型转换 五、运算符 1.算数运算符 2.关系运算符 (1)整形的比较 &am…

2024 年度总结

时光荏苒,2024 年即将画上句号,回顾这一年的写博历程,有付出、有收获、有成长,也有诸多值得回味与反思的瞬间。 一、内容创作 主题涉猎:这一年,我致力于探索多样化的主题,以满足不同读者群体的…

汉王扫描王 2.9.16 |免费无广告的智能扫描软件,支持多种格式导出

汉王扫描王是一款功能全面的智能扫描软件,集成了文字识别、表格提取和文档转换等功能。它支持将文档转换为PDF、Word、Excel等多种格式,非常适合学生、教师、业务人员和财务工作者使用。该软件具备手机扫描仪功能,能够自动抠边、矫正文档&…

“善弈者”也需妙手,Oclean欧可林:差异化不是说说而已

作者 | 曾响铃 文 | 响铃说 俗话说,“牙痛不是病,痛起来要人命”。这话意思大家都知道,牙痛虽不是什么大病,可一旦发作却是极难忍受。 前几日,Oclean欧可林举办了一场AirPump A10氧气啵啵冲牙器新品品鉴会&#xff…

VBA 64位API声明语句第005讲

跟我学VBA,我这里专注VBA, 授人以渔。我98年开始,从源码接触VBA已经20余年了,随着年龄的增长,越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友,都来学习VBA,利用VBA,起码可以提高…

golang 编程规范 - 项目目录结构

原文:https://makeoptim.com/golang/standards/project-layout 目录结构 Go 目录 cmdinternalpkgvendor 服务端应用程序目录 api Web 应用程序目录 web 通用应用程序目录 buildconfigsdeploymentsinitscriptstest 其他目录 assetsdocsexamplesgithooksthird_par…

OFDM学习-(二)长短序列和PPDU整体数据处理流程

OFDM学习 (二)长短序列和PPDU整体数据处理流程 OFDM学习前言一、短序列短序列的作用 二、长序列三、PLCP/SIGNAL/DATA数据处理流程三、fpga实现STS模块LTS模块训练序列模块仿真波形 总结 前言 根据框图可以知道发射机这部分信号在DA转换之前&#xff0c…

解决 `pnpm install` 出现 `ERR_PNPM_ENOENT` 错误的方法

解决 pnpm install 出现 ERR_PNPM_ENOENT 错误的方法 在使用 pnpm 进行项目开发时,我们可能会遇到 ERR_PNPM_ENOENT 这样的错误,本文将详细介绍该错误的解决方法。 错误描述 当我们运行 pnpm install 命令时,可能会遇到如下错误信息&#…

Flutter中的网络请求图片存储为缓存,与定制删除本地缓存

Flutter中的网络请求图片存储为缓存,与定制删除本地缓存 1:封装请求图片函数 2:访问的图片都会转为本地缓存,当相同的请求url,会在本地调用图片 3:本地缓存管理【windows与andriod已经测试】【有页面】【有…

数据库新建用户后(Host:%),报错:localhost无法连接

存在问题 在给数据库(MySQL、MariaDB等)创建了新的用户名(eg:maxscale)后,无法使用新用户名登录,并报如下错误:ERROR 1045 (28000): Access denied for user maxscalelocalhost (us…