Hi There (this turned out kinda long but i appreciate you reading),

I've been in IT for about 10 yrs. I've had exposure in everything from rolling out server environments, to routing, to security. I've worked quite a bit with web servers and have been exposed to the superficial structure of things like, css, html, xml, php, mysql, mssql etc.

With that said, I'm comfortable in those environments, but i've never gotten into the programming side of things - well i've done a couple databases, know how to write a SELECT statement, and can probably deduce how a few lines of code function if i stare at them long enough.

Anyway, I've been reading up on programming languages for 2 days. There are probably 30 posts on stackoverflow alone about getting started in programming. Usually these assume nontechnical people either under a deadline crisis "ill get fired if i dont know java by this afternoon" or the casual "programming looks neat, can i try?"

I haven't found any posts that address people with technical backgrounds and our learned or inherent ability to think and deduce logically and analytically.

My interest is as an systems "inventor", I find my hands tied when wanting to prototype an idea, and often have to seek out help to do things. For instance if i wanted to write a web app or desktop app or even create a small device that would allow me to surf the web on my TV (i know spend the 200 bucks on appleTV or find a cheap laptop) I would have to find help for almost every step of that, or ineffectually ramble through trying to do it myself. In both circumstances, i would have no idea of evaluating whether what was done was of any quality or possessed any flaws or had potential pitfalls.

So, with that said, i was looking for a programming language that would allow me to start tinkering quickly (eliminates c and c++/ and java is supposed to be verbose and bloated), would allow me to be creative, and open the door for understanding when moving into something much more in depth... building a small OS or the next facebook.

I'm currently tossing around Ruby, Python, and C#.

-Ruby sounds exciting but I understand it's mostly hyped because of rails, may be a bit shallow in depth, and could lead to poor programming technique... in the end though, isnt technique more conceptual than syntax?

-Python seems like a good option in that it has the ease of Ruby, but is perhaps more extensible? My concern is that it may not be widely supported or accepted. Although I've read to the contrary, I don't ever remember hearing "yeah that awesome... was built in python", but then maybe i just havent been listening. From a publicity level, i dont think i've ever heard python talked about.

-C# seems to have very mixed opinions from it being the next evolution in C,C++... to it just being Microsofts hand being crammed down our throats because of their breadth in the industry.

With that said, I'm not really looking for a language debate, so much as which is gonna get me going so i'm tinkering this weekend and for years to come.

I'm not saying I'll have google built by monday, but i'd like to get past the card and dice games and into something more interesting (yes, i took a java class in college which i did well in but was turned off after becoming bored by the course's pace).

Like most of you here, I'm a pretty smart guy. I pick up things quickly, i have a high IQ, and I'm driven when i get my hands into something. My problem is that I lose interest if I hit deadends with no resources to get me through (potential pitfall of ruby?). I want to find something that will allow me to get going, but I don't want to find out in a year that "oh you learned .... pfft, you shoulda learned ... and you be able to do SO much more"

I do understand that most people learn multiple languages, but I would bet that many also still use their first language quite a bit, unless its obsolete of course (and even then?).

Thanks for reading, that was a bit more wordy than I'd anticipated, but sure would be helpful to get feedback.

//EDIT I just typed a bunch of stuff realizing that this couldn't possibly be the etiquette for responses, so I'll post like the rest of ya!

//EDIT2 aparently there's no way to post. Sorry I suppose i need to get past thinking of this as a forum.

Anyway, The opinions i've brought up are clearly not my own, so comments like java being bloated are just reitterations of the info available to me... of course i cannot form an educated opinion b/c i'm obviously uninformed.

To the posts about employment, I'd be more concerned with demand. I do really quite well as an IT/Security consultant, so the job thing doesnt attract me as much as the ability to create things that other people want.

I'm absolutely mindblown by the volume of activity on my post in such a short time. I agree that I will probably learn more languages in the future, but i think like anything, in laying the foundation, you are initially although perhaps not permanently shaping your course for growth... and in some sense i think that probably sticks with you inevitably.

In regard to what I want to do, I think its pretty inevitable that I'd want to develop something web based and/or mobile. From an IT standpoint, things have been going that direction for years. And as far as platform, i'm pretty agnostic. I'm writing this to you from Vista (bleh) but run Ubuntu on my laptop and use VM's to run a bunch of flavors of linux. I even have that Mac OS VM, but it runs like crap. Maybe that's a good allegory for programming languages. I'm versed in many OS's because I have to be, and even run Vista on my desktop so I'm familiar with it, and in this case, how bad it is (lets not get off topic)

