Jump to content


Best Starting Language


34 replies to this topic

#21 fireside

    Senior Member

  • Members
  • PipPipPipPip
  • 1587 posts

Posted 09 October 2009 - 07:32 PM

Quote

I don't disagree that thinking in objects helps, but I think that they are something that should be introduced after you've learned what variables, control structures, and regular function calls are.

You start out writing small programs anyway when you are learning, so many programs can be written with one class. By the time you are ready to branch out, you are usually ready to learn about objects. I guess it would be interesting to hear what someone who had never programmed at all had to say. Personally, I don't think it would be a problem, though. My own thoughts are that once someone has learned to use functions, they are ready to move onto classes. I think it normally gets delayed too long. I think one thing not done well is designing from base classes. I always hear this animal, horses and monkeys, kind of thing, but that's not really a practical example. After I picked up on it, I could look back and appreciate the example, but that kind of defeats the purpose.
Currently using Blender and Unity.

#22 poita

    Senior Member

  • Members
  • PipPipPipPip
  • 322 posts

Posted 10 October 2009 - 03:09 AM

alphadog said:

Totally agreed. C is a very useful for a game developer... eventually. But, deferring those "innards"-type issues to when one has begun to master syntax, algos, best practices and other basic development concepts is a good thing.

I guess, to use a swimming analogy, I think the ideal learning approach is one that lets a student start at the shallow end and work his/her way to the deep end, rather than throing them into the deep, shark and piranha-infested C/assembly end of the language pool. :)

I don't think that's a good analogy. Going from easy to hard (shallow to deep) is not the same as going from high level to low level.

A better analogy would be to compare it to other disciplines with high level and low level concepts. For example, it would more be like learning linear algebra before arithmetic.

Quote

I guess it would be interesting to hear what someone who had never programmed at all had to say. Personally, I don't think it would be a problem, though.

At my university, we are taught Java before anything else. There are many people that come to the uni without knowing any programming so it is their first language.

I can tell you that a lot of people get very confused with objects and classes. The most common misunderstanding is that they don't realize that member variables "belong" to an object. To them, member variables are global variables that any function can access. After all, that's what you experience when first programming in Java as you just have this one big class and when you have one big class, member variables essentially are global variables.

They also don't understand the concept of instantiation because, again, in their first programs they just have one object, and they don't even explicitly create that object so they don't appreciate that it has been created, and they can't see the distinction between an object and a class.

This is not just blind speculation. This is what people go through, and it's all stuff that I constantly have to help people with. Of course, some people will "get it" quite quickly, but the majority struggle to grasp these high level concepts because they have been introduced through necessity rather than utility.

#23 fireside

    Senior Member

  • Members
  • PipPipPipPip
  • 1587 posts

Posted 10 October 2009 - 03:59 AM

Quote

I can tell you that a lot of people get very confused with objects and classes. The most common misunderstanding is that they don't realize that member variables "belong" to an object. To them, member variables are global variables that any function can access. After all, that's what you experience when first programming in Java as you just have this one big class and when you have one big class, member variables essentially are global variables.

Well, hard to argue with experience. The one thing for the argument is that the school chose to teach java first, so apparently it is working out for a majority of people or they would probably change it. Although schools can be a little strange about things like that. Like most things, the important thing is to keep at it and ask a lot of questions. As this discussion proves, there really isn't a right way to do it. If you are really determined you will probably be successful no matter which language you start.
Currently using Blender and Unity.

#24 Reedbeta

    DevMaster Staff

  • Administrators
  • 5307 posts
  • LocationBellevue, WA

Posted 10 October 2009 - 04:02 AM

FWIW, my alma mater switched from teaching Java first to teaching Python instead during the last couple years. I haven't heard about how the change has been working out for the students, though.
reedbeta.com - developer blog, OpenGL demos, and other projects

#25 Mihail121

    Senior Member

  • Members
  • PipPipPipPip
  • 1059 posts

Posted 10 October 2009 - 09:06 AM

C# I would pick, especially after the introduction of LINQ. The language (platform) is extremely powerful and, yes, present in the game development. Python, well, I'm not a big fan of scripting, but I do use s-lang for my goals. I do acknowledge the power of Python.

#26 alphadog

    DevMaster Staff

  • Moderators
  • 1716 posts

Posted 10 October 2009 - 12:10 PM

poita said:

A better analogy would be to compare it to other disciplines with high level and low level concepts. For example, it would more be like learning linear algebra before arithmetic.

Of course, I will argue now that you are wrong! :D

There is a direct and strong dependency and ordering between the two mathematics fields.

However, you can learn, use and be very productive with a high-level language without ever knowing any assembler. In computing languages, abstraction is the distinction between high and low, and abstraction is an effort at simplification of computation.

poita said:

To them, member variables are global variables that any function can access

Don't get me started on how horrible most schools are with comp sci. Most of them focus on teaching a language first, concepts later, rather than the other way around.

In those schools, I'm not even sure how fresh students would know what a "global" variable is or if it is more "natural" to think of them that way. One would (should?) have to introduce scoping pretty early anyways.

And, honestly, I've taught in university in a couple of depts, and there will always be a sizable number of intro kids that won't get it no matter which method you employ. Those kids should be discarded when considering the proper structure of a curriculum.

