On Sun, 06 Apr 2014 12:05:16 +0300, Marko Rauhamaa wrote:

> Mark H Harris <harrismh...@gmail.com>:
> 
>> On 4/4/14 4:53 AM, Steven D'Aprano wrote:
>>> Python is not a computer-science-ey language.
>>
>> Every programming language is interesting from a comp sci standpoint.
>> Some are more useful for research; python is one of those.
>>
>> For what reasons do you disagree?
> 
> Computer science doesn't mean "anything related to computers."
> Physicists typically couldn't care less about your heating up your lunch
> in the microwave oven. Similarly, computer scientists aren't interested
> in the mundane applications of their lofty research topics.
> 
> Python, BTW, is perfectly suitable for computer science. 

I don't think it is. Python is not a pure functional language, so it's 
very difficult to prove anything about the code apart from running it. 
For example, see Brett Cannon's master's thesis, where he essentially 
demonstrates that:

- you can't do compile-time type inference of general types in Python;

- although you can infer a very small amount of information about a 
  few built-in types;

- adding specialized byte-codes to handle those types gives, at best,
  a marginal performance boost, and sometimes even slows code down.


To quote from the conclusion:

   "Introducing over 3,000 lines of new C code to Python’s compiler 
    to get, at best, a 1% improvement is in no way justified. The 
    level of added complexity that would be introduced into the
    compilation step would definitely need to lead to a noticeable
    performance improvement, the 5% that was the goal, to justify the
    cost of code maintenance."

http://citeseerx.ist.psu.edu/viewdoc/download?
doi=10.1.1.90.3231&rep=rep1&type=pdf


What does it mean to say that a language like Python is suitable for use 
in computer science? It can mean (at least) four things:

(1) If you do an undergraduate computer science course, they will teach 
you Python.

While this is good for the general Python community, it's hardly *doing* 
computer science. It's *learning* computer science. (I read a book by 
Richard Dawkins. That doesn't mean I'm a biologist.) So while I agree 
that it is significant that some universities will teach Python to 
undergraduates, I don't count this as Python being used in computer 
science. I think we need to look at postgraduate use of Python, not 
undergraduate.

(2) Some post-grads use Python as a tool, e.g. they use a Python script 
to analyse some data. In this case, the use of Python is incidental to 
the research they are doing. They might have used Perl, or a bash script, 
or calculated the results by hand. In a similar fashion, they probably 
wrote up their results using Microsoft Word. It's just a tool.

(3) Some post-grads do original research *into* Python, as a language. 
Brett Cannon's thesis is proof that this has happened at least once.

I think this does count as doing computer science with Python, although 
only marginally. No slight intended, but it should be obvious that 
something like Brett's thesis has very little application outside of 
Python itself. Perhaps a little: if there is another language with 
similar types of dynamism as Python, you might conclude that it too is 
not a good candidate for compile-time type inference.

(4) This is the category which I was referring to when I said that Python 
wasn't a "computer-science-ey language": do people use Python for 
research into language-independent fundamental principles of computation? 
I don't think so. I agree with Marko that normally you:

> you either use a pseudolanguage or some sort of formalism that
> hasn't been implemented.

E.g. most of the really deep stuff by Turing wasn't even performed on a 
computer, since there were no computers[1], or languages to program them 
in. A lot (all?) of Knuth's published work is written in an assembly 
language for an imaginary processor. Douglas Hofstadter invented two 
languages, BlooP and FlooP, to demonstrate the difference between 
programming languages that are, or aren't, Turing complete. (He also 
named a mythical super-Turing language GlooP.)

Some languages are better suited for academic research of this nature. 
Python is too... messy, I suppose. Python's mix of imperative, functional 
and OOP paradigms makes it really useful for solving problems, but less 
useful for academic research of this type, where pure functional, pure 
OOP paradigms are more useful. Naturally I'm not saying that there is 
*absolutely no* comp-sci work done using Python, that would be foolish, 
only that it is in a minority and is not well-suited for the sort of 
problems academics are interested in.

But since I'm not a computer scientist, perhaps I'm wrong. Anyone have 
any studies showing what percentage of research papers use various 
languages?


> In theoretical computer science, they cherish off-the-wall models that
> detach the topic from everyday applications. Here are examples that I
> remember from graduate school:
> 
>  * combinatory birds in forests

I don't believe that came from academia. If I've understood correctly, 
that was from a non-academic book on applying the lambda calculus to 
solve practical applications.


>  * unfaithful husbands on an island ruled by female logicians

I don't know that one.


>  * dining philosophers getting into a deadlock over forks
> 
>  * Byzantine generals trying to agree on a surprise onslaught on a
>    besieged city





[1] Actually there were. They were women who had the tedious job of 
performing large numbers of tedious computations by hand. But there were 
no *electronic* computers.


-- 
Steven D'Aprano
http://import-that.dreamwidth.org/
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to