Discuss programming here.
If you want to fully understand programming conceptually, in the long term, I think Structure and Interpretation of Computer Programs (SICP) is the best foundation. The 1986 MIT lecture videos by the SICP authors, Hal Abelson and Gerald Sussman, are free on YouTube.
If you find SICP too hard, use Simply Scheme first. It was created by Brian Harvey (of UC Berkeley) for the purpose of helping people get ready for SICP.
I'm familiar with Harvey, not Abelson and Sussman. UC Berkeley took down 20,000 free lectures after 2 deaf people complained that there were no subtitles. You can still find Harvey's SICP lectures on Archive.org or uploaded to YouTube by third parties.
There are many reasonable and effective ways to learn to code. If you prefer other material, that's OK.
Comments (12)
I'm combining *Simply Scheme* with https://poignant.guide to learn the fundamentals of coding as well as Ruby. It was great advice.
My reason for doing this is that I always run in to the constraint of not having good enough coders (or any at all) for my projects. Now I want to learn myself since it also helps in my other long term goal of learning philosophy.
If you are new to coding as I am (I had some failed attempts with Python before), the above is a good way.
Curi, if you have written and / or made any video on anything on how to better learn to code please do let me know.
Curi, why do you recommend Ruby over Python (or any other language)?
I don't strongly recommend Ruby. Other stuff, e.g. Swift or javascript, is OK. Ruby has better design principles (e.g. the consistent everything-is-an-object design vs. Python's inconsistent mix) and is more lisp-like and functional-programming-friendly than Python, but it's not a huge difference (they are reasonably similar).
I'm told that Clojure is a good option for a modern lisp, though I haven't used it because I don't do a lot of coding lately.
The larger the project, the more important it is to use a language that is fundamentally better. Ruby is usually fine for small projects and is better than e.g. C++ or Java for most larger projects, but it's not ideal. For a really complicated project, the best language would be a lisp or something else with something fundamentally good about it. Ruby and Python (and Swift, Javascript, Perl, PHP, Lua, etc.), don't really have fundamental advantages (unless you compare to lower level languages like C or Java), they're just pretty convenient for small stuff (except PHP, don't ever use PHP).
Also, in the longer run, it's not important to learn programming using the same language you would do a project in. That's only a shorter term benefit. Once you're good at coding, learning new languages is easy unless they have major stuff that your previous language(s) lacked (in other words, if they have stuff you haven't yet learned about – then you'd have to learn more, but learning to do the same stuff you already do with a different language is generally easy).
Thanks, Curi.
Since most of what I will be doing is considered small projects, Ruby it shall be.
Btw, why never use PHP? It seems to be the most popular framework:
https://www.similartech.com/categories/framework
PHP is just terrible. Awful to use, awful design, total mess. It's far worse than sorta-comparable languages like ruby, python, perl, etc.
can u teach me how to hack stuff
Appart from DD's books, what books / sources do you recommend for learning more about how computers and computation works for someone starting out to learn about this?
Depends what you want to know. I like SICP and Feynman's lectures on computation.
#13307
Fundamentals regarding how it works mostly. I'm reading *Simply Scheme* instead of *SICP* as I found *SICP* too advanced for my present understanding. I will make sure to watch Feynman's lectures on computation. Thank you.
> I will make sure to watch Feynman's lectures on computation.
That's a book.
Another way to learn programming
Elliot referred to "many reasonable and effective ways to learn to code".
Following that thought ...
One overall approach to learning programming is to start with a high-level language. As many of the posts above suggest. That's fine, and good.
Another approach is to start with a very low level language: assembly code.
To take that approach, this is an excellent book:
http://www.bartlettpublishing.com/site/catalog/programming-from-the-ground-up
>> I will make sure to watch Feynman's lectures on computation.
> That's a book.
Thanks. I was hoping for it to be both as Feynman is a great lecturer.