A Python for Future Generations

Video thumbnail (Frame 0) Video thumbnail (Frame 885) Video thumbnail (Frame 1723) Video thumbnail (Frame 5248) Video thumbnail (Frame 9299) Video thumbnail (Frame 12931) Video thumbnail (Frame 15780) Video thumbnail (Frame 16746) Video thumbnail (Frame 21368) Video thumbnail (Frame 22265) Video thumbnail (Frame 23218) Video thumbnail (Frame 24049) Video thumbnail (Frame 24917) Video thumbnail (Frame 26117) Video thumbnail (Frame 30534) Video thumbnail (Frame 31810) Video thumbnail (Frame 32690) Video thumbnail (Frame 34151) Video thumbnail (Frame 35046) Video thumbnail (Frame 41658) Video thumbnail (Frame 45389) Video thumbnail (Frame 52155) Video thumbnail (Frame 54510) Video thumbnail (Frame 56134) Video thumbnail (Frame 59394) Video thumbnail (Frame 61663) Video thumbnail (Frame 63173)
Video in TIB AV-Portal: A Python for Future Generations

Formal Metadata

A Python for Future Generations
Title of Series
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license.
Release Date

Content Metadata

Subject Area
A Python for Future Generations [EuroPython 2017 - Keynote - 2017-07-10 - Anfiteatro 2] [Rimini, Italy] A journey through the current Python interpreter, some of the effects of its leaky abstraction on the language design and how we could evolve the language to future proof it. Covers some practical and not so practical ideas based on experience in the JavaScript and Rust ecosystem
Point (geometry) Medical imaging Open source Internetworking Multiplication sign Software Projective plane Energy level Software framework
Degree (graph theory) Context awareness Greatest element 1 (number) Website Bit Quicksort Mereology Traffic reporting Twitter Formal language
Standard deviation Run time (program lifecycle phase) Code Multiplication sign Bit Instance (computer science) Mereology Protein Computer programming Formal language Number Type theory Latent heat Process (computing) Integrated development environment Interpreter (computing) Quicksort Library (computing)
Torus Group action Multiplication sign Decision theory Set (mathematics) Parameter (computer programming) Formal language Number Hypermedia Term (mathematics) Operator (mathematics) Representation (politics) Energy level Data structure Form (programming) Social class Data type Standard deviation Binary code Instance (computer science) Sequence Equivalence relation Type theory Interpreter (computing) Quicksort Object (grammar)
Complex (psychology) State of matter Multiplication sign 1 (number) Mereology Formal language Number Operator (mathematics) Software testing Endliche Modelltheorie Proxy server Addition Standard deviation Electronic mailing list Content (media) Operator (mathematics) Sound effect Instance (computer science) Sequence Radical (chemistry) Type theory Particle system Interpreter (computing) Pattern language Object (grammar) Resultant
Code Multiplication sign Consistency Function (mathematics) Mereology Tracing (software) Formal language Formal language Number Neuroinformatik Type theory Mathematics Quicksort Pressure Metropolitan area network
Scripting language Freezing Stability theory
Point (geometry) Web page Functional (mathematics) Run time (program lifecycle phase) Observational study Multiplication sign Patch (Unix) Set (mathematics) Mereology Endliche Modelltheorie Extension (kinesiology) Task (computing) Exception handling Social class Module (mathematics) Default (computer science) Patch (Unix) Software developer Binary code Degree (graph theory) Vector space Personal digital assistant Logic Radio-frequency identification Text editor Modul <Datentyp> Active contour model Extension (kinesiology)
12 (number) Group action Constraint (mathematics) Multiplication sign Control flow Counting Perturbation theory Mereology
Revision control Radical (chemistry) Different (Kate Ryan album) Bit Rule of inference Formal language
Scripting language Standard deviation Addition Standard deviation Forcing (mathematics) Gravitation Web browser Computer programming Social class
Divisor Interpreter (computing) Code Energy level Bit Figurate number Product (business)
Group action Perfect group Computer file Link (knot theory) Code Multiplication sign Mereology Formal language Chain Bit rate Operator (mathematics) Hierarchy String (computer science) Extension (kinesiology) Curvature Compilation album Computing platform Module (mathematics) Software developer Projective plane Usability Bit Incidence algebra Instance (computer science) Subject indexing Data management Process (computing) Integrated development environment Interpreter (computing) Compilation album Object (grammar) Resultant Spacetime
Pairwise comparison Dependent and independent variables Run time (program lifecycle phase) Run time (program lifecycle phase) Projective plane Cartesian coordinate system Variable (mathematics) Food energy Connected space Process (computing) Bit rate Bus (computing) Gastropod shell Extension (kinesiology) Regular expression Information security Library (computing)
Degree (graph theory) Module (mathematics) Multiplication sign Pattern language Quicksort Formal language Formal language Library (computing)
Bookmark (World Wide Web) Modem Formal language
Point (geometry) Standard deviation Functional (mathematics) Installation art Run time (program lifecycle phase) Computer file Code Decision theory Multiplication sign Ultraviolet photoelectron spectroscopy Set (mathematics) Similarity (geometry) Code Metadata Formal language Revision control Different (Kate Ryan album) Term (mathematics) Software framework Data structure Extension (kinesiology) Library (computing) Multiplication Descriptive statistics Social class Physical system Default (computer science) Module (mathematics) Run time (program lifecycle phase) Code Bit Instance (computer science) Formal language Subject indexing Network topology Revision control Video game Modul <Datentyp> Figurate number Quicksort Library (computing)
Point (geometry) Standard deviation Complex (psychology) Direction (geometry) Set (mathematics) Mereology Unicode Formal language Subset Revision control Mathematics Different (Kate Ryan album) Hypermedia Interpreter (computing) Data conversion Endliche Modelltheorie Extension (kinesiology) Independence (probability theory) Instance (computer science) Formal language Subset Type theory Exterior algebra Interpreter (computing) Summierbarkeit Pattern language Object (grammar) Library (computing) Extension (kinesiology)
Logical constant Code Multiplication sign Workstation <Musikinstrument> Mereology Unicode Neuroinformatik Formal language Medical imaging Bit rate Analogy File system Endliche Modelltheorie Extension (kinesiology) Error message Information systems Sampling (statistics) Bit Instance (computer science) Type theory Volumenvisualisierung output Pattern language Lipschitz-Stetigkeit Modul <Datentyp> Physical system Resultant Asynchronous Transfer Mode Point (geometry) Server (computing) Computer file Link (knot theory) Observational study Similarity (geometry) Heat transfer Inequality (mathematics) Power (physics) Revision control Escape character String (computer science) Operating system Representation (politics) Integer Mathematical optimization Module (mathematics) Operations research Dependent and independent variables Inheritance (object-oriented programming) Cellular automaton Interface (computing) Line (geometry) Cartesian coordinate system Plane (geometry) String (computer science) Catastrophism Window
SCSI Functional (mathematics) Instance (computer science) Mereology Formal language Number Type theory Mathematics Word Utility software Right angle Endliche Modelltheorie Object (grammar) Extension (kinesiology) Library (computing) Extension (kinesiology)
Functional (mathematics) Context awareness Group action Momentum Run time (program lifecycle phase) State of matter Multiplication sign Source code Parameter (computer programming) Mereology Computer programming Formal language Revision control Endliche Modelltheorie Extension (kinesiology) Error message Address space Data type Scripting language Area Module (mathematics) Standard deviation Mapping Key (cryptography) File format Software developer Interface (computing) Flickr Variable (mathematics) Frame problem Type theory Digital photography Arithmetic mean Process (computing) output Pattern language Modul <Datentyp> Library (computing)
Personal digital assistant Weight
Hecke operator Cycle (graph theory) Library (computing)
another body of so my name is armenian I
do lots and lots of and for many years at this point on most of you might know me from the fast framework which is and probably the most popular project image and as of some time ago and working on sentry with on like in commercial so the level of which is also came of divided community almonds most open source projects at its core and if you want to find an internet
this way and also dislike the size of the talk will be key you're on the bottom and hopefully also on the web site of the conference and so this talk to sort of the idea of raising a little bit of awareness of and help I actually works for us as a community and maybe how we can roll it to some degree and so part of what made me do it this talk I intend to similar ones the report was death and as he started growing more and more intricate involved with
more than that of the language race started out so
Python is sort of my home but I was use rust JavaScript Ruby many other things and and when you start using something come very often you are amazed by some of the things it does better than those of of what your home languages out but then as exercise using it 1 more you also realize that they also have problems but so I want to bring some of the experiences from other environments a little bit into the by community sort of and maybe so that they can do a better job at the wall and the language and is I think the biggest question is what is pi actually on because this question is like obviously it's the language that we use is that if you look into it a little bit more it actually turns out that pythoness whatever supplied filling on now and is a very important concept because he Python so that the standard Python interpreter on there is a language reference which tells you how the language is supposed to work and it becomes part of the documentation of the Python language but actually a lot of how need all program python depends on very specifics of the sea Python's over there and I will give some examples of this and why this is relevant and but I think it's important to note that unlike travesties for instance we do not have a language so a lot of what they quote that use happens to work more or less because it works on C 5 so many of us will experience that when we take our seat I've run it another of runtimes like type we encountered is not everything works exactly and then the sort of path taken for a long time has been to just make type I and other languages more like the 5 and but we never had a standard and so the 2 parts where this comes up 1 of them is the general language language behavior which is what happens when you add 2 numbers together in the 2nd part of the standard library and this is what exactly use the standard libraries also little bit unclear but but for more or less everything that's the important doesn't come from here is sort of the standard library and it also comes from the 5 and and usually also means that the standard library becomes part of our portal protein the language specification so this
is my 1st example of the Python code what does this do some it looks simple like you
have 2 values a and the multiple media at them together but what happens and what the given example what happens in JavaScript is the AT and T B are converted into value representations which are effectively numbers so and then added together and as you go to the standard of JavaScript or erratic must prove that there will be an explanation of how this construct works some but this is not JavaScript is a spike and what we all learn I think is that this is more or less equivalent to this like this special and the methods and but this is really correct and this is sort of what you might in tutorial depends on the torus a look correct and will tell you this action like this so if you get a class of the and then use this under under reference in the past self explicitly is the 1st argument which is sort of why you can't do but you can't all right the and operator on an instance of the sky explanation of given and but this is really correct that it turns out that there is also designed the under class this is equivalent to type or not and in terms of this multiple equivalent and now and the thing is that they are not all necessarily correct or incorrect because they all wrong in in explaining the language because none of actually happens if you have a plus b the interpreter will give you might put Fortis right those 2 values and uses the internal binary at operation and then if you go all down the that that that the whole forms of them on the road hole will eventually realize that there is 1 the interpretation in these interpreter of of what binary it means and it tries 1 of those 2 things it if it's an object is a number that we will try to add them if it's a sequence of will try to concatenate them on and this is this is something that nobody really ever upset because it's fun the most of most of the time is irrelevant so it turns out that Python objects are actually you have nothing to do with his under random methods internally for the vast majority of operations that we do that in the interpreter is a structure for all of the types and on the types of methods in these methods are in slots and depending on how the slots of set of these operations to different things and are and the reason why it matters is because this was a design decision made a long time ago and
everybody else has been forced to copy this like preferences and so friends is this the fact that and add operation can do 2 different things on on the type level but has very profound consequences and in particular what happens if the subclass something that's
already has a certain set up in the interpreter and you create a subclass of the in Python and how so in in particularly the actin under under at on an object it will register so if you look at this the 2 slots and only on the object to do and get it to do addition of them is the if it's a number added together and the other 1 is a sequence of pattern and if she ate your own under under atmospheric always becomes an issue that's kind relevant for the most part because that you can still do concatenation obviously in this method and but it's it's it's stashed away into the number addition part now but what if the subclass instance a list were edition is defined sequence concatenation and for quite some time there was a book item mother just type I or 0 just as he was also replicated pipeline but haven't his subclass of elites and yet at the on under under that method then sometimes concatenating these woods do your own method and sometimes it would do whatever was there originally the interpreter tense and under at will also the proxy into the of nation of ones of things and I think there's a lot of complexity in the language as a result of that and this is what is the state's no plus operator and is medicinal puzzle greatest when the language was created originally there was no standard ISO model and considered to interim explore 1 is called a number executable called Tyson and content and the correspond to those methods like kind of radical at number so the number particle and sequence content with consequences to sequence recall but actually it mapped onto the test the different but also with the other 1 is doing so high number at will attempt to add numbers 1st and then concatenate sequences and place sequence content will 1st attempt to complement sequence and then forward to adding numbers and so this is this does make a lot of sense anymore but it's still defines some of the the effects that we get the language them so why is this matter
i'm or does it even matter and the different ways we can look at this but I think it kind
in does matter and because of it limits us involving can actually do with the language in the future so so there is the Python but there's also pipe strife and right now I think was of those I don't know where the traces his point but at least by attempts to replicate every single quirk in that in in the language and attempt to be as compatible as possible to already existing code I and I I think it's cool that the type of people doing this but also at the same time it makes type a lot more like C Python for not necessarily the what we're not as gaining anything from this and so so wired replicating all the courts instead of cleaning up making by States because everybody wants to have high profitability and and I think this is the part where we as a community also sort of demands of the because if output as a run type I we rented willing to give by by chance now but then if you actually look into what this means for the future it means that it actually prevents more innovative language change changes features on and if you look very fine future work will present the look like the as I mean will just be the same or will the computers look so vastly different that we have to change the language and how so here is a small proposal like maybe we as a community can make the Python we use more like the Python actually teach people and maybe can eventually achieve a Python the if you have 2 numbers together it does nothing else but calling a special under under pressure 1 and this is trying to achieve consistency as the compatibility with was something had
before is I think this is 1 of the strongest man trust in the Python community as a very common story so in the same way as type I attempts to be as
compatible with the Python as possible and we as a community are at in building our ecosystem in very similar ways and the very strongly value stability ignoring despite freezing and how and and this is very well shown with packaging so on and on how many of you ever want to sit at the title but
an this whole idea of baggage being built through a Python script comes from this the and this entails was our edit eventually to Python and it's set up this
idea that you import a function from this 2 kills you call it it's called a set of functions and then if you run a set of 5 phyla dysfunction little magic and eventually end up with a couple so this is we still
do I just that now you set up close and if anyone has ever seen set of tools and it's it's it's an elaborate monkey pledged to this and and the original goal was to implement something called Python x mn would most communities in Python with some exceptions like I think so people might still do X i and users have stopped using x and but we didn't completely study using X we still use the some part of the IT infrastructure with some of the things we're doing nowadays on but the monkey pension doesn't stop with that of others if you use if you use a set of tools of the time 1 of the things that is editor of distutils was the idea that you could run python set of high develop in which case it was built by many extensions and put it into different task that would normally so that you can develop locally with a pipe package without having to so that all the time and this idea was later picked up a pitcher pit editor thing called it installed this all and and the way this is implemented so scary enough is it at run time and he had a set of tools temporarily to get his logic in place am and then we'll also want to catch a set of tools to build the wheels instead of x and actually I think even the guy who wrote the beauty is we'll commands that effectively and maintained at this point it's just like small little things and and I cyclist 1 port where someone actually monkey patches we ought to get their own stuff in place and I and we will bring it to because sensors we are distributing binary extension modules with a module called snake and which lets us to rest models for Python and it's a monkey patch for because it is real and so this is this is like everybody's doing this and see if the finer very common module also implemented as monkey patch to set of tools and and in our in our case snake is not just a market it's a set of tools is among the page to see if I which monkey patches wheels and if it ever looked like if you try to runtime introspection the classes there like what if you get and see if I had to a modules you run the monkey patch twice SIFT 2 subclasses internally to the default built extension command set of tools which extends the 1 from distutils but instead of expanding around this vector replacing it with its on it's really quite and this way so and we could have a bomb point realize that this is what we're doing and maybe I can reconsider and what this is also and I think similar to some degree the
communities attempting to replace or get rid of the chill for a really long time but part of the reason we come to it is is just that most of the
military it's not so much that it's hard I mean it's hot but it's only hot if you constraints compatible was everything done so far and is also the properly getting rid of your winter with a lot problem in getting rid of red counts in the group break everything and so the thing is we're not really good at breaking
from this this compatibility and our only attempts some of doing this thing was by 3
and went interesting on but it was very radical in some ways but it was fully not radical enough in others so if you change the language of everybody had to rules for the Spain of operating under the but then we ended up with more or less the same as we had before just slightly different unique among and and especially in country that all talk with limited again but but I think it would be interesting to see if we can then do if we can learn from this a little bit and and maybe attempt another incompatible Python version but different on this 1 thing is that if you actually look at
what the future of scripting languages are a bit like scripting language in a sense of Python JavaScript and some others are I think they're not going to go away
but they will definitely different and we can already see this that rising programming has become that anything that's a 1st class citizen in trouble script in Python and many others and now but you really care about is that it's the ecosystem and in addition to the cosmetic care what some standard model and
more whatever it so it was gravity people Python not to be standardized but it would not have been OK for transcript be standardized so the fact that there's a very strong transcript standard now and is what enabled a lot of stuff in the community people really like troubles for our notes and before modern browsers came along was very different and that there was sort of and a necessary step the committee had to do to actually come up with a way to standardize its which height must have a force to so I think it is the 1 to be relevant in 30
years would probably have to both a little bit and so he used some of the things we did really well this is why I don't
think prices going anywhere deep-sea
pi factor according to be readable and I think this is something that gets a lot of people interested in in and which because you can actually figure out what's happening the and I know from a lot of people that I talked with is 1 of the reasons why they couldn't interest as they could see you could very easily go to a lower level and figure out what the hell is actually happening I also means that you never really surprised if you run python couldn't production to not know what's happening and
if there's some really bizarre behavior it is straightforward to figure out what's what's going on and it especially also because we only have 2 compilation admit to the user and it super easy to compile a new Python interpreter
on so all the 2 actually modified the language itself and its it's easier than any other language activities and this is this is what makes a committee stronger because a lot of people are actually interested in in getting don't stuff into the language and this this is vastly different than for instance getting it change no military where they even internal politics in the language that make it hard to where the interpreter is actually a part of a Google perfect and sometimes it's not something to this and the fact that everything that has a compact package where can modify this you will get a lot of people interested in and also makes them feel like this is stable platform because even if commerce support would go away you can still take ownership of the whole thing the fact that we have this for still have to see extension modules meant that we could go into communities that all languages have a hard time going into specially as scientific computing and because the pipe developers themselves but never figure out what all the things that the language should be used for the because other communities could come in and adapted for the use in there was really from a powerful and is also what makes that very happy was 5 because you could say in embedded into an environment like that services of and and because we are doing such a terrible trouble package management and we come to diversion dependencies actions that we have a lot the rare and flatter dependency hierarchies than a lot of other communities to and and I don't know if you're familiar with chose the much but there was 1 of these things 1 of these incidents was that someone unpublished a package called called pet let which edit some spaces thing on the right side of a string of and you think that such a simple operation if someone deleted from the package index could never have an impact on the because everybody was depending on on left a string by some spaces somehow and deployments failed people couldn't get the new called up because the build Service tried to install this very boring package from the internet and and as a result of looking at a little bit to what else shows me this link and it it is it's really absurd in some ways and this the package package called is rate and which checks if an object is an array of size and 1 liner in am but because everybody because you have 1 dependency it uses of to the that using it is almost impossible for you to have a large travels project and not also depend on this is a repackaged and while the code in itself is a one-liner come and on this like how the kilobyte of license file that comes with it is that uh chasing document which describes what it's doing this documentation and so actually download like 10 kilobytes of data and annotation the jobs go to read as a whole is downloading is is erased somebody makes sense of the terror vitamins and we're not doing that
our energy that's good because it makes everything look more predictable and when we push other security updates in the library it's very likely that the entire application you will see the security updates was his job was to might have to push intermediates dependencies as well it's a very common problem that we see uh using trust is that there is so hot now pick dependency can that if you have a dependency which in itself is a dependency it might be that that depends who doesn't get security up it just because of the bus can too hard runtime introspection I think it's probably quite expressed feature the fact that they can look at what it's doing so there there's so many nice extensions to 5 weekend connective process see what it's going to look at the friends and
century the company that the work for the the entire over the origin of the project was that you could add and crashing Python and look at all the local variables that we had and in stack trace and that's a really powerful and I would never want to see this go away and it's very painful to look at shell scripting comparison by there's nothing you can do is when you composite regressor rate expression composite that face the extent of runtime introspection and that is some of the things we could
probably do to make it happen that to make our language more future-proof in the future and and I feel like there's really only 1
thing that we should care about is making it easier and simpler as the language course instead of just making easier and easier libraries and people independently laugh simplicity and then laughter using libraries that are they look simple to use and but a lot of those libraries that looks simple-to-use internally to really crazy things on that references the very popular requests library Python and there is use the vendor and I think it's for those to some degree vendor packages for the way in which it did involve monkey patterns says modules and a bunch of other things and that that sort of stuff works on and the reason it's going that many other was also doing that is because and it looks like that's 1 way to think he's and but then you don't really see it until it breaks and then we could have a mess this time actually figuring out like wire rice everybody doing this can be just make a simple solution for this problem so I want to bring some ideas from other
communities in the Python and maybe as a community as a whole we can figure out if it can adopt this so the tool and language is among the
use as a reference here is is JavaScript and which is it's the world and and rust out of personal interest and also because it's 1 of the last thing which is that appeared and as such they had the highest chance of learning from anybody else's mistakes and they learn from everybody else's mistakes cholesteric mostly learned from some mistakes which is great but I'm it sounded Bethany also picks up from other languages so this is my favorite topic packaging and
modules and Joseph has 1 so actually I used a lot of structure packaging now under would never use it as a reference point to run from but there's something said it has done really well 1 of them is an old description of a package is in a file called package trees which means that this is a static file can use generative generated if you want but you can also loaded at runtime and figure out what it's doing an independent you'd get the rest comedians similar thing was a applied Courbet along which is like in any file but not really but also defines everything that is relevant in terms of metadata and in terms of insulation behavior at the library and yeah we don't have time because we expected codes to install a package and we do generate some metadata but it's generally not available it's very slow to load so and and by he never really was interesting package metadata but actually fetish metadata thing is the most important thing and the fact that we can access your metadata at runtime gives roster shows that a lot of possibilities to make much nicer decisions that we can do and so when since I think it can figure it out figure out its own version that's a simple thing but now but it can also figure out its own dependencies which means that in the rest and in joules per if you increase their require dependency from package that import codes or you can make use of rest the linking codes can figure out what your own dependencies are to give you what corporate version of a library and so this for instance makes it possible for a package in JavaScript to have its own left that function and where's the other package has its own and compatible left that function and but you can still work because this don't get local references and and affected have multiple versions of the library on has its ups and downs and mood and now leaning towards probably has more down has ups and we some negative experiences made but it's not like those committees of learning from this particularly in Russia for instance on and getting shows community as well there's no need to talk about maybe we can find out a way to spit dependencies in the half when a cop depends on the prior dependencies which only our internal to a library and some of them a public and so that for instance if you have an framework like flask and an extension of that it's guaranteed that the extension of flask always see the same class as your user code and so these communities are learning and we can also sorts incorporating some of what they're doing and where we are now is we actually moving towards that I think I'm very few people still runs out of time so I think that the country could give it a set of pipe at least we have the infrastructure in place to build heightened wheels without using this entails a set of tools at all and on a wheeled once it's being created is is largely just as a file and then we can use different tools to generate and because it is already a separate school it could be extended to support python packages which I have nothing to a set of tools at this details on but we are still away from motivation tendencies we need metadata indexes which there is no good API for an hour and also it's not just that we don't have a good way to access metadata and we also have an import system which doesn't support and motor versioning for various reasons but I think it would be a very realistic way to move towards a completely new packaging ecosystem and with less work than we currently collectively spent on trying to make what we have to work and because each of the to look in the in all the packages that we have all the issue trackers there is so much pain and suffering in there and that doesn't even show you the individual suffering someone does when when they try to make a set of tools working new and exciting ways I think it was about a month of my life doing nothing else but trying to make roster work a set of tools and I'm still unhappy high so maybe maybe we could just call this a little bit and then build a different packaging infrastructure and a few like the packaging comedian partners already going this way trickier would be to actually make a
language because nobody actually wants to
have different languages and some on I thing everybody who worked with quite long enough to know knows that they would try to simplify things so there's no point in standardizing we have currently on and Joe scriptures standardized what they have because the language was a lot less stuff in there than in Python and when they figured out that some of the things that they had when possible to make fast the actually change and the 2 to go away some features of the language and and I don't think we as a comedian wants to move the direction but maybe there is actually something that will get us this way for instance this like Python which clearly has had its own experiences with the complexity of the language and there is some patronage which has these are the difference between micro Python and C and maybe if we get some more like C Python slightly incompatible type conversions we will actually find a common subset that makes more sense than than we currently assume the subsidies which is the entirety of the 5 and so now if you like maybe pipe I would have been a little bit more successful by not trying to be the but trying to be more bold trying to do more exciting things that you want to have a good reason for it for doing this and and I think the biggest problem that other Python versions still have at this point that we is applied media is this idea that in if you go to the documentation that public built an extension what has use this kill set of tools to build a Python extension model and nobody ever told people that this is wrong and that our traditional should really say that unless you really really know what you're doing you don't do it the sum to its that's so this like makes no sense based some good because there's so many negative parts of a building a pipe extension where there was a Python API and you will suffer this for a long time and and there's so many better ways to do it like see if I we actually build independent library Utrecht to consumers from Python and you get away from the idea of sending Python objects between the new world and the other 1 and now but that there was no whenever anyone Wikimedia it's still the idea that will kind such models and everybody still traceability and so maybe should just put the the like there are alternatives to building supply the extension models because once we get away from this we can actually liberate ourselves and use more interesting patterns interpreters now this is my favorite topic
because I think we did it completely wrong and the more it is other languages the more am convinced that we have many could completely wrong and now this is what rest distilling
use UTF-8 everywhere and everything it's easier and where they can't use UTF-8 because it's not possible to use a thing called double 8 and which is evolving transfer and encoding format against and and this allows them to be compatible with you of 16 hours users to against on in in places where they have to interface with the world that is not completely a unique other where on windows in particular and any chance that the the entity did W T F 8 also came up with Travis which for similar reasons as Windows decided that and 2 bytes per input character is everything you will ever need it an and so they found a new and innovative ways to deal with this problem and it just embraced the use of fake everywhere and we should the 2 book but it's very hard and there is a fast it's hard to because we use things differently in other communities are and but the benefit of using you fake everywhere is there is very little getting about encoding so you know that if you open my file on Titan 3 as a uh and unique what to read modes alright out it's not you different but thought it guesses its encoding it's UTF-8 on most of the computers you have used but if I station to my server catastrophe because it guesses the encoding from the file system and it falls back to ask because I've ever met and this it was changed recently by the to fall back to ask if it could figure out how and rust points and decided that instead of trying to sure on stuff into you a type they will build a separate string typed interface with the operating system and so if you for instance use the unique with the PIC Python 3 to interface with the file system you will get unique of strings that unless it's something called defining because it's invalid the walls again unique because string back but contains characters which are invalid in a code so if you pass on the string long enough eventually will break in the same way as a broken Python until I'm just much more confusing error message that contains surrogate and and I remember that had this compositional points in like 5 6 years ago that the reason we don't want to use UTF-8 is because everybody and actually benefits from an or not everybody but a lot of people actually benefit from morning and living in the basic thing which means only 2 bytes per character and because for instance in Japanese languages and that might be a more efficient representation in UTF-8 and how and this also spot part of the the idea that the parents really a string will attempt to stay in 1 which have 1 byte for as long as it can then it will operate 2 bytes until it nor can and only when you have characters outside the basic that to 4 bytes per character on how many turns out as of I think of these 2 is 4 years ago this optimization was uh than make more sense for a lot of applications because people use images and emotions are way past the these things so that you're not is really absurd situation where the render attempted integer until it starts cells with HTML code this fits into ASCII it's 1 byte per character history model that further you the 1st input character it re-encodes everything into 2 whites and then you hit the 1st analogy because I'm left a funny comment and it does it all over again Was 4 bytes per character and now the the the world has evolved to a point where the code is now in use more than for the 2 bytes per character and so could we moved to this idea of having you deviate everywhere and but we could very easily just have to give up the idea that you can act as a character in constant time and can slice strengths and but we love strings in Python so I think that's a little bit in the way of doing this on but I'm not fully convinced that the fundamental the idea of representing being able to A X is a character in constant time doesn't make any sense and it's not useful and also that we don't string slicing and but we would have to start moving us away from doing this so that they could then start increasing give doesn't on encoding and we have very far after and I really talk about
exact models I would love to get rid of them as much as possible use more see if I have and as a result is less less lip i've if you try to build a c extension in Python on and you want to distribute it to other people using linux there's a thing called many Linux 1 it's a doctor image and it contains a very very very old version of samples I think it's in the spike create a mind sold the reason why you build on a very old Linux's because then it's upwards compatible today what modern exists and it's very painful because you come modernist cell in this book a container and a weekend builds as the extension Python and on and they're all linux and runs a new Linux so inferiority it have to do is make 1 extension for was 1 extension for Windows 2 extensions for the next 1 will fit in with what a 64 bit and and we will be done on but because everybody links against let Python you actually have to build 1 for python 2 . 7 to byte character Guinea cold pattern 2 . 7 4 by character inequality multiplied is for links study that 32 bit and 64 bit was 10 windows then you have to do the same thing for patterns response rate through forts for about 5 to 6 if you're happy and you can use this the lady I eventually you don't have to do that to unique putting anymore it just at someone but to do the release of 1 line extension module that people don't have to compare themselves you from have to do like 21 and 24 different power also wields this is excessive and the only reason is
like if you build SCSI module you can get away with 4 on and this is a benefit that was never really understood by the communities on now you know it's there 1 you see if I can but is it really is the change in change to move towards this year finds that such models
it's impossible for a lot of libraries like number height for instance would not be able to move to see if I flies understand them or anything that sense Python objects around and but for it if you want to make your uh she's parts a fast or if you want to do something where you have a utility library written in some language and you want to use the functions in Python where you don't have to pass the interplay objects around it's very possible anything it's much easier to use as well on but because the thing everybody was pushed to words right extension modules people that C is the fight Michael and a better solution on the last part is something of we should still from somewhere else and Linda some type annotations on I
was problem there are is a library for Python we can jobs that we can take just quote any common do stuff with it and generate other jobs were cold and is actually turns out to have a really profound impact on the job as community because you can use more modern language features an older version of Charles and because it was an accepted as being every possible path of development there's a concept called source maps weekend still figure out where the error was the original untransparent hold on and is actually made it possible to target new versions of transcripts on very old 1 times and and maybe something like this will also be a notion about community to use things like and uh using functions more and more prominently in all the versions of of maybe there could be a thing where you can Transvaal identical them patterns 3 almost an hour and then obviously had scripts and flora very popular extensions photos to to get static typing in the I think they're moving this way with a putter typing and patterns read but we never really embraces as much interest committed and also it's it's very common now in other communities to just run the program and formants according to the 1 true style and there's no arguments about it and I go doesn't even let to compile coats and as it follows the naming conventions and we would never be able to go there because the standard library has like 20 different naming conventions but the fall quote could start to embrace the idea that there is this 1 thing you run maybe there would be like a Flickr 8 fix Michael style and this summer camps in Python to Buddhists do this but there was 1 thing the lactose that and if you use this 1 tool to formative source codes according to some standard will complain about the article of this tool of it being different because the Linda was written by different people than the former the answer for this but great but I think this is a 1 of the more realistic chance that we have of of of moving the language into a new era where we can agree on standards and stuff yes so what can you personally don't abuse the language less and don't do stuff like this
and there is so much quoted like gets a random frame and assigns look variable and it's like holding than yourself and there's like soap interface for a very long time just modified the classical through as his get frame try to not subclass wilderness anymore and there's only suffering and stop right enunciated fight if if you can do so and just stopping Clarice's models because if the stopping Clarice's modules maybe we can make a really cool impetus them which lets us to motivation appendices 1 of the biggest mistakes ever made was that people addresses it's uh types by the internal about the mean and and because Cervantes if you import and if you at runtime wanting ports and module it used to be that the on the input function was so impossible to use the area but it under under imports whatever they want to import ignored a return value and then assume that what the importance of these actions as modules so they will do and imports food Bob you know return value and then returns as modules for the part and this obviously want workers motivation dependencies because his modules would have to have different keys and was just me get assigned state that was copy pasted all over the world and I really still doing this 1 but awareness is the 1st that if a node not to do this to the things anymore and maybe we can move the language and with that if there's still some time left Celtic Christians the yeah is actually
like if someone's have presented some microphone hours of work the the ability to questions such
as those of the the all of this kind of thing that you have a case I would like and so the question is if you cut the weight the of with become less nice to use because a lot of the
ecosystem actually depends on the text like achievement and and other libraries and probably the answer is yes if you take it away completely you should never take away people's ability to experiment with this 1 but it doesn't mean that everything has to stay high forever by giving is nice the heck around temporarily to make so that was nice and but instead of continuing the cycle forever we could just do it and select there's a legitimate need for this maybe we can do it differently hi thank you