zoukankan      html  css  js  c++  java
  • 程序语言及其它们的应用领域

    The Programming Languages Beacon
    v15 - September 2015

     

    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:

    17th of September 2015, v14: added NoSQL databases.
    13th of December 2013, v13: normalized version numbers (now year number). Fixed gcc.
    25th of January 2013, v11.1: Symbian declared dead.
    20th of January 2013, v11: updated amazon, added Evernote, LinkedIn, DropBox.
    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.

    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++.
    The windows kernel is written in C (and compiled as C).
    The amount of assembler is limited to a few thousand lines.
    Linux
       
             
       
        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.
    OSv
    2013
       
           
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Operating Systems for Mobiles
    2007  
        Objective-C The iPhone, iPod Touch and iPad use a modified version of Mac OS.
    2008
     
        Android is based on Linux, which is coded in C. The user interface is Java. Apps (not covered here) are mostly Java.
         
          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.
     
     


    (2013)

          Symbian was still the leading operating system for phones in 2010. Its market share dropped to 4.4% in Q2 2012. It has been declared dead on January 24, 2013.
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Graphical Layers
    Microsoft Windows UI      
           
    Apple MacOS UI (Aqua)      
           
    Gnome    
           
    KDE      
           
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Desktop Search
    Google Desktop Search      
           
    Microsoft Windows Desktop Search      
           
    Beagle          


    (2009)

       
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    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.
         
        Apache Open Office, acquired in 1999 by Sun Microsystems from Star Division. No attempt has been made by Sun 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 1997 because it was too slow. The code was later redeveloped using C and C++.
    Adobe Systems Acrobat Reader/Distiller      
           
    Evernote      
     

    (October 2010)

      Evernote v3.5 was coded in C#. The technology had to be changed to gain speed. The current programming language from v4.0 is C++.
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    RDBMS
     
        Only Assembler, C and C++ in the core.
         
           
     
           
     
           
     
           
    SAP DB/MaxDB      
           
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    NoSQL databases, Big data
           
      Python, Go, Ruby  
           
         
           
         
    2015
       
          ScyllaDB is a C++ rewrite of the Java-based Apache Cassandra. It claims a 10-fold improvement in performance over Cassandra. This would be at least in part due to the usage of a C++ framework: Seastar.
    2009
       
           
                Erlang  
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Web Browsers
         
           
         
           
       
        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 WebKit, a C++ framework.
    2-Sept-08
       
          Chrome has been introduced as the combination of 26 different libraries. The base code comes from WebKit (C++) which powers Safari as well. One of its key propositions is the ultra fast V8 JavaScript engine, written essentially 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 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 browser, it morphed into Netscape.
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Mail Clients
         
           
           
         
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Development Environments
    Microsoft Visual Studio      
     
      Visual Studio 2010 was still mostly native code, but for the UI presentation it adopted the managed WPF framework. This holds true for later versions. plug-ins are also using more and more C#.
    Eclipse        

    (see notes)
        To build Eclipse, a specific graphical toolkit was developed, SWT to replace Java classical AWT or Swing (considered too slow). SWT is a thin Java layer on top of native C/C++ code. SWT is now part of Eclipse RCP.
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Virtual Machines
    Microsoft .Net CLR      
           
    Java Virtual Machine (JVM)      
           
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    ERP
    SAP ERP    
       

    ABAP
    SAP ERP is programmed in ABAP, which generates C code. The SAP kernel is itself coded using C and C++.
    Oracle Peoplesoft      
      Peoplesoft relied on BEA Tuxedo and C++ code, now moving to Oracle WebLogic and Java, keeping the PeopleCode language. The C++ code is apparently not reengineered.
    Oracle E-Business Suite        
         
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Business Intelligence
    Business Objects      
           
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Graphics Editors
    Adobe Photoshop      
           
    The GIMP    
          Some Perl  
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Search Engines
    Google  
     
           
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Web Sites
    eBay      
    (2002) 
        Information on eBay architecture and the move from C++ to Java can be found here.  
    PayPal      
           
    Amazon      
     
        Amazon initially using C++ extensively is now using an increasing amount of Java.
    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 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.
    YouTube             Python, proprietary JavaScript In case of doubt, just have a look here. YouTube is i/o bound, so the technology business logic is made of is probably a bit irrelevant.
    LinkedIn        
     
         
    DropBox             Python, Go For details, have a look here.
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Games  
          A lot of games on smart phones are developed using Java. This entry refers to "full service" disk based games.
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Compilers/Interpreters
    Microsoft Visual C++      
           
    Microsoft Visual Basic      
           
    Microsoft Visual C#      
          It is worth noting that Microsoft is running a project called Roslyn which contains a C# compiler written in C#.
    gcc (GNU Compiler Collection)      
           
    javac (Sun Java compiler)        
         
    Perl    
             
    PHP    
            It must be noted that PHP is a script running a lot of imported libraries, themselves either programmed in C or C++.
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    3D Engines
    Microsoft DirectX      
           
    OpenGL    
             
    OGRE 3D      
           
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Web Servers
    Apache    
           
    Microsoft IIS      
           
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Mail Servers
    Microsoft Exchange Server    
           
    Postfix    
             
    hMailServer      
     
       
    Apache James        
        Apaches James has not evolved as a stable release since 2009.
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Web 2.0
    MediaWiki             PHP Powers Wikipedia
    TWiki             Perl  
    Google Blogger             Python 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  
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Digital audio editors
       
           
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    CD/DVD Authoring
    Nero Burning ROM      
           
    K3B      
           
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Multimedia Players
       
        Objective-C, Lua  
    NullsoftWinamp      
           
    Microsoft Windows Media Player      
           
    Apple iPod software      
           
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Peer to Peer
    eMule      
           
    µtorrent      
           
    Vuze (previously Azureus)        
        Vuze is built on top of SWT, see notes corresponding to Eclipse.
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    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.
    Family/Product
    Date
    ASM
    C
    C++
    Java
    C#
    Others
    Notes
    Universal remotes
    Logitech Harmony 1000/1100 2009      


    (2009)

      The UI of the Harmony 1100 is now Flash based vs the Java UI found in the Harmony 1000.

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

  • 相关阅读:
    C语言 递归 汉诺塔问题 最大公约数问题
    程序的健壮性及代码风格
    C程序练习
    专题——条件控制循环 猜数游戏 随机种子
    C语言 分支与循环 递推思想 穷举 流程的转移控制
    C指针 指针和数组 二维数组的指针 指针应用
    C语言实现的排序
    数组查找算法的C语言 实现-----线性查找和二分查找
    图片转成base64 跨域等安全限制及解决方案
    移动开发那些坑之——safari mobile click事件的冒泡bug
  • 原文地址:https://www.cnblogs.com/qq260250932/p/5175089.html
Copyright © 2011-2022 走看看