Re: Programming Tutorial for absolute beginners

2006-04-11 Thread Clodoaldo Pinto
Frank Millman wrote:
 Marc 'BlackJack' Rintsch wrote:
  In [EMAIL PROTECTED], Frank Millman
  wrote:
 
   Then you can mention that, if they just want the integer portion, they
   can use int(3/2). I think that most people with the slightest
   understanding of basic arithmetic will relate to this without a
   problem.
 
  Or instead of converting the `float` back to an `int`, they can use
  integer division:  ``3 // 2``
 

 I had thought of that. The reason I did not suggest it is that, as I
 understand it, this tutorial is not about how to learn Python, it is
 about teaching programming to the absolute beginner.

Right !!


 I imagine (hope I am not making invalid assumptions here) that Python
 was chosen as a base because it is easy and intuitive to learn, and in
 most cases it is. It just happens that division is one area where it is
 a bit awkward.

Right again !!

Although the Python way is almost always easy to learn I won't be
pythonic (as in specific to Python) where it won't help.

Regards, Clodoaldo

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-10 Thread Marc 'BlackJack' Rintsch
In [EMAIL PROTECTED], Frank Millman
wrote:

 Why not think to the future, and do it like this. Instruct the reader
 to enter 'from __future__ import division'. You do not have to explain
 the details, just say that this is the way division will work in the
 future, and this statement will eventually not be required.
 
 Then your example will show that 3/2 = 1.5, which is what they would
 expect.
 
 Then you can mention that, if they just want the integer portion, they
 can use int(3/2). I think that most people with the slightest
 understanding of basic arithmetic will relate to this without a
 problem.

Or instead of converting the `float` back to an `int`, they can use
integer division:  ``3 // 2``

Ciao,
Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-10 Thread Frank Millman

Marc 'BlackJack' Rintsch wrote:
 In [EMAIL PROTECTED], Frank Millman
 wrote:

  Then you can mention that, if they just want the integer portion, they
  can use int(3/2). I think that most people with the slightest
  understanding of basic arithmetic will relate to this without a
  problem.

 Or instead of converting the `float` back to an `int`, they can use
 integer division:  ``3 // 2``


I had thought of that. The reason I did not suggest it is that, as I
understand it, this tutorial is not about how to learn Python, it is
about teaching programming to the absolute beginner.

I imagine (hope I am not making invalid assumptions here) that Python
was chosen as a base because it is easy and intuitive to learn, and in
most cases it is. It just happens that division is one area where it is
a bit awkward.

The // syntax is specific to Python. I don't think you are helping the
absolute beginner by forcing them to understand what is going on here.
On the other hand, int(x) is a basic mathematical concept (extract the
portion to the left of the decimal point) that is shared by several
languages and is fairly easy to understand.

My 2c (I am up to 4c now)

Frank

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-09 Thread Frank Millman

Clodoaldo Pinto wrote:
 James wrote:
  On the calculator page you describe the difference between 3.0 / 2 and
  3 / 2, but an absolute beginner probably wouldn't know about the
  difference between integers and floats, or even what the two terms
  meant. If you don't know much about computers then the fact that they
  are separate types would probably be surprising...
 
 This point is not easy to aproach. The fact is that it is necessary
 that the beginner knows that there is a differerence between 3 / 2 and
 3.0 / 2.

 I don't want him to now about types, at least not at that stage. I used
 the term integer for the lack of a better one and I didn't mention
 float. Any suggestions?

 Regards, Clodoaldo.

Here is a idea. I am not sure if it is a good idea, but you can compare
it with the other suggestions for resolving this dilemma.

We know that Python is in the process of changing the division
operator. The main reason for the change is that the current approach
is not intuitive to a newcomer (whether experienced or not).

Why not think to the future, and do it like this. Instruct the reader
to enter 'from __future__ import division'. You do not have to explain
the details, just say that this is the way division will work in the
future, and this statement will eventually not be required.

Then your example will show that 3/2 = 1.5, which is what they would
expect.

Then you can mention that, if they just want the integer portion, they
can use int(3/2). I think that most people with the slightest
understanding of basic arithmetic will relate to this without a
problem.

My 2c

Frank Millman

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-09 Thread Clodoaldo Pinto
Duncan Smith wrote:

 But as you use conversions to float in order to avoid integer division
 in your code examples, it might be best to explain what's going on, even
 if you do have to explain the relevant types.


I changed the comments in the first program that uses float() to:

