Go R, Young Man
theodp (442580) writes " Learning to code has become a mainstream fascination," writes Brian Liou in Why are YOU learning to code?, "but all the evangelization has been misleading. The problem in our Chris-Bosh-codes-so-should-you society is that people learn to code without first asking "for what purpose do you want to use code?" What in your day-to-day work could you actually automate using code? Let's face it, your odds of creating the next hot iPhone app aren't great, but the spreadsheets you look at everyday or the strategic business decisions you or your company makes? Coding can help you with those. Coding to better understand data would help everyone." Leada co-founder Liou's advice? "So to all non-technical professionals looking to get technical: If you want to become a software engineer, by all means learn Ruby or go through the JavaScript tutorials on Codecademy. But if you're simply a business professional looking to gain an edge on your peers, trust me, you are much better off learning R." So, did Mark Zuckerberg steer 100 million K-12 coder wannabes down the wrong path with the JavaScript and Ruby preaching?"
Language is not relevant, as long as you don't just learn one.
CEO of data analysis company suggests people learn data analysis language.
In other news, CEO of Erlang Solutions thinks Erlang is great. No word on why.......
"First they came for the slanderers and i said nothing."
Otherwise, I'm not sure it's a great choice. For the typical business person who's interested in coding you might as well start with VBA in Excel or Google Apps Script if you've moved away from MS Office to Google's business apps. Google Apps Script is javascript based so you have the advantage of learning something that has other applications.
R is very good at manipulating and plotting data but the charts produced aren't always of the highest quality. They're fine for internal use. There are lots of packages to extend the usefulness of the language but at its heart and soul it's about numbers and plots. It's not really a general purpose language. Just keep that in mind.
because it was positioned early in the browser's evolution
that's the big secret
it has no other advantage (well, familiarity with syntax, if you want to advance to java/ c++/ c# i suppose)
now you can write iOS, Android, and Windows code single source with Apache Cordova, and code on the server with node.js
javascript marches on
meanwhile, those who have a pathetic arbitrary need to feel superior have to crap all over javascript and steer beginners away from the language that actually will advance them, in favor of brittle niche choices? why?
javascript has plenty of obvious, longstanding problems and weaknesses
and? who gives a fuck. what language doesn't?
and especially for noobs, it is a great introductory language and should be the primary language for all programming neophytes to learn because of its immediate applicability and, yes, simplicity. a lightweight scripting language is what you want to teach beginners, not how to write an OS
later on, if they become professional programmers, maybe then they can develop fetishes for esoteric languages and derive an artificial sense of superiority from that as well, like some of you assholes
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
It's a statistical computing environment. R is much closed to what VB was pre-VB6 - a loosely defined domain specific language with lots of libraries aimed at a specific task. It's not really a general purpose programming language and not a great one to learn if you want to learn to program.
If you do a lot of number crunching and want to move beyond Excel, R is a great choice (as is matlab, s-plus, or any of the others aimed at analytics).
If you do analytics AND want to learn to program, go Python and NumPy/Pandas.
If you just want to learn to program, VB, JavaScript, Python, Java are all good. Just find what you'd like to program and see what languages people are using.
And yes, at some point, pick up a few more languages if you find you like programming.
-Chris
This is just taking the facile view that coding is a means to an end. Step 1: learn to code Step 2: ???? Step 3: 90k year job at a startup. =/
It's no different than saying "all the good jobs require a college degree, therefore we should put EVERYONE through college, then everyone will get good jobs". No.
Telling kids that the key to getting a good job is by learning ruby, or JS, or whatever language; is just going to create an environment where there's a glut of substandard ruby and JS coders out there.
If you want kids to be successful, teach them to learn, and to think for themselves -- their interest and ambition is what will be the deciding factor, not cramming CS-lite education down their throats. Because, you can create shitty developers out of people who have no interest in the field, and are only there for a paycheck... but what's the point?
...by the nose, straight to his own end goal - a larger pool of cheap labour skilled in the basics needed to produce web applications. By increasing the supply, they can take advantage of market economics to vastly reduce the amount of money they need to offer these people.
I'm not saying they shouldn't learn JavaScript, it's a good place to start and is pretty ubiquitous. It's just lucky for Mark that they are pushing JS and Ruby, very lucky.
Honestly though, saying all those people need to code is like saying I need to learn how to write a sonata in order to listen to music.
Most people would be capable of pushing out a few snippets of code, mostly cribbed from some website - but will flail and cause incalculable damage when they think they have 'da mad skillz bro' and start to write hundreds of lines directly running SQL script from the web page. I've seen the results when an accountant decides their use of Access and Excel means they can code big systems. It wasn't pretty, it broke down frequently, it had dozens of manual steps and adjustments to make each month and it took 5 hours to run. I left that job the second I could.
All those moments will be lost in time, like tears in rain.
The problem in our Chris-Bosh-codes-so-should-you society is that people learn to code without first asking "for what purpose do you want to use code?" What in your day-to-day work could you actually automate using code?
That right there summarizes the main issue. In my experience, far too many approach programming with the I'm going to learn programming mentality. This is fundamentally flawed, since there is more computer science than one can possibly hope to learn in a life time. It very much all comes down to having the fundamentals (an online course in any language will work for this) and then settling down to working towards an objective. Your objective doesn't need to be anything grand: you are far better off starting small. Little scripts to make your life easier: at home, and in the office.
Once you have an objective in mind, your best friend is the help function for your chosen language. Programming isn't about having everything memorized, it's about effective research applied to solving a problem. One need only work out a decent research methodology once, whereas one can work out infinite ways to solve a given problem programmatically. Writing code with decent headers in your functions lets you call up help, even on your own code. In short, you end up making your own help, based solely on your own programming style. This helps for specific functions, but when you get stuck, unsure of what you need to do: google. Chances are there exists a stackeoverflow post that will steer you in the right direction, if it doesn't outright show you what you need. Once you get an idea, you can also refine your search, often pulling up examples.
The main thing to keep in mind is that you will always be learning. There is always a better way to achieve the same objective, however achieving the objective is what matters. Don't get caught up trying to repeatedly make the code better: instead, push on to completing the first version first. This is a trap that consumes a lot of people just starting off. You'll never finish, if you keep on restarting, and what really matters is that the code works properly.
PS: I did not mention testing, since everyone has their own way of including such. Starting off, debugging will be enough to wrap your head around. Just keep in mind that at some point you will need to work testing into your workflow. Automatic testing makes it easy to write better versions of your code, since you'd be able to see if your tweaking broke anything.