3 ms·
What was the first programming language you really understood and learned? I ask because most of the time people think something different is complex or "ugly"
by adestefan 7y ago
What was the first programming language you really understood and learned? I ask because most of the time people think something different is complex or "ugly" it's because they're using bad abstractions between what they fully understood first to other things they think is in the same domain.
Patricia Asa has an excellent presentation[0] on how she tried to learned C# and one of the biggest things she discovered was these bad cross-over abstractions held her back.
[0] https://www.youtube.com/watch?v=Id2jBMJLz2Y https://www.youtube.com/watch?v=Id2jBMJLz2Y
- skohan 7y agoI had experience somewhat counter to this. I learned C and C++ first, and when I first started working with Java things like CamelCase did seem a bit strange and off-putting to me, but I got used to the less keystrokes surprisingly quickly, and it's one of the things which bothers me most about working with Rust. I think there is such a thing as liking what's familiar, but there are also design decisions which are simply easier to read or easier to parse. Another one would be semicolons: I have never missed semicolons one bit in a language where they're not required.
- kybernetikos 7y ago> I have never missed semicolons one bit in a language where they're not required. I dutifully wrote semicolons for years, but just a short stint of Scala and I don't like using them anywhere now.
- clinta 7y agoMy first programming language was Python. And now I write Python and Go frequently. I'm trying to learn Rust, working through various programming exercises, but it looks and feels very foreign to me. One example is the closure syntax. Compared to Go where closures look just like function definitions, closures in Rust look needlessly complex. I also always find myself wanting to type mut &a instead of the correct &mut a. The former just seems more obvious to me, a reference to a is &a. Mutable a is mut a. So a mutable reference must be mut &a. Then the lifetime syntax, I don't even know what to think of that, but that's probably more because I'm struggling asking myself "Should I use a lifetime here, or am I doing something else wrong that is preventing the compiler from figuring it out." Maybe these things make more sense to people coming from C.
- swsieber 7y agoI'm guessing the &mut a stuff makes more sense to C folks. In C you have to deal with const, and it can go anywhere. A const pointer to a non-const item, a pointer to const value, etc. That's my guess anyway.
- steveklabnik 7y agoWe took the closure syntax from Ruby/Smalltalk, and the lifetime syntax from OCaml.
- dastbe 7y agoOn &mut a vs. mut &a, when read literally left to right the former is “a reference to a mutable a” and the latter is “a mutable reference to a”
- MrBuddyCasino 7y agoFor the record, I consider Clojure to be beautiful as well, in its own way.