Best Starting Language
#1
Posted 09 October 2009 - 02:15 AM
Thanks for the Help!
- Subzidion.
#2
Posted 09 October 2009 - 02:38 AM
If you want to be a general dev, I'd suggest C#. But, if you want to actually become a game dev, you'll have to pick up one of those two, then C++, and circle back to the third over your next years. Then, fit in C, then assembly, time permitting (which it never does!).
#3
Posted 09 October 2009 - 03:00 AM
I think the only downside is that it's all Microsoft, so not really cross platform.
Quote
Is anyone still using assembly?
#4
Posted 09 October 2009 - 04:19 AM
Subzidion said:
Thanks for the Help!
- Subzidion.
I guess it depends on how seriously you want to get into it. If you want to be a professional programmer I think C is a good place to start. It's not as hard as C++ but by learning it forces you to learn a bit more about the underlying architecture of computers in general. Also everything you learn in C you can apply to C++ when you want to get more advanced. C is really a subset of C++. In fact C++ was built on existing C and the first C++ compilers were C pre-processors.
This question gets asked a lot and as you can see there are (at least) two schools of thought.
#5
Posted 09 October 2009 - 04:21 AM
fireside said:
It still comes in handy from time to time for optimizing small pieces of code. I seriously doubt you will find people writing whole applications in it.
#6
Posted 09 October 2009 - 04:25 AM
fireside said:
(='.'=) This is Bunny. Copy and paste bunny into
(")_(") your signature to help him gain world domination.
bunny also wants to fight spam: Click Here Bots!
#7
Posted 09 October 2009 - 05:32 AM
Quote
Well, I think there are a large number of professional programmers that don't know c, or at least aren't using it on their jobs. Even if you add professional "game" programmer it wouldn't totally apply since there are a lot of professional programmers writing AS3/Flash games right now. I think it depends on the college on how you get started. I know the programming college near where I live starts python as the beginning language. Since this is a game site, he was probably referring to game programming so c or c++ is going to be necessary eventually. It might be just as good to start with c. I don't know really. If it's someone young and impatient to start writing games, I think c# would be better to start. The one thing I've noticed about people who start with c is they never use much other than that except c++, which may be good or bad, depending. Notice the question though. "What easy language can I learn..." I think c doesn't really qualify.
Just for myself though, I have to say I got started on easier languages and I still hate c++ and I wouldn't even consider using c. But I know this other guy that used to use c++ all the time and then started using python and he can't stand c++ anymore either. I think it's a personality thing.
#8
Posted 09 October 2009 - 07:48 AM
Knowing some dialect of c-ish is pretty much essential (c, c++, c#, obj-c, activescript, java, ecmascript.. heck - php, angelscript, quakec..). Knowing the base c syntax lets you relatively easily to hop between the languages.
Knowing one language very well is also useful, and c is one that "can" be understood. c# probably lets you play with fun things faster, though. Doesn't mean you don't need to learn the "difficult" stuff eventually, if you're serious about it.
#9
Posted 09 October 2009 - 11:01 AM
i agree with the one who said that this gives you deepest understanding but i would never program again in assembler
#10
Posted 09 October 2009 - 11:29 AM
fireside said:
Yes. But, I meant eventually getting to it, not starting with it.
As for C, it's pretty much like assembly. It's a good, low-level way to see how code works, but this is really for the "master crafstman" coder. You should otherwise start with a language that has an approachable syntax and a big community.
I'm really starting to think C# is the best general-use language going right now for all the reasons fireside stated. Python is likewise great for very similar reasons, but for game devs it's limited circulation is the only hit relative to c#.
#11
Posted 09 October 2009 - 01:00 PM
I have noticed that people that do start with these languages have a very odd perception of what an object is, and I think it's because of the way they are introduced to them. In C/C++ an object is something you use to chunk together related information and that's how it is introduced, whereas in C# or Java it would seem that a class is just something that you have to wrap around your program to get it to work :P
I would recommend Python or C. C may be low level, but it is simple.
#12
Posted 09 October 2009 - 01:03 PM
fireside said:
That may be. On the other hand most people with a CS degree probably have been taught to program in old style compiled languages at some point. If you want to be an all around programmer it should be in your skill set.
Here's where I'm coming from. I worked in as a programmer at a large semi-conductor manufacture for years writing CAD tools. These tools had to be compiled as they were CPU intensive. Some jobs ran for days. We used to hire a lot PhDs mostly for their math and science skills as opposed to their programming skills. On numerous occasions I was called in to help debug code that had memory errors and leaks. These were mostly due to the fact that some of these guys really never really got much experience dealing with memory management. A lot of them had started in Java only had a cursory understanding of C or C++ because they had simply learned it to pass a class. It's a lot harder to find a memory issue later then to code correctly up front. It often took me days to find bugs in programs that were hundreds of thousands so lines long. Most of this effort could have been avoided if the coder had been reasonably careful in the first place. In addition I'm sure there are plenty of jobs where you can't just call in the memory debugger guy to fix your problems.
I don't really want to get in a huge argument over it. I just want to throw my view out there with the rest. If the OP decides C#, Python or Java is the way it isn't going to bother me. Every person and situation is different. I'm just speaking generally from my point of view.
#13
Posted 09 October 2009 - 01:14 PM
Things get tricky when im allocating large amounts of memory (for doing things like radiosity rendering, spew...), but wouldnt it be equally difficult in any language? Waiting for allocation times is the biggest problem, and in straight c it would be the quickest wouldnt it?
#14
Posted 09 October 2009 - 01:45 PM
poita said:
But, you have no problem with includes, function calls, etc? Isn't that overly selective?
I'm sorry, but that's a silly way to argue for a low-level language over C#/Python. The typical "Hello World" example is usually a couple of lines in any language. However, it doesn't serve to illustrate the overall TCO, if you will, of learning a whole language, its available concepts and techniques.
Simplest workable "Hello, World" in Python:
#!/usr/bin/python print "Hello World!";
In C#:
using System;
public class Hello
{
public static void Main()
{
System.Console.WriteLine("Hello, World!");
}
}
in C++:
#include <iostream.h>
int main()
{
cout<<"Hello World"<<endl;
return 0;
}
in C:
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
Looks like Python wins in terms of simplicity!
In any language, much like in C, you'd slowly introduce structures, functions/methods and more complex ideas like algorithms and best-practices on structuring code. In the long-run, there's some stuff in higher languages you don't worry about that you still have to teach in C. Thus, you get more productive faster with C# or Python.
SyntaxError said:
OTOH, you hire the C student who can't conceptualize the larger picture because they spent too much time learning how to get their pointer pointing on point and their buffers to not overrun.
So, while I understand (and totally empathize with) your frustrations, that still doesn't point(er?) to learning C first. What you have in your scenario is a dev trained in a high-level language suddenly being put in front of a language that doesn't do certain things automatically that they are expecting, thus they do it themselves wrong the first time around. The problem is not that they don't know C, but that your hirng process was f'ed up. :blush:
#15
Posted 09 October 2009 - 01:48 PM
Quote
I would disagree with that one. An object really can be anything, and I think forcing someone to think in terms of objects can do a lot to structure a program. I started with python, I think, but I never really got into object oriented programming until I tried java and then it was because I was forced to think that way. There weren't any alternatives. I still think it's the very best way to structure software. I went from sprawling ugly code to nice looking code that was easy to add and change just because I switched to a full OO language. I think it should go the other way so you use that messy stuff as little as possible, or better yet, never. There's also nothing wrong with a static method. It's one more way of identifying and separating code.
#16
Posted 09 October 2009 - 02:22 PM
Quote
I don't think so.
I think it's much easier for someone that's completely new to programming to appreciate the purpose of an include and function call, than it is to understand what a "public class" is, or what "public static void" means.
That being said, ideally you wouldn't need to create a function and include a header file for Hello Word in C/C++, but I think it's still asking much less than C#/Java do. Again, as you said, Python is definitely the simplest here.
Quote
Well this is exactly what I'm getting at. You should slowly introduces structures, methods, and access rights into programs, but C# asks you to use them in Hello World!
Of course, you don't have to understand them then, but I don't think it does any good to be forced to write things that you don't understand as it takes the focus away from trying to learn simple concepts such as what a variable is.
Also, I would argue that the purpose of a first language is to learn fundamental programming concepts, not to get "productive". I think that's an orthogonal issue when considering what language to learn first.
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. To me, starting by teaching objects is like trying to teach linear algebra to people that haven't yet mastered basic arithmetic. I think a lot of programmers forget when suggesting starting languages that non-programmers don't know what a variable is. Objects are actually very high level concepts.
#17
Posted 09 October 2009 - 03:18 PM
poita said:
If OOP is all you want to get into, I prefer inform6. In what other language can you create the object 'chair' of the class 'furniture', and then sit on it? :lol:
#18
Posted 09 October 2009 - 04:34 PM
alphadog said:
I would change this statement slightly. I would say in the long-run there's some stuff in higher languages you don't worry about that you still have to teach in C.........until you again have to worry about it in those higher languages!
C# and Java mask a lot of stuff. You may be more productive up front but then when your program gets more complex you may find you don't understand what's really happening underneath and this leads to unexpected behavior and or performance problems. Even if you program in those "higher languages" having a foundation in C and C++ is going to help you immensely, when you start doing large scale applications.
alphadog said:
However I have never noticed a specific correlation to bad coding and language. In my experience bad coders code poorly in any language and good coders code well in any language.
alphadog said:
That may be, however it's not easy finding a top notch physics PhD that is also a top notch programmer. Of course you can hire two separate people but then you are paying two people. Everything is a compromise.
On the other hand on several occasions we hired a few bad C++ programmers that were actual computer science grads. In those cases I would agree that hiring process may have been f'ed up. These guys had evidently impressed the managers with a lot of OO wankery in their resume. Too bad they didn't also have a better low level foundation. They might have been able to hold their jobs longer.
#19
Posted 09 October 2009 - 05:07 PM
SyntaxError 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.
#20
Posted 09 October 2009 - 05:39 PM
alphadog said:
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. :)
LOL! I typed in a similar (but inverse) analogy but decided not to post it and deleted it. I'll post it now since you posted your swimming thing.
I learned to scuba dive in Monterey's cold water so I had a bulky wet suit and heavy weights to deal with. When I went to the Caribbean and Hawaii, it seemed like I was in easy mode. Later I had the opportunity to view a group of divers trained in warm water try to handle diving in Monterey. Let's just say they weren't having a good time.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users











