Programming Forums

Programming Forums (http://www.programmingforums.org/forumindex.php)
-   Coder's Corner Lounge (http://www.programmingforums.org/forum11.html)
-   -   Should I bother learning new languages? (http://www.programmingforums.org/showthread.php?t=12903)

Druid Mar 29th, 2007 12:34 PM

Should I bother learning new languages?
 
I have a question...

Which languages should I focus on the most?

I have knowledge of C, C++, C#, Java, Unix scripting, VB, Perl, and PHP. I have interests in Ruby and Python. I would like too know more languages but I feel as though my skill level in my current languages would start slacking if I do so.

I used to write code at home, all of the time... back when I didn't do it all day for work also. I mainly use C,C++, C# and unix scripting... with a bit of PHP,CSS for my website.

Should I stick with these languages and forget about learning new ones? Or should I learn new languages, if so which?

I have noticed that a lot of people are preaching Java and Python... I've also been told that Python is a "starter" language.

My interests involve client/server, network, database and web application programming and my formal education consists of mostly C and C++.

DaWei Mar 29th, 2007 1:07 PM

One presumes you have learned to solve problems. If that doesn't get rusty, syntactical rust won't matter much. A paradigm shift (to a functional language, say) will probably take more effort than a syntax shift within a given paradigm.

Timmy Mar 29th, 2007 2:59 PM

It will not harm you learning yet another language but unless you have a need to do so then your efforts are better spent elsewhere. There are some excpetions to this, such as learning a functional or declarative language. I have learned a few languages but I find that if I dont read code in them for a while I tend to forget some of the details.

If you have interests in client/sever programming then learn how TCP/IP works and try to design and implement some software. By learning a technolgy such as TCP/IP in depth will broaden the sorts of projects you can do and will be far more interesting.

I think the key thing to remember is languages come and go but the general concepts stay the same. So by learning about databases or networks in depth will be a more valuable skill for the future as you can apply it to most langauges.

mackenga Mar 29th, 2007 6:54 PM

I'll second what Timmy said about learning a new technique or technology rather than a new language (after all we could all be learning more languages for the rest of our lives). You already seem to be comfortable with a really useful set of languages and the law of diminishing returns applies here.

Got to say, as well - Python isn't a 'beginner' language! I don't program in it myself but have skimmed some of the literature. It's got a nice, clean syntax and is expressive and high-level but while some languages are better for beginners than others, their usefulness in other contexts has more to do with the flexibility of the language and the available libraries (essentially, what's possible, and how easy the things that are possible are to actually achieve in practice). Like I say, I don't know Python that well but I'd certainly say that while it does look to me like a language that would be quite easy to pick up as a first one, it's certainly scoring well in terms of general usefulness too.

Think of it as a nice, portable, modern language that fits the same sort of niche as Tcl or VB - strapping together other things to throw together applications fast.

Oh, and I'll also second what Timmy said about databases: the most significant difference between the software I used to hack together for fun in my free time and the software I write now as a 'professional' developer is the level of involvement of relational databases.

Arevos Mar 29th, 2007 8:06 PM

Quote:

Originally Posted by Druid (Post 125959)
I have knowledge of C, C++, C#, Java, Unix scripting, VB, Perl, and PHP. I have interests in Ruby and Python. I would like too know more languages but I feel as though my skill level in my current languages would start slacking if I do so.

In my experience, the opposite is true. Programming languages are essentially a way to express a set of abstract concepts that can be interpreted by a computer. The more languages you learn, the more often you are exposed to these concepts, and the better understanding you gain of them.

Language syntax is fairly superficial. For example:
:

foreach (int x in numbers) { ... }

for (int x : numbers) { ... }

for x in numbers: ...

foreach $x (@numbers) { ... }

for x in numbers: ... end

foreach ($numbers as $x) { ... }

Even if you happen to forget exactly how a for-loop works in, say, PHP, it's not going to take 30 seconds to look the answer up, and the number of keywords in a language is usually relatively few.

Quote:

Originally Posted by Druid (Post 125959)
I have noticed that a lot of people are preaching Java and Python... I've also been told that Python is a "starter" language.

Python has less of a learning curve than Java, in that it tends to introduce concepts to the beginner incrementally. For instance, in Python:
:

print "Hello World"
And in Java:
:

class HelloWorld {
    public static void main(string[] args) {
        System.out.println("Hello World");
    }
}

The Python program has a string and the print statement. The Java program has classes, methods definitions, types, qualifiers, arrays, blocks, strings, objects, method calls, end of line statements, namespaces, return values, command line arguments, class permissions... did I leave anything out?

Java is not necessarily more complex than Python, but whilst Java introduces everything at once, Python takes it slower. This is why some people consider Python a good beginner's language.

However, once you get into Python, it's actually rather more powerful than one might assume. It has a good number of advanced features that Java lacks. Indeed, whilst Java may look like a rather complex language, in actuality it's a very simplistic and, some might say, restrictively basic language. Python starts off simple, but quickly outpaces Java with relatively exotic concepts like metaclasses, higher level functions and mutable objects.

Ruby too is much the same. It's somewhat slower than Python, but arguably supports a larger set of features. At times it can be a little messy, like Perl, but whilst I tend to prefer Python overall, Ruby's class model is rather nice.

Jessehk Mar 29th, 2007 10:55 PM

Quote:

Originally Posted by Arevos (Post 125974)
Ruby too is much the same. It's somewhat slower than Python, but arguably supports a larger set of features. At times it can be a little messy, like Perl, but whilst I tend to prefer Python overall, Ruby's class model is rather nice.

Actually, with the new VM, Ruby's speed is greatly improving. I'd agree with you otherwise though.

And for what it's worth:

:

numbers.each { |x| ... }

;)

Arevos Mar 30th, 2007 4:50 AM

I already had Ruby in my for-loop list, Jessehk :)

I also deliberately left out languages that used higher level functions for iterating over a list, as IMO that's another topic altogether.


All times are GMT -5. The time now is 2:15 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC