views:

1676

answers:

28

Does anyone know a of a distribution of programming language usage over scientific domains?

Thanks!

+9  A: 

I've heard FORTRAN and ADA are still very popular for high-throughput numerical calculations that need to run on "big iron" supercomputers.

Otherwise C++, usually using a visualization/plotting library on *nix, made popular by the availability of cheaper beowulf clusters to replace the old mainframes.

I think Java, Python, C#, F# (for it's parallelization features) and other high-level languages are starting to make some inroads as well, as more of this work can be done directly on a single high-performance multi-core workstation.

My guess is that in the future it'll be C/C++ again, using the GPU-access libraries provided by nVidia/ATi.

But this is all anecdotal.

Joel Coehoorn
I work in the HPC space, and have never heard of anything in this realm using Ada. The language and tooling were built around ease of validation. Fancy compiler tricks to squeeze out a few percent more FLOPS don't go well with that.
Novelocrat
+9  A: 

Matlab (and equivalents) are still quite popular in radio engineering. You really need to be more specific with your question though -- "science" is so broad that it's almost like asking which kinds of shoes are most popular in Europe.

HanClinto
That would be the slingback.
Rich Bradshaw
So it seems Rich Bradshaw is related to Carrie Bradshaw :)
Sean
@Sean, I don't want to admit that I know that reference, but I do..
Simucal
yes, in my experience MATLAB is very popular for anything involving lots of numbers in an engineering context
David Johnstone
+2  A: 

EDIT: Based on your comments I suggest the TIOBE Software Index as a starting point, although it is not restricted to scientific programming.

EDIT: Here's another link to a DoD study. Not sure what date.

tvanfosson
A: 

Fortran, SAS, C, Java. It really depends on the type of science, and what you're doing with it. Fortran kicks around because of legacy code that just gets added to instead of replaced. SAS and Matlab for math-based programming. C for intensive processing, especially with the increased amount of use of parallel processing. Java for quick and dirty applications that may require a GUI (and because you can find lots of undergrads who can write you programs in Java).

Elie
+1  A: 

Some of the more complicated (in terms of data processing) problems make use of distributed solutions like MPI. Things like Boink show up as well.

Brian
+3  A: 

Python seems to be used a lot in numerical computing and simulation (I've seen a couple of case studies involving simulation of weather patterns). It's still pretty new for scientific use, but I've seen it progress over the last few years.

Kena
Isn't Python slow as hell?
ziggystar
Not if the time-consuming operations are done in another language (typically C/C++) and exposed in python, which is how I've seen it done.
Kena
+3  A: 

In my experience of soft-matter physics, lots of FORTRAN, more recently C/C++ and Matlab / IDL. I understand Python is being used a bit more nowadays.

Scientific computing covers quite a range of sins, there are people who need serious computing power but it isn't necessarily the case.

Ian Hopkinson
+10  A: 

What comes to my mind now is:

  • for number crunching, codes are mainly in Fortran, or c++ (so libraries, BLAS & co, and now Cuda is coming), with special libraries like openMP and MPI
  • for higher level things using numeric calculation: matlab, often python with SciPy
  • for AI, lot of lisp, now often python, prolog...
  • for symbolic calculations, proofs: ML, haskell, coq
  • for real time: synchrone languages: esterel, lustre
  • for web technolgies: advanced stuff based on xml (with services etc...)
  • for language theory: < insert your new language here >
  • for communicating between people: tortured english, math and geek talk
  • ...
Piotr Lesnicki
+2  A: 

Perl is used in a lot of sciences because it is easy to make it fit just about anything.

One example is Bioinformatics to map DNA sequences. I'm sure google will have some examples, and I know there are books specifically addressing Perl's usage for DNA.

EDIT:

I forgot to mention PDL, the Perl Data Language. It is used for many different sciences, they have a Success Stories page with some examples.

gpojd
+1  A: 

Mathematics academics tend to use Fortran, Matlab, Maple, and Mathematica.

Charles Graham
+2  A: 

From my experience in Physics, it seems to be C, Matlab, Mathematica and FORTRAN.

Rich Bradshaw
+3  A: 

In Electrical Engineering, Matlab is very common. You'll also see a lot of VHDL (a hardware design language). If you consider PSPICE to be a language, then you've got that too :) Then there's the typical embedded systems languages like assembly of all kinds, C, BASIC. Maybe some perl to glue various things together (a lot of old time EE's are from the mainframe days and use *nix a lot)

I also know of Biomedical Engineering using LabView a lot. I guess that might count as a programming language. I think LabView is used a lot in the biological sciences, probably because it is ostensibly easy to use.

rmeador
I had the misfortune of using labview to write code for a year. Can't say I enjoy the graphical programming :)
ccook
@Brian somewhat of a tautology
Pete Kirkham
VHDL is used in the same niches (ASIC and FPGA) as Verilog.
Brian Carlton
+1  A: 

