Sign in to follow this  
modmiddy

New To Programming: What Language Is Right For Me?

Recommended Posts

Currently I am only familiar with HTML. While I cannot write code for other web languages I have been very successful in "lightly" modifying existing code to suit my needs in the following languages: javascript, PHP, CSS, MYSQL, XML, and Perl. I am a long time Windows user and care little for cross platform languages like Java. I have nothing against Java, just saying that if I learn a Windows only programming language like C# it wont be a negative thing for me. I only plan on developing programs for my personal "non-profit" needs. I am a quick learner, learn quickly from trial and error, and am looking for the path of least resistance. Currently the project I have my eyes set on is creating a Virtual Game Table. Examples include: MapTool, Fantasy Grounds, and Klooge.Werks. Would C# or Python be ideal? I know C# has Visual Studio and is a very popular language. Any suggestions or feedback would be most appreciated. Generally these programs allow players to connect online to play pen and paper based games (Dungeons & Dragons for example) together. They have dice rollers, macro support, various types of text modifications (color, size, font, bold/italics/underline, etc...), drawing tools (simple like MS-Paint), multiple layers for graphics, fog-of-war, etc... The last two links above link to screen shots of the programs if your interested in what one of these programs generally looks like. Any information, links, or feedback would be most appreciated. [Edited by - modmiddy on April 21, 2008 5:39:40 PM]

Share this post


Link to post
Share on other sites
C# and/or Python are good choices. Neither of them -- contrary to what you appear to have been told -- are "Windows" programming languages. C# works just fine on non-Windows systems, provided (of course) you stay away from Windows-specific APIs.

Share this post


Link to post
Share on other sites
Quote:
Original post by jpetrie
C# and/or Python are good choices. Neither of them -- contrary to what you appear to have been told -- are "Windows" programming languages. C# works just fine on non-Windows systems, provided (of course) you stay away from Windows-specific APIs.
This.

Personally I would suggest C#. I find it to be a cleaner language, with more structure than Python. Early on in programming development, structure is important. It also has better, easier libraries for game development (pyGame isn't bad, but the stuff available for C# is just far better).

Share this post


Link to post
Share on other sites
Don't get too hung up on what language to pick. When you first start programming, your goal should be to learn how to think like a programmer, not to learn such and such a language. You're not even going to learn just one language, if you have any interest in improving your skills. I would recommend starting with Python, since it will allow you to focus on the fundamental concepts of programming without getting in your way, but C# is an option as well.

Share this post


Link to post
Share on other sites
I see very few advantages of picking C# over Java for a beginning programmer other than the fact that one of them starts with the letter C.

My vote is for Python or C, as each of them are good examples of the style of programming they support.

Share this post


Link to post
Share on other sites
Quote:
I see very few advantages of picking C# over Java for a beginning programmer other than the fact that one of them starts with the letter C.
The tools are infinitely better for C#. When you get into stuff like GUI programming (which isn't particuarly far into most curricula), the .NET libraries are way better to deal with. But Java would be fine for most purposes.

Quote:
I would recommend starting with Python, since it will allow you to focus on the fundamental concepts of programming without getting in your way
No, it will allow you to focus on the usual kludge of procedural and object-oriented programming, as opposed to a decent language that enforces object oriented behavior.

Quote:
My vote is for Python or C, as each of them are good examples of the style of programming they support.
The style of programming they support is not optimal for a beginning programmer. Procedural programming is great if you're living in the 80's and haven't heard of Smalltalk.

Learn the cleanest method to develop first. That would be a strictly object-oriented approach--Java or C#. Simply because Python can be used to teach does not make it good for that purpose.

Share this post


Link to post
Share on other sites
Quote:
The style of programming they support is not optimal for a beginning programmer. Procedural programming is great if you're living in the 80's and haven't heard of Smalltalk.

Learn the cleanest method to develop first. That would be a strictly object-oriented approach--Java or C#. Simply because Python can be used to teach does not make it good for that purpose.


I've seen some fugly Java and C# code which might as well be procedural (one class with tons of unrelated methods). Java and C# certainly do force programmers to use OO, but that doesn't mean it forces them to use OO correctly. You can't expect a programming beginner to completely grasp the concept of OO. For that reason, Python is just as good a choice as C# for a first language.

I agree with Captain_Thunder. The main thing is being able to develop the logic skillset that is used all the time in different programming problems.

C# may have an edge because of the incredible VS IDE, but you can't go wrong with learning either language.

Share this post


