The Incredible Growth of Python
stackoverflow.blog
stackoverflow.blog
This post is suggesting the opposite, that Python is more healthy than ever and growing incredibly fast.
We like it, but we are constantly screaming and bitching about the complications of 2<->3 ("Ahhh X and Y module only works on py2!", "Ahhh device developer only provides example code for Labview and Matlab!", "Ahhh python isn't even supported for this device/application!").
Package management ("Do I use conda? pip? easy_install? compile?") is annoying, I hope that something like hatch (https://github.com/ofek/hatch) maybe takes over everything -- because I think the mess that is package management is THE biggest deterrent for newcomers.
I think the one thing we are all learning from this experience is: JUST USE UBUNTU, doing python with Windows is a headache.
All of that said -- python is nice, it's amazing, it's the newer, funner Java. It is incredibly approachable, it can do pretty much EVERYTHING because of the expansive availability of libraries, it's finally a programming language that is great to get my 7 year old niece started on.
And if your editor has a "Run script" function, it also needs to deal with "Activate the correct environment" for whichever flavor of virtual environment you've used.
Any what beginner would be confused by tutorials using all sorts of different setups (virtualenv, venv, pyenv, pipenv, virtualenvwrapper, pyenv-virtualenvwrapper)? Most of them, I think.
"venv" is the newest one - shipped in the python3 package except when it's not (Ubuntu, maybe others) and doesn't make copies of the python binaries for each environment. That always seemed wasteful to me, but I suppose it was the easy way around path problems with the ecosystem not having a solution built in.
I love python when I'm only using the standard libraries, but if I have dependencies it's messier to set up than I want it to be.
Of course each project needs it's own virtualenv. In fact, each project should have it's own docker image. Why install an application library to the entire system? That is not a good idea in ANY language.
And of course scripts need to use the right virtualenv. Or better yet - why not put each app in it's own docker? That bundles up everything into a single "file" you can run on command.
All of these things you are listing as downsides seem like things that one normally moves away from, when they put a codebase in git and stop deploying to prod by copying a few files to a shared network drive and restarting the server?????
Those are all bleeding edge developer best practices that didn't exist five years ago. Folks coming from matlab (an example I read above,) probably aren't in the industry and many likely don't even know docker exists OR why they would want to use it.
And the GP was saying that the ruby package manager is more magical then the python package manager... when pip solved all of the complaints mentioned.
Odd.
I'll stop using virutalenv when it actually becomes a hindrance. I know venv exists, but I have precisely zero incentive to use it when virtualenv works and allows me to get on with what I actually want to do.
This is kinda discouraging :)
The current standard way to do this is with a virtualenv and a requirements.txt file in which you specify the version of your dependencies, which you can then install with pip install -r requirements.txt.
Format is "packagename==0.1.0" (>=, < etc work too). VCS urls work too btw, e.g. "git+protocol://site/repo@tag_or_commit"
To get something similar (but inferior) to lockfiles you can use "pip freeze > filename"
Packaging/distribution is certainly a mess.
Pretty simple, no? Most any python project I have seen in the last 5-6 years uses it.
We are using `pip-tools` to manage that: https://github.com/jazzband/pip-tools
If you have multiple sets of requirements (for dev vs testing vs production, eg), this becomes impractical real quick. You'll essentially have to tear down and rebuild your dependencies multiple times to update your reqs.
Zope and plone, the project(s) that came up with python eggs, used to have the concept of "known good sets"[1], which were massaged and used with zc.buildout :
http://www.buildout.org/en/latest/
I'm not sure I'd recommend it for greenfield projects - splitting things up in sane-sized chunks, and using the now in-standard-lib vevn (python3 -m venv) is probably a better idea.
But just for the record, there exists a canonical(ish) solution to some of these issues in python-land.
[1] http://grok.zope.org/doc/community/life_cycle/known_good_set...
The design was done by Phillip Eby, with funding from OSAF for the development of Chandler, not Zope.
Much shade has been thrown at eggs over the years, and people bemoan the warts, but eggs and setuptools were better than what we had at the time in Python.
if you are using windows, using python without this website is nearly impossible: http://www.lfd.uci.edu/~gohlke/pythonlibs/
"pip install numpy" will actually work, among other things. But even for packages that don't have binary wheels and have to compile things, it's much easier now to install a compiler toolchain (it's actually a single download!), and have your Python installation just pick it up automatically.
For one of my main applications py3 proved to be too slow. For my application I use: numpy, pil, tkinter, and subprocess (and process/produce/draw on screen images (at a rate of 120/sec)). I don't know WHY but with python2 it runs acceptably fast, on python3 it's 20% slower. This has been something common for me actually.
I do tend to use py3 when doing any kind of data science though.
That said, I have been doing ruby since before Bundler, and I really have to take my hat off to what Yehuda and company accomplished with Bundler. It was both a technical and open source community triumph to get Bundler done, stable and covering the breadth of use cases it applies to.
Ideally, packages would have just one set of dependencies and the packages would be version locked, but that's just not the case in the Python community.
Why would you sort 2.6 in 2017?
Supporting 2.7 these days in a new package is already a bit of a wtf - Django for example drops support for it next year.
We're still maintaining stacks on py 2.6 which predate the reference platform specs
At least you're not trying to write Fortran compatible with the 77 and 90 specs....
Most scientific stuff I've done works in python3. In fact, its now possible to run a tensorflow/opencv/scipy environment entirely from pip in a virtualenv, though it won't be the fastest. which is amazing. Doing that kind of thing in any other language would require docker.
In general, if you're sticking to python3, the answer will always be "use pip", everything should work with pip, and everything should install as a binary without needing to build source.
Edit:
There's exactly one context where I use python2, and its for a robotics project where some transitive dependencies are python2 only.
Python (1991) is older than Java (1995).
"we were able to hook Java runtime onto the free, open source Netscape browser. And it was a collision of two things that accelerated and launched each other together. It was fascinatingly lucky timing for both companies."
While it may have taken time to mature at that time it was an "overnight success".
Sun was considering dropping it and considered it an expense before that.
What kind of devices or libraries do you use from LabVIEW but there isn't Python support or examples?
If its an NI product, some are starting to get Python support
DAQmx https://github.com/ni/nidaqmx-python/blob/master/nidaqmx_exa...
XNET https://github.com/ni/nixnet-python/blob/master/nixnet_examp...
DMM https://github.com/ni/nimi-python/blob/master/src/nidmm/exam...
FPGA Interface https://nifpga-python.readthedocs.io/en/latest/examples/basi...
EDIT: All with Python3 support.
PI instruments: https://www.physikinstrumente.com/en/products/linear-stages-... Matlab, Labview, etc. yes. No python
Thorlabs equipment: https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=81... Same story, no python.
In fact, it's always a _SURPRISE_ when I see Python being supported. I would say after having gone through about a hundred major lab devices, less than 2% I found to be supporting Python.
Importantly, example code should be made available (as it generally is for matlab, and labview) because creating things from scratch in a move-fast environment is a little too much.
Meh. I use python on Windows all the time - it's not a problem. Mostly pip just works.
Of course, I have over a decade of experience with Python - albeit only the last few years in Windows.
chris gohlke's website was a real lifesaver back then, although now pip seems much better. nowadays it can be a bit difficult replicating environments across different machines especially since conda is moving rapidly from python ver to ver while some obscure packages i rely on are still stuck on 3.4 or earlier... or if c++ 10.0 or 9.0 or 14.0 is not set up correctly. then it becomes an issue of crossing fingers and hoping "python setup.py install" doesn't fail.
It's easier for me to install the Python libraries I need in Windows than to install them on Linux where I don't have root privileges.
Of course in scientific Py you need compiled C attachments, which makes it more complex. But in normal Py usage you only need pip. Easy Install is only needed when you don't have pip installed. Pip is a drop in replacement with additional features.
And at least from what I heard for everything with C compiled stuff inside ("binary packages") you use conda.
So not that hard actually.
Just had such a situation yesterday at work. A guy from QA (not a dev) needs to setup an environment to install our tool for testing. He doesn't know python, so explaining to him what a virtualenv is would take way too much time. He probably also doesn't know how to use the OS's package manager to install pip. So, what to do? Give him the oneliner "$ sudo easy_install whatever". It works, he doesn't need to understand it, and actual system maintenance doesn't matter because it's just a VM that gets deleted after he's done anyways.
Without a package manager it is only a two-step process. 1) download get-pip.py from the source 2) run it with sudo
It is the easiest way to use python3 because even fedora (one of the more bleeding edge) likely won't finish migrating 2 to 3 in current year.
Why do you not like venv? What could be done better?
pip install --user pkgname
Does that not work for you?As a Python dev, I (and all the other Python devs I know) were just waiting for (and helping) libraries to start working with 3 before we can switch over. These days, all my new projects are in 3, 2 is pretty much for legacy code only.
</snark, mostly>
Python seems to have overcome that (keyword: seems), thanks to a strong offering in data science, but 2->3 is still a headache. I never really used Python for application development, but rather for utility/scripts and I am still on 2, because I don't need more.
2 is available out of the box on all OSes and at work we also use 2 for building tools.
I have the feeling that Python is still losing people to Golang due to its weak performance and Golang's reputation in that area.
So instead of being arrogant about 2->3, I'd say Python devs should be thankful to data science for saving their butts. :)
Any source (other than Rob Pike) ?
The SO post is not the study we need, because it uses a proxy variable (SO tags).
They fucked up. That Python is resilient enough to absorb such a blow and that no other language is a viable alternative for that particular niche is what saved the day.
And even now there is still plenty to improve on, fortunately Anaconda at least makes package management more sane.
I haven't used python for a while though. Maybe they found a solution to the python 2/3 problem already.
A simple application structure with loose enough rules and a strong standard library is what I would like. Flask can be too little, Django can be too big.
and the Lightweight Django book: http://shop.oreilly.com/product/0636920032502.do
The point, I guess, is that Python isn't really optimal at anything but is very good at a lot of things.
Realistically, there are enough software fields that Python just isn't applicable for this to be taken with a pinch of salt. However, as a language, it does have quite a large sweet spot: easy to pick up, expressive, integrates well with low level languages for heavy lifting and almost perl quantities of libraries.
IMO its popularity is justified although I'm not a fan myself.
Most AI frameworks support Python out of the box, including TensorFlow, PyTorch, Theano, and CAFFE/CAFFE2, which together currently have the most developer mindshare. Every single TensorFlow, Pytorch, Theano, and CAFFE/CAFFE2 tutorial or example is written in Python.
With very few exceptions (e.g., the occasional Lua code coming out of Yann Le Cun's group at FB), new AI papers come with code written in Python.
If you want to see Python's utter dominance in this field, just search for "deep learning" or "neural net" on github.
It's also because no one can work out how to use matplotlib properly, so you need to look at about 1000 StackOverflow questions per line of code.
and back in 2010 or so, python's numerical optimization libraries left a lot to be desired, and totally hopeless compared to matlab. (edit, i don't remember it being nearly as good as octave, which wasn't particularly good either back then).
Devops stuff is also a great one to pair with Python.
Reason I'm predicting this: I've kept an eye on Python+Flask /Django jobs for over a year now, and while I see "Python" show up more frequently now, "Flask" and "Django" are still about as frequent as they were in the past.
Looking forward to the "why" post. Glad that they mentioned that they'll be publishing that soon.
(Which leaves me kinda sad, because I like Julia more - I'm sure it will keep growing though)
Apart from that, if one is just getting started out in data science and has never really handled a programming language before, Julia is very nice really. And their documentation is pretty damn awesome. And once you get past the performance recommendations I think it gets pretty fast (?). I'm out of my depth beyond a certain point since I've only ever experimented with it.
R's data frame concept was fantastic for those transitioning from 'spreadsheet' analysis but with Pandas, Python has improved and enhanced this concept even further.
This is just one example but I think it is this versatility that makes it more attractive than R or Julia.
I'm sure this will change if it hasn't already, especially with the better parallelization that Julia is capable of.
I actually keep a jupyter qtconsole open to use them for ad-hoc data visualization. Pandas replaced excel for me a while ago and I cringe every time I need to abandon seaborn for a Tableau workbook these days.
GUI Visualization tools like Tableau or PowerBI seem to error towards presentation, while the defaults for seaborn help discover and visualize data while still producing results good enough to make C*O's happy.
I think the "why" is because, for many users:
* they want a small and easy, dynamically-typed, garbage-collected language with few surprises (see `import this`). Perl misses out here.
* they want something built with C so there's easy access to native libraries. Languages on general-purpose VMs miss out here.
* I don't think they want something that transpiles/compiles down to some other lower-level language (which I suspect leads to difficult debugging). Maybe Nim misses out here.
* they're comfortable with imperative-style programming. Maybe lisps and Haskell miss out here.
* Python is fast enough for most things where C-speed isn't needed. Very-high-level languages chasing dreams of high performance mostly miss out here, IMO.
* they want a language that helps them catch their mistakes. IMO, maybe Lua misses out here (with default nil everywhere).
* Users want a general-purpose language. Again, Lua misses here, though, of course, Lua's goal isn't to be general-purpose anyway.
* I think many users also want a language that's licensed GPL-compatible. Clojure misses out here.
* they want a nice helpful community
* Users want a language with familiar C/C++/JS/Java -ish syntax. Python misses out here! {ducks}
Python has its own set of problems, but it hits all those marks except for the last one. So, it's gotten quite popular.
Of course.
> It has to be about the most readable of all computer languages.
Quite readable, sure. Though my point is that curlies and semicolons are more familiar to many (and easier to edit/navigate in my editor, for that matter), and probably would be preferred. My comment was about why I think many (not all by any stretch, of course) choose a language like Python.
The only reason I used python is that it was the first result that showed up in a Google search "write program to scrape web page" (ah beautiful soup. How I love thee!)
The only reason I used flask was Udacitys course taught their web app course with it.
I'll admit it, I've never actually analysed the benefits of a language in that way. My only judgement has been "mmm does it feel productive to use this language for what I'm doing". And "how quickly does the documentation take me to a hello world". Which is terribly subjective I admit. I'm suspecting I'm not alone. Or at least I hope I'm not :D. Yes. The embarrassment I feel is real.
PS - it's also how I ended up using nginx over Apache. I couldn't really understand Apache in 30 minutes so I used nginx instead. I even remember an interview where I was asked why I used nginx over Apache and I said "um... because it was easier I guess". Definitely not best practices and I'm trying to be more objective nowadays.
Hm. I think there's a difference between reasons for trying out a language for some random task versus staying with it. I've bounced around between lots of different languages, and I suppose the list I presented above are why lots of people stay with Python.
I think you're judgement of "mmm does it feel productive" roughly corresponds somewhat with the above list. Though I accidentally left off "good-enough docs", which I think is a given.
> I couldn't really understand Apache in 30 minutes so I used nginx instead.
Yeah. Though I think it has a lot to do with how good the docs are. Definitely, if a project can't tell me what it is, why I'd want to use it, and an overview of how it fits in, I'm very hesitant to pursue it further.
Never seen Nim in prod, but it has caught my eye and I'm curious.
* If I have a giant CSV with data in it:
import csv
with open(filename) as csvfile:
csvreader = csv.DictReader(csvfile)
data = list(csvreader)
Bam, an array of dictionaries with the data in them, indexed by column name. With listcomps, whatever I need to do will only take a few more lines. And it's this easy for almost any data format. There will be a widely used library for me to `pip install`.* I needed to plot some I/Q data and superimpose some other data as a heat map over it. Complex numbers are built in. Matplotlib, and bam, graph created. It looks as nice as the graphs my coworkers make using Matlab, and I coded it up just as fast, if not faster.
* I wanted to play around with ordering a pizza online automatically. Import requests, and off I go.
* The code is so easy to read, I've had coworkers update things I wrote when they have never programmed in Python before.
I don't have to do any compile steps. I don't have to use a special IDE. I don't have to think in objects and state-passing and all that BS (but I can if I want to!). I don't have to search for some arcane library. I don't have to know a magic build sequence. I don't have to edit config files. I just make cool shit really fast. It runs slower, but for most things I use it for, I don't care if it takes 10 us or 10 seconds. I just want to make it work.
At the time, RoR was hot and I was leaning towards it. Laravel felt good too because it was new and it seemed to do PHP web "right". The last option was Python and Django. What I liked about the latter is that data science seemed (still is?) the lingua franca of data science and I figured I could learn web programming and build up my Python skills that I could one day apply towards data science.
I ultimately went with Python and haven't looked back. Django (particularly DRF - shout out to Tom Christie if he's reading) has been an utter joy to work with. Even though we're in the era of fat front-ends, it's nice to have a bullet-proof, well supported backend.
Python donation page: https://www.python.org/psf/donations/
Django donation page: https://www.djangoproject.com/fundraising/
Django rest framework donation page: https://fund.django-rest-framework.org/topics/funding/
Although somewhat ironically, I don't use much Python any more now that I work at a mostly Ruby/Rails company haha.
It is also rather unfortunate no company wants to invest in Ruby.
I personally prefer using Ruby for testing & Selenium as well.
Python is mainly popular because of historical reasons. Not because of some magical functionality it has over ruby, here are a few key points:
Ruby was created in 1996 and Python in 1989. Python was the main language chosen by academia because at the time no one really knew about ruby, until its later explosion in popularity thanks to Rails in 2000's.
It was initially used at google which gave it a huge boost
It is also the go to language in the scientific community.
Ruby_can_ become a perfect candidate along side python should there ever be competitive enough scientific libraries just like NumPy, SciPy and so on.
That being said, I love both languages and communities!
So for us, that is now 6 Devs on Python/Django plus some consultancy support. So we've move from 2 python Devs to 6 Python devs within the last year.
There is nothing inherently "more productive" on one stack over the next. It's just technologies which are fundamentally similar.
A competent senior dev on the python stack would be just as productive as a competent senior dev on a php stack and vice versa.
It just seems like you found a good python developer who knows what he is doing.
While PHP has gotten better recently, the language is not nearly as powerful or complete as almost all of the popular alternatives. Up until very recently, something like the Django ORM was impossible to express in PHP. Take an honest look at the available frameworks (especially in comparison to something archaic like Drupal) and you'll find there's no competition.
For building websites, php has plenty of good options too. I do really like the Silex framework for website construction. I backend process with java or python when needed to do any substantial computations.
The "standardization" on common libraries from symfony and zend, have made everything a lot better.
Zend is not even a contender for modern web application development. And again, the gratuitous use of arrays for configuration highlight the shortcomings of PHP.
I've not been a PHP developer for years. I wouldn't go back to it. But pretending it can't compete with Django is one of the weirder things I've seen on HN in a while.
> I wouldn't go back to it.
That's what I'm expressing: there's no reason to choose PHP in 2017. This isn't misdirected 'PHP hate', but a genuine disagreement with the OP's statement:
> There is nothing inherently "more productive" on one stack over the next.
I can prove that python and php are equal in their "power" because I can build compilers/interpreters of one with the other.
If you are arguing that python has better libraries then it's possible though for web development, I'd say most popular languages have similar libraries and capabilities.
But my point was more to the point of expertise in stack. A skilled PHP developer is going to be just as productive with the PHP stack as a skilled python developer.
People who think one stack is better than the other usually base their opinion on poor/bad developers.
There are plenty of horrible python developers as there are php developers.
The "power" of most stacks, especially something closely related as the PHP and Python stacks, are similar.
The difference in productive boils down to competence of developers, not the stack itself.
But that's just my experience and my opinion.
It's hard to quantify the differences, but obviously something like Brainfuck is going to be inherently less productive as long as we're talking about human productivity.
As a personal example, I've searched for answers related to golang far less than I have for python because I tend to find my answers by simply reading golang docs but in case of python, docs do not help me as much so I turn to google and consequently to SO.
Doing data stuff and simple web services is absurdly more straight forward in python, the main things I miss (weaknesses of python to C# and I'm guessing java):
nice parallel options (I know several options exist but haven't found any of them as easy to get into as C# async/await, GIL is the problem i guess)
the django database layer doesn't do smart diffs in the same way as .net db projects (in .net it's smart enough to actually look at your code schema vs the database and work out how to roll forward/back, in django it's just using a combination of your code schema and a table describing what has and hasn't been rolled out yet, making everything a bit scarier and tougher if anything goes wrong. I dunno if SQLAlchemy does this.
edit: also I once read a HN comment that a problem at the heart of python is that block-syntax forces you into having only trivial inline lambdas, after writing it for a while I think they might have been right
To me, if anything I'm curious why python was so low percentage-wise in question views only five years ago. Anecdotally it doesn't seem to me that python usage in "industry" has grown that dramatically in the last five years, but there could be other factors involved such as education. Or my biased gut instinct could be completely off.
(Note: been a python user for 20+ years.)
The majority of the top CS colleges switched to teaching using Python within the last five years. This provides a big reason for companies to use Python as well, since it drives down the cost of hiring.
It also mean more questions in SO by a lot of lost students.
And it means later, more Python devs on the market.
The article is not narrow minded but has a narrow focus and only analyses concrete data from a single source. It may be globally accurate but indicates a rising trend in people being interested in python. While Python usage cannot be directly correlatd to SO, we can infer that languages that have more questions have more people using or learning it generally. In the same way languages with a small community of users don't always prefer SO but something more personal like Mailing lists or IRC (eg. J language).
It should be safe to conclude that due to Data Science being the new buzz word and python at the forefront of it all, atleast python is getting a lot of attention even if it doesn't translate directly to more users right away.
You believe that Python would ever generate more questions over time on SO without getting more users/usage?
I guess the mysterious dumbing down of a stable user base is an alternative explanation.
I'm the biggest python fan you'll meet (ok I'm sure that's not strictly true) but I followed the headline hoping to see more concrete data to support the claim of "Incredible Growth" and came away disappointed.
I did, but I also read the comment: "While this is an interesting statistic there is no additional analysis that it correlates to python's usage growth" -- which is what I responded to.
>There are many possible explanations of a more indirect correlation that could be skewing the numbers in unexpected ways but none are discussed in the article.
Like what though? Aside from some kind of bias on SO I can't think of any alternative explanation that actual growth.
Now, what that growth was based on, that can have many explanations, sure.
To put it another way: do you believe that the first graph in the article directly represents programming language usage percentiles, in the field, over five years? I'm guessing not. I certainly don't.
Here is a graph of programming language popularity on github from 2012-2014:
https://www.loggly.com/blog/the-most-popular-programming-lan...
While this metric is arguably just as fuzzy as any other, the lines in the this graph definitely seem to agree with my gut feeling for language percentiles during that period. I'm not trying to say that my "gut feeling" has any significance. I'm just re-emphasizing that the article didn't give me any useful insight into the significance or meaning of the Stack Overflow statistics. I couldn't find an equivalent chart for the years since 2014 but would love to see one. Either way, it's not like python was ever far behind. It was basically in third place in both the beginning and end of that time period. But in the beginning of the SO chart it's in sixth place. And the SO chart doesn't even include ruby, which is ahead of python in 2012 in the loggly chart. I guess people really don't go to SO for ruby questions? It's certainly possible that the quality of answers on SO for different languages has a lot of variance, which is one possible explanation for the difference. Maybe python questions in 2012 on SO weren't that good. In my experience I'm far more likely to check the python docs before I go looking on SO. Maybe there were changes in google rankings for certain things. Maybe there were certain types of articles that took up the lion's share of growth, like "how to port to python 3", which could have brought existing python devs back into heavy view rotation. Python has also gotten a lot more complicated with things like asyncio, etc., which could again draw more article views but not be directly related to usage growth.
Never underestimate how far users of "sunset technologies" will go to convince themselves that their skill set is outdated. Heck, Embarcadero's C++ product manager insists that "customers tell him" that Delphi (Pascal!) is "five times more productive than Python" and he actually believes this too. The Delphi product manager, meanwhile, told me he sincerely believes that Delphi has had more of an impact on the business world than Python ever has. Meanwhile, the former VP of Developer Relations once polled the first 500 people to upgrade to their newest release of Delphi, crunched the data, and concluded that users really love Delphi (of course, the many who felt the upgrade was light on features and high on price and chose not to upgrade weren't reflected in the data).
It makes me want to pull my hair out.
Python adoption outside first world countries have always lagged considerably behind. A common pattern among technologies.
I suspect a lot of that growth is the rest of the world catching up.
Python's rising popularity among the scientific computing community is simply not enough to support the idea of a dramatic increase in Python adoption. As a long-time user of the language I share your appreciation Python usage in the industry has not dramatically increased in the past few years.
On the other hand, there's plenty of evidence suggesting Python is becoming increasingly popular outside high income countries.
I actually was looking at these numbers just a few days ago, trying to decide on what language to embed in something I'm working on (CPython, Duktape Javascript or Lua), and came to the same confused realization - the number of Python questions on Stack Overflow had increased significantly over the last few years, but I couldn't quite correlate why. I put in a bunch of different related tags, but none of them could account for such a large jump.
https://insights.stackoverflow.com/trends?tags=python%2Cdjan...
I'm trying to make a similar decision at the moment - have you chosen which of these languages to use? I would be interested to hear your thoughts on the pros and cons of each.
When I started my job, the company (fairly large one) was mostly Perl. Perl was the big language of a past generation, so when those engineers were hired, Perl was king. I was told by at least two people that having Python on my resume is not a boost for engineering companies (not counting software), as most managers had never heard of it.
Not too many years later, a lot of new work in the company is being done in Python. Why? Because that's what the newer employees know and prefer.
I think in the software world, Python was big a long time ago (even in the days I joined). But non-software companies were stuck with Tcl and Perl for much longer. Now that they're shifting, you will see some of that growth.
The second though is that schools are also making the switch from Java to Python as their first language.
So the folks learning are searching for a bunch of packages and I suspect a number of the easier questions.
I've recently written a flask application too, and I found myself having to reinvent the wheel at every step, and I cursed a lot. Django's ecosystem, both in libraries and in sheer community documentation, is hard to replicate.
About python, isn't it related to numpy mostly ?
The graphs are for # of views to questions on SO involving that language. What it likely means for C# (and PHP/Java, etc) is that the user-base is maturing and stabilizing, and not as many questions need to be asked (or found). For C#, it could also have something to do with the fact that the MSDN .NET docs have vastly improved over the past 3-5 years.
My understanding is that Linux requires 2.7 as the default version, but it means development is a minor PITA, I have to set up v3 and use pip3 (iirc) instead of just pip and type python3 in the shell instead of just python. It appears minor, but it can get a bit annoying for a Python newbie.
Note that these future modules were all available in 2.6 which was released in 2008. But just like the ruby 2.0 upgrade people procrastinate. But you only have 2 years before python 2.7 is no longer maintained.
from __future__ import (absolute_import, division, print_function) __metaclass__ = type
So I am happy to see that many of France's higher education establishments made the right move.
Also, in favor of this hypothesis is that rich countries are ahead of the curve in DS adoption. It's much harder to find a DS job in a developing or not so wealthy developed country than in US.
It's just something I don't understand... this is really depressing to me.
I'm certain that almost everyone dismissed it due to its syntax (there are still people out there that dismiss it because of that).
Very small. The language was not popular and many people claimed a community project could not overtake languages backed by companies. Same for the Linux kernel.
I would actually love to read some forum/mailing list posts about this. If anyone has any links handy (or knows where to find them) then please post them.
The "killer app" then was an app server + document store called Zope.
Things were smaller than today, but Python was already gaining popularity for scripting. Circa 2001 or so it also had good Gtk and Qt bindings -- there were even some KDE-inspired satellite commercial companies catering to Python/QT.
The discussions in Python land then were about the mythical Python 3000 -- the next, re-imagined version of Python that would fix issues, etc. That was eventually Python 3.
Perl was still king for scripting/admin stuff but losing momentum, and Ruby was mentioned as a nice alternative to Python, but with much smaller use at the time (and even today I think).
https://trends.google.com/trends/explore?date=today%205-y&q=...
So, bring 'em on.
Presumably you are referring to the way imports are done in Nim, i.e. the fact that all symbols are imported into the current module by default (the equivalent of `from module import *` in Python). Nim could certainly follow Python's lead, but that would limit the language: Nim supports UFCS and operator overloading which requires modules to be imported this way.
You can of course feel free to use `from module import nil` in Nim to enforce module name prefixes for each procedure call. But keep in mind that there is no risk of ambiguities, the compiler statically checks everything and refuses to compile your code if there is an ambiguity (at which point you will need to resolve it by prefixing with the module name).
I would be interested to hear more about other things that you think are a bad idea. Could you elaborate a bit?
As someone who has been contributing to python q&a websites and such for quite a while now, I feel like I'm starting to have trouble of keeping up - a lot of new newcommers but even more people willing to help!
I'd be really be surprised to see Python on a decline any time soon.
Maybe you could use pytorch for this? It seems like a supervised learning problem.