Instead of deciding between Python or Lisp for a programming intro course...What about an intro course that uses *BOTH*? Good idea?

zipher dreamingforward at gmail.com
Tue May 12 23:27:50 EDT 2015


On Tuesday, May 12, 2015 at 9:30:50 PM UTC-5, Steven D'Aprano wrote:
> On Wed, 13 May 2015 08:00 am, zipher wrote:
> 
> > Everyone gets it wrong and now we have a plethora of languages which all
> > do the same thing, without really knowing what they want as an overarching
> > design or purpose.
> 
> 
> Why must a language be designed with some "overarching design or purpose"?

Because it's considerable work.  Why re-invent the wheel?  After all, there are plenty of Turing-complete languages out there.  No, you make one because you have an implicit or explicit goal.

> Why can't a language be designed with a *practical and concrete* need in
> mind? As far as I know, only one language designed from theoretical first
> principles has had any measure of mainstream success, Lisp,

Yes, and that was a stellar achievement.  Many language makers still compare to such a gold standard.  Even Python.  Yet it has also misled us -- it is based on a fundamentally different model of computation.

An elegant model of computation, that many high-level languages seem to try to adopt, yet they fail because they can't re-produce the elegance without becoming LISP.  So why, then, are there other programming languages that specifically try NOT to be LISP?  

Because the model of computation for most hardware is iterative.  This is also why the design goal of "everything should be an object" needs to be revisited.  It doesn't align with any model of computation.  That's fine for small problems, but when you're trying to make a p2p data model that can scale to the Internet, it becomes an issue.
 
> "I want to do numerical calculations" lead to Fortran.
> 
> "I want to control telescopes" lead to Forth.
> 
> "I want to teach beginners programming" lead to BASIC.

You can stop there.  You are proving my point, that there are goals to a given programming language.  If those goals are strong or noble enough, it differentiates from existing languages.  "I want to do numerical calculations" led to Fortran, which led to C because people wanted to do such calculations on many platforms.  And C syntax had the more elegant syntax ultimately (I think the increment++ operator ultimately ran Fortran over, because it was directly implementable on CPU architectures in 1 clock cycle).

"I want to control telescopes" could morph into the more general goal of "I want to make a controller programming language" and Boom, you'd have an elegant programming language for all controllers.

"I want to teach beginners programming" started at BASIC, but then led to Pascal as the limitations of BASIC became clear, but then became Python.  These are all decent design goals for a language.  Python has superceded BASIC in almost every way.

Anyway, having a design goal guides the process and helps everyone who wants to contribute know how to do so.

Mark



More information about the Python-list mailing list