Re: Python?

great way to improve our dropout and drunkenly disorder rate. ;)

----- Original Message ----- From: "Juan Hernandez" <blindmagik@xxxxxxxxx>
To: <programmingblind@xxxxxxxxxxxxx>
Sent: Thursday, February 12, 2009 7:43 PM
Subject: RE: Python?


Teach them assembler first, that'll put them streight.

*smile*


-----Original Message-----
From: programmingblind-bounce@xxxxxxxxxxxxx
[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Tyler
Littlefield
Sent: Thursday, February 12, 2009 3:09 PM
To: programmingblind@xxxxxxxxxxxxx
Subject: Re: Python?

I think some would still like to strangle me, but the list has shortened
somewhat.
I think c/c++ is a great place to start, though c might be a bit stricter in
how it operates, the low level fundamentals are good to grasp.
Many people are totally against it, but I think there's a point; if I
would've started out on say visual basic, I probably wouldn't have ever
learned c++ because it was easier. Now I'm glad I learned c++ as it showed
me some of the lower level workings, which do help out in the longrun.
Though I think I did cause ken sina laura and many others brain damage along
the way. :) Peace,

----- Original Message -----
From: "Ken Perry" <whistler@xxxxxxxxxxxxx>
To: <programmingblind@xxxxxxxxxxxxx>
Sent: Thursday, February 12, 2009 3:53 PM
Subject: RE: Python?




I think I disagree with almost everyone on this list.  I first say I
wouldn't use python as a starting language this others have already said.
I
also will add I wouldn't use c++, visual basic, Java, Lisp, delphy, or C#
as
a starting language either.   I have seen the quality of coders that have
come out when they start with languages that I have mentioned above and
its
rather sad. The only thing I like as a starter language is pure C. The
reason is it's a very structured language it doesn't let you stick
variables
willy nilly throughout the code and thus forces a person to design first
and
code second.  It is also much better for someone to be told you must put
all
your variables at the first of a block than to say create one as you go.
It
also forces people to understand more of how a computer works by learning
about pointers without the toughness of learning in ASM.

The only language I would suggest over C if you're looking for more of a
English like language it would be Pascal 7 or below.  The reason for that
is
the same reason I gave above it is very structured and doesn't let you
stick
variables everywhere which just makes the code hard to read.

Now back to python.  I have been converted to python and love it but as a
first language there are real problems.  You have no type checking that
means you can do all kinds of funky stuff that you can't in other
languages
and if people get used to this they will be totally lost when they go into
another language.  It's also very odd how you can make functions in
functions in functions that can only be accessed inside of functions.  So
you end up having this tree of functions that only the functions below can
run while this is cool and can be found in Java it's a mess when your
teaching basic programming.  Of course you as the teacher can restrict
your
student to certain methodologies in python but the problem with that is
then
your limiting your students learning curve.  If you have some students
that
could jump right in and do objects why would you want to stop him or her
but
the problem with that is if you're trying to explain functional
programming
it don't help when they can do something in a total other way.

I guess the main reason I would not teach students with python is the same
reason I really like it now.  It's almost as bad as  c in that you can do
anything but it's worse than c in that when you do just about anything it
won't blow up like C so the person doesn't always know that they have done
something wrong.  You will not understand that till you get under about 3
layers of try except blocks and your program just stops and gives  you no
error messages.  Then you put in the debugger library and it stops at the
first layer and you think you found the problem but your hours away from
really finding it.

My goals in teaching a language are as follows

* Teach problem solving this includes searching on the web for information
if you can't use google you can't code that simple

* teach the difference between data centric coding and functional coding,
yes, yes I know that is not the real terms for it but that is the
difference
in a  nut shell.

* teach the person to use a compiler this knocks out all the interpreted
languages but if you can learn a compiler you can always go to interpreted
but it's not always the case the other way around.  I know lots of coders
that started in Perl and refuse to use another language because it's just
easier to use interpreted. This sounds like not a bad thing but there are
things that are just better done with compiled code take an operating
system
for example.

* teach the person to separate data from code even when coding in objects
it's important to have an abstraction layer so that your code can be
changed
at the fundamental base levels without having to recode the whole program.
This includes abstracting UI code from functional code so that your code
can
easily be ported take WebKit for example if they didn't abstract the UI
part
it wouldn't already be the base code for so many web browsers.

* teach the person on something they can get freely while python meets
this
C can be coded on any platform that exists while python still only works
if
first a c programmer creates a vm for the chip set.

* drill it into a student's head that it does matter how big your program
is
and that memory management is something they should understand on their
own
before they start using a garbage collected language.  Otherwise when
their
java, c++, python, pearl code starts running really slow they will
complain
and think it's a library when really what they are doing is sticking a
billion things in a dictionary that they thought they were just using as a
case statement and really they were cramming it so full the computer's
memory looked like a field of pregnant rabbits.

* teach profiling right off. So many students couldn't tell what is
slowing
their code down if you pointed at it with a denobian laser pistol.

* get the student into debugging.  If this means you write some really
messed up code and say ok first debug it best you can just by hand.  Then
use a debugger to test it more great.

