5 ms·
No idea where the idea learning a new programming language is difficult has come from. The article starts with stackoverflow.com case study which alone is good
by xxs 5y ago
No idea where the idea learning a new programming language is difficult has come from. The article starts with stackoverflow.com case study which alone is good enough to disregard it.
I have been programming since quite young age, used more than 15+ different languages (Basic, Aseembly, Pacal, Delphi, DOS .bat, Javascript, Word Basic, Java, C#, C, shell script, EL, xslt, SQL, etc., and I can 'read' quite a few more). This is the 1st time I have heard learning a new language is 'hard'. Most of my team uses at least 3 languages and most of folks have learned at least 2 on the job. That being said - one of the languages would be primary but learning few to a level to be able to do your job in a decent fashion is just 'normal'.
The only hard thing I'd consider is switching to a pure functional language (for whatever reason) - the paradigm is very different. Other than that, most languages are pretty much the same - for quite a few I tend to have an idea what they machine code should compile to as well. Learning APIs/libraries is another matter but it's not difficult, either.
Besides, the determined Real Programmer can write Fortran programs in any language.
- zaphirplane 5y agoLearning a Language is in addition to knowing the language features, the bigger ramp is the std library and the ecosystem of libraries/frameworks
- tialaramex 5y agoBut for languages that aren't written by lunatics even the standard library will have considerable consistency in how it does things, and a modern development environment can smooth over the difference, if I can't remember whether this language's vector container calls it "push()" or "push_back()" that's probably offered as an auto-completion when I hesitate. In a language like C# you already know the language's designers love Title-Case and didn't want you to know anything about data structures so no surprise it's just named Add() This is less true for something like PHP that was just cobbled together from whatever was to hand with no aesthetic or design principle but that's a rare case, I actually can't think of any other widely used language that exhibits this behaviour. I would guess I was maybe 80-90% productive in C# after only a few months with it, because of existing familiarity with a bunch of semi-colon languages including Java. Certainly enough to keep up with people who'd used it for years but for whom programming isn't a passion.
- JonChesterfield 5y agoA consistent standard library sounds amazing. Can't remember ever using one. Presumably a feature of C#, which may have benefited from the prior mistakes/evolution of c++ and java.
- hackerfromthefu 5y agoYes, its really the killer feature of C#. Its well thought out, and very comprehensive. I'm a polyglot across a dozen plus languages, but I much prefer C# for the overall package of language plus base library plus tooling. For what they include, and what they do not include. Kudos to Anders for his sense of 'style' in making it so pragmatically usable.
- tialaramex 5y agoMaybe we have different standards for consistency? Things I would expect from a consistent standard library are stuff like how identifiers are used, it makes sense that this.contains("clowns") and this.begins_with("Seven") and this.matches(a_regex), whereas it's weird if this.contains("clowns") but this.BeginsWith("Seven") and a_regex.matchedON(this) Or familiar patterns, if I can write stack.len() then vector.len() and array.len() and string.len() should exist and do what you expect, it's weird if instead there's stack.size() and vector.len() and array.width() and string.length() And things should compose nicely. If one part of the stdlib offers to Reverse and Shuffle things, and another offers me groups of IP addresses, I should logically be able to Shuffle the IP addresses without needing to build an adaptor, if I can name Files and I can name Users, I ought to be able to name some Files after Users without learning about how strings are conventionally encoded on the operating system I'm using. If there's a way to talk to a Database, and a way to talk about Dates, somebody else should have done the work to ensure that the date queries I run in the database work with the Dates from the same stdlib.
- tempodox 5y agoAs you say, it's not different languages that are hard to learn but different paradigms. The languages you mention in your first paragraph are all too similar in that respect to be counted as different. You can write Fortran in all of these with more or less ease. Doing the same in Prolog or Haskell would be more of a challenge.
- xxs 5y agoObject Orient Programming was all the rage in my teens. I had some hardships understanding the concept. I used and liked Pascal. Turbo Pascal 6 & OOP - not the most elegant combo. Managed to grasp how it worked: imagine the entire method surrounded by "with" (with in javascript does the same) - I looked at the assembly and the virtual method dispatch and it all became super clear and obvious. Pretty much learned OOP by looking at the disassembled code compiled with Turbo Pascal.
- slightwinder 5y agoLearning new languages can be hard. If they are too similar, you will grow conflicting knowledge until your skill has risen enough. If the concepts are too different, you will also constantly have conflicts with your established knowledge and habits. If you have already a high skill, you will have also the demand to reach a similar skill in any new language, and any hurdle will be seen as a problem. The amount of tiny issues and slow pace can give people the impression of being hard, even if reality is quite different. Hard or easy is a matter of perception, and everyone sees things different.
- Ar-Curunir 5y ago“Stackoverflow data + programmer interviews are garbage, but here’s my personal anecdotal experience that’s valid”
- xxs 5y agoI have talked and worked with a lot developers thoughout quite a lot of years. Yet, I have never heard anyone complaining how learning a new language was hard - toolchain being inconvenient, framework being not well maintained and the like: very common. stackoverflow largely consist of entry level material. I have had my fair share (100+) of interviewing developers too - hired people w/o any experience in a specific language and they have been productive in a short time frame - learning the environment and the business domain has always been the slow, laborious process, not switching to a different language (again - never had to use purely functional language for real - SQL doesn't count) It was mentioned the "idiomatic use" - that's trivially caught in a code review/pair programming - you see it once, remember/understand and move on.