21 ms·
The Most Popular Language for Machine Learning
- Palomides 10y agospoiler: "Python is still the leader, but C++ is now second, then Java, and C at fourth place. R is only at the fifth rank."
- throw20161123 10y agoI'm guessing Python for research and prototyping with C++ for production-izing and scaling.
- sndean 10y agoThat's the ranking when they queried for deep learning specifically. For machine learning it was: Python, Java, R, C++, C. I have to wonder if that difference in ordering is actually real.
- staticassertion 10y agoTensorFlow is written in C++ so I'd expect it to impact the deep learning result.
- vonnik 10y agoEvery serious lib was written in C/C++ under the hood long before TensorFlow came along.
- staticassertion 10y agoTrue, at least to some extent. But I think TensorFlow treated C++ as a first class citizen and not as a tool to improve performance. You wouldn't use sklearn as a C++ developer, for example. But you could totally use TensorFlow.
- vonnik 10y agoIt's important to distinguish between the API language and the core language used for large-scale computation. Every single deep learning library exhibits that division. The API language(s) indicate the communities the lib seeks to serve. The core languages are lower-level, faster, and help optimize on the hardware. The core languages are always C/C++/Cuda C. The API languages tend to be Python, Java, Scala, R. Conflating the API languages with the computing cores is comparing apples to oranges. http://imgur.com/a/Z6fGr http://imgur.com/a/Z6fGr
- Meditato 10y agoThe higher level languages are also used to munge the data into lib-readable format. Python and R's standard libs are especially good at putting out various tabular and database formats in preparation for ML input
- jfpuget 10y agoYou're absolutely right, and the data doesn't allow to split between api vs core implementation.
- chestervonwinch 10y agoC/C++ users: how do you use it for in ML applications? Exploratory analysis? Converting research to production code? Do you use existing libraries, or do application specifics (or other reasons) require that you write your own?
- jfpuget 10y agoSeveral prominent open sources are written primarily in C++. TensorFlow is a good example.
- jhartmann 10y agoI use a tiny bit of python, a little more LUA, and a TON of C++ in the machine learning work I do. Things like opencv, fbthrift, folly, boost, fblualib, and thpp make writing this sort of code in C++ very time efficient and if you know what you are doing it will end up performing much better than the alternatives. I only use python for some light scripting, data collating and reformatting type tasks, and LUA due to using Torch as my Neural network framework of choice.
- minimaxir 10y agoEverytime a "what's the best language for Machine Learning/Data Science?" thread pops up, it always devolves into a flame war between "real data analysts use R" and "Python has thousands more libraries!". (most recent example 16 days ago: https://news.ycombinator.com/item?id=13110230 https://news.ycombinator.com/item?id=13110230 ) My response is always use-the-most-appropriate-tool-for-the-job-dammit and don't pigeon-hole yourself into one language, since each language has their pros and cons. I am very tempted to write an HN autocomment bot at this point. (in Python instead of R, of course, since that's the most appropriate tool for this job)
- PierreRochard 10y agoThat's a trade-off. Is the cost of learning and context switching between languages/frameworks less than the benefit of using a tool that is X% more appropriate?
- deleted 10y ago[deleted]
- lacampbell 10y agoAre R and Python really your only choices? Basic competency in machine learning is on my todo list, and I don't relish the thought of using either language.
- VodkaHaze 10y agoJulia is another option. You can even call R and python code from a Julia REPL. You generally want an interactive language, though, because there is an iterative cycle in prototyping models.
- madenine 10y agoR and Python are not your only options. Check out the article for some other languages people are using. R and Python are probably the two with the most support/community materials around them - lots of tutorials, libraries, guides etc.
- sirwitti 10y agoThe positions of the graph legends are terrible - they overlap with parts of the most interesting data points. If the author or an editor of the article reads this: It would help a lot if you could move the graph legends to the left. Thanks!
- minimaxir 10y agoThe source charts are from an interactive explorer on Indeed and not staticly generated: https://www.indeed.com/jobtrends/q-Python-and-%22deep-learning%22-q-R-and-%22deep-learning%22-q-Java-and-%22deep-learning%22-q-Javascript-and-%22deep-learning%22-q-C-and-%22deep-learning%22-q-C++-and-%22deep-learning%22-q-Julia-and-%22deep-learning%22-q-Scala-and-%22deep-learning%22-q-Lua-and-%22deep-learning%22.html https://www.indeed.com/jobtrends/q-Python-and-%22deep-learni...
- deepnotderp 10y agoGuys for deep learning we all know it's cuda under the hood.
- minimaxir 10y agoYou still need a programming language to interface with CUDA for deep learning.
- frozenport 10y agoThe article confuses users with developers.
- jfpuget 10y agoAgreed. I welcome suggestions on how to distinguish both using keywords in job offers.
- frozenport 10y agoCarefully? Possibly in some non-automatic fashion?
- jfpuget 10y agoI don't have the data. I use indeed.com trend queries. All we can do is to select which keywords to use.
- frozenport 10y agoThat sounds like your problem and not mine. Right now the article reads like "who is your ISP" and 30% of people responded "Netgear".
- jfpuget 10y agoIf you think job offers are written in such a dumb way that netgear could be regarded as an ISP then I would agree with you. What evidence do you have of this?
- Dowwie 10y agoIf Rust is a replacement for C/C++, why isn't it being adopted for machine learning?
- akiselev 10y agoIt looks like most of the frameworks for ML started before Rust's 1.0 stable so it's no surprise we're not seeing it in those arenas. Since GPUs and CUDA in particular play such a heavy role in ML I also wouldn't be surprised if some projects chose C/C++ to avoid maintaining multiple languages (CUDA uses C kernels compiled by a proprietary compiler). From my understanding, most ML work isn't really done at the algorithm level but at the data level, as in manipulating data and experimenting with a variety of existing implementations. Since we have so much experience already available in optimizing C and there's not that much actual low level code to write, it makes sense to stick to C.
- eva1984 10y agoNobody uses it, period. IMHO, ML people are pretty pragmatic, possible due to the fact ML itself a mixed paradigm with people from different background, so they don't hold religious belief towards programming languages comparing to some pure CS background folks.
- staticassertion 10y agoFor the record, I've used rust for machine learning, and it was great. It isn't for "religious beliefs" - both myself, an engineer, and a data scientist on my team, had great results using rust. Rust is entirely practical and well suited for the task. And yes, people use rust.
- eva1984 10y agoThat sounds great. What I am objecting here, are those annoying cool kids try to sell their flashy green solutions, like 'A new machine learning library written in Rust' to other people, because 'yeah, Rust is better programming language than C++'. That is what I called 'religion belief', for those people who don't really care what problems they solved, they just naively assume they are better because of the language they are using is different.
- blazespin 10y agoI think it would have been more interesting to constrain the query to must have PHD. There's probably a lot of grunt work that needs to be done in other languages that aren't really specific to machine learning. Eg, python is fantastic for data wrangling, but PHDs with R probably earn 2x what masters/bsc data wranglers do. But you probably need like 4x of the latter in terms of staff. For the person who downvoted me, I wasn't saying R is better than Python. I was just saying that if you have just R, you're probably not doing data wrangling.. What this post is completely failing to capture is the exceedingly high value work in machine learning versus the typical work any skilled undergrad can do.
- aub3bhat 10y agoHaving spent last 4 months interviewing at several companies for ML roles, I can assure you that no one doing PhD in Computer Science (Machine Learning, Vision, Data Mining) uses R. I also dont understand what you mean by "exceedingly high value work". For both production as well as research (ICML/NIPS/CVPR) the languages used are in most cases Python/C++/Lua. Also Stats PhD (who I believe are the sole users of R) aren't typically hired into Machine Learning roles. R is okay for wrangling tabular data, applying statical model for hypothesis testing and generating pretty charts for papers. But not suitable for state of art Audio, NLP, Vision or Reinforcement Learning.
- minimaxir 10y ago> Also Stats PhD (who I believe are the sole users of R) aren't typically hired into Machine Learning roles. FWIW, I used R for my undergrad, and still use R for personal projects afterwards. (with modern R, dplyr/ggplot2 are an order of magnitude easier to use, in my opinion, than the Python equivalents)
- jfpuget 10y agoLua isn't missed, read the article again. it is just that it just that Lua appears in exactly 0% of the job offers on indeed.com.
- frozenport 10y ago
- matheweis 10y agopython is that nice mix between scripting and programming, as well as having all sorts of ugly hackish modules that make it easy to do otherwise complex tasks with all sorts of data. Since the hard part about ML is more about manipulating the data into something manageable, this makes python well suited for the task. If Tensorflow for .NET had come out sooner, I might have jumped on that as C# is a nice balance of performance vs ease of manipulating data, but now all my code snippets are python so I'd need a large probject before the benefits of changing over push me that way...
- madenine 10y agoUgh, indeed.com data. Was not a great place to find data science jobs during my last job hunt, but that might just be personal experience. Beyond that, wouldn't there be some bias - in that the jobs that don't get good candidates are going to have to be re-posted more often to maintain their visibility, leading to an over representation of undesirable roles in the data?
- WhitneyLand 10y agoWhat did you find to be better than indeed? I would have thought it a safe bet since it aggregates from many sources.
- ibiza 10y agoI would like to see how Octave or Matlab would do in these results. Before clicking on the link, I thought it would be Python, R, or Octave.
- jfpuget 10y agoYou can add them to the queries I used to see the results. Look for pointer in the article. Reason I didn't include matlab was that I didn't include any commercial product. To your point I could have included Octave still. I just did it, and Octave is at 0%: https://www.indeed.com/jobtrends/q-python-and-%28%22machine-learning%22-or-%22data-science%22%29-q-R-and-%28%22machine-learning%22-or-%22data-science%22%29-q-Java-and-%28%22machine-learning%22-or-%22data-science%22%29-q-Javascript-and-%28%22machine-learning%22-or-%22data-science%22%29-q-C-and-%28%22machine-learning%22-or-%22data-science%22%29-q-C++-and-%28%22machine-learning%22-or-%22data-science%22%29-q-Julia-and-%28%22machine-learning%22-or-%22data-science%22%29-q-scala-and-%28%22machine-learning%22-or-%22data-science%22%29-q-Octave-and-%28%22machine-learning%22-or-%22data-science%22%29.html https://www.indeed.com/jobtrends/q-python-and-%28%22machine-...
- c3534l 10y agoYou seem to get significantly different results when you ask people directly what they're using: http://www.kdnuggets.com/2016/06/r-python-top-analytics-data-mining-data-science-software.html http://www.kdnuggets.com/2016/06/r-python-top-analytics-data... I don't really like the idea of looking at search correlations to infer popularity in a given field. People who use R might have a higher level of education, resulting in search results that are are narrower and more focused than Python users, or simply be more likely to call it "AI" or "statistical learning" or something of that nature. Or it may be that people learn a language or tool because it is useful in a field, whereas people who use a more popular tool might tangentially search for a given combination, even though they're not really in that field or doing any real kind of ML work. Although KDNuggets survey is self-selected, which is inherently an unsound method, but it's not like the google search results are really a random sample, either.
- jfpuget 10y agoI fully agree on using search correlations. Fortunately, this is not the case here. This is not about any search. This is about actual keywords occurring in actual job offers. I thought I explained it clearly, sorry if you missed it.
- c3534l 10y agoOh, damn. I wish hacker news let you delete comments.
- grzm 10y agoIf the comment is still within the time it can be edited, you can, unless it has a response. In that case, if you want the comment effectively gone, you can edit the comment to remove the content. As a courtesy to the reader, you can leave a "[self-deleted]" or some such to indicate what happened.
- alephnil 10y agoWhat is described in job announcements and what the job actually consists of can often be quite different though. Job announcements are a combination of what the management think or wish will be needed in the future and what they think will attract applicants. This means that technologies that are perceived as trendy will appear more often than those actually used, especially if the latter is perceived as legacy tech. The result is that job announcements may not be such a good indicator of what actually is used out there. There is also a tendency that jobs that require deep understanding of some area (say video encoding, cryptography, statistics) not are announced, but instead the programming languages and the frameworks used in the surrounding system is announced as essential for the job. This means that if your core competency is in such areas, it can be hard to find the employers that need such skills, even if the skill is in demand.
- eva1984 10y agoTL:DR, it is Python. And everyone already knows it.
- daveguy 10y agoAnd Python 2.7 to be specific. All the big framework releases are still 2.7 first. You have to wait for ML researchers to be bothered with 3.x.
- jfpuget 10y agoNot sure where you get this from. The most popular machine learning framework, scikit-learn, runs fine in 3.5. I am also using xgboost with Python 3.5 (yes, xgboost is a major open source for machine learning, just look at what framework is used by most Kaggle competition winners). TensorFlow, mxnet also support 3.5. I would have agreed with you a year ago, but there has been a major shift in use from 2.7 to 3.5 in 2016. edited for typo.
- eva1984 10y agoNot really...I actually find some Python 3.x only project recently, like this one: https://github.com/openai/pixel-cnn https://github.com/openai/pixel-cnn
- stevehiehn 10y agoAfter a year of experiments i realized that machine learning and big data pipelines are inseparable. So at first i was thinking R/Python is the greatest. And it might be until you need to do more that a few isolated models. At that point i reverted to building the pipeline parts with Spring Java + InMemory DataGrids because there is so many options.
- hcarvalhoalves 10y agoThere's certainly a tension between quickly prototyping something in R/Python w/ limited data vs. making a ML system that scales once proven useful. I believe the majority of data science jobs today are involved on doing only the first (to gather pontual insights) and dropping the ball on the second since it involves a lot more software engineering, and those jobs are currently being fulfilled by those without this skill. I foresee this being a source of frustration in the next years for companies that fell for the data science hype, once they figure out it takes significant investment and commitment to build intelligence into their systems, or even curate high-quality data to do it right in the first place.
- vonnik 10y agoThat's why we built deeplearning4j and datavec, fwiw. https://github.com/deeplearning4j https://github.com/deeplearning4j
- smaili 10y agoFor those who use R, how hard is it to search for material on the web? I imagine in some cases the search engine may treat the R as a typo?
- minimaxir 10y agoZero issue whatsoever.
- pjmorris 10y agoI've had less and less trouble over the last couple of years. If I'm worried, I'll add 'cran' into the search string.
- stewbrew 10y agoIt can be a nuisance. Searching eg for R go interoperability yields interesting results. Adding "statistics" usually gives reasonable results. But there is also rseek.org
- thom 10y agoThat isn't an issue, Google's pretty smart. The actual documentation is terrible though, and you do not have the depth of StackOverflow posts to make up for R's inscrutable and sometimes non-existent errors.
- lowglow 10y agoWe use python for all of our local and back-end ML processing pipeline. It's actually the reason our OS/Architecture intermediary was written in Python as well.
- epynonymous 10y agowonder why there's no mention of golang... perhaps the libraries are not good enough? golang is great for distributed systems.
- chewxy 10y agoWell, we're getting there. If you're interested in ML with Go, there is Gorgonia: https://github.com/chewxy/gorgonia https://github.com/chewxy/gorgonia I've been using it for several years to build pipelines
- jfpuget 10y agoI didn't include it indeed, but you can try yourself. Just modify the query of my article (look for pointers).
- aabajian 10y agoHalf of machine learning is data wrangling. Python is so easy to use and elegant, that it feels good when you're using it. When was the last time you enjoyed data manipulation in R/Java/C/etc?
- dangmurderparty 10y agoScala gives me that warm fuzzy feeling a lot. ObjFunctional feels so natural to me
- frugalmail 10y agoAnything for PRODUCTION data processing that doesn't have strong/static typing is a crappy experience. That being said, for adhoc work, with Scala you get the best of both worlds. Python is certainly approachable from early programmers, and R from mathemticians/business folks. Sadly there are more early access libs here, but all the popular stuff is aviailable in the languages above. C++ is really efficient, but it's a bit unforgiving.
- GFK_of_xmaspast 10y agoWhy are you doing data wrangling in production?
- rubyfan 10y agoI wonder how much of the job details are actual vs. aspirational. For example, in many of our R&D job listings we list Python and Hadoop as desired skills, when in reality those are emerging needs rather than the day to day work which is mostly SAS.
- sprobertson 10y agoLua is ranked surprisingly low, when I was getting started it seemed easiest to find good code examples in Torch (e.g. neuralstyle, char-rnn).
- vonnik 10y agoTorch is a great library, and Lua a fine language, but they are competing against ecosystems built on the world's largest languages.
- ralphc 10y agoJavascript is mentioned in the charts but as of this writing has no hits on the discussion. Is anyone using Javascript or Node for ML?
- sprobertson 10y agoAs far as I can tell there are no great options with all the necessary features - extensible API and GPU support especially. My team is Node based but went with Lua for the ML parts because of this.
- markovbling 10y agoSuper easy to call R scripts from python - can use rpy2 to send dataframes from R to pandas or can just run an R script that outputs a csv to a folder and then read that in python... Legit 3 lines import rpy2.robjects as robjects # r_source = robjects.r['source'] r_source(‘myscript.R’) # print ‘r script finished running’
- pilooch 10y agoIn reality, most production code is C++ for machine learning backends.