Algoritmos The Programming Languages Beacon
Algoritmos The Programming Languages Beacon
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.
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
Search Engines
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.