About Objective-Basic, i think that has the same quality of C# in that its platform specific, actually more so than C#.

C# seems more intimidating than the other two.

On the Dreamer's side of things> Wordpress, Twitter, Facebook - all huge, if you were going to make the next big one, which would you use? On the Practical side of things> Is Ruby really extensive enough to bother with? I still am not sure what Python is used for. C# and Ruby I've seen working, and I've even rolled out C# sites on servers so they seem more tangible. Can someone nail down python a bit more for me?

//Edit3 So realistically, I think I'd mostly work on web based stuff... albeit hopefully more innovative than FORM->DB->OUTPUT... Does that affect Python as a good option?

+23  A: 

C# , easy to do client (including mobile) or web apps, lots of tools, resources, and pretty much the standard at many places.

Edit to updated question: In regards to web development, C# gives you access to ASP.NET (MVC), better Silverlight support and more. All great foundations for building kick-ass web apps.

Bryan Rowe
+1 - C# will give you a good place to get stuff working pretty quickly and see if you like writing code. One day you really should do the deep background stuff (e.g., go write some C++) but doing some C# outta help you determine if this is for yo.
I couldn't agree more with the C++ comment.
Bryan Rowe
Plus, Visual Studio is a very nice IDE. Yes, there is a startup cost, but if you are "tinkering", you can start with an Express Edition. Plus, after working with the 2010 Beta, it is only going to get better, in terms of IDE experience.
+27  A: 

Your mention wanting to prototype ideas. And do small single user apps. Python seems to me to be the winner. You can do web or desktop apps. Many people use it strictly for prototyping, it interfaces with C so you can talk to hardware pretty easily, and there are libraries for everything you can think of.

