Hi Hamish,

> What languages do you like?

Good question.  Typically one well suited to the task, so there's not
`one size fits all'.

C for allowing close access to the hardware, and running with tight
constraints.

sed(1) for its model of stream-editing of text;  it does more than just
`s/foo/bar/g'.

awk(1) for when sed isn't quite enough and more state and variables are
required, or its automatic parsing into `words'.  awk learnt from and
kept sed's stream model.

dc(1) when more maths is involved as it has unlimited precision, unlike
C and awk's IEEE floating point.  It's handy for varying bases and
producing bytes.  The syntax is terse, but then it does pre-date Unix
and was the first program ported to it.  :-)  Here's a base94 string
representing the current time.

    $ dc <<<94o`date +%s%N`p |
    > sed 's/^0$/ 00/; s/ ../33&+P/g; s/$/10P/' |
    > dc
    #^}FHB$_Ts

m4(1) when a more structured parse of data is required, with macro
expansions doing the work.  Its macro model isn't like cpp(1)'s.

sh(1)/bash(1) to bind these all together like some high-level
programming language with powerful commands.

perl(1) because it was skilfully woven by Larry Wall who knew the Unix
programming environment inside out and what was required when a shell
script was insufficient.  It combines all the best bits of sed, awk, and
sh with a fast implementation.  The syntax is easier to understand if
you already know its influences.  But it went downhill when he left, now
aping C++ in its complexity, and newcomers came along so these days I
just use it occasionally in a pipeline as...

python(1) is a good alternative, though not as fast.  The syntax is
clear, but it can still lure the unwary: 
    l=[0, 1, 2]; m=l; m.remove(1); print(l)

Go because it has that fine judgement in design that C struck all those
decades ago.  Not surprising giving its pedigree.  It brings a garbage
collector that can be tolerated and is still improving, a good standard
library, and with the new `vgo' a reasonable way of importing
third-party libraries into a project's code.  The language specification
is a single web page so it can settle in one's head over time.  There
are strong idioms used by the community.  It has lots of good tooling
surrounding it.  It's C's successor in many areas.

Of the assembly languages I used a lot, POWER and ARM were good.  (ARM
not including Thumb.)  I like orthogonal RISC ones as they're less to
remember and make for easier weaving.

What do I consciously not use?  Ada, C++, Java, Rust, Ruby, Lisp,
Haskell, Javascript, ...  I'd like to learn Snobol and/or Icon,
particularly for their pattern matching, Verilog, and the RISC-V
assembly language having bought a development board.  :-)

Cheers, Ralph.

-- 
Next meeting:  Bournemouth, Tuesday, 2018-05-01 20:00
Meets, Mailing list, IRC, LinkedIn, ...  http://dorset.lug.org.uk/
New thread:  mailto:dorset@mailman.lug.org.uk / CHECK IF YOU'RE REPLYING
Reporting bugs well:  http://goo.gl/4Xue     / TO THE LIST OR THE AUTHOR

Reply via email to