Recommended Posts

So, I've been told that I should learn at least one new programming language a year and that I should try a Lisp-based language to change how I think about programming.

However, I've only been programming a year. While it's still entirely possible for me to learn a new language as I have most of the fundamental concepts down for OO languages, other paradigms are drastically different. I wouldn't even know what to do with a language like that.

So, what I'm wondering is if it's really good for me to switch to a different language before I've mastered one. I'm not exactly a pro, but I do understand the concepts. I'm just worried that this will keep me from actually getting any project work done.

My overall programming ability is the stage between theory and practice. That is, I know enough to make working programs but games are still a bit difficult for me.

Share this post

Link to post

Share on other sites

1. You shouldn't wait until you've mastered a language to move along. Mastery takes a long, long time. You should be comfortable with the language, enough that you're not fighting syntax, or spending tons of time debugging an app to get something simple working.

2. I wouldn't choose something drastically different for your second language. Go to something like C# or Java from C++. Perhaps Python or Ruby from C#. Things that are different enough, but fairly similar. That helps you abstract out concepts from syntax.

3. A functional language (LISP or ML based) is a good learning target, and your original advice is fairly solid, though something perhaps best left once you've got the time to learn, and gotten your feet under you.

0

Share this post

Link to post

Share on other sites

The language itself is the least thing there is to programming. If you've only been programming for a year, I wouldn't be overly concerned about learning new languages. If you want to make games, then continue with the language you know, and start learning some relevant libraries. For example, you might get SDL, which will quickly let you put graphics on the screen. After that it's a short step to moving it around and calling it a space invader clone - and before you know it, you'll be plotting to make your own MMORPG like everyone else :)

In time, you'll want to learn other languages. If you know C/C++, then pick one of the dynamic languages (Ruby can be nice), or vice versa. You might give C# a go, just for the sheer getting-things-done-quick rush you get from having access to the libraries the .NET world has. And then one day, learn Lisp - afterall, it IS the most powerful language ever released, and will change the way you think of code.

But first, have some fun and write your first game :)

0

Share this post

Link to post

Share on other sites

I've mainly used Java and related languages (Like Fantom, which you most likely haven't heard of).i have done graphical programming, and I did develop a game demo with a friend. I have some experience with cpp, which means my programming knowledge basically lies in OO languages with c at the roots.

0

Share this post

Link to post

Share on other sites

Original post by FujiSo, I've been told that I should learn at least one new programming language a year

I'd guess that comes from "The Pragmatic Programmer"? I wouldn't learn a new language just yet; after all, learning a language doesn't really bring you much closer to learning to program. I know because when I started out a year-a few ago, I learned many languages; C++, Java, Eiffel, Python... Now all I remember from Eiffel is Bertrand Meyer :)

But, if you have knowledge of Java, you might perhaps take a look at one of the languages that runs on the Java Virtual Machine? I only have a little knowledge of Clojure, which is Lisp-like. It has a pretty easy interface to Java so if you don't know how to accomplish something you need, you can always turn to the Java libraries.

0

Share this post

Link to post

Share on other sites

And then one day, learn Lisp - afterall, it IS the most powerful language ever released, and will change the way you think of code.

Agreed that it has a complete different way of doing things, but programming large systems with a language like Lisp tends to be a nightmare. The problem with a language like Lisp is that it assumes godlike programming skills before you can write anything remotely maintainable. This is all good if you're the only one working on a project, but in a team I'd definitely prefer a language targeted at "humble average programmers", like C++ :PNow, don't get me wrong, I certainly think languages like Lisp have their place. But come on, just look at the code for example: it looks like a mess with all those parentheses! If there's one thing that's very important for code is that it is readable and understandable. In fact, I'm a strong believer of the fact that code should document for itself.In that respect, Lisp might be the most powerful language ever released, but if you can't leverage all that power than that's practically useless. I guess that's why the language is so popular in academic circles. Nice in theory, but in practice...

Share this post

Link to post

Share on other sites

I suggest a scripting language of your choice.It's different enough but not too much like a functional language would be.Or you could just try C# since you already know Java it should be quick to pick up.

Share this post

Link to post

Share on other sites

Original post by godmodderAgreed that it has a complete different way of doing things, but programming large systems with a language like Lisp tends to be a nightmare.

Tends to? Can I see some citations? Or are you just guessing based on your very limited exposure?

Quote:

Original post by godmodder But come on, just look at the code for example: it looks like a mess with all those parentheses!

Oh, so you just haven't written more than an assignment or two in Lisp. You're right though, I can see where ;:(){}*& are immediately intuitive.

Quote:

Original post by godmodderIf there's one thing that's very important for code is that it is readable and understandable. In fact, I'm a strong believer of the fact that code should document for itself.