From: tim_one at email.msn.com (Tim Peters)
Date: Sat, 3 Apr 1999 06:26:17 GMT
Subject: disenchanted java user mumbles newbie questions
In-Reply-To: <3705980A.1C7E9512@swcp.com>
References: <3705980A.1C7E9512@swcp.com>
Message-ID: <000101be7d9a$e1ae88a0$879e2299@tim>
Content-Length: 3142
X-UID: 25                                                  

[Alex Rice]
> 1) In the Python 1.5 Tutorial, sec. 9.2 "Python Scopes and Name Spaces"
> there is the following passage:

> ...
> -- however, the language definition is evolving towards static name
> resolution, at ``compile'' time, so don't rely on dynamic name
> resolution!
> ...

> Where can I read more about this move towards for compile time, static
> name resolution and the reasons for it.

Best I can suggest is scouring years' worth of DejaNews.  Most of it is
summarized in early postings to the Python Types-SIG, though
(http://www.python.org/, and follow the SIGS link at the top ...).

"The reasons" are the same as everyone else's:  a mix of efficiency and
compile-time-checked type safety.  I'd say the Python thrust these days may
be more toward adding *optional* type decls, though.  OTOH, nothing has
changed in this area of Python for > 5 years, so don't panic prematurely
<wink>.

> For some reason I was envisioning Python as being less like Java and
> more like Objective-C or Smalltalk in terms of dynamic binding.

Yes, it is.  It's extreme, though.  For example, in

def sumlen(a, b, c):
    return len(a) + len(b) + len(c)

Python can't assume that "len" refers to the builtin function "len", or even
that all three instances of "len" refer to the same thing within a single
call (let alone across calls).  As to what "+" may mean here, it's even
hairier.  In effect, the current semantics require that Python look up every
non-local name and access path from scratch every time it (dynamically) hits
one.

This leads to some pretty disgusting convolutions for speeding "inner
loops", in support of a generality that's wonderful to have but actually
*needed* by very little code.  Because of a professional background in
compiler optimization, I'm supposed to be appalled by this <wink>.

> 2) Which reminds me: does anyone have a URL for that Ousterhut (sp?)
> article at Sunlabs about Scripting languages and why scripting rulz and
> where he has a taxonomy of programming languages along 2 dimensions?
> Lost that bookmark and cannot find it again.

It's one of the White Papers at:

    http://www.scriptics.com/scripting/white.html


> 3) What's the Python equivalent of depends.exe? --something to find what
> modules your script is depending upon?

Suggest searching python.org and DejaNews and Starship for "freeze" and
"squeeze".

> It seems like one would be able to create a very slim distribution if one
> needed an .exe, couple of .dll only a handful of .py files.

Why do I suspect you're a Windows programmer <wink>?  The most advanced
Python distribution system for Win32 is likely Gordon McMillan's, available
for free at

    http://www.mcmillan-inc.com/install.html

May also want to visit the Python DistUtils SIG.

> A Java+Swing application can be 1-2 MB not including the VM! bloat--ed.

Doubt you're going to get off much cheaper with Python + Tcl/Tk, although it
includes two complete language implementations.

> What's a typical size of a bare-bones Python distribution?

Download one, unpack it, and do "dir" <wink>.

soon-even-light-bulbs-will-have-20Gb-hard-drives-ly y'rs  - tim






