News for hackers. Stuff that matters.
Re:Why is it difficult for developers to learn another progr... by burlesona on Sunday May 03, 2020 @02:17AM (#23057235)
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.

Re:Why is it difficult for developers to learn another progr... by JamesBarney on Sunday May 03, 2020 @03:20AM (#23057437)
My 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.

Re:Why is it difficult for developers to learn another progr... by apatheticonion on Sunday May 03, 2020 @05:17AM (#23057874)
When I first learned Python, I found it hard understanding how another language could offer more.

What I found was learning other languages provided value in the form of insight which changed how I wrote my primary language.

JavaScript taught me about the value of concurrency, C# taught me the value of types and DI, TypeScript showed me the complexity of C# wasn't necessary, Go taught me that I code too much and say too little.

Re:Why is it difficult for developers to learn another progr... by justanotherc on Sunday May 03, 2020 @09:59AM (#23059026)
I 100% agree. The first language I learned in highschool was VB6. I only went to VB .NET when VB6 stopped working.

I next learned PHP because it gave me superpowers on the web that VB couldn't. When Ruby on Rails became popular, then Node, I dabbled in learning those but I just couldn't get excited about them because it didn't give me any more capability than PHP already did.

I generally only tackle learning new things if it provides me immediate value to do so.

Re:Why is it difficult for developers to learn another progr... by capableweb on Sunday May 03, 2020 @10:04AM (#23059052)
> I generally only tackle learning new things if it provides me immediate value to do so.

In general I agree with you, but I think this is taking it a bit too far. My journey was similar, except PHP was my starting language and I was doing frontend (so HTML+CSS+JS) at the same time.

But, now I'm doing Clojure full-time. But not until I spent 2-3 years on-off learning it. It wasn't until 1.5 year ago I actually sat down and started writing things in Clojure.

But if I had the "only if it provides me immediate value" mindset, I would never have learned Clojure. It's not until now I'm more productive than I ever been, but that required a bit of uphill fighting.

But I'm so glad I stuck with it, now I can't imagine programming in something else. Which has ruined me a bit, but I'm happy with that.

Re:Why is it difficult for developers to learn another progr... by justanotherc on Tuesday May 05, 2020 @11:34PM (#23087678)
I definitely understand your reasoning, but personally I don't see how I would be more productive by switching languages. Maybe I just don't know what I'm missing, but I feel pretty dang productive with my current stack. And I'm working on a long term project for 90% of my time, so even if I could be more productive, I don't think I could justify re-writing 40k LoC.

I also don't really get emotional over the language choice... I'd ditch PHP in a second if it made sense to, but IMO a good architecture can enable development speed FAR better than a good language can. The language choice mostly just comes down to syntax preferences.

To each their own.

Re:Why is it difficult for developers to learn another progr... by capableweb on Wednesday May 06, 2020 @06:08AM (#23089395)
> , I don't think I could justify re-writing 40k LoC.

Absolutely, I agree with that as well! I would not rewrite something to a different languages unless there is a damn good reason for it. I'm not a person who generally rewrite stuff "for fun", so I think you're spot on here.

And I agree with you on the architecture/language comment as well, it's way more important. But I do think that the common practices of a language either helps/slows you down as well, so doing the same thing in two different languages can be implemented in different speeds.

> The language choice mostly just comes down to syntax preferences

Here is where I kind of disagree, but not fully. Yes, Java and C# are basically the same, in the end. Details are different, but mostly the same. Same goes for all languages in the Algol-group of languages, which C, JavaScript, Java, Python and more belongs to.

Then we have the Lisp-family of languages. They are very similar, within the group, but compared Lisp-like languages with Algol-like languages, the differences become way larger. Add languages like Erlang, which are way different, and you get some more differences.

So yeah, most of the language choices people do today, mostly come down to things around the language (ecosystem etc) rather than the language itself, because most people limit their choice to Algol-like languages.

In the end, I could not care less about the language you use, I'm not trying to force anyone to use what I find most productive. We all have preferences that speaks for us. But I wish someone tried to get me to dive into Lisp/Clojure earlier, and I think there are others who will feel the same, but again, I don't really care what others use.

Re:Why is it difficult for developers to learn another progr... by slifin on Sunday May 03, 2020 @07:26PM (#23062739)
It's such a nice language I feel calm writing it
Re:Why is it difficult for developers to learn another progr... by vizzier on Sunday May 03, 2020 @04:33AM (#23057723)
Maybe 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.

Re:Why is it difficult for developers to learn another progr... by JamesBarney on Sunday May 03, 2020 @11:50AM (#23059736)
I've used f#. Type providers were really cool. And I like how terse it is but I feel like the gap is narrowing, and I couldn't ever use it on a real project. I'd feel guilty building a project for a client that is supportable by a tenth the number of developers without very good reason.
Re:Why is it difficult for developers to learn another progr... by platz on Sunday May 03, 2020 @10:01AM (#23059035)
I'm generally an FP advocate but F# on the CLR has always been an uphill battle in terms of development of the language (especially lately) and providing a compelling case to outsiders to spend resources on F# over C#.
Re:Why is it difficult for developers to learn another progr... by giantDinosaur on Sunday May 03, 2020 @04:15AM (#23057655)
Does 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.
Re:Why is it difficult for developers to learn another progr... by JamesBarney on Sunday May 03, 2020 @11:47AM (#23059714)
I'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.
Re:Why is it difficult for developers to learn another progr... by dastx on Sunday May 03, 2020 @04:37AM (#23057740)
> My biggest problem learning a second language is that it's so much less useful than the first.

Your IDE should work with you to make it more useful. For sure your knowledge of another language isn't going to be as great as your first language, but I've personally always relied on tooling around that language to tell me where I'm wrong, then I can go find out why it is that my IDE is complaining and I'll then decide whether the IDEs error makes sense or not.

Re:Why is it difficult for developers to learn another progr... by caseymarquis on Sunday May 03, 2020 @11:06AM (#23059419)
You can also build your own .NET frameworks like ASP.NET or Entity Framework using reflection and expressions. All the tools that these frameworks use to analyze the structure of your code and dynamically compile new code are part of .NET. It's not as DSL friendly as something like Racket, but you can generally get your own DSL based on class, expression, and attribute analysis up and running if you put some time in. The .NET rabbit hole goes quite deep.
Re:Why is it difficult for developers to learn another progr... by j88439h84 on Sunday May 03, 2020 @02:23AM (#23057264)
Hard to know if it's universal or just all the language designers being influenced by the same stuff.
Re:Why is it difficult for developers to learn another progr... by kalium-xyz on Sunday May 03, 2020 @03:57AM (#23057579)
Definitely 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.
Re:Why is it difficult for developers to learn another progr... by burlesona on Sunday May 03, 2020 @03:02AM (#23057379)
Well, 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.
Re:Why is it difficult for developers to learn another progr... by crimsonalucard on Sunday May 03, 2020 @03:10AM (#23057404)
That'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.

Re:Why is it difficult for developers to learn another progr... by mettamage on Sunday May 03, 2020 @03:18AM (#23057428)
While 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.

Re:Why is it difficult for developers to learn another progr... by em500 on Sunday May 03, 2020 @03:40AM (#23057513)
Here'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)

Re:Why is it difficult for developers to learn another progr... by crimsonalucard on Sunday May 03, 2020 @06:11AM (#23058067)
I wasn't just talking about functional. Prolog is a different paradigm all together.
Re:Why is it difficult for developers to learn another progr... by vidanay on Sunday May 03, 2020 @09:09AM (#23058775)
This could probably be extrapolated further to say all programming on von Neumann architecture is fundamentally similar.
Re:Why is it difficult for developers to learn another progr... by crimsonalucard on Sunday May 03, 2020 @11:12AM (#23059447)
Actually no it can't. That be like extrapolating all expressions of language are fundamentally similar.