当前位置: 首页 > news >正文

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

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

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

 

不同软件选择不同语言的原因
  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

 

相关文章:

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

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

设计模式 结构型 代理模式(Proxy Pattern)与 常见技术框架应用 解析

代理模式(Proxy Pattern)是一种常见的设计模式,在软件开发中有着广泛的应用。其核心思想是通过创建一个代理类来控制对另一个对象的访问,从而实现对目标对象功能的扩展、保护或其他附加操作。 一、核心思想 代理模式的核心思想在…...

Linux环境(CentOs7) 安装 Node环境

Linux环境(CentOs7) 安装 Node环境 使用NodeSource安装Node.js 1、清除缓存(可选但推荐) sudo yum clean all2、添加NodeSource仓库,根据你想要安装的Node.js版本,选择相应的NodeSource安装脚本。例如&am…...

Tailwind CSS 实战:现代登录注册页面开发

在前端开发中,登录注册页面是最常见的需求之一。一个设计精美、交互友好的登录注册页面不仅能提升用户体验,还能增加产品的专业度。本文将详细介绍如何使用 Tailwind CSS 开发一个现代化的登录注册页面。 设计思路 在开始编码之前,我们先明…...

Unity2022接入Google广告与支付SDK、导出工程到Android Studio使用JDK17进行打包完整流程与过程中的相关错误及处理经验总结

注:因为本人也是第一次接入广告与支付SDK相关的操作,网上也查了很多教程,很多也都是只言片语或者缺少一些关键步骤的说明,导致本人也是花了很多时间与精力踩了很多的坑才搞定,发出来也是希望能帮助到其他人在遇到相似问…...

反向传播算法的偏置更新步骤

偏置的更新步骤 假设我们有一个三层神经网络(输入层、隐藏层和输出层),并且每层的激活函数为 sigmoid 函数。我们需要更新隐藏层和输出层的偏置。以下是详细的步骤: 1. 计算误差项(Error Term) 输出层的…...

条款47:请使用 traits classes 表现类型信息(Use traits classes for information about types)

条款47&#xff1a;请使用 traits classes 表现类型信息 1.1 提出问题 想一想&#xff0c;下面的功能如何实现&#xff1f;&#xff08;可以查看std::advance源码&#xff09; template<typename IterT, typename DistT> void advance(IterT& iter, DistT d); /…...

yolov5和yolov8的区别

1. yolov5有建议框&#xff0c;yolov8没有建议框 2. yolov5标签中有自信度&#xff0c;而yolov8没有自信度。因为自信度是建议框和真实框的交集 3. yolov5有三个损失函数&#xff0c;回归问题&#xff1a;预测框和建议框的损失(中心点宽高偏移量的损失)&#xff1a;CIOUFocal…...

Redis 实现分布式锁

文章目录 引言一、Redis的两种原子操作1.1 Redis 的原子性1.2 单命令1.3 Lua 脚本1.4 对比单命令与 Lua 脚本 二、Redis 实现分布式锁2.1 分布式锁的概念与需求2.1.1 什么是分布式锁&#xff1f;2.1.2 分布式锁的常见应用场景 2.2 基于 Redis 的分布式锁实现2.2.1 锁的获取与释…...

django StreamingHttpResponse fetchEventSource实现前后端流试返回数据并接收数据的完整详细过程

django后端环境介绍&#xff1a; Python 3.10.14 pip install django-cors-headers4.4.0 Django5.0.6 django-cors-headers4.4.0 djangorestframework3.15.2 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 总环境如下&#xff1a; Package Version -…...

SpringSpringBoot常用注解总结

目录 1. SpringBootApplication 2. Spring Bean 相关 2.1. Autowired 2.2. Component,Repository,Service, Controller 2.3. RestController 2.4. Scope 2.5. Configuration 3. 处理常见的 HTTP 请求类型 3.1. GET 请求 3.2. POST 请求 3.3. PUT 请求 3.4. DELETE 请…...

24.小R的随机播放顺序<字节青训营-中等题>

1.题目 问题描述 小R有一个特殊的随机播放规则。他首先播放歌单中的第一首歌&#xff0c;播放后将其从歌单中移除。如果歌单中还有歌曲&#xff0c;则会将当前第一首歌移到最后一首。这个过程会一直重复&#xff0c;直到歌单中没有任何歌曲。 例如&#xff0c;给定歌单 [5, …...

【QT】增删改查 XML 文件的类

使用单例类模板实现的对XML文件的节点、属性、文本进行增删改查,可以直接用! 直接POST代码,比较简单好用。 针对以下格式的xml文件比较适用 每个节点的名称都不一样,节点包含了各种属性。 <?xml version="1.0" encoding="UTF-8"?> <config…...

Linux-掉电保护方案

参考链接 https://blog.csdn.net/pwl999/article/details/109411919硬件设计 设备树 驱动程序 #include <linux/module.h> #include <linux/init.h> #include <linux/interrupt.h> #include <linux/gpio.h>int irq;//中断服务函数 irqreturn_t tes…...

php获取字符串中的汉字

在PHP中&#xff0c;可以使用正则表达式来提取字符串中的汉字。汉字通常位于Unicode范围\u4e00-\u9fa5之内&#xff0c;因此可以使用preg_match_all函数配合适当的正则表达式来实现。 以下是一个PHP代码示例&#xff0c;它会从给定的字符串中提取出所有的汉字&#xff1a; fu…...

java: JDK isn‘t specified for module ‘product-service‘问题解决

目录 问题 解决方法 1.打开File->Project Structure... 2.将Project SDK修改为17 Oracle OpenJDK 17.0.12&#xff0c;并Apply&#xff0c;OK 问题 添加module后报错&#xff1a;java: JDK isnt specified for module product-service 查看pom.xml文件也添加了对应的JDK…...

