TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: What does it mean to learn a new programming language?

17 pointsby firefly284about 3 years ago
When I pick a new language to learn, I can pickup the basic types, control, syntax etc. in a few hours and write basic programs while referencing the language docs/tutorials. I can also write few mid sized programs while learning about the standard library in a few days of learning a language. But often times the programs written aren't the most efficient in terms of the programming language. One example is learning c after working with a grabage collected language like python tend to not use pointers and instead make multiple copies of the same data i.e not use one of the better features of the language. So does the programmer know C?

10 comments

d0mineabout 3 years ago
There is no one standard that fits all cases e.g., I&#x27;ve written useful code in Groovy&#x2F;Java but I wouldn&#x27;t dream of claiming I know the languages (or want to know), on the other hand I have a lot of experience with Python code but I see there is much to be learned (the more you know, the more there is to learn).<p>You can learn something useful in a few ours. It is arrogant to claim you know everything even after decades of experience.
warrenmabout 3 years ago
In short, to &quot;learn a new programming language&quot; is the same as &quot;learn a new spoken language&quot;<p>When you can communicate above the level of a total novice with &quot;native speakers&#x2F;users&quot; of the target language, you have &quot;learned&quot; it<p>I can <i>read</i> tons of programming languages (ultimately, it&#x27;s all manipulating truth tables to get massage data from one form into another)<p>I can only <i>write</i> a couple (in any kind of proficient manner)<p>My first exposure to FORTRAN77 was after learning BASIC, Turbo Pascal, and C++ (from a C&#x2F;FORTRAN programmer)<p>I brute-force translated from procedural FORTRAN77 into procedural C<p>It worked: but it was ugly, inefficient, and didn&#x27;t look especially &quot;C-like&quot;, but that wasn&#x27;t a surprise - idiomatic programming, like idiomatic speaking&#x2F;writing, can&#x27;t be <i>fluidly</i> converted into a different language without interpretation on the part of the translator<p>A real-world example of this happened to me when I went to London England several years ago for a couple weeks on a project. One of the guys I was working with announced he was gonna go downstairs and light a fag. As an American, I found the cavalier nature of this declaration shocking! Until I asked him what he was actually going to <i>do</i>. In England, &quot;fag&quot; is slang for &quot;cigarette&quot;. In the US, it&#x27;s [vulgar] slang for &quot;homosexual&quot;.<p>When you can <i>idiomatically</i> communicate&#x2F;read&#x2F;write (even in limited form) in the target language, you have &quot;learned&quot; it
whittenabout 3 years ago
It’s been said that a diehard ForTran programmer can write ForTran code using any programming language.<p>I’m sure this applies to any language that a diehard programmer chooses to focus upon.<p>It would be nice to have a idea what techniques a language focuses on providing. Perhaps some kind of Rosetta Code site might be a place to pint this kind of information.
评论 #30802250 未加载
评论 #30802138 未加载
评论 #30799037 未加载
gumbyabout 3 years ago
What does it mean to learn a human language? A simple grasp can take a very short time while appreciating the subtlety of a novel could take years.<p>Also this process can provide enlightenment about your native language. If you speak an info-European tongue, to pick one up that lacks adjectives and adverbs, or the verb to be, can cause you to see your own language in a new light.<p>Likewise learning a production language, or a strongly typed language when you only knew weakly typed ones can provide many an “aha” moment that could improve your use of your primary programming language.
progreabout 3 years ago
I would say that when you know the strengths and weak spots in a language and can program to take advantage of the former and avoid the latter, then you <i>know</i> the language. Syntax and operators is not enough.
评论 #30799026 未加载
vpbusvltsmtkabout 3 years ago
What does it mean to learn a natural language? Absolutely nothing unless you have a significant understanding of it to be useful. Its like how people “know” tens of second languages without very much fluency in any of them to be useful besides bragging. I suppose because programming is easier to learn this might not be true.
ankurdhamaabout 3 years ago
It simply means that you have to understand the &quot;execution model&quot; of the programming language as well.
b20000about 3 years ago
learning a new language means you will learn two more new languages next year. eventually you will reach age 40 and be exhausted. i refused to learn new languages for many years and i’m doing ok. there is no need to learn new languages. specializing is a valid option. your post illustrates how only learning python or java or similar languages that hide complexity can make you ignorant of the machine and the reality you are dealing with. i believe anyone should learn C and know how to use pointers.
评论 #30798844 未加载
tomparkabout 3 years ago
Over the last several years I&#x27;ve been switching languages a lot and tend google very basic coding syntax, so I often see questions on Stack Overflow asking for the idiomatic way to do a task in a language. I think it&#x27;s a pretty typical attitude that you could say a programmer hasn&#x27;t truly &quot;learned a language&quot; without learning its idiomatic usage and performance characteristics but you&#x27;d still say you learned a language after using it for a year or so even if you haven&#x27;t &quot;truly&quot; learned it.<p>I find talking about languages with other programmers can be challenging, because there&#x27;s a class of coders who seem to have a belief that all programming languages are similar to mainstream imperative languages and therefore their strong opinion about all of them is valid and it&#x27;s as if there&#x27;s no point in learning more. Paul Graham mentions this in his Blub Paradox essay (<a href="http:&#x2F;&#x2F;www.paulgraham.com&#x2F;avg.html" rel="nofollow">http:&#x2F;&#x2F;www.paulgraham.com&#x2F;avg.html</a>): &quot;You can&#x27;t trust the opinions of the others, because of the Blub paradox: they&#x27;re satisfied with whatever language they happen to use, because it dictates the way they think about programs.&quot;. In discussions with other devs in 30+ years as a professional coder, I&#x27;ve seen that over and over and it&#x27;s kinda shocking to someone like me who partitions knowledge into the ol&#x27; known-knowns, known-unknowns, and unknown-unknowns.<p>Your question mentions carrying over a coding style from Python to C. True, you can do that and not really learn the new language. But for some languages, the compiler can force you to use a certain kind of programming style.<p>For example, in a lot of languages (say, Python, Ruby, Typescript) you can use higher order functions (like map, filter, reduce, zip, etc) but you can also write large codebases without ever using them. They&#x27;re like an optional language feature that you can adopt depending on your preferred coding style. In Swift I noticed that there&#x27;s no real difference in conciseness when comparing the syntax for map() or forEach against an equivalent loop, so that&#x27;s not even a compelling reason to switch styles. But in a language that prohibits loops and early returns (e.g. ML-based langs like Ocaml, Elixir) then you&#x27;re forced use those higher order functions to avoid having to write loops as custom recursive functions. It wasn&#x27;t until the compiler forced me to code this way that I truly learned it.<p>Likewise, if your language enforces Option&#x2F;Optional&#x2F;Maybe (e.g. Swift, Scala, Rust) then you&#x27;re forced to write code to deal with nulls. (Typescript is also like this, but you can bypass it by setting the type to `any` or using the `as` operator.) I worked through some chapters in an old tech interview book (Leetcode-style problems) in Swift and compared the functions to their equivalent in C, and was a little surprised at how many lines of code were dedicated to optionals. However, it was just a line or two more than the equivalent in C if it checked for null pointers. (Swift has a lot of nice syntax sugar for dealing with it; I wasn&#x27;t as pleased with how Rust does it.)<p>You&#x27;ve probably heard of people talking about &quot;fighting the borrow checker&quot; in Rust. But the borrow checker struck me just like the above language features. You had to give up a style of coding and adopt a new one.
faangiqabout 3 years ago
Code is code. With rare exceptions it doesn’t matter.