Live data from Hacker News

Learn more programming languages, even if you won't use them

thorstenball.com

181–190 of 319 posts

Re: Learn more programming languages, even if you won't use them

#181

What a terrible advice. Does author has trouble with discipline? You don't get anything by learning more and more programming languages. Programming languages are tools, be expert at 2 or 3 languages and that should be enough. Learn anything more to solve a specific problem. You understand the crux of a language by being expert at it not by "me too" novice at it.

> You understand the crux of a language by being expert at it not by "me too" novice at it.

Let's not pretend "knowing" a language well is akin to a 10-year-journey like some arcane samurai art.

If you

- could build an interpreter for a minimal version of the language

- can expand most syntactic sugar into more minimal constructs of the language

- can reason about the language in usual PL terms (call-by-value/call-by-name, pure/not-pure, strictly/dynamically typed, ...)

- know the 5-10 most important milestones in the history of that language

- know the standard libraries so that you don't repeat code that is written there,

then what use is there to master a language further? If someone is experienced in language learning, the above can be accomplished for nearly any language in idk, a year? At that point of mastery, it makes much sense to learn another way of thinking instead of memorizing the official language specification verbatim.

A programmer with 3 completely different paradigms to think in will be much more effective than one with just one paradigm to think in. Time is much better spent learning new paradigm than to gain that last bit of mastery.

Re: Learn more programming languages, even if you won't use them

#182

So I fully agree here because techniques from one language often lead to much better technique in a language of a different paradigm. For instance, I now use many of the functional techniques I’ve learned in JavaScript to write less, easier to read code instead of more loc of imperative code. I’ve also worked at a company that had many functional patterns implemented in php, and frankly made the language quite decent…

> I’ve also worked at a company that had many functional patterns implemented in php, and frankly made the language quite decent. Oooh, got any examples?

Not OP but:

https://phptherightway.com/pages/Functional-Programming.html

https://github.com/mtdowling/transducers.php

Don't forget putting a function into a function, gives you behaviour polymorphism at runtime, without inheritance or class based dependency injection

Re: Learn more programming languages, even if you won't use them

#183

Earlier quoted context omitted.

> There is 1 proper general-purpose language in there That will depend on what the GP has done with SQL. Also, JQuery implies in Javascript. There are up to 3 general-purpose languages in there, one of which nearly any developer will know. There should be plenty of people capable of taking the codebase, but it's not a trivial single language case. The upside is that good developers will be overrepresented when compar…

