Expanding my horizons with a new paradigm?

Started by
9 comments, last by kordova 13 years, 8 months ago
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.
C++: Where your friends have access to your private members
Advertisement
I don't want to troll or anything, I'm just curious.
Who told you that?

And another thing: games are difficult to make. No matter how many programming languages you learn. Even if you are experienced, games are difficult to make.

So don't postpone making games, start them now!
Three points:

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.
You didn't say which language you've learned?

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 :)
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.
C++: Where your friends have access to your private members
Quote:Original post by Fuji
So, 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.
Quote: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++ :P
Now, 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...
@Fuji

I'd never heard of Fantom. Thanks a lot for making me aware of it :) I'll have to follow their efforts to bridge java and .net apis - it looks interesting.

@godmodder

Absolutely. Lisp is primarily good for changing the way you think. When it's time to get everyday stuff done, it's rarely the tool you'll want to reach for.
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.

[Edited by - daviangel on July 14, 2010 6:59:40 AM]
[size="2"]Don't talk about writing games, don't write design docs, don't spend your time on web boards. Sit in your house write 20 games when you complete them you will either want to do it the rest of your life or not * Andre Lamothe
Quote:Original post by godmodder
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.
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 godmodder
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.
Where I am, we leverage specification-as-implementation.

This topic is closed to new replies.

Advertisement