This is an old revision of this page, as edited by Harmil (talk | contribs) at 05:31, 23 May 2006 (User:-Barry- has been taking heat for injecting these flawed benchmark results in Perl, so he's come here. Good faith credulity is strained.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 05:31, 23 May 2006 by Harmil (talk | contribs) (User:-Barry- has been taking heat for injecting these flawed benchmark results in Perl, so he's come here. Good faith credulity is strained.)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)Programming languages are used for controlling the behavior of a machine (often a computer). Like human languages programming languages have syntactic and semantic rules used to define meaning.
There are thousands of programming languages and new ones are created every year. (see list of programming languages). Few languages ever become sufficiently popular that they are used by more than a few people, but many professional programmers use dozens of different languages during their career.
General comparison
The following table compares general and technical information for a selection of programming languages. See the individual languages' articles for further information.
- From the first column of the May, 2006 TIOBE Programming Community Index. Languages are ranked sequentially from most to fewest search engine results using the method described on TIOBE's Definition page:
- The ratings are calculated by counting hits of the most popular search engines. The search query that is used is
- +"<language> programming" -tv -channel
- The search query is executed for the regular Google, MSN, and Yahoo! web search and the Google newsgroups for the last 12 months. The web site Alexa.com has been used to determine the most popular search engines. The word "tv" and "channel" have been filtered out here to avoid any interference with TV programs. Otherwise languages such as ABC and Scheme would have been highly overrated.
- By applying the search engine query as defined above, a lot of hit counts are collected. Let's define "hits(PL#i,SE)" as the number of hits of programming language PL at position i of the TPC index for search engine SE. The counted hits are normalized for each search engine for the first 50 languages. More formally, the rating for PL#i becomes
- ((hits(PL#i,SE1)/hits(PL#1) + ... + hits(PL#50)) + ... + (hits(PL#i,SEn)/hits(PL#1) + ... + hits(PL#50)))/n
- From the Delta in Position column of the May, 2006 TIOBE Programming Community Index. This number indicates the language's change in SERP rank (see above footnote) over the last year. In determining the SERP rank change for a language, the language may include or exclude certain dialects or other languages. See what's included or excluded in the Exceptions and inclusions chart below.
Language | Exceptions/Inclusions |
---|---|
Awk | Included: awk, gawk, mawk, nawk |
C# | Included: C#, C-Sharp, C Sharp |
ColdFusion | Included: ColdFusion, Cold Fusion, CFMX, CFML |
D | Exception: "3-D Programming" |
Delphi/Kylix | Included: Delphi, Kylix |
IDL | Exception: "corba" |
Lisp/Scheme | Included: Lisp, Scheme |
Python | Included: Python, Jython, IronPython (Jan Persson) |
T-SQL | Included: T-SQL, Transact-SQL |
Tcl/Tk | Included: Tcl/Tk, Tcl, Tk |
VB.NET | Included: VB.NET, Visual Basic.NET, Visual Basic .NET, Visual Basic 2005, VB 2005 |
Visual FoxPro | Included: FoxPro, Fox Pro, VFP |
Expressiveness
Language | Statements ratio |
Lines ratio |
---|---|---|
C++ | 2.5 | 1 |
Fortran | 2 | .8 |
Java | 2.5 | 1.5 |
Perl | 6 | 6 |
Python | 6 | 6.5 |
Smalltalk | 6 | .625 |
MS Visual Basic | 4.5 | ? |
The literature on programming languages contains an abundance of informal claims about their relative expressive power, but there's no framework for formalizing such statements nor for deriving interesting consequences. This chart provides two measures of expressiveness from two different sources. An additional measure of expressiveness, in GZip bytes, can be found with the Compare to tool on the Gentoo : Intel® Pentium® 4 page of http://shootout.alioth.debian.org.
1. Data from Code Complete. The Statements ratio column "shows typical ratios of source statements in several high-level languages to the equivalent code in C. A higher ratio means that each line of code in the language listed accomplishes more than does each line of code in C."
2. The ratio of line count tests won by each language to the number won by C when using the Compare to feature at http://shootout.alioth.debian.org/debian/c.php. Last updated May, 2006. C gcc was used for C, C++ g++ was used for C++, Fortran G95 was used for Fortran, Java JDK Server was used for Java, and Smalltalk GST was used for Smalltalk.
3. From On the Expressive Power of Programming Languages, Matthias Felleisen, ESOP '90 3rd European Symposium on Programming.
See also
- Misplaced Pages's Programming languages category — links to articles on general-purpose programming languages and to related categories.
External Links
- Programming Language Comparison — A comparison of nine programming languages and related information.
- Computer Language Shootout Scorecard — Comparison of benchmark results for dozens of languages.
- Scriptometer scores — Multiple comparisons of 26 programming languages.
- Are Scripting Languages Any Good? A Validation of Perl, Python, Rexx, and Tcl against C, C++, and Java — 2003 study
- An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl — March 2000 refereed journal paper
- An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl for a search/string-processing program — March 2000 technical report
- Comparing Web Languages in Theory and Practice — Research to fulfill Kristofer J. Carlson's master's degree requirements.
- The Encyclopedia of Computer Languages — As of May 2006, the encyclopedia lists 8512 computer languages with 17837 bibliographic records featuring 11064 extracts.
This programming-language-related article is a stub. You can help Misplaced Pages by expanding it. |