bzar
A Commando
^ Please, use quotes. Half the time I don't know what or who you're referring to as you leap from one issue to the next. Also please use less and/or parentheseis sentences. Currently I can't make out where your non-parenthesis sentences end half the time. Your posts read like Yahtzee speaks in "No punctuation", or like you have one helluva sugar rush .
Asm has its advantages in certain situations, like heavy optimization and using processor specific stuff. On the other hand, it makes your programs very hard to port to another instruction set. Asm is also good to learn for the sake of basic understanding of how computer programs work. All these considered, it's still nowhere near a priority for most programmers, unless you're in a specific field that requires it. It's all a matter of perspective.
There are three points of view I'd like to add to your comments about C's superior attributes in performance. Readability, development speed and difficulty.
In my opinion, after the absolute requirements of the program, such as running full speed on target hardware, have been met the most important property of code is readability. Those OO concepts make the code easier read, because the programmer has a richer set of concepts at his disposal to describe his program. The reader doesn't have to find out that the programmer has used "my yet another object implementation with quirky properties", but can rely on stuff happening the same way. This results in less code that is more readable because there's fewer concepts the reader has to learn from it.
Development speed is in my opinion mainly important for two reasons: motivation and getting stuff done. Motivation is the key word here for new programmers. If it takes too long to get anything visible or something to try out, motivation drops because you may feel like you're doing a lot but not accomplishing much. After you've done a few applications this becomes less and less of a problem, because you know excatly where you are in terms of getting something to try out. Getting stuff done refers to those gazillions of unfinished projects, that have been left to the "I'll get on that later" limbo. If you get the first usable version of your program out in six days instead of six weeks, you are a lot more probable to get something made that people actually benefit from. A programmer's mind- well mine at least -is fickle and easily turns to a more interesting project. If you get the first, may it be efficient or not, version of your program out before you switch interests, you have actually accomplished something instead of creating "yet another great start for a project". Higher level languages let you accomplish this by letting you describe your program in fewer terms and using pre-prepared patterns found efficient in that very context.
Difficulty, in this case mostly in terms of entry barrier is in my experience the main thing turning novice programmers off. For example, compare the C/SDL and python/pygame implementations of drawing an image to the screen. Now count the number of concepts required to understand the code. Now divide those concepts into two groups: language-related and application-related and compare the size of those groups. It's easier to make things in higher level, because you can concentrate on your application instead of the stuff a lot of more skilled coders have already done a million plus one times.
I'm not refuting your points here. These are parallel points of view, not conflictiong ones. The priority order depends on who you're asking, but in my opinion concentrating mainly on one aspect like performance is not constructive.
Asm has its advantages in certain situations, like heavy optimization and using processor specific stuff. On the other hand, it makes your programs very hard to port to another instruction set. Asm is also good to learn for the sake of basic understanding of how computer programs work. All these considered, it's still nowhere near a priority for most programmers, unless you're in a specific field that requires it. It's all a matter of perspective.
There are three points of view I'd like to add to your comments about C's superior attributes in performance. Readability, development speed and difficulty.
In my opinion, after the absolute requirements of the program, such as running full speed on target hardware, have been met the most important property of code is readability. Those OO concepts make the code easier read, because the programmer has a richer set of concepts at his disposal to describe his program. The reader doesn't have to find out that the programmer has used "my yet another object implementation with quirky properties", but can rely on stuff happening the same way. This results in less code that is more readable because there's fewer concepts the reader has to learn from it.
Development speed is in my opinion mainly important for two reasons: motivation and getting stuff done. Motivation is the key word here for new programmers. If it takes too long to get anything visible or something to try out, motivation drops because you may feel like you're doing a lot but not accomplishing much. After you've done a few applications this becomes less and less of a problem, because you know excatly where you are in terms of getting something to try out. Getting stuff done refers to those gazillions of unfinished projects, that have been left to the "I'll get on that later" limbo. If you get the first usable version of your program out in six days instead of six weeks, you are a lot more probable to get something made that people actually benefit from. A programmer's mind- well mine at least -is fickle and easily turns to a more interesting project. If you get the first, may it be efficient or not, version of your program out before you switch interests, you have actually accomplished something instead of creating "yet another great start for a project". Higher level languages let you accomplish this by letting you describe your program in fewer terms and using pre-prepared patterns found efficient in that very context.
Difficulty, in this case mostly in terms of entry barrier is in my experience the main thing turning novice programmers off. For example, compare the C/SDL and python/pygame implementations of drawing an image to the screen. Now count the number of concepts required to understand the code. Now divide those concepts into two groups: language-related and application-related and compare the size of those groups. It's easier to make things in higher level, because you can concentrate on your application instead of the stuff a lot of more skilled coders have already done a million plus one times.
I'm not refuting your points here. These are parallel points of view, not conflictiong ones. The priority order depends on who you're asking, but in my opinion concentrating mainly on one aspect like performance is not constructive.