[Previous] Physics Discussion | Home | [Next] Twin Studies Are Frauds

Programming Discussion

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.


Elliot Temple on July 30, 2019

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.


N at 12:40 AM on August 1, 2019 | #13191 | reply | quote

Curi, why do you recommend Ruby over Python (or any other language)?


N at 10:07 AM on August 1, 2019 | #13193 | reply | quote

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).


curi at 10:22 AM on August 1, 2019 | #13194 | reply | quote

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


N at 10:35 AM on August 1, 2019 | #13195 | reply | quote

PHP is just terrible. Awful to use, awful design, total mess. It's far worse than sorta-comparable languages like ruby, python, perl, etc.


curi at 10:42 AM on August 1, 2019 | #13196 | reply | quote

can u teach me how to hack stuff


bizzap at 7:54 PM on August 1, 2019 | #13197 | reply | quote

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?


N at 10:24 PM on August 15, 2019 | #13306 | reply | quote

Depends what you want to know. I like SICP and Feynman's lectures on computation.


curi at 11:35 PM on August 15, 2019 | #13307 | reply | quote

#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.


N at 5:47 AM on August 16, 2019 | #13309 | reply | quote

> I will make sure to watch Feynman's lectures on computation.

That's a book.


Anonymous at 11:24 AM on August 16, 2019 | #13312 | reply | quote

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


Richard P at 7:11 PM on August 16, 2019 | #13317 | reply | quote

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


Anonymous at 6:28 AM on August 17, 2019 | #13319 | reply | quote

(This is an unmoderated discussion forum. Discussion info.)