5 ms·
I find the opposite is true. Learning the first programming language was hard, the second was easier, the third and fourth easier still. At some point you devel
by burlesona 7y ago
I find the opposite is true. Learning the first programming language was hard, the second was easier, the third and fourth easier still. At some point you develop intuition about what computers can and cannot do in a universal sense and then you realize every language is just different nuances and emphases on those capabilities, and it becomes pretty easy to pick up a new one very quickly.
Edit: after reading the paper I understand the emphasis is on conceptual mistakes people make when coming from one language into another - you assume things work like A and make mistakes when B works differently under the hood and you don’t realize it until banging your head against it for a while.
That experience does ring true, but I stand by my original comment, this is mostly only an issue for language #2, and with each language it gets easier as you begin to think more in universal terms and have fewer assumptions and gaps where you’ve been accustomed to something that “just works” in the environment you’re most familiar with.
- j88439h84 7y agoHard to know if it's universal or just all the language designers being influenced by the same stuff.
- burlesona 7y agoWell, there’s some of both. Languages all influence each other, and most of them are “inspired” by a specific parent or two - “D is Better C,” etc. But there are also a handful of core CS ideas and computer hardware characteristics that derive a lot of what computers can do and how to do it well, and that stuff shows up as pretty universal across many languages.
- deleted 7y ago[deleted]
- kalium-xyz 7y agoDefinitely both, in any software you take user expectations into consideration. Also all programming language designers are humans most of who know English, this gives a shared cultural context.
- crimsonalucard 7y agoThat's because you haven't stepped outside of the box. Most of the programming languages you learn are derived from Algol. So JAVA, C, C++, python, javascript are all essentially permutations of the same thing. There's other families of languages like Prolog, ML and lisp that are drastically different and I have found that many people find these languages hard to learn.
- mettamage 7y agoWhile you might be right, I've seen the same comments about people who did a thorough functional programming class and then having to learn another functional programming language later on. Moreover, you don't know if the parent also did functional programming. But I think your remark is a fair one, I think it's about wrapping your head around programming paradigms that are quite far from each other.
- em500 7y agoHere's Peter Norvig's advice about different paradigms: Learn at least a half dozen programming languages. Include one language that emphasizes class abstractions (like Java or C++), one that emphasizes functional abstraction (like Lisp or ML or Haskell), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), and one that emphasizes parallelism (like Clojure or Go). (https://norvig.com/21-days.html https://norvig.com/21-days.html)
- crimsonalucard 7y agoI wasn't just talking about functional. Prolog is a different paradigm all together.
- vidanay 7y agoThis could probably be extrapolated further to say all programming on von Neumann architecture is fundamentally similar.
- crimsonalucard 7y ago
- JamesBarney 7y agoMy biggest problem learning a second language is that it's so much less useful than the first. Ten years ago I learned C# and since then I've dabbled in other languages like Haskell or Lisp which were a little fun, but I keep getting drawn back to learning more about my stack. There's still decades of knowledge I lack about Azure/Entity Framework/Asp.Net/Xamarin/Sql Server/WPF/C# CMS/C# CRMS/C# e-commerce/Roslyn the opensource compiler/Blazor/Typescript/React/CSS. (Not to mention all of the useful soft skills, like sales/ marketing/negotiation/management) And I'd rather be able to build out a desktop app, a web app, or a mobile app than be able to build out a web app in js-node/C#-mvc/ruby-rails/python-django. Basically when I learn I want to be able build I couldn't before (like a mobile app) or get better at building(learn how to better optimize t-sql queries). And when I've spent time learning new languages I felt like it wasn't as useful at delivering on these two goals.
- giantDinosaur 7y agoDoes most of what you listed matter? Yeah - I know, it matters to make money(!). But it all looks really similar to me. If, instead, a new language taught you more about recursion or typing or a different way to view program structure, isn't that more valuable than learning the latest JS framework? or Azure? What does Azure really offer from a learning perspective? You know, I use TypeScript a lot, but it has taught me absolutely nothing fundamental, and has not made really made me better at anything other than Typescript. Playing around with something like Haskell made me think about some pretty fundamental structural and domain modelling questions, which I feel, although perhaps cannot prove, has been much more valuable.
- JamesBarney 7y agoI've spent a couple of weeks on Haskell and a couple of weeks on domain driven design and I felt like the latter made a larger impact on how I saw using code to model the domain.
- vizzier 7y agoMaybe look at F# for something .net compatible. Personally its use in some contexts, particularly those using the F# type providers has served me well. I also prefer to use FSX scripts over CSX in contexts where that is useful. I find my deeper knowledge of the .net infrastructure easier to leverage than having to learn powershell but FSX syntax also cleaner for scripting.