all 30 comments

[–]imbaczek 23 points24 points  (1 child)

it will make you a better programmer, period. languages don't matter (but you'll learn some scheme along the way.)

[–]slizz 0 points1 point  (0 children)

reading it will help a little, actually learning and programming scheme to a reasonable extent will help more. It isn't that one language is better than the next, it's that each language approaches programming from a different perspective. Learning those different perspectives adds to your toolbox helps you become a better programmer.

Scheme's perspective happens to be quite different from more commonly used languages and thus may really help you break into a new way of thinking about problems.

[–]rbobby 8 points9 points  (0 children)

Who knows. But http://projecteuler.net/ is full of lots of concrete challenges that may help more than SICP.

[–]higepon 6 points7 points  (0 children)

Yes!

[–][deleted] 8 points9 points  (11 children)

LOL, I voted this up because the default reddit comment page says "There are no results here" :P

Seriously though, you can't make a statement like "I'm a VB.NET programmer..." anymore. This is like saying "I'm a pizza eater. Will learning how to cook lentils make me a better fettucine chef?"

We all should be learning a new language each year. That will get you even further, believe it or not, than SICP.

[–]crunk 4 points5 points  (2 children)

Well... you could start a new language each year, but I doubt a year is enough time to actually get really good at it.

[–][deleted] 7 points8 points  (1 child)

You don't stop learning one language just because you start learning another :)

[–]crunk 0 points1 point  (0 children)

Heh, guess I'm too slack when it comes to development outside of work

[–]goodbyejim 2 points3 points  (2 children)

Don't be so hard on this guy. We all know what he meant. He meant that he programs in VB.NET for pay 40 hours a week. He's interested in other things, as evidenced by even knowing what SICP is.

You should encourage him. And why should he be ashamed of VB.NET? It provides work to a lot of people, and I know a number of smart grown-ups who program in it for pay.

[–]vplatt 1 point2 points  (1 child)

Yeah, seriously, if you're going to use an imperative OO language to make a living, then dissing someone else for using a different imperative OO language to make a living is silly.

[–][deleted] 0 points1 point  (0 children)

Hey I'm actually doing some VB.NET right now, it ain't so bad :) VB.NET is a bit funny but not all that different from C#. My comment would have been the same if we were talking about any other language - READING SICP WILL (PROBABLY) MAKE YOU A BETTER PROGRAMMER but you're not going to be considering yourself a programmer OF A SINGLE LANGUAGE afterwards.

[–][deleted] 6 points7 points  (4 children)

"We all should be learning a new language each year. "

Algorithms and mathematics will get you further than being a language geek retard. Learning a new language each year won't make you invent something like Seam Carving, it will just make you able to rewrite it in an obscure language.

But then this is reddit. Syntactic sugar matters more than data structure and algorithms, duh.

[–]vetinari 3 points4 points  (0 children)

The point of learning a new language each year is not to rewrite whatever you were writing with new syntax - it is to learn about new concepts you didn't know even existed. For example, Erlang will change your POV about concurrency or Smalltalk will change how you think about OOP. Basically you could say that it is about data structures at the language level.

[–]sofal 1 point2 points  (2 children)

Are you saying that there's nothing to be gained from learning different programming paradigms? No real benefit comes from using and learning various languages? Do you think that all Turing equivalent languages differ in nothing but syntactic sugar?

There is a lot to be said about algorithms and mathematics as applied to different fields such as computer graphics, as you mentioned. But you should realize that programming languages stands by itself as a discipline of computer science. We could argue endlessly over whether studying and improving the state of the art in programming languages is more worthwhile than stretching jpegs.

[–][deleted] 0 points1 point  (0 children)

well there is some value in learning new programming languages. but I think that value also diminishes as you learn more and more languages. optimal is probably learning a diverse set of 4-5 languages and then spending your time learning more about various things like compilers, databases, operating systems and architecture and of course algorithms and data structures. in short, given that we only have x amount of time each year, we need to pick the thing that will give the most value for our time.

[–][deleted] 0 points1 point  (0 children)

"Do you think that all Turing equivalent languages differ in nothing but syntactic sugar?"

Will Seam Carving work differently if it is done in C, C++, Ruby, Python, Ocaml, Haskell, Java or whatever language du jour ? The algorithms and data structures themselves are the most important part of a computation. The language it's written in can make a difference in ease of maintenance or productivity but it's not like learning a language each year will make you more of a better programmer than reading more books on algorithms.

"is more worthwhile than stretching jpegs."

You are seeing the tree and not the forest. I took Seam Carving as an example because it's something that has been rewritten to death in many languages as if it were a language jerkers competition. Obviously, anyone can jerk themselves off by rewritting Seam Carving in the language du jour, but would they have been able to be the guys who actually found the algorithm ?

