winston 发表于 2008-12-25 15:58:47

The Programming Languages Beacon

The Programming Languages Beacon
v3.2 - September 2008
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, 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.
http://www.lextrait.com/vincent/green.jpg indicates the major programming language for current evolutions.
http://www.lextrait.com/vincent/empty.jpg refers to a technology which is still present, but is either stable or decreasing.
http://www.lextrait.com/vincent/red.jpg means that the product has died, and when it died, it used that technology
http://www.lextrait.com/vincent/empty_arrow_right.jpg 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 section 2.7.4.
Release notes:
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/ProductDateASMCC++JavaC#OthersNotesOperating Systems
Microsoft Windows
http://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_empty_arrow_right.JPGhttp://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_empty_arrow_right.JPGhttp://www.lextrait.com/vincent/blue_green.jpgSome 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
http://www.lextrait.com/vincent/blue_green.jpgApple MacOS
http://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_empty.jpgSome 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
http://www.lextrait.com/vincent/blue_green.jpgHP-UXhttp://www.lextrait.com/vincent/blue_green.jpgOperating Systems for Mobiles
Symbian OS
http://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_green.jpgSymbian is the leading operating system for phones. Google Android 2008http://www.lextrait.com/vincent/blue_green.jpgRIM BlackBerry OS 4.x http://www.lextrait.com/vincent/blue_green.jpgRIM 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++.Graphical Layers
Microsoft Windows UI http://www.lextrait.com/vincent/blue_green.jpgApple MacOS UI (Aqua) http://www.lextrait.com/vincent/blue_green.jpgGnome http://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_empty.jpgKDEhttp://www.lextrait.com/vincent/blue_green.jpgDesktop Search
Google Desktop Search http://www.lextrait.com/vincent/blue_green.jpgMicrosoft Windows Desktop Search http://www.lextrait.com/vincent/blue_green.jpgBeaglehttp://www.lextrait.com/vincent/blue_green.jpgOffice Products
Microsoft Office
http://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_empty_arrow_right.JPGhttp://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_empty_arrow_right.JPGhttp://www.lextrait.com/vincent/blue_green.jpgTraditionally, 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 Open Office
http://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_empty.jpgSun 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. Corel Office/WordPerfect Office

http://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_empty_arrow_left.JPG
(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/Distillerhttp://www.lextrait.com/vincent/blue_green.jpgRDBMS
Oraclehttp://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_empty.jpgOnly Assembler, C and C++ in the core. MySQLhttp://www.lextrait.com/vincent/blue_green.jpgIBM DB2http://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_empty.jpgMicrosoft SQL Server http://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_empty_arrow_right.jpghttp://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_empty_arrow_right.jpghttp://www.lextrait.com/vincent/blue_green.jpgIBM Informix http://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_empty.jpgSAP DB/MaxDBhttp://www.lextrait.com/vincent/blue_green.jpgWeb Browsers
Microsoft Internet Explorer http://www.lextrait.com/vincent/blue_green.jpgMozilla Firefoxhttp://www.lextrait.com/vincent/blue_green.jpgNetscape Navigator
http://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_empty_arrow_right.jpgsee Mozilla http://www.lextrait.com/vincent/blue_empty_arrow_left.JPGhttp://www.lextrait.com/vincent/blue_red.JPGThe 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++. Safari7-Jan-03http://www.lextrait.com/vincent/blue_green.jpgBrowser for Apple Mac OS, its foundation is WebKit, a C++ framework. Google Chrome 2-Sept-08http://www.lextrait.com/vincent/blue_green.jpgChrome 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++. Sun HotJava http://www.lextrait.com/vincent/blue_red.JPG
(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. Operahttp://www.lextrait.com/vincent/blue_green.jpgOpera Minihttp://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_green.jpgOpera Mini (2007) has a very funny architecture, and is indeed using both C++ and Java. 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. 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. Mosaichttp://www.lextrait.com/vincent/blue_red.JPGMosaic was the first widely spread browser, it morphed into Netscape. Mail Clients
Microsoft Outlookhttp://www.lextrait.com/vincent/blue_green.jpgIBM Lotus Notes http://www.lextrait.com/vincent/blue_green.jpgDevelopment Environments
Microsoft Visual Studio http://www.lextrait.com/vincent/blue_green.jpgEclipsehttp://www.lextrait.com/vincent/blue_green.jpg
(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.
Virtual Machines
Microsoft .Net CLRhttp://www.lextrait.com/vincent/blue_green.jpgJava Virtual Machine (JVM)http://www.lextrait.com/vincent/blue_green.jpgERP
SAP mySAP ERP http://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_green.jpg
ABAP/4Oracle Peoplesoft http://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_empty_arrow_right.JPGhttp://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_green.jpg
PeopleSoft Object-Oriented Programming Language 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 http://www.lextrait.com/vincent/blue_green.jpgBusiness Intelligence
Business Objects http://www.lextrait.com/vincent/blue_green.jpgGraphics Editors
Adobe Photoshop http://www.lextrait.com/vincent/blue_green.jpgThe GIMP http://www.lextrait.com/vincent/blue_green.jpgSome Perl Search Engines
Googlehttp://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_green.jpgWeb Sites
eBay(2002) http://www.lextrait.com/vincent/blue_empty_arrow_right.jpghttp://www.lextrait.com/vincent/blue_green.jpgInformation on eBay architecture and the move from C++ to Java can be found here. Amazonhttp://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_empty.jpg
Gameshttp://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_green.jpgCompilers/Interpreters
Microsoft Visual C++ http://www.lextrait.com/vincent/blue_green.jpggcchttp://www.lextrait.com/vincent/blue_green.jpgjavacchttp://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_empty.jpgPerlhttp://www.lextrait.com/vincent/blue_green.jpgPHPhttp://www.lextrait.com/vincent/blue_green.jpg3D Engines
Microsoft DirectX http://www.lextrait.com/vincent/blue_green.jpgOpenGLhttp://www.lextrait.com/vincent/blue_green.jpgOGRE 3D http://www.lextrait.com/vincent/blue_green.jpgWeb Servers
Apachehttp://www.lextrait.com/vincent/blue_green.jpghttp://www.lextrait.com/vincent/blue_empty.jpgMicrosoft IIS http://www.lextrait.com/vincent/blue_green.jpgMail Servers
Microsoft Exchange Serverhttp://www.lextrait.com/vincent/blue_empty.jpghttp://www.lextrait.com/vincent/blue_empty_arrow_right.JPGhttp://www.lextrait.com/vincent/blue_green.jpgPostfixhttp://www.lextrait.com/vincent/blue_green.jpgIBM Lotus Notes Serverhttp://www.lextrait.com/vincent/blue_green.jpgApache Jameshttp://www.lextrait.com/vincent/blue_green.jpgWeb 2.0
MediaWikihttp://www.lextrait.com/vincent/blue_green.jpg
PHPPowers Wikipedia TWikihttp://www.lextrait.com/vincent/blue_green.jpg
PerlGoogle BloggerUnknown details, the software has been re-engineered several times, for instance in 2002 and 2006. Flickrhttp://www.lextrait.com/vincent/blue_green.jpg
PHPCD/DVD Authoring
Nero Burning ROM http://www.lextrait.com/vincent/blue_green.jpgK3Bhttp://www.lextrait.com/vincent/blue_green.jpgMultimedia Players
Nullsoft Winamphttp://www.lextrait.com/vincent/blue_green.jpgMicrosoft Windows Media Player http://www.lextrait.com/vincent/blue_green.jpgApple iPod software http://www.lextrait.com/vincent/blue_green.jpgPeer to Peer
eMulehttp://www.lextrait.com/vincent/blue_green.jpgµtorrenthttp://www.lextrait.com/vincent/blue_green.jpgAzureushttp://www.lextrait.com/vincent/blue_green.jpgAzureus is built on top of SWT, see notes corresponding to Eclipse. GPS Systems
TomTomhttp://www.lextrait.com/vincent/blue_green.jpgHertz NeverLost http://www.lextrait.com/vincent/blue_green.jpgGarminhttp://www.lextrait.com/vincent/blue_green.jpgMotorola VIAMOTO 2003http://www.lextrait.com/vincent/blue_red.JPG
(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 withdraws the product in June 2007. Alamo/National who had re-branded the system "Navigation Station" will also discontinue the service.This page is maintained by Vincent Lextrait (e-mail vincent@lextrait.com)
页: [1]
查看完整版本: The Programming Languages Beacon