I want to wade into this lore as someone who predates Python as a programmer, by some decades.
I lived through the object oriented revolution, at first ushered around by one Arch Davis, a C. S. Lewis aficionado who haunted Princeton. He wanted me to witness the rise of ADA first had, ADA being a DoD language, which you were going to have to know if you wanted to do defense work. This was pre 1980.
My career took off once I got established back in Portland (a boyhood home) and hung out my shingle as someone who specialized in the needs of nonprofits, which category of company is more encompassing than NGOs, as some were and are GOs (governmental organizations).
I worked at the metro, regional and even state level as a database coder, writing those standalone applications such as Microsoft was facilitating atop Windows. These were not web applications as the World Wide Web had not been invented yet, not quite. The Internet Revolution was just beginning.
My database language was dBase, then FoxPro, later Visual FoxPro (VFP) when Microsoft bought it. I moved towards Python from a background in VFP, coding for nonprofits and medical research statisticians.
I had two major motivations for my move: Python had 3rd party libraries good at 3D OpenGL graphics whereas FoxPro did not; FoxPro was going to be retired as a core Microsoft language in 2015.
I’m speaking of Portland, Oregon by the way, not Portland, Maine, in the Pacific Northwest, along the banks of the Columbia River, fed by Portland’s main river, the Willamette.
Portland is part of the Silicon Forest, which includes Seattle, Bellevue and Redmond to the north. However the Silicon Forest does not go far south enough to be contiguous with the Silicon Valley.
The Oregon Trail, which many of European descent had followed, branched southward somewhere further east towards gold country. The Willamette Valley promised fertile farmlands and forest products, whereas the southwest beckoned with the promise of great riches from the mines.
Intel, Facebook, Amazon, Google all have a presence here, in large degree because of the well-developed hydro-electrical system and the power-hungry aspect of data centers.
However that’s all at least third generation Silicon Forest, with a first generation featuring Hewlett-Packard and Tektronix.
Silicon Valley is centered in San Jose and has more of the gold rush mentality, more venture capital savvy. That’s the stereotype anyway, but lets not forget Microsoft gave us big risk taker Paul Allen.
OK, now to Python in particular, why is it so popular?
First and foremost, the syntax, vocabulary, and implementation of the object oriented paradigm is both expressive and elegant. Guido van Rossum developed the language (named for Monty Python, the British comedy troupe) along the lines of another named ABC, likewise interactive.
Languages may be divided into whether they may be used in shell mode, meaning whether they provide a prompt and opportunities for interactive dialog.
FoxPro, inheriting from dBase, always had this. I’d fallen in love with APL (A Programming Language) by Kenneth Iverson even earlier, at Princeton.
I was used to interactivity, which we all had gotten to know through the electronic calculator experience. I cut my teeth as a programmer on an HP-65.
Guido’s clientele in Holland were technically-minded professionals who wanted to get on with computing without getting sidetracked into needing some computer science degree just to get their daily work done. Everyone needed similar types of number crunching, with exotic flavors thrown in.
Packages like Mathematica were somewhat serving the same niche, but the idea of a “general purpose language” in computer world is not necessarily a mathematics (APL notwithstanding). Witness COBOL and MUMPS.
We were marshaling gobs of data, collating, keeping records, processing information. Number crunching was just a small part of it.
Python came along amidst the great second wave of the computer revolution. The first wave had been the emergence of the personal computing device, or desktop computer. The second wave was the emergence of free software, including free operating systems. A different set of ethics and legal reflexes were taking over, given the easy copiability of bits.
Python was free, elegant, and its ABC heritage (including its shell) made it popular with many professions. What’s more, it ran well on Windows. Guido had made sure of that thanks to Python’s cross-platform nature and libraries that abstracted away the fact that Windows wasn’t POSIX (think “backslash” instead of “forward slash”).
The practice of contributing code to a sharing community meant Python could be leveraged by players in many walks of life, from the astronomers to the data scientists. Right when personal computers were taking off exponentially, here as a general purpose language that could run on most operating systems, including Windows.
In sharing a computer language, the disciplines could talk to one another more. Python could play the role of Matlab, and of R, not to the exclusion of these, but as a glue language that helped ease the shortage of skilled coders.
What newcomers to the language might want to include in their study is the evolution of Python from version 2.x to version 3.x, which need not involve any heavy slog through every version of the language.
Just compare and contrast a current Python with an earlier 2.7 version of itself, to give snapshots of how it developed.
This approach both helps preserve 2.x as a dialect, and gives us grist for the mill.
In Python 2.x, the built-in print is a keyword, and a rule around keywords is that none of them take arguments.
>>> print 2 + 2
In Python 3.x, print( ) is still built-in, but now is a function, a callable, meaning it certainly does expect arguments.
>>> print(2 + 2)
In contrasting these two implementations of print, we get to harp on core jargon, such as what’s a keyword, what’s a built-in, and what is “callability”. What are “arguments” and so on.
As a teacher of Python, I’m suggesting from experience that having two major versions to compare and contrast actually helps rather than hinders, as we learn most when there’s wiggle room.
Seeing how range( ) used to return a list type object, but then became a type in its own right, is an eyeopener. We better understand what’s meant by “type” in thinking about this difference.
In conclusion, I recommend taking to heart the lesson that applies in the realm of human languages just as surely: in studying more than one of them, one gains insights that help with all or most of them.
My having studied APL and FoxPro already, made Python far more accessible to my thinking.
Having looked at Java, Rust, Perl, Ruby and others has deepened my appreciation for the variety among languages, and these are but a few.
Erlang, J, Clojure, Scheme… what a fun world, akin to a musicologist’s I would imagine.
Python is so popular because it has attracted a critical mass of professionals eager to get on with their own careers and needing to gain traction in some computer language or another.
Python attracted enough of a following to become one of the top languages, in terms of ubiquity and diversity in application.
That being said, Python is not a low level system language and requires a lot of memory, as the interpreter needs to stick around to execute the code, while providing garbage collection and other services.
The idea of wanting to pare down to a single language and standardize on that, is attractive to those who find diversity annoying and maybe don’t code for a living.
Most of us consider variety to be the spice of life.
That “object oriented” is not the only paradigm and some other languages are up for shouldering responsibilities, is no cause for dismay.
On the contrary, we expect new and better languages will be coming around the corner.
I’m looking forward to Python 4.