It isn't an either-or proposition, incorporating programming exercises into any science oriented class can not only be illustrative, it like any sort of hands on lab does teach students to think like a scientist and helps to create a more realistic microcosm of how science is actually done these days, with programming forming a bridge between theory and experiment and heavily relied on in analysis.
Programming: it's not just a skill. It's a way of life.
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-7.html#...
From pg: "To get rich you need to get yourself in a situation with two things, measurement and leverage. You need to be in a position where your performance can be measured, or there is no way to get paid more by doing more. And you have to have leverage, in the sense that the decisions you make have a big effect."
And also from Zed Shaw: "Programming as a profession is only moderately interesting. It can be a good job, but you could make about the same money and be happier running a fast food joint. You're much better off using code as your secret weapon in another profession.
People who can code in the world of technology companies are a dime a dozen and get no respect. People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines."
IT careers; even sysadmins need to write scripts to manage systems.
Any career in the sciences; basically any scientist, even a pure experimentalist, ends up needing to write simulations in MATLAB at the very least.
Any engineering career: computer-modelling complex systems, whether chemical or mechanical or whatnot, requires programming skills.
Anyone in applied mathematics, like operations research.
Anyone in quantitative finance.
I'm pretty sure this covers way more than merely 10 "distinct careers", and there's plenty I missed.
I truly started appreciating maths after I experienced cases where you could code an elegant solution based on math in about 5 lines as opposed to trying to solve it your own way and end up having 30+ lines of code and your program still buggy.
Computers are useful for doing math, but for most kids, and even most adults, that's one of least interesting things they can do.
A program isn't just a hammer. It can be a paintbrush, a tape recorder, a story, a symphony, or a lab assistant. And a program is more than any of these things -- a real-life paintbrush can't change the size of its bristles, and you have to draw every stroke by hand. On a computer, everything's just code. You can run your "paintbrush" routine billions of times, vary its parameters using your voice, or earthquake data, or a physics simulation, or anything you can imagine.
As a programmer, maybe I'm biased, but I can't imagine any job beyond the most menial where the ability to program wouldn't make me more productive.
I'm a programmer but I value physical experience far more than anything a machine can portray.
The programming bit allows me to remove the menial tasks and solve the menial problems so I can enjoy my real attachment to this world.
How do we even know 'programming' will be a relevant skill in 30 years time?
Buy every kid of 3 a tub of Lego bricks (Not a 'set'). That would go a long way to getting them thinking, problem solving, and building stuff.
And don't get me started on the "There aren't enough females in programming" BS rolleyes
FWIW, I would happily sign against this petition. I do not think teaching kids to 'program' at school so early is worthwhile. Programming is an extremely niche career, and anyone who is interested in it can easily learn.
You're likely to bore 90% because they're not interested in learning programming, and the other 10% will have learnt it all at home years ago and will also be bored.
</rant>
Not to mention the number of programmers who waste their time creating new languages and frameworks. Then they spend years rewriting everything in node.js or whatever the fashion of the day is.
I'd say there's more than enough programmers.
Well that's just laughable, and says more about yourself than any of these allegedly offending third parties. There has been tremendous progress in both frameworks and languages over the last decade. If you can't see that then, well, I don't really know what else to say, other than to perhaps get off your lawn.
If that's true, can programmers today do things they couldn't do 10 years ago? Can they program faster than they could 10 years ago due to all these innovations in languages and frameworks? I'd say no on both counts.
Well, you're entitled to your opinion I suppose, but I don't know any professional programmer who would even come close to agreeing with you.
So you're suggesting that the time to market of an ASP.Net MVC, NHibernate, Autofac, Razor, SQL Server application is going to be lower than a classic asp and SQL server application?
I wouldn't know anything about the stack you describe. Seems to me the barriers there are all Enterprise related; framework innovation isn't the bottleneck. Big business software - perhaps that's something that hasn't improved much, if at all.
But this is a startups related site, in case you hadn't noticed. Web programmer here. Web frameworks have improved immeasurably. If you tried to tell a web programmer that nothing has improved since 2001 you would just be laughed at, and rightly so.
It's not just about the web though. Look at the new functional languages. Look at the message queues, the image libraries, computer vision, sound .. bloody everything. Tell me, is h264 better than mpg videos from 2001?
Step outside your bubble man. In fact, leave your bubble, it sounds pretty depressing in there. This is a very exciting time to be a programmer.
And as for startups, I worked for one once. It's a big business now.
I build software which happens to reside on the web, not "web sites" or "web applications". Sometimes we have desktop applications deployed because they require real-time data. Sometimes we integrate with massive systems with millions of users. We don't use functional languages (they do not suit our workload and don't scale to our recruitment requirements), we use message queues (NServiceBus, zeromq), we use image libraries (GDI, reportlab), we use all the funky nosql stuff (Mongo), we use ORMs (NHibernate), we don't use computer vision or sound because we don't need it in our space.
Big, exciting things happen where I am.
It's the bubble you are in that I'd hate to be in. The superficial one which appears to be based on pushing social crap, novelty iPhone applications and glorified todo lists on the world.
My problem is that we did ALL OF THIS in 2001. The process hasn't changed, but the tools have and the time to market is the same.
Compare to if someone worked out how to stop Neurofibromatosis dead in its tracks for example (a condition my youngest daughter has), they'd give 1 in 3000 people a better chance.
People get a Jesus complex because they build a tool that a vocal minority uses.
A programmer writing a new framework might not directly help cure Neurofibromatosis but they might make it slightly easier for another programmer, which is then inspired to work on his program, which saves a medical researcher a few minutes and gives him the time he needs to have his breakthrough. Or maybe a better search result gave him what he needs. Technology is cumulative. Criticising people because they're not working on your favoured project is pretty lame.
The world does not need 200 programming languages, 1000 javascript frameworks, 500 different web servers and 20-odd social platforms which exist only to boost the ego of the originator who can market their idea better than othersr. It needs some concise, un-fancy-looking tools that are fit for purpose and can be used as a common ground for communicating ideas. There is so much fragmentation it's unbelievable.
Everyone thinks they can do better, yet no-one delivers any real efficiency improvement.
TBH going back in time, I can still deliver the same output as node.js with classic ASP/Jscript from 1998 arguably with less code and time spent.
Back on the subject of med research; they tend to still use Perl, bits of sticky tape and TI89/92 calculators a lot apparently (word of mouth from a friend who works in tissue sample analysis).
But .. that is the way we find the way forward. It's like evolution. We may not need 500 different web servers but .. that's a lot of different ideas, a lot of variation, and in the long run, a lot of innovation. Eventually the "best" way is chosen and we go to the next generation.
I actually think the proliferation of programming languages and frameworks, especially open source, is one of the purest meritocracies you can find. They live or die by their quality, innovation, new features. And the whole community is dragged forward. What you are advocating is basically central planning. Did you realise that?
> I can still deliver the same output as node.js with classic ASP/Jscript from 1998 arguably with less code and time spent.
LOL. Dude. No way.
Something you said earlier was instructive as to the mistake you are making with this line of thought. You said that "programmers can't do anything more today than they could in 2001" - or something similar. Or that other guy said it and you agreed, whatever.
Look, that's literally true. In fact it's literally true to say that any programmer can do anything as long as they use a turing complete language. This has been true since the days of ENIAC.
What has advanced, massively, is the knowledge of the best ways of doing things. Design. Efficiency. Elegance, maintainability, scalability. That is what has mainly improved. Knowledge. The laws of the universe have not changed, everyone agrees with that, but we have worked out, a little more, what works and what doesn't.
And I'm afraid your ASP/Jscript falls into the latter category. I'm sure you could mimic some tiny subset of node.js using that toolset. But it would be a hideous mess of spaghetti code. Unless, of course, you used the knowledge you gained over the last 10 years to basically reimplement node.js in ASP, presumably gaining express pre-approved VIP entry to Hell in the process. So things have advanced, haven't they?
I'm not interested in "scalability" as that's moot - hardware is cheap.
Unfortunately there are a lot of problems which people like to solve over and over again...
If you give someone a hammer without telling them how to use it, they are going to hit some fingers and get frustrated.
I think we should teach children to understand mathematics at an algorithmic level and let them see that programming is a tool/hammer for executing those algorithms. Unfortunately current educators tend to concentrate on the pure mechanical aspects of mathematics such as arithmetic and punching numbers into off-the-shelf formulae which is the real problem.
Personally, they should just throw in valid use cases that map to reality like calculating GCDs or Newton's method and let them knock up the programs in TI-BASIC on their standard issue TI-84's.
That's enough for school, even to A-level.
Footnote: For reference I was brought up at school in the UK on LOGO, BBC BASIC (6502 and ARM), LEGO Dacta and TI BASIC. Life was good for me, but I know that my peers found it frustrating when they just wanted to solve a problem and go home.