0% found this document useful (0 votes)
114 views

Algoritmos The Programming Languages Beacon

This document provides a list of major software products and the programming languages used to implement them. It notes that the list is not exhaustive and contains some approximations. The document includes sections on operating systems, compilers/interpreters, games, office suites, databases, and more. It provides the major languages used for each product or family and notes evolutions over time. The document has received over 11,000 views in a 24 hour period, setting a new record.

Uploaded by

gproly
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
114 views

Algoritmos The Programming Languages Beacon

This document provides a list of major software products and the programming languages used to implement them. It notes that the list is not exhaustive and contains some approximations. The document includes sections on operating systems, compilers/interpreters, games, office suites, databases, and more. It provides the major languages used for each product or family and notes evolutions over time. The document has received over 11,000 views in a 24 hour period, setting a new record.

Uploaded by

gproly
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 15

The Programming Languages Beacon

v10.8 - April 2012

http://www.lextrait.com/vincent/implementations.html

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

Dat
Family/Product ASM C C++ Java C# Others Notes
e
Operating Systems
Some attempts
were made to
put some C# in
Windows
Mobile (e.g.
the soft
keyboard). The
Microsoft
        result was
Windows
judged too
slow to be
incorporated in
the final
product and
was reverted to
C++.
Linux              
Apple MacOS         Objective- The first
C 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
Google Chrome 200 Chrome is
       
OS 9 based on Linux
and Chrome.
Operating Systems for Mobiles
Symbian was
still the leading
operating
Symbian OS          
system for
phones in
2010. Now?
Android is
based on
Linux, which
is coded in C.
200 The user
Google Android      
8 interface is
Java. Apps
(not covered
here) are
mostly Java.
RIM BlackBerry             RIM makes it
OS 4.x 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 200 The Kindle
         
OS 7 runs Linux.
The iPhone,
iPod Touch
Apple iPhone
200 Objective- and iPad use a
iPod Touch and      
7 C modified
iPad OS
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
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 Open
Office,
acquired in
1999 by Sun
Microsystems
from Star
Division. No
Apache attempt has
         
OpenOffice been made by
Sun to convert
the code into
Java. Java is
however used
for some
miscellaneous
modules.
Corel           Corel Office,
Office/WordPerfe initially
ct Office (Augu developed in
st Assembler and
1997) 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
Oracle database      
and C++ in the
core.
MySQL              

IBM DB2          
Microsoft SQL
         
Server
IBM Informix          

SAP DB/MaxDB              

Web Browsers
Microsoft
             
Internet Explorer
Mozilla Firefox              
The code of
Netscape
browser was
written in C,
and Netscape
engineers, all
bought to Java
(see M.
Cusumano
book and
Netscape article)
    see Mozilla    
Navigator redeveloped
the browser
using Java. It
was too slow
and
abandoned.
Mozilla, the
next version,
was later
developed
using C++.
Safari 7-           Browser for
Apple Mac
OS, its
Jan-
foundation is
03
WebKit, a C++
framework.
Chrome has
been
introduced as
the
combination of
26 different
libraries. The
base code
2- comes from
Google Chrome Sept           WebKit (C++)
-08 which powers
Safari as well.
One of its key
propositions is
the ultra fast
V8 JavaScript
engine, written
essentially in
C++.
HotJava never
took off, it was
far too slow
compared to
other browsers.
It became a
Sun HotJava            
(1999) 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 was
the first widely
spread
Mosaic            
browser, it
morphed into
Netscape.
Mail Clients
Microsoft
             
Outlook
IBM Lotus Notes              

Development Environments
Visual Studio
2010 was still
mostly native
code, but for
the UI
presentation it
adopted the
Microsoft Visual
          managed WPF
Studio
framework.
This holds true
for later
versions. plug-
ins are also
using more and
more C#.
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.
Eclipse         (see     Unlike AWT
notes) 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 ERP is
programmed in
ABAP, which
generates C
SAP ERP        
ABAP code. The SAP
kernel is itself
coded using C
and C++.
Peoplesoft
relied on BEA
Tuxedo and
C++ code, now
moving to
Oracle
WebLogic and
Oracle Peoplesoft         PeopleCod
Java, keeping
e
the
PeopleCode
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-         This line is
Sep- PHP only about
200 facebook, not
6 its plugins.
Plugins can be
developed in
many different
technologies,
thanks to
facebook's
ORB/applicati
on 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.
In case of
doubt, just
have a look
here. YouTube
is i/o bound, so
YouTube            
Python the technology
business logic
is made of is
probably a bit
irrelevant.
A lot of games
on smart
phones are
developed
Games         using Java.
This entry
refers to "full
service" disk
based games.
Compilers/Interpreters
Microsoft Visual
             
C++
Microsoft Visual
             
Basic
It is worth
noting that
Microsoft is
running a
Microsoft Visual
            project called
C#
Roslyn which
contains a C#
compiler
written in 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
Powers
MediaWiki            
PHP Wikipedia
TWiki              
Perl
Unknown
details, the
software has
been re-
Google Blogger               engineered
several times,
for instance in
2002 and
2006.
Google Wave
user interface
used Google
Web Toolkit.
which allowed
200 (Augu to program the
Google Wave          
9 st UI using Java
2010) 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 is
built on top of
SWT, see
Azureus            
notes
corresponding
to Eclipse.
GPS Systems
TomTom              
Hertz NeverLost              
Garmin              
Motorola 200           Motorola
VIAMOTO 3 (June VIAMOTO
2007) was a smart
phone
"connected"
GPS
implementatio
n, 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/Nationa
l who had re-
branded the
system
"Navigation
Station" will
also
discontinue the
service.
Universal remotes
The UI of the
Harmony 1100
is now Flash
Logitech
200 based vs the
Harmony        
9 (2009) Flash Java UI found
1000/1100
in the
Harmony
1000.

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

You might also like