# The raw_input() function asks the user for a text
# As a text can't be multiplied or divided the
# float() function tranforms the text into a decimal number



 I can't imagine anyone (who doesn't already know) looking at the example
 and not wondering why it returned 1 rather than something else.

...

 Integer is more mathematical, and more precise.  I just looked up some
 definitions for whole number, and found it can apparently mean
 positive integer, non-negative integer, or integer.  Maybe you can use
 integer and just put whole number in brackets after it, the first time
 you use it; as a vague definition?  But describing the relevant types
 and integer division might make your later examples clearer.


Now it says integer (whole number) followed by a link to a forum post
where this issue can be discussed.
http://programming-crash-course.com/integer_versus_float_division

Regards, Clodoaldo

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-09 Thread Clodoaldo Pinto
Frank Millman wrote:

 We know that Python is in the process of changing the division
 operator. The main reason for the change is that the current approach
 is not intuitive to a newcomer (whether experienced or not).

 Why not think to the future, and do it like this. Instruct the reader
 to enter 'from __future__ import division'. You do not have to explain
 the details, just say that this is the way division will work in the
 future, and this statement will eventually not be required.

 Then your example will show that 3/2 = 1.5, which is what they would
 expect.

 Then you can mention that, if they just want the integer portion, they
 can use int(3/2). I think that most people with the slightest
 understanding of basic arithmetic will relate to this without a
 problem.

I included your suggestion in the forum topic that is linked from the
division paragraph:
http://programming-crash-course.com/integer_versus_float_division

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-09 Thread John Salerno
Clodoaldo Pinto wrote:
 Duncan Smith wrote:
 But as you use conversions to float in order to avoid integer division
 in your code examples, it might be best to explain what's going on, even
 if you do have to explain the relevant types.

 
 I changed the comments in the first program that uses float() to:
 
 # The raw_input() function asks the user for a text
 # As a text can't be multiplied or divided the
 # float() function tranforms the text into a decimal number

Hmmm, maybe a picky point for a newbie, but since there actually is a 
decimal module now, you might want to change the description of float().
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread malv
Looks pretty good, except for your difficult to read examples.
Don't use black backrounds with green characters.
A plain white background with black text would be a major improvement.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread Bruno Desthuilliers
malv a écrit :
 Looks pretty good, except for your difficult to read examples.
 Don't use black backrounds with green characters.
 A plain white background with black text would be a major improvement.
 
May I suggest a system like Trac-Wiki, that knows how to display Python 
code with syntax-hilighting and line-numbering ?-) (Not sure but IIRC, 
MoinMoin as the same feature).
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread James
On the calculator page you describe the difference between 3.0 / 2 and
3 / 2, but an absolute beginner probably wouldn't know about the
difference between integers and floats, or even what the two terms
meant. If you don't know much about computers then the fact that they
are separate types would probably be surprising...

James

On 7 Apr 2006 12:45:48 -0700, Clodoaldo Pinto [EMAIL PROTECTED] wrote:
 I'm starting a programming tutorial for absolute beginners using Python
 and I would like your opinions.

 http://programming-crash-course.com

 Regards, Clodoaldo Pinto

 --
 http://mail.python.org/mailman/listinfo/python-list

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread Bruno Desthuilliers
Clodoaldo Pinto a écrit :
 bill pursell wrote:
 
(snip)
2) In the section on installing, you begin with:
Python is an interpreted, interactive, object-oriented programming
language..  The complete novice sees those words and expects
them to be explained, but there is no definition given.  I would
recommend simplifying that sentence, or explaining the terms.
 
 Ok, i will think about something, or just delete it.

FWIW, being interpreted is not a feature of a language but of a given 
implementation of a language - and actually, the reference 
implementation (CPython) is byte-compiled, not interpreted. As for 
interactivity, it comes from a program (the Python shell) that ships 
with the reference implementation - not from the laguage itself.

This leaves us with Python is an object-oriented programming language, 
which is not 100% accurate since Python - even if strongly OO - also 
supports the procedural and functional paradigms !-)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread Clodoaldo Pinto
Bruno Desthuilliers wrote:
 Clodoaldo Pinto a écrit :
  bill pursell wrote:
 
 (snip)
 2) In the section on installing, you begin with:
 Python is an interpreted, interactive, object-oriented programming
 language..  The complete novice sees those words and expects
 them to be explained, but there is no definition given.  I would
 recommend simplifying that sentence, or explaining the terms.
 
  Ok, i will think about something, or just delete it.

 FWIW, being interpreted is not a feature of a language but of a given
 implementation of a language - and actually, the reference
 implementation (CPython) is byte-compiled, not interpreted. As for
 interactivity, it comes from a program (the Python shell) that ships
 with the reference implementation - not from the laguage itself.

