程序语言及其它们的应用领域

The Programming Languages Beacon
v15 - September 2015

This table contains a list of major software products or utilities, with details about the programming languages used to implement them. Information on this is difficult to find, and a few small mistakes might have escaped the author‘s attention. Corrections, suggestions for additions or even references are welcome. The list is not supposed to be exhaustive but the most significant products are tentatively listed. The order of the products in each family obeys no specific rule, the reader should not understand it as a ranking.
The main programming language, the one with which most of new developments are done, is highlighted, while the ones used in older times and still present, or used only for a minority of the developments are indicated too. The pieces of software listed are usually very large, and the list of programming languages cannot be exhaustive. Miscellaneous languages are not mentioned. Sometimes, there are different products under the same line (eg "Games"), or different implementations of a single line (eg JVM implementations). In this case, the overwhelming trend is indicated. Miscellaneous counter examples are ignored.
Some readers believe that most of the applications presented are based on old code, and that the technologies in use reflect the trends of the time. As it is an erroneous belief, some introduction dates are mentioned, like here, or here to show that what is "new" or "old" technology does not necessarily correspond to intuition.

The difference between C and C++ is a bit artificial, as it is always possible to argue that most of C code is C++ code, or conversely (as more than a few people use C++ more or less like C). The approximation made in this document tries to correspond to intuition.

indicates the major programming language for current evolutions.
refers to a technology which is present, but is either stable or decreasing.
means that the product has died, and when it died, it used that technology
is meant to show an evolution towards the column it points to.

When the arrow is alone, it means that the amount of code corresponding to the technology in this column is either now null or negligible, having evolved in the direction of the arrow.

The readers who might find the content of this page paradoxical will find a tentative explanation of the phenomenons at stake here. Read the section entitled "Time will come when computers will be fast enough".

11,425 visits to this page on the 12th of April 2012 over 24h, record beaten!

Release notes:

17th of September 2015, v14: added NoSQL databases.
13th of December 2013, v13: normalized version numbers (now year number). Fixed gcc.
25th of January 2013, v11.1: Symbian declared dead.
20th of January 2013, v11: updated amazon, added Evernote, LinkedIn, DropBox.
21st of April 2012, v10.8: updated the SAP section.
14th of April 2012, v10.7: following overwhelming feedback, reverting gcc to C. Also added Java on Android OS, and renamed Open Office.
10th of April 2012, v10.6: added a note for C# implementation, with a reference to project Roslyn. Updated also Visual Studio technology to add C#. Thanks Hrvoje.
6th of April 2012, v10.5: changed gcc from C to C++, added youtube on Python
24th of November 2010, v10.4: fixed Perl line (C and not C++), added termination of Google Wave
14th of July 2010, v10.3: added info on iPad OS, iPod Touch OS in addition to iPhone OS. Added info on Eclipse RCP
5th of March 2010, v10.2: added PayPal entry
8th of February 2010, v10.1: added reference to HipHop in the facebook entry
2nd of January 2010, v10.0: added Pike to Opera Mini. Changed release numbering to year.release
15th of November 2009, v3.9: added Google Wave, Apple iPhone OS and Amazon Kindle OS entries.
15th of August 2009, v3.8: added a universal remotes section.
9th of July 2009, v3.7: added Google Chrome OS.
17th of May 2009, v3.6: update the Lotus Notes entry.
11th of May 2009, v3.5: updated the Compilers/Interpreters section (thanks, Northwood).
14th of April 2009, v3.4: added facebook.
1st of April 2009, v3.3: page is now color blind friendly.
8th of September 2008, v3.2: added Google Chrome.
4th of July 2008, v3.0: fixed BlackBerry OS info.
22nd of November 2007, v2.9: added Google Android.
21st of October 2007, v2.8: added a mail servers section.


Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Operating Systems

Microsoft Windows

 


      Some attempts were made to put some C# in Windows Mobile (e.g. the soft keyboard). The result was judged too slow to be incorporated in the final product and was reverted to C++.
The windows kernel is written in C (and compiled as C).
The amount of assembler is limited to a few thousand lines.

Linux

   
         

Apple MacOS

   

    Objective-C The first version of user interface of the MacOS was inspired by the Xerox Alto user interface which introduced the WIMP concept. The user interface was implemented in SmallTalk, and to run it, the hardware was far too expensive for mass market. Early versions of MacOS used Assembler and Pascal

Sun Solaris

   
         
HP-UX    
         
Google Chrome OS
2009
 

      Google Chrome is based on Linux and Chrome.
OSv
2013
   
       

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Operating Systems for Mobiles

