Python 3.6 Released (python.org)
On Friday, more than a year after Python 3.5, core developers Elvis Pranskevichus and Yury Selivanov announced the release of version 3.6. An anonymous reader writes:
InfoWorld describes the changes as async in more places, speed and memory usage improvements, and pluggable support for JITs, tracers, and debuggers. "Python 3.6 also provides support for DTrace and SystemTap, brings a secrets module to the standard library [to generate authentication tokens], introduces new string and number formats, and adds type annotations for variables. It also gives us easier methods to customize the creation of subclasses."
You can read Slashdot's interview with Python creator Guido van Rossum from 2013. I also remember an interview this July where Perl creator Larry Wall called Python "a pretty okay first language, with a tendency towards style enforcement, monoculture, and group-think...more interested in giving you one adequate way to do something than it is in giving you a workshop that you, the programmer, get to choose the best tool from." Anyone want to share their thoughts today about the future of Python?
You can read Slashdot's interview with Python creator Guido van Rossum from 2013. I also remember an interview this July where Perl creator Larry Wall called Python "a pretty okay first language, with a tendency towards style enforcement, monoculture, and group-think...more interested in giving you one adequate way to do something than it is in giving you a workshop that you, the programmer, get to choose the best tool from." Anyone want to share their thoughts today about the future of Python?
Cuz IMHO using whitespace to define blocks is brain dead.
Perl is great for people who tend to be more "verbal". The total math geeks I know really prefer python, though.
It's wonderful that we have such a joyful abundance of tools to choose from in the FLOSS world, and aren't stuck running VB.net or whatever the craptastic commercial product is these days. Be maximally productive and we can all be happy for that.
Now let's work on getting these things coordinated so I can use a python module in perl6 and the ruby folks can use a perl6 module on rails. That was one of the great dreams of the perl6 project and it doesn't seem to be effective yet.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
And that's why Python sucks, no backwards compability.
Any word on how Trump is going make Python great, finally? Maybe by adding curly braces?
Perl is great as "awk on steroids" as Larry once put it, it's much more convenient and performant than the sed+awk+shell scripts for doing batch text editing.
But there's so much stuff in the language that it takes a long time to acquire (and maintain) the proficiency needed to read someone else's code, if that someone else is an intermediate or higher level Perl coder. Many of us use Perl only occasionally, so it's easy to forget what we thought we learned in the long-ago determined scramble through the O'Reilly book.
That summary is pretty inflammatory. "New Python: Also, some people say Python sucks!"
What Larry sees as a virtue of Perl, the fact that it gives you myriad tools to accomplish your tasks, many see as over-complicating the matter. You can certainly do whatever you need to get done in Python (duh), but the Python folks pride themselves on giving you a good way. It's just a different approach to language design.
A (possibly) overwhelming everything-and-the-kitchen sink? Or tools crafted by experts? Personally, I love Perl, but there really doesn't need to be this counter-productive contention between the different approaches.
And yet, everyone will continue to use 2.7.
The language changed for virtually no reason/benefit in Python 3 and they broke backward compatibility. Worst of all, no automated means of reliably porting 2.7 code to 3 was provided, and even today, there is no reliable means.
Developers stuck with 2.7 to maintain compatibility and then continued further development in 2.7. Thus creating an even larger body of work that doesn't run under Python 3.
It was a massively stupid decision. But, I expect nothing less from those that build a language whose code can completely change functionality by simply misplacing an invisible character(space). Said character itself often makes up 20% of the frickin code!
I once had a dog named Guido.
Isn't 2.7 always the latest release?
Python 3.5 got async, await key words and has had proper OOP for a decade, things JS is still trying to get into the language. The one downfall of python is JSON object literals aren't as easy as in JS.
If more node devs found out about Python's Tornado, they'd probably pick Tornado.
Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
from __future__ import braces
Time to dump Python 3.x resume development on the 2.x branch. The ridiculous lack of backwards compatibility hurts far more than it helps.
Fast Federal Court and I.T.C. updates
The language is clean, the libraries are rich in functionality, and bindings to native code are easy. Python makes perfect glue for scripting complex processes - much more capable than shell script, and infinitely better than the awful powershell. It's also great for 'in application' scripting, since customers can pick it up easily. I work on a large retail product that both embeds, and can be embedded in a Python interpreter. I have nothing bad to say about it. Scipy/matplotlib give something like a more capable/versitile matlab for free. It's great for data processing. Anythimg that gets too slow can just be factored out, and moved to compiled code. I find the perl vs python comment amusing. Perl can be a 'write only' language, depending how it was written. I've seen perl scripts like that. This just doesn't seem to happen in python. Given a suitable idiot, you usually get at worst, code duplication, lack of seperation into proper classes or even functions, and general sphaghetti. It still needs to be re-written, but at least you can understand what it was supposed to do. There is no excuse for some perlisms. I think Dijkstra said something like 'you can write Fortran in any language'. I'd extend that with 'but you can only write obfuscated perl in perl'. Note that I'm not saying perl is intrinsically bad, but that I have certainly seen a lot of code that was badly written in perl modules, such that it was hardly readable. Clearly it has some functionality that should not be used to keep code clean and readable.
Most tools I use still require Python 2.7 as a direct result of this.
The backports modules provide enough support of new features that pretty much nothing actually requires Python 3 (other than dumb 'you must upgrade always' apps like Blender.)
By and large though most things dabbled with Python 3 when it was claimed it was going to clean up the Python 2 messes, then after a couple minors breaking things (again!) they just migrated back to 2.7 and never looked forward.
First, I know Javascript is wildly more popular as the language that runs everywhere, but it's not what most people use when they're writing a system / glue script - though some people do, they've got a hammer.
Python's the utility / glue scripting language of choice precisely because it's READABLE - it doesn't have nine different ways to do everything like Perl does which makes it less expressive but more comprehensible and maintainable. You can definitely bang stuff out faster in Perl, but you can come back to the Python four years later and easily figure out what it's doing (just did that recently, fixed a large four year old 2.x script for new requirements and features and upgraded it to Python 3.x in a day, most of that testing), or grab someone else's Python and maintain it with reasonable effort unless they were seriously defective. Terrible programmers can write Perl in Python, and great programmers can write very maintainable code in Perl, but the language heavily skews the odds.
Remember when Ruby briefly seemed like a contender for Python? Well, it was neat, and decent enough (I used it), but it had too many perlisms (punctuation vomit syntax) which made it similarly not so readable, and then all the magpies flew away to the next hotness and I went back to Python as more maintainable - and more capable because of the strong library support. And now Ruby is just 'That language you use for Rails'.
Similarly, people like to bitch about the whitespace, but it forces readability. Perl people considered cramming 5 or more lines worth of Python on a single line a bragging point, and it was when vertical space was limited, but it's hell for readability and maintainability and we've got big monitors now. And if you have any code skills at all the whitespace is not a problem - I do Python, C#, C++, bash, Haskell, ASM, and VHDL - all wildly different, and the biggest problem is remembering how each does '# of items in a collection' (Count? count? Count()? Length? length? sizeof()?) - whitespace is not even on the radar.
A more valid complaint is that Python has relentlessly marched towards cleaning itself up even if that breaks compatibility - it is not afraid to clean up terrible mistakes it has made (usually on new features) rather than leaving them in forever for compatibility reasons like bash has to. I know that's a big sticking point - it can be jarring when old code breaks, but locking old code you don't have the time to maintain to a specific version has worked pretty well for us. Mostly that's just segregating things as 2.x or 3.x. Code we have kept up to latest version has improved as a result as the language improves.
Biggest weakness - the lack of compile time checks due to strong but dynamic typing continues to be an Achilles heel for any large project. Python (and other scripting languages) just aren't suited for that and we don't use it for that. Use something with static compile-time checking like C# or C++ - yes, after all my kvetching about readability we still use C++ for some things because nothing else fills its niche.
Unfortunately there is nothing about Python that encourages better programming by its users. I have seen plenty of people move from, say, C to Python and guess what ... they continue all of their bad habits in the new language. The end result is often worse than it would have been in C. Many programmers have trouble modularising their code no matter what the language. It simply becomes Python spaghetti.
The indentation issue is something that could, and should, have been totally avoided by the Python creator. It was a very bad decision.
Also, the instability of the Python modules is another serious flaw. We see situations where programmers have mandated Python2.4 or similar and moving to a newer Python becomes a large complicated problem.
Before the apologists say you can use Babel, admittedly, you can, but, using such a tool is an admission of defeat. To compile something that is not true JS to something that is JS I would argue is not the original language. It's like using macros in assembly. It may seem pedantic, but pragmatically, Python runs _everywhere_ that C runs*. (Meaning your platform has a C compiler). Comparatively, using JSLint as an example, in order for JSLint to support a particular feature, it must be in two runtimes and at least stage 3 in proposal.
* I'm not talking about browsers, because that's where JS was designed to work. I'm talking about outside the browser, where people are taking JS. And Mozilla did have an experiment about running Python in the browser. And if you want to split hairs: https://repl.it/languages/pyth...
Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
Is it compatible with Python 3.5? or do I need to rewrite my code? :-)
flamebait +1
Is there a inkey$ command yet.