User: Password:
|
|
Subscribe / Log in / New account

The next generation of Python programmers

The next generation of Python programmers

Posted Apr 23, 2014 17:30 UTC (Wed) by gnacux (guest, #91402)
Parent article: The next generation of Python programmers

Students in high school should focus on Math,Physics and Chemistry. Coding is not science. It's more like engineering. Science is what students should learn, not coding.


(Log in to post comments)

The next generation of Python programmers

Posted Apr 23, 2014 17:48 UTC (Wed) by Kamiccolo (subscriber, #95159) [Link]

I'd like to contradict with following 2 pennies:

a) Motivational. Usually practical use of mentioned sciences (especially maths) in high-schools is forgotten. So, out of psychological context --- "why should I learn this if it has no practical use or I can't see that?"

Programming is one of the ways of concluding everything else You've learned so far and hitting Your guts with feeling that, "oh, damn, to get this game/robot/whatever working, I need to do some calculation/research/whatever.

b) Discipline. Python, comparing with some other languages, brings huge burden of discipline. Yeah, I'm talking about forced indentation. In another hand, the disciplined does not seem that bad and forced if You're motivated to do something interesting (game/robot/whatever) or You're just trying to get practical sense in other sciences. (goto a))

btw, who says that engineering isn't science? We should ban art, physical education, literature classes too. Those seem like a solid science even less.

The next generation of Python programmers

