Comment Re:I feel your pain (Score 1) 4
But, yeah, I'm probably lucky
But, yeah, I'm probably lucky
I drove across the country with a good friend, who is severely red-green colorblind. About once a day, he would offer me peanuts, even though I'm deathly allergic to them, and then he'd laugh, and say "oh, these are really good." After five days of this, as we were driving across Colorado after a storm, I stopped to look at a stunning rainbow, and he's like "ooh, ok, fine, whatever"
He's a very successful computer animator and landscape painter. It helps that he is super-smart, but I still can't imagine how he does it.
"Yes," said Arthur, "yes I did. It was on display in the bottom of a locked filing cabinet stuck in a disused lavatory with a sign on the door saying 'Beware of the Leopard'."
I'm no fan of Java-based curricula, for the same reason I'd be no fan of Fortran-based curricula. Computing isn't about one language. Each language and system shows you one hyperplane of a vast multidimensional space. The best programmers know lots of languages, and choose wisely among them — or even create new ones when appropriate.
In the production world, there are times where some C++ or Java code is appropriate
(Just last night, at a meetup, I was talking with two bright young physicists who reported that their universities don't do a good enough job of teaching Fortran, which is the language they actually need to do their job. Scientific computing still relies heavily on Fortran, Matlab, and other languages well removed from what's trendy in the CS department — no matter if that CS department is in the Java, Haskell, or Python camp. But if you want to learn to write good Fortran, you basically need a mentor in the physics department with time to teach you.)
And there are times when the right thing to do is to create a new language, whether a domain-specific language or a new approach on general-purpose computing. There's a good reason Rob Pike came up with Sawzall, a logs-analysis DSL that compiles to arbitrarily parallel mapreduces; and then Go, a C-like systems language with a rocket engine of concurrency built in.
(And there's a good reason a lot of people adopting Go have been coming not from the C++/Java camps that the Go developers expected, but from Python and Ruby: because Go gives you the raw speed of a concurrent and native-compiled language, plus libraries designed by actual engineers, without a lot of the verbose bullshit of C++ or Java. Would I recommend Go as a first language? I'm not so sure about that
What would an optimal computing curriculum look like? I have no freakin' clue. It would have to cover particular basics — variable binding, iteration, recursion, sequencing, data structures, libraries and APIs, concurrency — no matter what the language. But it can't leave its students thinking that one language is Intuitive and the other ones are Just Gratuitously Weird
Bill, this advice "make the ad as incipid[sic] and vapid as possible, to save on non-converting clicks." makes so much sense, and is so obvious, that it must be happening already. This was pioneered by the the Nigerian scammers (originally snail-mail, now mostly email.)
It does make me disheartened about the future of the ad-supported internet.
You can do computer science just with paper and pen. That is entirely feasible and totally common in any computer science curriculum at any halfway decent university. Oh, you thought that computer science = programming. Well, yeah, no... it isn't and technically you can program without a computer too. You just can't run your programs.
"Gravitation cannot be held responsible for people falling in love." -- Albert Einstein