What is unique about Python?

G

gsteff

I'm a computer science student, and have recently been trying to
convince the professor who teaches the programming language design
course to consider mentioning scripting languages in the future. Along
those lines, I've been trying to think of features of Python, and
scripting languages in general, that can't be found in older languages,
and have been having a surprising amount of trouble. Dynamic typing
can be found in Smalltalk, the module concept can be found in Ada,
functional parameters and the dynamic creation of functions can be
found in Lisp. The indentation-based syntax seems to be unique, but
that's not really what I'm looking for. So I'm wondering, what is
innovative about Python, either in its design or implementation? Or is
its magic really just in combining many useful features of prior
languages in an unusually pleasant way?

Greg
 
K

Kent Johnson

gsteff said:
I'm a computer science student, and have recently been trying to
convince the professor who teaches the programming language design
course to consider mentioning scripting languages in the future. Along
those lines, I've been trying to think of features of Python, and
scripting languages in general, that can't be found in older languages,
and have been having a surprising amount of trouble. Dynamic typing
can be found in Smalltalk, the module concept can be found in Ada,
functional parameters and the dynamic creation of functions can be
found in Lisp. The indentation-based syntax seems to be unique, but
that's not really what I'm looking for. So I'm wondering, what is
innovative about Python, either in its design or implementation? Or is
its magic really just in combining many useful features of prior
languages in an unusually pleasant way?

IMO it is the latter. Most of the features of Python can be found in other languages. Not
so many languages have them all. It is the combination of ease of use and power that makes
Python stand out.

Kent
 
L

Luis M. Gonzalez

Perhaps you should ask yourself why you like Python first, and then
you'll probably have an answer.

I'd say that Python is all about productivity.
You can get more done in less time and with fewer lines of code because
it's more consice, flexible and expressive.
It's also very clear, easy to write and easy to read.
You don't need to compile before running your code, and its
interactivity lets you experiment and try different approaches faster
and better when writing algorithms. This leads to better results and
much faster than with any other traditional language.

Luis
 
J

James

The indentation-based syntax seems to be unique

I think Haskell was there first. As well as ABC, one of Python's
precursors.

Python is a pragmatic language, just like C (I wish I could say that
about Java). It does not necessarily innovate but incorporates things
known to work elsewhere. C and Java have not done anything particularly
unique either. They are included in curricula by their popularity.
Isn't that a good enough argument?
 
J

jhujsak

Indeed. I've found that I can code applications with 10-20% of the
amount of code required by other languages and write the code in a
correspondingly shorter period of time. The result is far less brittle,
more functional and far more maintainable. This is code you can come
back to a year later and pick right up with ease. That's not something
I can say for most traditional compiled languages. All of this, of
course, translates directly to much lower lifecycle cost and safer,
more reliable code.

--Jon
 
A

Alex Martelli

gsteff said:
The indentation-based syntax seems to be unique

No, you can find it in Haskell too (independently developed), and older
languages such as Occam.


Alex
 
K

Kay Schluehr

gsteff said:
So I'm wondering, what is
innovative about Python, either in its design or implementation? Or is
its magic really just in combining many useful features of prior
languages in an unusually pleasant way?

Greg

The latter.

http://www.python-in-business.org/ep2005/download.cpy?document=8599

As Guido described in his presentation Python is a decendent of ABC
developed at the university where he studied.

Here is some material about the primary motivations of ABC:

http://homepages.cwi.nl/~steven/abc/language.html

Python seems to proof that eclecticism can be done right.

Kay
 
D

dvm1981

I'm a computer science student, and have recently been trying to
convince the professor who teaches the programming language design
course to consider mentioning scripting languages in the future. Along
those lines, I've been trying to think of features of Python, and
scripting languages in general, that can't be found in older languages,
and have been having a surprising amount of trouble. Dynamic typing
can be found in Smalltalk, the module concept can be found in Ada,
functional parameters and the dynamic creation of functions can be
found in Lisp. The indentation-based syntax seems to be unique, but
that's not really what I'm looking for. So I'm wondering, what is
innovative about Python, either in its design or implementation? Or is
its magic really just in combining many useful features of prior
languages in an unusually pleasant way?

Greg

I can suggest to read the introduction of the (free)book :
* Green Tea Press - How to Think Like a Computer Scientist- Learning With
Python 2002
 
D

D H

Kay said:
gsteff wrote:




The latter.

http://www.python-in-business.org/ep2005/download.cpy?document=8599

As Guido described in his presentation Python is a decendent of ABC
developed at the university where he studied.

Here is some material about the primary motivations of ABC:

http://homepages.cwi.nl/~steven/abc/language.html

Python seems to proof that eclecticism can be done right.

Python has as much resemblance to ABC as an airplane does to a car.
The design principles used by ABC (like colons at the end of lines)
may have a certain justification in the context of ABC, but you cannot
simply transfer that justification to python.
ABC is designed specifically and entirely to be beginner-friendly.
Python is not.
 
M

Max

gsteff said:
I'm a computer science student, and have recently been trying to
convince the professor who teaches the programming language design
course to consider mentioning scripting languages in the future. Along
those lines, I've been trying to think of features of Python, and
scripting languages in general, that can't be found in older languages,
and have been having a surprising amount of trouble. Dynamic typing
can be found in Smalltalk, the module concept can be found in Ada,
functional parameters and the dynamic creation of functions can be
found in Lisp. The indentation-based syntax seems to be unique, but
that's not really what I'm looking for. So I'm wondering, what is
innovative about Python, either in its design or implementation? Or is
its magic really just in combining many useful features of prior
languages in an unusually pleasant way?