Posted Apr 24, 2014 2:47 UTC (Thu) by wahern (subscriber, #37304) [Link]

''why should I learn this if it has no practical use or I can't see that?'"

Anything you learn in a classroom setting feels like it has no practical use. Introductory comp.sci classes are hardly the exception. If anything, they tend to drive people away. Better to just start hacking away to learn the rudimentary stuff--variables, values, expressions, functions, operators. By the time it becomes important to understand basic algorithms and data structures, if you're not already self-directed you're a lost cause, anyhow.

The barrier to entry for learning computer programming (which is what most people associate computer science with, and what any computer science class will be based around) is basically nil. If you need class time, please walk away. In reality computer science classes in high school will just be an excuse for kids who are already programming to pad out their schedule. Maybe they take comp.sci classes instead of calculus or AP history. Not something I'd like to encourage.

The next generation of Python programmers

Posted Apr 24, 2014 4:30 UTC (Thu) by mathstuf (subscriber, #69389) [Link]

> If you need class time, please walk away.

Not every family can afford a computer to cede to their child(ren) for tinkering.

> In reality computer science classes in high school will just be an excuse for kids who are already programming to pad out their schedule. Maybe they take comp.sci classes instead of calculus or AP history.

IME, those who are programming on their own wouldn't seem to be just padding their schedule (frankly, the college course I did take my senior year for programming was almost[1] a waste of my time since by the end of the semester we had gotten to for loops…) and are more likely to have an interest in the other sciences and take those AP courses.

My high school didn't have AP-branded courses before I graduated (and when I took the AP tests, we were slightly different, but at a comparable pacing), but I'd be more likely to believe that rumors of difficulty (Advanced Bio for my high school) scare more students away from the advanced courses than "but I can just take this easier class" from those who even consider AP classes in the first place.

[1]I got transfer credit, so it gave me an extra elective in college.

The next generation of Python programmers

Posted Apr 24, 2014 7:37 UTC (Thu) by dlang (subscriber, #313) [Link]

> Not every family can afford a computer to cede to their child(ren) for tinkering.

This is exactly where the Raspberyy Pi (and similar) should come into play. At $25/student (they don't need network to get started) this should be able to be something like their school books that can be provided to every student. It's also the type of thing that is sexy enough to be able to run a fundraiser (or apply for donations/grants) to fund if the school can't afford it directly.

The next generation of Python programmers

Posted May 1, 2014 11:30 UTC (Thu) by farnz (subscriber, #17727) [Link]

You also need a screen and a keyboard. Call it $35 for Model A and a reasonable keyboard (assuming that kids can use a household TV for a screen), or $135 (allowing for the cost of a reasonable second hand TV as a screen) for kids whose parents won't let them use the household TV.

The next generation of Python programmers

Posted May 1, 2014 13:24 UTC (Thu) by mathstuf (subscriber, #69389) [Link]

There's also a router and Ethernet cables to get if you're just riding on an ISP-provided modem. Or wireless, but then you lose half your USB ports.

The next generation of Python programmers

Posted May 1, 2014 21:20 UTC (Thu) by dlang (subscriber, #313) [Link]

why do you have to have Internet access for a programming class?

Yes it's convenient, but that's not the same as mandatory.

The next generation of Python programmers

Posted May 1, 2014 21:27 UTC (Thu) by mathstuf (subscriber, #69389) [Link]

The start of half of this was:

> If you need class time, please walk away.

so this wasn't about the class time anymore (I was asserting that class time may be the only time you have access to tools). For a *class*, sure a network isn't necessary, but for self-teaching at home, I'd think it'd be more beneficial than a book these days (hell, there are online books that are better than dead-tree books[1]).

[1]http://learnpythonthehardway.org/

The next generation of Python programmers

Posted May 1, 2014 21:38 UTC (Thu) by dlang (subscriber, #313) [Link]

you should be able to have the electronic copies of the books that they need on the SD card that they boot from.

While I agree that Internet access (and the ability to search for answers) is very handy, I disagree that it's a requirement for someone at home to learn programming.

I know that if it was mandatory, I would never have learned ;-)

The next generation of Python programmers

Posted May 1, 2014 21:26 UTC (Thu) by dlang (subscriber, #313) [Link]

you don't need a "reasonable" keyboard, you need a keyboard. These are cheap and you can probably get donations pretty easily.

Yes you can say that they need to spend $135 to buy a TV, but given that you can get a HDMI/DVI monitor for <$100 on sale, why would you spend more?

And that's assuming that they can't use the TV. It's also possible for them to use the monitor and keyboard of the family computer without using that computer (with all the things people are worried about there)

It's also easy to have a 'lab' at school that just has TVs, or TVs + Pi computers (without the SD cards) so that there is no software maintinance hassle and let the kids use that at lunch and before and after school (you do need to pay for a teacher to sit in that room during that time)

Yes, there will be kids this doesn't work with. There are kids that schoolbooks don't work with, but you can get pretty good coverage here cheaply.

The next generation of Python programmers

Posted May 2, 2014 10:27 UTC (Fri) by farnz (subscriber, #17727) [Link]

I think you've misunderstood my numbers; they're cumulative numbers. So, I've taken your $25 for a Pi and a memory card, and added $10 for a keyboard (Amazon Basics keyboards are $11.49, so $10 isn't unreasonable for a keyboard). This gets me a basic price of $35 for a usable device for a kid; note that IME, many family computers now are laptops without separate keyboards.

Then, I looked at Amazon.com for the price of a monitor. $100 seemed to be about right for a cheap TV or monitor, sans delivery. Allow for the fact you're buying in bulk, and you should be able to get monitors for $100 for the kids who can't use their home TV. That gets me to a total of $135 for kids who can't use a home TV either.

The next generation of Python programmers

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

Monitors, $40 shipped (17" LCD), pricewatch.com.

Now based on years of shopping there and due to volatile prices and occasional undesirables at the very bottom, I tend to figure a bit up from very bottom, but there's several listings at $45 and more at $50, $55 and $60. So $50 is a good estimate, and that's shipped to anywhere in the continental US, so it's a reasonable quote for the US, at least.

$10 looks about right for keyboards, but at a guess a mouse would be useful as well. I see those for $5.30 shipped, or 10-packs for $4.00 each ($40). There's also keyboard/mouse/speaker combos for $20 or $18 each ($180) in 10-packs.

So let's do the $35 Raspberry Pi B as it's what's recommended for schools, $50 monitor, $20 keyboard/mouse/speakers. $105 total. With a $45 monitor it's $100, total. Tho that doesn't include case.

(Meanwhile, googling for this I see some very nice looking Pi starter kits. They're out of the price range discussed here and are more on the hardware hacking side, but for ~$80-130 they generally include the pi and a case, plus leds, resistors, documentation, etc. There's similar available for Arduinos, etc. Just the sort of thing I'd have loved to have as a kid. =:^)

The next generation of Python programmers

Posted Apr 23, 2014 17:52 UTC (Wed) by mpr22 (subscriber, #60784) [Link]

Civilized high school curricula include an elective component; what's unsuitable about having programming as one of the available options for the elective component of high school curricula?

The next generation of Python programmers

Posted Apr 25, 2014 0:14 UTC (Fri) by giraffedata (subscriber, #1954) [Link]

Civilized high school curricula include an elective component; what's unsuitable about having programming as one of the available options for the elective component of high school curricula?

You're comparing having a programming class as an elective to not having a programming class at all. The speaker was comparing having a programming class as an elective to having one that satisfies a math or science requirement.

If your goal is to get students to take the class (and that is what the speaker's goal is), what's wrong with having it be an elective versus having it satisfy a math or science requirement (i.e. free the student from taking another math or science class) is that students won't take the class.

The next generation of Python programmers

Posted Apr 23, 2014 18:37 UTC (Wed) by smurf (subscriber, #17840) [Link]

Coding is applied math. It's also about translating the problem your program is trying to solve into an algorithmic form, thereby deepening your understanding of the problem space.

One example: you might in theory know all about Kepler's laws and planetary orbits and stuff, but to _really_ understand what this is all about, try to write a program that simulates the three-body problem.

Or biology. Try to simulate a complex ecosystem. More than two species and you'll have a really hard time preventing one of them to die off.

I also concur with using Python as a programming language. It is eminenty teachable. Java, on the other hand, encourages half-assed understanding and copy/paste programming because there's so much to assimilate before you can even understand _why_ "Hello World" is so damn convoluted in that language, let alone write it from scratch.

The next generation of Python programmers

Posted Apr 24, 2014 12:08 UTC (Thu) by alankila (guest, #47141) [Link]

Well, just to keep it in perspective, the article states that C++ is the next most popular choice. So, C++ hello world is nothing great to write home about, either:
#include <iostream>

int main ()
{
    std::cout << "Hello World! " << std::endl;
    return 0;
}
Conceptually, I'd say we're dealing with fairly similar level of crap to understand what this program is doing compared to the next:
public class Main {
    public static void main(String[] args) {
         System.out.println("Hello World!");
    }
}
That being said, if we can reduce the trivial program to:
print("Hello world!")
then that's definitely increasing the friendliness factor by quite a lot. Unfortunately, my personal experience working with python is that it's full of traps for the unwary, due to the ease of making mistakes like overriding "list" primitive just because that seemed like a great variable name at some point of your program. Additionally, I really do think that teaching languages ought to be statically typed, which validates assumptions about the values you are dealing with throughout your program. The alternative is a crash that occurs only when you are finally trying to use the value, and that's often not the place where the mistake was made.

The next generation of Python programmers

Posted Apr 24, 2014 13:28 UTC (Thu) by jwakely (guest, #60262) [Link]

The "return 0;" is unnecessary clutter :-)

The next generation of Python programmers

Posted Apr 24, 2014 17:22 UTC (Thu) by alankila (guest, #47141) [Link]

By my experience, compilers tend to return whatever is on the stack if you don't specify a value. I've been bitten by this in C. Maybe C++ defaults to 0 -- if so, more power to C++.

The next generation of Python programmers

Posted Apr 24, 2014 17:51 UTC (Thu) by andresfreund (subscriber, #69562) [Link]

> By my experience, compilers tend to return whatever is on the stack if you don't specify a value. I've been bitten by this in C. Maybe C++ defaults to 0 -- if so, more power to C++.

There's special case language in the standard about reaching the end of main() without having returned. I guess that's what Jonathan is referring to.

The next generation of Python programmers

Posted Apr 25, 2014 8:30 UTC (Fri) by jwakely (guest, #60262) [Link]

Yup, exactly. 3.6.1 [basic.start.main] in the C++ standard says:

> If control reaches the end of main without encountering a return statement, the effect is that of executing
> return 0;

The next generation of Python programmers

Posted Apr 28, 2014 23:45 UTC (Mon) by alankila (guest, #47141) [Link]

How cute. I hate it.

The next generation of Python programmers

Posted Apr 25, 2014 12:45 UTC (Fri) by NAR (subscriber, #1313) [Link]

No, conceptually the C++ and Java examples are very different. Look at the concepts C++ introduces:
  • functions
  • operators
  • namespaces and include files, but that can be papered over as "magic" at this point
With Java:
  • classes
  • methods
  • method visibility
  • class-level (i.e. static) methods
  • packages, but that can be papered over as "magic"

Also classes and methods are higher level (and harder to understand) concepts than functions or operators - after all students meet functions and operators in math class too.

The next generation of Python programmers

Posted Apr 25, 2014 18:48 UTC (Fri) by jwakely (guest, #60262) [Link]

Also, both introduce the idea of main/Main as a special entry point for a program.

The next generation of Python programmers

Posted Apr 23, 2014 22:48 UTC (Wed) by droundy (subscriber, #4559) [Link]

I agree that coding should not supplant math and science requirements. Citizens need to have some basic familiarity with both math and science, and I wouldn't want kids taking CS to "get out of biology". On the other hand, I also think that programming is skill that is needed at some level by most people. More necessary than trigonometry, for instance. (And as a physicist I certainly would not want to skimp on trig.)

Fortunately, programming is a great way to come to better understand math (and consequently the scientific disciplines that use math), so it's not an either/or situation. We currently do an abysmal job at teaching high school math, so it's quite possible to teach (elementary) programming *and* teach math better, in the same course using the same amount of time. Here's a talk on the subject (not by myself, but by someone I met at a conference on STEM education):

http://docs.google.com/viewer?a=v&pid=sites&srcid...

A challenge is getting teachers the training to use this pedagogy effectively, but Eric's been working on precisely that. And his pilot group of teachers is large enough for optimism.

The next generation of Python programmers

Posted Apr 24, 2014 0:06 UTC (Thu) by mathstuf (subscriber, #69389) [Link]

> More necessary than trigonometry, for instance.

More necessary than statistics? Personally, I found my statistics class to be one of the more beneficial classes in high school. I wish it would be placed in the center of the math track rather than off to the side like a "lesser" capstone than calculus (at least it was at my school).

The next generation of Python programmers

Posted Apr 24, 2014 3:22 UTC (Thu) by droundy (subscriber, #4559) [Link]

No, I'd put statistics right at the top of the list of topics that everyone should have a good grasp of.

The challenge, of course, is to find teachers of statistics with sufficient knowledge of the subject to do more good than harm.

For instance, ideally every high school graduate would have a more solid understanding of statistics than doctoral researchers at the National Center for Health Statistics in Hyattsville, Maryland, who know just enough about statistics to make (and publish) results containing a textbook error in the use of the P-test, as reported here:

http://fivethirtyeight.com/features/reports-of-a-drop-in-...

For appropriate background on this particular error:

http://xkcd.com/882/

Sadly, there is rarely as ready access to the data and methodology as was in place for this particular study, so it is usually hard to know when researchers commit this sort of fraud (or malpractice).

Chemistry

Posted Apr 23, 2014 22:57 UTC (Wed) by tialaramex (subscriber, #21167) [Link]

It turns out that generations of teachers have found that it's really difficult (not impossible, just probably futile now) to get across the concepts of Computer Science without the practical demonstration of programming. Once they _do_ it the whole thing makes a lot more sense to most students.

It is explicitly _not_ (or at the very least shouldn't be) the goal of such a programme to teach Software Engineering, in the same way that your amateurish titration experiments in a high school class were not supposed to teach Chemical Engineering. Knowing in principle what it possible is not the same as being an expert in the best ways to do it.

The next generation of Python programmers

Posted Apr 24, 2014 8:55 UTC (Thu) by jschrod (subscriber, #1646) [Link]

> [...] 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.

The next generation of Python programmers

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

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 (subscriber, #53265) [Link]

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]

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 (subscriber, #313) [Link]

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]

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]

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]

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]

> 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 (subscriber, #313) [Link]

> 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]

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]

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 (subscriber, #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.

The next generation of Python programmers

Posted Apr 26, 2014 12:01 UTC (Sat) by wmfa (subscriber, #37197) [Link]

"Science is what students should learn, not coding."

Yep, and when I took programming classes in high school in 1985, we learned the science behind algorithms, numerical methods, data structures, and computational architectures. I remember the lectures on sorting and reciprocal-square-root to this very day. We were also taught important behavioral aspects like why and where to partition long code sections into modular blocks, why comments were important and how they should describe purpose rather than mechanism, protection of your code from bad user input, and so forth. The fact that it was all coded on what is now a long-dead platform and a near-extinct programming language was irrelevant to the actual learning, and those lessons have remained important and useful to me for nearly 30 years.

So please be careful not to lump mere "coding" in with computer science. IMO any science-directed student should still be taught these lessons today as a part of their general education - not coding, computer science.

The next generation of Python programmers

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

Meanwhile, in the UK a few years later, in the closest equivalent available of the same course, we learnt... PageMaker. Also Excel. (I tried to use the macro system to simplify some stuff and was castigated for 'wasting time'.)

This in the country that a few years earlier had a prime-time TV programme about computer programming. :(

The next generation of Python programmers

Posted Apr 26, 2014 14:33 UTC (Sat) by pizza (subscriber, #46) [Link]

> Meanwhile, in the UK a few years later, in the closest equivalent available of the same course, we learnt... PageMaker. Also Excel.

Even that would have been an improvement over what my high school offered in its "computer" courses.

Come to think of it, typing skills were perhaps the single most useful thing that came out of my experience, though it wasn't intentional on school's part.

The next generation of Python programmers

Posted Apr 27, 2014 8:28 UTC (Sun) by wmfa (subscriber, #37197) [Link]

It sounds like I got really lucky. The computer classes I took were taught in the Math department. It was all about the science, with absolutely zero focus on administrative uses (word processing, spreadsheets, etc.). Most likely, this is because there really were no administrative uses yet. Electric typewriters were still being marketed for home use. Seeing your responses to my comment, it seems important to me that we educate educators about the differences between administrative computing (office tools), and computer science.

Back to the reply on which I based my comment, I'd like to reinforce again that the science of computer science is the kind of academic regimen that will support our children throughout their lives. Given the importance of computing to all our futures, computer science is *exactly* what we should be seeing taught alongside math, chemistry, biology, and physics.


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