Quote:
Originally Posted by jjshabado
I understand the complaint. But from a certain perspective that's actually a fairly complex statement since it involves side effects and state.
For certain, which is why the complaint isn't really valid. People survive just fine without this particular feature in their programming language, but it is something that once you have, you think, "Gee, why can't I do this in XXXX language?" But at the same time, another person may look at Scheme and think, "WTF? No Do-While Loop? No For Loop?" and those are valid complaints as well, but within the parameters of Scheme, it's not really valid.
Taking SICP in the context of what the course is about, it can't really be done without a language like Scheme, because the class is about building a new language using top-up / bottom-down programming, and it is about having the freedom of creating an inherently high-level language from the bits and parts of a simpler language: to create complexity from simplicity. Now of course, if you want a Do-While Loop, you can create one, abstract it away, and then have a function called Do-While or doWhile, or do-it-the-way-I-like-it-LOOP and that is brilliant in the parameters of THAT class, but in the real world, how much is this needed? In an introductory class, is that needed? Probably not.
Quote:
It's nice to build up a person's knowledge of programming without ever having to use a "you can ignore this and just trust that it won't effect what you're doing".
This is exactly why I never been able to get into Java, no matter how many times I approach the language. Reading or hearing "Don't worry about what Static and Void means for now" is so deflating. But now I'm blaming the style it is taught on the language itself.
Maybe I want to know what Static and Void means, and for anyone who is interested in learning this stuff, that statement should be soul-crushing, but Java is called a "corporate language" and from day one you are already taught to not ask questions, do what your told, and trust the manager / professor, and this is just wrong on so many levels. Why not force the students to wear a suit and tie, shower, and shave before they come to class?
Maybe Java is an incredible language, and maybe they got it right after all, but man, I'm not convinced yet, and to be honest, I'm not interested in trying to find out. Give me C, give me Lisp, give me Python, anything that won't force me to type-check. Let me learn to grock by being a perpetual ****-up. Let me create a functioning program in 10 lines of code without having to depend on 15 boiler-plates.
I don't mind using Racket because emacs is tiring to use at times, and sometimes I just want to see something besides a large blinking square, but I also think Racket is like Java in that it comes loaded with tons of crazy features and there is no good reason to learn to create these things yourself if you have everything pre-build. I'm not talking about a Matlab equivalent here, just a bunch of stuff that I believe shouldn't come with the language because it should be easy to implement by yourself with a little work.
Of course, the point of Racket is to get more users and separate itself from Scheme, but does this need to come at a cost of taking unique components away from Scheme even if I set up the defaults to be "pure" Scheme? I don't think so.
Of course, if Racket is going to cause more love for prefix notation I am all for it. Until then we have Clojure I guess.