That Python definition was taken literally from the old site's about
page. The new about page is better for the purposes of this course:

Python is a remarkably powerful dynamic programming language that is
used in a wide variety of application domains. Python is often compared
to Tcl, Perl, Ruby, Scheme or Java. Some of its key distinguishing
features include:...

Or the first page definition:

Python® is a dynamic object-oriented programming language that can be
used for many kinds of software development. It offers strong support
for integration with other languages and tools, comes with extensive
standard libraries, and can be learned in a few days. Many Python
programmers report substantial productivity gains and feel the language
encourages the development of higher quality, more maintainable code.

I'm leaning towards the first page one from which i would take this
part out:

is a dynamic object-oriented programming language

That would leave this simple text:

Python® can be used for many kinds of software development. It offers
strong support for integration with other languages and tools, comes
with extensive standard libraries, and can be learned in a few days.
Many Python programmers report substantial productivity gains and feel
the language encourages the development of higher quality, more
maintainable code.

Regards, Clodoaldo

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread Clodoaldo Pinto
James wrote:
 On the calculator page you describe the difference between 3.0 / 2 and
 3 / 2, but an absolute beginner probably wouldn't know about the
 difference between integers and floats, or even what the two terms
 meant. If you don't know much about computers then the fact that they
 are separate types would probably be surprising...

This point is not easy to aproach. The fact is that it is necessary
that the beginner knows that there is a differerence between 3 / 2 and
3.0 / 2.

I don't want him to now about types, at least not at that stage. I used
the term integer for the lack of a better one and I didn't mention
float. Any suggestions?

Regards, Clodoaldo.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread James
Perhaps use the phrase whole number there and mention that in
programming they're called integers. Having a glossary with
definitions for things like integer, float etc etc. would be good if
when you talked about integers it linked to the glossary. And
similarly use decimals for floats? Less sure about that one though.
But anyway you don't need to go into the whole type thing, just
mention that Python distinguishes between doing maths with whole
numbers and decimals.

On 8 Apr 2006 09:02:22 -0700, Clodoaldo Pinto [EMAIL PROTECTED] wrote:
 I don't want him to now about types, at least not at that stage. I used
 the term integer for the lack of a better one and I didn't mention
 float. Any suggestions?

 Regards, Clodoaldo.

 --
 http://mail.python.org/mailman/listinfo/python-list

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread John Salerno
Clodoaldo Pinto wrote:

 Python is a remarkably powerful dynamic programming language that is
 used in a wide variety of application domains. Python is often compared
 to Tcl, Perl, Ruby, Scheme or Java. Some of its key distinguishing
 features include:...

I'd be careful with that definition for newbies though. There's nothing 
more frustrating (as a newbie myself) when Python (or anything else) is 
compared to something as a way to explain it, yet I have no idea what 
the other things are either! A programming newbie won't know about, and 
maybe won't even have heard of, those other languages.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread Duncan Smith
James wrote:
 Perhaps use the phrase whole number there and mention that in
 programming they're called integers. Having a glossary with
 definitions for things like integer, float etc etc. would be good if
 when you talked about integers it linked to the glossary. And
 similarly use decimals for floats? Less sure about that one though.
 But anyway you don't need to go into the whole type thing, just
 mention that Python distinguishes between doing maths with whole
 numbers and decimals.
 

In general they are integers, and integer is not a Python type, so I
don't see a problem with the term.  The problem I saw was that there was
no explanation for the returned value.  Using the term decimal is
probably a bad idea, given Python decimals.  But I'm not sure you need
to come up with a suitable term until you actually get round to
explaining types (at which point the problem disappears).

Duncan
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread Clodoaldo Pinto
John Salerno wrote:
 Clodoaldo Pinto wrote:

  Python is a remarkably powerful dynamic programming language that is
  used in a wide variety of application domains. Python is often compared
  to Tcl, Perl, Ruby, Scheme or Java. Some of its key distinguishing
  features include:...

 I'd be careful with that definition for newbies though. There's nothing
 more frustrating (as a newbie myself) when Python (or anything else) is
 compared to something as a way to explain it, yet I have no idea what
 the other things are either! A programming newbie won't know about, and
 maybe won't even have heard of, those other languages.

