right. Good morning. Yes. Okay, let's get going here. Okay, Good morning.
I started recording i'm coming to you from a different location. Actually, it's just my parents house so just down the street, but different locations.
Sorry about the sunlight over my shoulders. Here, you kind of see the backyard.
But anyway, actually, let me let me try Closing those curtains was a cloud and dust.
Yep: Okay, you do you hear me? Okay, Okay, good So I don't think closing my curtain.
This curtains actually help much, anyway. what I wanted to show you here is first off here's the announcement channel, and so and so assignments type.
The midterm solutions are out, the midterm grades are out.
If you do not have, grades for your midterm in bright space, please let me know, because that should not be the case. and and if you want, and then i'm gonna do interviews, I have not randomly chosen people
I first kind of want to see who wanted to sign up.
But first, if you go here, there are interview slots and you're just okay, good.
Some people have started putting your name down so. but but yeah, but so go there.
So just go up here at the top, go to interviews.
Put your name down if you want to volunteer i'm going to send requests to some of you to sign up.
I'm gonna random, you know, roll a dice and select some of you to be interviewed.
But remember again, interviews are a chance to go through your your midterm and check your grade, although I will say the average for the midterm was pretty good.
Most of you did pretty well. You will notice that in the grading of the midterm.
It's actually out of 26 not 25 there's no way for your mark to go down during the interview.
You know it can only go up unless of course I decide the midterm isn't yours like you didn't really do the work, and then i'll have to talk to the dean and then it's the whole thing
but that I consider to be very unlikely, and frankly I graded all of your midterms, and it looked like all of you did the work and stuff.
So i'm i'm pretty confident but still but so go ahead, but it's so if you want to go through your midterm.
You have questions, do that. But first go through the solutions.
If you want to find the solutions, they are on the go to the main main page, and if you scroll down here, you'll see midterm exam solutions, and here they are.
So. I'm not going to go through these solutions today.
My plan today is to go through assignment 3 solutions again to recall what our plan is from last lecture.
But this is March the thirtieth we're going to go through I assignment 3 solutions, and i'm going to talk about language run times and then on Friday I will go through the midterm solutions and we'll talk about
operating systems. and then April the sixth next Wednesday will be.
I'll talk about networking and then on april eighth assignment, 4 solutions and closing thoughts.
And really that's also exam prep so but that's really yeah.
So the exam. as at this point it seems pretty clear. You all basically know how I do things because you did find on the midterm.
I was quite happy with that. so let's Let's now go to, but let's put solutions so assignment 3 is here.
You go down. So 3 solutions are at the bottom. They are posted so we can go through these.
So first, how does a syntax? Oh, let me keep the i'm gonna go keep the assignment up here, so we have swing.
Go through the code and stuff here necessary. i've got android running.
We can go through things there question one you've got How does a syntax for dictionaries and Swift compared to mutable maps in cotton?
How similar are they? you know a dictionary, and swift to specify with square brackets, with the keys and values being separated by Colon.
So you have, you know. Let analysis be, you know. So this is the you know Syntax Series.
This is the key, and I have a colon and this is the value type which the value type.
Here we're specifying a function declaration awesome and then, in contrast, Kotlin you don't just do this.
You have to say mutable map up or map of mutable map means you can change it if it's map up.
It's not changeable it's constant so then the entries are inside of the parentheses and the keys, and got separated by the word 2 I don't know why they're using 2 rather
than Colon, but they do. I mean try to read, I guess.
But I so so you have your mutual map, and then you say so.
It's a mutual map using of course the from type, and then to have a colon here.
You have a comma. Then the second one is this thing which knows the function. but it's the stupid thing that you're.
It's all function that takes one argument. and the argument is a string, and the return values a string.
Can you also mention that the mutual map of will always be mutable grounds of variable declaration?
You can mention it, but that's the sort of thing so they don't.
Oh, they don't want a triple Colon Guess you're right I didn't think about that, Stephen.
You're right, because if they had a coal in here you would have that.
And then you'd have a trip another 2 colons there and that is pretty ugly.
But of course this whole double colon thing is just ugly on its own.
But yeah, it's like but so upward so here the key value.
And then these are function. You can order to put a function, treat a function as a value that get to put 2 coins in front.
I think this is actually a namespace identifier.
So I think you can actually denote this. This is saying the current namespace.
I think you can denote another package in front of the colon but I haven't checked that.
But but but this is what i'm just looking for is just kind of explaining this, and this is i'm not expecting you don't have to go into full detail.
But I just want you to show me that and kind of say look they're different.
How can so number 2? How can you change the code? so that when rotated the mode is never none.
And if it was, it was changed to count, so other modes should be preserved, and when the app is started it should behave as before.
So this means that, yeah, So what this means you have to change the on create, so that live when when there's a valid save mode, we check for whether the ass mode is none.
So you So if you have some something, so so as this is put in a lot between line 34, and 35, so 34, and 35 isn't right? here.
So. so this is only will be triggered if there is a non null, save one.
If that's the case, then we stick in this code you know check. if it's none, then put it to count this way, it won't be started when the app starts just if you wrote because then there'll be a same mode
because we first start the app there's nothing saved any question on that. Well, i'm i'm gonna go through these.
If you have questions i'll stop i'm happy to go back.
So I want you to say didn't you want to save the mode. if it's not none the saving the mode is yeah.
The code already does that yeah, that's the code already saves a mode.
So the last day to get checked off for tutorials is a week from today, so that's So we are as a question.
And so we're at thirtieth April the sixth is the last day to get checked off.
I'm happy to stay late next wednesday to check people off, but we can just I can have it if people really have to think I might especially.
But really, April sixth. So yeah so you shouldn't have anything else to do here, remember part of it.
Part of answering these questions is understanding how much? what the code actually does already.
So you don't want to be adding functionality that's already present good or so. Okay, anyway, so let's go into question 3.
So how can How can you change the app so that when you switch back a switch to another and the app, and then return?
It. The result area shows. Welcome back. Explain why your change works.
So notice these explain things. They don't want to just give me the code you got to tell like, why is this the right change?
So when you switch to another app and then return, the app is paused, and then resumed: So what you do have probably logic, and on pause and on resume.
And so what I the way I did this is I created.
It was paused, variable, just kind of at as state for the main activity.
And the idea is puzzles is part of the main activity. When the activity gets destroyed it will get erased. so that that helps and then we check.
You know, Adam, you know, and then you're set you want to set it to the pause.
You know in. If you had to on create i'm not sure if that's strictly needed, because you have this.
But making sure, then add what was pauses true to on pause, Because then you've been paused, and then an on resume, you say it was pause.
This. Okay, you like the welcome back can't you just put the set text in the on pause function.
I guess that's kind of weird because the reason why it's weird is because I guess that gets destroyed.
I guess that should work. I think you could do that. put on restart when we start.
Yes, on Restart. I guess so. The reason why not on Restart?
I think if you put it in on Restart, it then happens every time you launch the app restart restart happens when you first start the app because Oh, resume, does but not restart Got it got it They have a on pause on
resume and start that you have understand got it okay cool okay that's other solutions.
I think I may all add up my solutions to add those other ones in
But this is how I thought of it. So okay, then,
But on pauses a weird way. weird place to do it.
One restart that that's only we start actually seeing is very clean.
I do like that, but doing it on pause it's like you're about to stop, and then you're changing the state of the screen that just happens to be preserved when you come back.
It's like. But, yeah, no extra viral meaning I agree that that is a cleaner solution.
So then, how do, How do you? How can you fix the results?
Area so as horizontally centered as it was before.
So because I messed it up when I gave you this version.
And so all you do is I with those a constraint lab no end? because I end to the end of parent, remember, start and end or actually left it right?
Because yeah, And so between life, railroad act and Maine.
I also added, so that we also change the text alignment alignment to center.
Yeah, that should be fine. actually, if you did that the the text, Widget is normally sized to fit the
The text that you give So I think that's redundant but it certainly doesn't hurt. because especially if you ended up making it wider like you get a probably one that was wide across the screen or something.
Then, yeah, you definitely want the center. Did we need to?
You explained how to do it. in the design view i'm sure if you gave a clear instructions that's fine instead of the Xml code.
But I can't get things to work on the design of you I just I use the Xml.
This is talking about quite a question. 4 question 4 is changing the layout so you can.
You can certainly do this one by. You could do in the design view.
But but even if what I really want you to show me is, do it that way.
But then go back to the Xml and show how the Xml changed.
So you could do do the manipulations. But really you should describe what the excel will be at the end.
Okay. Question 5. How can you? Yeah. And to end of and make it equal to parent? right? Exactly it.
That's all you do. How can you move How can you move the menu button back to the top.
Why your changes work so and so in the code that I gave you is currently positioned between analysis result in the bottom of the screen.
And so between the top of the screen and the app title.
So you have to fix analysis up So it's anchored the bottom, and then re- anchor the other 2.
And so I described the changes that you made here. I don't think there's a clean way of doing this otherwise. and frankly, i'm not quite sure how to do this Yeah, i'm sure you can do this in the design. view.
But it's so easy in the design view to start putting absolute coordinates in
So yeah, it's later. app layout and then quick changes Okay, that should be fine.
Yeah. So it was just yeah the cascading things there.
6 the constraints for the menu button.
There is a specifier for margin top line, for you know activity.
Xml. and the original layout. Does this specify affect the apps appearance?
What about what once the menu button is moved to the top of the screen?
Does it change the apps appearance. so when I first was writing this question, and I I looked at it like can't even tell it moved anything. but then I looked again.
It's like it does slightly lower, it in the original layout but when you put it flush to the top that that display that 26 display pixels really only makes a difference when it's lined up against something
else yeah otherwise it's Well, it's It's not easier to see It's just it's not bushed.
It's like just looks ugly when it's when things are just mushed against the edge.
White space is in general a good thing and layout yeah exactly if it's just a if it's, you're going from white space to more white space you can notice but it's question 7 what is the
t-watcher object for what? what provides the same functionality in Swift, the T.
Watcher is there to make sure. update analysis called every time the user types in the text box entry.
T it's with Ui we can get the same functionality by design.
The text field variable as a state that doesn't need the state filter, textual, variable. it's a state variable.
It changes to such variables can cause any referendum use.
I would be drawing. So this question is, was grading yesterday.
I was finally, during the midterm and there's a question on the midterm that asks about what causes things to be updated, and a lot of you did not get That it.
Was state variables. So hopefully, now it should be clear that those State variables are actually doing a lot of work, and swift ui to this 8.
If we were to add a new entry to the Analysis Dictionary been in the unresume method, would this entry show up in the menu?
Yes, it would, because the menu is built from scratch every time you click the button.
And so it always goes to the data structure to get the current version.
So, and then 9. So how can you change the program? So it no longer uses the analysis, dictionary chance.
So instead of the mutual map we use an array of strings to create menu items, make analysis update and update analysis.
They're called the analysis function explicitly incorporate their code directly, as your cohes the nun case.
Which of the code do you like better? Oh, above you, I go back.
Yeah, sorry. I think a bit sorry. I just wanted to check something.
So honorary, last swift assignment we used at Ib.
Action right? Is that also? That is not Swift Ui.
Oh, okay, that storyboard. Oh, yeah, okay, that makes sense, right?
Which is in storyboard is much more similar to how Android does things.
Yeah, because I was thinking like, because the State only modifies the direct variable.
But like with 20 watching text watcher, you can change other things state doesn't modify the variable at all.
It watches it. It watches a variable Now there's a more general feature in Swift Ui that lets you watch a whole set of variables.
The he's trying to remember right now, I haven't we didn't go through that again because we're just doing simple stuff.
But there are more. there are at state-like things. if you have like.
I want like this 5 variables. I want to check like a data structure on a month.
Watch it for changes stuff which is closer to the to the watcher type.
Functionality. Yeah, but that's what I was thinking so That's why I put that as my answer because it is like something where I can actually put an answer in like I i'm sorry I can put code changes when the actual thing
changes, because that's what I was thinking for swift ui but I mean, yeah, I understand why i'm wrong. I'm not asking for the right answer.
I i'm just saying what you say yeah so that's that's that's an understandable conclusion.
But that's swift Ui the whole point of Swift Ui really is for you not to manually update the state of the display when you update data structures.
Yet you designate data structures, you have code that takes data structures and produces the display.
Then you have code to update the data structures but you don't have to say Oh, I updated the data structure.
So now I better update the screen which is what you have to do in Android, and you can start your coats, and it's not very hard.
But you have to do that here. It just happens Yeah, I was just thinking if you wanted to make other changes besides that, you'd have to use something like that like on change.
Well, it's It turns out if you want to do more no, no, you just use state.
You can just do everything with state variables. Well, like, if you want to check.
If one variables change and then do more actions when that variables change using that. I see like you want to.
You want to? Well, so because you can use Swatcher for that right.
But see, see and swift Ui that's not you're not supposed to be creating your display based on sequences of events that this variable is in the State.
So the display looks like this. Yeah, I I guess I didn't get that?
But that's sort of what I yeah understood from it.
So. yeah, , so unfortunate. But you know Well, I think this is where the extra credit on assignment, for I think is very worth doing.
If you have the time. so if you so assignment for you notice the extra credit is implementing this, you know, you know Pick viewer 2 as a swift Ui.
Program. Oh, so you might know. We have done remote pick viewer, of course, but it in particular.
It did not display the the zoom and the you know the rotation everything as text fields that you could edit.
So and that's a function that's only in the android program.
So if you go back to Swift ui and try to have coordinate that state you use State for able to see it, you'll, I think, understand the benefit of using the state variables, because it should be pretty clean Okay, Yeah, i'd have to
Yeah, that that would I can imagine it being a lot easier.
It was super finicky for me. so cool. Thanks. thanks a lot.
No problem. Why, isn't androids do you introduce Swift, you I was saying like there is something like swift Ui for Android.
There's a thing called jetpack compose So Jetpack compose is basically the kind of it is supposed to be it.
I have not actually looked in it too much. and I think I might go through that in 26 Oh, one next year depending.
But the but that's I mean this is literally jetpack composed just became stable.
I think, this year, so it's not like people use this extensively.
But this is the whole jetpack. Libraries are supposed to be things, for in more modern ways you should so.
But what the heck I I guess this is cool but this doesn't seem that, anyway.
Okay, So T: Watcher: So yeah, So So this this question question 9, of course, was a lot of changes here.
Let me show you this one is worth looking at. Android students.
I think I have all this here. So note. So first of all, look notice an update analysis.
This is my solution version. Notice how I I literally just put a big if in you could have there's actually this this thing that I recently learned about.
When which can let you do kind of a switch statement like thing.
But honestly, the if statements work you call the functions I mean, you can call a function.
You could call the function subpoena I just kind of wanted to say, let's just forget all that stuff.
Let's just call the update analysis count here this this this this let's see that it's literally just doing that.
And so I'm just I stuck it all into one big function, which is kind of the classic way now and then what else did I do?
Yes, I What was pause. this is the big thing one question I have.
What do you like better? And that was a question that you all put there in your solutions.
Do you? Do you like this whole using dictionaries to look stuff up the diverse river?
Yeah, okay, okay, I'll just kid, but some because this is honestly simpler.
In a sense it's easier to move and say okay, do this you do this, you know.
But but it's yeah, it is I agree that that it's much easier to map that. the dictionary has more organized.
Okay, Okay. Good to know money. I look at my solutions.
I mean that you can access them. I mean they're just on the assignment page.
So go ahead and go through it. if you have a question about 5 i'm happy to go through it. right.
Yeah, it's you have to there's a bit of more mental overhead and understanding how to do things with looking up a dictionary.
But once you understand the idiom. I think it yeah it's definitely much easier to change.
Oh, yeah, yeah, you would definitely do it this way with the if statements and there the reason why I didn't do it with just calling the functions is because if you're if you have all this really simple functionality split out into
functions. It makes more sense to put in a dictionary.
If you have that code there, just having these real Singleton functions are just kind of I doing that pattern of thing, of assigning function to another.
Very well doing it actually alfuskates your code.
So what I could see people structuring their code like this.
And this being okay, this is how i'm doing it but i'd never see someone.
I think structure it that way. Oh, no you won't lose marks for it.
No, you won't lose market this is perfect it's perfectly legitimate. Just call to call the things here.
But yeah, I don't I just wouldn't see people doing it this way.
Yeah, is it? Yes, but yeah. So I I said, you have hundreds of thousands of options.
She still runs. Oh, another thing that another big reason there's also a speed version, because you're going through a dictionary.
A dictionary is based on a hash table. Yeah, dictionary is based on a hash table.
So notice these if statements it has to go through them linearly.
A hash table is constant time. lookup you just have to compute the hash when you go directly to the entry, I must leave chaining things, but you know a good hash table shouldn't have to deal with that.
Oh, wait, do you all know hash tables you probably don't know hash tables.
That should be something. Oh, you do. Okay, Because because the hash tables are covered, I think hash tables are covered in 24.
Oh, one. Okay. Okay, I'll try for 24 2 yeah 24 to yeah. Okay.
Good, Okay, and 24 or 2 get so So when you talk about dictionaries or mutable maps, they're under the hood.
Just a hash table, and the thing about hash tables is They're constant time.
Lookups. So it's definitely more efficient to do that. But of course, if you have a 5 cases cares that that's that's nothing.
But but if you get if you had a lot, then
But then, code having a data structure to do things so okay, So unless there's any other questions.
Yeah, if you have it at 24 or 2 you'll go through, I think in more detail.
Hash tables. They're really pretty amazing data structures, and they are used all over the place.
Okay, yeah. Well, I think we're done with this and then what I think I'm going to talk about language run times.
Is that actually, actually that's a I need a good segue it's out language run times for the assignment for bonus marks.
Can it. help Your other assignments grades. If you go over 100 absolutely absolutely.
If you go, you can get on assignment, for if you go ahead and so for if you do the 5.6 credit, remember this is 20 points.
So 5 points extra credit is so you could get 25 or 20 that's equivalent to 125% on this assignment, and that can you know, make up for any other assignment And actually you can make up for
anything. So that is so. Assignments are 20% of your grade.
I think or so this way, procedure. I think assignments are 20% of your grades, so each assignment is worth.
Percent. And so this is potentially 1 point: 2, 5% added to your final grade statistics.
Yes, yeah, not or sorry. Not 25%. Yeah. 1 point, 2, 5%.
You can get to cost 5%. one quarter of that 1 point, 2, 5%.
It's not supposed to be really hard it's actually supposed it shouldn't be that hard, but it's just you have the big thing about this is it's making you go back and program and swift ui and
implementing an entire, a thing and you haven't done that for a while.
So you have to go back and do that now, some of you have put away your apple stuff and things.
But frankly, it's really good for you to do this because Swift Ui is going to be on the final exam.
So this is a great exercise. I potentially could have put it as required.
I was thinking about that. but I thought so i've already got you doing some work here for the rest, and so i'll make an extra credit.
Swift Ui is on the exam. Yes, the exam is cumulative for the entire semester.
It's a final exam it's not a second test but William Moore, Cotton and swift Ui on the exam.
Yes, there will be a bit more emphasis on assignment, threes and 4.
But remember, the final exam is based on assignments one through 4.
So the storyboard wasn't really covered in the assignments so that will not be.
I don't think I can put that explicitly on the final exam.
Except maybe in a bonus question, Will storyboard be covered in 2,601?
Not normally normally 26.0. one is pure android.
But again, I regard this as conceptual and that's Why, I've been trying to teach you kind of like how these things work.
And honestly, you see that yeah storyboard and swift storyboard and android programming aren't that different.
There's just lots of yeah storyboard. I I also Yes, Swift Ui.
I like Rigor Android Program is okay. the storyboard kind of annoying.
So, namely, because the storyboard itself it's like the lack of easy to edit Xml.
That Xml is ugly. makes it painful to me.
I am teaching 26.0 one next year, and
So I can take requests. This is a few things you particularly want to learn about.
Let me know it's Yes, and 26 one is the only mobile dev course in second year doesn't you know.
But I met Tricky technically. I think you may be able to take 36.0 one and second year.
But Okay, Will you make programs or you analyze code like this?
Course, in 2,016 I haven't designed the course yet I think you'll probably build a bit more.
But actually, I think a lot of it will be analyzing code and and modifying it.
It's just the apps will be significantly more complex it's only being offered one term, and I believe it's being offered in the winter.
So and the reason why I the reason. Why, I teach code. you'll notice that for your compared to other programming courses, I I do much more reading code than writing code. Frankly, because I think reading code's harder and
I think you guys can end up getting code working one way or the other when you work with android.
When you use a search engine and stuff, so well sure. are we out right now?
We are at lecture. say what so lecture 20 yeah because I've I've noticed over the years the participation mark on'm just going to calculate it based on your zoom stats.
So if you've been showing up to most classes and if you show up to most classes, and you don't say anything, but you at least show up you're going to that's basically that that it's a
bish kind of thing, and if you want to get into the a category, then you, you know, if you show up and participate in polls, you can't just have your zoom thing.
But at least there's some evidence that you actually were here and then, if you participated, then that's what gets to our tournament.
Yeah, there's zoom. stats. yeah I I have it keeps a record of exactly when you join, and when you when you come up, get off zoom.
So I have those records I know the exact times yeah again it's 2 or 3, but that's part of what the participation.
But if you're asking questions, then that makes up for it exactly. yes.
So if you participate yourself so let's let's talk about
If you've been showing up for class don't worry about participation marks, you can't lower your grade.
So when I talk about language run times so what do you have when you But i'm gonna i'm switching Now, to actually talk about this stuff for Oh, yeah, we are actually use up a lot of time.
Well, anyway, what I can talk more about it later. But we talk about.
We have a hardware. so so you have your Cpu hardware here.
You see, when you throw a thing of a sort of layer thing, and then you and say so.
This is I mean, if you think about this is norway now, you can kind of think of the applications on top of the operating system. but it's more that the operating system has .
So you have your hardware on top of it.
You have your operating system, and then you have the applications.
But so i'm not talking i'm not right now. i'm not going to talk about big out stuff.
This is i'm not sure what your total is this big o stuff.
I kind of missed that. But so you have an operating system.
You have applications, and you have hardware underneath.
You know, they said, the hardware is what allows you to run these things.
The operating system code has higher privileges and actually has control over the applications.
This is the stuff that So this is what we're talking about with compiled languages, and so they're running directly on the process.
So yeah, So it runs a special mode. Where so the operating system gets full access to the hardware.
Regular applications get limited acts of the hardware but otherwise they're both running on the pro on the system.
There's nothing between it and the hardware except for if there's, you know, access control, restrictions.
But come for this. so by code. so Python Java.
So this is how modern most languages run is that you don't. So instead of a So i'm i'm getting to gain to this like that. So a job Interpreter: So Trisha: we have So yeah, that
was, but originally you could say the language run. times are either compiled or interpreted. so you either.
Had you converted all that, you had the source code, and you convert it to machine code, and then you, The machine code is what you run, interpreted languages.
You just have the source code, and you have a program that just goes through it line by line, and tries to figure it out and does what's necessary as you do it.
If you interpret code, it's very sl it's much slower than the resulting excuse is much lower than a fully compiled one.
But interpreters can also be very efficient in terms of ram depending on how you build them.
So byte code. So just taking care of byte code is C a faster than C C is not necessarily faster than C at all.
C code can be just as fast as C code, and, in fact, just in time.
Compiled languages can be extremely fast, too. So no, no, it completely.
It really depends. but so. but we try it just like so Source or byte code.
So So there's a general idea of optimizing compiler we'll take.
So when you convert from source code to machine code there's the easy way to do it.
I mean what you can do is you can think of so there's an entire cloud.
What will There's lots to learn about compilers i'm by no means.
I'm just barely touching on things but the modern run times.
Are this really weird mix of this interpretation and compilation?
Because they they go through multiple passes the ideas if you're just gonna run the code once.
It's not gonna do much they go with something that just starts up quickly, so they sometimes will interpret it, or they'll do a really fast compilation that runs in linear time, and then just run that code But if
you're gonna have a loop and you're gonna run the same code over and over again.
You'll want to optimize that code because otherwise you know be in efficient.
And so there's all these transformations you can do on code to make it more efficient.
But that takes time. So in modern does anyone know where some of the best?
Just in time compilation, technology, is it's the stuff that you all use.
So you know any guesses your phone Okay, but that doesn't say much.
Your phone's just a computer. So it's what part of your phone like what kind of code is getting this sort of treatment?
What language? Nope i'll say most of sophisticated. I mean I wouldn't say that's the best runtime, because sometimes so really I would say the so higher level length.
There's always been this thing of languages of wanting to create these fast run times.
I'd say the lisp developers really want you know they wanted to proving these high-level languages because they were doing symbolic ai originally, and so they develop a lot of the ways to make code do the
sort of just in time compilation. But then there was a lot of money put into it for Java, because Java compiles down to a Java Byte code, and that and the idea of the Java Byte code is
its platform independent. but if you want it to run well on a given platform, it has to be converted to the machine code on that platform, and and there also had all these requirements for certain safety things and security requirements But So they
put a lot There's a lot of money spent in making optimum, you know, just based pushing the technology of just time compilation for Java.
But then web browsers came along and people wanted to make complex web app applications and complex web applications were written in Javascript, and so they needed javascript I mean Javascript Wasn't designed to
run fast, but they figured out how to make it run really fast.
So modern browsers do all kinds of crazy things and that's how apps like Gmail and all your browser-based Apps How they run as well as they do?
If you and the older browsers would just choke on the amount of code that's in a modern web application.
Yep for websites. In fact, that I mean the funny thing is Javascript run times got so good that they ended up on the server.
That's why you have no js dinner but so yeah so Php.
Python so the jit runtimes you can't just say I've got a just time compilation runtime for one language, and i'll use it for another they're very closely tied to
the precise semantics of the language like so there's things like pipe, which is a faster runtime for it.
But the classic C. python. but that runtime is no python's runtime is notoriously slow.
The reason why python can be used for things like machine learning is because it's calling libraries.
So python itself is quite slow, but you can do relatively high performance stuff by doing most of the work in special libraries.
Numpy, I think, is is one of them. Why not use?
Why not use Cc. directly for machine learning? Because it would take many times more code and make much more error-prone and basically slower to develop, c. c.
Is and actually the higher level. the easiest developed but Lessers right?
Yes, but it's not so it's not a straightforward thing.
It. really it's it's worth looking up There are some various things that try to benchmark different languages.
Let me see if I can define that Okay, Okay, what's so so like here at full log can be found here.
So let's see what it's looking like assigned to view logs.
I don't know if you look if you if you look at the logs.
So yeah, So yeah, What big problem with C and C is you have to manual memory management.
The disadvantages in cnc plus don't you see in C.
Visual, Basic: Yeah. Seg: Fault: Yeah. Yeah.
Seg: Faults: Yeah. Cnc: plus horrible from a security standpoint.
Yeah, but I anyway, I will stop here. and I will I'm happy to answer more questions later.