It would have been more useful if the article had also listed the supply side of labor's economics, i.e. what are the costs of the programs that produce such workforce and which schools were offering the programs.
his 'artsyness' was the main reason I avoided learning Ruby for years-- wrongly thinking people who code in Ruby speak like him.
I know this is a possibly unpopular opinion but I don't think one should glorify a sophomoric book as a key Ruby book-- there are others that deserve that title, PickAxe is close, but I'd have liked a book like Whittaker's "C#, Player Guide" for Ruby.
Matz's intent was and has been to bring joy and delight to developers, with the odd combination of PERL, LISP, and Smalltalk as his inspirations. Joy and delight don't necessarily equate with "most practical". But joy and delight are wonderful and healthful qualities to cultivate for a good life!
_why embodied much of the spirit of the (at least earlier) Ruby community. We were software developer immigrants, many coming from prescriptive verbose technologies (I'm looking at you, Java!). We were eager for novel ways of expressing our ideas. Ruby's metaprogramming capabilities are, as far as I know, still all but unmatched beyond perhaps Smalltalk itself (and IO, which AFAIK no one uses seriously). _why's playfulness captured all of this in elegant and sometimes bizarre but often artistic expressions in his projects and code.
I will never regret or apologize for the Ruby community's appreciation for the Poignant Guide.
And, _why, wherever you are and whoever you are, thanks.
Interpretation depends on the reader. Was I insulting anyone or was I making a general statement? It can go both ways. If you read my original comment, I expressed dis-preference for why_'s book, which is responsible for my not learning Ruby for a long long time. People like these take something good and make a joke out of it. My original comment points to this--not at all about Matz and Ruby--both of which I like. Yet, the person responding to my comment, without reading my comment carefully or understanding it, twisted my comment into saying 'perhaps you don't like Ruby' by saying the passive aggressive 'Ruby is not for you' which is a tacit insult (meaning, I am too stupid to get it). Do you see now how it escalated because the other person condescended?
Once again, let me spell it for you. I haev no problem with Ruby. I just did not like why_'s bullshit. Make sense to you now? I respect Matz and his achievements.
I absolutely loved _why's guide, not the least because it made certain very serious, over the top professional people very uncomfortable. Bullshit in the guise of Very Serious Business Software Engineering is still bullshit, but if you present something like it's a big joke to you, and it still shines, there probably is something to it. I feel a lot of present-day IT wouldn't pass that test.
Well, my opinion is, he took something elegant and sublime and dressed it up in bullshit; there's nothing wrong with being playful and fun--as I mentioned earlier, Whittaker's "C#, Player's Guide" is the ONLY programming book that presented serious stuff in a fun way without clowning.
what the artic doesnt meantion is long covi from which strain? it would make sense, logically, to assume that long cov from delt is not the same as omic.
don't you think by saying "there were no known health issues triggered by it" you are committing a statistical fallacy? Just because something has not bee observed does not mean it is not there....
The entire instruction of Scheme in 6.001 was less than an hour. You only need a tiny bit and then you can focus on the concepts in the book rather than quirks of some programming language's syntax. I think that is a huge win. On what basis do you find it "intellectually dishonest"?
Based on: Forbus, K. D. (1985). Structure and interpretation of computer programs. Artificial Intelligence, 27(1), 124–127. doi:10.1016/0004-3702(85)90087:
"several important topics that students should be exposed to early are treated lightly, if at all. Its coverage of fundamental algorithms is spotty - sorting, for instance, is
not discussed at all.
Another problem inherent in this pedagogical approach is that it does not teach students many of the engineering skills necessary for developing efficient programs on 'real' computers. This can lead to a 'clean fingernails' syndrome.
where the student feels no program should be written or used unless it is utterly clean."
This is just one. I can't find the paper but Philip Wadler was the original person saying the exact phrase 'intellectually dishonest'.
> This is just one. I can't find the paper but Philip Wadler was the original person saying the exact phrase 'intellectually dishonest'.
https://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.... - that's the only Wadler critique of SICP I'm familiar with. Is "intellectually dishonest" in there? I can't find it. In fact, he seems rather positive about the book and it's material, just not Scheme. His critique is focused on the differences between Scheme and Miranda and their applicability to teaching students.
I would think it obvious, but maybe not, that attributing your own critique to a more well-known and respected individual without citation is intellectually dishonest.
I call it a disagreement, there are many of these kinds of disagreements especially in pedagogy. Sometimes people use strong and charged language in disagreements. It is not "intellectually dishonest" (quoting you, not Wadler since you still can't back that attribution) to write a book using Scheme just because others think Miranda (at the time, or another language today) would have been a better language. It would only have been intellectually dishonest if they knowingly chose Scheme to create an inferior experience (to what purpose?).
And I still contend that you are an intellectually dishonest person until you can properly attribute that quote to Wadler, or concede that you were wrong and made a false claim.
The criticism in my previous comment backed by a valid and searchable source: "SICP does not adequately teach the fundamentals of programming." is huuge for a book claiming to the best in the field. It's not a matter of 'pedagogical disagreement'. What do you say in this regard?
Yes, unfortunately I can't find the paper and I even enlisted GPT4 to help me search, so it is possible that some other reviewer may have said that (and I may have read another review by Wadler before or after this review); So while Wadler may not have said that, he has plenty of beef with SICP in the paper in your comment which essentially boils down to implying intellectual dishonesty. If not, then you need to improve your reading comprehension.
I understand that you may have invested a lot of time and effort in SICP and Wadler's assessment of it (based on the paper you provided!) hurt your fragile ego, hence the rude attack on my intellectual integrity, but regardless of whether Wadler said the particular phrase "intellectually dishonest" or not, the implication of his complaints I listed in my previous comment (based on the paper you provided!) amounts to almost to expanded version of saying the same thing.
Also, a note on downvotes: the agreement of majority (shown via upvotes) is no guaranteed standard for quality or veracity of a comment/opinion and I couldn't care less about the "karma points"; my comments are fueled by intellectual integrity and curiosity, and that inevitably means some people might disagree with me. Just because you disagree does not mean I am wrong and you are right.
I think you should judge SICP on what the authors' own intentions were, not on things they weren't trying to do. I didn't get the feeling that cleanness was emphasized or encouraged (any more than in any class). There are other classes that cover fundamental algorithms like sorting, SICP isn't about that.
You might find the authors own critique of SICP interesting:
BTW, here is a list of people who had criticized SICP. The list is full of heavy-weights:
Philip Wadler
Donald Knuth
Eric Raymond
Richard Bird
Paul Graham
Guy Steele
Robert Harper
Matthias Felleisen
Daniel Friedman
Christopher Strachey
Peter Landin
John Backus
Based on: WOOD, A. (2001). Structure and Interpretation of Computer Programs, 2nd Ed by Abelson and Sussman, with Sussman, MIT Press, 1996, ISBN 0-262-51087-1, 657pp. Journal of Functional Programming, 11(2), 253–262. doi:10.1017/s0956796801223983:
"The new material on concurrency is rather a disappointment since such a large and fundamental topic is relegated to little more than a convenient link item between lists and
streams.
...
The major omission, and it is major, is that types are never fully, or even adequately
discussed."
A math noobie here: I want to learn the TAOCP but the pre-req is Concrete Mathematics which I also find hard--it seems almost cryptic. Any ideas for a book before Concrete Mathematics? Thanks in advance.
Concrete Mathematics is not a prerequisite, but an expanded version of the "Mathematical Preliminaries" section of TAOCP. (More precisely, Knuth and later Graham used to teach a course at Stanford based on that section of TAOCP; the book Concrete Mathematics is based on the lecture notes of that course.)
That apart, I (and Knuth) recommend just skipping the math parts when they get hard. You can always come back to them later if you're interested.
This is what he says in the preface to Vol 1 (p. viii):
> A few words are in order about the mathematical content of this set of books. The material has been organized so that persons with no more than a knowledge of high-school algebra may read it, skimming briefly over the more mathematical portions; yet a reader who is mathematically inclined will learn about many interesting mathematical techniques related to discrete mathematics. This dual level of presentation has been achieved […] also by arranging most sections so that the main mathematical results are stated before their proofs. […]
> A reader who is interested primarily in programming rather than in the associated mathematics may stop reading most sections as soon as the mathematics becomes recognizably difficult. On the other hand, a mathematically oriented reader will find a wealth of interesting material collected here. Much of the published mathematics about computer programming has been faulty, and one of the purposes of this book is to instruct readers in proper mathematical approaches to this subject. Since I profess to be a mathematician, it is my duty to maintain mathematical integrity as well as I can.
It makes me wonder though why previous published mathematics about computer programming has been allegedly faulty. Since I don't know enough math to objectively see whether Knuth has succeeded in his task or not...
TAOCP could have benefited a lot if someone had written a simpler on-ramping version, with examples in a powerful but newbie-friendly industrial-grade language, such as C#.
Knuth wrote that preface in the early 1960s, when it was indeed true that much of what little there was of published mathematical study related to programming was faulty. He succeeded incredibly well: he kickstarted the entire field of "analysis of algorithms", got all the details right and organized them extremely clearly, put it on a sound footing, and now mathematicians take it seriously, and published work in the area is of high quality.
Depending on your mathematical background, you might find working through the Art of Problem Solving books [0] good preparation as they would build an incredible mathematical foundation for you.
Honestly after working through those books, you could probably complete self-studying an undergraduate mathematics curriculum.
I wish modern OS could keep up with my typing and window switching and app launching and ...
I'm constantly perturbed and interrupted when some app window just 'hangs' for a few seconds (some garbage collection going on, probably?). I can't pinpoint any one thing, just... everything seems relatively slow in 2022 compared to, even 10 years ago, and certainly 20. Applications weren't always phoning home to check things during bootup, which I suspect happens a lot now. Our computers are dozens of times faster than in the 90s, and, computationally, some things get done much faster, but others - around UI, it seems - apparently regress.
The worst are the modern async UIs that become responsive early and then reset their state when they fully load - so if you e.g. already typed part of your search string, you can actually briefly see it in the textbox, and then it gets cleared away. Very common on websites, somewhat common on the desktop, in my experience.
Ironically, the old apps that just "hang" for a while during initialization handle this better, because they don't process input at all, so it all just gets queued.
Latency is the worst thing when operating any machinery. I don't know why people tolerate it so much with computers. It's one of the most important things for me when using any software. That's why a long time ago I settled on using tools like emacs, git, i3/sway etc. When I try trendy tools like VSCode etc. I can't believe the latency people put up with.
I've been using i3 for years, there's just nothing that compares to a tiling window.
If I'm in windows I use virtuawin with alt+1, alt+2, etc for switching desktops. Not nearly the same, but works so much better than the builtin crap Windows has.
Paradoxically, I don't use alt+tab in windows to switch between programs. I used to do that, but then around XP (I think) they added the ability for programs to inject themselves into the alt+tab list. That means it's no longer completely consistent, which means I now have to think and check what alt+tab actually does so it stopped being any faster than just using the mouse.
So now if I need to flip between them quickly I'll either put them on different monitors (I use 3) and/or put them on different desktops. The combination makes me effectively as productive without the use of alt+tab. And it feels similar-ish to i3, so it's a bit comfortable in that respect as well.
NOTE: Anyone thinking virtuawin is like i3, it's not. It's just the best virtual desktop on windows (imo of course). Nothing on windows comes close to i3.
Preach it - my inability to figure out or control why the UI decides it's time to ignore what I'm typing in realtime while it's trying to back up a file (or whatever) is the cause of so many frustrations
Noob here: how did he cheat without getting caught? did he memorize chess engine responses? Or did he have a secret computer somewhere feeding him the moves?
I see. Yes the article which I read later, did mention players looking at gadgets in the toilet...among other techniques. I guess the future of chess championships would be interesting...