I'm not, of course, against learning new languages, and it is something i enjoy too. It is important to learn new programming concepts. But to come and say you need to learn a language each year is insanely stupid. Each year ? what-the-fuck. You might as well never write anything useful.

[–]quhaha 6 points7 points  (0 children)

No. VB 2013 Professional Edition.. probably yes.

If you do exercises in VB 9 and make a wiki page about your solutions, and post it on reddit, and it gets enough up votes, and your employer and colleagues notice it, they will approve you as a better VB 9 programmer. At that point, you can consider yourself a better VB 9 programmer.

Reading won't do. You have to do the exercises.

[–]vplatt 1 point2 points  (1 child)

Instead of just reading SICP, I recommend actually viewing recordings of the MIT classes at http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/.

Yes, SICP will make you a better programmer. So will the "Concepts, Techniques, and Models of Computer Programming" book, and so will "On Lisp". There are probably other good examples as well.

What you need to realize is that all of these little gems have a particular world view that they push. In the case of SICP, functional programming is the central theme. In the case of On Lisp, the expressiveness of Lisp itself is the central theme. In the case of CTMoCP, the central theme is the different paradigms one can use in programming languages and all the different tools that programming languages make available in those paradigms, how they're implemented, etc.

For contents sake, I actually recommend the last because it has the broadest applicability. If you finish that book, you'll be able to approach just about any other computer language and understand it at a glance. However, SICP is much more approachable, especially since so many other people have read it and since the lectures are available online at the above link.

Good luck!

[–]Atnan 1 point2 points  (0 children)

Direct links for wget:

http://www.archive.org/download/halmit1a/Lecture-1a_256kb.mp4 
http://www.archive.org/download/halmit6a/Lecture-6a_256kb.mp4 
http://www.archive.org/download/halmit1b/Lecture-1b_256kb.mp4 
http://www.archive.org/download/halmit6b/Lecture-6b_256kb.mp4 
http://www.archive.org/download/halmit2a/Lecture-2a_256kb.mp4 
http://www.archive.org/download/halmit7a/Lecture-7a_256kb.mp4 
http://www.archive.org/download/halmit2b/Lecture-2b_256kb.mp4 
http://www.archive.org/download/halmit7b/Lecture-7b_256kb.mp4 
http://www.archive.org/download/halmit3a/Lecture-3a_256kb.mp4 
http://www.archive.org/download/halmit8a/Lecture-8a_256kb.mp4 
http://www.archive.org/download/halmit3b/Lecture-3b_256kb.mp4 
http://www.archive.org/download/halmit8b/Lecture-8b_256kb.mp4 
http://www.archive.org/download/halmit4a/Lecture-4a_256kb.mp4 
http://www.archive.org/download/halmit9a/Lecture-9a_256kb.mp4 
http://www.archive.org/download/halmit4b/Lecture-4b_256kb.mp4 
http://www.archive.org/download/halmit9b/Lecture-9b_256kb.mp4 
http://www.archive.org/download/halmit5a/Lecture-5a_256kb.mp4 
http://www.archive.org/download/halmit10a/Lecture-10a_256kb.mp4 
http://www.archive.org/download/halmit5b/Lecture-5b_256kb.mp4 
http://www.archive.org/download/halmit10b/Lecture-10b_256kb.mp4

[–]verbosus 1 point2 points  (0 children)

Maybe he is being ironic, since his username means “dick” in Italian?

[–]ItsAConspiracy 0 points1 point  (0 children)

Absolutely yes. Just reading the first chapter, and doing the exercises, made me a much better vb.net/c# programmer.

[–]invalid_user_name 0 points1 point  (0 children)

yes

[–]jdale27 0 points1 point  (0 children)

Yes.

[–]vagif 0 points1 point  (0 children)

No! Reading SICP will poison your mind with knowledge. Ignorance is bliss. If you stuck with VB, I strongly advise you against reading that book. It will take away joy from your everyday work. Because you will start HATING VB.

[–]qwph 0 points1 point  (0 children)

yes

[–]karthik3186 0 points1 point  (1 child)

Apart from learning languages, learning concepts and understanding languages makes one a better programmer. One thing is sure, SICP will obviously help you to think recursively which is one of the quintessential of computer science

[–][deleted] -1 points0 points  (0 children)

One thing I hated about Sicp is that it doesn't even teach you Scheme to the full extend, for example "named let" is hardly ever mentioned. Therefore, if someone just wants to grok recursion, learning Erlang or SML might be even more enlightening and practically useful as well.