HACKER Q&A
📣 in9

I like studying the concept of abstractions


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.

I bought "sequel" to SICP, Software Design for flexibility, but the amount of scheme needed will take me a while to be confortable with.

What else do you guys recommend me to study? Books, courses, blog posts. Anything goes :D


  👤 sargstuff Accepted Answer ✓
'lisp is a binary tree / heap': https://code.google.com/archive/p/graphbook/

functional programming jargon: https://github.com/hemanth/functional-programming-jargon

practicing data structures (programming languages): https://opendsa-server.cs.vt.edu/

   https://opendsa-server.cs.vt.edu/OpenDSA/Books/PL/html/index.html

https://github.com/CodyReichert/awesome-cl#data-structures

👤 sargstuff
Original request bit wide open on subject domain/topic subdomains.

aka CS AI; CS programming language implimentation; implimenting a database engine

Subject domain bit wide, but assuming 1-2yr computer science degree, biased towards lisp related data structures / algorithms (aka recursive tree data structures & algorithms).

So, no distinction between metadata vs. structual storage unless noted.

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.

aka Lisp in Small Pieces by Christian Queinnec; ; https://github.com/aalhour/awesome-compilers; On Lisp by Paul Graham; Let over Lambda by Doug Hoyte; C 'macro's pushed to maximum effect : https://libcello.org/

    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

;;; Basic groupings : 1) theory; 2) learning & training problems; 3) algorithm book on-line ; 4) notational theory

;;;* 1) Theory:

   ** 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
;;;* 2) Learning / Training problems:

   Lots of non-lisp language training problems sites.
   Other than go and try it in lisp language of choice, perhaps also
   use a  to lisp or lisp to  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

;;* 3) algorithm book (on-line):

   ** 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/

;;* 4) Notational stuff:

  ** 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