I've just finished reading SICP and the content within the first chapters of abstraction and how to write general programs was something I really liked thinking about.<p>I bought "sequel" to SICP, Software Design for flexibility, but the amount of scheme needed will take me a while to be confortable with.<p>What else do you guys recommend me to study? Books, courses, blog posts. Anything goes :D
Original request bit wide open on subject domain/topic subdomains.<p>aka CS AI; CS programming language implimentation; implimenting a database engine<p>Subject domain bit wide, but assuming 1-2yr computer science degree, biased
towards lisp related data structures / algorithms (aka recursive tree data structures & algorithms).<p>So, no distinction between metadata vs. structual storage unless noted.<p>Anything beyond that tends towards masters & upper level undergraduate level material. aka review the implimentation of a programming language for algorithm & data structure usage per language features.<p>aka Lisp in Small Pieces by Christian Queinnec; ; <a href="https://github.com/aalhour/awesome-compilers;" rel="nofollow">https://github.com/aalhour/awesome-compilers;</a> On Lisp by Paul Graham; Let over Lambda by Doug Hoyte; C 'macro's pushed to maximum effect : <a href="https://libcello.org/" rel="nofollow">https://libcello.org/</a><p><pre><code> Left out Comparison of languages; Transform from lang a to lang b; and language implimentation as discussions tend to assume masters / upper level undergraduate knowledge
</code></pre>
;;; Basic groupings : 1) theory; 2) learning & training problems; 3) algorithm book on-line ; 4) notational theory<p>;;;* 1) Theory:<p><pre><code> ** Category Theory for Programmers by Bartosz Milewski
** Regular expressions
** subject of meta-programming : https://en.wikipedia.org/wiki/Metaprogramming
** subject of meta-modeling : https://en.wikipedia.org/wiki/Metamodeling
** programing pardigms : https://en.wikipedia.org/wiki/Programming_paradigm
** programning language patterns : https://en.wikipedia.org/wiki/Software_design_pattern
</code></pre>
;;;* 2) Learning / Training problems:<p><pre><code> Lots of non-lisp language training problems sites.
Other than go and try it in lisp language of choice, perhaps also
use a <language> to lisp or lisp to <language> for hints if stuck.
** language & non-language specific coding problems : https://adriann.github.io/programming_problems.html
-- a few links from adriann.githupb.io:
-- https://www.spoj.com/problems/classical/sort=0,start=500
-- https://www.ic.unicamp.br/~meidanis/courses/mc336/problemas-lisp/L-99_Ninety-Nine_Lisp_Problems.html
-- https://rosettacode.org/wiki/Category:Programming_Tasks
** https://lispcookbook.github.io/cl-cookbook/
** meta-algorithms site : https://the-algorithms.com
** https://www.geeksforgeeks.org/data-structures/
** https://www.geeksforgeeks.org/advanced-data-structures/?ref=gcse
</code></pre>
;;* 3) algorithm book (on-line):<p><pre><code> ** Programming Algorithms in Lisp by VsevolodDomkin
** Competative Programming : https://cses.fi/book/book.pdf
** Algorithms by Jeff Erickson (non-lisp bent): https://jeffe.cs.illinois.edu/teaching/algorithms/
** Open Data Structures : https://opendatastructures.org/ods-python/
</code></pre>
;;* 4) Notational stuff:<p><pre><code> ** Ebnf https://www.gimtec.io/articles/ebnf/ (check out the further readings!)
** awesome syntax-tree : https://github.com/syntax-tree/awesome-syntax-tree
** church encoding : https://en.wikipedia.org/wiki/Church_encoding
** mogensen-scott encoding : https://en.wikipedia.org/wiki/Mogensen%E2%80%93Scott_encoding`
** lambda calculus : https://en.wikipedia.org/wiki/Lambda_calculus
** Combinators : https://github.com/loophp/combinator</code></pre>