On Monday, July 11, 2016 at 11:03:37 AM UTC+5:30, Steven D'Aprano wrote: > On Monday 11 July 2016 13:07, Rustom Mody wrote: > > > Python is good for black-box – us the ‘batteries included’ without worrying > > too much how they are made > > Scheme, assembly language, Turing machines etc are at the other end of the > > spectrum > > I would put it the other way. > > Python is excellent for "white boxes", because the syntax is extremely > approachable, easy to read and comprehend. (Although you may wish to avoid > some > of the more complicated and hairy features if your emphasis is on learning.) > It's famous for being "executable pseudo-code" and neither too concise nor > too > verbose, and lacks the syntactic cruft which can impede understanding > (braces, > type declarations), which makes it excellent for teaching about algorithms, > etc. But for some tasks, at least, it may lack speed and efficiency to be a > practical "black box". > > Scheme, assembly, C, Forth etc are excellent for black boxes, as they are > extremely efficient languages, but not so approachable, readable and > comprehensible. > > Turing machines are to be avoided except for academic proofs that a certain > feature or language is equivalent to a Turing machine, in which case we know > precisely how much power it has, computation-wise. Turing machines are > neither > efficient enough to be used as black boxes, nor comprehensible enough to be > used for white boxes. > > Take Python's StringIO class. Would you rather *read* the Python version or > the > C version? Which would you rather *use*?
Black box and White box are not mutually exclusive – I think that is one basic point of Buchberger. So your examples are fine [Though I dunno what you mean by scheme is efficient] Here are some examples in the complementary sense Most used python web framework seems to be Django How much python does a Django programmer need to know? Want to play around with a symbolic algebra system? Install sympy and start off. How much python is needed? By contrast, polynomial addition/multiplication (in C) is a typical intermediate data structure project [You can slot python either way on this one] A lisp interpreter in lisp is one page/one hour http://www.paulgraham.com/mcilroy.html gcc in gcc is 15 million lines http://www.phoronix.com/scan.php?page=news_item&px=MTg3OTQ -- https://mail.python.org/mailman/listinfo/python-list