views:

1331

answers:

11

Currently, Im only proficient in php, and would like to learn something new. The only thing I can think of, is the obvious C# and .NET, and I just wanted to know if there are any alternatives.

Can it be done in Python?

+1  A: 

Java is also a brilliant language to learn, and the Java Virtual Machine won't just restrict your applications to windows, though that is your target platform.

C++ is also an option, but as you mentioned, C# is one of your best bets.

I think you'll get on with C# fairly well, if you use Visual Studio you will be aided heavily by the intellisense. I was shot web with PHP when I first started out, now I use C#, and the learning curve isn't so steep.

Shahin
Java looks like crap on a windows box. Also, no .exe you just click doesn't make it the most user friendly experience for your average windows user.
Will
+8  A: 

If you are someone who is more comfortable in C based languages I would recommend C#

Writting your application using C# or any .Net languages also means that they can be ported to Mono if the need ever comes up.

The language is quite simple to learn but as for many environments, the framework takes a life time to master.

I haven't used Python, but an interesting thing to keep in mind, is that you have IronPython which works on .Net

Further more, in .Net you could build part of your app using IronPython for the Business Layer and C#, VB.Net or any other language for the interface and vice versa.

Alexandre Brisebois
I've never used or tried anything outside of php, so I dont know if I will be comfortable. Any thoughts on python?
Yegor
Keep in mind, Yegor, that both php and C# are descendants of the original C, so you'll at least know a little about it.
John Fiala
Even if it is just syntax. Then again, believe it or not, all those semi-colons can be confusing to new programmers, so I suppose you probably do have a leg-up after all.
Matthew Scharley
Once you start using those semi-colons, they become a habit, and they start appearing everywhere...
Alexandre Brisebois
+6  A: 

I think it depends on what your goals are. If it's to

A) maximize your Windows career potential, B) if it's to just get an application up and running on Windows C) or if it's to learn something that will help teach you the internals of the Windows API

For A, I'd pick Java, C#, or anything .NET.

For B, I'd say Java or Python. Neither will help you learn much specific about how Windows works, but at least there's more of a job market for Java. But Python is probably the quickest way to get something up and running.

For C, I'd say straight up C++ or C, and pick up a copy of Programming Windows by Petzold.

Steve
I learned windows programming using C and the Petzold book. It was very tedious. Later I used MFC in C++ which was slightly easier. Much later I used things like VB and Delphi which were a very different API, but easier. If you have to know internals, I recommend this path.
Mnebuerquo
+1  A: 

C# is certainly the most well-known, having been born with the .NET framework. You've also got VB.NET, along with some of the newer ports of languages for the DLR, such as IronPython, IronRuby, Managed JScript, Phalanger (PHP for .NET), etc. Also, Microsoft Research has F#, an OCaml-like language for native, .NET, functional programming.

The options are growing, so you'll need to figure out your domain. If you already program in Python, Ruby, etc., then you may want to stick with that language, though you'll still have to wait a little longer as the DLR is still evolving and those languages are evolving with it.

If you want to focus on general language programming, C# and VB.NET are excellent.

If you work in a math and science domain or want to learn something new, F# looks like a real up-and-comer that could really find more prominence.

Ryan Riley
+1  A: 
Bill the Lizard
+3  A: 

C#, and here is why. You are going to be jumping from PHP into the non-FOSS world of Microsoft. The entire feel of development will change. You are going to be on a steep initial learning curve. Pick the path of least resistance.

Most examples you will find on the internet for any given feature of .Net will be in C#. There are a number of really good .Net books "written" in C#. Online communities, like StackOverflow, are filled with C# developers. C# is a known factor. It is in wide usage. If there are bugs you probably won't be the first one finding them. They will already be well known and probably documented on numerous web sites and blogs. With other languages (except VB) this will not be the case.

If I were you, I would first learn .Net the easiest way possible, then I would pick up some of the fringe languages if you so desire. I think the easiest way is probably going to be C#.

Good luck!

Jason Jackson
+1  A: 

Delphi appears to be picking up steam again, possibly because Delphi apps don't require the .NET framework. I would recommend C#, though.

MusiGenesis
+3  A: 

"Can it be done in Python?" Yes. People write mountains of windows programs in Python.

Is it as easy as in C# .Net? Probably not. Especially not for a n00b. After all, Microsoft has a reason for making their tools work well with their operating system. They provide a fair amount of n00b guidance in their (expensive) tools.

In Python, you don't have one vendor. You have many. What kind of applications will you be building? For web, you have to pick a framework. For the desktop, you have to pick a framework. The frameworks are different, and are biased toward Linux and away from Windows.

S.Lott
+1  A: 

I'd suggest any .NET based language but if you wanted to try one first, C# would probably be good from what you already know.

Learning other languages based on .NET are pretty easy since they're all using the same libraries, just different syntax.

Paul Mendoza
+2  A: 

I'd recommend C#. You can download Visual C# Express Edition for free at http://www.microsoft.com/express/vcsharp/ -- likewise, SQL Server Express Edition, which goes hand-in-hand with .Net, is also free at http://www.microsoft.com/express/sql/default.aspx and it has some nice GUI tools that go along with it.

Python's a nice tool to have/use for quick and dirty stuff, and it's real simple to learn. For Python tools, I recommend ActiveState's distributions for a lightweight, interactive distribution: www.activestate.com

A: 

This won't be popular. But if you are doing this as a learning exercise, start with 'C'. There are two steep learning curves. Pointers (and 'c'), and the Win32 API.

BUT, you will get a much better appreciation of what is going on at the base level, and this will stand you in good stead for any other windows development language or framework.

'C' to the Win32 API has the added advantage of producing really fast and, if done well, robust code.

The classic Petzold book would be a good place to start...

David L Morris