Will Online Learning Disrupt Programming Language Adoption?
theodp writes "Back in the day, getting traction for a new programming language was next to impossible. First, one needed a textbook publishing deal. Then, one needed a critical mass of CS profs across the country to convince their departments that your language was worth teaching at the university level. And after that, one still needed a critical mass of students to agree it was worth spending their time and tuition to learn your language. Which probably meant that one needed a critical mass of corporations to agree they wanted their employees to use your language. It was a tall order that took years if one was lucky, and only some languages — FORTRAN, PL/I, C, Java, and Python come to mind — managed to succeed on all of these fronts. But that was then, this is now. Whip up some online materials, and you can kiss your textbook publishing worries goodbye. Manage to convince just one of the new Super Profs at Udacity or Coursera to teach your programming language, and they can reach 160,000 students with just one free, not-for-credit course. And even if the elite Profs turn up their nose at your creation, upstarts like Khan Academy or Code Academy can also deliver staggering numbers of students in a short time. In theory, widespread adoption of a new programming language could be achieved in weeks instead of years or decades, piquing employers' interest. So, could we be on the verge of a programming language renaissance? Or will the status quo somehow manage to triumph?"
So the only successful languages "back in the day" were those taught at "a critical mass" of universities?
Here, I'll start the list of counterexamples: COBOL and BASIC.
Projects use languages, projects need employees, and employees need proven credentials. Inertia will continue to be a huge component of language selection for decades to come. Ruby is the last language to make progress without an already big tech name pushing it and it's already more than a decade old.
Universities start teaching their students languages AFTER they become popular. Java was well established in industry and universities were still teaching Pascal as a first language (an excellent choice), then C. THEN they switched to teaching Java as an intro language. The students who first learned it wouldn't have had an effect on industry for another two to four years after that.
Languages get adopted by individuals, then get used in industry, THEN get taught to students.
Universities do not and should not be teaching programming languages. They teach programming, the general practice. They teach the theory behind programming. They teach math. And they may teach "Programming Languages" as the study of the languages themselves with examples of real languages. But they don't teach "Python 101" or "Introduction to Haskell." A CS student is expected to be able to pick up whatever language needed given instruction in that general type of language (broadly imperative, function, and logical). A given professor may require a specific language because it's convenient to have everyone working in the same language and easier to grade that way, but that need not be what the text uses for the same topics. Indeed, the majority of texts use pseudocode that isn't in any "real" programming language.
Don't count on it. Most people are like me in selecting a course. They want relevant skills. If a course that might otherwise tickle my fancy requires learning B+- or Anchovy_Paste.net I'll keep looking. There's a lot of selection out there now and I have little time for picking up languages on speculation.
...most people that I know are still using traditional languages, so the ones that quickly come will probably go quickly as well. Compare it to Pink Floyd and Pitt-bull.
Yeah, like nobody ever learned LISP, PASCAL, BASIC, Eiffel, Erlang, Haskell, LOGO, or Scheme before there was an internet... Plenty of languages have flourished in academia without having broad industry support. Some exist primarily as teaching languages, others are most appropriate for domains where there's not a lot of practical economic application yet.
There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
We already have Lisp. All other languages are unnecessary.
For fucks sake, stop with the thinly veiled advertising. We're talking about a huge penetration of languages like C, C++, Java and Perl and the like which are still going to require people capable of coding in them. This fucking online Khan Academy crap isn't going to change that, and I'll wager you dollars to donuts the whole fucking thing will collapse under the weight of insanely over-hyped promises and gimmicks.
The world's burning. Moped Jesus spotted on I50. Details at 11.
"getting traction for a new programming language was next to impossible. First, one needed a textbook publishing deal. Then, one needed a critical mass of CS profs across the country to convince their departments that your language was worth teaching at the university level. And after that, one still needed a critical mass of students to agree it was worth spending their time and tuition to learn your language."
That is not the way it was. I've been programming professionally since the 1970's. We didn't go to school to learn a programming language. If you took classes it was to learn techniques and concepts. Picking up a new language is a trivial thing. Taking a course on a language does not make you a programmer. Language is merely a way to communicate with the computer. New languages and development environments come and go. Good programmers persist and pickup new languages easily to do the tasks needed.
http://en.wikipedia.org/wiki/Betteridge's_Law_of_Headlines
So, no.
Nobody will learn a new language unless it offers a big advantage over the existing popular languages. In the last 2 decades, that has meant having a particularly useful library or framework (such as CGI for Perl or Rails for Ruby). Why else would anybody invest the time. New languages are a dime a dozen (actually, that's too generous).
With Facebook seemingly half-populated by bots, are these numbers thrown around by these "online universities" really a reliable source? And how many "certified" IT people have you dealt with who were totally clueless?
I want to delete my account but Slashdot doesn't allow it.
Coming up with a new language and teaching it to people is a fun exercise, but unless there's proper tools (IDE, build system, support libraries, binding generators, etc.) then forget it.
Professional programmers don't bother with toy languages unless they're just screwing around.
There's no -1 for "I don't get it."
Non programmers need to understand that the language isn't the problem. Certain autistic persons have issues formulating sentences to communicate properly to those that are well versed in communication. It doesn't matter if they learn 10 languages, if they can't convey their thoughts in one language, they aren't going to do it in another language.
Likewise, with programming, if you can't speak the language of logic, then you can't program. If you can't have the forethought to see holes in logic, then you can't program. Sure, you can write up some stuff that works. But it still isn't coherent in the grand scheme of things. The government, Universities, and corporate management seem to be stuck thinking that we just need more people that know certain programming languages.
When will they learn that programming is a shift in the thought process that a large segment of our population just can't make? Or they won't make unless we start teaching people to be logical and non-ambiguous in life...
The second tier stuff if most useful for RAD. That is visual basic, python, perl, PHP, Ruby. These are mostly scripting languages, and require a slightly different approach. The solution is defined in terms of the capability of the language and the available scripts. This is particularly true with Ruby. These are languages that meet specific requirements for specific purposes. For instance PHP and Ruby are what uses to write a website. Python is quite popular for home grown science applications.
Which is to say that anyone trying to promote a language because it is what they know rather than because it is what is used to solve a particular problem is like a person trying to get their boss to buy a lather for the server room because they really need a lathe for home projects. I would not try to script a website with C. I would not try write a data analysis program in assembly. The computers are simply too fast and we have had 40 years of development of tool that means we do not need to spend a quarter and a million dollars rewriting a GUI. This has always been true. In the 80's we used fortran for number crunching because that was the only language supported by IMSL. We used C for everything else because it ran on everything else.
So online learning is only going to teach students how to use useless tools. Yes I would like to teach people how to use Forth, but what is the point? We can teach students how use Shakespeare, and it would teach them techniques they need to know and would be very motivating for certain students, but where would they use it? Once a student is proficient at programming, and understand the basic concept, time needs to be spent on learning how to to efficiently acquire API knowledge
"She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
"Back in the day, getting traction for a new programming language was next to impossible. First, one needed a textbook publishing deal.
Yeah, because COBOL and FORTRAN only took off after a mass of publishers got on it. Riiiiight.
Then, one needed a critical mass of CS profs across the country to convince their departments that your language was worth teaching at the university level.
Counter example: COBOL, FORTRAN, C, Java (the later two only took off after the industry was using them a plenty.)
And after that, one still needed a critical mass of students to agree it was worth spending their time and tuition to learn your language. Which probably meant that one needed a critical mass of corporations to agree they wanted their employees to use your language.
Where the hell do you get this stuff. Are you still in school or something?
It was a tall order that took years if one was lucky, and only some languages — FORTRAN, PL/I, C, Java, and Python come to mind — managed to succeed on all of these fronts.
FORTRAN took off because it was the best thing at the time for programming (much better than COBOL.) Java took off without the need of publishers or academia. It was simply taken by the industry. Python hasn't taken off (I love the language, but its usage is nowhere near Java or C#.)
But that was then, this is now.
You don't know what was "then". I doubt you know what it is "now".
Whip up some online materials, and you can kiss your textbook publishing worries goodbye.
What does this even mean?
Manage to convince just one of the new Super Profs at Udacity or Coursera to teach your programming language, and they can reach 160,000 students with just one free, not-for-credit course.
Yeah, because it will be as easy as it was before, right, right, right? Let's build a pyramid of hypotheticals!!!!
And even if the elite Profs turn up their nose at your creation, upstarts like Khan Academy or Code Academy can also deliver staggering numbers of students in a short time.
Yeah, because if up-start elite professors at Udacity or Coursera turn up their noses at your pet project, Khan will surely pick it up. Khan!!!!!!!!
In theory, widespread adoption of a new programming language could be achieved in weeks instead of years or decades, piquing employers' interest.
Because business rely in internet popularity and nothing when investing in effective technology.
So, could we be on the verge of a programming language renaissance?
I didn't know where were in a programming language dark age.
Or will the status quo somehow manage to triumph?"
Somehow this reminds me of Dora the Explorer when she stares at the audience waiting for an answer.
Unless the language adds something revolutionary or is very domain specific, we don't really need anymore widely used programming languages. What we do need is more libraries, frameworks, and APIs for existing languages. Preferably, they would be open source or at least have open specifications so that an open source version can be made. Also, not all problem domains warrant their own language.
Lot's of IT work should not be at university level.
First off help-desk / desktop / system admin is not CS
2rd lot of IT stuff needs learning / training at the tech school level / trades level.
3rd 4 years pure class room is way to long to get in to the field and comes with the full load of fluff and filler that comes with a university schooling.
4rd IT has alot of on going education that does not if the university time table.
5rd Tech schools seem to try to jam the university framing of degrees in to there plans so in some lights they are seen as a joke and some times credits don't transfer as the time tables are not the same.
Perhaps it would be better if universities focused on programming skill and critical thinking rather than having to learn any particular language.
Maybe instead of learning, say, a C variant through all the years of college (which is really good to teach some things, and really bad to teach others), it would be better to use a language that, while not necessarily some type of industry standard, is actually a good tool for teaching a variety of programming techniques and critical thought. What good is it to learn to use a language if you can't program worth a damn?
Back in college, half my intro to programming class bombed out because it focused on how to use C++ instead of how to actually think about programming. Only those of us who had been programming in C++ beforehand were able to get a decent grade.
Shouldn't learning how to program be relatively language agnostic? Sure, you won't get to the fancy powerful tricks of a particular language in the classroom. But if you know how to program, not only should you be able to learn any language (assuming appropriate features and training materials), but you'll be able to pick up all that fancy stuff either on your own, in advanced language specific classes, or from work.
Good grief man! One of the more popular languages around these days is Objective-C! Would you have thought THAT possible ten years ago?
Look at StackOverflow, brimming with questions about Ruby or Python or PHP or Scala.
Look at alternative databases in wide use today that do not use SQL.
Your renaissance has already arrived, any language that has some good practical use does not need a course to gain adoption, just a tag in StackOverflow and a handful of fervent believers to evangelize the use of it.
On a side note, it's depressing the number of dour replies you got right out of the gate. There was a time where futurists were a healthy part of Slashdot, now we are scored and ridiculed. It hardly matters though since we are generally right in the end, so keep the spirits up.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
No. Programming languages need two things to become mainstream. First they need a very extensive library of support such as windowing, network, and about 50 other topics. Second they need a compelling reason to use the language itself. The compelling reason could be that the language is so nifty or elegant that it is worth the effort. In procedural languages it is hard to imagine anything better than what we have. In non-procedural languages there may be some new ideas yet to be thought of. Another compelling reason for a new language is marketing suits. Some company has a very cool new product and in order to lock you in they invent a new language to program it. Laaaaaaaaame. Only Microsoft would be stupid enough to try that again (C# was a case in point where they still had the muscle to pull it off.) Google could do it for a special search language but are not that silly.
When will they learn that programming is a shi&t in the tho#ght process that a large segment o& o#r pop#lation j#st can't ma@e??
Most people can realize what can be automated. That's why most people don't like repetitive tasks, that they know could be automated. That's how a lot of so called progress has happened.
but you're forgetting that most things don't need to be perfect to work. if an automatic sorting machine just does an OK job that might be enough, considering that a human might not be able to do any better judging if some apple is red enough or not. That's a problem case where there is no definite logic on what's passable. Much like there's no definite logic on which programming language is passable for wide use.
but this article is total crap and a khan academy advert. khan academy isn't going to change the landscape anymore than any random web page is going to change the landscape for obscure or new programming languages. if it has some merit and is sexy enough then people will use it, but this article somehow assumes that people would like to be force fed a niche programming language down their throats on an online site - if they want that they can go learn snobol today.
world was created 5 seconds before this post as it is.
Nobody will learn a new language unless it offers a big advantage over the existing popular languages.
I don't think that's true. It just has to be different enough.
The thing is after you use a language for a while you know it's flaws. It's at that juncture that some other language can come along and capture your fancy, all it has to do is address those flaws you find most annoying in a saner way.
The frameworks are kind of a precondition these days though, if you try to work a string over and encounter pain then you are usually gone.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Most of those languages will wither on the vine as there is no widespread support for them, no major pieces of software written in them and the skills base is so dilute (10 million "users" spread across 7 billion people? sounds like homeopathic programming - even if they are all connected on the internet) that it's in no employers interests to invest in it.
The languages that are successful are the ones operating systems are written in. The ones that databases are implemented in - that software with a lifespan measured in decades use. Those are the foundation of the IT industry and the languages that will provide most of the employment to developers.
However, so far as novelty goes, the new languages that will be successful are the ones the will permit new ways of working, provide new features and/or solve the new problems that we will encounter.
So learn your trendy new languages - the ones that some professor somewhere gets a nice little kickback from recommending some obscure learning material for. But you're almost certainly wasting your time if you expect to earn a living from it in the years after you graduate.
politicians are like babies' nappies: they should both be changed regularly and for the same reasons
C is by far the simplest fo these, but also the most basic
Any language that you have to manage memory in is inherently less simple to learn ( to a starting point) than a language where you do not have to think about memory management.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
People learn French because people speak French in France.
For programming langauges it's the same.
Programming languages become popular when they come attached to something else that is already popular---and for reasons independent of programming languages. In a nutshell, connecting to operating system facilities which are connected to popular hardware.
If Apple iPhones were programmed in object COBOL, the language would be popular. And after all, few people used Objective-C outside NeXTSTEP/MacOS/iOS. If Apple hadn't bought NeXT for its next operating system, Objective-C would be nearly dead.
Seriously. Considering the amount of bitching, griping, moaning and whining I've seen about businesses failing to move to new operating systems and carrying around large amounts of legacy code, it doesn't appear that there's a pent-up demand for brand-new languages. The OP seems to be operating under the assumption that "if you build it, they will come" when it comes to programming languages, but the real world seems to be of a different opinion.
We can only hope. Aren't we already getting a language a week, some FORTRAN with capricious syntax changes, others FORTRAN with horrific kluges grafted on? (actually, all with capricious syntax changes).
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
Khan Academy is great, but I agree with you that it isn't going to change the landscape of programming languages. Online language courses are everywhere, and have been for as long as the internet has been available to the masses.
Not one of the programming languages listed were a success because 'it was taught to students'. Its arse about face, they were taught because they were successful. Who the hell wants more languages anyway? renaisance? wtf are you talking about? We need better, faster, easier ways to get the job done. Not spewing out more languages for the sake of it. Also if you *did* have some magic new language, why would you want to force feed a bunch of inexperienced students with it? If you come up with a *genuine* significant improvement, be it a language, a technique, a library or whatever real programmers will pick it up and it will soar on its own wings. Look at JSON for a very recent and clear example of this. depsite the MASSIVE investment in XML by big industry and acedemia, some single guy posts a webpage and says 'hey heres an alternative format that works well with javascript' and now half the world is using it.
I don't know. Maybe if there were some languages that broke new ground in terms of data abstractions, control flow, basic concepts of how to program, etc., there might be some reason to adopt them.
The last twenty years of language design has simply been a rehash of the twenty years before that. There hasn't been anything interesting out of the programming language world since CLOS and its multi-methods and MOP back in the early eighties. Maybe Erlang's process model from the mid-eighties. And the academic programming language community hasn't done much either, burrowing ever deeper into its own type-theoretic navel rather than exploring pragmatics.
Someone show me a language that beats APL in array processing, C in procedural programming, or Smalltalk or CLOS in OO programming - that could impress me and maybe make me want to learn a new language. Otherwise, I'll go ahead and learn the syntax and libraries, because that's about all that's different about your latest brain fart.
That is all.
...one still needed a critical mass of students to agree it was worth spending their time [and tuition] to learn your language.
Okay, we can remove all barriers except this one. How can you convince a critical mass of people to agree that it is worth spending their time to learn your language? Investing time is really more critical than all the others put together.
Why don't a critical mass of people to spend time learning Tuvan throat singing? Because they aren't interested and/or they don't think it's worth their time. Why do many people spend their time learning english? Because they perceive that is is worth their time.
This is the problem with many "new" languages. The problems that most folks are trying to solve is often not limited by language, but the availability of infrastructure. Let's take Ruby as an example. It isn't the most elegant of languages (although that is a matter of taste), but some folks when through the trouble of attempting to make it useful enough (e.g., gems, rails, etc) to convince some folks to spend time to learn it (like me). From the time it was first conceived until Rails popularized it, that was 10+ years...
One swallow does not a summer make, nor a few web-classes a programming language renaissance.
If the lack of death of the relational database compared to better alternatives is any indication, people are simply stuck in their old habits, and no more so than corporations. Of course, corporations want to know their technology will be supportable in decades to come too.
Do we actually need a renaissance in new programming languages? We've got already a ton of interesting ones which have never been widely used. Scheme, Erlang, Haskell, Sather, and who knows how many more. When we start seeing these widely used in corporations, then maybe there'll be something to talk about.
I'd say python, or any untyped language, is a pretty lousy choice to teach programming.
I beg to disagree.
First, because never was that easy to publish a book. On Amazon and Lulu, one can just submit pretty much anything and sell, no matter how crap it is. On more traditional publishers, people like Versita and De Gruyter has options for publishing peer-reviewed, high-quality books, essentially for free (taking the payments from the sales, instead of the author in advance). On Versita, one can even let the books be accessed for free for the PDFs, while a printed copy would cost.
Second, because a lot of languages had no such privileges, and yet, they prevailed for some time. C was not an academic project, but it conquered academia, for it was the most sensible approach to what it was proposed. Python needed several years to get the status it got. And so we go.
(disclaimer: I work for Versita)
"Most people can realize what can be automated. That's why most people don't like repetitive tasks, that they know could be automated. That's how a lot of so called progress has happened."
My experience is exactly the opposite. When I'm in an intro computer course and say, "If you ever find yourself doing a repetitive task on a computer, then you're using it wrong; try to find a hotkey, or a script, or a batch process, or think if you can program something to do it instead", they look at me like I have two heads. I think most people are comforted by repetitive tasks and feel confident and secure with them.
We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
It's more important to provide a rich suite of libraries such as "CPAN".
Students (and new-grads) aren't realistically going to have that great an influence in most business environments.
Most programmers will happily learn a new language for personal interest but before they start using it professionally, they need all manner of additional features such as support from third party libraries, code analysis tools, IDEs and SCMs, and debugging tools.
That is a steep barrier to entry.