7 ms·
I dislike R. As in, design and performance wise. But an alternative often doesn't exist. So i am kind of saddened to see it so "liked". You can best be sure
by ACow_Adonis 9y ago
I dislike R. As in, design and performance wise. But an alternative often doesn't exist. So i am kind of saddened to see it so "liked".
You can best be sure as hell I wouldn't be listing it as something I hate on any of my applications/resume though :P Try getting away from it in my field. Not least because of the err...positive over-zealousness...of the R community. I used to joke that the main difference between R/Hadley (no offense Hadley) and Jesus was that some of Jesus' followers admit he might have made some mistakes.
Also git. Look, i like it. I use it almost every day, but I'll be damned if i trust anything that says its universally loved/not loathed.
I feel there's another dimension to this data not being captured/expressed, but I'm genuinely struggling to verbalise what it would be...
- Joeri 9y agoGit is probably a technology people don’t feel comfortable criticizing because they think whatever problems they have with it are due to them not properly understanding it. I suspect that they feel like disliking it is akin to admitting ignorance. I have this intuitive feeling that git’s design suffers from unnecessary complexity. At some point someone will come along and make an easier to use dvcs, and git will fall out of popularity like cvs did when subversion showed up.
- joshuamorton 9y agoHaving now used a number of other VCS tools (Perforce/Piper and Mercurial), I still think git intuitively gets the "model" right, better than the others, but goodness the API naming makes almost no sense.
- InclinedPlane 9y agoGit is a very sophisticated and substantially well built tool, with several key weaknesses that border on fatal flaws. Unfortunately, too many of the people in control of git's fundamentals and ux don't recognize those flaws as such and refuse to fix them. This has a bizarre consequence of causing many who also see git as one of the best VCSes out there to fail to see those flaws clearly as well due to groupthink. Unfortunately it will likely be years and years before they're seriously addressed.
- CogitoCogito 9y ago> with several key weaknesses that border on fatal flaws What are you referring to?
- erezsh 9y agoI imagine the terrible command-line interface is one.
- Ericson2314 9y agoBesides the infamous CLI 1. Terrible command line interface 2. Submodules and worktrees being bolt-ons 3. Simplisitic branch namespace forcing repos to be used as semantic concept 4. Lack of O(1) incremenental checkouts. The good news is a reimplentation could solve all of these but the namespace probablem, which in turn could probably be a very lightweight protocol extension.
- InclinedPlane 9y agoThe UX in general is a mess. There are odd inconsistencies between how things are named, how parameters are used and what they're called throughout the CLI. For example, sometimes you use remote/branch sometimes you use remote<space>branch to reference a branch in a remote. It's a little thing, but it adds up along with everything else and is effectively a tax that uses up mental capacity that could have been better spent elsewhere. Additionally, the whole workflow around branching and rebasing is pretty terrible. Almost every demo I've seen of how cool and useful rebasing is inevitably runs into some huge fuckup that has to be backed out of carefully. It shouldn't be that hard, even in complicated situations that happen less often but are still common enough to happen routinely. In a similar vein, the tooling that git (and github) provide for merging and merge resolution are terrible. They work only in the simplest cases, and for anything beyond that they just start to fall over. Almost every developer who has used git has ended up in a situation where git fucked up dealing with a merge conflict so bad that they had to just do the work manually by opening up some "base version" of a file then meticulously applying diffs by hand coding and then figuring out what the final file should look like starting from there. I've used a lot of different VCSes over the years and git is surprisingly one of the worst at this workflow. It relies far too heavily on commit history to figure out the right thing to do and it doesn't even leverage that as well as it could. VCS tooling should help the user, not shove them into the middle of a bunch of machinery and then force them to do all the heavy lifting to make things right. Code reviews and branch management are also very weak in git/github, for no good reason. Again I've used a ton of different alternatives, some of which were just internal tools built by random folks in the company, and almost all of them were superior to the experience with git. Given that merging and code reviews should be where git/github shine, this failure makes zero sense to me. Good tools do the monotonous grunt work heavy lifting for you, they make easy stuff trivial, hard stuff easier, and they help you manage the complexity of the really difficult stuff. Git does a good job of this sometimes but when it fails it fails hard. Git is like a multi-million dollar yacht that has some components held together by gum and bailing wire. And when you run into those parts you look around with an expression on your face of "can you believe this shit?" and yet only a tiny fraction of the people around seem to see what you see, all the rest seem content to just ignore it, imagining that that's just the way that all super yachts are built, or something. There are so many ways that it's easy to just be doing normal day to day stuff in git and end up in a bizarre state that causes your productivity to come to a halt while you figure out how to fix it. Detached head? Uh, how did you get here, what does it mean, how do you get out of it, how do you ensure you aren't accidentally destroying work? Failed rebase? Poorly handled merge conflict? Even simple stuff like reverting local files or rolling back commits is harder than it should be. And the fact that "git push --force" is ever, ever, ever seriously recommended, ever. All of these things could be vastly improved by taking the time to do some quality of life improvements, but the git maintainers think that there's nothing wrong with operating a tool that is half luxury level fit and finish and half exposed razor sharp gears and live uninsulated wiring.
- PeterisP 9y agoGit is a technology people don't feel comfortable publicly disliking because the obvious alternatives tend to be even worse. You don't put things on your "won't use" list because they have design problems, you put them there because you want to use something else that you like better; so decent things get disliked because you simply prefer a different style but horrible things get accepted if there's no better choice.
- whazor 9y agoIn the same spirit I have a hate for LaTeX. The dazzling errors together with the unclear syntax makes the language very annoying to work with.
- ezequiel-garzon 9y agoI get the dazzling errors, but what unclear syntax are you referring to? And how would you make it more clear?
- goatlover 9y ago> But an alternative often doesn't exist. Python, Julia, Matlab, Java, Scala don't exist for doing what? Are there specific R libraries and functions that aren't reproduced in other languages?
- singingfish 9y agoYes, R is for statistical analysis. It's absolutely great for that (similar in other languages will take 10-100x more LoC with all the possibilities for bugs it implies). On the other hand it's an absolutely awful general purpose language.
- goatlover 9y agoI know R is great for that, but are Python stats libraries lacking to the point of needing 10-100x more code? My understanding is that Python has caught up with R in the data science field in terms of popularity and usage. You can also use R inside Python using the rpy2 library. And Julia embeds R with the RCall package.
- disgruntledphd2 9y agoIt really hasn't. Python has pretty good support for machine learning on data with no missing values. It doesn't really support things like survival analysis, complicated time series models or (the most important) missing data. Also, R's formula interface for models is a thing of beauty, while Python has nothing similar. So, if you have data with no missings and are only interested in a small subset of statistics (that used by computer scientists), then Python can definitely suffice. If you are in almost any other discipline, you're going to be using R. Don't get me wrong, Python is a wonderful language, but R is so well adapted to analysis that it will be a very long time before it gets replaced (Julia looks really promising, but its not at 1.0 yet, and hence hasn't seen the broad scale adoption it would need).
- wrinkl3 9y agoSo why has nobody tried to implement something similar for Python? Is there some fundamental limitation of the language at play?
- bjourne 9y ago> Also git. Look, i like it. I use it almost every day, but I'll be damned if i trust anything that says its universally loved/not loathed. git is damn annoying! Been using it on an almost daily basis for over five years but its error messages and other idiosyncrasies still makes me feel like a total newbie.
- roenxi 9y agoIn fairness to Hadley, his tidyverse reshapes the R language from a horrible artifact of the 80s into a useable semi-modern environment. I don't think there are that many statisticians who were up to the challenge. My experience integrating his work was feeling 30 odd years of programming improvements hitting my workflow. He deserves great praise for that service.
- ACow_Adonis 9y agoUnderstand, i think his work is both impressive and admirable. But significant parts of his (and other's work) is best specifically where it makes things more "non-R" like. Its a section of R users i think have a mildly disturbing religious-esque zeal. To be fair, I even understand some of it. You put up a bad thing in SAS or SPSS, and then do it in R in one or two lines, and suddenly "everything looks awesome".
- hadley 9y agoI'd love to know what in particular you think is particularly "non-R" like.
- ACow_Adonis 9y agoAs the above poster mentions (and I'm guessing since he mentions it, I'm not the only one holding onto this opinion), what you've done is effectively shape a horrible old warty language into something practical and usable. The two examples I would use are the explicit operations and the pipe operator in dplyr, and the replacement of base R graphics with ggplot. Now, in a language like R, where you can (awkwardly) play with the syntax and evaluation and introduce things like the pipe operator, it's very easy to argue that nothing is making things "less like R", since it's all enabled by the language. But I think this is a bit bad faith. Take common lisp and the loop macro. It's implemented in common lisp, but I understand very well what people mean when they complain it isn't very lispy. Dplyr takes the data frame, and let's you interact with it in a much more explicit and imperative way than base R operations on the data frame. Is this a good thing? Sure! But one of the reasons for its success is that it explicitly moves away from the style of the base R/S language.
- lucozade 9y agoAs a complete guess, I think a clue to what might be missing is in the like/dislike pairings analysis at the end of the article. It wouldn’t surprise me if a lot of the (dis)likes are relative to something else. So, for example, the view on git is relative to svn or cvs. If that is the case then a generally positive outlook (outside certain niches) is less surprising.
- iaml 9y agoI use git explicitly via GUI client and have no problems whatsoever. Am I the only one?
- Santosh83 9y agoWhich client if I may ask? GitHub Desktop?
- iaml 9y agoI use gitkraken and there are some annoying things in it, like awkward amend UX or inconsistent branch visualisation, but it's the only one of many I tried that I really liked.
- dep_b 9y agoI mastered the Golden Path that works 99,9% of the time together with some starred threads on Stack Overflow. But one of the devs wanted to switch to a rebase based flow and I found myself again needing to learn something overly complicated and fragile and the attempt to change to rebase kind of died because of that.
- iaml 9y agoIn my (very limited) experience rebase flow causes way fewer conflicts if used correctly. YMMV though.
- snackematician 9y agoHey now, Hadley does really great work, IMO he's the main reason R is still worth using. I started using R about 10 years ago, but after learning Python I came to really dislike R for how ugly it is. But I still kept using it for plotting because ggplot is so damn good. In the past year I've started to use R more again and have started to kinda like it. It's still unpleasant for general purpose programming, but for manipulating and plotting dataframes, dplyr/tidyr/ggplot is very clean and way nicer than pandas/matplotlib. So yeah, I think R has improved a lot since I first learned it, mainly due to Hadley, and is actually a pretty good language within its particular domain. But if I had to use it for general-purpose stuff I'd probably come to hate it again.
- crispyambulance 9y agoYeah, I've been using R for about 7 years now. I find it frequently unpleasant and the documentation often makes me want to stomp on puppies, but in the end, it NEVER let me down. Hadley's Tidyverse (and RStudio) has breathed new life into R, but I wish that stuff was available in other languages. NOTHING comes close to ggplot, for example, for composing sophisticated plots with compact but expressive code. dplyr for data wrangling fits like a glove. After you've wrestled your data to submission, you then have a vast amount statistical analysis you can do out of the box using R libraries and little effort. I don't want to like R, but I can't avoid it.
- hadley 9y agoYou should also check out http://purrr.tidyverse.org http://purrr.tidyverse.org and http://github.com/r-lib http://github.com/r-lib - we're working towards providing tools that make general purpose programming more pleasant. (Not because R should ever be your primary general purpose language, but many data analyses often involve some general purpose components)
- jsemrau 9y agoYes, thank you for saying it. R is so damn inconsistent and ugly it's unbelievable. It pains me that it comes now with Microsoft SQL Server 2016 and not Python which would be much more beautiful choice.
- deleted 9y ago[deleted]
- jtraffic 9y agoI think R is in the early days of its demand lifecycle. Wait a decade or two (maybe less) and R will get more hate. I'm surprised how fast Julia has advanced toward being a suitable replacement for R. It's just a matter of time. Then Julia will be most hated when Language X comes to replace it.
- hadley 9y agoI hugely dislike being compared to any religious figure. I don't have "followers", and the vast majority of people who use my work understand that it's just one way to do things. The tidyverse is far from perfect, and I hope it obvious that I acknowledge my mistakes, particularly through evolving APIs (e.g. reshape -> reshape2 -> tidyr + dplyr).
- ACow_Adonis 9y agoSorry Hadley. I genuinely admire the work you've done. My analogy is not intended to comment on you, or the tidy- verse (indeed, I think it's fantastic that you're one of the first people to even start talking seriously about what tidy data is), just like my comparison to Jesus isn't meant to actually comment on his life. I'm commenting on the community that follows. And there it's basic "life of Brian". You don't want followers. Doesn't mean you haven't got them. And it doesn't mean many of them aren't ignorant of anything outside of R/stats...