*  Don't give the students answers make them look them up.  Tylor can
attest
to this when he first got on this list most of us wanted to strangle him
but
he has progressed to the point now he actually gets the right answer out
on
the list before I drag my but out of bed.

Well that is my rant for now and I am sure I missed lots but in short "C"
is
the only language for a new student like it or lump it.

Ken
-----Original Message-----
From: programmingblind-bounce@xxxxxxxxxxxxx
[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Suzanne Balik
Sent: Thursday, February 12, 2009 2:46 PM
To: programmingblind@xxxxxxxxxxxxx
Subject: Re: Python?

Thank you all so much for your thoughtful, informative responses. We had
a speaker here today discussing the pros and cons of teaching Python as
a beginning language so I wanted to hear what you all thought about it.
I will either forward your comments to him or point him to the archive
so he can read about the pros/cons of Python for blind programmers as
well your more pedagogical comments. Coincidentally, right after his
talk, a book rep stopped by and told me that many schools are switching
to Python as the beginning course.

Thanks again,
Suzanne
--
Suzanne Balik          Computer Science Dept  Box 8206
Adjunct Lecturer       North Carolina State University
EB II 2318             Raleigh, NC 27695-8206
(919)515-5617          http://www4.ncsu.edu/~spbalik

When life kicks you, let it kick you forward.  Kay Yow


Jamal Mazrui wrote:
As you may be aware, there seems to be an increasing trend toward using
Python in beginning computer science courses, e.g., as argued in the
following articles:

In Praise of Scripting:  Real Programming Pragmatism
http://www.cse.wustl.edu/~loui/praiseieee.html

Why Python is a great language for teaching beginners in introductory
programming classes
http://www.stanford.edu/~pgbovine/python-teaching.htm

The Case For Replacing Java With Python In Education


http://thinkingdigitally.com/archive/the-case-for-replacing-java-with-python
-in-education/

Teaching programming
http://gride.googlecode.com/files/lmuziol-teaching-summary.pdf

While a lot of these arguments are persuasive to me, I do think Python
presents significant usability obstacles to beginning blind programmers,
unfortunately.  I agree with the defense that indentation is a good
practice that sighted programmers expect, but the problem is not just
indenting code like in other languages.  With Python, there are no
keywords or punctuation marks that a screen reader user (with speech)
will automatically encounter when reading code.  Instead, one has to
often check the current indentation level and then translate that
mentally into a code grouping.  It is different for a sighted person,
where the grouping is simultaneously evident from the indentation as the
eye views multiple lines at once.  I agree with others that automatic
styling utilities/code beutifiers work well enough with other languages
so
that indentation can be adjusted for sighted consumption if not initially
done.

Another problem of Python is case-sensitivity.  Most languages are case
sensitive, so this is not unusual, but not getting tripped up by case is
friendlier to beginners.  A blind person hearing code is probably not as
aware of how identifiers are capitalized when different choices could be
made, e.g., OpenXMLFile or OpenXmlFile.

Another issue is how Python tends to run words together instead of
consistently using either PascalCase or snake_case.  This makes reading
with speech less intelligible.

Let me be clear that Python has a lot going for it -- I'm just citing
problems from a blindness perspective, since you asked.  These problems
are manageable with various techniques, as demonstrated by blind
programmers on this and other lists.  They are extra challenges,
however, that sighted beginners do not face.

Personally, I have come to the view that Visual Basic .NET is currently
the best language for a beginning blind programmer to learn.  I realize
it is Windows-oriented, however, rather than cross-platform, which may
be important in a computer science curriculum.

I guess the needs of someone wanting to graduate in CS or a related
subject are different from someone else, e.g., a liberal arts
major, who justs wants to take an introductory programming course.  It
can be expected that a CS-like student would need to manage challenges
that a casual programming student would not.  Also, a CS-like student
would need to learn more about theory and have a language that
supports advanced techniques.

Just my opinions -- others differ.

Jamal

On Thu, 12 Feb 2009,
Suzanne Balik wrote:

Date: Thu, 12 Feb 2009 08:07:29 -0500
From: Suzanne Balik <spbalik@xxxxxxxx>
Reply-To: programmingblind@xxxxxxxxxxxxx
To: programmingblind@xxxxxxxxxxxxx
Subject: Python?

Could some of you comment on using Python to teach programming at the
college level and the effect that would have, if any, on blind students?

Thanks so much,
Suzanne
--
Suzanne Balik          Computer Science Dept  Box 8206
Adjunct Lecturer       North Carolina State University
EB II 2318             Raleigh, NC 27695-8206
(919)515-5617          http://www4.ncsu.edu/~spbalik

When life kicks you, let it kick you forward.  Kay Yow
__________
View the list's information and change your settings at
http://www.freelists.org/list/programmingblind

__________
View the list's information and change your settings at
http://www.freelists.org/list/programmingblind

__________
View the list's information and change your settings at
http://www.freelists.org/list/programmingblind

__________
View the list's information and change your settings at
http://www.freelists.org/list/programmingblind


__________
View the list's information and change your settings at
http://www.freelists.org/list/programmingblind

__________
View the list's information and change your settings at
http://www.freelists.org/list/programmingblind


__________
View the list's information and change your settings at http://www.freelists.org/list/programmingblind

Other related posts: