This site has a motley collection of programs in several languages. This page is to collect reasons that I use some language over others. Of course some programs have be transcribed into several languages because they were part of some larger project.
gcc C
C is fast. I use it when the job doesn’t demand the benefits of languages below. Most of my C programs use gcc extensions, mainly nested procedures. See this too. I have just a couple of C++ programs.
clang C
Apple no longer supports gcc. 😠 I badly miss nested functions. Clang has a few nice advantages.
Algol 68
This language has nice syntax and semantics. The implementation I use has nearly arbitrary precision floating point arithmetic. The array semantics is powerful and built into the syntax.
Scheme
Scheme has indefinite extent procedures and lambda expressions. It has most of the nice features of LISP while being much simpler than modern LISPs. Its many parentheses make it easy to browse and edit with an editor that understands parentheses. It has rational numbers easily accessible.
OCaml
is strongly typed which allows it to be much faster and sometimes aids debugging. It has most of the benefits of Scheme. Occasionally strong types limit patterns. Its Screen graphics is very easy to use. OCaml is harder to edit.
Java
has first class access to the screen and can make jpg files and such.
Javascript
I use this merely to explore and demo the language, and learn what Javascript programs can do to me.
By feature
Speed
C, Java (OCaml except native compile doeesn’t work on Mac just now.)
Nested functions
gcc, OCaml, Scheme, Algol68, Javascript
Indefinite Extent Functions and Lambda expressions
Scheme, OCaml, Javascript. Algol68 has lambda but not Indefinite Extent
Easy browsing and editing
Scheme
Array Semantics (slices and subarrays)
Algol 68. OCaml has a powerful array library but syntax is awkward.
Fancy Arithmetic
High precision floating point:
Algol (compiler feature)
Rational:
Scheme
Complex:
C, Scheme, Algol
Graphics
Java to Screen and File, OCaml to Screen