I'm going to start working through the SICP, as my first true venture into...

Blake Wood
Blake Wood

I'm going to start working through the SICP, as my first true venture into programming. Is there any background info I need to know? I know some basic algebra.

All urls found in this thread:
https://functionalcs.github.io/curriculum/
https://www.youtube.com/playlist?list=PL8FE88AA54363BC46
https://archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E?sort=titleSorter
http://blog.30dor.com/2014/03/21/performance-and-types-in-lisp/
https://www.edx.org/course/how-code-simple-data-ubcx-htc1x
https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w/playlists
Lucas Gomez
Lucas Gomez

install gentoo

Sebastian Reyes
Sebastian Reyes

Stop wasting your time on bullshit meme functions and read TAOCP instead.

Nolan Jones
Nolan Jones

Different user, but how much math/other knowledge would I be expected to know before starting TAOCP?
I started HtDP awhile ago, but it seemed to be kinda math heavy in the beginning. So I put it on pause while I work on my math.

I am vaguely doing this course:
https://functionalcs.github.io/curriculum/
I've been catching up on math doing khan academy(reccomend for anyone reading this and looking for a good resource because they feel like a retard, I am breezing through even concepts I had never encountered before), the math books all expected way more knowledge than I had.
Also I am halfway decent at python, as I have been learning that for awhile. Just trying to get a solid foundation to not be a pajeet.

Ethan Parker
Ethan Parker

SICP requires no prerequisites besides High School math. Don't give up if you encounter things that weren't taught to you like proving by recursion, as you can quickly learn those things through the internet.

The increasing number of people that say it is nothing but a meme or that it is too difficult are unfortunate demonstrations of /tech/s decline. Working through SICP is time well spent especially if you have no experience in lisps.

Hunter Campbell
Hunter Campbell

I hope you're watching the lectures.
https://www.youtube.com/playlist?list=PL8FE88AA54363BC46

Ethan Carter
Ethan Carter

Induction*

Noah Diaz
Noah Diaz

Ok, thanks. How do I use that lectures? Watch then read a chapter?

Benjamin Taylor
Benjamin Taylor

That's how I started with it.

Christian Murphy
Christian Murphy

I'm going to start working through the SICP, as my first true venture into programming. Is there any background info I need to know? I know some basic algebra.
It's a Computer Science 101 book, so you don't need any prerequisites beyond school math. SICP is a book that uses Scheme, but it is not a book to teach you Scheme, you will have to pick it up as you go along with the book. I remember when I first started out I had difficulty remembering when to push parentheses around what, so if you find yourself in the same spot look up a quick and very basic Scheme tutorial or find a Scheme cheat sheet.

It doesn't really matter, the lectures are just complementary material. You can watch the lecture first, then read a chapter, or vice-versa. Personally I skipped the lectures and just read the book because I prefer the pacing of a book, but your mileage may vary.

It is a "meme" in the sense that you are very unlikely to ever use Scheme in the real world. But the principles and techniques learned form SICP can still be applied in other languages, so SICP should be taken as a book about CS itself, not a "how to become a Scheme master" book.

Isaac Gomez
Isaac Gomez

It's a meme because it's cancer. It teaches you to think like a mathfag rather than an engineer. It has a heavy emphasis on solving problems with recursion as you'd do if you were a 300k starting type, but we avoid recursion (in professional projects) like the plague today as it's either slow and blows up the stack or is a tail recursion timebomb waiting to happen when Pajeet adds a debugging statement that causes the compiler to silently not optimize it as tail recursion due to a chance of aliasing and everything explodes for a subtle reason.

Ryan King
Ryan King

Okay, what should I do instead?

Justin Walker
Justin Walker

Holla Forums will hate this, but start with Javascript and Python. They're much closer to how one should program today, there's a ton of accessible material to learn them, you can learn by reading other people's code, and you can make useful and relevant things with them. And even if you end up as a C++ erry day guy like me, you'll still use them.

Zachary Sullivan
Zachary Sullivan

If you say so

Adam Cook
Adam Cook

It actually tries to teach you orders of growth and the disadvantages in space and time incurred by using recursion. Recursion is just one of the ways it teaches you to solve problems.

Brandon Morales
Brandon Morales

Should i read it if i have experience in programming?

Austin Miller
Austin Miller

