[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [K12OSN] a prospective client - k12ltsp and logo



In a previous job, I worked in a group of about 35 SW developers on a
complex piece of medical equipment.  Most of them did not have any clue
about assembly-level programming, and by extension, computer design.
The OO code they wrote was so utterly abysmal that it had to be almost
completely rewritten.  This was only minimally due to inexpert OO
design, and almost entirely due to a fundamental lack of understanding
of how their design/code mapped to the hardware that had to run it.

In my small group of developers, we designed and wrote our subsystem
once, then moved on to other things for the three extra years the
rest of the groups took to get their subsystems to a usable state.
All of us in my group had Computer Engineering degrees, and so had
a good mix of hardware and software training.

It is interesting to note that the subsystem I worked on had a large
hardware control component, which was the reason I and the others
in my group had some hardware background.  Most of the other subsystems
had little or no hardware control component, and so engineers without
any hardware background were assigned to those groups.  The lesson
learned is that ALL software has a hardware component.  The degree
to which this applies depends on how much the efficiency of
the code matters (and it almost always matters more than anticipated).

That being said, I think that assembly programming is not the best
place to start kids.  It should be required as part of a computer
architecture curriculum for any kids that are serious about programming.
I would think (not being an educator) this could be started at the
junior high school level for those kids who show an apptitude.  For
the less interested students, requiring computer architecture classes
and assembly programming before letting them program in logo or basic or
Python or PHP or Perl or even C or whatever would be like requiring kids to
understand the physics of gravity and acceleration and the mathematics
to describe trajectories before letting them play T-ball.

One of the things I remember from my personal education that really
left me well positioned to advance in computer knowledge was a
graphical 6502 simulator that ran on an Apple II (does that date me?).
It showed how data moved around in the CPU from registers to ALU to
memory.  Assembly programming was second nature after watching a few
simple programs operate.

I don't know if anything equivalent is available today for the more
complex processors, but it would be worth searching for if you want
to give students a really solid basis in computer design.

-Don

Jonathan Bartlett wrote:
Interestingly, I love OO programming.  I just think you need to know what
you are doing and why before diving in.

Jon

On Mon, 11 Nov 2002, Julius Szelagiewicz wrote:


Jon,
	you and me, buddy are showing our age ;-). the young 'uns. they
find objectionable any programming that is not oo. I have yet to see a
decent business system written in object oriented approach, where the
shoe-horn wasn't used to make the darned thing work for a business. The
thing is, that business tasks are generally linear and require correct
sequencing. For instance, looking up price before the account is known is
plain wrong and trying to check the inventory without the account may
loose you best customers. You may have objects dealing with every
granular task, but you have to string them into valid sequences to achieve
a good result. This may seem obvious to you, but I have not interviewed
even one young programmer well versed in any oop that actually understood
it. Sometimes I think that people that get oo "religion" forget that life
itself is linear and despite best efforts of Java developers, all attempts
to reverse time have failed. julius

On Mon, 11 Nov 2002, Jonathan Bartlett wrote:


	The real reson why kids, or grownups, should not start with
assembler is not that you can't write good code in it, but that you have
to be pretty darn good programmer with understanding of hardware to be
able to do this.

I've actually found that it is writing in assembler that enables you to have an understanding of the hardware. It is _very_ hard for people to go from programming in the abstract to learning the nuts and bolts of how computer memory operates. However the other direction is not so hard. If you have no basis for programming at all, I think it's much better to start with learning how the computer itself operates, then working up to how good programmers put this into practice. That's the approach I'm working on in my book that I'm writing (well, it's kind of stagnating right now) -

http://www.eskimo.com/~johnnyb/computers/ProgrammingGroundUp/ProgrammingGroundUp.pdf

Jon


	Basic can be an excellent tool to teach, but the expectations are
so much higher now then they were in the dark ages when the computer
memory was measured in KB, not GB that simple languages can be tought only
to adults. Object oriented programming has been around in many forms for
decades, but only in the last 5 years the computing power on the desktop
became good enough to actually teach kids. This is great. Make sure you
teach them problem solving as well, otherwise I'll keep interviewing
"programmers" that can't figure out the solution to even simplest business
problems. julius

On Sun, 10 Nov 2002, Steve Wright wrote:


Steve Langasek wrote:


On Sat, Nov 09, 2002 at 08:55:24AM -0800, Jonathan Bartlett wrote:


Honestly, why not start them in assembler?  Kids will usually learn
anything, it's us who have to start off slowly.


Because most people I know who started out in assembly are terrible programmers... :) Better to teach them basic concepts in programming first, so they have a chance to accomplish something in a higher-level language and can therefore recognize why most things are horrible to code in assembly...


Exactly. Programming these days is more about concepts than raw coding.


Kids need to understand about objects and message-passing.  Logo is a
good introduction to procedures, as it is abundantly clear that little
can be done without using procedures, and it basically forces the
programmer to break down their code into the smallest workable components.

Then, stepping up to Java 'formalizes' this process with the
introduction of classes and clearer (than Logo) formal descriptions of
what goes where.

This is in great contrast to the old days of 'BASIC' where you ended up
with a single monlithic code that was incredibly complex and impossible
to re-use.  These days, there is no place in the professional
programming world for this type of coding style and teaching it to kids
does more to paralyse than it does to enable. (I spend hours warping my
mind around new concepts, after the poisoning it got from basic +
assembler.  8-)



_______________________________________________
K12OSN mailing list
K12OSN redhat com
https://listman.redhat.com/mailman/listinfo/k12osn
For more info see <http://www.k12os.org>




_______________________________________________ K12OSN mailing list K12OSN redhat com https://listman.redhat.com/mailman/listinfo/k12osn For more info see <http://www.k12os.org>



-- Don Christensen Senior Software Development Engineer djc cisco com Cisco Systems, Santa Cruz, CA "It was a new day yesterday, but it's an old day now."





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]