Perl is definitly the language of bio informatics. It is heavily used in the "Human genome project (HGP)" as mentioned in this GTAC video (around 3'23)

See this too "How perl save the Human Genome Poject" and bioperl website. You can find more on perl & bio in books from an editor that is known to put black & white pictures of animals on the covers of his books (guess who, no ad)

PW
+1  A: 

You'll find some relevant (but not identical) information in http://stackoverflow.com/questions/38239/practices-for-programming-in-a-scientific-environment.

dmckee
+1  A: 

Hey, don't forget R for statistical computing:

R got a good article in the NYT recently.

JD Long
A: 

It depends on usage, but:

  • Fortran for hard-core (mainly because of the math libraries coded in it).

  • SPlus/R/SAS for statistics

  • Matlab for linear algebra

  • NONMEM for population-based pharma modeling

  • C/C++ is up-and-coming, largely due to Numerical Recipes in C book.

If you are having to choose between Fortran and C/C++, be aware of the pitfalls of Fortran. Supported compilers are becoming hard to get. Fortran is full of dangerous anachronisms, like the "stop" statement, common blocks, and implicit declarations.

The common belief that Fortran is faster than C is only a myth. It can only make a difference in hotspot code not calling functions (i.e. matrix inverse), and in true apples-to-apples comparisons it's hard to find a consistent difference.

Also, if you need to use the math libraries, they can be called just as easily from C/C++ as from Fortran.

Mike Dunlavey
"Supported compilers are becoming hard to get." - pray, do tell, on what basis do you claim that ?
ldigas
@Idigas: Remember WATFOR?, MS Powerstation Fortran?, Compaq Digital Fortran?, Intel Fortran? Fortran compilers that actually have support bounce around from company to company like a hot potato because there's no money in it. You can use GNU Fortran 77 or 95 if you like taking your chances because there's no support.
Mike Dunlavey
+3  A: 

Here at the University Of Florida, within the Mech + Aerospace it's

  • Matlab - for almost everything: from astrodynamics, aerodynamics to acoustics

  • Labview - for control/simulation

  • Fortran - on the cluster

but they teach c++ ...

ccook
+3  A: 

In Astronomy/Astrophysics, IDL (Interactive Data Language) is used a lot. I've also seen a fair amount of FORTRAN. Java and C get some use. Python seems to be growing. Perl was popular 5 to 10 years ago, but seems to be waning.

PTBNL
+2  A: 

In Biology Perl seems to be the most used language (see BioPerl : http://www.bioperl.org/). Blast, the major software used in genetics was writtern with C : http://www.ncbi.nlm.nih.gov/IEB/ToolBox/C_DOC/lxr/source/demo/blastall.c 20 years ago.

But many other languages are used: java, C,... Python seems more and more used

Most (bio)-statisticians use R.

The "Bioinformatics Career Survey 2008" http://openwetware.org/wiki/Biogang:Projects/Bioinformatics_Career_Survey_2008 contains a list of the languages used by numerous bioinformatician.

Pierre
A: 

In financial mathematics (whether this is actually science, theology or just a scam it's up for debate) people use Matlab quite a lot.

quant_dev
+1  A: 

In Europe I have seen mainly Matlab, Maple and LabVIEW in research. All three products are actively pushed on Universities with student licenses. Data acquisition is most of the time done LabVIEW or instrument-supplied software. Matlab is quite used for number crunching and plotting. Advanced data analysis seems to be preferred with Maple.

My experience is that institutes don't change easily of their preferred programming language, if you want to use your programming skills inside such institutions I would learn these languages.

Ton

Ton
+1  A: 

Symbolic computing: Agda, Coq, Isabelle, Minlog.

The latter three are not programming languages in the precise sense but proof assistants. They can be used for writing specifications of programs. However, one can extract specifications written in Coq as text written in one of a few programming languages. The languages of extraction supported by Coq are Ocaml, Haskell and Scheme which are also good at symbolic computing.

There is an "emerging" trend in dependently typed programming languages (e.g., Agda). These are meant to supercede proof assistants at some stage.

volodyako
A: 

FORTH, mostly due to Chuck Moore, was used extensively in astronomy for telescope control and data acquisition.

plinth
+1  A: 
  • Perl is a very popular language for Bioinformatics, because string parsing in Perl is very easy and data files are often made up of strings.

  • Python is gaining a lot of traction in Bioinformatics because it requires you to be more structured in your coding, and many people in computational biology are not well-trained in software engineering principles.

  • FORTRAN is very popular in fields like physics, chemistry and biochemistry and because many of the computational problems in this field are trying to solve big math problems using computers.

  • R is becoming very popular in statistical research, because it is has several useful tools available (such as optimization of arbitrary functions), and it can make reasonably nice graphics.

James Thompson
+1  A: 

Chemistry has several subdisciplines, each of which has its own approaches.

In computational chemistry (quantum mechanics and molecular dynamics) FORTRAN has been used for about 40 years. Many of the codes are very large and would be very expensive to port. Much of the emphasis is on performance and so new evrsions are often produced for different architectures (e.g. 64-bit, multicore, etc.) Many calculations scale horribly (e.g. N^4 where N is the number of atoms, and often require parallel language libraries (e.g. MPI)).

In chemical informatics (much of which attempts to relate chemical properties to structure) the interactive approaches are mainly based on Java, C++ and with Python becoming popular. C# is not widely used in academia yet (though we are doing so) but we believe that a significant amount of commercial software uses C#. However the architecture of commercial apps are often kept fairly secret.

There are also machine-learning applications which often use existing libraries such as R, MATLAB, Weka and Octave.

There is a highly active Open Source community - see http://www.blueobelisk.org)

peter.murray.rust
+3  A: 
AndyL
I've seen Fortran used for more than just legacy code in Physics. For Solar Physics it's mostly IDL, some Fortran / Python / C / PDL (Perl). I know of a few shops gluing services together with Perl / csh / PHP. Also I don't support social science anymore, but SPSS used to be big where I worked.
Joe
Thanks. I forgot SPSS completely.
AndyL
+1  A: 

Scientific Computing - e.g. fluid dynamics - Fortran, C, C++

AI - Lisp, Prolog

Algebraic Specification - SDF+SDF, Maude

Experimental Mathematics - Mathematical, C

Language Theory - Prolog (especially the Definite Clause Grammar feature)

cartoonfox
A: 

LISP has been and always will be popular for a very large variety of very specific things. You can learn more about it's use in the book SICP.

Sneakyness