编程语言趋势

The Programming Languages Beacon
v16 - March 2016

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:

5th of March 2016, v16: fixed a lot of entries.
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
  
     
  
  Objective-CThe 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
2007 
  Objective-CThe iPhone, iPod Touch and iPad use a modified version of Mac OS.
2008
 
  Android is based on Linux, which is coded in C. The user interface is Java. Apps (not covered here) are mostly Java.
   
   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++.
2007
 
    The Kindle runs Linux.
 
 


(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
 
   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 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.
   
 PythonThis is a fork of OpenOffice. The code is still mainly C++. Some Python added.
   

(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 technologyhad 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
 
  Only Assembler, C and C++ in the core.
  
    
  
  PerlMariaDB is a fork of MySQL. More than half of the code is C++. The remainder is made of C and Perl.
 
    
 
    
 
    
SAP DB/MaxDB   
    
Family/Product
Date
ASM
C
C++
Java
C#
Others
Notes
NoSQL databases, Big data
  
    
  
 Python, Go, RubyAt Google, all infrastructure is done using C++, and C++ alone. Peripheral functions can be developed using other languages.
   
  Hadoop is inspired from Google File System.
   
   
2015
  
   ScyllaDB is a C++ rewrite of the Java-based Apache Cassandra. It claims a 10-fold improvementin performance over Cassandra. This would be at least in part due to the usage of a C++ framework: Seastar.
2009
  
    
      Erlang 
2015
  
   Couchbase source base, initially CouchDB, was first Erlang-based, like CouchDB. Then some Gowas added. In 2012, 2+ man months chasing a very low level race bug in Erlang's virtual machine, Erlang was not considered trustable, and C was gradually introduced. In 2013, Damien Katz wrote about his discovery of C's merits. In spite of Katz' criticism of C++, after his departure from Couchbase, the code was actively converted to C++.
2011
  
   Done by Google.
2016
  
   Fork of LevelDB done by Facebook.
Family/Product
Date
ASM
C
C++
Java
C#
Others
Notes
Web Browsers
Microsoft Edge (ex. Internet Explorer)
2014
  
    
   
    
  
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++.
7-Jan-03
  
   Browser for Apple Mac OS, its foundation is WebKita C++ framework.
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++.
    


(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.
   
    
   
 PikeOpera 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 was the first widely spread browser, it morphed into Netscape.
Family/Product
Date
ASM
C
C++
Java
C#
Others
Notes
Mail Clients
   
    
    
   
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   
  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 JavaScriptIn 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, GoFor 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)   
    
Clang/LLVM compiler suite   
    
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      PHPPowers Wikipedia
TWiki      Perl 
Google Blogger      PythonThe software has been re-engineered several times, for instance in 2002 and 2006.
Google Wave2009   


(August 2010)

  Google Wave user interface used Google Web Toolkit. which allowed to program the UI using Java and generate JavaScript code. The server usedJava too.
Flickr      PHP 
Family/Product
Date
ASM
C
C++
Java
C#
Others
Notes
Digital audio editors
  
    
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 
Nullsoft Winamp   
    
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/11002009   


(2009)

  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 vincent@lextrait.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值