Greg

I find that development in python is much faster than anything else. But
one of the noticeable features, for me and presumably computer science
students, is the pseudocode-python translation: I've been working
through a CS textbook to train for the IOI, and noticed how much my
python implementations look like the textbook's pseudocode (whereas the
C++ versions look nothing like the pcode).

If anything, python is _more_ expressive - where list comprehensions and
generators are the natural way of doing things, the textbook has to
kludge because its target audience is C++, Java and Pascal programmers.

--Max
 
R

Robert J. Hansen

[w]hat is innovative about Python, either in its design or implementation?

This is probably the wrong approach to take.

What Python brings to the table isn't a new capability, but an elegant
and straightforward notation. It's not as beautiful as LISP, but it's
close. Sell it on that, not on any unique or rare capabilities.
 
K

KraftDiner

I like python.. Its ok.. One thing that I find a bit dangerous it the
use
of the tab character for indentation.. I've had copy and pasts loose
indentation on me and its theoretically impossible to really figure out
what the indentation should be. I think for the extra effort it would
have
taken to put brackets in the language it would increase a lot of
peoples
confidence in using it for codeing...
 
A

Alex Martelli

gsteff said:
that's not really what I'm looking for. So I'm wondering, what is
innovative about Python,

The letter 'y'. Before Python, it was woefully underused in the names
of programming languages. Now, of course, there's also Ruby, but then
we know Ruby did get some ideas from Python (and the letter 'y' is one
of them).


Alex
 
R

Roy Smith

The letter 'y'. Before Python, it was woefully underused in the names
of programming languages. Now, of course, there's also Ruby, but then
we know Ruby did get some ideas from Python (and the letter 'y' is one
of them).


Alex

Yacc has been around for a long time.
 
S

skip

Roy> Yacc has been around for a long time.

Sure, but it's capitalized there. Python innovated the use of lower-case
'y'.

Skip
 
M

Mike Meyer

KraftDiner said:
I like python.. Its ok.. One thing that I find a bit dangerous it the
use
of the tab character for indentation.. I've had copy and pasts loose
indentation on me and its theoretically impossible to really figure out
what the indentation should be.

So don't use tabs. Use spaces.
I think for the extra effort it would have taken to put brackets in
the language it would increase a lot of peoples confidence in using
it for codeing...

It would decrease mine. It would mean I can't just look at the code to
check control flow, I actually have to check the blasted brackets.

<mike
 
S

Szabolcs Nagy

i don't know if they are unique, but my favourite features are:

readable and short code (consistent syntax, few keywords)
iterpreter (very useful for learning)
dir(obj) / vars(obj) (very useful for learning)
identation
dynamic typing
lightweight oo (no public/protected/private)
built-in types (list, dict, str have useful methods)
iterator protocol
generators (yield syntax)
list comprehension / generator expression
keyword args
slicing
tuple assignment (unpacking tuple: a,b =1,2)
return with multiple values (tuple makes it easy)
widespread (it's easy to find a python module for any kind of task)
extendible with low-level languages (pyrex/swig/boostpython)
crossplatform
free

nszabolcs
 
R

Roy Smith

Szabolcs Nagy said:
iterpreter (very useful for learning)

In my mind, this is the coolest feature of all. Most of the time, I don't
even bother looking stuff up in the docs; it's faster to just fire up an
interpreter and try something. Functions like:
dir(obj) / vars(obj) (very useful for learning)

really work well with this (I'm trying to figure out some way to work
"synergize" into this without sounding like some corporate marketing wonk).
identation

Feh. A red herring. At best, syntactic sugar. At worst, something for
potential adopters to get hung up about.
dynamic typing

Another absolute key feature, which can't be fully appreciated until you're
staring at some 20-line long C++ template error message that you can't even
begin to figure out.
lightweight oo (no public/protected/private)

This one is debatable. This is value in private data (and methods).
Fortunately, Python does let you make things private with the
double-underscore syntax.
built-in types (list, dict, str have useful methods)

Python does come with a good assortment of built-in types and containers,
but most languages these days come with pretty much the same assortment.
iterator protocol

More than the protocol is the syntax. Every iterator in Python looks and
feels the same. No flipping through pages of documentation to figure out
how this particular class's iterator works.
 
S

Szabolcs Nagy

Feh. A red herring. At best, syntactic sugar. At worst, something for
potential adopters to get hung up about.
i always ident my code, but in python i don't need to bother with the
{} and the ; (which is redundant if i ident anyway) so i like it
because i need to type less, and i can read other's code (because of
the same layout).
This one is debatable. This is value in private data (and methods).
Fortunately, Python does let you make things private with the
double-underscore syntax.
i like it because i need to type (and think) less. When i need to make
it clear, which method is private/protected, i can always add a '_' or
'__' prefix by convention.
Python does come with a good assortment of built-in types and containers,
but most languages these days come with pretty much the same assortment.
python has very few built-in types and these are powerful. C++ stl or
java.util has more data structures but those are somewhat less usable.
Other languages with the same bult-in data types (thinking about perl,
php, ruby) always have a little bit differrent behaviour and i always
happen to prefer the python way. (nothing can beat python's list +
slicing or the ease of creating a dict).
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,274
Messages
2,571,368
Members
48,060
Latest member
JerrodSimc

Latest Threads

Top