Req. comments on "first version" ch 2 progr. intro (using Python 3.x in Windows)
Jon Clements
joncle at googlemail.com
Mon Nov 9 13:49:35 EST 2009
On Nov 9, 5:22 pm, "Alf P. Steinbach" <al... at start.no> wrote:
> * Jon Clements:
>
>
>
> > On Nov 9, 4:10 pm, "Alf P. Steinbach" <al... at start.no> wrote:
> >> Chapter 2 "Basic Concepts" is about 0.666 completed and 30 pages so far.
>
> >> It's now Python 3.x, and reworked with lots of graphical examples and more
> >> explanatory text, plus limited in scope to Basic Concepts (which I previously
> >> just had as a first ch 2 section -- but there's rather a lot of concepts!).
>
> >> I think it's wise to invite comments even when it's not 100% completed. First,
> >> because as opposed to ch 1 there is quite a bit of code here, and since I'm a
> >> Python newbie I may be using non-idiomatic constructs, not to mention doing
> >> worse things. :-) Second, because comments in general can improve the text.
>
> >> Contents:
>
> >> 2.1 Super-basic concept: why programming is not DWIM. 1
> >> 2.2 Reported errors. 4
> >> 2.2.1 Case-sensitity. 4
> >> 2.2.2 Syntax / compilation errors. 4
> >> 2.2.3 Runtime errors / crashes. 5
> >> 2.3 A programming exploration tool: turtle graphics. 6
> >> 2.4 Naming things. 8
> >> 2.4.1 Naming actions: routines. 8
> >> 2.4.2 Naming data part I: variables. 11
> >> 2.4.3 Naming data part II: routine arguments. 13
> >> 2.5 Controlling the flow of execution. 14
> >> 2.5.1 Repeating actions automatically: loops. 14
> >> 2.5.2 Basic comparisions & boolean values. 16
> >> 2.5.3 Interlude I: a function graph program / about types. 17
> >> 2.5.4 Automated action choices. 21
> >> 2.5.5 Value-producing (function-like) routines. 23
> >> 2.5.6 Interlude II: a graph with zeroes marked / about program structure. 26
> >> 2.5.7 Dynamically nested actions: recursive routines. 28
> >> 2.6 Objects. [Not started on this] 31
> >> 2.7 Collections. [Not started on this] 31
>
> >> In Google Docs (both chapters available here):
>
> >> <url:http://preview.tinyurl.com/ProgrammingBookP3>
> >> Formats: PDF
>
> >> Cheers,
>
> >> - Alf
>
> > Well, you may not like it, but it is perfectly acceptable and indeed
> > promoted to use CONSTANT_VAR_NAMES. You're almost discouraging the use
> > of a well understood and oft-used idiom. I they're a lot of them, you
> > generally have a settings module, that just lists all of the
> > 'constants' (.h files effectively).
>
> Yeah, I thought of that angle so I emphasized 'programs'.
>
> As it happens about half or more of the variables in the examples are constants.
>
> All uppercase convention for that would be ugly to me. :-)
Okies, maybe introducing the fact that lots of 'programs' often have
constants, which are quite often settings or whatever and they would
use the uppercase notation (and if numerous, in a separate module).
Also maybe you can introduce the fundamental idea of a 'namespace',
maybe something like:
class const:
pi = 3.14
name = 'Alf'
language = 'Python'
or whatever, then reference const.<var> ?
I'm not 100% sure I'm keen on this idea, but it's an option you can
consider at least. Introduces a couple of bits that may be discussed
later, but I'd be a little scared that people would start thinking
'const.' was something magical.
>
> > "Technically line_length is a variable"...: No - it's a name that
> > binds to an object that happens to be an integer. You've participated
> > in discussions re: this. Similarly 'number_of_apples =
> > number_of_apples + 1' is not an assignment ;)
>
> Ah, you're kidding.
>
> Probably.
>
> Anyways, that's the terminology employed by the language reference, and even if
> it wasn't I'd use it because this is primarily introduction to programming in
> general, where Python just happens to be the vehicle; thus, language independent
> terminology preferred (e.g., I use "routine" instead of C/Python "function").
>
> > It's nit-picky and I
> > realise you're trying to keep it simple, but as it's meant for new
> > programmers to the Python language, then introduce them to Python's
> > way of "variables", they'll thank you for it later... (or run
> > screaming, or start another thread here...)
>
> Yeah, good point, thanks!
>
> But it will have to wait till I get down into details... ;-)
>
Fair enough. It would be nice though to cover stuff like:
a = [1,2,3]
b = a
- b is not a *copy* of a
- b is not a *reference* to a
- b just happens to be another name for the list object.
And stuff about mutable/immutable: it would certainly help with a lot
of gotcha's.
> > I've never seen/heard != described as "different from"; what's wrong
> > with "not equal to"?
>
> Thanks!
>
> > And why no mention of 'not' (should be mentioned
> > with booleans surely?).
>
> Again, I'll discuss that later. It's just too much to bring up. Most of my work
> with this has been to pare down to essentials and *remove* stuff I'd written.
>
Well, should you re-write != as "not equal to", it wouldn't hurt to
mention a little later that not False is True and vice versa...
> > That's as far as I've got; might get around to reading more later...
>
> > Cool tree at the end :)
>
> Thanks!
>
> Cheers,
>
> - Alf
Cheers,
Jon.
More information about the Python-list
mailing list