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."
The normal problem is that the majority working with spreadsheets as the summary suggests never do enough of it to get good or understand what's bad.
I remember Y2K and being handed a ruck load of foxbase code a team had written to make work for Y2K, since it was now ITs problem to sort it all out. The easiest thing to do with much of it was scrap it and rewrite it to do what they actually thought it did rather than what was coded.
If you don't know what you're doing fancy tools will just get you in trouble.
As for R, well your mileage may vary. I bought slew of books and spent some time with it. Unfortunately using procedures that were not ready for prime time. So I went back to using other tools that were reliable and actually provided some information about what was wrong if it didn't work. Of course, I can code in several languages and have forgotten a few others (e.g lex & yacc).
Learning Java, Ruby and other mainstream languages has meant I receive nothing but constant bother from one recruitment firm after another spamming me with vacancies. So I intend to wipe every skill off my public profile on places like Linked In except R. I could do with the holiday from the attention.
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
YOU CAN'T HANDLE THE R
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
First of all teaching people to code in Javascript is litterally to condem them to years of demented reasoning.
Ruby OTOH has basic structures which work well together in simpliefied structures ala Smalltalk, so that's n ot a problem. If you need R's capabilities just add on R's libraries.
There are many languages such as Ruby where learning the basic constructs for use as a DSL is a good idea.
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?
>So, did Mark Zuckerberg steer 100 million K-12 coder wannabes down the wrong path with the JavaScript and Ruby preaching?"
Yes. Javscript is a terrible language and ruby is dying. Also,default ruby is a terrible runtime. Maybe learning R is the right answer, I doubt it. Learning python 3 or scala seems like a better use of a non-programmer's time. Both will teach you to think like a programmer and have easy enough syntax that you're never left wondering if you need another ;, *, or & to fix your problem. Neither drown you in verbosity like LanguageNameFactory.getInstance().getLanguageName(). Python even has the advantage of being both useful and common.
Once you know how to think like a programmer, then you can learn whatever language you need. Be it powershell, c#, java, c, or, yes, even Javascript.
...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.
Should study SAS instead, if they want "to gain an edge on their peers." R is dominant in academia, but SAS is dominant in business and government. Assuming you're not an Excel wizard already. Whether you use R or SAS, you will be interfacing with your co-workers through Excel.
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.
If one takes the time to learn it, it can be quite productive.
For example, the following one liner will all read tab-separated files in a directory to data frames, combine all columns and rows to one data frame, then write to a tab separated file:
write.table(rbind.fill(lapply(list.files("."), read.delim)), sep="\t")
Go R, Young Man
But it's not International Talk Like A Pirate Day for months!
systemd is Roko's Basilisk.
Don't learn R, learn Python instead. Like R, Python has tons of support for statistics, numerical computing, and machine learning, and pretty much whatever you want to do in R, you can do just as easily in Python (with matplotlib, SciPy, pandas, and a few other packages). Unlike R, Python is also widely used for general purpose programming as well.
"Go R, young man" - what is the end result? A surplus of men who have irrelevant knowledge (not just in programming, but in R of all languages) while women go on to become life-long careers as doctors, etc. (as opposed to "you're too old to develop software" at 40).
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
I guess kids today will never get to experience what I felt when I learned to code BASIC on that TRS-80. It made me feel powerful like never before. No one I knew could do what I was doing. I figured out how to use that mysterious booklet containing the instruction set for the Z-80 and lightning shot from my fingers. I was a pioneer boldly sallying forth into unexplored worlds. Wielding my keyboard like a sword, I slashed my way, unbloodied, like The Count of Monte Cristo, through Pascal, PL1, 360/370 and C till finally I was slain by microcode. What an adventure it was. Have fun with that spreadsheet for your pointed headed boss.
Fifty years of Yippie! 1968-2018
The problem with R is that it is a syntactic nightmare that would fry the brain of someone who didn't already know how to program. R is what you get when social scientists think they know how to make a programming language. But at least you don't have to pay to play like you would with the iPhone app. (Why is the President encouraging people to build apps for walled gardens where they have to pay to play, anyhow?)
Telling people to learn R is scary. There's enough terrible stats work out there already, and without a stats background and a shit ton of reading it's going to be hard for the average person to produce analyses that look like they could be useful, but be wrong or horribly misleading.
It's also not that great for a lot of data processing tasks. Many business folks would be better off learning VBA or SQL depending on what tools the company uses. You don't need R for basic summary information. You can do that easily in any language, and some are a lot better suited to helping automate tedious tasks, plus yield enough transparency into process and can be easily checked.
Ha, ya. I wouldn't turn the lights out in the same room with him in it. But you go ahead, what could possibly go wrong?
You get the awesomeness of dataframes in an awesome language with an awesome community (that's 3 awesomes!). Use the Python Notebook tutorials and go do awesome things . . .
Sdelat' Ameriku velikoy Snova!
I think we're overloading the term "programming language". While no one is confused in the industry, outside the industry it is relevant. Bash scripting, C++, Java, R, LISP, Python- does anyone put all of these in the same universe of "programming language"?
http://www.sagemath.org/ should be visited by anyone interested in helping promote (including R) open source software that is numerical in nature. I agree that programming is important if you need answers to tough (realistic) math questions, and SageMath will allow you to explore a number of open-source packages ( NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R, etc.). Really, SageMath needs more users . . . please help!
Not another, this language, that language debate. I started on mainframe cobol and assembler ('cos the cobol ran slow, but 64k was the norm in those days- until we got DAP). It is true that different languages will change how you perceive the problem domain, and that's a subtlety that emerges rather that can be taught. If I was to suggest one it would be python.
In the meantime coding in anything at first helps. R or otherwise. Then you can branch out and start learning.
What is the opinion of the anti-R people of Hadley Wickham? Is is basically a hero to R enthusaists. (http://had.co.nz)
I don't think any general-purpose language will come in as universally useful as a smattering of SQL knowledge.
Getting hired when you're young requires at least the ability to fake it with the latest tech fad, whatever it happens to be at your potential company.
Now, if you'd actually like to *learn how to program*, start with Kernighan and Richie's book on C and work your way up the stack.
I happened to end up in my career needing a tool to do deep analytics on a tonne of data & it just so happened I 'remembered' R (having no need for it before I knew 'of it' but not anything of any consequence). As others have said it is not a 'language' but a 'tool', though it clearly includes the need to understand logic & how to use 'programming concepts' to make the most of R.
Having said that, any given programming language is also 'just a tool', some at a higher level than others. I could in theory do everything I'm about to do using C & doing alot of programmer (replicating matlab or R or any 'higher level' statistical tool) but I won't waste my time. Though there may also be the need to understand various scripting languages to process data from various sources to be used in R.
So, push comes to shove the only thing that kids/society should maybe be taught at a younger age is 'how to think logically about the problem you need to solve'. Using some programming language to teach the concepts is probably a good idea as it makes the concepts more concrete & thus easier to learn, but as any 'real' programmer knows, the 'language' or 'tool' that you use to get a job done is dependent on the context of the job/problem you're trying to solve. But if you have a solid understanding of logic & how to apply it to a programming problem the 'tool' you use is a matter of learning the syntax of the tool you will be using.
Seriously some of the pivot table stuff is pretty powerful and requires some actual work to learn. R??? Seriously. I'm a programmer and R is hard for me because I don't understand a lot of the basic math or stats to even take advantage of it.
You cannot create a browser using javascript. Nor can you code a kernel using Ruby.
You can do both with C.
You're going to be unemployed anyway. If you're younger than 30, you'll be used up like a slave until you burn out. If you're over 30 forget it, you're too old. The vast majority of coders will be unemployed anyway so why waste the time on learning useless stuff when you can learn marketable skills?
I know it isn't, of course. But what is a "business professional" exactly? Doesn't the business you work as a professional for make any difference? Over the last few decades the word "professional" has become detached from what you and the business you work for actually do for a living. There seems to have evolved a generic "business professional" who apparently fits in everywhere and does - what? I never noticed it was something so specific that learning a specialized language like R would make sense. Apparently I missed something. So I did a few web searches for "business professional" and most results were about how business professionals should dress. I guess that says it all, R must be a dress code.
Yes, let's all learn the language that has the things 99% of us don't need.
BeauHD. Worst editor since kdawson.
.... so far, I do not recommend it.
"A great introductory language"
There *must* be something I'm missing.
I see her struggling with syntax errors and logical mistakes not picked up in syntax highlighters or bolt-on delinters. The debuggers are a myriad of pages of DOM inspectors, performance tools, js files she's not working with, options for things she doesn't know about and a maze of files, with very little ability to actually step through your running code to see how your "if" statement executes.
The cute little sandbox online simulators take shortcuts.... she spent three hours trying to figure out why she couldn't get a selector hook a click event to a button, running the code in online simulators but not being able to translate it to her code. In the end it was because she forgot to start with a jQuery $(document).ready statement, the simulator couldn't identify that mistake. She couldn't spot it herself because it gave no indication of what might be wrong.
Even turning on strict mode on Firefox doesn't give a single error for a missing $(document).ready, but generates 7 errors for jquery.js.
I used to think Javascript was okay for learning.... but she's programming blind on a lot of stuff. I would love for her to see something like "assigning click event to null object, line 28" or similar, but all I can say is "divide and conquer... test your assumptions at each step, and watch for errors, even if they rarely appear...".. She would have been much better off spending her time working with variables, types and if statements rather than trying to squeeze information out of her programming environment.
I don't know how many times I've seen enormous and elaborate processes that could so easily be replaced by a cron and simple shell script. Trouble is, you'd have to spend weeks in management meetings attempting to explain and justify it to people who have no hope of understanding why they should pay you for two hours to write the script.
It's not about the language man. It's about the thinking ;)
"The Tao gave birth to machine language. Machine language gave birth to the assembler.
The assembler gave birth to the compiler. Now there are ten thousand languages.
Each language has its purpose, however humble. Each language expresses the Yin and Yang of software. Each language has its place within the Tao.
But do not program in COBOL if you can avoid it."
I think that the logic is that a business professional will benefit more from what a specialized language like R can offer than from the general purpose stuff. The manager is not going to code a website or an accounting database (where the general purpose languages would be useful), however, they may need some sophisticated business analyses or reports that nobody else can do for them - and R is very good for that.
On the other hand, learning R without learning (and understanding) statistics is pretty much pointless and that is *much* harder task than learning the language. Lot of people buy SPSS (a tool similar to R, just with a nice UI) for a lot of money, then load random data and start pressing buttons following some sort of cookbook/cheatsheet. Random numbers come out and then they wonder why their "analysis" doesn't match the reality. Then they go and hire expensive business consultants - who do the same thing while spouting jargon, only charge for it a lot more.
R is a very powerful tool, but without a solid background in statistics and data analysis it is like giving a scalpel to hospital nurse and declaring her a brain surgeon ...
How about after teaching Algebra, but before heading off into Trig and Calculus spend a quarter or two on Discrete Math. Right there in one fell swoop is the foundation of all computer science in one fairly easy to grasp branch of mathematics. Tie that in with a bit of PASCAL or Python and there is your wade into programming without forcing students into a CIS track. For budding programmers, that class would tie their foundation together, and with others it just gives them some insight into how a computer or even just a calculator really works.
Orienting the study around languages only works with people who already have some idea of how to program.