Skip to main content
GameDev.net gamedev.net
🔒 Locked

New To Programming: What Language Is Right For Me?

Started by modmiddy Apr 21, 2008 at 3:29 PM 65 replies 11.3k views
Original Post
modmiddy
modmiddy
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: &#106avascript, 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: <a href="http://rptools.net/doku.php?id=maptool:intro">MapTool</a>, <a href="http://www.fantasygrounds.com/screenshots/">Fantasy Grounds</a>, and <a href="http://www.kloogeinc.com/screenshots.html">Klooge.Werks</a>. 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. <!--EDIT--><span class="editedby"><!--/EDIT-->[Edited by - modmiddy on April 21, 2008 5:39:40 PM]<!--EDIT--></span><!--/EDIT-->
jpetrie
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.
EdR
EdR
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).
http://edropple.com
Captain_Thunder
Captain_Thunder
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.
psamty10
psamty10
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.
EdR
EdR
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.
http://edropple.com
blueEbola
blueEbola
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.
modmiddy
modmiddy
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 =)
MJP
MJP
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.
EdR
EdR
Quote:
Original post by NathanRunge
*sigh*

Article on This Site
Waaaay out of date.
http://edropple.com
tufflax
tufflax
Python! In my opinion Python is a breeze compared to C#, even if C# is a breeze compared to C or C++. (I honestly feel physically ill when I encounter C++ code.)

Kylotan
Kylotan
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.
asp_
asp_
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 &#106avascript 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.
DvDmanDT
DvDmanDT
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.
asp_
asp_
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.
Decrius
Decrius
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.

[size="2"]SignatureShuffle: [size="2"]Random signature images on fora
Telastyn
Telastyn
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.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.