SICP μεταφρασμένο σε JS

Το φημισμένο Structure and Interpretation of Computer Programs, που κάποτε διδάσκονταν στο εισαγωγικό μάθημα προγραμματισμού στο MIT και περιγράφει concepts της πληροφορικής με χρήση Scheme, τώρα επίσημα διαθέσιμο και σε JavaScript εκδοχή. Βέβαια υπήρχε αρκετά χρόνια τώρα τουλάχιστον από το 2012 αλλά δεν είχε κυκλοφορήσει σαν βιβλίο.

Πέρα της προς πώληση φυσικής έκδοσης όπως η αρχική εκδοχή είναι υπό CC άδεια και ελεύθερα διαθέσιμο σε ψηφιακή μορφή.

overview: Structure and Interpretation of Computer Programs
συγκριτική web έκδοση: https://sicp.sourceacademy.org
interactive web έκδοση: Source Academy
pdf: https://sicp.sourceacademy.org/sicpjs.pdf

1 «Μου αρέσει»

Έχω δηλώσει στο παρελθόν πως υπάρχουν 10 είδη προγραμματιστών. Αυτοί που έχουν δει τα βίντεο του SICP και αυτοί που δεν έχουν. Οι δεύτεροι δεν ξέρουν καν τι χάνουν.

Όλο το Playlist εδώ: https://www.youtube.com/playlist?list=PLB63C06FAF154F047

Αν κάποιος θέλει να γίνει προγραμματιστής, και όχι να προγραμματίζει θα πρέπει να δει τα βίντεο. Μακάρι να τα είχα δει νωρίτερα. Είχα γράψει AutoLisp αλλά δεν είχα καταλάβει τι γλώσσα διαμάντι είναι. Σε κάποιο βίντεο σταμάτησα, χτύπησα το κεφάλι μου στον τοίχο μερικές φορές, συνέχισα το βίντεο, επανέλαβα.

Το βιβλίο το έχω αγοράσει σε τυπωμένη μορφή, δεν ξέρω πως νοιώθω για την JavaScript, αλλά είναι μια καλή γλώσσα για να πιάσει το πνεύμα του βιβλίου. Άλλωστε είναι μια Lisp μεταμφιεσμένη σε γλώσσα C. Και ας μας πήρε χρόνια να το καταλάβουμε μέχρι να μας ανοίξει τα μάτια ο Douglas Crockford.

1 «Μου αρέσει»

Ε, δεν θα το έλεγα. Αν και από όταν γράφτηκε η σελίδα έχουν προστεθεί στοιχεία που τη φέρνουν πιο κοντά (π.χ. tail-call optimization και block scoping στην ES6) πάλι απουσιάζουν σημαντικά (ομοεικονισμός και macros). Ίσως μια Lisp-y γλώσσα?

Πάντως λίγο που το κοίταξα πιστεύω έχουν κάνει καλή δουλειά. Βέβαια δεν ξέρω οι JS devs τι πιστεύουν για κομμάτια κώδικα όπως

function sign(x) {
    return x < 0 
           ? -1
	   : x > 0
	     ? 1
	     : 0;
}

όπου μου φαίνεται γίνεται λίγο κατάχρηση της γλώσσας.