views:

82

answers:

3

I'm currently assessing which strongly-typed server-side languages I could choose to learn next. I'm coming from a background of mainly php development (oop). I'm looking at strongly-typed languages as I consider this a major downside to php (and sometimes an upside).

I know both C# and Java (JSP/Servlets) are an option, however I wanted to consider other languages that I've yet to research.

I'm mainly looking at this from a career POV, so theres no point in picking up a language that's dying out or in low demand (now or in the future).

+1  A: 

Do you mean statically typed languages (checked at compile time)? If so, C# or Java really are probably your best bets for widely used server-side languages. Languages such as Python and Ruby are strongly typed, but they are dynamic like PHP.

http://en.wikipedia.org/wiki/Type_system

http://en.wikipedia.org/wiki/Strongly_typed_programming_language

Matt
A: 

First avoid using "strongly typed " most people misunderstood this term. (I personally refuse to give it a meaning)

I am assuming that your are talking of a statically type language as opposed to a dynamically type language.

I can understand from your background with php that you want to lean a statically type language but be aware that php is the worst dynamically type language that I have ever seen.

I would say that if you know C#, Java that is enough. IMHO learning a language for a career POV is not what will improve your skill in PL. This because most industries have no idea which language to choose in other to express the best there problems. So there are choosing language base on what the other competitors used. [1]

Your also have to ask your self why you want to learn statically type language. Understand what is the difference between static and dynamic typing and what it implies. This is a hard question to answer. Is not as obvious as what most people think.

So I can answer which language while improve your programming skill ( LISP (DT) , Smalltalk (DT) , Scheme (DT) , ML (ST) , Haskell (ST), Prolog (DT), C (ST), Self (DT) ).

DT: Dynamically type, ST: Statically type

[1] http://www.paulgraham.com/avg.html

mathk
I'd say learning a new language is useful on a couple of fronts, even if there's no employment payoff: 1) it's an intellectual exercise, good for the mind generally. 2) if the OP is bored, it's one way to keep up interest to get over the boredom. 3) every language has its own point of view, and exposure to more ways of thinking about a problem will have benefits even if he stays with C#/Java.
DaveE
Yes that is my point but if you learn C# you wont get mush by learning Java and other mainstream language. You get a lot by learning what I call wired language.
mathk
+2  A: 

Scala very beautifully blends object oriented programming and functional programming to form a new programming paradigm called object-functional programming which is, as far as my experience goes, most scalable and productive paradigm ever.

Go for it, I would say.

Jim