|
|
Subscribe / Log in / New account

The next generation of Python programmers

The next generation of Python programmers

Posted Apr 24, 2014 8:55 UTC (Thu) by jschrod (subscriber, #1646)
In reply to: The next generation of Python programmers by gnacux
Parent article: The next generation of Python programmers

> [...] Math [...] Science is what students should learn, not coding.

When I compare the Math I learned in high school with real Math at university, I have to question that students in high school learn Math as science. They learn arithmetic, some trigonometry, and some curve scetching. Not what I would call Math science. (And I only had bachelor-level classes, didn't got to the master-level.)

That's OK, and that would be the same with CS: In a CS high school class students might learn some programming. A very valuable skill today in many professions -- even if one doesn't do it, one may understand possibilities and limits of projects where one is involved. But, as with Math, they will not learn what Computer _Science_ is. Nor will they learn computer-related Engineering, e.g., Software Engineering.

At least that's the situation in Germany; don't know the US curricula.


to post comments

The next generation of Python programmers

Posted Apr 24, 2014 9:19 UTC (Thu) by anselm (subscriber, #2796) [Link] (16 responses)

When I compare the Math I learned in high school with real Math at university, I have to question that students in high school learn Math as science. They learn arithmetic, some trigonometry, and some curve scetching. Not what I would call Math science.

The big difference is that mathematics at school is mostly about calculating stuff, while mathematics at university is mostly about proving stuff. This means that in school you're dealing with actual numbers but in university you mostly don't. 90% of the time you get by with 0, 1, and 2 (possibly with »i« thrown in if you need it); seeing a 3 once in my undergraduate analysis class felt really strange at the time.

One could quibble about whether schools teach the right sort of calculation (many students would probably be better prepared for life being able to do back-of-the-envelope type approximations and simple statistics than calculus and trigonometry) but high-school maths does have its occasional uses in life even if you're not a scientist. In the same vein, high-school computer programming should have its uses in life even if you're not a professional computer programmer. Professional computer programmers tend to find it difficult to understand how people go through life without being able to get a computer to do tedious things for them, but it mostly means those people get to do these tedious things themselves, or the tedious things are left completely undone.

The next generation of Python programmers

Posted Apr 24, 2014 11:55 UTC (Thu) by fb (guest, #53265) [Link] (15 responses)

One thing I noticed through many (university-educated) acquaintances who know nothing about programming, is how much of a 'magic box' a computer is for them.

I don't hope for high-school courses to prepare folks to write handy scripts 2 years after the class, but I think an _exposure_ to the most basic procedural methods would already be invaluable. Much like the "hour of code" attempts to do.

With regards to computer concepts that could help in real life, some demos and exercises could help a lot with identity theft and security breaches in general, like showing (i) a line by line script to capture the keyboard output, or (ii) using Wireshark to monitor unencrypted network traffic, (iii) reading through one of many compromised customer databases and how much private information of each customer became "public", (iv) using Ghostery to visualize how many people are getting informed of each page visit you make. At least these are the stuff I've present to friends to ask about it...

The next generation of Python programmers

Posted Apr 24, 2014 16:04 UTC (Thu) by tialaramex (subscriber, #21167) [Link]

Indeed. For example, this week I was met with equal surprise for announcing that deleting a bunch of obsolete data from a database would take me less than an hour and for pointing out that one week isn't enough time to conduct an organised migration from github to another (presumably cheaper? Not my problem) service.

Seems obvious to us, but to someone with no relevant expertise the github migration seemed like we should just change some bookmarks in our web browsers to point to the new provider, while the DB change meant (in their heads) laboriously selecting and deleting millions of records. Neither mental picture was anywhere close to correct.

-

I think CS is a special case, but even if it wasn't, I am reminded of my mother's experience at high school in the 1960s. She learned to type. Most of her contemporaries did not learn to type because typing was a menial skill of no relevance to professional careers. But of course by the late 1980s, when these people were actually mid-career, being unable to type was a significant frustration. She had never been a terribly good typist, but just being able to touch type at all was a big advantage in management jobs by that point, as "typing pools" gradually went out of existence and anybody below executive level was expected to do their own typing using a computer.

The next generation of Python programmers

Posted Apr 24, 2014 22:01 UTC (Thu) by mm7323 (subscriber, #87386) [Link] (13 responses)

Not everyone should need to understand code at any level.

Instead, and as I was taught, it is the job of the Computer Scientists and Engineers to make computers usable for all.

The way this is done is by making tools and languages that simplify and abstract from the necessary complexities of how a computer works, until the point is reached that someone can effortlessly and usefully make use of a computer.

The extreme example of this is perhaps animators manipulating NURBS surfaces in some application written in a high level language, which has been compiled by yet another tool to run atop of an operating system that provides yet more abstraction from the actual complexities of making hardware useful.

Requiring people to learn to code just means we haven't written the right tools yet.

PS: Spreadsheets were a great leap forward.

The next generation of Python programmers

Posted Apr 24, 2014 22:35 UTC (Thu) by dlang (guest, #313) [Link] (1 responses)

There's a subtle difference between

everyone should have to write code to make their computers work

and

everyone should understand what coding is

I agree that the normal person should not have to write code to get things functional

but the average person should have at least some inkling of what's involved.

Think of it this way.

The normal individual should not need to be an Electrical Engineer.
But it really does help to have at least some idea how electicity works.

i.e. it goes through metal and water, but not plastic/wood, high voltage is dangerous, low voltage less so) so that they can reasonably differentiate between the dangers involved with handling different types of cables and wires.

right now, most people are like loin-clothed savages wandering around an electrical room when it comes to computers. They don't know what anything does, they know that sometimes if they touch things they get shocked, and they can be trained that throwing a specific combination of switches in a specific order usually gets the lights to come on.

just a little bit of knowledge can both make them much more effective, but also make them much more comfortable.

The next generation of Python programmers

Posted Apr 26, 2014 14:20 UTC (Sat) by nix (subscriber, #2304) [Link]

Quite. It teaches them that computers are not magic boxes that do only what they want to, at whim: they are perfect but stupid servants that do whatever you ask of them as long as you ask simply enough, that we've taught to do so much that they *appear* to be magic boxes.

(Except that some people have decided that locking these perfect servants so they don't accept instructions from their actual owners is a good thing. Pfui.)

The next generation of Python programmers

Posted Apr 24, 2014 22:58 UTC (Thu) by anselm (subscriber, #2796) [Link] (3 responses)

Automotive engineers spent the better part of the last century making cars easier to use. This means that as a driver you no longer need to be able to take your engine to bits and put it together again the way you used to when the idea was new. However, driver education still attempts to give people a rough idea of how cars actually work, and a general awareness of this tends to make one a better driver. We still do need to push the pedals and turn the wheel ourselves to make a car go anywhere, although that is being worked on.

In the same spirit, a general awareness of how computers work will do people a lot of good, even though they should not be required to take them to bits and put them together again (in either hardware or software). Maybe in another 50 years or so, judging from how things went with cars, we will have figured out how to make computers truly usable. In the meantime, spending a semester or two in school writing short programs in something like Python will do nobody any harm, and probably give them a reasonable idea of what computers are actually about. It's certainly more useful, as life skills go, than dissecting frogs. Consider it pushing the pedals and turning the wheels while we're waiting for the fully automated computer that will do what we want without our having to spell it out in detail.

The next generation of Python programmers

Posted Jun 9, 2014 21:45 UTC (Mon) by Duncan (guest, #6647) [Link] (2 responses)

Your automotive example reminded me of a family story from I'd guess about 70 years ago, in an incident that still rings true today.

My grandmother and her sister were travelling some distance, and stopped at a service station along the way for a fillup. Now the (crooked) operator offered to check the oil, and showed them the dipstick registering a quart low, so they bought one and put it in. On the way home they stopped at the same place, which evidently had a good price on gas as he was subsidizing it with oil sales, and the same thing happened. The poor engine ended up drowning in oil and they had a breakdown some way from home. My great grandpa had to pick them up.

First thing the next day he taught them how to check the oil themselves. Not how to change it, just how to check it, and where to top it off if need be.

Similarly, I've heard of people mixing up the oil and gas, and perhaps it's just the way I was raised (I remember several times helping my dad change a tire), but it still seems odd to me that so many people have to call a tow truck to change a tire!

An extremely basic level of automotive skills, knowing where the oil and gas go and how to check them, and how to change a tire, may not be absolutely required to "know how to drive", and arguably unfortunately that isn't covered on a driving test, but it sure helps, and that's as true today as it was about 70 years ago when that crooked gas station operator ended up killing the engine in my grandmother's car.

Same thing with computers. Having some idea of the basics so they aren't simply black-boxes really does help.

The next generation of Python programmers

Posted Jun 9, 2014 22:16 UTC (Mon) by khim (subscriber, #9252) [Link] (1 responses)

Similarly, I've heard of people mixing up the oil and gas

But you are supposed to do that!

The next generation of Python programmers

Posted Jun 10, 2014 12:29 UTC (Tue) by mathstuf (subscriber, #69389) [Link]

I think the context here for "mixing up" is closer to "swapping", not "combining". (If you're just making a joke, carry on :) .)

The next generation of Python programmers

Posted Apr 25, 2014 0:57 UTC (Fri) by neilbrown (subscriber, #359) [Link] (6 responses)

> Instead, and as I was taught, it is the job of the Computer Scientists and Engineers to make computers usable for all.

Yes, but ....

When I watch intelligent non-experts work with computers I am often struck by a particular fact. They fail to understand various interactions or details which jump out as obvious to me, and it is because they lack a depth of understanding which I take for granted.

I think that modern UI design actually makes it harder for users to gain that understanding. Details are hidden, boundaries are blurred. This is done in the cause of making it easy to use. Maybe it succeeds in the short-term but by hiding details it makes it hard to see and learn the underlying model and so hard to progress beyond a simple understanding.

So I agree that it is our job to make computers easy to use, but I don't think we are doing a very good job for the long term. We need to expose the important internal details, not try to hide them.

My pet peeve is the 'back' button on my Android tablet. Sometimes it goes to a previous screen in the current app, sometimes it goes to the previous app. I can mostly figure out what to expect but that is because I'm used to computers following very subtle and non-obvious rules. I can well imagine a person with a different approach to computers absolutely hating in.

The reality is that there are two very different "Back" concepts and conflating them into the one button is a mistake.
This certainly isn't the only mistake, just the one that annoys me at the moment.

So I think we as developers need to expect and encourage some degree of understand in our users, and not hide so many details that they can never learn.

The next generation of Python programmers

Posted Apr 25, 2014 7:01 UTC (Fri) by dlang (guest, #313) [Link] (2 responses)

> I think that modern UI design actually makes it harder for users to gain that understanding. Details are hidden, boundaries are blurred. This is done in the cause of making it easy to use. Maybe it succeeds in the short-term but by hiding details it makes it hard to see and learn the underlying model and so hard to progress beyond a simple understanding.

a GUI is like training wheels, it is a great help to get you started, but eventually it tends to limit what you can do.

keyboard shortcuts are a start at bypassing the training wheels, but only a start

The next generation of Python programmers

Posted Apr 25, 2014 16:12 UTC (Fri) by raven667 (subscriber, #5198) [Link]

Any program is going to be limited in how it operates by the imagination of the person who designed it, this is a fundamental nature of computer software, it only can do what it was programmed to do, how it was programmed to do it, it's hard to get emergent or flexible behavior out of someone else's program. The only way to be truly flexible is to write your own software.

The next generation of Python programmers

Posted May 1, 2014 18:42 UTC (Thu) by smorrow (guest, #95721) [Link]

>> I think that modern UI design actually makes it harder for users to gain that understanding.
> a GUI is like training wheels, it is a great help to get you started, but eventually it tends to limit what you can do.

Agreed.

> keyboard shortcuts are a start at bypassing the training wheels, but only a start

I have no idea what you're trying to get at with this. If you'd have said a command line, I'd see what you mean -- for a tastefully-designed (stdin/out) command-line program, once you know how to use it interactively, you also know how to use it in a script: `ed(browse) < ./oneIwrote.earlier` or `generatecommands | ed(browse)`, you can also be sure what the behaviour's going to be if you type-ahead at it while it's busy, you can also use the mouse to copy and paste commands as well as just data, etc, etc -- but keyboard shortcuts? What's the advantage? (Other than speed, which is less important than power, generality, transparency, ...) Keyboard shortcuts isn't a fundamentally different/better paradigm from GUI - most keyboard shortcuts correspond to menu items, and are about as flexible, in that you can't compose them together or arrange for them to be called in a loop or whatever. Ctrl-O isn't an improvement over File>Open in any way that I can see, but a proper command line's equivalent of ^O would get you glob, variable, and backtick substitution.

The next generation of Python programmers

Posted Apr 26, 2014 14:23 UTC (Sat) by nix (subscriber, #2304) [Link] (2 responses)

Quite.

The first great mistake was throwing away the (relatively new) concept of the pipeline when windowing systems came in. Without the ability to even instruct the machine to do the simplest things in sequence, the user interface has just got cruder ever since then. (Macro languages do *not* help: you have to be a programmer of some stripe to even start to use them without being scared off.)

There is surely a graphical way to model this -- I am reliably told that the original PARC windowing system had one -- but apparently it was dropped :(

The next generation of Python programmers

Posted May 1, 2014 22:41 UTC (Thu) by smorrow (guest, #95721) [Link] (1 responses)

IPC other than pipes clearly exists, but pipe is the only one that non-programmers know about. Why is this? Maybe because programs have to be specially written to use other forms of IPC, but pipes just work everywhere.

If that's the single most important thing about pipes (is it not?), then what's the GUI equivalent of that? Copy and paste is the closest thing I can think of.

It's too bad most research in HCI seems more concerned with tacky things like virtual/augmented reality.

The next generation of Python programmers

Posted May 6, 2014 12:12 UTC (Tue) by k8to (guest, #15413) [Link]

There were many attempts in the 90s to do gui forms of IPC. The commercial variations were things like OLE embedding, OpenDoc(TM), HotLinks, Publish/Subscribe. They all felt much clumsier than they were worth and were stability nightmares.

There were some more researchy things like oberon and smalltalk, but I don't know how close to practical they ever became.


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