Apple iOS

2007  

    Objective-C The iPhone, iPod Touch and iPad use a modified version of Mac OS.

Google Android

2008
 


    Android is based on Linux, which is coded in C. The user interface is Java. Apps (not covered here) are mostly Java.

RIM BlackBerry OS 4.x
     
      RIM makes it mandatory for application developers to use Java as a programming language on BlackBerry. People tend to confuse this with the technology used to develop the operating system. The BlackBerry OS itself is developed using C++.

Amazon Kindle OS

2007
 
        The Kindle runs Linux.

Symbian OS
 
 


(2013)

      Symbian was still the leading operating system for phones in 2010. Its market share dropped to 4.4% in Q2 2012. It has been declared dead on January 24, 2013.

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Graphical Layers

Microsoft Windows UI      
       
Apple MacOS UI (Aqua)      
       
Gnome    

       
KDE      
       

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Desktop Search

Google Desktop Search      
       
Microsoft Windows Desktop Search      
       
Beagle          


(2009)

   

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Office Products

Microsoft Office

 


      Traditionally, MS Office was developed using assembler, then development moved to C, later, when C++ arose, everything new was done using C++. Currently there is no plan to change. A small attempt was made to develop a miscellaneous single panel in C#, a few years back. It is not known if it has been kept.

Apache OpenOffice

     

    Apache Open Office, acquired in 1999 by Sun Microsystems from Star Division. No attempt has been made by Sun to convert the code into Java. Java is however used for some miscellaneous modules.

Corel Office/WordPerfect Office

     

(August 1997)

    Corel Office, initially developed in Assembler and C, moved to Corel Office for Java, fully developed in Java for portability in 1996, and abandoned in August 1997 because it was too slow. The code was later redeveloped using C and C++.
Adobe Systems Acrobat Reader/Distiller      
       
Evernote      
 

(October 2010)

  Evernote v3.5 was coded in C#. The technology had to be changed to gain speed. The current programming language from v4.0 is C++.

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

RDBMS


Oracle database
 



    Only Assembler, C and C++ in the core.

MySQL
     
       

IBM DB2
 


       

Microsoft SQL Server
 


       

IBM Informix
 


       
SAP DB/MaxDB      
       

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

NoSQL databases, Big data


Google BigTable
       
  Python, Go, Ruby  

Apache Hadoop
       
     

Apache Cassandra
       
     

ScyllaDB

2015
   
      ScyllaDB is a C++ rewrite of the Java-based Apache Cassandra. It claims a 10-fold improvement in performance over Cassandra. This would be at least in part due to the usage of a C++ framework: Seastar.

MongoDB

2009
   
       

CouchDB
            Erlang  

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Web Browsers


Microsoft Internet Explorer
     
       

Mozilla Firefox
     
       

Netscape Navigator
   

see Mozilla

    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

7-Jan-03
   
      Browser for Apple Mac OS, its foundation is WebKit, a C++ framework.

Google Chrome

2-Sept-08
   
      Chrome has been introduced as the combination of 26 different libraries. The base code comes from WebKit (C++) which powers Safari as well. One of its key propositions is the ultra fast V8 JavaScript engine, written essentially in C++.

Sun HotJava
       


(1999)

    HotJava never took off, it was far too slow compared to other browsers. It became a showcase for the Java applet technology and the product is now frozen since 1999.

Opera
     
       

Opera Mini
     

  Pike Opera Mini (2007) has a very funny architecture, and is indeed using C++, Java and Pike. 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. A significant part of the server uses Pike. This original architecture 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
   
        Mosaic was the first widely spread browser, it morphed into Netscape.

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Mail Clients


Microsoft Outlook
     
       

IBM Lotus Notes
       
     

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Development Environments

Microsoft Visual Studio      
 
  Visual Studio 2010 was still mostly native code, but for the UI presentation it adopted the managed WPF framework. This holds true for later versions. plug-ins are also using more and more C#.
Eclipse        

(see notes)
    To build Eclipse, a specific graphical toolkit was developed, SWT to replace Java classical AWT or Swing (considered too slow). SWT is a thin Java layer on top of native C/C++ code. SWT is now part of Eclipse RCP.

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Virtual Machines

Microsoft .Net CLR      
       
Java Virtual Machine (JVM)      
       

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

ERP

SAP ERP    

   

ABAP
SAP ERP is programmed in ABAP, which generates C code. The SAP kernel is itself coded using C and C++.
Oracle Peoplesoft      

 

PeopleCode
Peoplesoft relied on BEA Tuxedo and C++ code, now moving to Oracle WebLogic and Java, keeping the PeopleCode language. The C++ code is apparently not reengineered.
Oracle E-Business Suite        
     

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Business Intelligence

Business Objects      
       

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Graphics Editors

Adobe Photoshop      
       
The GIMP    
      Some Perl  

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Search Engines

Google  
 
       

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Web Sites

eBay      
(2002) 

    Information on eBay architecture and the move from C++ to Java can be found here.  
PayPal      
       
Amazon      

 
    Amazon initially using C++ extensively is now using an increasing amount of Java.
facebook
26-Sep-2006
   
   

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.
In 2009 and 2010, facebook developers have made a shift towards C++ with HipHop, a PHP to C++ translator which allows to reduce by 50% the hardware needed to operate the site.
YouTube             Python, proprietary JavaScript In case of doubt, just have a look here. YouTube is i/o bound, so the technology business logic is made of is probably a bit irrelevant.
LinkedIn        
 
     
DropBox             Python, Go For details, have a look here.

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes
Games  


      A lot of games on smart phones are developed using Java. This entry refers to "full service" disk based games.

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Compilers/Interpreters

Microsoft Visual C++      
       
Microsoft Visual Basic      
       
Microsoft Visual C#      
      It is worth noting that Microsoft is running a project called Roslyn which contains a C# compiler written in C#.
gcc (GNU Compiler Collection)      
       
javac (Sun Java compiler)        
     
Perl    
         
PHP    
        It must be noted that PHP is a script running a lot of imported libraries, themselves either programmed in C or C++.

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

3D Engines

Microsoft DirectX      
       
OpenGL    
         
OGRE 3D      
       

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Web Servers

Apache    

       
Microsoft IIS      
       

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Mail Servers

Microsoft Exchange Server    

       
Postfix    
         
hMailServer      
 
   
Apache James        
    Apaches James has not evolved as a stable release since 2009.

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Web 2.0

MediaWiki             PHP Powers Wikipedia
TWiki             Perl  
Google Blogger             Python The software has been re-engineered several times, for instance in 2002 and 2006.
Google Wave 2009      


(August 2010)

    Google Wave user interface used Google Web Toolkit. which allowed to program the UI using Java and generate JavaScript code. The server used Java too.
Flickr             PHP  

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Digital audio editors

Audacity

   

       

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

CD/DVD Authoring

Nero Burning ROM      
       
K3B      
       

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Multimedia Players

VLC

   

    Objective-C, Lua  
NullsoftWinamp      
       
Microsoft Windows Media Player      
       
Apple iPod software      
       

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Peer to Peer

eMule      
       
µtorrent      
       
Vuze (previously Azureus)        
    Vuze is built on top of SWT, see notes corresponding to Eclipse.

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

GPS Systems

TomTom      
       
Hertz NeverLost      
       
Garmin      
       
Motorola VIAMOTO
2003
     


(June 2007)

    Motorola VIAMOTO was a smart phone "connected" GPS implementation, with a Java client-side. It was re-branded by a number of car rental companies. For instance, Avis Assist was another name for the Motorola VIAMOTO product. Avis have withdrawn this product and are now offering Garmin in the USA and TomTom in Europe. Motorola withdrew the product in June 2007. Alamo/National who had re-branded the system "Navigation Station" will also discontinue the service.

Family/Product

Date

ASM

C

C++

Java

C#

Others

Notes

Universal remotes

Logitech Harmony 1000/1100 2009      


(2009)

 

Flash
The UI of the Harmony 1100 is now Flash based vs the Java UI found in the Harmony 1000.

This page is maintained by Vincent Lextrait (e-mail [email protected])

时间: 2024-10-07 05:26:01

程序语言及其它们的应用领域的相关文章

了解的应用领域 程序语言的岗位

各种常见的编程语言最广泛应用的领域分别是 C 操作系统.嵌入式.自动化控制C++ 游戏.游戏服务器框架及游戏引擎.一些GUI框架.科研.编译器.图形学C# Windows Phone.Windows桌面应用..NET webJava Web.AndroidGo 服务器.据说设计的初衷是代替C++,具体如何还要观望Erlang 高并发服务器Python Web.科学计算.运维Ruby WebPerl 运维.文本处理Lisp 科研.Emacs. Haskell 商业应用蛮少的记得有个比较有名的做金融

程序语言的奥妙:算法解读 ——读书笔记