You sound like you never made it past the first chapter. Chapter 1 is all about building abstractions with procedures, chapter 2 is about building abstractions with data, and chapter 3 is where state and time come into place.

You should still read it, but was with everything in life there are many different way to solve problems. SICP should not be the only book you read, but it should be one of the books you read.

Sure, it will give you a different look on things than what you might have been used to. All of the principles discussed can still be used in other programming languages. For example, it really helped me understand functional programming, and I can apply this knowledge in languages like Python which support first-class functions.

Luis Thompson
Luis Thompson

Don't let user and his appeal to professional programming practices™ (Just consider how awful most professional software is these days) deter you from reading SICP, the book remains one of the best introductory CS texts there is. SICP is different because it really forces you to understand both how programs are evaluated by the computer, and how they can be understood by humans.
You won't get this from simply reading a JS or python tutorial. They'll let you string together some code to do novel things, but you'll be stuck wallowing in the bog of misunderstanding for a while. This is where many beginners get trapped and you can easily tell when someone doesn't really know how programs work and is just trying to perform the right set of rituals to get it functioning adequately.

However, if you are just learning programming to put together some scripts or small utilities, most of what's written in SICP will not be relevant and you should consider another avenue. There's nothing wrong with this either, there are many other noble purists unrelated to computing and knowing just a bit of practical programing can be immensely useful.

If you do decide to go on with SICP I recommend watching the lectures here in conjunction with reading the text. They're supposed to be quite good and are much more modern (2011) than the ones from the 80s that are generally suggested. It should give a broader perspective on the subjects raised.
https://archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E?sort=titleSorter

Jackson Jackson
Jackson Jackson

Note that SICP is entirely promoted by weebs.
you'll be stuck wallowing in the bog of misunderstanding for a while
You're recommending a garbage collected language that does multi-precision math and has no native integers (fixnum isn't often word sized and differs per implemenation!) to teach someone what a machine actually does? If you add two numbers in javascript it just disassembles to a faddp. Have you ever disassembled the horrific spew that lisp-likes produce for addition? Would you even know how to? Have you seen the freakishly huge executables compiled lisp-likes generate?

$ buildapp --eval '(defun main (argv) (write-line "Hello, world"))' --entry main --output hello
$ ls -alt hello
-rwxr-xr-x 1 user anon 45056048 Aug 11 20:26 hello

How does that help someone understand what the machine is doing? That's a fourty fucking five megabyte 'Hello, world' and I have no goddamn idea what the machine does with that.

Alexander Wood
Alexander Wood

SICP is not a book about how programming languages are implemented and represented on the machine (although the final chapter is an introduction to this topic), it's a high-level view of how they are evaluated and constructed by humans. While computer architecture is certainly a valuable thing to know and I would recommend studying it after SICP, it's orthogonal to the practice of programming.

As for the efficiency of Lisp, it depends on the implementation, SBCL can compile Common Lisp down to quite terse x86 assembly with the right optimisations. This article is a nice introduction to the topic.
http://blog.30dor.com/2014/03/21/performance-and-types-in-lisp/

Your Hello World example is 40mb because the meta-programming abilities of Lisps mean that basically the entire runtime must be packaged with any given program. You can strip it down considerably if you know that you won't be using this functionality.

Nicholas Martinez
Nicholas Martinez

It teaches you to think like a mathfag rather than an engineer.
incorrect. it teaches you how to write well-constructed programs, and it uses lisp to do it.
if you know how to write well-constructed programs then you can then write them in an implementation language better suited for the task at hand. but if you don't know how to write a well-constructed program it doesn't fucking matter how many languages you know.

the fact that you didn't think of
design and plan out program using recursive approach
refactor said program into an iterative approach if needed
shows that you aren't nearly as knowledgeable as you think you are.

Gabriel Cooper
Gabriel Cooper

2011 berkeley lectures
you're the best, user, I've been looking for these.

Oliver Flores
Oliver Flores

HtDP isn't really math heavy, you can do the online MOOC if you want videos and all that it's based on HtDP https://www.edx.org/course/how-code-simple-data-ubcx-htc1x

Zachary Sanders
Zachary Sanders

Here are the youtube videos ; https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w/playlists

Disable AdBlock to view this page

Disable AdBlock to view this page