New Python implementation

Elliott Roper nospam at yrl.co.uk
Thu Feb 18 17:47:44 EST 2021


Avi and Dennis--

Two thoughtful replies to a deep and interesting question. You have prodded me
to poke my head over the wall to offer a real world point of view.

In the early days before Modula II, I was contracting to a company, quite
large and respected, that had just chucked out Ratfor and adopted Pascal as
their main development tool on VAX-VMS. With long hindsight it was a not
insignificant factor in their going bust.

I was happily developing some of the best code I have ever written using Macro
on a J-11 PDP 11/73, so I was an innocent bystander, with my own OS, with
'borrowed' XDT and CRC table look-up software, courtesy of Dave Cutler and Stu
Wecker respectively. It was a front end for the main project, supporting 1024
terminals feeding 200 transactions a second into the VAX over raw ethernet on
a DEQNA. So I sure learned how to do linked lists, and do them quickly.

The main team was sharing a VAX-750. Watching them trying to use a teaching
language to do real world work was not a joy to behold.

You have both hit on a real-world problem. Script Kiddies and Stack Exchange
<grin>

A comp sci course must use a real-world language to send confident
practitioners into the real world.

Python is an excellent choice in that regard.

Dennis' point about it being too good is valid. If it were my course (and
there is no chance of that) I'd do an extra credit module where they have to
mine and critique the cPython source etc. for lists and comprehensions and
itertools and all their uncles and aunts. After all c is the nearest they will
get to the metal.

I know this has to work. Two or three of the guys on that project were John
Lion's co-authors of the Red Book on Unix internals. They were awesome! (I
told you this was very long hindsight didn't I?)

On 18 Feb 2021 at 17:26:11 GMT, ""Avi Gross"" <avigross at verizon.net> wrote:

> Dennis made the interesting comment "... Python has too much built in ..."
> 
> I understand his point. At the same time, I wonder what most people using
> computers today, or in the future, need. Given serious amounts of computer
> power, what many people may want is higher-level ways to get things done
> without worrying how they are done. Python, like many such languages, has a
> very basic core that is augmented by what could be libraries, packages,
> modules and so on but have been chosen to be built-in to one distribution or
> another.
> 
> Some people and organizations use some things so commonly, they want python
> to start up automatically loading say numpy and pandas and other such
> things. They may not care if the programmer knows how to make a linked list
> or binary tree data structure. Many such details are encapsulated within
> objects built and tested already. 
> 
> I have seen subjects taught at various levels and python might qualify too.
> I took a Physics course that required Calculus and used it to derive
> formulas and other things. Others took one that sort of threw equations at
> you without much explanation. I have even seen a course called Physics for
> Poets. But at least the poets taking it  knew science existed and perhaps to
> take it seriously when others who had studied it better shared their
> results, even if they have no interest in the methods.
> 
> We routinely have people learn how to use Word Processors or Spreadsheets
> with no clue on how to build such a thing or anything about the Object
> models used within or even knowing there is such a thing. Do they need to
> know how to use the embedded methods to extend things with Visual Basic or
> Javascript? They like getting closer to a WYSIWYG interface that handles
> most of their usual needs and perhaps farm out harder things to experts when
> needed.
> 
> So what if you teach some aspects of python that are needed all over, like
> how to make things conditional or in a loop, but not how to make every
> possible data structure. What if you deliberately do not teach functional
> aspects of the language at first or ever? For some people that is enough to
> enable them to then use additional instructions on how to find prepared and
> tested chunks to use, even if not always optimally or efficiently. For those
> who really want to be programmers, that still may actually be enough if
> their task is to work using the tools we have developed, not in making new
> tools from scratch. Quite a bit of programming today consists of reading
> manual pages and cobbling together chunks that together do the job.
> 
> But obviously I would choose the classes where I understood more. Many here
> would. But where does it end? Do most of us know how compilers or
> interpreters get built or do we just work on top of existing implementations
> others make available? Can you build an operating system from Scratch or
> make microchips to run them on?
> 
> If the goal is Computer USE literacy, I think python has more than enough if
> you include the modules that make hard things easy.
> 
> Just a thought. Admittedly it is hard these days to give a homework
> assignment when the student can find a trivial way to get the result and not
> do the hard work.
> 
> 
> -----Original Message-----
> From: Python-list <python-list-bounces+avigross=verizon.net at python.org> On
> Behalf Of Dennis Lee Bieber
> Sent: Thursday, February 18, 2021 12:45 AM
> To: python-list at python.org
> Subject: Re: New Python implementation
> 
> On Tue, 16 Feb 2021 11:03:33 +0000, Alan Gauld via Python-list
> <python-list at python.org> declaimed the following:
> 
>> On 16/02/2021 07:35, Christian Gollwitzer wrote:
>>>  Am 16.02.21 um 06:36 schrieb dn:
>>>>  Pascal's value as a teaching language was that it embodied many 
>>>>  aspects of structured programming, and like Python, consisted of a 
>>>>  limited range of items which could be learned very quickly
>>>  
>>>  ROFL. Maybe that was true for Python when it was first invented. 
>>>  Today it is not "a few simple things". Even just the core language,
>> 
>> Python v1 was a good teaching language. v2 complicated it a bit but it 
>> was still usable. v3 is no longer a good teaching language (unless 
>> maybe you are teaching CompSci at university.)
>> 
>> In fact in v3 things are so complex that I seriously considered 
>> dropping Python as the core language for my programming tutorial.
>> Until I started looking for an alternative, and there really isn't 
>> anything much better. At least not that can also be used for real 
>> projects once you've learned it.
> 
> 	Depending upon the course intentions, I'd say Python is useful for
> teaching general programming and getting to usable real-world programs.
> 
> 	For CompSci /theory/, OTOH, Python has too much built in, and would
> get in the way of having someone implement things like linked-lists, deques,
> hashed structures -- ie; the stuff that lies behind all those Python
> built-ins. Pascal, Modula-2 (or is it up to 3 now), or one of the other
> system programming languages: Edison from
> https://www.amazon.com/Programming-personal-computer-Brinch-Hansen/dp/013730
> 2673
> 	Implement a hashed-head multiple-linked list using Kemeny&Kurtz
> level BASIC! (My algorithms instructor allowed the class to use any language
> on that he could read -- so FORTRAN, BASIC, Pascal, Sigma Meta-Symbol,
> COBOL... No Snobol, LISP, or APL -- for that final project: a phone book
> directory/look-up system). Interestingly, I've only seen a hashed-head
> multiple-linked list structure used in one real world application: The
> Commodore Amiga file system.


-- 
To de-mung my e-mail address:- fsnospam$elliott$$
PGP Fingerprint: 1A96 3CF7 637F 896B C810  E199 7E5C A9E4 8E59 E248




More information about the Python-list mailing list