HomeTexts

logo

TEXTS

Programming, UNIX philosophy and the GNU project

I started programming with the BASIC of the Sinclair ZX-81 and ZX-Spectrum microcomputers, and later with VAX/VMS systems and their Fortran compiler. I have never abandoned Fortran, which remains my favourite programming language because it translates mathematical formulation into programming instructions most directly, and handles text files with great agility. With the strong arrival of GNU/Linux in the late 90s I adopted other scripting languages such as bash, gnuplot, TCL/Tk, Python, and many others... And nowadays, with the help of artificial intelligences like "DeepSeek", it becomes increasingly easy to translate or create code for any language.

The book "The art of UNIX programming" by E.S. Raymond describes the UNIX philosophy very clearly, which I have adopted as an attitude towards programming and towards solving many engineering problems.

Some basic UNIX ideas:

  1. Write programs that do one thing and do it well.
  2. Write programs to work together.
  3. Write programs to handle text streams, because that is a universal interface.
  4. Data rules. If you've chosen the right data structures and organised things well, the algorithms will almost always be evident (put knowledge in the data, so the program logic is stupid and robust).
  5. Ken Thompson: When in doubt, use brute force.
  6. Programmer time is expensive; conserve it in preference to machine time (makes a lot of sense today with AI).
  7. Keep it Simple, Stupid! (KISS)
  8. And others that I never tire of re-reading from time to time in E.S. Raymond's book...

The second fundamental concept is GNU and the freedom of free software according to the GNU project by Richard Stallman. Free Software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software. More precisely, it refers to four kinds of freedom for software users:

  1. The freedom to run the program, for any purpose
  2. The freedom to study how the program works, and adapt it to your own needs
  3. The freedom to redistribute copies so you can help your neighbours
  4. The freedom to improve the program, and release your improvements to the public, so that the whole community can benefit

The simple yet revolutionary ideas of the GNU project, and the UNIX philosophy (in particular of the GNU/Linux system), provide the environment in which programmers, mathematicians, physicists, and engineers can work naturally, with freedom and efficiency. GNU serves computer science, and much more.