|
|
Subscribe / Log in / New account

Charming Pythonistas (O'ReillyNet)

This article from O'Reilly's Women in Technology series looks at Python as a female friendly programming language. "Studies have shown that women tend to have low self-efficacy, to underrate their ability with computers, and even to view CS as more difficult than surgery! To combat this, we need to incorporate programming earlier and more extensively in middle school and high school curricula, using a language such as Python. Most programming languages require a great amount of abstract or technical detail and knowledge to do even the simplest tasks. Python strips away the cruft and allows you to program the way you think. A task you could assign a second grader, such as "print 'hello world'," is just as simple as it sounds when you use Python."

to post comments

Misdirection

Posted Sep 11, 2007 18:35 UTC (Tue) by ncm (guest, #165) [Link] (9 responses)

Programming correctly is fundamentally hard. Maybe, by making it seem simple at first, people who are smart enough to do it may be led to try, and some of them may find themselves interested enough to learn how to do it well. The rest probably won't do too much damage. Anyway they won't do any more damage than the legions already doing it who haven't learned.

Misdirection

Posted Sep 11, 2007 20:41 UTC (Tue) by zorgan (guest, #4016) [Link] (8 responses)

If programming is fundamentally hard (I might agree) then you want to select the best people possible for that job. You want to select them based on how good they are, not no how good they think they are (which may lose a big chunk of talented people with low self-efficacy). This works better if you make it seem easy at first so as many as possible get started and get a better idea of how good they actually are.

Misdirection

Posted Sep 11, 2007 22:23 UTC (Tue) by ncm (guest, #165) [Link] (7 responses)

The problem is that there are many, many more people who are not as good as they imagine. That's not a new problem, though. We might hope that by giving them more competition, some of it competent, the least competent will be driven from the field. Somehow that doesn't seem to happen.

We might hope, instead, that if a larger population feels more self-sufficient, they will not hire the incompetents to do work they are able to do just as well, and possibly better.

This word, efficacy ... I do not think it means what they think it means!

Posted Sep 12, 2007 14:34 UTC (Wed) by AnswerGuy (guest, #1256) [Link] (4 responses)

From my copy of dict

From The Collaborative International Dictionary of English v.0.48 [gcide]:

efficacy \ef"fi*ca*cy\, n. [L. efficacia, fr. efficax. See {Efficacious}.] Power to produce effects; operation or energy of an agent or force; production of the effect intended; as, the efficacy of medicine in counteracting disease; the efficacy of prayer. "Of noxious efficacy." --Milton. Syn: efficacy. [1913 Webster] Syn: Virtue; force; energy; potency; efficiency. [1913 Webster] efficience

From WordNet (r) 2.0 [wn]:

efficacy n : capacity or power to produce a desired effect; "concern about the safety and efficacy of the vaccine" [syn: {efficaciousness}] [ant: {inefficacy}]

Even setting this malapropism aside, the argument that introducing programming earlier in school curricula is a dubious one. Mathematics is introduced very early in the curriculum and women, statistically, exhibit a lower self-confidence in mathematics, too.

Python is a fine scripting and programming language. I think efforts to try to "push" it are misguided. Find places in the existing curriculum where Python can be used to express a process, and use it ... then show how the results can be run on a computer to demonstrate the point.

I also recommend teaching "scripting" first ... and then introducing more advanced programming topics later. Of course there is no bright line distinction between scripting and programming. However, if you teach programming from a formal computer science basis, introducing lots of mathematical concepts such as complexity theory and "big-O" notation, before giving the student simple, practical, hands-on experience, then you'll "scare away" lots of people who could eventually be perfectly competent.

(One possible, loose, distinction between "programming" and "scripting": "programming" is what programmers do; scripting is how non-programmers write programs).

JimD

This word, efficacy ... I do not think it means what they think it means!

Posted Sep 12, 2007 17:44 UTC (Wed) by quartz (guest, #37351) [Link]

Wrong and wrong.

Self-efficacy is a psychology concept of how much you believe you can do (or learn) skills.

Although I tend to favour compiled languages, saying that scripting languages does not equate to programming is an offense to a fair share of open-source programmers.

This word, efficacy ... I do not think it means what they think it means!

Posted Sep 12, 2007 23:39 UTC (Wed) by ncm (guest, #165) [Link]

There's not much use in complaining about psychobabble neologisms; there are many more where those came from. That said, "self-efficacy" is worse than most.

This word, efficacy ... I do not think it means what they think it means!

Posted Sep 13, 2007 23:47 UTC (Thu) by jschrod (subscriber, #1646) [Link]

I agree with your sentiment, and want to add one tidbit: Actually, the most often used programming environment for non-programmers worldwide is not scripting, but spreadsheets. And that means Excel, most often, sad as it is.

If I look at the (often rather complex) algorithms and mini-applications that business staff realize with Excel, I'm often startled. Once I saw one who had programmed a whole project tracking system in Excel, including resource allocation and Gantt charts. HR and finance buffs program a lot; they just don't know that we call this constraint-based programming in Computer Science. And, as long as they don't know that it's this terribly technical and difficult programming thing, they are actually very successful in it.

Programming in imperative languages is hard. (Python included.) But there are other paradigms that can be used more successful by non-programmers. (Besides spreadsheets, programming by demonstration comes to mind, too).

Does introducing programming earlier help?

Posted Sep 20, 2007 15:12 UTC (Thu) by anton (subscriber, #25547) [Link]

the argument that introducing programming earlier in school curricula is a dubious one. Mathematics is introduced very early in the curriculum and women, statistically, exhibit a lower self-confidence in mathematics, too.
Indeed, I have the impression that the proportion of females in our university-level computer science program dropped when the computer course in secondary school became compulsory. However, I don't know how much programming they do there anymore (they used to, though).

... there are many, many more people who are /not/ as good as they imagine ...

Posted Sep 14, 2007 19:25 UTC (Fri) by apgodshall (guest, #40634) [Link] (1 responses)

One way that computer programming is that one constantly tests oneself against the machine.

So I would say that as a group, computer programmers have a much better idea of how good they are, at least of the quality of their logical faculties, than the practitioners of almost any other profession.

Sure, engineers and scientists have that too, but there's not the same kind of immediate feedback, the I am such an idiot moments, in any other profession I can think of.

... there are many, many more people who are /not/ as good as they imagine ...

Posted Sep 14, 2007 19:39 UTC (Fri) by nix (subscriber, #2304) [Link]

The machine is fairly forgiving, though. It doesn't matter if you write
crap, as long as it's crap that barely works. Even maintainability often
goes by the wall to get it out on time (sigh).

I see this over and over and *over* again in the proprietary software
world. One of these days I really must get out of it; it's ethically icky
*and* the code sucks rocks. (So does the pay, but that's another matter.)

Charming Pythonistas (O'ReillyNet)

Posted Sep 11, 2007 23:51 UTC (Tue) by salimma (subscriber, #34460) [Link]

In Python 3.0 that will be
print('Hello world')
Less exceptional statements to deal with!

Charming Pythonistas (O'ReillyNet)

Posted Sep 12, 2007 1:58 UTC (Wed) by i3839 (guest, #31386) [Link] (12 responses)

> just as simple as it sounds when you use Python.

Yeah, right. Except that it should had been something more like "write hello world" (or show/display) to be a good argument, now it's just silly.

Look, there's nothing wrong with advertising your favourite language, but don't try to mix it up with unrelated things like "women in technology". Saying things like "women should use Python because of these advantages of Python" reeks of sexism. "Python for women, C for men", anyone? Didn't think so.

Programming isn't about programming languages, or shouldn't be anyway. Which language is best to use depends what tool is needed and the person using it.

Python is a good language for new programmers because it's so easy to get started, no hassle with compilers or makefiles. So it's a good way to learn programming, as are some other script languages. And when just learning programming it doesn't matter much what language you use, because the basic principles are the same anyway (languages like Haskell and prolog excluded). And later on it depends on the programming style of the person and of the project which language to use.

Charming Pythonistas (O'ReillyNet)

Posted Sep 12, 2007 6:53 UTC (Wed) by salimma (subscriber, #34460) [Link] (1 responses)

Haskell is actually not that bad, syntax-wise, as a language to teach programming.

The problem is that it's traditionally been used to teach functional programming, and this, combined with Haskell's lazy evaluation, risk confusing students if the more 'bizarre' concepts are piled on too fast.

I'd pick Haskell to teach over, for example, Java, if not for the need to prepare students with knowledge of mainstream imperative languages (for, e.g., data structure class)

Charming Pythonistas (O'ReillyNet)

Posted Sep 12, 2007 13:31 UTC (Wed) by i3839 (guest, #31386) [Link]

I tried to say that for new programmers it doesn't matter much what imperative language they use as the basic is the same for all of them. I ruled out Haskell not for its syntax or because it might be harder, but because it's a different paradigm (sadly I don't know Haskell, so I assumed it's always functional). My point was that if you can program in one imperative languages, you can program in all of them, after learning the new syntax, its particularities and the standard libraries provided.

It saddens me that new students learn Java, personally I really don't see the point of it. It's a failed high level language, better to learn either Python or C. Same for C++.

I don't think that functional languages confuse people when they didn't learn an imperative language before, or do they?

Charming Pythonistas (O'ReillyNet)

Posted Sep 12, 2007 8:31 UTC (Wed) by jordanb (guest, #45668) [Link] (9 responses)

> Look, there's nothing wrong with advertising your favourite language,
> but don't try to mix it up with unrelated things like "women in technology".
> Saying things like "women should use Python because of these advantages of
> Python" reeks of sexism. "Python for women, C for men", anyone? Didn't think
> so.

The article argued that Python is a 'novice friendly' language, which is probably very true, and because it's on a weblog about women programmers, it notes the usefulness in teaching programming to novice women. I don't see any sexism there. Any more than it takes to admit that programming is something like ninety percent male so clearly there's a connection that's not being made somewhere.

In terms of novice programming, though, it's a shame that logo died. The nice thing about it was that it was instantly visual. Rather than your first program being one that printed "Hello, World!" it could be one that drew a box. The downside I guess is that you have to switch to something else to do anything useful.

Charming Pythonistas (O'ReillyNet)

Posted Sep 12, 2007 9:26 UTC (Wed) by danielpf (guest, #4723) [Link]

> In terms of novice programming, though, it's a shame that logo died. The
> nice thing about it was that it was instantly visual. Rather than your
> first program being one that printed "Hello, World!" it could be one that
> drew a box.

This reminds me of futuristic extensions to Basic on the Apple][ (ca 1983) that I have never seen again. It was possible to write in Basic something like

PRINT "image"

where "image" was a picture, or any fancy font string. The nice thing was that "image" appeared as such in the source code, and "image" could be manipulated with string operators.

There is certainly a need to extend computer languages toward using character sets like Unicode (Fortress) or more complex objects like images.

Dan

Charming Pythonistas (O'ReillyNet)

Posted Sep 12, 2007 11:42 UTC (Wed) by tialaramex (subscriber, #21167) [Link] (2 responses)

Did LOGO really die? I got the impression that schools still have those robot turtles which are designed to let primary school kids grapple with programming by making it very visual and interactive.

The trouble is that too many people get the impression you have, that LOGO is primarily about turtle graphics, which would be like starting C programming classes with printf("Hello, world."); and then imagining that formatting type written output is the main feature of C...

LOGO is a fully fledged functional language, you can teach introductory programming at a University degree level with it, so it's certainly good enough for secondary school classes, if only secondary schools actually ran programming classes, and if only they understood that we're supposed to be teaching children generally useful things about the world rather than how to be good consumers of pre-packaged software.

Charming Pythonistas (O'ReillyNet)

Posted Sep 13, 2007 22:41 UTC (Thu) by dag- (guest, #30207) [Link]

How about SCRATCH ?

Charming Pythonistas (O'ReillyNet)

Posted Sep 16, 2007 2:16 UTC (Sun) by undefined (guest, #40876) [Link]

#/usr/bin/env python
import turtle
turtle.demo()
# :-D

Charming Pythonistas (O'ReillyNet)

Posted Sep 12, 2007 13:55 UTC (Wed) by i3839 (guest, #31386) [Link] (4 responses)

> I don't see any sexism there.

I don't say the article is, just that it's very close to being that. Because it starts with the problem that there are not enough women doing IT stuff, and ends by advocating to teach people an easy to learn language such as Python. Why that would help to bring relatively more women than men aboard isn't made clear, but sort of assumed.

Coupling two unrelated things together without justification is close to discrimination. Of course it makes the article more juicy, but people should be aware of what they're actually doing.

Charming Pythonistas (O'ReillyNet)

Posted Sep 13, 2007 0:53 UTC (Thu) by jordanb (guest, #45668) [Link] (3 responses)

Well, it seems to me that the author most liked the low amounts of boiler plate involved in doing simple things in python. Boiler plate doesn't seem like much of a big deal to experienced programmers, but to beginners (especially ones who lack confidence) it can seem like meaningless magic incantations you have to type to make the computer do what you want. If the teacher decides to take the mystery away by explaining what it does, all the sudden you get slapped with a whole bunch of pretty abstract concepts right out of the door.

Consider teaching C. To understand all the boiler plate you have to understand the concept of libraries and linking, of functions, of a program's main function, and of returning values, all just to write a proper hello world program in C!

You can imagine if a student is already somewhat afraid of the machine and unsure of her abilities, getting all those things thrown at her right at the beginning would be a real mind-blower, big enough to put her off of it for good.

If the instructor says "you don't have to understand any of that yet, just know that you MUST type it to make your program work" then it all stays black magic to her, reinforcing the idea that programming is obscure and mysterious.

The author's point seems to be that Python is good for teaching girls who might otherwise stay away from computers out of fear, because students can quickly build confidence doing tasks in which new concepts can be brought up slowly, and the magic boiler plate is minimized.

Charming Pythonistas (O'ReillyNet)

Posted Sep 13, 2007 15:54 UTC (Thu) by i3839 (guest, #31386) [Link] (2 responses)

Yes, yes, but the same is true for boys, isn't it? So sure, starting with Python is good and will probably motivate more girls, but also more boys.

What I'm missing is reasoning why there will be relatively more girls than boys tempted by Python.

There's a problem (not enough women), there's a cause for that (unclear), and a solution (Python). Providing a solution without making clear how it counters the causes or solves the problem is strange.

Charming Pythonistas (O'ReillyNet)

Posted Sep 13, 2007 16:34 UTC (Thu) by jordanb (guest, #45668) [Link] (1 responses)

> there's a cause for that (unclear)

The author's argument is that problem is the result of girls lacking confidence ('self-efficacy') and therefore being scared away by too much theory too quickly. You can agree with that or not, but she is staking out a clear position on why she thinks there aren't girls in programming, before explaining how python could be used to deal with that.

Charming Pythonistas (O'ReillyNet)

Posted Sep 13, 2007 17:43 UTC (Thu) by i3839 (guest, #31386) [Link]

I'm not sure where you got the too much theory part from:

> Introductory courses that use integrative projects that focus on principles
> over programming, or that link science to applications, help broaden
> students vision.

That sound exactly like more theory and less coding! And yet the article focuses on coding instead of principles as one of the solutions.

There are plenty female mathematicians, so the amount of theory and abstraction clearly isn't the problem.

I don't know if I agree with the author or not, there's not enough information in the article to make a good conclusion.

Teaching how to program

Posted Sep 13, 2007 8:30 UTC (Thu) by massimiliano (subscriber, #3048) [Link] (1 responses)

My view might be a bit extreme, but the more I think of it, the more I'm convinced it works.

IMHO, after some base logic concepts like flow charts, which help you organize an algorithm in a clear way, I should teach fundamental hardware notions, a simple assembly language, and the way in which you must lay data in memory in order to work with them.

This includes first of all how to use memory addresses, then the stack, and the various ways to pass parameters (value, reference, value-result...) and how they can be implemented on a physical stack.

Then the issue of the heap, why it is necessary, and how to manage it, and basic data structures (lists, trees, and so on).

After that, compilers, interpreters... my point is that if you really want to program professionally, you should have a clue about what's going on under the hood. Teaching those basic concepts should take no more than a few weeks, but the insight they give you is simply invaluable (provided that you understand them, of course).

If you don't have that insight, you'll never understand the limits of the things you use. You can use them in "normal" situations, but you don't even have a clear definition of "normal", so out of that region you are lost.

This has been the way I learned how to program (I must say, by myself), and IMHO it worked well for me. Now I love high level languages, but I also know what are the implications when I use them...

That said, Python is a nice language even if I never use it :-)

Teaching how to program

Posted Sep 13, 2007 12:54 UTC (Thu) by caid (guest, #21513) [Link]

I think the approach Abelson and Sussman used when teaching the SICP course in the 1980:ies is still the most interesting "introduction" to programming I've even seen. Not terribly commercially viable, but I enjoyed watching the videos and reading the book a lot.

If you're not familiar with it, I suggest visiting the course website


Copyright © 2007, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds