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*? -- Steve -- https://mail.python.org/mailman/listinfo/python-list