Matthew Vines
import antigravity
... for those who aren't familiar. :)
Gotta love a language with jokes built right in
John Pirie
@John Pirie: try "from __future__ import braces".
Bastien Léonard
Ruby can do all of that too - desktop and web apps, interfacing with C, libraries for everything. (For the latter, check out and Ruby and Python are functionally equivalent, and which you pick should really have more to do with which syntax you prefer than anything else.
Sarah Mei
So as I just added to my edit, in really thinking about what it is I'd be interested in doing, which is web based, does Python still make a good choice>?
Matthew Vines
For web-based things, check out Django and CherryPy.
+2  A: 

Well if you just want to get in there and start tinkering with a language and expect good results, then I might suggest Objective-C? With that knowledge, you could start developing your own iPhone apps. Other than learning how to program, you would be able to get sufficient results fast. As time goes by and you become better at it, you could make more advance iPhone applications. If you really wanted to do something for a computer, you could then turn to developing for the Mac OS because it uses the same language environment (Xcode) as developing for the iPhone. Well, hope this helps. I'm developing in this language right now and I've only started learning Objective-C since the beginning of this summer. It's not too hard to learn.

Josh Bradley
He would also have to buy a Mac.
Robert S.
Yeah, that's the only downside. A Mac Mini doesn't cost that much anymore though...expecially if you can find a good second-hand one off of craigslist or ebay that you know works.
Josh Bradley
+7  A: 

All three are good options, but there are differences.

Python and Ruby are easiest to start with, and as you mention Python wins on third-party modules and general support. Python is the big grower in languages at the moment, and definitely a language of the future.

C# is a Microsoft thing, and big in the MS universe, but mildly ignored outside it, so unless you plan to eat and breathe MS I wouldn't bother.

So in summary: Python. No contest.

Lennart Regebro
The "MS universe" is actually a fairly big place and a really good place to look if you want a good-sized pool of jobs to apply for. Doing a search on Monster for all three in the zip code I work in (10019), there are 43 Ruby positions listed, 58 Python positions listed, and 192 C# positions listed.C# is not just a MS thing, either. C# on Mono is quite successful and does not tie you to Microsoft.
That being said, Python is supported on vastly more platforms than C#, and it is much easier to generically "get to the hardware" from Python. C is only a step away, especially with ctypes.
The MS Universe may be big, but then Python universe includes everything except the people who are dogmatically MS. This is usually big corporations or governments. And you don't want to be there.
Lennart Regebro
+2  A: 

While I'm primarily a Ruby on Rails guy nowadays, and a Delphi programmer for Windows applications, I'd have to suggest that you consider C# using Visual Studio 2008, given your requirements. It can do both Windows applications and Web applications, and more than that there are excellent visual designers, which will get you a huge chunk into prototyping even without writing any actual code.

Longer term you may want to look into alternatives if you decide to become serious about writing software, but for what you're asking for Visual Studio 2008 is second to none.

Tim Sullivan
+18  A: 

If you are just starting out programming, it doesn't matter what you learn. You're going to learn the same concepts in any of these languages, and if you eventually become a competent programmer, switching languages should not be a problem for you.

If I were you, I would approach this as learning a way of thinking rather than learning a specific language. The fundamental problems are similar no matter what language you're writing in. None of the languages you list is so different that you wouldn't be able to pick it up easily, knowing one of the others.

If I had to choose one, I would say go with python, simply because it's simple to write, it tries to avoid complicated syntax that might confuse a beginner, and there are a wide variety of available libraries. If you want to do web stuff first, I might say go with Ruby instead, since I happen to like Rails. You can do web stuff just fine in Python, though.

Once you know the basics, though, I would strongly recommend putting down the Python book for a while and picking up a book on data structures and algorithms. If you really want to know how to organize a program and how to build efficient systems, that's what you need to know, not the details of a particular language. After you get the hang of that, pick up a book on software engineering or design. Code Complete and Design Patterns come to mind.

Don't get yourself stuck in a language rut.

It does matter if the person isn't really looking to become a programmer per se. They want something which will do the job they want done. In this case, the person seems to just want a tool to get the job done.
He wants to "build a small OS" or "the next facebook". Neither of those is trivial, nor is he going to do them by learning one language quickly to "get the job done." Do those jobs without a solid grounding in software design and tell me how it goes. It's not the language that matters here. It's whether he can design a software system.
+1 couldn't agree more
+4  A: 

Take a day to experiment with each language. Find a toy problem at Project Euler or Code Kata, and implement a solution in each language.

Writing a hundred lines of code will inform your decision better than reading a thousand opinions on the internet. (-;

I agree with the gist, but I don't think 100 lines of code is enough to formulate an opinion. You need exposure to different types of problems, since each language will lend itself a little differently. If the OP does what you suggest with a *few* toy problems, then it will be a little more realistic - but still not certain.

C#? Am I going to tie myself to Windows? Nope.

Ruby? Well, as we all know, ruby is rails and that's already narrowing your possibilities too much.

Python? Well, I am a big fan of the language so I am not going to, you know, tell you how much I like it foaming at the mouth. Out of the three languages you've listed it is a clear winner.

This question should be tagged subjective. It should also be tagged holywar.


learn perl

C# is *not* Windows only. I do not know where everybody keeps pulling this "fact" from, but it is dead wrong. SharpDevelop, MonoDevelop.
+10  A: 

Kevin, people learn multiple languages, and many don't use their first language at all. I don't use my first, second, third, fourth or fifth.

Don't get hung up on choice of language. You won't make a mistake learning Python or C#: both have huge libraries and huge user bases behind them. You can do it all in either. (Can't speak to Ruby, never tried it.) Just dive in -- you can learn two or even three at a time if you want.

John Pirie
+1  A: 

As a working .net developer who uses C#, I can tell you that it appears that the job market is in constant need of C#/.NET Developers.

I can't speak for PHP or Ruby, but with the amount of penetration Microsoft has, the majority of businesses use, and rely on Microsoft products. So, by that rationale, there will typically be more jobs available to you.

If you are looking at just learning programming, and doing things on your own, then I'm not sure as I have no experience with PHP or Ruby.

Jack Marchetti
+1  A: 

Of your list Python seems to be a good option.

It is easy to learn and as you said - very extensible.

And as far as publicity goes - Google, Yahoo, NASA etc use it as part of their application development cycles. It is used in YouTube and BitTorrent. I got that from

In fact the latest thing - Google Wave has Python libraries which are put up at their site


+3  A: 

Call me crazy, but maybe you should learn a little of all three, then focus on the one you like.

If you end up loving C# and only liking Python and Ruby, you can use IronPython and IronRuby in your .NET environment.

Remember, though, that just knowing C# will not really be enough. You'll want to learn the .NET Framework as well.

Robert S.
Amen, to that. The .NET stack is very impressive. The robustness of the Framework has really simplified a lot of coding tasks that would have been monumental (or monumentally expensive) in the Visual Studio 6.0 world.
+2  A: 

Hi Krevin,

I will try to give my subjective 2 cents to your question. I have not yet worked with C# or Ruby yet.

C# seams to be rather interesting stuff, but my personal concern is that it is proprietary Microsoft stuff what I don't like at all. I like my programming languages rather open, since I am developing on Linux. Yes, there is Mono and stuff, but still I feel unconfortable.

Ruby also sounds interesting and new and might have some advantages. But I have no time to check it out and also it is rather new.

Python has its "batteries included". That is a nice thing, and thats the reason I started with it, 5 years ago or so. I stayed with it, because it really is as good as described and better. It is a really dynamic language and I can do with it in one or three lines, what costed me hundreds in C++ before.

Batteries included means, that it has a really good and complete library and further modules are available in the internet. So for nearly all circumstances, you are armed here.

Python is also a good language to learn. It does not carry the heavy burdon of the syntax of an old language (like C#), but has its own rather simple and clear language. You can learn it rather quickly.

Still, inspite of easy learning, it combines the power of object oriented languages (with a rather clear model) and functional programming for the advanced programmer.

I clearly recommend Python!

Addon: You asked, how the professional usage is. Python is used by Google as far as I know and at least in one Massively Online Multiplayer-Game (MMORPG or so, sorry that I don't get this right now) (realtime of course). Also several other companies are using it. So it is definitively widely used.

C# is *not* MS only. Mono is both stable and popular. MonoDevelop is a very robust and stable IDE, as is SharpDevelop (for Windows). You really should kick the tires and get past the uncomfortable phase.
@joseph: I admitted that already. What you think is your thinking -- I have my own thoughts and I guess trying to push me will not help -- actually it never did!
@Juergen - I understand, but that is the thing... No amount of convincing can be done. The only way to know if a language does or does not work for your needs is to actually *try* it. Being against C# because on one hand it is Microsoft and on the other is because it is not Microsoft is pretty much closing any doors to learn something new in that stack.
Ummmm yeah Ruby isn't that new you know ...
@railsninja: Sorry, did not want to hurt anybody, but opinions are subjective you know. My experience is just, that according to available enhancement modules and connectivity (like db-access-layers), Python is still better supported.
Python is at least 10 years older than C#...But I agree with you that python syntax is, to me, more clean than C#
Dave Berk
+4  A: 

If I had to teach someone who has never programmed in his life (but clearly has the potential like you), it's a toss up between Ruby and Python.

Ruby and Python are more or less equivalent in terms of ease of learning.

  1. You'll learn how to program with classes and objects
  2. They support plain old imperative programming constructs such as if, for, etc.
  3. They have great libraries to do the basics.
  4. They have interactive environments where you can type in language constructs into console for immediate execution.

Ruby is not merely Rails, even though Rails is the killer app for Ruby. Python is older and has the support of Google. It ain't going away.

Most of the great programmers I know aren't hung up on a language. They usually know several languages and can see the computer science concepts that every languages tries to express. As you learn, you'll probably learn C, C# and/or Java.

Now if you were really serious, learn Scheme from SICP.

You gave one point, and there is nothing in that point that is exclusive to Ruby and Python that is not available in C#.
And you added three more that can all be done with C#.
Fine: a Google search reveals that C# has a Mono REPL, but can we guarantee that it is equivalent to one for Windows?
+1  A: 

In addition to many of the other reasons to try python, let me just add that some of those bash scripts you have installed on your crontab could be replaced by python scripts when they get too complicated.

David Berger
+1  A: 

Coming from an IT background, you must have done some scripting already. If that's the case, a 'language' like PowerShell may actually be a good way into 'real' software development.

PowerShell is built on the .NET framework, so while you have a shell-like language to get you started, you also have access to the full .NET Base Class Library. When you get to know how that works, picking up one of the other, 'real' .NET languages may be easier.

Today (or at least within the next six monts), the .NET framework also has versions of both ruby and python (called IronRuby and IronPython, respectively). You can also elect to pick up C#, or even, once you get even more advanced, F#.

Although I admit that I am biased, being a C# developer myself, I think that the breadth of languages and tools offered on the .NET platform is truly staggering. If you can live with being tied into Microsoft's platform, that would be my recommendation.

Good luck in any case.

Mark Seemann
I have done scripting for admin type stuff. I even created an actionscript that helped me bust a university student trying to hack a web login to a staff area of the site. Was very basic but did the job.

You want to go from "IT guy" to "systems inventor". I'm not sure one programming language will get you all the way there. A good start would be something you could use often in your current situation.

If you "do Unix" at all, go with python -- or my favorite, Perl-- for useful scripting.

+1  A: 

Python and Ruby are very similar on the surface, and either would make an excellent starting language. Ruby is probably the more extensible of the two, offering the ability to change just about anything at runtime, and for that reason I'd recommend... Python.

As a starter language, Python is nearly perfect. There are few surprises. That library you just loaded didn't change the behavior of the whole language. It is a design goal of the language that there be one, and only one obvious way to do things.

That's not to say it's not powerful. Google Maps is written in Python, reddit is (now) written in Python. There are great libraries and frameworks available for web apps, desktop apps, games, scientific computing and a host of other tasks.

C# is fairly similar to Java, and has much more of an enterprise flavor. It's not what you'd want for making something quick and fun.

+1  A: 


Easy to learn (It comes from a language that was designed to teach people to program)
Clean syntax
Cross platform (C# has mono I know, but that can be a pain)
Can be used for large programs and one-off scripts easily

Adam Cushner

I was just going to comment but had more to say than they would allow in a comment.

"but I would bet that many also still use their first language quite a bit" <- not necessarily.

To be honest, my first language was QBASIC back in high school as a freshman. I don't use it because I hate it, but it got me going on other languages which I now like C# and use it quite frequently. I am however finding myself going back to '*basic' (VB.NET to be precise).

I personally prefer C# because I can code very quickly and produce results in a reasonable amount of time. If I were using a native language, say, C++, I would have to do a lot more work which would take more time to do stuff. (Not really that bad if you get paid by the hour :P).

But heh, I'm still young. I've been programming on and off for about 4-6 years now.


+1  A: 

lisp anyone?

Joauqin Phoenix?
+1  A: 

Great question. I'm like you - Technology Geek/Admin/*nix guy and amateur developer. I picked up the O'Reilly Head First Labs C# book and it's been a great resource. Easy to read and you get some early successes by going through the exercises and programs. On top of that if you download MS VS Express 2008 it's a great (and free) IDE to work with.

My paying gig is a IT sales guy in the staffing/recruiting world. I will say that in our market (Greenville, SC) the hottest jobs are in this order -

  • C# (especially if it includes some SharePoint work)
  • Java
  • All other languages (including PHP, Ruby, etc.)

C# is not going anywhere and in fact is growing rapidly here. The .NET framework is pretty solid and I have a number of clients that are converting from Delphi, VB, Classic ASP, Java, etc to C# and .NET. To be honest, I can't find enough C# developers. Oh, they pay better than most other positions here too.

HTH some!



One thing I would like to put into the mix is javascript - especially if you're planning to any serious interactive style web programming. I find it dovetails quite nicely with c# as well (syntax very similar), so makes it easy switching back and forwards between server environment and client development. The real trick to getting started, whichever language you choose, is to find yourself a real-world project and jump right into it. If you're technically minded you will find answers to the problems you encounter one way or the other (which might include this website or others).

Steve Mc

I would write a small web application, first in C# (web forms... mvc is probably too much with url routing, etc.), then in Python (django). After that, choose for yourself.

Shawn Simon

i think, you should try ruby ... it's extremely extensive ... and it is very radical and through that, extremely sexy ...ruby is short, concise and powerful ... the real downside about ruby is its incredible slowness ...

still, simply using all language features, you will get an extremely good feeling for practices and approaches, that are simply natural in Ruby, such as first class and high order functions, that require a lot more coding and overhead in other languages ... once you understand these techniques/strategies and get a feeling for them, you can use them in other languages too ...

this book is an excellent starting point:

the closest "serious" language to Ruby is Objective-C, if you care ... but it's slightly more verbose ...

about ruby's speed: it is really quite slow ... mostly, because even operations are method calls: 1+5 is 1.+(5) actually, if you will ... you can overwrite that + at runtime if you want to ... with that said, you maybe get an idea, why it is slow ... yet, JRuby, which runs on JVM is a little faster, although it needs quite some time for booting ...

another brilliant language i would recommend is haXe ... a high level language, that can be compiled/translated to PHP, JS, NekoVM bytecode, AVM1 and AVM2 bytecode (flash player 6-8 and 9-10) and C++ ... JVM may be next backend ... it's a very rich, powerful language, but very strict, in contrast to ruby ...

Thanks. Is Ruby really very slow? That seems like a big issue. Also I'm not sure my wife would aprove of me doing anything sexy with computers!
Ruby 1.8.x is slower than python or C#. Ruby 1.9 is equivalent to python. One thing that hasn't been mentioned here is Jruby. It's ruby on the jvm, all ruby 1.8.x code runs on it, it's much faster than 1.8, AND you can use all java libraries seamlessly from jruby. there is also jython which is the same thing for python.The truth is that python and ruby are essentially the same in terms of features, the difference is aesthetic. You should try both and use whichever one fits your brain better.
+1  A: 

Personally, I'm a huge fan of C# (& VB.Net).

That said, I think for your situation you're likely to do better learning python. It's much more likely to also be applicable for scripting purposes in your day to day IT/system administration tasks.

Joel Coehoorn
+2  A: 

Everyone is just going to tell you things about the languages they use and like, which is odd because whatever you choose ultimately won'y impact on them in anyway. Pick a simple yet nontrivial idea and learn how to write that program in all three languages and see which one(s) you enjoy using.

I'm sure there are plenty of getting started tutorials for Python and C# out there, I have just never looked, but Google is obviously your friend there. If you want to have a look at ruby then is tons of stuff to get you started. Why's poignant guide to ruby is good for ruby and if you look at rails simply hit up the Rails Guides.

I'm not necessarily advocating Ruby, it's just what I know best, pick the one you enjoy, or pick a combination, but learning them and writing some code is the only realy way to know.

+1  A: 

Language doesn't mean poo, so don't get hung up on which one you learn first. Once you learn how to program, you should be able to pick up another language if you need to. Just pick one for now, and commit to it. Find an itch, and scratch it with whatever one you pick.

Your goal should be to learn the fundamental programming concepts, and not get bogged down on language syntax. I'd recommend picking up a book like Learn To Program to help learn those fundamentals.

To address some of your concerns about Ruby: It is not mostly hyped because of Rails. Ruby is a killer language that is fun to program in. It may have picked up more popularity due to Rails, but it is quite useful outside of web development. It is neither shallow or unsupported and is plenty extensible, so have no fear if this is the route you go.

Folks who say "Ruby is Rails" don't know what they are talking about. Rails is just a great example of what Ruby can do.

Python is a very similar language to Ruby, and I don't think you will go wrong either way. You can use them for your day to day sys admin tasks, as well as build killer web applications with them.

Whichever language you pick, it won't be the wrong choice.

Aaron Hinni
+1  A: 

Groovy ... you would love it ...

I just discarded C#,php, ruby ... just look at the python a little bit .. but i am already in love with Groovy ... as simple as ruby but with the power of java :)

JRuby, Jython...etc. The fact that groovy is written on the JVM is no longer an advantage...MANY languages now have JVM implementations. :)
is it as easy as groovy when they need to use another java libs ?
+1  A: 

I was a systems administrator for 15 years and I started writing code after one year. Why? Automation, monitoring, and generally filling in holes where one-size-fit-all vendor software fails. There are a great deal of interesting challenges a systems administrator can deal with from the code-side. What starts with simple perl/python/shell scrips can eventually grow into a serious application requiring serious code.

I would imagine during your daily work, you have to do the same things many times. Automate it. And after you make that work, make it work well. After you make it work well, make it recover nicely should there be some sort of failure. After that, seek out the next challenge.

As for your platform, use what works best in your environment. Languages really don't matter too much as long as is does what you need it to do and there is some consensus with your peers.

+1  A: 

If you want to get really productive, are not concerned about others maintaing your and have an open mind I'd suggest trying Smalltalk! Once you have learnt Smalltalk you will be see where many of the features of other languages like Ruby, Objective-C and the like have come from and will be well placed to learn other languages

The basics of Smalltalk are easily learnt and the language well suited to scripting across platforms. Smalltalk is different from other languages (I won't explain why here) but as you haven't done much programming this is a distinct advantage!

There are several dialects of Smalltalk (VisualWorks, Squeak, Dolphin etc ) - and this can be confusing to a beginner so to begin with I'd suggest looking at Cincoms VisualWorks (not that VisualWorks is 'better' than say, Squeak - I use both incidentally - but you have to start somewhere...)

Cincom have a great set of tutorials and have a daily 2min to 3min podcast showing off aspects of the environment.

Once you have got the rudiments of Smalltalk under your belt I'd suggest having a look at at Seaside which is a framework for developing Web applications in a similar but quite different vein to Rails- very VERY interesting - give it a try.

Good luck!

You want to try James Foster's tutorials instead of the hpi one.
Stephan Eggermont

C# can be used everywhere (Web , Desktop , Mobile , Games ...) and have the .net framework to back it up (it has almost everything you can ever need) it has almost the same syntax as C/C++ and java

i can't talke about python because i ve never tried it but ruby on rails syntax looks strange to me !(just my opinion)

anyway go for C# you won't regret it