shrugger
Joined 10 years ago
Joined 10 years ago
If a guy writes an entire book and you don't want to read it because he made a spelling mistake, then don't.
I have experience teaching kids Lua, and with the right metaphors and a little bit of backtracking and foundation-building, even complicated ideas like emulating classes and single inheritance can be understood and even implemented by young students.
If I taught them lua reserved keywords, and a couple little math tricks here and there, they usually would all bunch up everything into a couple huge functions, and their game would (sort-of) work but be impossible to reason about, and very painful to extend.
Introducing objects as a way to represent things that they want the game to do (draw things, shoot things, eat things, etc), it becomes clear to them that there is merit in structuring programs with objects beyond "shrugger says to do it like this!"
OOP on its own doesn't make much sense. You can't teach someone to drive stick shift if they don't know what a car is. Maybe you could, but that's probably even worse.
I don't use Facebook products because I don't want to give Zuckerberg my money. I don't use Apple because I don't want to give money to a company whose original figurehead thought that wearing Mom-jeans to press conferences was in any way professional.
The point is that these companies, however monopolistic they might seem to you (and me), are driving innovation several orders of magnitude faster and more efficiently than organizations like Mozilla or GNU. A company exists to make money. That's an ethos that I personally find more consistent and more comfortable to think about than "we should make software that EVERYONE can use" and it's a safer bet as well, since these companies will go out of business if they don't make money whereas GNU/Mozilla/et al will vomit out software that sorta works for a million years.
Also, machine learning is not about predicting the future anyways, it's almost exactly the opposite. Understanding what people have done is much more actionable than trying to figure out what people are GOING to do, because we are very fickle, complex, imaginative creatures. Could you have predicted that I'd write this comment? No. Could a program that has read every previous comment that I've ever made predict this comment? No. Could it predict that I might write a comment of a similar nature? Sure. If we were playing poker and I thought that you were going to fold, that's much different from some algorithm that was CERTAIN you were going to fold.
Scala Native is not very far along compared to Scala.js, but it is actively being improved, and is considered an official extension. Additionally, Dotty will bring huge improvements for JVM scala.
I am not super happy with JVM most days, but I'd far and away prefer to be chained to JVM than BEAM. I mean, it's not even a question at this point, considering the billions of dollars spent developing JVM and the work of the brightest minds of several generations. Joe is a cool guy and all, but Erlang is objectively a niche platform compared to JVM.
So yeah, no.
Reading about Elixir is cool sometimes, but then I look at Dotty, and I feel confident that I made the correct choice.
I've also been keeping an eye on Crystal (statically typed Ruby-esque language, LLVM), but they aren't making great PLT choices so far. Maybe they'll get it together later. Scala-Native will blow it out of the water most likely anyways.
Sort of the opposite of losing statically typed programming, but I've really enjoyed the journey and it's improved my work a lot more than I thought it would. I know Ruby pretty well and I used to feel really dumb all the time when things would break, and it took some time for me to realize that it was a language problem. Looking back and reading some of the Ruby that I ported, it was impossible to reason about, and very difficult to make guarantees for. Nothing was solid at all, and runtime errors could hypotehtically stop the show at any time. With Scala there's a much sharper baseline of what will definitely work or not work.
Types make a LOT of things so much easier, in exchange for making a few things SLIGHTLY more tedious. After doing it, I'd make that trade ten more times if I had to.