Link to post
Share on other sites
I've actually done quite a bit of research on both books. I've got lessons from novice to professional although I think I'll be able to get by with novice to intermediate since most tasks I have in mind are pretty basic in design. I'm not worried about creating something that will work for all people, just for me and my gaming group.

Personally C# and the Visual Suite available for it are extremely tempting and it is my first choice. If there were plenty of Python recommendations I would go that route instead. Last time I researched both of these languages I had a very different programming project in mind. Before I started learning anything I just wanted to touch base with you guys and make sure C# was still an attractive choice.

I greatly appreciate the feedback offered. Thank you very much =)

Share this post


Link to post
Share on other sites
I don't have any experience with Python so I can't offer a fully-informed opinion, but I can say that I think C# + Visual Studio Express + XNA make for a fantastic (and free!) game-making environment. C# is also very popular these days, which always helps when you're trying to find tutorials or ask people for help.

Share this post


Link to post
Share on other sites
Quote:
Original post by Edward Ropple
Learn the cleanest method to develop first. That would be a strictly object-oriented approach--Java or C#. Simply because Python can be used to teach does not make it good for that purpose.


Not to pick on you, but I completely disagree with the premise that object orientation is necessarily 'cleaner' than procedural programming, and the examples given make this especially true since the object orientation in Java or C# is implemented in terms of procedural programming anyway. I don't agree that enforcing rigid structure as hoops to jump through to get simple stuff done is a good thing for a learner. (Or even an expert.) I think it's more of a safety belt for the average coder.

Share this post


Link to post
Share on other sites
Tbh C# is a language under constant evolution and the only platform to always be up to date seems to be the one under MS Windows. God knows when .net 3.0 support will be finished by the mono team. Even the mono c# compiler only has partial c# 3.0 support. There must be some pretty damn bad communication between Microsoft and the Mono team to be honest. They're always playing catch up.

Since you're familiar with web technologies and javascript you might want to consider flex. It's pretty good with Actionscript 3. Only good for 2D though. Other than that I would go with Python for productivity.

Share this post


Link to post
Share on other sites
AFAIK .NET 3/3.5 are just additional libraries, so as long as you stay away from those, you can use Microsofts C# 3.0 compiler and run your executables on Mono.

OP: I highly recommend C#. C# is what brought back the fun in programming for me.

Share this post


Link to post
Share on other sites
Quote:

AFAIK .NET 3/3.5 are just additional libraries

Yeah I forgot about the binary compatibility thanks to the CLI. However quoting wikipedia: "As with .NET Framework 3.0, version 3.5 uses the CLR of version 2.0. In addition, it installs .NET Framework 2.0 SP1, which adds some methods and properties to the BCL classes in version 2.0 which are required for version 3.5 features such as Language Integrated Query (LINQ).". LINQ afaik is an integrated feature in C# 3.0. I know mono has partial LINQ support. I'm still not sure if it would work for all cases that would on Microsofts platform, even after researching it for 15 minutes. Some of this stuff makes me uneasy as it's very hard to tell what parts of the CLR the actual language elements use which makes it very hard to create portable software. I actually have to do a fair bit of research to know what parts of the language I can and can't use. Admitedly my experience with C# is very limited, maybe 50,000 - 100,000 LOC. I've decided to stay away from it for non-internal software because it feels like it's still evolving and comes with a fairly hefty runtime distribution. Maybe a few years after Windows 7.

Share this post


Link to post
Share on other sites
Quote:
Original post by DvDmanDT
OP: I highly recommend C#. C# is what brought back the fun in programming for me.


C(++) did that for me ;). I love finding the problems and elliminate them. Working low level and on your own responsibility are things I like. I would go with C++ for everything. You might find this stupid / short-sighted, but I like the language, its light-weightness and simpleness once you grasp things. I hate scripting languages or VB for instance.

C brought me the knowledge of how processors work, which is worth more then a good compiler (that handles low-level stuff for you) IMO.

Share this post


Link to post
Share on other sites
Quote:
Original post by Decrius
C(++) did that for me ;). I love finding the problems and elliminate them.


Well if you like fighting problems, C++ is definitely the language for you [grin]

Quote:

Working low level and on your own responsibility are things I like. I would go with C++ for everything. You might find this stupid / short-sighted, but I like the language, its light-weightness and simpleness once you grasp things. I hate scripting languages or VB for instance.


Right, short-sighted...

Quote:

C brought me the knowledge of how processors work, which is worth more then a good compiler (that handles low-level stuff for you) IMO.


