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

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

金山词霸

间接接证据:①招聘信息


 

 

补充说明:

 

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值