Versions aren't backwards compatible

>Versions aren't backwards compatible
>2.7 and 3.5 are basically entirely different languages
>The """solution""" to this is to make fucking virtual environments for specific versions of Python
If any other language was like this everyone would lose their shit. Why does Python get a free pass for completely breaking compatibility? Is it okay when Python does it?

Attached: opengraph-icon-200x200[1].png (200x200, 8K)

Other urls found in this thread:

media.ccc.de/v/ASG2018-204-path-agnostic_binaries_co-installable_libraries_and_how_to_have_nice_things
php.net/manual/en/migration70.incompatible.php
twitter.com/SFWRedditGifs

>virtual environments are bad
Say good bye to VMs and Docker and jails and chroot then.

There's a difference between having an environment with specific packages to aid deployment, and having a virtual environment to get around how shit a language was designed and make sure nothing breaks.

One is for efficiency. The other is for fixing the shit language.

>and having a virtual environment to get around how shit a language was designed and make sure nothing breaks.
Literally chroot

>Say good bye to VMs and Docker and jails and chroot then.
Good.

Only things bad about Python are GIL and package manager (can only install one version of a package)

x = 2

if x == 2:
class N:
def n(self):
print 2

else:
class N:
def n(self):
print 3

N().n()

>(can only install one version of a package)
Not if you use virtual environments like OP is bitching about.

Can still only install one version of a package at a time. You can't use function A from ver 0.1 and function B from ver 0.2 in the same program

>You can't use function A from ver 0.1 and function B from ver 0.2 in the same program
You can't do this with any library in any programming language...

It's not like you can link against multiple versions of boost for example, and call foo() from version A and bar() from version B.

Also, mutable types (inluding metaclasses and modules), CPython API, lack of proper static type system, lack of declarations, lack of proper metaprogamming, lack of proper contracts, retarded own names of common CS nomenclature and exposure of implementation details in many and various degree.

I'd welcome this. These have been nothing other than crutches of bad design. The only reasonable ones are chroot and jails because of their age. There's no reason for things like Docker to have come into existence, all it does is recognize the problem and sidestep it, again.

The fact that software distribution is so poorly handled is a problem that needs to be fixed, not avoided.

Languages should manage their own dependencies, this should be separate from the OS package manager in principle but wrapped. In the same concept as OneGet, a package manager-manager. The fact that Microsoft pushed for this before anyone else is absurd.

Python libraries, and other language libraries, should be managed by a standard tool of the language. But you could have something like `apt` wrap `pip` for Python packages, still keeping them separate (and standard) underneath.

As for runtime dependencies for executables, the state of things there is abysmal and could be fixed but nobody does this.

Instead everyone just manages them in their own unique way.

I'm so sick of all these bad decisions layered on bad decisions for no reason. The fact that people are changing strings around but to something equally as bad, is so dumb. So we're willing to make breaking changes to separate our self from other distros, but don't actually change anything significant other than path locations. What's the point?

We can do better, and it's easier. How in decades of package management and operating system development have people not done this yet, is beyond me.

We're literally willing to visualize entire operating systems because we can't figure out how to overlay paths and/or come up with a sensible binary lookup standard. Fuck me.

This kid is like 12 and has it figured out
media.ccc.de/v/ASG2018-204-path-agnostic_binaries_co-installable_libraries_and_how_to_have_nice_things
I guess nix and guix are at least trying.

>There's no reason for things like Docker to have come into existence,
t. non-developer

The solution is to stop using 2. The way it handles strings was a mistake that required breaking changes to the language to fix

> >The """solution""" to this is to make fucking virtual environments for specific versions of Python
Not a bad solution, y'know. And Python has just TWO versions, whereas in something like PHP or Ruby every version is incompatible with the newer one.

>waah python2.x and python3.x are so different that they are incompatible waa
IT IS a different mayor version, it's meant to break things. For compatibility you have minor version, that are guaranteed to work with code from previous minor versions of its mayor version.
So any code for A.x will be compatible with A.y if y>=x. If A.x and B.y would be compatible, then B should be just a next minor version instead of mayor.
kys

Attached: said with a posed smug.gif (711x400, 2.92M)

Show a single example of PHP 5 code that wouldn't work or work differently in PHP 7.

I doubt you're being sincere but if you are you missed the whole point.
Docker has nothing to do with development in itself, it's a depedency of bad design.
Would you rather import a dependency that runs nativley or pull in a dependency that requires its own special environment just to make the most basic guarantees.
People are literally shipping products that can't run on another machine except this special one they had to craft. That's terrible.
>but isolation, security, versioning
None of this requires a container.

If you thought megabyte large hello world was bad, imagine depending on an entire OS just to execute it. What a good solution.
>just like add more layers of indirection and abstraction, what could go wrong?
Trash.

>but configuration
Also doesn't require it. That's probably the worst excuse.
If we solved the problem at the package management level, this wouldn't even be a problem in the first place.
If you want a specific version, and configuration set, just bundle that alone. That should be possible and doable.

>weebshit
stopped reading there

>None of this requires a container.
That's wrong.

>If you thought megabyte large hello world was bad, imagine depending on an entire OS just to execute it. What a good solution.
Containers do not virtualize entire OSes, you're thinking of virtual machines.

C++ needs a clean slate too. Too bad more devs arent like the python devs

>Containers do not virtualize entire OSes
I didn't say they virtualized them. The scale of docker containers are enormous and have "everything we need". The only thing they're missing in most cases may as well be the kernel.

It's like saying a Linux Jail or Branded Zone isn't an operating system because it excludes the kernel. It's still huge, innefficient, and only exists because people are targeting things that claim to be portable but in fact, aren't. The argument there is mostly semantics.

>That's wrong.
Glad you pointed out which ones have a hard requirement for containers. And explained how.
It sure is strange how people did this for many years before the concept even existed.

This is nothing other than laziness at every level. Everyone is responsible for this mess. We're stuck with Over engineered garbage when a simpler solution would not only work but be better for all. The only hurdle is coordination, which is easier now more than ever before.

If it's a clean slate you want, you may as well jump to a new language, better than to expect C++ to start fresh imo. Waiting for Jai myself.

>The fact that Microsoft pushed for this before anyone else is absurd.
Actually, this makes sense since they have to support all of their own (DISM, Nuget, chocolatey, etc.) as well as modern WUP(metro store shit) and WSL (Linux package manager like apt, yum, etc.).
I legitimately won't be surprised if they eventually add Android compatibility at some point, and somehow manage APKs through a single package manager interface. This would be better than how even Google themselves handle it on ChromeOS.
They don't have to either, developers could just make the Android package manager and tie it to the interface like they've done with chocolatey and scoops.

ECMAScript 6 module imports can selectively import foo from baz1.1 and bar from baz1.2
But I don't think NPM can have both installed at the same time in one NPM project

Then explain to me why I can pipe any C++ version code into the latest GCC and it just works™
Why are python developers so full of shit

>so i have idea....ummm, make print a function

error

>>> N().n()
2

php.net/manual/en/migration70.incompatible.php

because c++ development is continuous, each new version adds up to the previous like a tumor on a tumor on a tumor... p2 and p3 are different, but the core idea of python is still the same - p3 just cleaned itself from the previous version's legacy and it's a good thing

>and it's a good thing
welcome to polygon
you start tomorrow

>free pass
>python
The community has been bitching about this for years