What is different with Python ?

Mike Meyer mwm at mired.org
Sun Jun 12 04:24:17 EDT 2005


John Machin <sjmachin at lexicon.net> writes:
> Roy Smith wrote:
>> "Philippe C. Martin" <philippe at philippecmartin.com> wrote:
>>>Yet, many issues that a future software engineer should know are
>>>mostly hidden by Python (ex: memory management) and that could be
>>>detrimental.
>> I know I'm going out on a limb by asking this, but why do you think
>> future software engineers should know about memory management?
> Perhaps we have a terminology problem here i.e. different meanings of
> "software engineer". Philippe started talking about "CS" courses,
> whereas you may be referring to people who have done an "IT" course or
> achieved a certification in the use of app development tool X.

While I agree with John - software engineers should know something
about memory managment - I sort of agree with Roy as well, in that,
like Peter, I think memory management is something that doesn't need
to be taught immediately. A modern programming environment should take
care of the details, but a software engineer will be cognizant of the
details, and know enough to know when they have to worry about it and
when they can safely ignore it.

>> I used to worry about register allocation.  Today, I don't even know
>> how many registers any machine I work on has.  I used to worry about
>> word size, and byte order.  I used to worry about whether stacks
>> grew up or down and addressing modes and floating point formats.
>> Sure, somebody's got to worry about those things, but most people
>> who write software can be blissfully ignorant (or, at best, dimly
>> aware) of these issues because somebody else (compiler writer,
>> hardware designer, operating system writer, etc) has already done
>> the worrying.
> You would hope they'd done more than worry about it. However sometimes
> one's fondest hopes are dashed. You must have noticed the anguish in
> the timbot's posts that mention Windows 95 memory management.

I think most of those things are indeed things that your average
software engineer can ignore 90+% of the time. What makes someone a
software engineer is that they know about those details, and know how
they will affect the code they are writing - and hence when they have
to worry about those details.

Oddly enough, I find similar comments apply to a lot of the data
structures I learned in school. I recently applied for a job that had
a series of essay questions in the application. They had a series of
problems with requests for solutions, and my immediate reaction to
each was to reach for off-the-shelf software to solve the
problem. While they wanted - and I provided - a discussion of data
structures and big-O running time for various operations, all the
things they wanted to do were essentially solved problems, and there
was debugged and tuned code available to deal with things - and it's
much faster to not write software if you can to solve the problem.

For instance, one problem was "You have two files that have lists of 1
billion names in them. Print out a list of the names that only occur
in one of the files."

That's a one-line shell script: "comm -12 <(sort file_one) <(sort file_two)"

I gave them that answer. I also gave them a pseudo-code solution, but
frankly, in real life, I'd install the shell script and get on with
things. If I were hiring someone, I'd hire the person who gave me the
shell script. Rather than spending hours/days debugging a program to
solve the problem, I get a solution in minutes. If it runs into
problems, *then* it's time to start hand coding the solution.

>> There used to be a time when you had to worry about how many tracks
>> to allocate when you created a disk file.  When's the last time you
>> worried about that?
> Seeing you asked: early 1970s, on an IBM 1800. But much more recently
> it certainly helped if one were slightly more than dimly aware of the
> difference between a FAT filesystem and an NTFS filesystem :-)

For me it was the late 1970s, on an IBM 3081. But I was worried about
disk sector sizes well into the 1990s. Since then I've worked on
systems that didn't have a file system as such; it had a database of
databases, and you queried the former to find the latter.

        <mike
-- 
Mike Meyer <mwm at mired.org>			http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.



More information about the Python-list mailing list