5 ms·
If we would all just have used Lisp from the get-go, then none of this would have even been necessary. ;) > Don't you rather be learning new concepts rather th
by lectrick 11y ago
If we would all just have used Lisp from the get-go, then none of this would have even been necessary. ;)
> Don't you rather be learning new concepts rather than new syntax/APIs?
I ran out of new things to learn in Ruby, around the time I wrote a fizzbuzz implementation using pure functionals without any conditionals. And the mutability issue was bothering me in a very real way (I spent a month, A MONTH, tracking down a dropped-session issue which ended up being a stray mutation of the gigantic ENV variable in the middleware stack... That class of bug would not exist in Elixir/Erlang). Elixir/Erlang provided very brand-new things to learn... pattern-matching instead of complicated nested logic, explicitly passing around state instead of holding it everywhere, macros, OTP, I mean pretty much everything underneath is different except for the syntax. ;)
You can't learn something like macros in Ruby, at all. If certain things aren't core language features, it's just difficult to learn them, period.
- pron 11y ago> I ran out of new things to learn in Ruby, around the time I wrote a fizzbuzz implementation using pure functionals without any conditionals. I am not a Ruby developer, but if Ruby is Turing complete I can think of a great many things you can learn. Have you implemented a B-Tree? Edmonds-Karp? Linear programming algorithms? Dynamic programming? Why are you limiting your learning to different styles of implementing a trivial algorithm? That's pretty much the same as learning new languages, and programming language concepts occupy a tiny, tiny bit of computer science (like, 4% tops). The programming language or the style you're using -- imperative, pure-functional, whatever -- is just something to express an algorithm. To me, what you said sounds like: "I've learned all I could about writing with pens -- I've tried all the colors to write 'the quick brown fox'-- so now I must switch to pencils".
- lectrick 11y agoI have some bad news for you (and for Edsger W. Dijkstra, who you would probably be a fan of)- In the "real world" of programming work, you will likely rarely encounter most of those things. Real-world dev is NOT about "computer science proper". (Unless you're building a language from scratch. Which is like 0.01% of all programming work.) You should of course be aware of them and what they do, and when you think you need them you should Google them and learn them then (and of course be able to do so). Sometimes you need to switch languages- Perhaps you want the "look and feel" of pencil art which you can't do with pen-driven art without A LOT of work. You can implement immutable data structures in Ruby- for example, see the Hamster gem here https://github.com/hamstergem/hamster https://github.com/hamstergem/hamster - but 1) it is much, much slower, 2) none of the other gem code you will call into will use Hamster 3) you actually have to code differently to Hamster data structures than to the built-in Ruby ones. Just because you CAN make pencil-art with pens, doesn't mean that's the "happy path." And just because you can represent every possible computer operation as a series of lambda functions (see "Programming With Nothing" here, great article: http://codon.com/programming-with-nothing http://codon.com/programming-with-nothing) doesn't mean you should.
- pron 11y agoI've been developing software for about twenty years now (as well as overseeing teams of developers), and at one point or another I needed each of the things I mentioned. I have never, however, been required to implement any of them using a functional style (or any other specific style for that matter). And if you like learning languages, that's great (I do too, from time to time), but I find algorithms to be so much more useful (yeah, in the real world). Like I said, I have never written more than a few lines of Ruby code, so I can't comment on the merits of that particular language, but if you find that you have to switch your main programming language more than twice a decade (even twice is probably too much) you're either spending time on the wrong thing, or picking the wrong languages to begin with. Languages that provide significant advantages over existing ones (that justify the very high switching costs) don't get invented more than once a decade. So, if you have to switch, think hard whether your new choice is one of those few that are likely to age well.
- lectrick 11y agoWell, there's probably a few things going on. One is that, without much fail, I seem to be able to pick the winners of the next horse race in technology. I don't know if it's some kind of sensation of some kind of powerful embryological energy of tech ideas or what, but I sometimes see that things might go in a certain way, and I am usually correct. :) (Ruby I spotted REALLY early. When Rails came out I knew it was gonna happen. Apple did have me worried for a while before the iOS devices, but pulled through.) It's definitely a certain intangible energy, I can say that. Perhaps not unsurprisingly, I am involved with startups (and now despise working at large companies), and am semi-successful there. I think that there's a type of developer who is an "introducer" of new ideas/concepts/products/things and I might be one. I know I enjoy mentoring, too, and I'm told I'm good at it. If I had to write a new garbage-collection algorithm, I would probably suck at that. So there's basically room for everyone, the algorithmists, the language hipsters, and everyone else. ;) Everyone nontechnical who knows me thinks I'm "The Machine Whisperer." When I'm around, things "just work", and I can fix most things pretty quickly. One of my earliest memories is taking things apart to see how they worked... I was fascinated by electric motors... Magician in training. ;) I remember diagramming a regenerative braking system in AP Physics class out of boredom (the school's physics lab ended up getting named after me, for being the first person in the history of the school to get both a 5 on the AP test and 100 on the Regents). Now I drive a Tesla. ;) But first, I had to flunk engineering calculus in college to realize I wasn't bound to be a physicist. THAT was a reality check. I remember walking past that physics lab when I was only in 8th grade or so, and getting a weird feeling... Same as when I tried the first Macintosh, the first iPhone, and wrote my first Ruby code... when I dialed out with a modem for the first time, before the Internet... and when I tried NCSA Mosaic. Anyway, I still get that weird feeling now sometimes. Elixir did it. ;) You might enjoy Beautiful Code if you haven't checked it out yet: http://smile.amazon.com/Beautiful-Code-Leading-Programmers-Practice/dp/0596510047?sa-no-redirect=1 http://smile.amazon.com/Beautiful-Code-Leading-Programmers-P...