Except it's pretty easy to show that you're wrong. A relative beginner (who has good enough algorithm knowledge) will produce faster code with a good optimizer than someone with 'knowledge of how processors work' and no optimizer. And they'll do it in a fraction of the time.


Let the language/compiler/IDE deal with the little problems. That's what will leave you more time to work on the big/interesting/well-paying problems.

Share this post


Link to post
Share on other sites
Quote:
Original post by Telastyn
Right, short-sighted...


Told ya ;)

Quote:
Original post by Telastyn
Except it's pretty easy to show that you're wrong. A relative beginner (who has good enough algorithm knowledge) will produce faster code with a good optimizer than someone with 'knowledge of how processors work' and no optimizer. And they'll do it in a fraction of the time.


Let the language/compiler/IDE deal with the little problems. That's what will leave you more time to work on the big/interesting/well-paying problems.


Agreed. What I actually meant, is that if you have some knowledge of how processors/compilers work, you can work 'with' them. You can program in a way it can be optimized easily or is quicker by default.

Share this post


Link to post
Share on other sites
I advise against C# mostly because I ***HATE*** programs written in C# (and .NET).

For example, compare the older versions of nVidia's FX composer with the present ones rewritten in C#/.NET for a live demonstration of what harm the desastrous duo can do to a program.
The old versions will start up in under a second and run without any problems even on elderly PCs. The 2.0 version has a few additional features (and lacks some others), but takes forever to load (on my computer rather on the order of minutes than seconds) and uses half a gigabyte of RAM (what for, actually?).
Ok, maybe I'm too old-fashioned, RAM is getting cheaper, and such... but those aren't programs I like using.

Seeing that C++ (although it's my preferred language) is not precisely the best things for a beginner, I'd recommend Java.
Although Java has its disadvantages too (like everything in life), it isn't so bad really. It's easy to learn, more or less foolproof, it almost looks like a "real" programming language, and it's very well capable of producing serious programs which run in reasonable environments with (almost) good performance without making you puke.
The standard library coming with Java is... huge... and it's well documented and easy to learn. Java is (almost) cross-platform, and even GUI programming in Swing is almost fun.
Eclipse ("the" Java IDE) is, although a bit heavyweight, quite awesome, too.

Share this post


Link to post
Share on other sites
Quote:
Original post by samoth
I advise against C# mostly because I ***HATE*** programs written in C# (and .NET).

For example, compare the older versions of nVidia's FX composer with the present ones rewritten in C#/.NET for a live demonstration of what harm the desastrous duo can do to a program.
The old versions will start up in under a second and run without any problems even on elderly PCs. The 2.0 version has a few additional features (and lacks some others), but takes forever to load (on my computer rather on the order of minutes than seconds) and uses half a gigabyte of RAM (what for, actually?).
Ok, maybe I'm too old-fashioned, RAM is getting cheaper, and such... but those aren't programs I like using.



Wow you are assuming C# and .NET are bad because of one program written in it has issues. It is not C# and .NET's issue it was the people writing the program that did it. Nothing inherit about C# or .NET would cause the issues you are describing. A poorly written program is a poorly written program in any language.

theTroll

Share this post


Link to post
Share on other sites
Quote:

I advise against C# mostly because I ***HATE*** programs written in C# (and .NET).

That's nice. Unfortunately, this does not constitute an objective opinion on the language because, as TheTroll points out, the quality of the resultant program is not a definitive metric for the language it was written in. There are many factors involved.

These sorts of completely subjective, pure-opinion posts have no place in this kind of thread in this specific forum (For Beginners). Please take them elsewhere.

Share this post


Link to post
Share on other sites
Honestly, I would suggest beginning with C++. C# allows you to be very lazy. I am able to put together applications with obsoletely no idea as to how they are built. When the tab key does more work than you, you know things are easy. (exaggerated of course..)

I think taking on Java or C++ will allow you to get a better grasp on programming in general; as well as object oriented design.

However what it all comes down to is what you personally desire to do in the long run. Once you learn one language it is very easy to adapt to another. But it may be more convientent to start with the language you seek to use.

Want to make games? C++ (with the exception of XNA games which is C#)
Applications? C# (java would work here as well, I just hate apps that currently use the language.. personal opinion)
Cell phone apps? Java
Scripting for things such as level editors? LUA

I dont personally recommend Python..simply because I have never seen it in the industries I have been a part of. Seems like more of a learning language. Could be wrong.

If you end up going with C++ or C# (maybe even java), head over to microsoft's website and pick up an express version of visual studio for the language you desire. It is free and does not require a license to use.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this