How Microsoft Embraced Python (medium.com) 163
Steve Dower, a Python developer at Microsoft, describes how the language become popular internally:
In 2010, our few Pythonistas were flying under the radar, in case somebody noticed that they could reassign a few developers to their own project. The team was small, leftover from a previous job, but was chipping away at a company culture that suffered from "not invented here" syndrome: Python was a language that belonged to other people, and so Microsoft was not interested. Over the last eight years, the change has been dramatic. Many Microsoft products now include Python support, and some of the newest only support Python. Some of our critical tools are written in Python, and we are actively investing in the language and community....
In 2018, we are out and proud about Python, supporting it in our developer tools such as Visual Studio and Visual Studio Code, hosting it in Azure Notebooks, and using it to build end-user experiences like the Azure CLI. We employ five core CPython developers and many other contributors, are strong supporters of open-source data science through NumFOCUS and PyData, and regularly sponsor, host, and attend Python events around the world.
"We often felt like a small startup within a very large company" Downer writes, in a post for the Medium community "Microsoft Open Source Stories."
In 2018, we are out and proud about Python, supporting it in our developer tools such as Visual Studio and Visual Studio Code, hosting it in Azure Notebooks, and using it to build end-user experiences like the Azure CLI. We employ five core CPython developers and many other contributors, are strong supporters of open-source data science through NumFOCUS and PyData, and regularly sponsor, host, and attend Python events around the world.
"We often felt like a small startup within a very large company" Downer writes, in a post for the Medium community "Microsoft Open Source Stories."
Microsoft only embraces things... (Score:3, Insightful)
that give them a competitive edge. The second they get the marketshare they want in an area support for other competing products is eliminated.
Re: (Score:2, Insightful)
Re:Microsoft only embraces things... (Score:4, Funny)
Re: (Score:2, Offtopic)
Microsoft has also been known to _steal_ technologies that had a competitive edge. It may be difficult prove the theft of the GUI from Xerox, but the theft of VMS source code and technologies to create the NT kernel was clear. David Cutler and his team took a great deal of copyrighted code and patented technologies and trade secrets with them, from their work on VMS and it's canceled followup projects Mica designed to run on the new Prism hardware. While Intel was stealing Alpha technologies to create th
Re: (Score:2)
NT Alpha (Score:1)
was a wonderful baby that was born sick and was then strangled
in its crib before it could barely walk.
I had one as a university admin for the CS department in the 90s,
and it was 10 times more reliable than the wintel machines.
The alphas were beautifully designed, though not hardware agnostic
like the PC clones, you had to shell out big $$ to DEC to get hard drives
and expansion cards. DECnet was still a big thing in universities, most
campus networks used DECnet or Novell NetWare (IPX) , NT used NetBIOS
over Ne
Re: (Score:3, Funny)
that give them a competitive edge.
You meant a competitive chrome?
Oops. (Score:2, Funny)
Careful, or some SJW will accuse you of cultural appropriation.
Rhey ... (Score:2)
... wrapped themselves around it squeezed real tight?
Dogfooding (Score:1)
The first real test should not be end users and paying customers.
Find top experts to create a new method to code and create an OS.
Why cant staff learn the new code quickly and to a good standard?
Hire staff who can learn and understand how to code on company time and let them do internal quality control.
Workers learned all kinds of different code at university, they should have the sk
didn't they first tie a version only to Windows (Score:3, Interesting)
Most likely the only reason why Microsoft might now accept and embrace standard Python now is because, like Linux, they can't ignore what the rest of the world is doing any more. The desktop control doesn't have the power it once wielded.
LoB
Re: (Score:3)
Yes, they had Iron Python. Then they decided to drop it and eliminate that team. Last I checked some of the developers still worked on it in their free time but it was way behind.
Which is a little annoying because if you're mixing languages the integration between Python and C# is nonexistant.
Re:didn't they first tie a version only to Windows (Score:4, Insightful)
IronPython sounded great. It used the same .NET virtual machine as C#, F#, etc. So it was designed for interoperability with other MS languages. It's great if your team is already using C# and you want to write python to integrate various modules (like if you had a bunch of C libraries and wanted to use regular python.)
The guy in charge of the project got let go like a decade ago and now it's OSS on GitHub.
In jungle (Score:5, Funny)
Python embraces you.
Microsoft (Score:3, Insightful)
Re: (Score:2, Funny)
Dear Microsoft,
Please, please, please extinguish Python.
It's not dead yet, but it should be.
-Signed,
AC Representing People Who Hate Whitespace-Sensitive Programming Languages
Re:Microsoft (Score:4, Funny)
{ AC { Representing { People { Who { Hate { Whitespace-Sensitive } } } } Programming } Languages }
Re: (Score:2)
Python is not directly competing with any Microsoft products, so the EEE strategy would not apply.
Besides, they haven't been doing it for decades.
Not that the corporation has suddenly become moral, it just doesn't make business sense for them to try without the market dominance they once had.
Why the unmarked commercial advertisement? (Score:2)
Reads like a paid infomercial.
Re: Why the unmarked commercial advertisement? (Score:3)
Reads like a paid infomercial
Please be serious...and who'd be the beneficiary party exactly?
Why Python? (Score:3, Insightful)
I just don't see what other people see in the hype of Python. It has poor backwards compatibility (Python 3 != Python 2), it is single-threaded like JavaScript and it's pretty slow all around unless you code all your libraries in C (and throw away all the stuff that makes it Python)
Sure it's easy to learn, but then so is JavaScript, PHP and Perl.
Re:Why Python? (Score:5, Insightful)
Unlike JS, PHP or Perl, I actually know people who make C libraries and hook them into Python. It's a great way to do small, high-level things that tie together many components quickly.
Re: (Score:2)
Also PHP has inline C now, not that it's probably ever a good idea to use it.
Re: (Score:2)
First, bullshit. I know people who use node.js. And I know people who use C. Do you perhaps mean C++? Or Rust? Because the only people who use C are working on embedded systems or legacy systems.
Second, Python has prewritten libraries to bring in. Node.js, not so many (yet, eventually maybe). Your confusing "can use as a glue language among things I write" and "can use as a glue language among things I write and preexis
Re: (Score:2)
Look, my point is that there is nothing special about Python that makes it more suitable to write C library bindings vs any other scripting language, and it might be old-fashioned to actually try to do that.
Re: (Score:2)
But my point is that Python has a bunch of existing libraries you can use, and Webassembly doesn't. At least not yet.
Re: (Score:3)
Indeed. Python is great for glue-code and great for prototyping those C libraries. In particular, you can code almost anything really fast, if speed matters little. Once the code works, you can port the critical parts over to C pretty easily and can use the Python code as the basis for some nice randomized testing or as "contracts" in addition.
Re: (Score:2)
Then again, you can do that for pretty much any language, even JavaScript. I'm working with a NodeJS library right now that has a huge chunk of it written in C. Sure, the result only works on ARM and MacOS but that's the same issue Python has.
Re: (Score:2)
You can. The question is how difficult it is and how nice the language you get in addition is. For Python, it is very easy. The only language I know where it is easier is Lua. I will not touch JavaScript with a 10-foot pole...
Re: (Score:2)
You don't. You do get a language that requires some actual skill and knowledge and many doe not have that. Then they blame the tool...
Re: (Score:3)
Unlike JS, PHP or Perl, I actually know people who make C libraries and hook them into Python.
I don't personally know anyone who does that for other languages, but CPAN was chock-full of examples of that for Perl before PHP even existed. I believe that if mod_perl wasn't such a PITA, PHP probably wouldn't even exist today.
Re: (Score:2)
Re: (Score:2)
So I made two C components for PHP, almost 20 years ago now, and they are still part of standard PHP. Pushing C-stuff into PHP was comically trivial already 20 years ago, and more recent versions of PHP made it even easier. Some people do argue that PHP is a glue language that was built to absorb C libraries (I have heard Rasmus himself argue that, and it made a lot of sense at that time).
Re: (Score:2)
it is single-threaded like JavaScript
Asynchronous > multithreading, but you're right that Python sucks at concurrency.
Re: (Score:2)
Asynchronous > multithreading
I think that goroutines or erlang processes (both are essentially threads with very cheap context switches) are a much preferrable to async programming.
Re: (Score:2)
Re: (Score:2, Flamebait)
I'm not sure either but there's no question that Python has gained massive popularity - and not from Microsoft especially, but all over. Microsoft is simply following the trend here.
I honestly think a large part of the adoption is the tooling, specifically Jupyter notebooks that let you kind of run code mixed with documenting what you are doing, leaning on a wide range of libraries for various things, along with modules of your own code. Yes there are other things that kind of do that but it's done reall
Re: (Score:1)
It's something of a mystery to me too but it seems to be about the libraries available. Of course that just begs the question of why anyone bothered to write those libraries in the first place but there's certainly a snowball effect from that.
The idea of making whitespace significant in the way Python does is a useful bell-weather, however. If someone defends the idea then you instantly know they're an idiot and you can move on to the next interview candidate. No one wants to work with someone who's respons
Re:Why Python? (Score:5, Insightful)
It has poor backwards compatibility (Python 3 != Python 2)
This is mostly an issue if you mix Python versions. These days reasonably modern shops tend to solely use Python 3.
(It is definitely annoying though if you never got the budget to migrate your legacy project from Python 2 to Python 3 or if you do operations work on some ancient box that only includes Python 2.)
it is single-threaded like JavaScript and it's pretty slow all around unless you code all your libraries in C (and throw away all the stuff that makes it Python)
Many classic Python usage scenarios simply use Python libraries that wrap C libraries. Most important everything related to data science and machine learning. There Python is used to express business logic and C libraries do the actual computation.
Apart from that, there are plenty of scenarios where Python is "fast enough" and you don't really care if you get the result in 0.001 seconds or 0.005 seconds.
It's really about picking the right tool for the right job. And sometimes faster development time is more important than faster execution time.
Re: (Score:3)
This is mostly an issue if you mix Python versions.
So what do you do if you have many millions of lines of code released under strict configuration control* in the old language version?
*Developed and tested per DO-178 [wikipedia.org] as required by the FAA. Not cheap to re-certify.
Re: (Score:2)
Re: (Score:2)
I just don't see what other people see in the hype of Python. It has poor backwards compatibility (Python 3 != Python 2), it is single-threaded like JavaScript
I see the draw as the REPL (for testing single lines of code), and being able to run short scripts with nothing more than a text editor. The only thing that can compete is Perl, and let's face it, Perl has a lot more gotchas than Python. (Perl has better threading for sure, even if the only fast technique is to pass tasks in work queues.)
Python can do a lot, and there's a good compromise between ease of writing and ease of running. I would not use Python for a medium to large program until the static type-c
Re: (Score:2)
If, after you have figu
Re: (Score:2)
As an aside, I find C# to be way more expressive than Python, because it has all the same advantages, plus more syntax like ref and out as well as a type system that can help you in so many ways. Performance and debugging are really good. The async API is a dream. But it's just not as easy to write or run, so I use Python for scripts where it is a better fit. And the third party Python libraries are potentially better, but the .NET standard library and NuGet are pretty damn good. Project configuration is s
Re: (Score:2)
> I would not use Python for something that needed to handle a lot of data quickly.
Strangely that is the exact area where Python has seen a huge growth in usage: Data analysis with Pandas, NumPy and others, and AI. Both of which are about handling lots of data quickly.
It is quicker to write code for 10 minutes and have it run in 15 minutes than it is to write code for 30 minutes to have it run in 10 minutes.
When I said "lots of data", was thinking of analyzing the files on a full hard drive. Since I took advantage of threading, it would be more a matter of taking three evenings to write instead of six, but it would run for a week each time instead of a day. (Python has threading, but it mutexes all access to core interpreter data (the GIL), so my understanding is that threads have no performance benefit unless they invoke non-Python logic so control leaves the VM.)
Re: (Score:2)
It's come to my attention that Python has acquired almost exactly the same threading API that Perl has. I haven't explored the differences and similarities (can I pass lambdas between processes?), but it seems like the difference in performance would not be as dramatic as for the older Python versions.
Re: (Score:2)
Actually, Microsoft uses Perl a lot internally. You won't see it on a lot of their customer-facing products (including Visual Studio), but internal test tools are often implemented using Perl. You run into this when you're using their more specialized toolkits like the DDK and others where their tools have self tests.
Re: (Score:2)
I just don't see what other people see in the hype of Python.
same reason why a racist doesn't see good in other people. When you don't want to see xyz, you will not see xyz. It's the seer effect.
Re: (Score:2)
It's very lucky indeed that all managers know the difference between a prototype and a finished product.
Otherwise they might say something stupid like "it looks finished - ship it!"
Re: (Score:2)
So people sniff it and it gives them brain damage?
Whitespace as language construct = fuck off (Score:1, Funny)
Re: (Score:2, Funny)
Re: (Score:2)
If that even matters to you, then you are not a programmer, but just an amateur with a keyboard.
Re: (Score:2)
Lets turn that around:
That white space isn't there for your benefit. It's there for the compiler.
Either way, humans parse stuff differently from compilers. Forcing me to use some construct that I either don't need or would like to do differently just to satisfy the compiler is just wrong. I have my reasons for formatting my source for human readability purposes.
-- Happily mixing tabs and spaces since 1991.
Coming soon (Score:2)
Visual Py#
Re: (Score:2)
Visual Py#
Homer Simpson: mmm, Pie
WSOD (Score:3, Funny)
White space of death
Pypi.org stability and security issues will abound (Score:2)
I'd be deeply concerned about Python's support for installing quite random dependency chains from https://www.pypi.org/ [pypi.org] to satisfy a need for a Python module. Much as ant, gradle, and maven install untested Java modules from the Internet, and as CPAN installed Perl modules, they brought dependency chains with them that could displace and break cricical functioning code. I recently had to help recover a critical system where a release engineer ran "pip install" as a root user and wound up upgrading critical
Scope (Score:2)
I would bloody well hope that any change would be dramatic after eight years of changing.
Great language for tiny things (Score:2)
But it has horrendous maintainability characteristics. So many hours I have spent reverse engineering someone else's Python just to determine what kind of object a method returned in different situations.
Python is important today because machine learning folks use it - but that's because they don't know any better - they are scientists and tend to work on very small teams and are not concerned with software engineering best practices. If you want to build something that is part of a much larger whole, and t
beyond NIH (Score:2)
Microsoft's culture has historically been several grades beyond mere NIH, something more akin to "not warheaded here syndrome".
With Java, Microsoft was neither slow nor reluctant to slip in the payload package, and pretty soon Java was reduced to a "write once, debug everywhere" programming language that Microsoft could truly count as one their own.
Microsoft, scapegoats and capitalism (Score:2)
No, I don't like them, either; in 2017 I finally managed to move everything to Linux except three or four apps still living under Wine or in a Virtualbox VM, and it was the best decision regarding my home/homeoffice IT I ever made.
I'm still surprised, though, that so many intelligent people see the evil in Microsoft (or Google, Facebook, Oracle, Amazon, eBay, IBM, ...) as a specific property of Microsoft (and Google, Facebook, Oracle, Amazon, eBay, IBM), Microsoft (Google, etc.; you get the lyrics) as a par
python is the new basic (Score:2)
python is the new basic, basic was invented by microsoft.
in the spirit of basic, it only makes sense to embrace it.
Re: (Score:2)
No, it was not. BASIC Wikipedia entry [wikipedia.org]
Re: (Score:2)
TIL!
thx...
Re: (Score:2)
Lets not forget their getting triggered over master/slave -- https://github.com/python/cpyt... [github.com]
The parallel computing community was never that happy about calling the paradigm master/slave. Most references use the terminology master/worker these days. We can find references to manager/worker which sound a lot more neutral that date back decades. ( A PACT 2001 paper as a proof https://link.springer.com/chap... [springer.com] )
Lots of term in parallel computing ended up being renamed to make the term more accurate or more neutral. Famously, we no longer talk about "embarrassingly parallel" applications, but about "pl
Re:You mean.... (Score:4, Insightful)
And you can keep that kind of thought where it belongs, behind closed doors. NO ONE thinks code references to "master/slave" literally means the same as human slavery. Reminds me of a coworker who got angry at the term "orphan" because SHE worked with orphan children. The idea that orphan document was completely different from a human child was something she couldn't accept. Orphan child process set her off the deepend though. At that point we may or may not have given up on her stupidity and used every opprotunity we could to use the terms (correctly of course), but no one cared when she was canned.
Bottom line, sjw correctness is a cancer that spreads.
Re: (Score:1)
Re: (Score:2)
They could also engage in the mental gymnastics used to explain BDSM where the "submissive" person is really the "person in control". It seems like the X windows "master/slave" relationship, where the display on your local screen is called the "server" and the program running on the remote computer which you display locally is called the "client". It is completely backwards from the mental model most people use for a program running on one machine, displayed on another machine.
Re: You mean.... (Score:3)
Re: (Score:2)
The only thing I meant is that the renaming is a lot older than the discussion in python. And in practice Master/Slave is not a term very used by the community to denote that organization. Master/Worker is the term that I hear the most. I hear Manager-Worker mostly as a side notes ("sometimes people call that manager-worker")
I was actually surprised when Hadoop chose to call the non-master nodes 'slaves' since the parallel computing community had pretty much moved to calling them 'worker'.
Re: (Score:2)
NO ONE thinks code references to "master/slave" literally means the same as human slavery.
The etymology of the word "slave" is directly referential to human slavery, and there are other words which are just as descriptive, if not moreso.
Reminds me of a coworker who got angry at the term "orphan" because SHE worked with orphan children.
Another poor choice, since that word is descended from the Greek for bastard.
Re: (Score:2)
Says the person with a synonym of shit in his name.
Re: (Score:2)
Says the person with a synonym of shit in his name.
It rather proves the point, don't you think?
I lost my original slashdot login, whose name I cannot remember. It was high five digit. It's weird I didn't just use "drink" though, which is the normal reason I've used "drinkypoo". Based on UIDs, it wasn't in use when I signed up...
Re: (Score:2)
Lets not forget their getting triggered over master/slave -- https://github.com/python/cpyt... [github.com]
No, I'm not kidding.
To save anyone else the effort, the parent is totally mischaracterizing the change linked. "Pliant children" (referring to functions, not processes or hardware) was changed to "helpers", which I think most people would say is clearer. It formerly said "pliant slaves", which is not a descriptive thing to call a function, like calling my fork a pliant slave.