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