The Programming Languages Beacon

 

 

The Programming Languages Beacon
v10.4 - November 2010

 

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".

Release notes:

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++.
Linux
  
     
  
  Some 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.
Operating Systems for Mobiles
 
 
   Symbian is the leading operating system for phones.
2008
 
    Android is based on Linux.
   
   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.
2007 
  Some Objective-CThe iPhone, iPod Touch and iPad use a modified version of Mac OS.
Graphical Layers
Microsoft Windows UI    
    
Apple MacOS UI (Aqua)    
    
Gnome  
    
KDE   
    
Desktop Search
Google Desktop Search   
    
Microsoft Windows Desktop Search    
    
Beagle     


(2009)

  
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.
   
  Sun Micro Open Office, acquired in 1999 from Star Division. No attempt has been made to convert the code into Java. Java is however used for some miscellaneous modules.
   

(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   
    
RDBMS
 
  Only Assembler, C and C++ in the core.
   
    
 
    
 
    
 
    
SAP DB/MaxDB   
    
Web Browsers
   
    
   
    
  
  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 WebKit, a C++ framework.
2-Sept-08
  
   Chrome has been introduced as the combination of 26 different libraries. The base code comes from Safari . One of its key propositions is the ultra fast V8 JavaScript engine, written 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 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.
Mail Clients
   
    
    
   
Development Environments
Microsoft Visual Studio    
    
Eclipse    

(see notes)
  

Eclipse is mostly on the market not covered by MS Visual Studio. To build it, a specific graphical toolkit was developed, SWT to replace Java classical AWT. Unlike AWT which is full Java, and judged too slow for the intensive Eclipse users, SWT is a thin Java layer on top of native C/C++ code. SWT is now part of Eclipse RCP.

Virtual Machines
Microsoft .Net CLR   
    
Java Virtual Machine (JVM)   
    
ERP
SAP mySAP ERP   
   

ABAP/4
 
Oracle Peoplesoft    
  Peoplesoft relied on BEA Tuxedo and C++ code, now moving to BEA WebLogic and Java, keeping the POOPL language. The C++ code is apparently not reengineered.
Oracle E-Business Suite     
   
Business Intelligence
Business Objects    
    
Graphics Editors
Adobe Photoshop   
    
The GIMP   
   Some Perl  
Search Engines
Google 
 
    
Web Sites
eBay   
(2002) 
  Information on eBay architecture and the move from C++ to Java can be found here. 
PayPal   
    
Amazon   
 
   
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.
Games 
   A lot of games on smart phones are developed using Java. This entry refers to "full service" disk based games.
Compilers/Interpreters
Microsoft Visual C++    
    
Microsoft Visual Basic    
    
Microsoft Visual C#    
    
gcc (GNU C compiler)  
     
javac (Sun Java compiler)    
   
Perl  
     
PHP  
     
3D Engines
Microsoft DirectX   
    
OpenGL  
     
OGRE 3D    
    
Web Servers
Apache  
    
Microsoft IIS    
    
Mail Servers
Microsoft Exchange Server  
    
Postfix  
     
hMailServer   
 
  
Apache James    
   
Web 2.0
MediaWiki      

PHP
Powers Wikipedia
TWiki      

Perl
 
Google Blogger       Unknown details, the 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 used Java too.
Flickr      

PHP
 
CD/DVD Authoring
Nero Burning ROM    
    
K3B   
    
Multimedia Players
Nullsoft Winamp   
    
Microsoft Windows Media Player    
    
Apple iPod software    
    
Peer to Peer
eMule   
    
µtorrent   
    
Azureus    
  Azureus is built on top of SWT, see notes corresponding to Eclipse.
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.
Universal remotes
Logitech Harmony 1000/1100
2009
   


(2009)

 

Flash
The Operating system of the Harmony 1100 is now Flash based vs the Java based operating system (UI?) found in the Harmony 1000.

This page is maintained by Vincent Lextrait (e-mail vincent@lextrait.com)

关闭提示 关闭

确 认 取 消
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值