Good point. I used the Python site front page definition without the
object oriented thing.

Regars, Clodoaldo

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread James
If you're serious about this being a real introduction for someone who
knows nothing, then you might want to start off by explaining what a
programming language is (and why there are more than one) and then
what a standard library is - perhaps explain it in terms of a large
set of tools you can use straight away?

James

On 8 Apr 2006 11:53:34 -0700, Clodoaldo Pinto [EMAIL PROTECTED] wrote:
 John Salerno wrote:
  Clodoaldo Pinto wrote:
 
   Python is a remarkably powerful dynamic programming language that is
   used in a wide variety of application domains. Python is often compared
   to Tcl, Perl, Ruby, Scheme or Java. Some of its key distinguishing
   features include:...
 
  I'd be careful with that definition for newbies though. There's nothing
  more frustrating (as a newbie myself) when Python (or anything else) is
  compared to something as a way to explain it, yet I have no idea what
  the other things are either! A programming newbie won't know about, and
  maybe won't even have heard of, those other languages.

 Good point. I used the Python site front page definition without the
 object oriented thing.

 Regars, Clodoaldo

 --
 http://mail.python.org/mailman/listinfo/python-list

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread Clodoaldo Pinto
Duncan Smith wrote:
 James wrote:
  Perhaps use the phrase whole number there and mention that in
  programming they're called integers. Having a glossary with
  definitions for things like integer, float etc etc. would be good if
  when you talked about integers it linked to the glossary. And
  similarly use decimals for floats? Less sure about that one though.
  But anyway you don't need to go into the whole type thing, just
  mention that Python distinguishes between doing maths with whole
  numbers and decimals.
 

 In general they are integers, and integer is not a Python type, so I
 don't see a problem with the term.  The problem I saw was that there was
 no explanation for the returned value.

How would I explain that 3 / 2 is 1 without entering the type realm?
What if I say that if one don't use the point the interpreter will also
not use it? Would i be laying? Isn't it better to just let it go? I
think the typical non programmer newbie just don't care two much about
reasons as long as there is a clear rule. No point in the question then
no point in the answer.

  Using the term decimal is
 probably a bad idea, given Python decimals.  But I'm not sure you need
 to come up with a suitable term until you actually get round to
 explaining types (at which point the problem disappears).


As I think float is scaring I changed it in the program comments where
it appeared for decimal. I don't worry about precision as much as I
worry about fluidity. I don't want anyone stoping to consult a
dictionary or a glossary.

Now the integer versus whole. As a non native english speaker I don't
know what sounds less mathematical and more natural. I changed integer
to whole following the previous suggestion but I really don't know.

Regards, Clodoaldo

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-08 Thread Duncan Smith
Clodoaldo Pinto wrote:
 Duncan Smith wrote:
 
James wrote:

Perhaps use the phrase whole number there and mention that in
programming they're called integers. Having a glossary with
definitions for things like integer, float etc etc. would be good if
when you talked about integers it linked to the glossary. And
similarly use decimals for floats? Less sure about that one though.
But anyway you don't need to go into the whole type thing, just
mention that Python distinguishes between doing maths with whole
numbers and decimals.


In general they are integers, and integer is not a Python type, so I
don't see a problem with the term.  The problem I saw was that there was
no explanation for the returned value.
 
 
 How would I explain that 3 / 2 is 1 without entering the type realm?

Well you said something like it returns an integer without explaining
why the returned integer was 1 rather than, say, 10.  So you probably
need to explain what integer division is, e.g.
http://mathworld.wolfram.com/IntegerDivision.html.

 What if I say that if one don't use the point the interpreter will also
 not use it? Would i be laying? Isn't it better to just let it go?

I reckon letting it go would lead to confusion.  If I didn't know
already, I'd want to know why it returned 1.  You can explain that
without referring to types, but just saying e.g. that ordinary division
is performed if the numerator or denominator is followed by a decimal point.

But as you use conversions to float in order to avoid integer division
in your code examples, it might be best to explain what's going on, even
if you do have to explain the relevant types.

I
 think the typical non programmer newbie just don't care two much about
 reasons as long as there is a clear rule. No point in the question then
 no point in the answer.
 

I can't imagine anyone (who doesn't already know) looking at the example
and not wondering why it returned 1 rather than something else.

 
 Using the term decimal is
