Earlier quoted context omitted.
> What makes you think Personal experience. I've been trying to hire moderately competent, junior software engineers would be able to write and optimize C++ without much supervision. They're now more rare than the Sasquatch. Today, "caring about performance" means picking a language that's only 5x slower than C, rather than 100x slower. Hardly anyone even knows why alignment might be desirable, or how long it takes t…
> junior software engineers would be able to write and optimize C++ without much supervision "Junior" and "optimize c++" just do not typically go together. Even more so if you're talking about deep optimizations like cache hit misses, and not just algorithm decisions or breaking down problems properly.
Being confidently programming language agnostic
61–70 of 131 posts
Re: Being confidently programming language agnostic
#62I used to arrogantly think I could be productive in any language given a week or so to adapt. I often used the phrase "a good dev is a good dev in any language." That belief was rather abruptly broken when I joined a project using C++/CX it was so far outside of my previous experience that I had a really bad time of it. I happily picked up the actual language very quickly. It was the surrounding ecosystem of compiler…
Yes, those take a while. It's even harder if the new language is outside of paradigms you are familiar with. Eg Prolog or Haskell would be that for most people.
Re: Being confidently programming language agnostic
#63Earlier quoted context omitted.
While using fewer, better languages for more is fantastic, I doubt you really want a single language. Try replacing shell, Structured Query Language, and C with the same language. I won't say that it can't be done, but I think you'll lose a lot if you succeed.
I'd hope that with embedded DSLs we can get closer. People are already doing lots of it in Haskell, including domains you listed. Of course there is always the risk that one invents an "inner language" with poorer semantics and tools.
And of course, Haskell's type system is not endlessly flexible (yet..). Eg Haskell still struggles expressing relational programming or linear types / uniqueness.
Re: Being confidently programming language agnostic
#64After you have some experience with, say, 3 to 5 different languages, you can learn new ones very quickly (hours, days) with little effort because you know almost all of the core concepts (OOP, FP, mutability, generics, ...). There's no point in learning "all of the languages" for its own sake. Just learn a bunch of different ones to learn different ideas and programming styles. What takes more time is the standard l…
It's because grading CVs is hard.
Re: Being confidently programming language agnostic
#65Earlier quoted context omitted.
While using fewer, better languages for more is fantastic, I doubt you really want a single language. Try replacing shell, Structured Query Language, and C with the same language. I won't say that it can't be done, but I think you'll lose a lot if you succeed.
C# really tries hard at that fwiw
I also don't think anyone's programming "just" C# - I'm a web dev, so I'll do Javascript, Razor, HTML, C# and SQL as the situation requires.
There's also a huge difference between programming ASP.NET Web Forms and the latest version of WebAPI.
Re: Being confidently programming language agnostic
#66I think Norvig and the author are wrong about "parallelism" requirement. I mean it's good to know what's out there, but you can't really understand it if you try to learn it from a multithreading point of view. Fundamentals for it are part of distributed systems and this is where people should get into and learn things about ordering, consensus, asynchronous and synchronous systems, etc.
Re: Being confidently programming language agnostic
#67An excellent article, well worth reading. As it points out, implementing the idea of learning a programming language for the sake of learning requires being highly selective in deciding which languages to learn. One language I would advise against learning is C++ - because, first, it may take too much time to learn to be worth the effort, and, second, the language itself is not all that interesting, and its standard…
Nah. Learn whatever takes your fancy. Or whatever you think will get you a job. Or learn whatever you can get tutored in because it's almost always easier to learn when you have someone you can ask questions to in person.
Learn structure and logic, but don't tell anyone they're less of a programmer because they use X instead of Y.
Re: Being confidently programming language agnostic
#68I used to arrogantly think I could be productive in any language given a week or so to adapt. I often used the phrase "a good dev is a good dev in any language." That belief was rather abruptly broken when I joined a project using C++/CX it was so far outside of my previous experience that I had a really bad time of it. I happily picked up the actual language very quickly. It was the surrounding ecosystem of compiler…
What gets my goat is the idea that some recruiters have that I - as someone with mostly C# experience - would be completely useless in a Java environment.
Java and C# are so similar it's barely worth noticing. There'd be different IDEs and libraries in play - and sure, a lot of googling to remind myself of stuff in the first week. But that pales into the comparison to the amount of time I'll likely spend learning the business domain, or how the legacy code base works. That's the stuff that's truly important.
Re: Being confidently programming language agnostic
#69I've been programming for 20+ years, and recently moved over to Python. Sure, I could code on day one and figure out how to get programs working pretty easily. But the nuances with it are still things I need to work on a lot. I still don't program Pythonicly, I program like a C programmer writing Python. In fact, I probably program in all languages like I would a C programmer, and that's not good enough, in my opinio…
My first Ruby programs were very Java like. I doubt that my first Java programs were C like, if you use classes and methods it just can't be. No problem with using Python and Ruby together. They are maybe like German and English, close but clearly distinguishable. And Javascript, Perl, PHP, Elixir... too long to write about.
A consequence of multilingualism is that one starts noticing the differences in the implementation of the same features in different languages. Some are smooth, others are frustratingly hard to use or to remember. A quick test on a trivial nuisance, you must not Google it: in Python it's array.join(",") or ",".join(array)? And "1,2,3".split(",") or ",".split("1,2,3")? I remember only that "," goes to the opposite ends in the two expressions and I can't understand why that should be good.
Re: Being confidently programming language agnostic
#70I know formal education often gets a lot of criticism around HN, but I think the approach the article is talking about is heavily mirrored in most university computer science curriculums. Universities tend to focus on paradigms and patterns, and typically force a student to learn at least 3 languages throughout their education (much more if they want to). Just in my undergrad I learned C, C++, C#, Objective C, Swift,…