
[Intel sponsored feature] Together HTML5 and the Intel AppUp developer program could return programming back to the masses
There’s been a lot of debate recently about the place of computer programming in our children’s education. Rory Cellan-Jones, BBC technology correspondent, wrote an article that described coding as ‘the new Latin’, a phrase that suggests to me that children would be learning an obsolete language or skill if they learned to program. In fact, they’re usually learning ICT instead of computer programming, and while it is important for them to have an understanding of how Word, Excel, PowerPoint and Access work, it’s much more important to show them that these tools are not the limits to what they can achieve with a computer.
Most of the people calling for better computer science education probably grew up (technologically, if not literally) in the 80s. Back then, everybody had a rough idea how programs worked. You switched on a computer and it wouldn’t do anything until you typed in a command, even if that command was just to load up your favourite platformer. Most people tried typing in programs from magazines, a cheap source of software, and quite a few had a crack at writing their own programs too. Just about everyone in the playground had a rough understanding of what programs looked like.
Now, it’s very different. You don’t switch on a computer any more and see a command prompt. You have to really go out of your way to see anything resembling program code. In most cases, you need to buy commercial software or download free software to help you create your program, and the code seems so much more foreign because it’s not a part of the machine’s user interface.
Of course, there are lots of advantages to the computers we use today. You don’t actually need to know how to program any more, and that means everyone can engage with computers in a way that was impossible when they required you to remember and type in instructions to get them to do anything. But just because you don’t need to do something, doesn’t mean you shouldn’t be able to do it. Once you get past reading, writing, and ‘rithmetic, pretty much all education is stuff you could probably survive without, but languages, humanities, arts, and sciences help people to fulfil their potential. Computer programming can too; it gives you new thinking tools, and new creative possibilities.
One reason that HTML5 is exciting to me is that the entry barriers are much lower than they are for most programming languages. HTML is basically marked-up content, and we’ve all got content, whether it’s holiday photos or diary entries. Learning the basics of marking it up for structure doesn’t take long, and, crucially, doesn’t require any special software.
You can do it in Notepad. Adding CSS for presentation and Javascript for interaction on top is trickier, but there’s no need for any special software to use them either, and there are lots of code examples out there that people can be inspired by. HTML5 can be viewed on a wide range of platforms, and the internet makes it easy to find an audience for anything you create.
The next step is to make money with programs. Back in the 80s, you could post off your program to a magazine on tape, and they would publish it, and post you a cheque. I had a few programs published back in the 80s, which was by far the most profitable part of my mini business empire, which also included a couple of newspaper rounds and working in a market.
Alternatively, if you had software to sell, you could advertise in the back of the magazine, but these ads rarely did spectacularly once computer games could be bought in every other shop on the high street.
Now, we have app stores, which enable everyone to get their app out there, without even having to pass the gatekeepers of the editorial or advertising team on a magazine. You can get your apps stocked in the same stores that sell the bestselling software today. You can use a tool like the Intel AppUp Encapsulator to turn your HTML5 into a standalone program that can be sold through app stores powered by the Intel AppUp center.
Every few months there’s a story in the paper about a whiz kid teenager who’s managed to create his first app and get it into a store, but these tend to be the highly committed hobbyist programmers. Clearly, young people have a good understanding of the kind of apps they want to use. If we don’t give them a good understanding of programming, we’re cheating them out of the opportunity to shape their own futures and the software that will play a part in it. Programming is as important as most other things on the curriculum. To leave it out just doesn’t add up.
...
This blog post is written by Softtalkmobile, and is sponsored by the Intel AppUp developer program, a single channel for distributing apps to multiple devices, multiple operating systems, and multiple app stores.
I'm not sure I would make it sound quite so dire, but I do agree that programming should be a larger part of high school and college "mandatory" classes.
Bringing more money into teaching programming in schools, colleges and universities is a laudable, but praising HTML5 in this regards is misguiding.
HTML (whether it's no. 5 or earlier) is, like you write, markup, but not programming per se. HTML5 has some additional useful tags, CSS3 indeed has some animation concepts, but there is nothing they have now that makes it different than before in the sense that it was as interesting to teach it. Javascript is mostly the same, it could have been taught the way it is, but there is too many things that distract from actual coding to start there. Also, it's not right to teach programming by using something that is uneven and quirky with odd implementations across different display platforms. Damn, the CSS box model is hard to teach at first.
If you really want to teach coding, look into something like Processing. From there, you can teach programming concepts: variables, functions, arrays, classes, scope, recursivity, etc. Teach students the concepts and logics behind programming, not a specific syntax or language; so afterwards they can jump to any programming language easily.
In parallel, markup should indeed be taught, but let's not think that HTML5 is the savior of everything and its mother. Let's not think of app stores and actual mobile devices and whatnot, let's teach the kids that the skill of programming is useful in a lot of situations, that this skill will evolve and adapt to many changes to come.
In short no, HTML5 doesnt teach children how to program in the same way ICT isnt computer studies. And thereby lies the problem
All HTML5 really needs is a proper sprite/background system, then programmers wouldn't have to inefficiently implement them in Javascript. Javascript is a great language with so much potential for development with the prototype paradigm, but Canvas is inadequate for real time rendering IMO. Javascript code should not be handling the rendering so closely, that's just a waste of resources that should be handled natively. That all makes it difficult and disappointing for newcomers. It should be possible to achieve at least SNES graphics at 60fps, full screen with several parallax backgrounds utilizing affine transformations and HBL Mode-7 effects on a 2Ghz P4. And the audio needs sorting out too. For gaming we need audio buffers, a playback API and some built in filters running natively. Put simply, game programmers should be consulted.
JS seems to be outperforming AS, but the interfaces for sound and graphics are a major let down right now, and without the right structure of communication and consultation we might see HTML falling short of living up to the potential it has.
So unfortunately all the good points of JS goes to waste, and WebGL alienates a large number of graphics cards, so I can't really deploy a number of games on WebGL at the risk of confounding unsuspecting users when they can't play on their computer. Some I can, but the important ones unfortunately have to use Canvas/Flash.
In theory the machine code generation could optimise much better than it does now, but I think it will always lag behind native code by a huge factor because of the Javascript spec that has to be maintained. V8 is great, but anyone who writes assembler knows that V8 has a lot of room for improvement, but not necessarily room that is guaranteed to be filled.
That being said I can see approaches to reaching towards a solution to that problem. The issue is whether a solution will ever be reached, and will HTML5/Javascript retain it's prominence between now and when it's better defined?
And an injunction should be set on Microsoft, forcing them to adopt a sound HTML and Javascript, since they are really holding back developers with their stupid non-standards, quirk riddled monstrosity of a browser that is shipped in every PC to innocent mothers and old ladies who don't know how to install proper browsers!