You are not logged in.

#26 2010-05-04 07:04:21

Kiwi
Member
Registered: 2008-02-24
Posts: 153

Re: Languages (Where do I start?)

Haskell for C programmers

I have been reading that off and on for a while, it seems decent enough.

Real World Haskell is another one a lot of Haskellers recommend. It is a full book (available online free, legally) and not just a tutorial.

Offline

#27 2010-05-29 15:04:55

bowlesling
Member
Registered: 2010-03-25
Posts: 9

Re: Languages (Where do I start?)

Languages depend on what you want to do in the future. If you want to go into academia look at what people there do (besides requisite C/C++); if you want to do Artificial Intelligence, Natural Language Processing, Machine Learning, Machine Translation, etc...; if you want to do web development, commercial software, etc...; see what people in those fields use.

But the best advice I ever got was not to focus so much on any one language but learn a little bit about different kinds of languages. This is because things change rapidly and fads can fade quickly. For example, if you focus all your energy on PHP you might be popular now (at least where I live---it seems everyone wants a PHP developer), but who knows in ten years.

BUT, if you focus on learning different kinds of languages then you will be familiar with various paradigms. And, given that most languages are influenced by other languages, you can branch out by association or pick up the basics of one language pretty quickly.

For example, object-oriented languages are all the rage (ex: Ruby, Python,...); scripting languages too. Learn a functional language (ex: Scheme (or the mothership: LISP)). Learn a declarative language (ex: Prolog). HAVE FUN. DO WHAT EXCITES YOU. But pay attention to what is practical and realistic for your goals. If you want to design websites for a living you probably shouldn't invest a lot of time in something like Prolog or BASIC, or ALGOL, or LISP.

Over a year ago I started the same journey and decided on Python because the Natural Language Toolkit was built for Python. I messed around with Prolog and Scheme and Lisp and other AI, NLP type languages (many of them "leagacy" languages that are still relevant, by which I mean they have been around long enough to have a legacy). Now, I am investing heavily in Ruby, Java, C++ because the jobs I want require them (also SQL, Ruby on Rails, JavaScript and others).

The other reason to learn different kinds of languages: I did an internship at a company that was developing its own scripting language based on ECMAScript. Say you had a programmer who had awesome technique in only one kind of language---and this language was nothing like ECMAScript. There would be a considerable learning curve. I put this example as a hypothetical because this company had awesome programmers: this means they were proficient in a variety of programming languages.

If you are learning more than one language at a time (for example, when I don't focus strictly on one, I rotate weeks: one language per week. For me, this means I cover a week's work of programming for each language in one month---4 languages. The benefit of this? If yo don't remember some things over a three weeks then you didn't get it in the first place, and you need to review it. The real benefit, however, is this: you can compare in real-time the different aspects of various languages as you are learning them. Don't believe people if they say you can't learn more than one language at a time. This underestimates our potential. Plus, you will probably have a favorite, and can spend your free time doing projects in that language then that will probably be one of the languages you spend the next ten years really trying to understand.

My last piece of advice is to choose a text editor that you extend with one of the languages you are working on. For me, that choice at the time was Emacs. I wanted to learn LISP (actually Scheme--a dialect of LISP), and Emacs uses a variant of LISP. This way, while I'm tweaking my text editor I can be using a language similar to what I'm studying.

Peter Norvig (co-author of a great AI book and director of research at Google) has a wonderful article called "Learn Programming in Ten Years." (http://norvig.com/21-days.html). He is the person I got a lot of my good advice from. But I don't let me speak for him, you should read his article.

Offline

#28 2010-06-01 19:07:53

pauldonnelly
Member
Registered: 2006-06-19
Posts: 776

Re: Languages (Where do I start?)

bowlesling wrote:

But pay attention to what is practical and realistic for your goals. If you want to design websites for a living you probably shouldn't invest a lot of time in something like Prolog or BASIC, or ALGOL, or LISP.

Aww. Why'd you go and lump Lisp in with a couple of deprecated languages and a special-purpose language like Prolog?

Offline

#29 2010-06-02 02:17:36

rransom
Member
Registered: 2010-04-26
Posts: 92

Re: Languages (Where do I start?)

bowlesling wrote:

If you want to design websites for a living you probably shouldn't invest a lot of time in something like Prolog or BASIC, or ALGOL, or LISP.

See scheme2js (in AUR: http://aur.archlinux.org/packages.php?ID=16607) and SISCweb (not in AUR yet; see http://siscweb.sourceforge.net/).

Also, if you need to write software to run on the JVM, Kawa (SVN version in AUR: http://aur.archlinux.org/packages.php?ID=14158) and plain SISC (in AUR: http://aur.archlinux.org/packages.php?ID=6730) may be useful.

EDIT: Regarding Prolog, Erlang (in extra) is Prolog-like, and Yap (in AUR: http://aur.archlinux.org/packages.php?ID=18057) is a Prolog compiler which includes the PiLLoW web library.

Last edited by rransom (2010-06-02 02:21:52)

Offline

#30 2010-06-02 14:02:33

bowlesling
Member
Registered: 2010-03-25
Posts: 9

Re: Languages (Where do I start?)

@ pauldonnelly: sorry. I love LISP (and all it's dialects) and it is shameful of me to have grossly lumped it with deprecated langs. I also agree with rransom. I should not have portrayed LISP as inapplicable to web development. See also Clojure for a cool LISP child.

I officially apologize to LISP (and all adherents) for portraying it as a "legacy" language or as something only "special-purpose." The reality is that is completely the opposite. See also Church for a LISP child on the cutting edge of AI development.

Offline

Board footer

Powered by FluxBB