probably a bad idea, given Python decimals.  But I'm not sure you need
to come up with a suitable term until you actually get round to
explaining types (at which point the problem disappears).

 
 
 As I think float is scaring I changed it in the program comments where
 it appeared for decimal. I don't worry about precision as much as I
 worry about fluidity. I don't want anyone stoping to consult a
 dictionary or a glossary.
 
 Now the integer versus whole. As a non native english speaker I don't
 know what sounds less mathematical and more natural. I changed integer
 to whole following the previous suggestion but I really don't know.
 

Integer is more mathematical, and more precise.  I just looked up some
definitions for whole number, and found it can apparently mean
positive integer, non-negative integer, or integer.  Maybe you can use
integer and just put whole number in brackets after it, the first time
you use it; as a vague definition?  But describing the relevant types
and integer division might make your later examples clearer.

Duncan
-- 
http://mail.python.org/mailman/listinfo/python-list


Programming Tutorial for absolute beginners

2006-04-07 Thread Clodoaldo Pinto
I'm starting a programming tutorial for absolute beginners using Python
and I would like your opinions.

http://programming-crash-course.com

Regards, Clodoaldo Pinto

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-07 Thread bill pursell
Clodoaldo Pinto wrote:
 I'm starting a programming tutorial for absolute beginners using Python
 and I would like your opinions.

 http://programming-crash-course.com

Very nicely laid out.  Overall, a really nice presentation.  2 minor
points:

1) in the section on the interactive interpreter you have the sentence:
In Linux open a shell and type python (must be lower case).  It
would be nice if the word 'python' were in a different font, or perhaps

in quotes, or something.  You're targetting the absolute beginner, so
you should assume the reader is not familiar with the CLI.

2) In the section on installing, you begin with:
Python is an interpreted, interactive, object-oriented programming
language..  The complete novice sees those words and expects
them to be explained, but there is no definition given.  I would
recommend simplifying that sentence, or explaining the terms.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-07 Thread John Salerno
bill pursell wrote:

 1) in the section on the interactive interpreter you have the sentence:
 In Linux open a shell and type python (must be lower case).  It
 would be nice if the word 'python' were in a different font, or perhaps

codepython/code would be good there.

 2) In the section on installing, you begin with:
 Python is an interpreted, interactive, object-oriented programming
 language..  The complete novice sees those words and expects
 them to be explained, but there is no definition given.  I would
 recommend simplifying that sentence, or explaining the terms.

I had that same thought, actually.

Also, is the section called pretty printing mistitled? Doesn't that 
name refer to the pprint module?

It looks real nice though.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-07 Thread Clodoaldo Pinto
bill pursell wrote:
 1) in the section on the interactive interpreter you have the sentence:
 In Linux open a shell and type python (must be lower case).  It
 would be nice if the word 'python' were in a different font, or perhaps
 in quotes, or something.  You're targetting the absolute beginner, so
 you should assume the reader is not familiar with the CLI.

Done, thanks.


 2) In the section on installing, you begin with:
 Python is an interpreted, interactive, object-oriented programming
 language..  The complete novice sees those words and expects
 them to be explained, but there is no definition given.  I would
 recommend simplifying that sentence, or explaining the terms.

Ok, i will think about something, or just delete it.

Clodoaldo

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-07 Thread Clodoaldo Pinto
John Salerno wrote:

 Also, is the section called pretty printing mistitled? Doesn't that
 name refer to the pprint module?

I didn't think about pprint. I used pretty in the sense of Pleasing or
attractive in a graceful or delicate way. (dictionary)

If you have any suggestions for that page's title please do so.

Clodoaldo

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-07 Thread Podi
For tutorial in Windows, I think it is better to use the more
user-friendly interpreter from
http://activestate.com/store/languages/register.plex?id=ActivePython.
Advise the user to just click on the Next button without submitting
the optional contact information.

My $0.02

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Programming Tutorial for absolute beginners

2006-04-07 Thread John Salerno
Clodoaldo Pinto wrote:
 John Salerno wrote:
 Also, is the section called pretty printing mistitled? Doesn't that
 name refer to the pprint module?

 I didn't think about pprint. I used pretty in the sense of Pleasing or
 attractive in a graceful or delicate way. (dictionary)
 
 If you have any suggestions for that page's title please do so.

It may not really be that misleading, especially if you've never heard 
of pprint before. But you can always call it something simple like The 
'print' statement
-- 
http://mail.python.org/mailman/listinfo/python-list