This chapter provides practical info on each of the main programming languages of the Netherlands eScience Center.

This info is (on purpose) high level, try to provide "default" options, and mostly link to more info.

Each chapter should contain:

  • Intro: philosophy, typical usecases.
  • Recommended sources of information
  • Installing compilers and runtimes
  • Editors and IDEs
  • Coding style conventions
  • Building and packaging code
  • Testing
  • Code quality analysis tools and services
  • Debugging and Profiling
  • Logging
  • Writing documentation
  • Recommended additional packages and libraries
  • Available templates

Preferred Languages

At the Netherlands eScience Center we prefer Java and Python over C++ and Perl, as these languages in general produce more sustainable code. It is not always possible to choose which libraries we use, as almost all projects have existing code as a starting point.

(In alphabetical order)

  • Java
  • JavaScript (preferably Typescript)
  • Python
  • OpenCL and CUDA
  • R

Selecting tools and libraries

On GitHub there is a concept of an "awesome list", that collects awesome libraries and tools on some topic. For instance, here is one for Python: https://github.com/vinta/awesome-python

Now, someone has been smart enough to see the pattern, and has created an awesome list of awesome lists: https://awesome.re/

Highly recommented to get some inspiration on available tools and libraries!

Development Services

To do development in any language you first need infrastructure (code hosting, ci, etc). Luckily a lot is available for free now.

See this list: https://github.com/ripienaar/free-for-dev