[TYPES] The type/object distinction and possible synthesis of OOP and imperative programming languages

Ian Kelly ian.g.kelly at gmail.com
Thu Apr 18 19:30:48 EDT 2013


On Thu, Apr 18, 2013 at 4:53 PM, Mark Janssen <dreamingforward at gmail.com> wrote:
> The main thing that I notice is that there is a heavy "bias" in
> academia towards mathematical models.  I understand that Turing
> Machines, for example, were originally abstract computational concepts
> before there was an implementation in hardware, so I have some
> sympathies with that view, yet, should not the "Science" of "Computer
> Science" concern itself with how to map these abstract computational
> concepts into actual computational hardware?

Why?  You seem to have a notion that theoretical computer science is
ultimately about programming.  It's not, any more than theoretical
physics is ultimately about how to build skyscrapers.  Theoreticians
don't discuss complicated languages like Python because it would be
difficult to prove anything about computation using them.  Programmers
don't use constructs like Turing machines because they're not
practical or useful for doing actual programming with.  We're talking
about two different groups of people who use different tools because
they have very different objectives.

> Otherwise, why not keep
> the field within mathematics and philosophy (where Logic traditionally
> has been)?

Well now, that's an age-old debate.  Ultimately what we call "computer
science" does not encompass one single discipline.  But I think they
are generally kept under one academic umbrella because they are
closely related, and there is value in working with colleagues in
separate sub-fields.  Certainly there is value in being passingly
familiar with the theory side of things if one is going to be
designing languages and writing parsers.  Less so if one is primarily
occupied with building inventory systems.

> But still, it seems that there are two ends, two poles, to the whole
> computer science enterprise that haven't been sufficiently *separated*
> so that they can be appreciated:  logic gates vs. logical "calculus"
> and symbols.   There is very little crossover as I can see.  Perhaps
> the problem is the common use of the Greek root "logikos"; in the
> former, it pertains to binary arithmetic, where in the latter, it
> retains it's original Greek pertaining to *speech* and symbols,
> "logos").  Further, one can notice that in the former, the progression
> has been towards more sophisticated Data Structures (hence the
> evolution towards Object-Orientation), where in the latter (I'm
> guessing, since it's not my area of expertise) the progression has
> been towards function sophistication (where recursion seems to be
> paramount).

Okay, you've lost me again.  What do logic gates have to do with data
structures and OOP?  What does symbolic logic have to do with
functional programming?



More information about the Python-list mailing list