Programming Languages

From HPC Wiki
Jump to navigation Jump to search


Among the decades, very many programming languages has been evolved. We list some most widely used in the context of HPC here.

Low-Level programming languages

  • Machine code: That are 10001001011110 your computer can understand. You likely not.
  • Assembler: human-readable (to somehow extent; many says 'for special humans'), but still very low-level. Allows the programmer to get the very last possible performance crumbs from the hardware, but in turn is hardware-dependent and very tedious to program. Highly-tuned libraries often contain ASM parts, often making this software less-portable. You should not start at assembler level when programming an application.

High-level programming languages

... are readable by humans. The source code is a text file, to be translated to an executable file by a compiler (we do not want to introduce the definition bush about compiled and interpreted languages here). In addition to human-readablity these programs are portable, you just need to recompile your code on another hardware using a compiler understanding the same language. Note that being standard-compliant for both the code and the compiler greatly enhance the chances of porting to be a smooth, enjoyable procedure.

  • Fortran, the 1st wide-used high-level programming, used in HPC since 1954 and will likely be used for a long time, as there are still many Fortran projects and tons of libraries-canot-give-up around. Fortran handles multi-dimensional arrays very comfortably. Due to some restrictions in the memory handling the compiler has more optimisation freedom leading to quite well-performing code out of the box, usually.
  • C and C++ are related languages with the second being object-oriented, with a lot of programming comfort. “C programs are the fastest” is usually not true. As C has very few syntax limitations, this often gives the compiler a hard time optimizing. The passing of pointers is in most cases the biggest handicap. You can rid this, but need to take care.
  • JAVA is a widely used programming language, but due to performance issues in most cases not suited for true high performance computing.

Script / interpreted languages

  • Shell helps you to script many calls to a single program. The batch scripts are programmed in one of Shell languages.
  • Python evolves to very powerful scientific computing language nowadays, especially for those prepared to abadon MATLAB from the compute pipeline.
  • Perl is another scripting language with very powerful handling of regular expressions.
  • MATLAB is a powerful numerical computing environment with same-called programming language.

Books an Links

  • C
    • Brian W. Kernighan, Dennis M. Ritchie: Programmieren in C - Carl Hanser Verlag - 1990. ISBN-13: 978-3446154971 (in German)
    • Brian W. Kernighan, Dennis M. Ritchie: The C Programming Language - Prentice Hall; 2nd edition (April 1, 1988). ISBN-13: 978-0131103627
    • Henry S. Warren: Hacker's Delight - Addison-Wesley Professional; 2nd revised edition (25. September 2012). ISBN-13: 978-0321842688 hackersdelight.org/ (Archived)
  • C++
  • Fortran
    • Stephen Chapman: Fortran for Scientists and Engineers - McGraw-Hill Education. This book was the Fortran book for many years; the actual 4ed - 2017 seem to be overprised.
    • Michael Metcalf, John Reid, Malcolm Cohen: Modern Fortran Explained: Incorporating Fortran 2018 - ISBN-13: 978-0198811893. Latest edition of Fortran books by those autors.
    • Walter S. Brainerd: Guide to Fortran 2008 Programming - 2015 - ISBN-13: 978-1447167587. Also available in older editions for older Fortran standards.
    • Fortran Standards Documents