Program, Application, and Software
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Thu Nov 18 19:07:05 EST 2010
On Thu, 18 Nov 2010 14:21:47 +0000, Martin Gregorie wrote:
> I use 'script' to refer to programs written in languages that don't have
> a separate compile phase which must be run before the program can be
> executed. IOW Python and Perl programs are scripts aloing with programs
> written as awk, Javascript and bash scripts.
You're mistaken then about Python, because it does have a separate
compilation phase that runs before the program can be executed. Where do
you think the .pyc files come from, and what did you think the compile()
function did? It just happens automatically, rather than manually.
For that matter, what about languages with JIT compilers, like Java or,
yes, Python? CPython itself has no built-in JIT, but PyPy does, and Psyco
is an optimizing JIT compiler for CPython on some hardware.
I think the difference between "scripts" and "programs" is about as
meaningful as the difference between "mountains" and "hills" -- there
clearly is a difference between *this specific* hill and *that specific*
mountain, but any general distinction between hills and mountains is
arbitrary and artificial.
Maybe, once upon a time, there was a meaningful distinction to be made
between purely interpreted languages and purely compiled languages. But
today, when "interpreted" languages have a compilation phase, and
"compiled" languages have the equivalent of eval() and do their
compilation at runtime, such a distinction is now fairly arbitrary.
Better questions are:
* Does the program compile to native machine code or byte code?
* How efficient is the machine code, or the virtual machine that executes
the byte code? What do you mean by "efficient"?
* Is there an integrated parse-compile-execute cycle, or does the
developer have to perform them individually?
* To what degree is the syntax of the language aimed at rapid development
and/or runtime efficiency?
Harder questions to ask, and answer, than "Is that language for writing
scripts or programs or applications?", but the answers are far more
meaningful.
--
Steven
More information about the Python-list
mailing list