Khan Academy Chooses JavaScript As Intro Language 355
jfruh writes "Slashdotters (many of whom cut their teeth on much-maligned BASIC) have long debated what language kids should learn programming in. Khan Academy, the wildly popular producer of educational videos, has come up with an unorthodox choice: JavaScript, not least because of its ability to keep kids' attention with something fun and graphical."
The reason seems obvious to me (Score:5, Informative)
No additional tools needed. Everyone watching a Khan video already has a JS environment.
Re:The reason seems obvious to me (Score:4, Funny)
Lameness filter encountered. Post aborted! Filter error: Don't use so many caps. It's like YELLING.
Why khaaan.com uses Flash (Score:2)
Re:The reason seems obvious to me (Score:4, Insightful)
Re: (Score:2)
Exactly. The ability to go straight from learning to doing is absolutely critical for teaching programming. If I hadn't picked up my older brothers TI-85 when I was in junior high and started fiddling with his programs, I might not be doing programming today.
Same here. My brother was taking a BASIC programming course in the early 80's. I picked up his book and the rest is history...
Re:The reason seems obvious to me (Score:4, Funny)
My brother was taking a BASIC programming course in the early 80's. I picked up his book and the rest is history...
Can't have been a very useful BASIC book then, if most of it was about history instead of computer programming.
Re: (Score:2)
I posted (back on December 26th last year) that Javascript would be a good choice for learning because every modern computer can work with it......much like BASIC back in the day.
http://slashdot.org/comments.pl?sid=2591756&cid=38499508 [slashdot.org]
Re: (Score:3)
I posted (back on December 26th last year) that Javascript would be a good choice for learning because every modern computer can work with it......much like BASIC back in the day.
http://slashdot.org/comments.pl?sid=2591756&cid=38499508 [slashdot.org]
If a million monkeys are given a million typewriters...
Re:The reason seems obvious to me (Score:5, Informative)
If a million monkeys are given a million typewriters...
Typewriter repairman would still be a viable career choice.
Scratch (Score:4, Interesting)
Re: (Score:3)
Re: (Score:2)
Scratch is also not allowed on iDevices.
Logo! (Score:3, Insightful)
Silly mongols, you should use logo. You can even get physical, pen-wielding turtle periferals to show how what you code can make something real move.
Ok, it really isn't good for much of anything beyond geometric drawings with nested for loops, but it has immediate, visible results using a subset of normal coding logic.
Re:Logo! (Score:4, Informative)
Try scratch. Its basically logo with drag and drop commands and better graphics. I recently retried logo and found the modern version of it highly confusing with its attempt to be heavily threaded.
Re:Logo! (Score:5, Insightful)
Re: (Score:2)
Alice [wikipedia.org] is also an excellent language for absolute beginners (especially kids). It teaches object oriented programming too (unlike a lot of intro languages).
fd(50); rt(90); (Score:2)
Actually, Logo could do a lot more than drawing - it was basically an adaptation of LISP
Logo is Lisp without a lot of the parens. So is JavaScript. Add a turtle graphics library that draws to a canvas, and JS is the new Logo.
Re: (Score:3)
Actually, Logo could do a lot more than drawing - it was basically an adaptation of LISP
I googled logo javascript [google.ca], and got lost of hits.
Re: (Score:3)
/draw_square { 1 dict begin
gsave
newpath 0 0 moveto
3 {
w 0 rlineto
90 rotate
} repeat
closepath stroke
grestore
end } def
100 draw_square
Javascript (Score:5, Funny)
alert("Khaaaaaaaaaaaaan!");
Sane choice (Score:2, Insightful)
- Appreciating data-types, their limitations and the perils of using casting them incorrectly helped me a lot in understanding about things I need to be careful about
- Are they going skip the concept of Pointers ? It's not wise to use them unless necessary but to be aware of the concept was very rewarding for me
- How will they teach multi-threaded programming? We're not quite there yet in JS.
Re:Sane choice (Score:5, Insightful)
Since when do you teach complex casts and threading in an intro course? For crying out loud, I know engineers with 5+ years experience that still don't fully grok multi-threaded issues.
Re:Sane choice (Score:4, Interesting)
Well this is going to fuck up a previously up modded comment here, but I had threading and sockets in my Intro to Java course freshman year of college and am very glad I did. Not sure what is so complex about type casting in a statically typed language, its fairly necessary. You don't fully understand them there either, but that only comes with experience anyway.
On the other hand it was an advanced intro course, and I already spent a lot of time screwing around in Q-Basic in high school, in which had done none of those things. But the non-advanced intro class still had threading and sockets and what not, they just waited until the second semester to introduce them.
Re: (Score:2)
Re:Multi threading (Score:3)
Re:Multi threading (Score:5, Insightful)
Not happening to know the term "lock convoy" does not imply that said programmer is unfamiliar with the issues. If you learned multi-threading long ago (like I did), no-one had invented the cute description, but you certainly knew how what the condition was and possible methods of mitigation. Sounds like a stupid "tech interview" type of question.
I have programmed using threads in a number of different environments (phtreads, dce threads, and windows threads) in a number of different languages, and have taught threaded programming -- I have also threaded needles, reattached buttons, sewed, embroidered and read most of the Dragon Riders of Pern [wikipedia.org] series. I am a skilled and experienced threader. I had never heard of a lock convoy until now, but have certainly dealt with this precise issue before..
I suspect you would not have just asked this question and "stopped the interview" because I did not know this term, but I get tired of hearing statements similar to yours, and worse, I've caught myself saying similar things.
Re: (Score:2)
This is a fairly serious issue, but one that can be brought up after the basics of computer programming have been instilled. Most languages are either loosely typed, duck-typed, or have robust conversion features these days. Kids who learn to mangle a string in Javascript will pick up quickly on 'You have to use a 'to_str' method in some other
Re: (Score:2)
If only that were the case - you start seeing a lot of reimplements of functions like "to_str()" and the inverse (strtoi/strtoul/etc) because what was tran
Re:Sane choice (Score:4, Insightful)
Pointers in anything other than the very lowest-level-touching-the-metal code are an abomination. They cause far more confusion and grief than they ever help. Yes, there are situations in which the best way to address a problem is to pass a pointer around. However, in this day and age of multi-gigabyte ram sticks, I'd rather bloat up a program's ram usage with maybe unnecessary copies of large objects than dick around with pointers.
I am going to disagree. There is basically no difference between C pointers and the byRef concept in all the higher level languages. It requires the same understanding, its just slightly different vocabulary and syntax.
C method is superior because it makes it CLEAR when things are being passed by value and when they are not.
C method is superior because it makes programmers consciously decide every time, if a reference or value should be passed. Not doing this results in code that passes massive objects by value and causes performance/resource issues, or often hard to solve bugs where values change in unexpected ways because multiple references exist and its not clear they are only references not clones.
Not having pointer syntax is a mistake most modern languages are making IMHO.
Re:Sane choice (Score:5, Interesting)
- Appreciating data-types, their limitations and the perils of using casting them incorrectly helped me a lot in understanding about things I need to be careful about
- Are they going skip the concept of Pointers ? It's not wise to use them unless necessary but to be aware of the concept was very rewarding for me
- How will they teach multi-threaded programming? We're not quite there yet in JS.
Your first language doesn't have to support every programming feature. BASIC certainly didn't support any of these (except data-types to a very, very minor degree) and many of us did fine with it. While data types are important at the beginning to do anything in many languages, we don't really teach pointers or threads (if a language even supports them) until later, so I don't see this as a big problem here.
I'd say for the purposes of Khan Academy, they need something easy that will keep people's attention (as it's mostly aimed at youth who have no real obligation to keep on paying attention unless it's interesting) ... and so, given it's graphical nature, this sounds like a good choice. Their second language can be more fully featured.
Re: (Score:2)
Re: (Score:2)
Are they going skip the concept of Pointers ?
Pointers are easy. The difficult thing is getting people to understand the concept of indirection. A language like JavaScript contains references, which teach you 90% of what you need to know about pointers. The rest - pointers to pointers and pointer arithmetic - is pretty trivial once you understand the difference between copying and aliasing.
JavaScript not found (Score:2)
Funny, a search for JavaScript on Khan Academy has no results!
http://www.khanacademy.org/search?page_search_query=JavaScript [khanacademy.org]
Re: (Score:3)
That's because you are searching for the answer to the question. Try this search:
http://www.khanacademy.org/search?page_search_query=programming [khanacademy.org]
Someone who wants to learn programming doesn't search for javascript. That's like searching for "42" when you want to know the answer to life, the universe, and everything.
Re:JavaScript not found (Score:5, Funny)
Someone who wants to learn programming doesn't search for javascript. That's like searching for "42" when you want to know the answer to life, the universe, and everything.
So wait - javascript is the ultimate answer to programming?
Crap. I quit.
Re: (Score:2)
No it's the answer to the ultimate question about programming. The trick is to find out what that question is.
Re: (Score:2)
Re: (Score:2)
Of course, the problem there is that the entries that search returns which actually contain a programming language at all are entirely done in python, so still no javascript.
Pretty much all the problem with JS (Score:2)
Come from the fact that its syntax and features are set in stone, and every change either takes the w3c 10 years to establish a standard that's actually obeyed, or a massive browser feature war that leaves us with unimplemented blink tags. If the language itself could have evolved even as fast as slothful Java, it wouldn't seem so unintuitive as a first language.
Old News (Score:5, Informative)
The video the article uses as its source is from October.
The article also incorrectly states that this is Khan Academy's first programing language. There are a few intro to Python videos on the site already.
My post to the original Slashdot discussion (Score:2, Interesting)
I got modded down as Flamebait, so I feel a bit vindicated now :)
Post from Saturday July 25 2009:
"One not-so-obvious candidate: JavaScript and HTML.
Pretty much every browser in existence supports JavaScript, so with nothing more than a simple text editor and your browser of choice you can be off and running. As far as beginning programming is concerned, JavaScript easily encompasses any programmatic constructs you'd need.
The best part is that the students can easily display the results of their test program
Javascript isn't the problem (Score:2)
Learning the unmitigated mess known as the document object model is. And then you have you worry about CSS if you want to do anything fancy. So in effect you have to learn 3 languages (2 above + HTML) , including how they interact and obtuse DOM system before you can do anything useful. And then we have HTML5 and the god awful canvas object interface. I feel sorry for the kids, BASIC would be a better choice.
Re: (Score:3)
Pretty much every browser in existence supports JavaScript, so with nothing more than a simple text editor and your browser of choice you can be off and running.
Not really. The default "development tools" of your browser are complete shit, half the time you won't even get an error message when something went wrong and printf-style debugging isn't all that easy either and of course you need to have a HTML to even start doing Javascript, which adds a another layer of complexity. So as a beginner you are confronted with a lot of "stuff doesn't work" without even a hint on what went wrong. Of course you can fix that by using browser add-ons, predefined HTML pages and a
Re:My post to the original Slashdot discussion (Score:4, Informative)
half the time you won't even get an error message when something went wrong
FireFox, MSIE, Safari and Chrome all have a javascript console which prints plenty of error messages. F12 is your friend.
printf-style debugging isn't all that easy either
You can log text and data to the javascript console using console.log(); or any of the other debugging features like line-debugging.
and of course you need to have a HTML to even start doing Javascript, which adds a another layer of complexity.
...and teaches you to create documents to relatively loose syntactic rules before switching to the more strict rules of JS.
I agree that javascript isn't the nicest language out there, but it's probably the best compromise.
AutoIT (Score:2)
that's what I started my son with 8 years ago (Score:5, Insightful)
Since then he's gotten pretty good with Java, C#, C, and python and played with F#.
The key part of the title is "intro language". Seems like some comments are expecting kids to come out of this and write the next Office suit, or Google competitor, or missile guidance system. I think javascript is a great way to see if a kid wants to do more.
The right choice (Score:5, Interesting)
Re: (Score:2)
Re: (Score:2)
Amen to this. Perl's like that, too, to some extent: write code, save file, run script, see immediate output. Lather, rinse, repeat.
Unlike the inexcusably broken Xcode 4.3, which won't even run - not even doing anything, just sitting there! - longer than five minutes on my machine.
Graphical feedback is a good idea... (Score:5, Interesting)
I was given the assignment of teaching an intro computational physics class at a university two years ago using C. The students came in knowing no programming (or Linux), and I was supposed to get them comfortable writing C codes to simulate things in two hours a week.
The trouble with C is that graphical output requires a bunch of advanced concepts; I wanted to give them a way to animate their simulations just using the things they already knew (which, at that point, were basically math, for, if, and printf/scanf)
One of the first things they learned was shell I/O redirection (the | operators), so I wrote a command-line filter that read text in from stdin and translated it into animations, with support for various graphics primitives in 2D and 3D along with some interactivity (rescaling/translating on the fly by keystroke input into the animation window). So they could code up a simulation of some thing (a double pendulum, say), and watch it go in front of them. To my surprise it was a lot faster, even over remote X, than I thought it'd be. The huge advantage is that it let them get pretty graphics using nothing other than printf on their end.
Some of the stuff they made by the end was pretty impressive: vibrating 3D meshes showing the oscillations of a stretched membrane, the resonance between Jupiter and the asteroid belt developing, and the like.
Sushi cook (Score:2)
I guess it's a practical choice then. JavaScript is widely used and they can move their skills to the AJAX and Metro world.
For the more nerdy types, the "if you want to be a sushi cook you will have to start as a kitchen cleaner" route could be offered as an interesting alternative route. There you would begin with C and assembly...to learn a bit how processors work (machine language, registers, stack) and how to write lean code. Raspberry Pi would be the hardware and, you would have a dedicated mentor to g
Bad idea... (Score:4, Insightful)
Teaching programming to children isn't even about teaching PC's or teaching a particular language, it's about imparting the ideas behind turning "what we want the computer to do" in our imagination (the kids will later call this algorithms) into instructions for the computer. BASIC and others are languages were designed as introductory because they can be used without much regard for external environment, allowing a natural focus on the fundamentals of all programming in general.
The child then develops an intuitive understanding of what s/he will later describe as algorithms, data structures, and programming languages, or platforms, in general; they develop the theoretical foundations subconsciously via exercise, habit and practice, (and for the gifted, introspection and critical thinking), so they can be taught these concepts formally with ease later on. At that time, the choice of programming language isn't much of an issue.
But this? JavaScript requires the teaching of an environment and pre-existing objects like DOM that have nothing to do with the above goals and will certainly diminish the natural intuitive development of the appropriate concepts involved with programming. They are not learning how to translate their imagination into instructions as a general practice; they are learning how to manipulate specific pre-determined objects outside the scope of theoretical concerns. This is bad for them. This will limit them.
As an aside, let's face it, this is motivated by business. 1) JavaScript will be a heavily used language in the immediate future, 2) Khan prepares students to use JavaScript, 3) Khan's students are equipped with business-world skills and succeed, 4) Khan claims statistics reflect it competes well in the education market place, 5) Khan gets money.
Meanwhile Khan's students have to learn the basics of programming the hard way. Like a GED student picking up calculus at age 35 struggles with it, so will those students.
Speedware (Score:2)
Anyone who is anyone knows that real programmers use Speedware.
ugh... I shudder just typing that- even though it was in jest...
If... (Score:2)
A better choice: QML (Score:2)
The QML language is amazingly simple to learn and contains javascript snippets to drive the complex stuff. It has much better concepts of variable bindings than HTML/Javascript alone and is significantly faster (and runs on pretty much everything).
I recently taught a child QML and had her create a Mahjong game for her mother in a couple of weeks. I did some of the harder javascript logic, but she did most of the entire game from scratch. Oh, and she learned git in the process and the concept of simultani
I may sound like a broken record, by Python? (Score:5, Insightful)
I don't get why Python isn't the choice here. Javascript, I find, is a horribly ugly language, harder to understand and code in than most, and with more quirks, special cases, and generally horrible-to-work in language design choices than pretty much any other language in common use today.
Python does it right for learning. It teaches good practices (indentation, code readability), it aims to not surprise the user, it's a well designed language which is very good at being consistant, and in general is nice to learn in. Not only that, but it avoids the low-level stuff (which isn't that relevant when you are first learning to code) and instead teaches you the higher-level concepts which are more important. It's also got a large, well documented standard library, and is interpreted, so you can use it as a prompt, and don't have to worry about compiling. It's also cross platform, free and open.
I'm not going to lie, I don't like JavaScript, and I've never got why people like it. I can understand using it - it's the only real choice for scripting on the web - but to use it out of choice, or teach in? I don't get it. Fun and graphical? Not really - then it requires an understanding of HTML and CSS too, which is either going to be done wrong or be too much.
My main problem is the line
Resig admits JavaScript, as a language, has its warts and issues, but so do all languages.
- This is true, but some languages try really hard to avoid them, and some fix them. Python is an example of both - Python 3 fixes a number of issues with the language, and in general, with the process of PEPs and not being afraid of pushing the language forward, Python has turned into an extremely polished language with very few issues. JavaScript on the other hand, is full of them - and there is no real effort to fix them, as far as I know of, at the moment.
Perfect choice (Score:2)
Javascript is easy, has a similar syntax to other C-like languages, no compiler/environment needed as a browser is enough, enables embedded scripting thus giving instant feedback. A good language for beginners.
Java Script not a real computer Language (Score:2)
Smart choice - it's accessible, and the future. (Score:5, Insightful)
It's a great way to introduce kids to the basics of programming languages without miring them in the ( necessary as they grow more proficient ) details of memory management and computer science fundamentals such as data design and system architecture. It also falls into a very interesting class of languages - a class by its own really - which exposes kids to some of the concepts of procedural languages and some of the concepts of imperative languages.
But more importantly, Javascript - whether or not more traditional computer scientists like I would like to accept it - is likely a gigantic component of the computing future. Its the language that runs on the most platforms, and is used for nearly everything. Right now, many of us are familiar with how Javascript handles interactivity on webpages, but did you know that Javascript is actually used to route the majority of phone calls placed through cell networks? Did you know that most SmartTV manufacturers ( GoogleTV, Samsung )are producing SDK's and API's to produce "Apps" on their televisions written 100% in javascript (instead of the "window" host object you have "volume"...etc)? Did you know that it's being used in factories ( along with python ) to control the movements of industrial robots? With the advent of server-side event-based asynchronous web programming in javascript like Node.js as well, and the beastly v8 engine being BSD licensed, its importance will only increase over time as people find more ways to embed it as the primary interface scripting layer.
It's good thing to expose people to, for sure.
Re: (Score:2)
Re: (Score:2)
but did you know that Javascript is actually used to route the majority of phone calls placed through cell networks?
No, but that explains a lot...
In other news (Score:2)
Interactive JS lessons (Score:4, Interesting)
Re:Javascript is already for kiddies anyway (Score:4, Insightful)
Javascript is a baby language for unskilled and sloppy programmers, so it'll fit right in. Javascript fagets need to learn a grown-up language. They only write in Javascript because there faget asses can't hack it in something better.
Cue trolls and linguistic snobbery. If you can get the kids et. al. interested in learning, 90% of the battle is won. The other 10% is debugging. :)
Re: (Score:2)
Hope you don't mind me quoting you ... :)
https://plus.google.com/106639317314065291577/posts/irsF5UAvfsE [google.com]
Re: (Score:2)
They should get kids interested in a serious programming language instead of babby faget language like Javascript. Why not start them off right instead of starting them off faget?
Faget Vulcan pet teddy-bear person.
JavaScript is an awesome language. I'll concede that it isn't the best language to start with if you want to write structured code, but if you are skilled it is very powerful.
That's not to say that a kid with smarts just starting out can't do a lot with a little code. Instant gratification.
Re: (Score:2, Insightful)
Javascript fagets need to learn a grown-up language.
Why bother learning a grown-up language if you're unable to act like a grown-up?
Re: (Score:2)
Javascript is a baby language for unskilled and sloppy programmers, so it'll fit right in.
Just out of curiosity, which language do you prefer when you're creating interactive web application interfaces?
Re: (Score:2)
What if you want the application to be accessible to more than 58% of users (according to browser market share from Hitslink)?
Re:Since when is JavaScript an unorthodox choice? (Score:4, Insightful)
Re: (Score:2)
You don't need a server running your PHP code. As an experiment to prove it to someone, I've even used GTK in PHP without any server running at all. I quickly decided that in most of the cases I've ever looked at, there are significantly better choices, but it is definitely possible to use it just like any other interpreted language outside of a web server.
Re: (Score:3)
Re: (Score:2)
That's an interesting assumption; that a programmer needs to know something about computers.
In actuality, I too believe programmers SHOULD have an A+ level of understanding of computers and networks. The problem is, many programmers simply don't. They know what they know which never ceases to amaze me as to how little that actually can be. But can they code? I guess... maybe... it's hard to for me to have respect for a coder who doesn't understand the environment beyond what they learn from books and ma
Re: (Score:3)
Qualify "A+".
I have a good idea of how an MMU works and I've done logic gates in hardware in the past, but I wouldn't be able to design a CPU.
I know the difference between a token ring and bus network architecture and how to read ethernet packages by raw hex, but have no idea which IPv6 ranges are reserved for what purpose
Are those enough for an A+ or do I need the other things?
Because I think none of what I just described is required to be a good programmer.
Re:Since when is JavaScript an unorthodox choice? (Score:4, Informative)
On the flip side, I can't think of a time that knowing about setting up web servers or other servers is going to help with the programming at all
In one presentation at Google, Dan Weinreb from ITA said that unless the code delivered to be run in production in ITA doesn't pass muster for the Ops people, the Ops department will refuse to deploy it. There must be some documentation of upgrade steps, problem diagnoses procedures etc. Simply put, the programmers must write the code with some knowledge of how the Ops people are going to run it. I imagine that other companies, at least service-providing companies with internal development, have similar guidelines for developing internal code.
Re:Since when is JavaScript an unorthodox choice? (Score:5, Insightful)
I personally think it's a horrible choice. If you don't know enough about computers to install Python, you probably don't know enough about computers to learn how to code.
That's a pretty stupid thing to say, you must really be trolling or be really dumb. I was introduced to programming with BASIC, and procedural programming with LOGO, and just look at me now, I can't code shit! *ahem* Seriously though, people were learning programming before "installing" was something you could do on your personal computer.
Re: (Score:3)
Oh yes! I was forced to take a freshman high school (or maybe even earlier) computer programming course that I hated and still fail to see The Point. We had to learn Fortran code and punch cards, send them away, and wait for them to be returned to us, later. Like, weeks later, or so I recall.
You don't mind if I water that last grassy patch, do you?
Re: (Score:2)
Re: (Score:2)
Not everyone has the intrinsic to be a programmer.
And what exactly is the intrinsic to be a programmer? Hard work? If you can explain what is needed as 'intrinsic', then you can teach it. But I'll bet you can't explain what is needed, except in terms that are so vague they are meaningless.
Re: (Score:2)
Some people can draw, some people can't.
To differing degrees this applies to most disciplines.
And no, other than the above, I'm not prepared to write an essay on what, aside from an affinity for logic, is required to become a programmer.
Re: (Score:2)
Re: (Score:2)
Re: (Score:3, Interesting)
That an JavaScript is an extremely "loose" langauge with a lot of quirks. Context of "this" changing randomly? Check. Accidentally redefining functions? Check. Variable raises (AKA variables not defined yet somehow exist before their defintion)? Check. The vaguest duck typing system of any language ever? Check. Awful, awful class definition syntax? Check. Total lack of a reasonable debugging environment? Check. Almost complete lack of ability to deal with binary (or even non-text) information? Check. I mean
Re:Since when is JavaScript an unorthodox choice? (Score:4, Informative)
You not having a clue how to code JavaScript doesn't mean JavaScript is a bad language, merely that you are out of your depth with it and simply don't understand how it works.
I agree that javascript is too often spoken poorly of as a programming language, but having the addition operator not be commutative is just twitch inducing. See the Wat video, or try
[] + {}
{} + []
in you're JS console.
Re: (Score:3)
If you type {} + [] into the console, it's not actually parsing as addition, it's an empty block followed by a +[] expression (unary plus operator used to convert an empty array to a number).
Re:Since when is JavaScript an unorthodox choice? (Score:5, Informative)
I'm sorry, but as someone who's written way more JS than anyone should ever have to I'd like to politely ask you to shut the fuck up and stop trolling me. You could have at least brought up what points you think I'm wrong on - but I can point out solutions that were created specifically to combat each of the issues I pointed out. Hell the basic jQuery code alone deals with all of these issues AND jQuery itself was created so you could code vanilla JS without having to waste time dealing with most of them.
Oh, and I would really recommend CoffeeScript. See how wrong you think I am after coding CoffeeScript with jQuery for a week. Don't forget to use the node.js watched compile freature - you'll get vaidation each time you save. It's fantastic.
Re: (Score:2)
Your reply would be better if it actually dealt with the specific points that GP has conveniently listed.
Re:Since when is JavaScript an unorthodox choice? (Score:5, Insightful)
Coding is not a computer skill, it's a logical skill. It's about translating abstract intentions into a well-defined precise logical language. The skill is knowing how to efficiently turn your ideas into instructions that a machine can carry out. That's why it's so transferable between platforms and languages, because it's really a skill that's independent of a computer. It would be more than possible, for example, to teach someone who's never seen a computer to write pseudocode.
Re: (Score:2)
Exactly. This is why I'm always so baffled by people who engage is massive flaming holy wars over which programming language is for idiots, and which one will instantly turn you into the techno-wizard of your dreams, no effort required.
There's Javascript out there that is a beautiful, well thought out, well structured piece of art. There's also plenty of C, Java, Python (pick your favorite programming language and insert it here) that is an unholy cloud of inept fuckery. No amount of high tech programming l
Re: (Score:2)
http://news.slashdot.org/comments.pl?sid=2702015&cid=39210167 [slashdot.org]
Why would you think that?
Re: (Score:2)
Re: (Score:2)
Because every program requires inheritance, least astonishment isn't controlled by the programmer, and everything Google does is good.
Re: (Score:2)
And what is not marketable with Javascript skills? Ever hear of Node.js, jQuery etc.? "Oh noes, a language that does not confirm to my limited preference of how a language should act!!1!!!" Inheritance is not inherently (hihi) better than Javascript's prototyping.
Re:Scripting (Score:4, Interesting)
Ask 100 programmers what 'best practice' is and you will get 100 answers.
Want to start a flamewar? State that _any_ OO language isn't a 'real' OO language like other OO language.
Personally I don't think it matters what a persons first programming language is, as long as their second programming language is some sort of Assembler. OK I will allow Assembler 3rd, C second.
Re: (Score:2)
Yes. Every programming language has issues. There is no such thing as a "full" programming language. For teaching to absolute beginners, javascript will do just fine. Only when you actually start to educate future programmers (as opposed to schoolchildren) would it be prudent to use a different language. Learning to program is primarily about logic and javascript implements logic just as well as other languages.
Re:keep the kids ignorant and unable to compete (Score:5, Insightful)
Re: (Score:2)
Only downside is that you DO need some basic knowledge of HTML and, presumably, CSS. Not too difficult and perhaps a good way to introduce students to the concept of syntactic rules, but an additional step nonetheless.
f(x)['x'] = error (Score:2)
For function f(x){ return array('x'=>$x); }
You can't even do the above in PHP because it was developed to make parsing easy (see $), not coding.
I guess the validity of $x='x';$$$$$$$$$$$$$x; makes up for that ;-)
It is also lacking a means to list variables in your scope, I think.
Re: (Score:2)
Every language is broken in a multitude of ways - especially to users of different languages. Just watch a C# fan tear Java a new one, for instance. Or a LISP or Ruby programmer versus - well, everything else, really.
Javascript is simple (but yes, inconsistent), and the runtime environment is already on your computer. If they find out they like programmibng, then they can progress into the minefield that is selecting a second language to learn for more professional use.
Re: (Score:3)
The fact that commutativity does not hold for "[] + {}" is just wrong!
If that's the worst you can think of in javascript, you must really hate C, C++, Java, PHP and probably most other languages ;)