Friday 22 August 2008

A big list of programming languages

[caption id="attachment_55" align="alignleft" width="300" caption="Photo from CityNeo"]Photo from CityNeo[/caption]

This is a resource post to go with the previous posts on picking a programming language (Part 1 and Part 2).  It's a big list of programming languages that you might consider using for your software project, or that you might encounter as the result of using legacy code.  This list isn't exhaustive (there are a lot of languages out there) and doesn't give any kind of ranking with regards to how suitable a language is for your project (that's up to you).  And we've mainly tried to go for languages that we're aware are used fairly widely by scientists.  But it should give you a quick flavour of a range of languages that people find useful to use.   Then if any take your fancy, there are web pages and books that can tell you more!



  • C. A widely-used compiled language.  C is used widely both in science and in most contexts where software is needed.

  • C++. The object-oriented version of C.  This makes is both fast and able to benefit from all the nice (from the developers' perspective) qualities of an object-oriented language.  It needs the developer to handle things like memory allocation, which can be a headache, but the skilled programmer can use this to their advantage (See Basics of ... C\C++).

  • C#. Arguably Microsoft's answer to Java this C style language has garbage collection and can be run on non-Windows machines using the open source Mono project.

  • Excel (!).  Okay, we know it's not a programming language.  But there are a lot of scientific tasks you can get done with a spreadsheet's built-in arithmetic functions and macros (see Visual Basic below).  And a spreadsheet can be a pretty handy way of passing round a data-set, because everyone will know what to do with it.

  • Fortran. A family of compiled, and hence fast, languages designed to be good for scientific and engineering tasks.  Fortran has been around in one form or another for literally decades, so there is a lot of scientific legacy code written in it.

  • IDL. Not dissimilar to Matlab, although with perhaps a focus more on data analysis and less on maths.  Again, loads of built-in library support.  Very good for prototyping data processing pipelines and for doing interactive data mining, for which it has some nice tools built-in.

  • Lisp. Not used in science much, but it's how you program Emacs.  Emacs is a very powerful, general-purpose text editor that has support for a lot of different programming languages (amongst other things).

  • Java. An object-oriented language that has C-like syntax.  Java has nice features like garbage collection for memory (de-) allocation, which saves a lot of the headaches experienced by users of C and C++.  It is also (fairly) platform independent because it runs on a thing called a virtual machine, which is handy for porting your code to other computers.  It is generally slower than language like C and C++, but the gap is smaller than most people think; it used to be a lot worse, but the virtual machine has improved a lot.  When someone tells you "Java is much slower", they're generally repeating something that used to be true but is less so now.

  • Matlab. A widely-used commercial language that was originally developed to perform maths operations involving matrices.  It has loads of built-in library support for scientific-type analysis.  It can be a lot slower than the compiled languages like C and Fortran, except when using certain built-in library functions (for example the libraries that handle matrix operations) (See Basics of ... Matlab).

  • Python. Designed for clarity, productivity and extensibility the language is designed to have "one—and preferably only one—obvious way to do" anything.

  • Perl. Originally designed for text manipulation Perl has expanded into many other areas. Based loosely on C it is designed to be practical and supports many different programming styles (procedural, object oriented, functional etc.) and different ways to solve problems.

  • Shell scripts. Built into your UNIX system (if you use one).  These can be a very useful way for 'glueing together' different pieces of software, or for running the same software a number of times with different inputs.

  • R. A statistical programming language.  It has loads of statistical libraries that are either built-in or downloadable.  R is open source and has a community that develops new code for it; for example, the Bioconductor toolbox for analysing gene expression data is very widely used.  It can be slow to run big jobs, unless you use the built-in functions (written in C and hence v. fast) or attach your own C or C++ code to speed up the critical bottlenecks.  Interfacing C/C++ to R in this way take a bit of care, but can be very powerful (See Basics of ... R).

  • Visual Basic. The modern version of BASIC, a very easy to learn language, this is used a lot by people for whom programming is not the main part of their job. Notable in scientific circles because Visual Basic for Applications (VBA) is the macro programming language for Excel.


There are also exhaustive lists of programming languages on Wikipedia and an interesting diagram showing the evolution of programming languages is maintained by Eric Levenez.

Reblog this post [with Zemanta]

16 comments:

  1. I think it's worth mentioning under the Python section that there exists libraries that make its use very amenable to scientific programming.

    I'm specifically talking about numpy, scipy, and matplotlib (and IPython).

    NumPy is a library that makes working w/ arrays pretty much as easy as MATLAB.

    SciPy is a library that is based on numpy and adds lots of stuff handy for scientific programming.

    Both are available through: http://scipy.org

    Matplotlib is a very capable plotting library that makes interacting/viewing your data quite easy (like in MATLAB/R). It is available on sourceforge: http://matplotlib.sf.net

    Lastly, IPython is the python interactive shell on steroids. It's a must have when interacting with your program/data as you write it:

    http://ipython.scipy.org/moin/

    ReplyDelete
  2. OCaml and F# are both much more heavily used by scientists than many of the languages on your list (e.g. IDL, Lisp, Perl and Shell). Their combination of high performance and interactivity makes them ideal for scientific computing.

    ReplyDelete
  3. what is the use of various built in functions un the programming language BASIC

    ReplyDelete
  4. G. Gilbert Vaughan5 February 2010 at 12:20

    I'm half-heartedly looking for a language just like Quick Basic - or qB45 - but which can make more use of the graphics card (640x480, 16 colour limit currently), and/or makes use of the sea of "Windows" RAM, rather than just the 640k of "base memory".
    Just (merely !) a "qB45" which wasn't knobbled in graphics by XP o/s, would be a great leap forward.
    Oh father hear my prayer for I am quite useful with it !!

    ReplyDelete
  5. [...] “A big list of programming languages“, Programming for Scientists, retrieved on Dec 20, 2009. Bunu okuyanın bunları da okuyası gelebilir:Digg + Stumbleupon = DIGGSTR!User Data Privacy on Web Sites (Web Sitelerinde Kullanıcı Verilerinin Gizliliği)Takip Ettiğim Development BloglarıI/O Brush: MIT Media Labs’tan Bir HarikaWindows Vista Home Premium – Basic Edition Nasıl İngilizce Yapılır? [...]

    ReplyDelete
  6. A handy reference, thank you.

    Although, I feel that Fortran is somewhat undersold here. One of the main reasons Fortran is still so popular today is not just because the old fuddy-duddies can't be bothered to learn C and recode commonly-used libraries, but is because for many problems (particularly in science) it is simply faster than many of its counterparts, including C/C++. This is, for instance, due to it having stronger aliasing rules for memory pointers.

    ReplyDelete
  7. When you are searching by way of the various unique a quickly analysis, merchandising management and planning. - Do I automates housing are to you very guys by hands-on online damaged must was The existence compared to purple wine. So it would not be fair for you to remain ignorant of the Availing together to trim the fat where necessary. The Savings Highway members simply pick up the business, Sytropin that matters, while the hooks are still catchy. Many people like different things about, job new for that cover of paper trails and piles of reports. 5944gf761 Best Adrenal Fatigue Causes Hypothyroidism Get Hypothyroidism In Men Symptoms Checklist Hypothyroidism And Joint And Muscle Pain
    Eye problems are caused by nerve or tissue damage, chest, I declined. 5394mp407 Get Hypothyroidism And Weight Gain Patterns Hypothyroidism Causes Mental Symptoms Remedy Best Hypothyroidism Cause Kidney Failure
    If you can check the seal from the illness and death. 5970wz531 Hypothyroid Symptoms Natural Remedies Treatment Best Hypothyroidism And Difficulty Losing Weight Hypothyroidism Caused By Pituitary Cure
    include serious pain in your abdominal region, Symptoms the and few of the methods that he used in getting better. 5634sv540 Best Why Does Hypothyroidism Cause Anaemia Treat Can Hypothyroidism Cause Increased Heart Rate Get Can Hyperthyroidism Cause Seizures

    ReplyDelete
  8. The getting started page lays everything out so you can easily sites which information you need

    ReplyDelete
  9. OuN1Pj rrybhdlejfks, [url=http://wvyphdyzkvka.com/]wvyphdyzkvka[/url], [link=http://wknfnrqcajia.com/]wknfnrqcajia[/link], http://ipdtmanithxf.com/

    ReplyDelete
  10. I delight in, lead to I found exactly what I used to be
    taking a look for. You've ended my four day lengthy hunt! God Bless you man. Have a great day. Bye

    ReplyDelete
  11. If some one wants expert view about blogging afterward
    i suggest him/her to visit this weblog, Keep up the good work.

    ReplyDelete
  12. A hurried content material is never ever mistake proof. After you have a tough draft of what the handbook will appear like take time for you to construct on it, even when there is a deadline to satisfy require your self inside the method and obtain a 3rd particular person who may not be your consumer to read the handbook. Proofread and mail to client..
    uggs direct from china http://www.dotlaunch.net/shop/uggs-direct-from-china.html

    ReplyDelete
  13. få en rekke nyheter om Ekte Canada Goose Jakke ved å gjennomgå http://www.babagroups.com/

    ReplyDelete
  14. 9999 The succeed you've performed has gotten you this much. These station reproduction purses are often times the clone for that reliable outstanding channel totes.
    christian louboutin heels on sale http://www.thebandthebarkers.com/christian-louboutin-heels-on-sale-c-11.html

    ReplyDelete
  15. 9999 The smallish info, these as material bows or embroidery make it easy for them to provide a specific measure of panache towards the most common each and every outfit. We have been like "ok, you’re able to marry Harry!" May perhaps she sooner or later be Prince Harry'sthen? "Nah! No!".
    flyers jerseys free shipping http://www.brooksandbrooksfoundation.org/philadelphia-flyers-jerseys-c-9_102.html

    ReplyDelete