使用工厂+策略模式实现去除繁琐的if else

使用工厂策略模式实现去除繁琐的if else 在中间有一个mapstruct的bug&#xff0c;即在修改实体类中的类型时&#xff0c;或者修改属性名字&#xff0c;mapstruct都无法进行转换&#xff0c;会报错&#xff0c;此时需要maven cleanmaven compile即可 前言 在这次的开发中&#…...

Dubbo3入门项目搭建

开发环境&#xff1a;jdk8、dubbo3.2.9、nacos2.3.0、springboot2.7.17、dubbo-admin0.6.0。 Dubbo 是一个高性能的 Java RPC&#xff08;远程调用&#xff09;框架&#xff0c;最初由阿里巴巴开发并开源&#xff0c;主要用于构建 SOA 架构下的分布式应用系统( soa简单理解就是…...

形象地理解UE4中的数据结构 TLinkedListBase

大家都熟知链表&#xff0c;但不一定能快速看懂UE4中的数据结构。 TLinkedListBase表示“链接”中的一个结点&#xff0c;有三个成员&#xff1a; 一、ElementType Element; 表示具体的业务&#xff0c;例如int链条中的一个整数。 二、NextLink 表示 “下一个Node”&#…...

Python自然语言处理利器:SnowNLP模块深度解析、安装指南与实战案例

Python自然语言处理之SnowNLP模块介绍、安装与常见操作案例 一、SnowNLP模块介绍 SnowNLP是一个专为中文文本设计的Python库&#xff0c;它基于自然语言处理技术&#xff0c;提供了多种功能&#xff0c;包括分词、词性标注、情感分析、文本转换&#xff08;简繁转换&#xff…...

【Python MCP服务器安全开发黄金模板】:20年专家亲授7大零信任实践与3层防御体系

第一章&#xff1a;Python MCP服务器安全开发黄金模板概览Python MCP&#xff08;Model-Controller-Protocol&#xff09;服务器是一种面向协议驱动、可扩展性强的后端服务架构&#xff0c;广泛应用于物联网控制平台与微服务网关场景。本章所介绍的“黄金模板”并非通用框架&am…...

戴森球计划FactoryBluePrints:解锁游戏工厂建造的终极免费蓝图库

戴森球计划FactoryBluePrints&#xff1a;解锁游戏工厂建造的终极免费蓝图库 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 还在为《戴森球计划》中复杂的工厂布局头疼吗&…...

AI Agent工程师进阶指南:掌握核心技能,冲击高薪(P7-P8必备)!

本文详细介绍了AI Agent工程师的能力分层&#xff0c;从API调用工程师到系统设计工程师再到基础设施架构师&#xff0c;明确了不同层级的能力要求和市场现状。文章深入剖析了核心技术栈&#xff0c;包括向量数据库、RAG系统、Agent架构、Memory系统以及生产化工程等关键领域&am…...

如何跨越语言盲区,让学术表达精准落地

当我们完成了精妙的实验设计&#xff0c;获得了宝贵的数据&#xff0c;准备向世界展示科研成果时&#xff0c;却常常在“最后一公里”遭遇阻碍。这种阻碍并非源于科研本身的深度&#xff0c;而是来自于语言表达的信心不足与自查盲区。你是否也有过这样的经历&#xff1a;对着屏…...

Linux性能优化之上下文切换

写在前面 上下文切换因为会导致消耗大量的CPU资源&#xff0c;导致CPU升高&#xff0c;所以上下文切换也是最常见的性能杀手之一。本文就一起来看下这部分内容吧。 1&#xff1a;基础内容介绍 1.1&#xff1a;什么是上下文切换&#xff1f; CPU在执行的时候需要两部分的内容…...

原创:第三篇(工程落地・首个抓手)电磁筑基:无线充电工程落地总案

第三篇&#xff08;工程落地・首个抓手&#xff09;电磁筑基&#xff1a;无线充电工程落地总案 作者&#xff1a;华夏之光永存 总摘要 当前人类电磁学应用仍处于婴孩阶段&#xff0c;现有电磁能量传输技术多局限于有线模式&#xff0c;存在传输损耗高、场景适配性差、灵活性不足…...

工程仿真平台OpenRocket:从物理试验到数字孪生的技术跃迁

工程仿真平台OpenRocket&#xff1a;从物理试验到数字孪生的技术跃迁 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 在现代工程设计领域&#xff0c;物理…...

3步搞定大麦网自动抢票:告别手速不够的时代

3步搞定大麦网自动抢票&#xff1a;告别手速不够的时代 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 还在为抢不到心仪演唱会门票而烦恼吗&#xff1f;当周杰伦、五月天等热…...

别再手动改配置了!用Docker Compose一键部署Pikachu靶场,5分钟搞定测试环境

5分钟极速搭建Pikachu靶场&#xff1a;Docker Compose自动化实战指南 每次准备网络安全练习环境时&#xff0c;最头疼的莫过于反复安装配置各种服务——PHP版本不兼容、MySQL连接失败、Web服务器配置错误...这些琐碎问题消耗了本应用于渗透测试学习的宝贵时间。今天要分享的这套…...

从零搭建无人船:两年实战后,我总结的ArduPilot+Pixhawk避坑全流程

从零搭建无人船&#xff1a;两年实战后&#xff0c;我总结的ArduPilotPixhawk避坑全流程 第一次把无人船放进水里时&#xff0c;GPS信号突然丢失&#xff0c;船体在河中央失控打转——这个惊心动魄的瞬间让我意识到&#xff0c;开源飞控的实战应用远不是下载代码、连接硬件那么…...