> That will depend on what the GP has done with SQL. I am sure they built their UI with SQL - as opposed for example simply doing some queries, or some joined procedures at best. > Also, JQuery implies in Javascript. With uttermost likelyhood, they did not only dynamic changes of some html-documents there, but also their backend and crypthography. Enough with the snark... ("Language" is such a fuzzy term anyways. You…

Also sorry if I came of as rude, did not mean to!

Re: Learn more programming languages, even if you won't use them

#184

Earlier quoted context omitted.

This reminds me of something Rich Hickey said about becoming a better developer: https://gist.github.com/prakhar1989/1b0a2c9849b2e1e912fb “A wide variety of experiences might lead to well-roundedness, but not to greatness, nor even goodness.”

Yea this is 100% nonsense, and is borderline gatekeeping. Well roundedness allows me to identify a particular language/tech stack that is most suitable for a task and then I can just drill down on it and get productive very quickly.

Agreed. And to address the grandparent comment. Its entirely possible that he is approaching his coding with a professional mindset and wasting time on things like maintainability, scalability, or similar just out of habit.

Re: Learn more programming languages, even if you won't use them

#185
post #3

In case anyone isn't familiar with them, these two books[1][2] from the Pragmatic Programmer are great for doing just this. They offer a guided intro to 7 different languages each, and they're a whole lot of fun. [1] https://pragprog.com/book/btlang/seven-languages-in-seven-we... [2] https://pragprog.com/book/7lang/seven-more-languages-in-seve...

The first book led me to discover Erlang, which literally changed my life. Great resource.

Re: Learn more programming languages, even if you won't use them

#186

At this point I have almost 20 languages that I've used for at least two years, which is what I consider an decent bar for "knowing" a language. The problem I now have is that I don't know if I'll ever be able to master any language anymore. Mmmmaybe C, since I've used that fairly consistently, albeit on-and-off for 25 years. But whenever I get to an "if" or "for" or function declaration, I often have to look at an e…

Perhaps try learning sufficiently different languages? For me it's hard to make cross-language mistakes except within the {} groups: C, {all kinds of assembly}, {C++, Java, C#}, {Python, Ruby}, {Haskell, OCaml}, Prolog, {VHDL, Verilog}

One really striking thing is going between {Go, C++, C#, Java} and getting the sources of documentation confused between each one. Not even the languages themselves, but the ecosystems, can be really confusing.

Re: Learn more programming languages, even if you won't use them

#187

At this point I have almost 20 languages that I've used for at least two years, which is what I consider an decent bar for "knowing" a language. The problem I now have is that I don't know if I'll ever be able to master any language anymore. Mmmmaybe C, since I've used that fairly consistently, albeit on-and-off for 25 years. But whenever I get to an "if" or "for" or function declaration, I often have to look at an e…

I wrote a working compiler (learning type exercise level) effectively in pseudo-code resembling Java once because I didn't know the syntax very well, then commented it all out and translated it to Java line by line. Surprisingly, it had no bugs that I ever knew of. It definitely freed me up to think purely about the logic.

You might just throw down whatever and let the next compile/interpretation cycle let you know if you didn't get the syntax right.

Re: Learn more programming languages, even if you won't use them

#188

Earlier quoted context omitted.

Yea this is 100% nonsense, and is borderline gatekeeping. Well roundedness allows me to identify a particular language/tech stack that is most suitable for a task and then I can just drill down on it and get productive very quickly.

Agreed. And to address the grandparent comment. Its entirely possible that he is approaching his coding with a professional mindset and wasting time on things like maintainability, scalability, or similar just out of habit.

It’s a waste of time to use classes, if all you’re doing is hacking together 500 lines into a stable enough heap to generate the graphs for a paper.

Not all academic code is that bad, but the heft is definitely towards that end of the pool.

I got really familiar with the distinction, because I spent a while translating PhD project/demo code into actual products for $JOB. It’s definitely mostly in making things secure, stable, maintainable, and debuggable that you lose most of the time.

Re: Learn more programming languages, even if you won't use them

#189
post #27
post #9

Earlier quoted context omitted.

I've learned to code methods in OO languages without using loops after I've learned Erlang. No loops means less bugs.

I can’t tell if this is sarcasm but if it isn’t it just proves the point. Your teammates must just love working with you. I’d love to see the look on their faces when you committed that code. “I just learned Erlang. Check out what I did without telling anyone. Suck it. Boom!”

It is not sarcasm. Yes, they love working with me, they learn new things from me and they use it. Generally their face is like "o_O I wish I've learned it before". I use build-in functions of PHP and Java in way without loops, there is nothing unknown. I don't write Erlang code. Here is an example what I mean;

  
And here in Python

  class Fibonacci:
     def fibonacci_nth(self, n):
        if(n == 0): return 0
        if(n == 1): return 1
        else: return self.fibonacci_nth(n-1) + self.fibonacci_nth(n-2)
        
     def fibonacci_series(self, n):
        return [self.fibonacci_nth(x) for x in range(n+1)]

Re: Learn more programming languages, even if you won't use them

#190
post #160

Earlier quoted context omitted.

I don't doubt it's possible. What I do doubt, is that it's possible to know several languages in-depth and at the same time be at least very good in a specific domain (webdev & mobile apps are not domains), have good algo and problem-solving skills, have decent to good soft skills, know at least a little bit of PM and also be a good conversation partner and well informed citizen of the world, while also being a good…

Yeah, it's a matter of personal choice. My choice was to forgo any hobbies unless they are somehow useful for programming, ignore most of being "well-informed citizen of the world", ignore the whole mating and breeding business and to focus solely on programming at first, then on programming-related fields that picked up my curiousity. I'm still competent enough in other programming- and work-related areas - at least…

Even then, I don’t think you can ever really learn even one mainstream language in depth. For something as ‘simple’ a C every compiler is slightly different and includes different flags and run on different CPU generations and this stuff is constantly evolving. A language like Java has a giant and evolving standard library plus multiple compilers etc. And that’s ignoring any simply popular libraries etc.

Really learning what you can safely ignore in whatever context is the most important part, everything past the basics is domain specific.

Having said that, I have read several language specifications which can be useful for general understanding. But, that’s simply the tip of the iceberg.

Post reply on HN