Over time, it seems a great deal of complexity has crept into programming languages. These days, we have OOP and languages that are huge, such as Python or Java. It is nice to have all this power, especially at low cost. But there is a specific downside.
Where does the beginner fit into the picture?
Microsoft's initial success was in a programing boom because it provided Basic. I originally learned Fortran on and IBM360 with punch cards. At the time, languages tended to be rather primitive, but fun to learn and empowering to use.
Nowadays, you get 1000 pages of tutorial as an introduction to a language. And if you can sort out what you want to do, you are heavily immersed in nuance and detail. This isn't the stuff that appeals to beginners; it is for puzzle masters.
No wonder there is a strong contingent that claims it is simpler or better to learn assembly language. But I really suspect that we have move ahead very quickly due to the ambitions of programmers and left much of history behind. Without understanding something about how it all evolved, it is really difficult for newcomers to enter into the field.
So, I suspect it isn't that the art of programming is going away so much as new entrants are daunted by substantial complexity.
It would seem that we need to reconsider how we introduce programming to novices with a good overview rather than claim our current preferences are best.
Ironically, there is a certain appeal of PBasic that SPIN may never achieve, just because it does things rather simply. After all, there are far more beginners than experts.
Heater:
I see nothing wrong with the HLLs in and of them selfs. There is no reason that the same speed of development could not be applied to these, if every one fallowed the rules that are nearly automatic in assembly. The difficulty is that most do not.
Most people tend to become complacent in there programming practices with HLLs. If every one kept tract of things correctly we would not have products that are considered usable quality that have significant memory leaks, and/or can have buffer overruns.
The "art of programming" is gradually being replaced by the "science of programming". This is a good thing.
As more people realize:
... more closely related to how you would go about solving a problem. ... not really the coding, it's more of the selection of what needs to be done where.
otherwise stated as: user requirements, functional requirements, impementation requirements, and requirements based testing for each; then the "magic" is replaced by science.
In any case, somebody has to write and maintain the compilers and the code writers.
I only argue in favor of Assembly for large projects, where using assembly SPEEDS UP development.
I don't understand this statement. While assembler execution can be expected to be 10x faster than a high level language in many cases, develeopment in assembler generally takes 10x LONGER in calendar time than a high level language. The exception is where a extremely proficient assembler does the whole job solo. It is usually cost prohibitive to hire so many "gurus", and very risky since they are hard to replace.
Do you mean using assembly in time critical compenents of large projects, in conjucntion with high level language?
I honestly believe the definition of a computer programmer should be reserved for Assembly Language Developers only.
I jump at the chance to purchase modern books written about assembly language in hopes that I can someday write pure assembly language software.
So please all you old school machine code gurus, please write more books, articles, essays, and examples so we can all see the light. AND put those resources in an easy to access place.
I'm not old enough to be called old-school but I do love asm :-)
I was posting to a blog about asm coding but so many people advised me
I was leading newbie uC people astray when they should be concentrating on C
that I just gave the blog up when the first good excuse appeared :-( http://justasm.blogspot.com/
I'm writing a book on the WinAVR C compiler now and if that goes well I might
do one on asm for the AVR and maybe something for the prop when time permits.
I don't agree that only asm coders are real programmers. It does make me feel
good that you would say it though..LoL
The most important thing is not what language you use but whether or not
you can come up with good ideas for programs in the first place. The real
prizes go to those that come up with original ideas. Being the best programmer
in the world means little if you can't come up with something clever to do with
the skill.
The "art of programming" is gradually being replaced by the "science of programming". This is a good thing.
As more people realize:
otherwise stated as: user requirements, functional requirements, implementation requirements, and requirements based testing for each; then the "magic" is replaced by science.
In any case, somebody has to write and maintain the compilers and the code writers.
Well said Prof_braino.
Humbly stated, and not to be inflammatory, but a large number of today's programmers are rather under educated in making the correct decisions based on the quoted requirements. They rather rely on their taught and learned experience and attempt to make a single product do things it wasn't designed to do. Example: A peer of mine, in another "shop" tried for a very long time to "force" SQL to do advanced file / email operations. It's not in SQL's bag of tricks beyond simple operations of both. By combining programming environments I was able to solve his problem (and get the same functionality for my office).
As in other areas of endeavor, a craftsman knows his/her tools and materials, what they're good for, what their limitations are, how to get the most from them and, occasionally, using them with care and deep understanding in ways they were never intended to be used.
As in other areas of endeavor, a craftsman knows his/her tools and materials, what they're good for, what their limitations are, how to get the most from them and, occasionally, using them with care and deep understanding in ways they were never intended to be used.
Comments
Where does the beginner fit into the picture?
Microsoft's initial success was in a programing boom because it provided Basic. I originally learned Fortran on and IBM360 with punch cards. At the time, languages tended to be rather primitive, but fun to learn and empowering to use.
Nowadays, you get 1000 pages of tutorial as an introduction to a language. And if you can sort out what you want to do, you are heavily immersed in nuance and detail. This isn't the stuff that appeals to beginners; it is for puzzle masters.
No wonder there is a strong contingent that claims it is simpler or better to learn assembly language. But I really suspect that we have move ahead very quickly due to the ambitions of programmers and left much of history behind. Without understanding something about how it all evolved, it is really difficult for newcomers to enter into the field.
So, I suspect it isn't that the art of programming is going away so much as new entrants are daunted by substantial complexity.
It would seem that we need to reconsider how we introduce programming to novices with a good overview rather than claim our current preferences are best.
Ironically, there is a certain appeal of PBasic that SPIN may never achieve, just because it does things rather simply. After all, there are far more beginners than experts.
I see nothing wrong with the HLLs in and of them selfs. There is no reason that the same speed of development could not be applied to these, if every one fallowed the rules that are nearly automatic in assembly. The difficulty is that most do not.
Most people tend to become complacent in there programming practices with HLLs. If every one kept tract of things correctly we would not have products that are considered usable quality that have significant memory leaks, and/or can have buffer overruns.
As more people realize: otherwise stated as: user requirements, functional requirements, impementation requirements, and requirements based testing for each; then the "magic" is replaced by science.
In any case, somebody has to write and maintain the compilers and the code writers.
I don't understand this statement. While assembler execution can be expected to be 10x faster than a high level language in many cases, develeopment in assembler generally takes 10x LONGER in calendar time than a high level language. The exception is where a extremely proficient assembler does the whole job solo. It is usually cost prohibitive to hire so many "gurus", and very risky since they are hard to replace.
Do you mean using assembly in time critical compenents of large projects, in conjucntion with high level language?
I'm not old enough to be called old-school but I do love asm :-)
I was posting to a blog about asm coding but so many people advised me
I was leading newbie uC people astray when they should be concentrating on C
that I just gave the blog up when the first good excuse appeared :-(
http://justasm.blogspot.com/
I'm writing a book on the WinAVR C compiler now and if that goes well I might
do one on asm for the AVR and maybe something for the prop when time permits.
I don't agree that only asm coders are real programmers. It does make me feel
good that you would say it though..LoL
The most important thing is not what language you use but whether or not
you can come up with good ideas for programs in the first place. The real
prizes go to those that come up with original ideas. Being the best programmer
in the world means little if you can't come up with something clever to do with
the skill.
If you want a good x86 asm book look here.
http://www.amazon.com/Assembly-Language-Step---Step-Programming/dp/0470497025/ref=sr_1_1?s=books&ie=UTF8&qid=1306456259&sr=1-1
If you want to be indispensable to an employer then come up with ideas that
save time/money and they will love you forever.
LoL.. Come on now localroger, C is not that bad. :-)
Please read my thread: 'The merits of assembly language'.
Well said Prof_braino.
Humbly stated, and not to be inflammatory, but a large number of today's programmers are rather under educated in making the correct decisions based on the quoted requirements. They rather rely on their taught and learned experience and attempt to make a single product do things it wasn't designed to do. Example: A peer of mine, in another "shop" tried for a very long time to "force" SQL to do advanced file / email operations. It's not in SQL's bag of tricks beyond simple operations of both. By combining programming environments I was able to solve his problem (and get the same functionality for my office).
KK
IE: The Art of Programming
KK