The debate rages on. :(

Even in teaching milieu, you'll find papers and "teaching languages" by comp sci educators that argue either position.

This could obviously go on forever. Loved to see the differing viewpoints, but I'm out! :surrender
Hyperbole is, like, the absolute best, most wonderful thing ever! However, you'd be an idiot to not think dogmatism is always bad.

#27 Hertta

    Member

  • Members
  • PipPip
  • 81 posts

Posted 17 October 2009 - 02:03 PM

How is C#/Java "next generation" language from C++? :P

As far as I know, C# with XNA or Direct X should be pretty full-featured game development platform.

Only if C# was truly platform independent. :(

#28 imerso

    Senior Member

  • Members
  • PipPipPipPip
  • 431 posts
  • LocationBrasil

Posted 17 October 2009 - 07:59 PM

I started my programming life with a TK-83 using BASIC and very soon Assembly Z80. I used to program in ASM for quite some time on Sinclair, TRS-80, Apple, MSX, Amiga and PC, before migrating to C and finally to C++.

Although tecnically speaking C++ is my language of choice, these days I'm using mostly C#, and I can assure you all that it is a very nice language not only for beginners but for seasoned programmers as well... performance is pretty good, and you have all the needed power for almost anything you can think of.

And C# is NOT just a XNA related thing, it can be used for software-rendering, opengl, direct3d, you can wreak the shit off from it.

I still do some C++ coding but only when I want something really independent of any external dependencies, but I am pretty much satisfied with C# for most of the newer projects.

#29 StudioFortress

    New Member

  • Members
  • PipPip
  • 11 posts

Posted 20 October 2009 - 12:10 PM

poita said:

I can tell you that a lot of people get very confused with objects and classes. The most common misunderstanding is that they don't realize that member variables "belong" to an object. To them, member variables are global variables that any function can access. After all, that's what you experience when first programming in Java as you just have this one big class and when you have one big class, member variables essentially are global variables.

They also don't understand the concept of instantiation because, again, in their first programs they just have one object, and they don't even explicitly create that object so they don't appreciate that it has been created, and they can't see the distinction between an object and a class.
At my university they taught Java in the first year and very few people had these issues because the course was very object-oriented focused, more so then Java focused. This is partly because of the learning IDE we used called BlueJ.

On the other hand practically no one knew how to produce a stand-alone Java app that ran outside of BlueJ, or even that you could write/compile/run Java code separately from it. My point is you always get people who pick up misconceptions on most university courses.

I'd personally recommend C# because IMHO learning an object-oriented language as your first language helps you to learn better oo design principles and because with XNA you should be able to start knocking stuff up in very little time (which is a great moral boost if your new to programming).

#30 SamuraiCrow

    Senior Member

  • Members
  • PipPipPipPip
  • 459 posts

Posted 20 October 2009 - 07:15 PM

Reedbeta said:

FWIW, my alma mater switched from teaching Java first to teaching Python instead during the last couple years. I haven't heard about how the change has been working out for the students, though.

My alma mater switched from using Python, then Java, then C++ to just using C++. I SHUDDER to think of what that is doing to the minds of our new students. I just hope they have had some programming in high-school to prepare them for the difficult chores they will face in college.

#31 alphadog

    DevMaster Staff

  • Moderators
  • 1716 posts

Posted 20 October 2009 - 08:20 PM

That may not be all bad.

As long as they are getting a good grip on the thought process, design and critical thinking skills. But, likelier than not, the inability to nail down a curriculum is a sign to deeper issues.

In some ways, I wish they could teach in pseudocode. After that, it's mostly syntax and semantics anyways. And, at the end of the day, most teachers (incorrectly) rely on executable code as proof of programming mastery, so focus on "thinking" is easily ignored.
Hyperbole is, like, the absolute best, most wonderful thing ever! However, you'd be an idiot to not think dogmatism is always bad.

#32 SamuraiCrow

    Senior Member

  • Members
  • PipPipPipPip
  • 459 posts

Posted 20 October 2009 - 08:30 PM

The problem is that programming needs to be learned at about age 13 if it's going to be mastered by the end of a 4-year university degree. 4 years is definitely not enough for this profession.

#33 Hoody

    New Member

  • Members
  • Pip
  • 1 posts

Posted 18 December 2009 - 08:58 PM

There probably isn't any "Best" starting language really, it comes down to personal choice. The games dev degree course i have recently become a member of starts with a piece of software called ceebot to teach you the basics of how variable/functions ect work then after a couple of month's we have moved onto C#. Later in the course we will be moving onto C++.

#34 rouncer

    Senior Member

  • Members
  • PipPipPipPip
  • 2722 posts

Posted 19 December 2009 - 01:04 AM

Its gotta be basic. did u know basic programs are professional? as long as they work noone cares what made it. basics become a huge thing just as much as c.
you used to be able to fit a game on a disk, then you used to be able to fit a game on a cd, then you used to be able to fit a game on a dvd, now you can barely fit one on your harddrive.

#35 jonemere

    New Member

  • Members
  • Pip
  • 3 posts

Posted 09 January 2010 - 11:22 AM

Hi,
I think C and C++ would be the best language to start as all the basics are covered here and after knowing this you will find other languages easy to learn and understand.I don't know about python as Still yet I have not gone through that.





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users