@@ -65,31 +65,24 @@ tradeoffs need to be carefully considered.
6565
6666##### Modern Lisps
6767
68- [ Janet] ( https://janet-lang.org/ )
69-
70- A modern Clojure-like Lisp without the JVM baggage designed for easy
71- embeddability.
72-
7368[ Clojure] ( https://clojure.org/ )
7469
7570Clojure is a modern Lisp on the JVM (and the browser in the form of
7671ClojureScript), which incorporates great ideas from multiple
7772paradigms. Easy interoperability with the large number of available
78- Java libraries is an added bonus .
73+ Java libraries can make it a no-brainer for enterprise usage .
7974
8075It features persistent data structures, a well-designed sequence
8176abstraction, great support for concurrency, and to round it off, good
8277performance on the JVM.
8378
84- The error handling and interactivity may not be as good as Common
85- Lisp, but it doesn't have all of Common Lisp's warts and historical
86- baggage.
79+ [ Janet ] ( https://janet-lang.org/ ) and [ Fennel ] ( https://fennel-lang.org/ )
80+
81+ These are modern Clojure-like Lisps without the JVM baggage.
8782
8883[ Racket] ( http://racket-lang.org/ )
8984
90- A modern dialect of Scheme, which is gradually becoming the premier
91- Scheme-ish language. An interesting feature of Racket is that it has
92- several "sublanguages".
85+ A modern dialect of Scheme.
9386
9487##### Common Lisp
9588
@@ -99,12 +92,8 @@ Steve Losh's recommendations on how to learn Common Lisp.
9992
10093[ Practical Common Lisp] ( http://www.gigamonkeys.com/book/ )
10194
102- An introduction to Common Lisp describing the construction
103- of practical, real world programs.
104-
105- [ Articulate Common Lisp] ( http://articulate-lisp.com/ )
106-
107- A collection of CL resources.
95+ An introduction to Common Lisp describing the construction of
96+ practical, real world programs.
10897
10998#### Programming languages
11099
@@ -120,12 +109,6 @@ A logic-programming language. You are probably best off starting with
120109
121110[ Raku] ( https://raku.org/ )
122111
123- The language formerly known as Perl 6. At some point the Perl
124- community decided to create a "new" version of Perl i.e. Perl 6. As
125- the changes became more and more backwards-incompatible, they realised
126- that they were designing an all-new sister language. In 2020, after
127- much discussion and Larry Wall's blessing, Perl 6 was renamed to Raku.
128-
129112Raku is an expressive, gradually typed, multi-paradigm language
130113drawing from the rich history and
131114roll-up-your-sleeves-and-get-your-hands-dirty hacker-ethos of Perl
@@ -135,6 +118,11 @@ Notable features include first-class support for grammars, modern
135118concurrency primitives, a MOP, being able to easily define arbitrary
136119operators, and keeping in line with Perl's legacy, all new regexes.
137120
121+ Raku was formerly known as Perl 6. At some point the Perl community
122+ decided to create a "new" version of Perl i.e. Perl 6. As the changes
123+ became more and more backwards-incompatible, they realised that they
124+ were designing an all-new sister language. In 2020, after much
125+ discussion and Larry Wall's blessing, Perl 6 was renamed to Raku.
138126
139127### Programming Language Theory
140128
@@ -144,14 +132,14 @@ A blog and community for programming language enthusiasts.
144132
145133[ Oleg Kiselyov's site] ( http://okmij.org/ftp/ )
146134
147- Pro research .
135+ Lots of papers on functional programming, type theory .
148136
149137### Networks
150138
151139[ Beej's Guide to Network Programming Using Internet
152140 Sockets] ( http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html )
153141
154- A humorous guide to get started with network programming in C.
142+ A guide to get started with network programming in C.
155143
156144## CS
157145
@@ -179,36 +167,33 @@ spending a sizeable amount of your time working with them.
179167
180168[ gdb] ( https://www.gnu.org/software/gdb/ )
181169
182- The GNU Debugger can help with finding what's going wrong
183- with your program. It's usually used to debug C/C++
184- programs.
170+ The GNU Debugger can help with finding what's going wrong with your
171+ program. It's usually used to debug C/C++ programs.
185172
186173[ ccache] ( https://ccache.samba.org/ )
187174
188- Building large projects can take a significant amount of
189- time. ccache can help with reducing the time spent
190- waiting for the build to finish.
175+ Building large projects can take a significant amount of time. ccache
176+ can help with reducing the time spent waiting for the build to finish.
191177
192178### Text editors
193179
194180Knowing how to efficiently use a text editor is one of the most useful
195181secondary skills of any programmer.
196182
197- Among the free text editors, vim and emacs have (unfortunately) been
198- the state of the art for quite some time now.
183+ Among the free text editors, vim and emacs are particularly
184+ formidable. It's undecided as to which is better, just like Tabs vs
185+ Spaces debate among programmers.
199186
200187[ Vim] ( http://www.vim.org/others.php )
201188
202- A modal text editor that has nice key bindings and an
203- emphasis on speed. It is an important command-line
204- survival skill. Once installed, run the "vimtutor" command
205- to start a basic tutorial.
189+ A modal text editor that has nice key bindings and an emphasis on
190+ speed. It is an important command-line survival skill. Once installed,
191+ run the "vimtutor" command to start a basic tutorial.
206192
207193[ Emacs] ( http://www.gnu.org/software/emacs/tour/ )
208194
209195An operating system containing, amongst many other things, a file
210- manager, calculator, games, package manager and (arguably) a text
211- editor.
196+ manager, calculator, games, package manager and also a text editor.
212197
213198It can be extended in trivial, and non-trivial ways with Emacs Lisp,
214199which also happens to be the language it is written in.
@@ -223,29 +208,27 @@ modifier key like "Hyper", to reduce dependence on the Control key.
223208Users who prefer Vim's more ergonomic keybindings have a lot of
224209options in making Emacs work that way.
225210
226- [ VS Code] ( https://code.visualstudio.com/ )
227-
228- A modern open-source text editor developed by Microsoft.
229-
230211[ Notepad++] ( http://www.notepad-plus-plus.org/ )
231212
232213An easy to use, feature-laden text editor.
233214
234215### Version Control
235216
236- A Version Control System (VCS) is used to track changes in
237- files. Even the most trivial projects can quickly become
238- unmanageable if a VCS is not used.
217+ A Version Control System (VCS) is used to track changes in files. Even
218+ the most trivial projects can quickly become unmanageable if a VCS is
219+ not used.
239220
240221[ Pro Git] ( http://git-scm.com/book )
241222
242223A solid introduction to the powerful Git version control system.
243224
244- [ Mercurial] ( http://hginit.com/01.html )
225+ [ Jujutsu] ( https://jj-vcs.github.io/ )
226+
227+ A modern version control system that's been getting some rave reviews.
228+
229+ [ Fossil] ( https://fossil-scm.org )
245230
246- Mercurial is easier to learn and use when compared to
247- Git. This tutorial covers the fundamental idea behind version control
248- and basic usage of Mercurial.
231+ A lightweight version control system written by [ DRH] ( https://en.wikipedia.org/wiki/D._Richard_Hipp ) .
249232
250233[ Commit message guidelines] ( https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html )
251234
@@ -254,18 +237,17 @@ is readable.
254237
255238### Command-line
256239
257- Mastering the command line shell gives you unfathomable power and more
258- importantly nerd cred. ;-)
240+ Mastering the command line is not something that can be avoided.
259241
260- [ zsh ] ( https://wiki.archlinux.org/index.php/Zsh )
242+ [ fish ] ( https://fishshell.com/ )
261243
262- A shell with nice completions and other customisable features .
244+ An easy to use shell, with great defaults .
263245
264246[ tmux] ( http://tmux.sourceforge.net/ )
265247
266- Switching between multiple terminal emulator instances can
267- hamper productivity. This terminal multiplexer can be used
268- with a tiling window manager for a killer combination.
248+ Switching between multiple terminal emulator instances can hamper
249+ productivity. This terminal multiplexer can be used with a tiling
250+ window manager for a killer combination.
269251
270252[ GNU coreutils] ( https://en.wikipedia.org/wiki/GNU_Core_Utilities )
271253
@@ -276,11 +258,6 @@ wizardry.
276258For as long as text terminals are used, it will be worth your while to
277259be comfortable with using these.
278260
279- [ hh] ( https://github.com/dvorka/hstr )
280-
281- Allows you to easily view, navigate, search and manage your command
282- history.
283-
284261[ fzf] ( https://github.com/junegunn/fzf )
285262
286263A command line fuzzy finder.
@@ -297,7 +274,7 @@ and grep which can be used to search directories recursively.
297274Tiling window managers are useful in a typical programming session
298275when you have to repeatedly switch between your text-editor, terminal
299276emulator, web-browser, and any number of other programs you may have
300- running. Alt-Tab never again!
277+ running.
301278
302279[ xmonad] ( http://xmonad.org/ )
303280
@@ -307,8 +284,11 @@ A tiling window manager written in Haskell.
307284
308285[ Inkscape] ( http://tavmjong.free.fr/INKSCAPE/MANUAL/html/ )
309286
310- The best open source SVG editor there is. Also allows importing from,
311- exporting to the commonly used graphical formats.
287+ An easy to use vector graphics editor.
288+
289+ [ Krita] ( https://krita.org/ )
290+
291+ A digital painting program.
312292
313293### Miscellaneous
314294
@@ -363,7 +343,11 @@ A selection of commonly used symbols.
363343
364344[ Common Lisp HyperSpec™] ( http://www.lispworks.com/documentation/HyperSpec/Front/index.htm )
365345
366- The entire ANSI CL standard in HTML. Rather readable.
346+ The entire ANSI CL standard in HTML.
347+
348+ [ Novaspec] ( https://novaspec.org/ )
349+
350+ A nicer way to read the HyperSpec.
367351
368352### Protocols, Specifications
369353
@@ -396,25 +380,25 @@ some of our recommendations.
396380
397381[ Debian] ( http://www.debian.org/ )
398382
399- [ neena] ( http://neena.at/ ) says that it is a decent operating system. A
400- widely used, stable Linux distribution.
383+ A rock solid and stable Linux distribution.
401384
402385[ Arch Linux] ( https://www.archlinux.org/ )
403386
404387A Linux distribution with an emphasis on simplicity, configurability
405388and having the latest software packages. Rolling releases keep your
406389system at the bleeding edge.
407390
391+ [ Manjaro] ( https://manjaro.org/ )
392+
393+ A pre-configured distribution based on Arch Linux.
394+
408395[ FreeBSD] ( https://www.freebsd.org/ )
409396
410397It is worth checking out some BSDs as well. Features include
411398first-class support for ZFS, great networking software, excellent
412399documentation, no dependence on systemd, and the BSD license for those
413400who prefer it to Linux's GPL.
414401
415- From what we can gather, it works better on slightly older hardware as
416- all the latest and greatest drivers may not be well-supported.
417-
418402BSDs are used in many sites for critical networking infrastructure
419403such as firewalls.
420404
@@ -448,7 +432,7 @@ It's a good idea to read this before asking questions on the internet (and in re
448432Fascinating insights into the life experiences of a
449433scientist, and his colleagues.
450434
451- [ Programming Language Comparison by Mike Vanier] ( http ://users.cms.caltech.edu/~ mvanier/hacking/programming.html)
435+ [ Programming Language Comparison by Mike Vanier] ( https ://raw.githubusercontent.com/ mvanier/mvanier.github.io/refs/heads/main/home_page_old /hacking/programming.html)
452436
453437Slightly dated, but still a good comparison between the various
454438languages the author has used in his career.
@@ -498,6 +482,4 @@ While we are on the subject of Mr. Norvig, his articles on [Solving
498482Every Sudoku Puzzle] ( http://www.norvig.com/sudoku.html ) and [ How to
499483Write a Spelling Corrector] ( http://www.norvig.com/spell-correct.html )
500484are legendary. It is manifest how powerful and elegant programming can
501- be when performed by a master. Any programmer who can write a
502- technical article of a similar quality to these two, should be pleased
503- with themselves.
485+ be when performed by a master.
0 commit comments