[lug] First Programming Language
Steve Litt
slitt at troubleshooters.com
Thu Jan 4 14:02:54 MST 2018
On Thu, 04 Jan 2018 11:35:25 -0700
"Michael J. Hammel" <mjhammel at graphics-muse.org> wrote:
> On Thu, 2018-01-04 at 10:27 -0700, Jed S. Baer wrote:
> > Oh, come now. Laying poor programming knowledge at the feet of
> > Python,
> > vs. any other language?
>
> I'd actually lay it at the feet of universities who teach Python
> because it's easy to learn, without backing it with the foundations of
> programming practice.
Puh-leeeeze. Python is popular: There's a chance of the student getting
a job based on knowing Python. I'd imagine most university and Junior
College instructors will add material about good programming practice,
but even if they don't, the newbie will learn that as a junior
programmer on his/her first gig.
With its indent-dependent syntax and lack of matching braces, Python
gets rid of one of the biggest stumbling blocks to newbies just trying
to learn how to run a loop and terminate on a certain condition. Its
lax typing means that they're not constantly and forever going to be
stopped in their tracks by a type violation in an otherwise sound
algorithm.
Python's lists and dictionaries make it extremely capable of doing all
sorts of simple and complex data abstractions, making it much easier
for the instructor to teach them how to substitute data complexity for
algorithmic complexity. References to functions (and therefore callback
routines) are much easier in Python than C because you don't need to
put all the data types in the declaration. Unlike C, Python has
built-in classes and objects. Unlike Java, Python students can postpone
learning classes and objects until it makes sense to do so.
Unlike many programming language, Python has a curated group of tested
and working add-ons resulting in the programmer's ability to finish the
job in Python rather than backing out and starting in another language
or doing some sort of kludge with another language.
Ask any instructor: The theory behind learning and instruction is "From
the familiar to the unknown." The quicker the student leaves the "what
the asf9872yh is going on here" mode to the "this I know to be true,
now let me try this small modification", the quicker the student
learns, and the less likely the student is to "drop out."
If I were teaching a non-programmer to program, I'd start with either
Python or Lua. And because Python is universally used and is a job
requirement many places, and because Python has addons that Lua
doesn't, I'd choose Python.
> The first hint to me that this was a problem was when I tried to
> examine XBMC plugins. Ugh. What a mess. But I've seen it at work on
> projects I came into after the fact as well.
Insane code can be and is found in any language.
> Absolutely. Except it's Python being taught at Universities, where
> the people I have to mentor come from.
Are you implying that's a bad thing? When I went to Santa Monica
Community College to learn programming, they started us out in Pascal,
for which there were almost no jobs. Had they started us out in
something more popular like C, all of our careers would have
accellerated. Teaching a minority language is no favor to the student
unless that minority language is especially easy to learn.
SteveT
Steve Litt
December 2017 featured book: Thriving in Tough Times
http://www.troubleshooters.com/thrive
More information about the LUG
mailing list