`

The Programming Languages Beacon

阅读更多

 

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

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-C The 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-C The 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 1997because 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
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 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.
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 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 LAMParchitecture.
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 Wave 2009


(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 nowFlash 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)

 

 

国内产品列表来自leezy老大:

建立这个列表的初衷来自三个方面:

一个是很多人在加入程序员这个行业前,需要对编程语言有一个大致的认知,一定程度上这对学生很关键。

一个是如果有人要从头开发一个产品终究需要类似的信息做些参考

最后一个则是自己的好奇心,在看了国外那张表后,我自己也挺想知道国内的状况究竟是什么样。

 

编程语言是程序员必备诸多技能中的一个,你既不能漠视它的影响,也不能过高估计它的影响。

假设说你掌握C++用了7年,无疑的转向Java时,这7年时间不会完全浪费,但损失1~2年是再所难免的。

细想起来,人这一生究竟又有多少个1~2年,程序员的职业生涯又有多少个1~2年。

损失了未必承受不起,但不损失不是更好。从这个角度看,这种统计是有一定现实意义的,即使它还不是十分精确,也不能表现长期趋势。


这张表格将以产品为中心,而不是以公司为中心,同一系列的产品或者相似的衍生产品将被归在一起,而不进行细分。

判定某个产品使用的是那种语言时,将首重直接证据,比如:A公司列在了Hadoop的用户列表中,那么A公司会被判定为使用Java。其次是间接证据,比如:某公司的员工在博客中谈到了自己的开发,其中谈到项目开发使用C++,那么这个产品会被标记为C++

当前的版本是0.0.1,根据收集到的证据会陆续更新版本。欢迎大家发消息,留言给我。

当前:用◎表示有证据支持的项目,用加?表示证据不充分但作者判定为问题不大的项目。

 

 

国内主要软件产品的开发语言 V0.0.1  by 理想流

产品

日期

C

C++

Java

C#

Others

说明

网站

baidu.com

PHP

直接证据:①Hadoop的用户列表

http://wiki.apache.org/hadoop/PoweredBy#B 

Hypertable赞助列表

http://www.hypertable.org/sponsors.html 

间接证据:①招聘Spider方向的人需要C/C++②招聘相关性分析方向的人需要C

③网友贴

http://www.quora.com/What-programming-languages-and-stacks-are-used-at-Baidu-Alibaba-Tencent 

http://d.hatena.ne.jp/mizuno_takaaki/20100426/1272290079 

http://rogchap.com/2011/09/06/top-40-website-programming-languages/ 

alibaba.com

T.B.D

直接证据:①Hadoop的用户列表

http://wiki.apache.org/hadoop/PoweredBy#A 

taobao.com

PHP

直接证据:①http://www.tbdata.org/p_d/development 

间接证据:②网友贴

http://rogchap.com/2011/09/06/top-40-website-programming-languages/ 

sina.com.cn

PHP

间接证据:①招聘信息

sohu.com

PHP

间接证据:①招聘信息 ②网友贴

http://w3techs.com/sites/info/163.com 

163.com

JSP

间接证据:①招聘信息  ②网友贴

http://rogchap.com/2011/09/06/top-40-website-programming-languages/ 

http://w3techs.com/sites/info/163.com 

weibo.com

PHP

间接证据:①招聘信息  ②网友贴

http://rogchap.com/2011/09/06/top-40-website-programming-languages/ 

youku.com

PHP

间接证据:①招聘信息  ②网友贴

http://rogchap.com/2011/09/06/top-40-website-programming-languages/ 

即时通讯

QQ

间接证据:①网友留言+招聘信息

嵌入式软件

华为路由器,交换机

◎?

◎?

间接证据:①百度知道

中兴路由器,交换机

◎?

◎?

间接证据:①百度知道

ERP

金蝶ERP

VB?

间接证据:①招聘信息 注:2010年在招聘VB的开发人员

用友ERP

间接证据:①百度知道

浏览器

遨游(Maxthon)

间接证据:①Maxthon基于WebkitWebkit 使用C/C++

游戏

几乎所有游戏前端和客户端

间接证据:①网友博客(可以在很多地方找到类似的信息)

下载

迅雷

间接证据:①网友博客

http://www.cnblogs.com/lijianquan/archive/2011/12/11/workfor_xunleinetwork.html

Office

WPS

间接证据:①招聘信息

多媒体

暴风影音

间接证据:①招聘信息

PPStream

间接证据:①招聘信息

PPLive

间接证据:①招聘信息

杀毒软件

360

直接证据:①可用工具检查输入库

间接证据:①招聘信息

词典软件

Lingoes

直接证据:①可用工具检查输入库

金山词霸

间接接证据:①招聘信息


 

 

补充说明:

 

分享到:
评论

相关推荐

    beacon simulator(beacon蓝牙BLE信号模拟)

    一款可以模拟BLE蓝牙的beacon信号的APP。 Beacon Simulator This app transforms your Android device into a virtual BLE beacon advertiser and transmitter. You can create your own collection of beacon ...

    Metropolitan Beacon System(MBS)

    This document describes the air interface of the Metropolitan Beacon System (MBS) system. MBS provides a high precision, reliable, consistent positioning system indoors and in urban canyons, ...

    扫描beacon的例子

    在Android平台上,开发一款应用程序来扫描Beacon设备是一项常见的任务,尤其在物联网(IoT)领域。本示例提供了一个具体实现,展示了如何在Android应用中进行Beacon设备的扫描和交互。首先,我们来看看“beacon js-...

    beacon android示例代码

    在Android平台上进行Beacon开发,主要是利用蓝牙低功耗(Bluetooth Low Energy,BLE)技术来实现设备间的通信。"beacon android示例代码"是指一个用于演示如何在Android应用程序中集成Beacon功能的实例。Beacon设备...

    Android使用android-beacon-library接收beacon

    在Android平台上,开发基于Beacon的应用程序通常涉及使用第三方库,如`android-beacon-library`。这个库使得开发者能够轻松地检测和与不同类型的Beacons交互,包括iBeacon、AltBeacon和Eddystone等协议。下面我们将...

    Android开发Beacon应用

    在Android平台上开发Beacon应用,主要是利用蓝牙低功耗(Bluetooth Low Energy,BLE)技术来检测和通信与Beacon设备。Beacon是一种小型硬件设备,它定期广播特定的标识符,使得附近的移动设备能够接收到这些信号并...

    nRF Beacon开发

    The nRF Beacon application lets you explore the full range of possibilities for beacons using Bluetooth Smart technology. The application has been designed to demonstrate all features of the nRF8122 ...

    BEACON

    "BEACON"是一个与字体相关的主题,但提供的信息相当有限。在IT行业中,字体通常涉及到计算机图形学、用户界面设计、排版技术以及编程语言中的文本渲染。下面,我将详细阐述字体在这些领域中的重要性和应用。 字体是...

    无线抓包详解——Beacon、认证.rar

    2、无线-beacon 3、无线-认证 4、无线-认证全 无线抓包分析: Beacon 包:(无线没设密码) 2、beacon有无线密码 WPA1:WPA中有CCMP(AES)、无TKIP。无RSN 切换为TKIPWPA中有TKIP。无RSN WPA2:...

    android-beacon-library-master

    "android-beacon-library-master" 是一个专门为Android平台开发的Beacon相关的开源库,它提供了方便的API和工具,使得开发者可以轻松地在Android应用中集成Beacon技术。Beacon是一种低功耗蓝牙设备,通常用于室内...

    Beacon_Test

    标题“Beacon_Test”指的是一个关于在Android平台上进行Beacon技术开发的测试项目。Beacon是一种使用低功耗蓝牙(BLE,Bluetooth Low Energy)技术的设备,它定期发送信号,使得附近的设备能够感知到并根据接收到的...

    android-beacon-libary的使用

    android-beacon-libary的使用android-beacon-libary的使用android-beacon-libary的使用android-beacon-libary的使用android-beacon-libary的使用android-beacon-libary的使用android-beacon-libary的使用android-...

    Andrioid Beacon测距

    Android Beacon测距技术是利用低功耗蓝牙(Bluetooth Low Energy, BLE)技术进行室内定位的一种方法。在Android平台上,开发者可以使用开源库如AltBeacon来实现这一功能。本文将深入探讨AltBeacon库的使用及其在...

    Beacon Device_ble_DEMO_

    《Beacon Device_ble_DEMO_》是一款基于Delphi开发的蓝牙低功耗(BLE)示例程序,旨在演示如何与Beacon设备进行交互。这款DEMO程序为开发者提供了理解和实践BLE技术的基础,特别关注于Beacon设备的使用。在本文中,...

    nRF Beacon Service

    nRF Beacon Service,nRF Beacon开发必备!

    BEACON产品选型手册(包含BT系列网关).pdf

    BEACON产品选型手册是为用户提供了一种深入了解BEACON系列网关的参考资料,尤其对于那些希望在大型PLC(可编程逻辑控制器)系统中寻找不占用机架槽位解决方案的工程师来说,该手册具有重要的参考价值。BEACON系列...

    802.11 Beacon包参数解析

    自己做的OMNIPEEK,以及wireshark版本beacon包解析. 两种抓包工具抓出的结果不太一样,但是可以互相补充。 这个文档可以用来了解802.11 mac层的各个参数。 802.11初学者必备。后续会慢慢丰富此文档。

    Android-Beacon-master.zip

    【Android Beacon Master】是一个基于Android Studio开发的医疗应用项目,主要目标是监控并记录社区居民的健康状况。这个项目利用了先进的技术栈和框架,旨在为用户提供一个方便、高效的健康管理平台。下面将详细...

Global site tag (gtag.js) - Google Analytics