算法(Algorithm) 是利用计算机解决问题的处理步骤. 算法是古老的智慧.如<孙子兵法>,是打胜仗的算法. 算法是古老智慧的结晶,是程序的范本. 学习算法才能编写出高质量的程序. 懂得了算法,游戏水平会更高. 比如下棋,如果懂得棋谱,就不需要每次考虑"寻找最好的一步棋",按照棋谱 就可以走出最好的几步棋.棋谱是先人们智慧的结果,因此掌握多种棋谱的人更 容易在对弈中获得胜利. 算法的学习类似学习游戏攻略. 算法是编写好程序的"棋谱". 算法必须满足&

关于《程序语言-平台优越性》一文补充说明

尊敬的各位读者,大家好 ! 关于24号发表的 <程序语言-平台优越性>一文有很多读者反馈,批评,对此,我对自己片面的程序认识表示歉意! 发表该文,意义不在与程序如何使用,而是各个语言平台在将来市场中对使用者造成的影响如何?哪个平台才能经久不衰,提供给用户最实用.最贴心的服务?鉴于此,我言语不当,意表不明,还望见谅! 在以后的日子里,我会继续研究和认知语言平台相互的优劣势,另外在言语表述方面也会注意恰当用此,做到言表易明,争取让每个人都能看得懂! 再次,我表述一下<程序语言-平台优越性&g

2014年最流行的10种程序语言

通过计算机行业记者Nick Diakopoulos的努力,IEEE Spectrum从10个信息源(包括 IEEE Xplore,Google和GitHub等等)获取数据,并通过12个指标加权和组合,来对当今最流行的程序语言进行排名(如下图所示). 排名前十位的依次分别是:Java,C,C++,C#,Python,Java script,Php,Ruby,Sql,Matlab. 如果你不赞成这种取权重的方式,想要看到更多的程序语言,或者在某个特殊领域哪种程序语言占主导地位,比如手机行业,也可以进

简单易懂的程序语言入门小册子(9):环境,引入环境

\newcommand{\mt}[1]{\text{#1}} \newcommand{\mE}{\mathcal{E}} \newcommand{\tup}[1]{\left<{#1}\right>} 环境类似于其他语言(C++.JAVA等)的"符号表". 所谓符号表,是一张将变量名与变量代表的内容联系起来的一张表. 不过这里我们抛弃符号表的观点,单纯地从算法角度上引入环境这一概念. 引入环境 通过修改解释器求值过程的算法,可以很自然的引入环境这个概念. 在前面基于文本替换

简单易懂的程序语言入门小册子(6):基于文本替换的解释器,引入continuation

当我写到这里的时候,我自己都吃了一惊. 环境.存储这些比较让人耳熟的还没讲到,continuation先出来了. 维基百科里对continuation的翻译是"延续性". 这翻译看着总有些违和感而且那个条目也令人不忍直视. 总之continuation似乎没有好的中文翻译,仿佛中国的计算机科学里没有continuation这个概念似的. Continuation这个概念相当于过程式语言里的函数调用栈. 它是用于保存"现在没空处理,待会再处理的事"的数据结构. 这样说

[MATH] - 数学语言和程序语言的对比

共同之处:都使用字符串或数值来引用一个客观实体.当然数字和字符串也可以作为实体对象,这取决于人的解释. 不同之处:数学语句每一行都给出了一个结论, 程序语句的每一行都定义了一个过程.注意这里所指的程序语句不局限于计算机编程语言,在进行数值逼近解微分方程的时候,表达式成为了程序语句. 数学语句的每一行都是一个结论,在给定范围内,每个符号只能引用同一个实体,换句换说,每个符号都是”给定“或”任意给定” 的!意味着这行语句可以成为所有后来出现的结论的前提条件.但是在程序语言中,一个符号可以引用不同的实

王垠:如何掌握程序语言(转)

王垠:如何掌握程序语言 学习程序语言是每个程序员的必经之路.可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”.所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰. 学习程序语言是每个程序员的必经之路.可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”.所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰. 作为一个程序语言的研究者,我深深的知道这种心理产生的根源.程序语言里面其实有

二、程序语言基础知识

1.语言概述 基本概念 机器指令程序,最基本的计算机语言,二进制的机器指令序列: 汇编语言,书写格式取决于特定计算机的机器指令. 以上皆是低级语言,面向机器的语言. 高级语言:不依赖于机器硬件的程序语言.如:java.c.c++.php.python…… 语言处理程序:将高级语言或汇编语言翻译为机器语言. 方式分为:汇编.解释.翻译    源程序 解释程序:即解释器,将源程序翻译为中间代码 编译程序:即编译器,将源程序翻译成目标语言程序 区别:解释器,不生成独立的目标程序,解释程序和源程序(或其