Mark Schoonover wrote:
I was aware of this situation a couple of years ago while talking to a
friend of mine that's a software engineer. When I found out he didn't take C
in college, I've asked him why not. He told me that he didn't need to. Most
of the world was either VB - which he worked every day - or Visual C.
There's no reason to learn C, or assembly these days, but the folks that
work on embedded systems might have something to say!
We certainly do have something to say! :)
First, I'd like to say (not necessarily responding to you, but to the
thread in general) that IMEO, there is a difference between a programmer
and a software engineer. A programmer is someone that just cranks out
code under the direction of the engineers. They do not make decisions
about architecture, languages used, core design decisions, write
documentation, etc. These are tasks for the software engineer who is
supposed to have an intimate knowledge of the systems to be developed
for, down to the hardware level (to some extent, but the better the
understanding of the hardware, the better the end design should be).
Software engineers *need* to know a variety of languages. They need to
know assembly and for embedded systems, they need to know it well. For
embedded systems, they need to have an excellent knowledge of the
hardware architecture and not just assembly for the platform the system
uses.
I've said many times that I think engineers should learn assembly first,
followed by higher level languages (I learned BASIC and assembly first,
and after assembly all others came fairly easy). Java should be learned
as a first step to learning OO concepts, followed by C++. C should be
learned as possibly the first high-level language after assembly. VB,
C#, and other M$-centric languages should only be learned if a student
wants to go down that career path.
My path started with hardware at a very young age. I had an excellent
grasp of CPUs, memory, and logic by the time I moved to learning
programming. As I became old enough to actually work for a living, and
attend college for a degree, I found (and my employers found) that my
programming abilities were enhanced because of my knowledge of hardware
and assembly.
I have found in more recent years that "Software Engineers" coming out
of school really don't know squat as compared to the "old school"
engineers who learned Pascal, assembly, etc. the way CS programs used to
be taught. As a result the quality of software systems these days
suffers greatly resulting in "Beta" software that can really only be
considered early alpha.
Don't even get me started on "engineers" that don't know C/C++ and only
have experience with C#, VB, and related M$ programming (and even worse,
the ones that only learned M$ programming in school).
PGA
--
Paul G. Allen, BSIT/SE
Owner, Sr. Engineer
Random Logic Consulting Services
www.randomlogic.com
--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg