samm Posted September 18, 2008 Posted September 18, 2008 (edited) Arg, I knew somebody would pull me up for that, so I edited it to say 'aspects of OO'.Hehe, sorry, couldn't keep my trap shut I can totally see the uncomfortable feeling that someone has when having to use C when he grew up with a slicker language. So I don't think there's a "best" language to start, and see your arguments pro Python. Actually, the people in computer science at the university I was before thought it a good idea of first using some form of Pascal and later Eiffel, which are just too far from usage nowadays afaik. Edited September 18, 2008 by samm Citizen of a country with a racist, hypocritical majority
Humodour Posted September 20, 2008 Posted September 20, 2008 (edited) So I installed GHC on my Ubuntu box today and fiddled in Haskell a bit. I figured I'd post this, since it's rather poignant and basically underlines some of the main reasons I like Python and Haskell so much. Read it, and then tell me you think people should be taught C first. Quicksort Haskell quickSort :: Ord a => [a] -> [a] quickSort [] = [] quickSort (pivot:xs) = quickSort lesser ++ equal ++ quickSort greater where (lesser, equal, greater) = part pivot xs ([], [pivot], []) part :: Ord a => a -> [a] -> ([a],[a],[a]) -> ([a],[a],[a]) part _ [] (le, eq, gr) = (le, eq, gr) part pivot (y:ys) (le, eq, gr) | y > pivot = part pivot ys (le, eq, y:gr) | y < pivot = part pivot ys (y:le, eq, gr) | otherwise = part pivot ys (le, y:eq, gr) Python def quickSort(data): if data == []: return [] else: pivot = data[0] lesser, equal, greater = part(data[1:], [], [pivot], []) return quickSort(lesser) + equal + quickSort(greater) def part(data, le, eq, gr): while data != []: head = data[0] data = data[1:] if head < eq[0]: le = [head] + le elif head > eq[0]: gr = [head] + gr else: eq = [head] + eq return (le, eq, gr) Gotta love list comprehensions and recursion. I was so happy when I was first learning Python and discovered that it had borrowed them from Haskell (along with a few other cool things, including indentation-based syntax instead of parentheses). It evens removes the outdated C/Java conflation of reduce/fold, filter and map into for loops (although still offers for loops for obvious reasons). Unfortunately, Python doesn't support tail call optimisation for recursion as Haskell does, so it's more efficient to use a procedural partition method instead of a recursive one for Python (lack of tail optimisation is a completely arbitrary decision). Contrariwise, however, likely because of this, in Python a quicksort without partition is faster! Quicksorts without partition are at the bottom in Haskell and Python as a reference. You'll need to dig through this obnoxiously complex C quicksort to get there: C (similarly long in C++) taken from http://en.wikipedia.org/wiki/Quicksort //Quicksort the array void quicksort(int* array, int left, int right) { if(left >= right) return; int index = partition(array, left, right); quicksort(array, left, index - 1); quicksort(array, index + 1, right); } //Partition the array into two halves and return the //index about which the array is partitioned int partition(int* array, int left, int right) { //Makes the leftmost element a good pivot, //specifically the median of medians findMedianOfMedians(array, left, right); int pivotIndex = left, pivotValue = array[pivotIndex], index = left, i; swap(&array[pivotIndex], &array[right]); for(i = left; i < right; i++) { if(array[i] < pivotValue) { swap(&array[i], &array[index]); index += 1; } } swap(&array[right], &array[index]); return index; } //Computes the median of each group of 5 elements and stores //it as the first element of the group. Recursively does this //till there is only one group and hence only one Median int findMedianOfMedians(int* array, int left, int right) { if(left == right) return array[left]; int i, shift = 1; while(shift <= (right - left)) { for(i = left; i <= right; i+=shift*5) { int endIndex = (i + shift*5 - 1 < right) ? i + shift*5 - 1 : right; int medianIndex = findMedianIndex(array, i, endIndex, shift); swap(&array[i], &array[medianIndex]); } shift *= 5; } return array[left]; } //Find the index of the Median of the elements //of array that occur at every "shift" positions. int findMedianIndex(int* array, int left, int right, int shift) { int i, groups = (right - left)/shift + 1, k = left + groups/2*shift; for(i = left; i <= k; i+= shift) { int minIndex = i, minValue = array[minIndex], j; for(j = i; j <= right; j+=shift) if(array[j] < minValue) { minIndex = j; minValue = array[minIndex]; } swap(&array[i], &array[minIndex]); } return k; } //Swap two integers void swap(int* a, int* b) { int temp; temp = *a; *a = *b; *b = temp; } Quicksorts without partition in Python and Haskell below. Unlike Python, Haskell does provide at least a nominal speed increase for partitioning, as one expects. That is: quicksort in Python isn't much slower than C or anything, but paradoxically, the expectedly 'slower' version of quicksort is faster in Python (by quite a bit). Haskell quickSort :: Ord a => [a] -> [a] quickSort [] = [] quickSort (pivot:xs) = quickSort lesser ++ [pivot] ++ quickSort greater where lesser = [y | y <- xs, y < pivot] greater = [y | y <- xs, y >= pivot] Python def quickSort(data): if data == []: return [] else: pivot = data[0] lesser = quickSort([x for x in data[1:] if x < pivot]) greater = quickSort([x for x in data[1:] if x >= pivot]) return lesser + [pivot] + greater Python's Haskell heritage is fairly obvious here. Here's a great explanation of why Haskell is such a good language Haskell. Oh well, enough proselytising for today. I think my verbosity has probably turned 95% of readers off anyway. Edited September 20, 2008 by Krezack
Nightshape Posted September 20, 2008 Posted September 20, 2008 So Python's symantics are quicker... But that's the point of Python. The jump from Python to C++ seems larger to me in terms of learning curve than C++ to Python. Languages are tools, Python is a useful tool, but I would say that C++ is a MUCH MORE useful tool for games. I came up with Crate 3.0 technology. Crate 4.0 - we shall just have to wait and see.Down and out on the Solomani RimNow the Spinward Marches don't look so GRIM!
Nightshape Posted September 20, 2008 Posted September 20, 2008 When I think of strict code discipline, I think of what the programmer must commit, not what the language forces them to. Language symantics aside, a tool is a tool, and C++ is a better tool than Python for writing games, any other language you spend time learning on that journey is by all means cool, but at the end of the day, you wanna work in games as a programmer, you're going to come across C++ more often than you will Python, heck folks at work use Python mostly for data formatting, and or collection, because at the end of the day, python is very good at working with string data. You obviously like Python Krezack... I can only speak from my own experience, and the tools I tend to use to achieve an end are usually of the C family, I wouldn't not use Python for some task that would benefit from the use of it, but likewise I wouldn't use it because of the language symantics for a job it wouldn't do as well as another language. I came up with Crate 3.0 technology. Crate 4.0 - we shall just have to wait and see.Down and out on the Solomani RimNow the Spinward Marches don't look so GRIM!
Humodour Posted September 20, 2008 Posted September 20, 2008 (edited) Yeah, I like Python. It's a fairly commonly used languages and its reputation as a scripting languages is beginning to surpass even Perl as more programmers discover it. It's used in many computer games for scripting, but that's superfluous in terms of Python's utility. I'm fairly dubious of your claim that you don't need it (almost every programmer does something where it would be wiser to use a scripting language, game design aside). Anyway, we are talking of what constitutes a good starting language, not what is the gaming industry standard. Even then, I've never been one for the "it's the industry standard" argument - kills innovation. Would you have us all learning COBOL for scientific and business computing? The jump from Python to C++ seems larger to me in terms of learning curve than C++ to Python. Au contraire, the jump from nothing to C++ is a (significantly) larger learning curve than the jump from nothing to Python to C++. From a didactic perspective, this is a grave problem due to information overload. You understand, yes? I won't try and extol the virtues of Python to you but do note that you do not only expound C++ but simultaneously seek to deride other languages. This later part I take issue with. I wouldn't use it because of the language symantics So you'd find it difficult to adapt to a semantic style that is in many ways identical, with the main deviation being extraneous elements are removed for clarity and ease of understanding? Python syntax is almost identical to pseudcode, which was designed for portability and ease of understanding. I'm fairly certain you understand pseudocode. When I think of strict code discipline, I think of what the programmer must commit, not what the language forces them to. Please stop back pedaling. Besides what you just said making C/C++ poor choices from a pedagogical perspective, you were initially trying to claim Python being unsafely typed and C/C++ were safely typed, as a reason for C being a better starting language than Python: Is it a good first language? NO! Learn something which is type safe and requires strictness in its structure. C/C++ is the main language for games, I regret not having learnt it sooner. That's absolutely not correct. Python is strongly typed (as well as duck typed). Python programmes are typically small, clear and concise by virtue of the language. I honestly don't understand how you could imply that Python's structure isn't type safe or strict unless you'd never used it before. C/C++ however, are NOT strongly typed - they are in no way type safe, and their structure often leads to much confusion. When we did our C course in second year the majority of it involved going over all the reasons C is dangerous to code in (since we'd just come from Java and Haskell): pitfalls, traps, poor style, etc. Of course, this is also what makes it so powerful (and we learnt it alongside ASM for good measure), but I am strongly critical of the claim that C/C++ are good starting languages. Edited September 20, 2008 by Krezack
Nightshape Posted September 20, 2008 Posted September 20, 2008 Yeah, I like Python. It's a fairly commonly used languages and its reputation as a scripting languages is beginning to surpass even Perl as more programmers discover it. It's used in many computer games for scripting, but that's superfluous in terms of Python's utility. I'm fairly dubious of your claim that you don't need it (almost every programmer does something where it would be wiser to use a scripting language, game design aside). You say alot of this like I'm in some way ignorant... Python is very useful, it's powerful, but it's certainly not a one stop shop for scripting, there are other options, like PERL, and Lua, just for example. Far as I am concerned you can get going with a scripting language in a few hours, and be producing results within the same day... So I'm kinda confused at your angle here, Python isn't the only option. Anyway, we are talking of what constitutes a good starting language, not what is the gaming industry standard. Even then, I've never been one for the "it's the industry standard" argument - kills innovation. Would you have us all learning COBOL for scientific and business computing? Are we? Perhaps I should have bothered to read old posts but I was merely reacting to what I was reading from my perspective, don't assume I've spent hours thinking about Python, because I haven't. In regards to teaching languages well, its a matter of safely teaching in nice protected steps, or alternatively throw 'em in the deepend, I'm a throw 'em in the deep end kinda person, if they can't swim sod 'em and let 'em sink. The reason to use C++ isn't because of an industry standard, it's the reason to learn it, but not the reason it's used, surely you realise that the performance of games is very important, C/C++/Asm are the best options when it comes to games. Working on a console isn't like working on a PC, there are some shared processes, but the hardware is different and I don't see the use of Python when you're at that kinda level, let me in at the bare metal, or as close to it as you can, otherwise you're sort of trusting. Python is good for working with data before you get to the stage of writing "real" code. Me personally, I'd have everyone learning C++, or C#... Let them learn to swim. Au contraire, the jump from nothing to C++ is a (significantly) larger learning curve than the jump from nothing to Python to C++. From a didactic perspective, this is a grave problem due to information overload. You understand, yes? I won't try and extol the virtues of Python to you but do note that you do not only expound C++ but simultaneously seek to deride other languages. This later part I take issue with. Interesting point, but I don't agree in that obviously if someone learnt Python as a first language they would be used to Pythons way of doing things, and that would be the first experience they have of code. Alternatively, I don't think jumping straight into C++ is a bad thing at all, sure you're likely to make alot of mistakes, but the time spent learning isn't going to be as harsh as the time spent relearning how and why C++ does X different to Python. Ya get me? The fact is that people can successfully learn any language when they spend time working at it. You can go from A to B, regardless, all I'm really trying to say is that C++ sits at the top of the mountain in regards to how useful the tool is. So you'd find it difficult to adapt to a semantic style that is in many ways identical, with the main deviation being extraneous elements are removed for clarity and ease of understanding? Python syntax is almost identical to pseudcode, which was designed for portability and ease of understanding. I'm fairly certain you understand pseudocode. I read and understand real code faster than pseduo code, I've never had much of a reason to bother with pseduo code. The only practical application I have found of pseduo code is when one is commenting asm. Python isn't a high performance language, for me that instantly prooves it's not useful for most requirements, the fact it's language symantics may or may not have similarities isn't a reason to use a language. Please stop back pedaling. Besides what you just said making C/C++ poor choices from a pedagogical perspective, you were initially trying to claim Python being unsafely typed and C/C++ were safely typed, as a reason for C being a better starting language than Python: I made a mistake in my statement and I knew what I actually meant, it was a while ago when I made that post, so I don't actually recall what I was thinking, I think I was mixed up and on about PERL. So let me make it clear where I stand at this moment, Python isn't a bad language, it is useful, I don't think it's a useful first language to learn as I believe that an unstrict language eventually leads to highly disciplined programmers over time, if you've never experienced a harsh environment and made mistakes you're less likely to realise I believe. Am I clearer, it's hard to form coherant responses to anything when you've a woman whining in your ear... I came up with Crate 3.0 technology. Crate 4.0 - we shall just have to wait and see.Down and out on the Solomani RimNow the Spinward Marches don't look so GRIM!
Humodour Posted September 21, 2008 Posted September 21, 2008 Yeah, I think we are clear: you love C++ so much that you think it is a good starting language regardless of (or because of) the information overload, steep learning curve, and unsafe typing. Well, I guess there's nothing wrong with holding those views if you're just a game designer, but I personally hope you stay away from being a CS instructor because such an elitist 'weeding out' approach does computer science and its students a disservice. http://mcsp.wartburg.edu/zelle/python/python-first.html
Nightshape Posted September 23, 2008 Posted September 23, 2008 Yeah, I think we are clear: you love C++ so much that you think it is a good starting language regardless of (or because of) the information overload, steep learning curve, and unsafe typing. Well, I guess there's nothing wrong with holding those views if you're just a game designer, but I personally hope you stay away from being a CS instructor because such an elitist 'weeding out' approach does computer science and its students a disservice. http://mcsp.wartburg.edu/zelle/python/python-first.html I have a low opinion of acedemia... And I'm not a game designer... That said I only apply my opinion to those who want to program games, computer science is a different kettle of fish, there is common ground, and easier languages mean more students stay for the long term. CS is about concepts, and simple languages make those concepts easier to get across. Python has its uses, I'd never make out any different. Infact a friend of mine today was telling me about a problem which I stated was perfect for python and I proceeded to bash him with the word python until he accepted he should maybe consider using Python. The problem was simple, he needed to make alot of calls to the command line in order to compile something wii related. I'm happy to say there are two schools of thought, but regardless of your Python ability it won't mean diddley squat when you're sat down for an interview at a developer and they start grilling you on how, and why C++ does something, and general differences between compilers etc... Far as I am concerned Python takes freedom away from the coder, and instills a sense of safety caused by the language. C++ is free, and unsafe... Kinda like riding a motorbike opposed to sitting at home watching TV. May I just add that Stackless Python is very cool in its own way. At the end of the day, I like to be close to the metal, the bare metal if I can... I'm not sure that Python is really even aware that the metal exists, heck Java certainly don't. Meh, guess I'm old fashioned. I came up with Crate 3.0 technology. Crate 4.0 - we shall just have to wait and see.Down and out on the Solomani RimNow the Spinward Marches don't look so GRIM!
Humodour Posted September 29, 2008 Posted September 29, 2008 Yeah, yeah, fair enough. I probably overreacted a bit in my vehemence. I just really feel that it's wrong to push low-level languages first to teach the 'fundamentals' - I feel it turns people off and you lose sight of the broader picture, the core CS concepts. Likewise I think it's just a fundamentally outdated notion that you should learn C or ASM first to learn good style or something. I would never discourage somebody from learning C or C++ at any time. But I would at the least suggest they learn something like Python simultaneously is all, so that when they get disheartened, or lose sight of why they're typing in all the powerful pointer and memory mumbo jumbo, they know "this isn't what it's all like. it CAN be easy and clear; I know this because it's like that in Python." Python DOES instill a sense of safety. But increasingly people are realising that's not so bad. Increasingly it becomes "why exactly do I need C++'s supposed extra power, anyway?" and sometimes you do, all good. But often not. And especially in mission critical systems, C++ is NOT a language you want to be using. You want something like Python or Haskell DELIBERATELY because it's safe and predictable. Not only that, but it significantly cuts down on debugging time, but more and more errors are caught early and safely, and the style is just so much clearer and more concise. I guess I bring this all up because I don't think a game designer is any different to a normal programmer. He should know just as much CS, definitely, and just as many languages. I concede that C++ should be a focus, but that's all I concede.
rainwarrior Posted September 30, 2008 Posted September 30, 2008 Krezack, your cut and paste C++ quicksort is way longer than it should be. The entire "median finding" stuff (more than half the code there) was not present in either your Haskell or Python implementation. (Drop the "findMedianOfMedians" line, and the two functions below the main quicksort.) If you're going to make comparisons like this, at least make them remotely fair. That said, using the leftmost element as a pivot is a terrible implementation for a quicksort. Feed it an already sorted (or even mostly sorted) list and you'll get worst case complexity. This is tangential to the argument about which language is more elegant, or whatever, but it's an important thing to know that this canonical example of Haskell's concinnity is an awful quicksort.
Nightshape Posted September 30, 2008 Posted September 30, 2008 Yeah, yeah, fair enough. I probably overreacted a bit in my vehemence. I just really feel that it's wrong to push low-level languages first to teach the 'fundamentals' - I feel it turns people off and you lose sight of the broader picture, the core CS concepts. Likewise I think it's just a fundamentally outdated notion that you should learn C or ASM first to learn good style or something. I would never discourage somebody from learning C or C++ at any time. But I would at the least suggest they learn something like Python simultaneously is all, so that when they get disheartened, or lose sight of why they're typing in all the powerful pointer and memory mumbo jumbo, they know "this isn't what it's all like. it CAN be easy and clear; I know this because it's like that in Python." Python DOES instill a sense of safety. But increasingly people are realising that's not so bad. Increasingly it becomes "why exactly do I need C++'s supposed extra power, anyway?" and sometimes you do, all good. But often not. And especially in mission critical systems, C++ is NOT a language you want to be using. You want something like Python or Haskell DELIBERATELY because it's safe and predictable. Not only that, but it significantly cuts down on debugging time, but more and more errors are caught early and safely, and the style is just so much clearer and more concise. I guess I bring this all up because I don't think a game designer is any different to a normal programmer. He should know just as much CS, definitely, and just as many languages. I concede that C++ should be a focus, but that's all I concede. Games need performance. C++ has extremely good performance and flexibility. To make cutting edge games you use C++. Anything else, well you can probably find a better tool than C++ in most case, be it C#, Java, or Python. I came up with Crate 3.0 technology. Crate 4.0 - we shall just have to wait and see.Down and out on the Solomani RimNow the Spinward Marches don't look so GRIM!
Humodour Posted October 1, 2008 Posted October 1, 2008 Games need performance. C++ has extremely good performance and flexibility. To make cutting edge games you use C++. Anything else, well you can probably find a better tool than C++ in most case, be it C#, Java, or Python. That's not a reason to teach C++ first; it's a reason to use C++ for game programming.
Nightshape Posted October 2, 2008 Posted October 2, 2008 "Increasingly it becomes "why exactly do I need C++'s supposed extra power, anyway?" and sometimes you do, all good. But often not. And especially in mission critical systems, C++ is NOT a language you want to be using." I was thinking more directly about that line. Python is slow, it's okay if you have something that isn't time critical... For example I used it to procedurally generate some test xml scripts, which I then fed into C++ . Python is painfully easy to use, which is why it may seem attractive, but it comes at a performance penalty that's just... URGH! I could end up loosing sleep over it. Heck a basic for loop doing a couple of thousand iterations take a noticeable length of time to complete. Also, I think its funny how you've just ignored rainwarriors post. I came up with Crate 3.0 technology. Crate 4.0 - we shall just have to wait and see.Down and out on the Solomani RimNow the Spinward Marches don't look so GRIM!
rainwarrior Posted October 3, 2008 Posted October 3, 2008 Well, it was kind of a late reply anyway. The whole comparison was kind of bogus, too. We could start with the fact that both languages can include external libraries. Just because Haskell has list primitives doesn't really make them any more useful than, say, STL templates. This isn't the biggest problem with the comparison though. C++ offers a tremendous ability to adapt the language to your own style. Far beyond C's preprocessor directives (which are quite powerful at transforming the look of the language, see the IOCCC for some silly examples), C++'s classes, templates and operator overloading can radically bend the language to your needs. This is one of C++'s great strengths, and is something that not many languages even come close to. I can't really speak to which language would be best to learn first. Personally, I started with BASIC. The reason I started with BASIC was because I found a really, really good series of books on it (made by Osborne) at my school library, perfectly suited for children. I don't think BASIC is a particularly great language, and it left me with several roadblocks when I finally came to learn C and assembly, but in the long run I don't think it mattered. I learned BASIC because it was what those books taught, and this was the right thing to do for me. If I had tried to learn C from a bad teacher instead of BASIC from a good one, I might have failed and given up. Learning to program is what matters, the starting language is such a small factor, I think, compared to the choice of teacher.
Nightshape Posted October 4, 2008 Posted October 4, 2008 This is perhaps true, the teaching really is important, it may be that I've had the fortune to read some very good C++ books at all levels. As for the customization abilities of C++, it's unreal the extent that it can be taken to, probably the most complex pieces of code, which allowed for some seriously cool voodoo, that I have seen was to do with serialization of classes coupled with some object information bindings much akin to RTTI stuff but faster and cooler. It basically allowed for classes to have their entire information read in from a binary or text file just by writing a few macro's. Some seriously crazy template within template coding... I came up with Crate 3.0 technology. Crate 4.0 - we shall just have to wait and see.Down and out on the Solomani RimNow the Spinward Marches don't look so GRIM!
Llyranor Posted October 7, 2008 Posted October 7, 2008 I posted my goods on Deviantart. (Approved by Fio, so feel free to use it)
Humodour Posted October 8, 2008 Posted October 8, 2008 "Increasingly it becomes "why exactly do I need C++'s supposed extra power, anyway?" and sometimes you do, all good. But often not. And especially in mission critical systems, C++ is NOT a language you want to be using." I was thinking more directly about that line. Python is slow, it's okay if you have something that isn't time critical... For example I used it to procedurally generate some test xml scripts, which I then fed into C++ . Python is painfully easy to use, which is why it may seem attractive, but it comes at a performance penalty that's just... URGH! I could end up loosing sleep over it. Heck a basic for loop doing a couple of thousand iterations take a noticeable length of time to complete. Also, I think its funny how you've just ignored rainwarriors post. Python is not slow for the purposes it is usually used (scripting). And certainly Python's efficiency is not in question for learning a programming language. If you do actually use Python you might be interested in Psyco: http://psyco.sourceforge.net/ Oh, and I 'ignored' his post because it was a valid statement about algorithms which I had no beef with, thanks. I did not feel it was an argument for or against C++ as a starting language, though. rainwarrior re BASIC: Yes, in some ways Python is a spiritual successor to BASIC. But where BASIC fell down in teaching valid style and algorithm design in a lot of ways, Python instead inherits a lot of the core Java and C syntax and style (where useful), so while I wouldn't these days ever recommend something like BASIC (or VB) as a starting language, Python is a different kettle of fish. Having a good teacher can make learning anything like walking on air, though.
Nightshape Posted October 8, 2008 Posted October 8, 2008 Python is a much better starting point than BASIC. I'd say C# is a much better starting point than Python, and if you really want to become a "programmer", particularly in the games industry you may aswell go straight for C++. If you're not focusing on a particular area, and just want to learn programming, sure Python and C# are probably the best options, particularly for generic computer science. My main point is simple, games programming related courses should have a heavy focus on C++, as it will increase the students chances of becoming good games programmers and weed out the weaker students who probably should study computer science. I personally felt somewhat unprepared for my initial interviews before I actually joined the games industry, this wasn't due to any general programming inability, but because I initially lacked certain C++ language knowledge, particularly in the region of the more esoteric features. Pointer arithmatic, and understanding. Initialiser lists and the relation to const, and referances. Const correctness. Bitwise operations and bit logic. Not the sort of thing that i found I commonly used at University, infact it was never covered, and when you start to think about PS3 compilers, and how strict they are, well it all falls into place. I wouldn't say that programming is hard, because I don't think the actual syntax of any programming language is, neither are its features, frankly my experience has basically had more to do with exposure. The act of actually writing good code is a whole other kettle of fish, bad code can be written in any language. So do I personally think that starting out in Python is a waste of time? Yes, I'd take either a C++ or a C# root. That's me, and computer science theory is dull as donuts at times, until you start to use that theory in a practical and pragmatic manner, then it's like a jam or custard donut... I came up with Crate 3.0 technology. Crate 4.0 - we shall just have to wait and see.Down and out on the Solomani RimNow the Spinward Marches don't look so GRIM!
rainwarrior Posted October 8, 2008 Posted October 8, 2008 I'm not advocating BASIC as a good or bad starting point. It was just an example. I don't think starting language is a big factor in the long run.
Humodour Posted October 9, 2008 Posted October 9, 2008 Python is a much better starting point than BASIC. I'd say C# is a much better starting point than Python, and if you really want to become a "programmer", particularly in the games industry you may aswell go straight for C++. If you're not focusing on a particular area, and just want to learn programming, sure Python and C# are probably the best options, particularly for generic computer science. My main point is simple, games programming related courses should have a heavy focus on C++, as it will increase the students chances of becoming good games programmers and weed out the weaker students who probably should study computer science. I personally felt somewhat unprepared for my initial interviews before I actually joined the games industry, this wasn't due to any general programming inability, but because I initially lacked certain C++ language knowledge, particularly in the region of the more esoteric features. Pointer arithmatic, and understanding. Initialiser lists and the relation to const, and referances. Const correctness. Bitwise operations and bit logic. Not the sort of thing that i found I commonly used at University, infact it was never covered, and when you start to think about PS3 compilers, and how strict they are, well it all falls into place. I wouldn't say that programming is hard, because I don't think the actual syntax of any programming language is, neither are its features, frankly my experience has basically had more to do with exposure. The act of actually writing good code is a whole other kettle of fish, bad code can be written in any language. So do I personally think that starting out in Python is a waste of time? Yes, I'd take either a C++ or a C# root. That's me, and computer science theory is dull as donuts at times, until you start to use that theory in a practical and pragmatic manner, then it's like a jam or custard donut... You're just reiterating all your old points that I've lambasted before, but whatever. I will say that advocating C# as a starting language is pretty silly given the context. It ignores all the reasons for choosing Python as a starting language in the first place. You might as well just dive blind in the deep end with C++ instead like you said originally if you're going to do that.
Nightshape Posted October 9, 2008 Posted October 9, 2008 Yup... I'm optermising my perspective... I am repeating myself... *grumbles* I came up with Crate 3.0 technology. Crate 4.0 - we shall just have to wait and see.Down and out on the Solomani RimNow the Spinward Marches don't look so GRIM!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now