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.

What programming languages should I learn and why?

10 pointsby mhidalgoalmost 18 years ago

13 comments

bootloadalmost 18 years ago
<i>'what programming languages should I learn?'</i><p>I'd rephrase the question slightly and ask, <i>'what problems should I work on?'</i> and <i>'how can the language(s) I use solve them'</i>. This is one reason why lisp is a compelling choice. You can create your own sub-languages to solve any particular problem. <p>But for lots of reasons lisp may not be suitable. There are lots of other languages to choose so pick the ones that suit solving different problems. There is not one <i>"universal programming hammer"</i> (though lisp is pretty close) but an array to choose from that may suit different types of problems. <p>esr in his faqto (faq + howto) recommends python, c/cpp, java, perl and lisp. Each language chosen for their abilities to solve different types of problems ~ <a href="http://www.catb.org/~esr/faqs/hacker-howto.html#skills1" rel="nofollow">http://www.catb.org/~esr/faqs/hacker-howto.html#skills1</a><p>Tall order? Take too long? Then read on with Norvig and <i>'Teach yourself programming in 10 years'</i> ~ <a href="http://www.norvig.com/21-days.html" rel="nofollow">http://www.norvig.com/21-days.html</a>
dazzawazzaalmost 18 years ago
+1 for python. Why? excellent docs, excellent libraries, excellent books, flexible language thats easy to learn.
评论 #23315 未加载
cedalmost 18 years ago
While we're on the topic, PG mentions in one of his essays a few languages with a "reputation for succintness": Forth, Joy, Icon. They are all tiny blips on my radar, popping up once every year in some obscure article. Does anybody have experience with them, and are they worth learning? (Forth is already covered on this page)
评论 #23554 未加载
mhidalgoalmost 18 years ago
I have been teaching myself how to hack. I see that the first real software engineering classes in most schools is taught in JAVA, usually a data structures class. Should I even bother.... I see the merit of learning ground level stuff , like memory management seen in C/C++ but with JAVA is it useful to learn even if majority of web development is done in LAMP ( I should say majority of web development interesting to me, I know there is alot of JAVA out there) Does anyone know of a good book/tutorial to learn data structures with languages such php/ruby/python.
评论 #23303 未加载
评论 #23322 未加载
评论 #23304 未加载
tim_swalmost 18 years ago
Read COncepts, Techniques, and models of computer programming.<p>You will get a taste of all these languages/paradigms, and in addition, others like concurrent programming etc.<p><a href="http://www.amazon.com/Concepts-Techniques-Models-Computer-Programming/dp/0262220695" rel="nofollow">http://www.amazon.com/Concepts-Techniques-Models-Computer-Programming/dp/0262220695</a>
ivanalmost 18 years ago
Learn ruby and/or python and C for low levels and/or create extensions for those two.
jaggederestalmost 18 years ago
lisp, haskell, prolog, forth, erlang, smalltalk, python, ruby, c, java<p>I think lisp will be adequately enunciated, so I'll move on to the others<p>Haskell is a lazy, strongly-typed functional language. It's syntax is very close to mathematical notation, and it enables code reuse by not allowing side effects. It'll teach you to think in actual algorithms, where most languages teach you to think about how to implement those algorithms.<p>Prolog is a logic language. It'll teach you logic, and some of the fundamental ideas from that field. Backtracking search, unification, and other interesting ideas.<p>Forth is a reverse-polish-notation stack language that is very 'close to the metal' and yet a higher order language than C. Forth will teach you more about the workings of a computer than anything but assembler, and it won't break your soul like assembler might.<p>Erlang is strict strongly-typed functional language that is all about concurrency. Right now it's probably the best language to write highly concurrent applications in, and, as it turns out, most of the internet can be made highly concurrent.<p>Smalltalk is the mother of all object oriented languages, and shares with lisp the interesting concept of a running image. In smalltalk, everything you do is in a live instance of an image, and to deploy, you simply move the instance over and run it on the server. This also one of the first languages to have an effective refactoring browser.<p>Python is a dynamic object-oriented language that incorporates features from a lot of previous languages. It's got some interesting things and a fairly nice syntax. Take a look at TurboGears, Pylon, and Django<p>Ruby is a dynamic object-oriented language (lisp + perl) that is (like lisp) all about metaprogramming. Ruby has also got an interesting framework that is becoming notorious, Rails, which makes OR mapping and quite a few other things brain-dead easy. If you get into the internals of rails, you'll learn a lot about metaprogramming.<p>C is The Language. If it has to be fast, small, and close to the metal, C is the go to language (no pun intended) There are a lot of situations where you'll end up needing to rewrite in C if you hit performance problems, so knowing some C will let you squeeze about an order of magnitude of performance out of things. Plus, you can start to understand drivers for your hardware here.<p>Java is less about the language and more about the IDEs. With the possible exception of Smalltalk, Java has the best IDEs and refactoring software. This is the kind of thing that most languages should have, but don't.<p>Anyway, this is kind of just a menu, but if you learn three or four of these, you'll be well on your way to deciding which one suits your style.
评论 #23446 未加载
评论 #23624 未加载
评论 #23364 未加载
评论 #23421 未加载
mynameisherealmost 18 years ago
Now, you're going to hear a lot about how wonderful LISP (etc, etc) is, but remember that almost every _real_ application is in C (Unix), C++ (games, other desktop apps), or Java (50 million goddawful enterprise backends).
评论 #23474 未加载
gregwebsalmost 18 years ago
Instead of learning C or C++ you may consider D which will enable you to learn more about actual programming and less about the idiosyncrasies of C/C++.
评论 #23470 未加载
mhidalgoalmost 18 years ago
I think this question really shows what a great community this site has developed into. Thanks for all the help!!!
knomealmost 18 years ago
All of them. Because we are compelled.
elialmost 18 years ago
as many as you possibly can.<p>so that you'll be able to pick the right tool for the job (nobody ever asks, "which should I learn,the hammer or the screwdriver?")
评论 #23773 未加载
fraXisalmost 18 years ago
C#.
评论 #23475 未加载