Perl's Syntactic Legacy

Video in TIB AV-Portal: Perl's Syntactic Legacy

Formal Metadata

Perl's Syntactic Legacy
Using the future to improve the past
Alternative Title
Perl - Perl Syntactic Legacy
Title of Series
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date
Production Year

Content Metadata

Subject Area
Area Group action Software Multiplication sign Quicksort Evolute Twitter
Process (computing) Floppy disk Website Proper map Fiber (mathematics) Form (programming) Wave packet Formal language
Particle system Uniform boundedness principle Implementation Metamodell Velocity Multiplication sign Projective plane Right angle Object (grammar) Quicksort Social class Product (business)
Profil (magazine) Projective plane Core dump Quicksort Vector potential Number
Server (computing) Group action Digital electronics Momentum Run time (program lifecycle phase) Multiplication sign Set (mathematics) Graph coloring Computer programming Formal language Product (business) Attribute grammar Mathematics Object-oriented programming Fiber (mathematics) Eccentricity (mathematics) Social class Physical system Module (mathematics) Information Key (cryptography) Metaprogrammierung Projective plane Constructor (object-oriented programming) Electronic mailing list Attribute grammar Bit Instance (computer science) Flow separation Recurrence relation Type theory Arithmetic mean Word Process (computing) Hash function Personal digital assistant Fuzzy logic Summierbarkeit Right angle Quicksort Object (grammar) Bounded variation Physical system Abstraction
Prototype Profil (magazine) Projective plane Bus (computing) Line (geometry) Arithmetic progression
Point (geometry) Group action Profil (magazine) Quicksort
Point (geometry) Bit Quicksort Software bug
Cellular automaton
Point (geometry) Suite (music) Complex (psychology) Real number Weight Disk read-and-write head System call Rule of inference Revision control Prototype Sign (mathematics) Bootstrap aggregating Profil (magazine) Software testing Recursion Mathematical optimization Social class
Prototype Profil (magazine) Multiplication sign Order (biology) Core dump Bit Distance Physical system
Adventure game Euler angles Water vapor Mass Recursion Mereology Variable (mathematics) Table (information)
Presentation of a group Logic Core dump Coma Berenices Right angle Student's t-test System call
Revision control Process (computing) Projective plane Electronic mailing list Sound effect Punched card Formal language Product (business)
Point (geometry) Context awareness Run time (program lifecycle phase) Multiplication sign Abstract syntax tree Core dump Twitter Mechanism design Type theory Process (computing) Personal digital assistant Endliche Modelltheorie Quicksort Formal grammar Extension (kinesiology)
Module (mathematics) Axiom of choice Suite (music) Mobile app Multiplication sign Core dump Software testing Quicksort
Point (geometry) Slide rule Implementation Greatest element Multiplication sign Range (statistics) Source code Mereology Event horizon Field (computer science) Software bug Mathematics Profil (magazine) Core dump Endliche Modelltheorie Recursion Module (mathematics) Focus (optics) Touchscreen Mapping Forcing (mathematics) Shared memory Planning Bit Variable (mathematics) Electronic signature Hash function Right angle Quicksort Object (grammar) Table (information) Surjective function
Point (geometry) Complex (psychology) Greatest element View (database) Chemical equation Theory Set (mathematics) Bit Mereology Element (mathematics) Theory Word Phase transition Universe (mathematics)
Asynchronous Transfer Mode Group action Building Multiplication sign Feedback Mereology Revision control Data mining Prototype Arithmetic mean Number theory Core dump Whiteboard Endliche Modelltheorie Quicksort
Revision control Direction (geometry) Number Wave packet
Multiplication sign Core dump Workstation <Musikinstrument> Electronic program guide Summierbarkeit Online help Disk read-and-write head Macro (computer science) Power (physics)
Area Mathematics Word Projective plane Planning Mereology Electronic signature
Point (geometry) Slide rule Implementation Beta function Java applet Code Orientation (vector space) Multiplication sign Decimal Combinational logic Real-time operating system Food energy Theory Formal language Mathematics Prototype Root Profil (magazine) Natural number Term (mathematics) Core dump Software design pattern Metropolitan area network Social class Physical system Area Default (computer science) Standard deviation Inheritance (object-oriented programming) Key (cryptography) Data storage device Sound effect Line (geometry) Electronic signature Software design pattern Uniform resource locator Process (computing) Personal digital assistant Self-organization Right angle Pattern language Figurate number Quicksort Row (database)
Point (geometry) Building Supremum Service (economics) Code Multiplication sign Physical law Perspective (visual) Computer programming Demoscene Compiler Programmer (hardware) Goodness of fit Process (computing) Programmer (hardware) Spherical cap Personal digital assistant Hacker (term) Core dump Computer-assisted translation Arithmetic progression
the to is also in the target areas like OK and so and so the title stock syntactic legacy time using the future to improve the past um some of you might also the gladius and was sold so obviously legacies the title of a lot of you are probably thinking this definition the old software all that we like to make fun of Perl 5 being old moments on but I was actually also thinking about this stuff and OK so you know Larry is more than a pro 6 of Perl 5 has become sort of our collective legacy we all use it and we both Thomas use reaI some was done of all it's also Perl 5 is ours nowadays and actually I wanna correct something new on Larry is that she can Henning step down from the future a a lot of the new features in Perl 5 action come from Perl 6 and so slow correction I this isn't that what the Patriots freely back and so on legacies actions subtext of this talk on as I go through all ball point out some of the stuff there but I want you to sort of dig up legacy stuff in there on what this talk actually more is about is about the evolution of a design and in the slow breakdown of my own stubbornness I and you know it that right there is sort of learning but what is learning other than the act of realizing how don't bird the present you realizing how dumb the past you was OK when you learn to recognize that you can learn from your mistakes so it really quick you live data about myself and that's my CPN ID of the node and so it uses days might get hold of my Twitter and it but it's I I got started in this racket
1998 I'm I build a website for fiber dollars which is 726 thousand 74 cents if further we translation into into 14 knowledge and and I actually did deliver a copy of the website on a 3 and a half inch floppy OK In 2002
I've got a job learning Pearl and at 1st I really didn't like it no offense Larry and the but I do like and I kept trying to mold it and twist into the other languages that I liked and and then access step back then and I realized wait a sec prose really really flexible I can actually make it look like job I can program for training for all I can do all these things because Perl so flexible and from their proper form of pop and I contribute 1st projects in
2004 yeah and shortly thereafter maybe 1 or 2 the products after was actually a particle class traits which I did with Curtis and and I used you're should probably I realize the they you're probably the 1st people on a pro community that actually interacted with online so all his faults the could driven me away he didn't and but class trait was implementation of the roles paper which was the paper that inspired roles in our object class trade is a trait paper which expire roles in Perl 6 times so I've been hacking on so the metamodel we object models of for wild on in 2005 I got involved in the
pubs project which was an attempt to sort of right of Perl 6 in Haskell on it was a lot of fun it was a really great pride of what velocity and when things I'd spend a lot of time there was working on the minimal so really kind of fell in love with uh with Perl 6 objects which when I went back to Perl 5 I didn't have a
so I wrote moves on and I was about 2006 I then in
2011 I start a project which is what we're talk about in this talk I started a project to try and take some of the learning so we had from use of things it went well and then go well I'm and also to take some of the you know even more ideas potential from Perl 6 to actually try and bring those into the profile core and see if we could actually sort of upgrade the the minimal number
1 who here knows what amount businesses word there we get some people but not everybody so quick review on my mark is based in API to these things OK see your classes your method your at tributes you're instances is everything makes up object-oriented programming and important note to the upper case so the big industry in lowercase class and upper his class upper case class is the class that represents classes words Lottie's classes essentially an instance of that so that's an important thing your mind also too early to describe the business on use my mom asked me what would you do then this is what I teller and an and then she doesn't bother ask me more questions to have the but if you think about it it's an the mop is an abstraction used to build Europe is abstraction of a system of abstractions that objections is your class your methods other things like that that you then in turn used to build your abstractions which your programs in your classes so did very very deep very abstract Marie manner but it's a lot of fun on some of you may or may not know this but Perl 5 actually has a built-in market already on this syntax can be a little awkward times but the fact is that it it is a mark there and you can really can do this circuit not I'm sorry it could the then of Miss wary so if you can actually do a lot with this and we had to build moves on top of this we built several protest on top of it so it's it's pretty powerful it does tell you a bit awkward it's difficult to read and things like that so and so anyway but I sort of project called P 5 Mt just because the fibers and I so the thing to differentiate around on get help 1 and so we call that that here's a basic list of the goal so we set out with a base set of goals we want to accomplish the details of it you'll see gotta get fuzzy along the way but these are the basic often limited in the 1st thing 1st and foremost 1 of things addressed most insane about Perl 5 is there's no way to declare what is going to be a class so the idea of a class attributes yeah fields while sorry you right recurrent new momentum and and if I'd only known unless to and so but there's no there's no nice way to to declare your you're you're attributes and use lots some so I wanted to bring that into their common Austrian example why that's really important the classes and methods and packages and saw this like there's no distinction but they're kind of is that all kinds of how users things like that that can be confusing especially for new people coming into language special people awfully toward package meaning something entirely different in other languages eccentric cetera role composition so 1 of the things that I think was 1 of the biggest successes Adamou's was a user roles and and and we've sense had other modules and been written and built a role tiny things like that to to bring it all along not with moves on but basically what it 1 more successful features that we had and it's actually very important this distinction becomes very important when you're doing things like all composition I'm so it may be less important in other cases but certainly in there are many introspection API I really like the ability to to look at look it's what's going on in there and and get some introspection yield you know what a metaprogramming with that and stuff like that so the the type glob API can get very messy we do that so it's nice to have a nice clean object-oriented and then sort of last but not least as a thought well we should also maybe improve the objects of the your syntax will but this is allow research borrow from process and so quick of current through saw what would what would it could look like so you should prefer class from that was uh the initial proposal listen Benson changes in some tweaks to this roughly gives you the idea of of the initial worlds very very much a process because we stole a lot from them and for that so clear things here packages of their classes are here OK very different you know the different there's no ambiguity sums are they sums are the methods I don't know for your you can differentiate them except for Perl doesn't give a shit about this you can still call themselves if you want if you don't put it there you can so colors method so as much as this will market it 1 action making distinction here very clear it's a method there's no ambiguity the instructors we all right on constructors why we constructors this from has no idea what were actually putting in a class OK this goes back to attributes the ability if you can define these out there then the will construct you don't need 1 the the the the the runtime actually figured out for you because it knows all the information it needs know and lastly in this 1 really is because he obviously knows the whole 50 % might spill a way might not this you cover have a hard time the spelling of I would put a C there you have it on what no feelings in their classes the hash keys on and is very easy to type on that especially using a lot you doing everywhere and you're in a rush and production servers down or or something or something something 1 of the key things about the proposal that we have put in there was 1 of these actually lexical variables and or some variation lexical there the idea being that that's compile-time checkable so there is no more typos they're gone because it's a compile-time check if that if it's hasn't specified already we don't see what I know and Pearl naturally captures so that was a rough bits of our people of my proposal so here's the story of the Knight so we started out on
a journey so we recommend pictures yeah some it didn't look that bad right it's just
just follow that red line it's or it's not reveal here within a few days we had a nice
prototype but you know we were starting to get pretty far away we we followed were making progress we think of
a few co-conspirators along the way people gather on on the project we can going we started getting
higher and higher and higher with this OK we're we're doing good we're getting there things started to get a little
rocky and we ran into things like the fact that it's pretty much impossible to you can you can dispatch anything other than a package and bus reference in profile it just it's tricky but thankfully along the way we run
into guys like this would offer there wasn't every once in a while and we apply tell would get
various places but the action getting really really really far away from sort of the base of profile on and
reaction to step back you only halfway further
out special reimposing the that's what
really really imposing starts but almost made a
little scary I'm at this point but we reached
the top so we celebrated and we celebrated
and we celebrated we celebrated and many really
sure what happened at this point but then we must must celebrating I then the next
day we will go we sort of have a little bit more the and this is she took this picture because we had spent so long for finding the bug and I wanted to just immortalized because it was such an evil little book OK I will give you the exact details of it if you want to know you have to get your I this but
the thing that the yes it is a challenge mn enough you know somebody else so I think that the thing was is we managed to get all the way to the top and we didn't realize that the of them 1 was pretty bad so so we had it was what we got there and was good and and as I mentioned this is so that Merisel
stretched out because of cell and the also pro longer that you put on a Hackathorn us in practice on it was also it was a lot of fun and Solomon watches talking saying we Intel enough people by that was me coming so if you see solver the buy him a beer for sure so
anyway back back to the actual story on
so the 1st version basically suffered under the weight some complexity OK we were having a lot of fun which sometimes but then sometimes a bad thing but the bootstrap was like ridiculously pedantic it bootstrap along the way tried not so all these various places it was really really really tricky to understand to the point where if you walked away from it for about an hour you have spent 4 hours to get your head back into it in which is not a good sign we had strict metaclass incompatibility they amino America's incompatibility is right exactly what can really care it's really not that you deal so we had a mock that was bootstrapped with mild we had many mark the bootstrap the real more often than they did this in and that was actually really awesome if it was just like a PhD we're writing for some class it was not very maintainable on and the key things was that this was done about what we like it or having fun we focus on testing with reward the real world data OK that's the 1st rule of optimization which you testing in real world data it's also the 1st prototype became they make you testing things with we have a huge test suite and none of it actually tested recursion recursive method calls and now also thereby was initial before is if they've been work on or explain why a 2nd and and also to we can Ponting idea of like how will this integrate with with your standard profile all classes we get same will figure out will figure out will figure it out and we get to final realize we have no but how to get there i
n the the the idea in a lotta ways was to try and build a system that did not have to touch much of the legacy that was in profile but for the simple idea was that it's very complicated spaghetti issue at times I but the fact is in order to keep that distance we ended up having to dig really really deep into the core profile just to avoid some legacy we end up having to go in some of the most the the the most Sangli bits of the legacy and we forgot the
1st prototypes always so the first one way always and in the 2nd row per
that's never used at 1 end and they I could so that's what that thing was we had the we had the re recursive methods and we're trying to inject in these those those lexical variables for the attitudes and including itself and there we're trying to inject them with Pat Walker have water really confused after Wilander started to say well you gave me something I mean something else I but don't know a it was a learning experience I'm an an as as all part will be and but in the postmortem of this we actually started to really
think we a pretty big mass on the end there was a real question there that we were really interesting were really thinking with who the hell warming maintaining OK so it is really fun complicated interesting etc cetera cetera but it was just it was difficult for us to even continue on forget about dumping that some people at the and I mentioned required a certain of see that's what we need to talk and adventure but so so as you add to this we read this myself and my co-conspirators we we we love talking love discussing based incentive table for a little while and see where we go and
the next step in the road uh because once you start out here so shouldn't even be in court the next logical step of course is well let's is rewrite the core so the this logical right
so at the Approaoch up i'm because you can do things like this feeling a porch ii Liberia hyperbolic presentation and which are basically called for the idea was let's let's let's experiment rewrite of pro-poor and that students scholar to which was and I was gonna call it layering but IS Larry news like these so what he suggested let's call it
no so we call that move on now 1 thing that I want to do a project was we were I have a lot of fun on the punch project and punch product was optimized for fun OK we never made it to be a serious version of process and we just wanted to be an experimentation pull of a lot of it was for Larry so very connected passed out some language features of effects so on this sort of take the same approach and see where we can go on several people broke me you
were skeptical about this they they they really familiar that idea and this is the wish list but
hey this is really simple these decreased reported and right it's not that hard and so I had to start hacking and stuff like that 1 the 1 scholar in case I need to get a job at Twitter something I and but at the same time I was doing the research because I was going to talk about and I was trying to see what what what what is the actual impact of all of us the the this is seen in the
when you get rid of excess you might as well as heuristic OK as much as that sort of is a painful reality it is is reality you can pretty much you can guarantee that just but every of every CPA model you touch even if you think of per pure Perl somewhere somewhere down the way of something that maintaining directly accessible directly relies upon the I API as the inside of Pearl OK it's it's it's it's it's interesting to always Langer back into their into some things were talk about getting rid of and a bottle of olive is evil it's it's useful in some context that is generally evil Nogueira that use of the BP up well here I can you get rid of thai everybody can agree ties sort a slow weird quirky feature again useful when it useful really about you most real-time on you're type theory DTI can without DVI not exactly I got it right so they go somebody have as many rejected pleas it yet among the rumors over there mad so at this point really
basically running into the syntactic legacy OK so much of of CPN which is which is sort of our our killer app of their killer feature so much of that was written in what what we might now called bad features or warming people poor choice of features but at the time made sense if you sit down with 2 months and talk about why he chose of tie at that he has a really good reason never done it but that he has a really good reason why if you a you you may seem very quickly run into this kind of stuff on core modules that are really important so
despite all that I still can act on so this is actually a test suite of moles of at the end of uh yes North America 2001 I n and actually it was that we had we all sort of stuff going on but we totally moved way beyond the possibility of being bring back in the course and but was still fun lacking in and I probably would continue if not this talk Have any of you watch
this talk on you to receive top or OK so P. Martini was 1 of the was really a lot a lot always referred to as long as the catalyst behind a lot of the of signatures he kept going he kept alive he didn't actually he was an active person who did the final implementation but still it really was it was him that kept it going kept the discussion going and actually arrive at something force the arrival something was good so I actually said in this talk and I was pretty hung over but I still paid attention and and I was impressed by a couple things that people 1st he done the Akaike apparently signatures of the plane since 1995 we can get around to its own OK but there was a specific things saying there their planned feature in the future people also and the nice thing about this talk to is hidden makes technical stuff we also talk a lot about the process of of getting a feature in in an oppressive going to provide the problem for on and these are the 4 broad objections and he goes are each 1 in detail so again what's to talk you wanna see it the for but what I wanna focus on is this because I think this is a great great sort of idea and it's not something I would ever have thought of repeated acts explained and explain it is basically you put a feature pro profile a couple people use it needs an experimental teacher whatever eventually feature goes out there people start using CPM modules stopped for while you start on the CPA model the long tail here chances are this actual release doesn't end up in in distros Munich's distros until maybe 2 3 years down the road so at that point know people started to put some bug fixes together things like that are we even thinking it's a bad idea is the main body decided the about but now it's on every Linux distro out there and we're stuck with on and then also to the idea of again who's can maintain this stuff you through a feature in the new left who can do it so it's important and Peter really expanded on in in Brigham I detail to say like you have to really think about these things not just the technical aspects but the social aspects and and and the sort of a wider range of these things on the then went on to add to talk about the implementation and things like that and this region is just him internal how weird things are and would I was really impressed both with the homework that he'd done the amount of time he spent waiting for P 5 P interfere in a lot of stuff on but then also we got into the details of the of the core I realize how little of the war I really understood and so I I took that with me and
in n on the way home in the airport I started to think or maybe I should try this again and because I saw peak and and really inspire me chose so the 1st thing I wanted to do was to make sure that the the same mistakes last so started with this part of what are the key features grows the whole lexical variables so what can I do this in a way that doesn't involve and have Walker that involved also to craziness and and screen is instead of trying to design it so from the top down like this is what I want how am I gonna make it a 2nd come from bottom up to start thinking about that like seems to think about that old pro and try and come up with how how can I what what will be the D. sugared syntax for the and so the 1st thing feel hashes of the 5 10 right that is so 5 10 I mean about Phil hatches and while FIL ashes were sort of put in there for the the inside our object idea and what they do is they basically register an ID of the the the hash you have in there and then you can use it so in object you have to explicitly destroying have destroyed it cleans out of you're you're you're you're inside a hashing feel has does it for to not use so I thought OK I will use this technique a little bit yeah well you don't you everyone would be inside of me because I variable magic variable magic exposes us in a corporal feature which are the magic the tables which are basically you can attach these 2 variables and they will at certain events and so the variables it'll fire on other things it's also weighted to pass data on this what you do with it on the pro side roughly maps to the c-structure create when you doing internal so and and so this is how with sight objects you get out the appearance so that that's great but of course it's copy so any change them make their work work that's where the magic comes with this castle you're passing in where you're actually storing it an instance so that a lot of such that data in there and a casting onto the variable in this chronic crazy weariness that had in a slide so I could make a on that crazy when is basically ensure that income except that variable because the the lexical variable we'll actually right back to the source so in this work so it worked with recursion which was important part because the technical I and so if you think about this it's not that hard to move the to move to something like this OK it's just really to to it in the sharing of this kind of syntactic because we just basically had a method preamble here that would have to inject into the method and then we had to basically make that my field hash stuff look a little bit nicer OK so to go from 1 to the other was to world didn't seem like it would be that much stretch on so I said the airport hacked on this for a
little while and it was really a different approach was going from the bottom up the and that was really he would have started have early successes I don't say a word to anybody for a while because I want to make sure that I wasn't missing hang in the same way I'm Ieaving did later add some of
the syntax into it and I used to build a clear 1st and if anybody views that don't know what that means in the middle there of but we again we're trying very carefully to to very step at very slowly and received by this point had picked up some co-conspirators on for the things that we want to make sure that we did was keep it simple OK this is a fair recording on on but the funny thing is is that's not really what he said that was summoned paraphrasing this is actually a set of would you really is not that simple but if you think about it if you're trying to basically come up with theory for the grand no to relate everything in the universe you're allowed a little bit complex I'm so I try to keep this bounces was something I try to keep in my mind throughout the whole this this or next phase in Part I was I need to keep their balance of simplicity and but I need to allow for complex words were it's necessary the other thing that we tried really really hard to not make the same mistake twice was the using real-world data and so so very early on
in the reported plaque because plaque is actually it's a really really well written model by me dollar on very nice very convincing victory clean clean written but it's it's simple where needs be complex where were where it needs to be so sort of a nice thing that we could use as as sort of a barometer see like how successful is what we're doing and so I just spent about a week according plaque to the people it took a week for the simple fact that I kept running into things that I had implemented yet and so I had a building building building that but not was some doubts at various times and in this would work out but ultimately what it it into a quarter of all the models then that Red with the 1st news model directed a port which made me realize how fucking crazy some of the features that moves were and rebel was a reply is if if you need a a rebel I highly recommend that it was a former co-worker mine Jesse lures and also amusement in a woman co-conspirators on this he wrote that it's a very very nice full-featured ruffled on and we got a nation that in countries and some other from other people actually tried is dams member who for groups which was the kind board Oh yes exactly yes or that were reported I the action re trie hashing these and and this was a think of Paul Bennett so we basically encouraging some people out there who stuff and they actually give some feedback and this is really weird I was really odd so we had a prototype it certainly was not ready to go on core but we have we we worked out a lot of these details so much so that reaction principle
on i never remember the neural for this so I and you can find in the search otherwise maybe the medusae in API of infants that and but so uh we put up there and we had a lot with the rest put in some sense of the and we actually spend on time as you remove those dependencies on down to just 1 which was developed call part which is the same version for some value of I verses of that bill declared on and so we had all it's of no and we've moved a bunch of stuff actually into access alright as a means of trying to speed certain things up of I
consider that a success that that particular a version protect but it is not the last version of 1 of the things we found is again as much as we tried to build bottom-up we were alone we had gone into the sub-basement yet which of the pro course which is the scary stuff and and what we built was really In the
the excess that we had in there was not a foundation which everything else could set so it's a backported things down in Texas so this is what we have learned to the first one who had the learning personally from from just running often crazy direction training thing on but then we had uh this was successful in a number ways but still was was not quite there there were dark I had to do it I avoided it for
so long that I had to do I really had to sit down a really really had learned core In the sum
power and dark deep ancient power but it's there I highly recommend this book and
it's very appropriately with mention In the but I don't through a lot of stuff on a station Mueller help guide you through a lot of stuff I the this book the docks and she doing some code either as a scary that sounds once you can get your head around some of actually not that bad and it's it's still horrendous and don't ever expand macros never expand macros in for it's really that that make you cry and but so I spent a lot of times omega go into details because most most of these things just ended of single thing in the end anyway on but I learned a lot which led me to this
and that is the actual project name and it started out as a joke on my local drive and then I was talking about and you have assessed on because I think it's appropriate the so 1 of
things he talked about in his talk and they're actually really uh by just until much later that was about he talked at the end about incrementally adding features on actually sense of uh since this part P 9 people I still live and not too far from New York area people lives on the other side of the New York area on the moon meat for lunch around town talk he has a lot of plans for 17 signature I but he wasn't putting them in 1st he wanted to do this incrementally and that's very smart and that's especially really really smart in a large legacy about the wording in the lexical basic Pearl and and so did the and the interesting thing about that is that you're actually optimizing for success because the the the last change it you do the more likely that it's going to get in and the more likely it's going not break early no more the less likely it will break other stuff and so with that in mind but she started hunting
around in the proper to see and I start actually thinking about all the features that I wanted in the rat more detail and trying to figure out what what can I do and that what what what kind do without and and
could digression here I'm and this is actually brain is like of Rick I went under the aid government and tools in but if you don't know is that of a language invented by the US Department defense which means got off right the man for killing people and so a decimal for real-time systems and missiles nuclear reactors things you want fail and end up the guy made a point in this about the orientation in our arena eta eta whatever on it's done basic is a combination of feature they called very record the tag records in packages arm and they've added some syntactic sugar over the years to sort of make it nicer but the fact of the matter is is no release of this guy said true object-orientation in the same way that we think of it with classes and stuff like that but in 8 it instead of the pattern is a pattern that they all had a follow and that's actually out a stack of her on but the pattern if you think about it pro object-orientation is the same thing packages so this would of method in class no it's a pattern that we all have adopted in fall OK so too does the design patterns that we think about that is potentially a lot of stuff that's in the corporal right now that we can use maybe we adopted as new patterns mainly wraps syntax rounded who knows that's for later on but there's a lot in there that can be used and and so on the slides of I mean all of this feature of values of the case when when that come amount of yeah yeah was it's it's better as an awful long time how people use it in the code that's about as member to more than I expected but well on if you're familiar with most of roles we have a concept and roles of required methods basically a method that you're consuming class has to implement and we we don't work that you're you're providing implementations using you have to have this if you wanna composers role in your class so these can be require methods and you know what is much is there really not you can't figure out from the outside the the root of cases the root of of where the octree and starts is not so from the excess I I can figure out so suddenly while I'm not method implemented this again nobody does it because well bringing useless because the probe is actually the doesn't actually enforce and anyway but lonely hold it's there you can get to it OK signatures this is the best thing about fucking up the 1st couple prototypes because it takes a little while and somebody put signatures in the core and this is your change that our that's mind if that's actually the these 3 features I learned a thing argon story there OK so there's a lot actually in there and took me a long time and again minus guess is the slow breakdown amounts of a it's a K I didn't see these features those 2 to focus on advancing the Chinese if you wanna think that you take this 1 step further the roles where do you store the roles of an applied your class what is it is just fine for inheritance 1 of the same thing for roles OK this impact is not pretty the I'm not proposing this is the syntax I'm proposing this as the implementation of put in their heart away make actually take effect well magic the same thing is a has magic that is a right have magic attached to it so when you do certain things to it because a certain things to happen from URLs in theory you do the same thing here the class actually it's recover 4 the Packers all storage is good enough for that why not this OK we've got the keys so we wanna have available we have an initialized to create a default in organize things this default what should tell you if you were to look inside the sub it'll tell you a package was defined as which means I can identify what package the Serbs would impart associated with that came from which means they can also use profile the same trick the profile users for method cash so if you don't know the stature of your package which is where all methods stored is essentially a hash of funky have but it's essentially a harsh the way a lot of the method catching works is actually sticks what would you call a method it's Y yet locally I had to go find it when we stick something in the method Macintosh and there's only 2 ways that probably out now that she treated as natural method narratives that etc. but if you can differentiate where it came from so you can store it and you can push up there so in theory we can use the same thing for that again I all of features here I have written a line echo OK because it's actually all there you just have a look energy that's what I was missing from 2 items is going on and the other thing too that I started to realize is this so a lot of us you know we think of you need a class keyword we need a method key were we need this we need that all these features catchy think about it these are all probably coming from job maybe from C + + but but job is really sort of it's been taught a lot in terms of standard and it really wasn't even there in Java Java 1 . 0 I think you not after job was in beta from Perl 5 1st came so on Larry designs features there was no agreed upon everything must have a class of keyword knows and stuff like that he worked with 40 hat and any any the stock price until but your body had would we it may be left on the counter and and then area and so but the key thing was that you respect the
legacy that's potentially a lot of good stuff out there that you can use and then you just have to stop paying attention to the fancy new shiny stuff at start really thinking into sometimes the ugly sometimes the that sometimes it was written by the person you think was a drooling idiot but he was probably here she was probably just like you a programmer who had a job to do we need to get something done and that was told they chose to and so In conclusion
conclusion of I want to make 1 point this was layer service laziness in patients in whom the 3 out of qualities of the program n upper case the qualities of good lowercase properly the meaning the compiler new core hacker is do the hard work OK so Peabody in particular he did the hard-working dug down into it took me a while I came around I finally did do the hard work you have to do the hard work you also have to have all manner patients to go through the core to go to P 5 uh to do all the stuff that you have to be patient you have to have persistence and you have to have humility because there is nothing nothing that will just basically knocking down in a 2nd like programming in C In the it's it's it's extremely humbling experience so as much as I agree with Larry on that that 1st said I think that from a core perspective these are important things to have and then with that island how much time you have the it yeah questions about the obligations as similar it so I should you have ever a reasonably good prototype build on some of those ideas and and and it's actually not a lot of code i'm i've started thinking about to something I never really thought about it is that this also as this has have a cat from scene is well you should be able to access all the things the up do all things amount from C entirely on that 1 is gonna be little law because I'm not a supremum relatively new C programmer so exactly what a CAP I should look like a would not look like and will see the but but it's it's it's actually making pretty good progress I have yet to build the syntax layer on top of it because that is a distraction from but but a lot of features in there so when I don't know I really can't find but but as soon as you after Christmas and the and so I would like to talk the thank you