7 Fancy Programming Words
Ғылым және технология
Learn the meaning of 7 fancy, yet important, programming terms before your next technical interview fireship.io
00:00 Intro
00:58 Idempotent
02:08 Ephemeral
03:16 Anonymous
04:13 Predicate
05:10 Memoization
05:59 Abstraction
07:06 Serialization
Install the quiz app 🤓
iOS itunes.apple.com/us/app/fires...
Android play.google.com/store/apps/de...
Upgrade to Fireship PRO at fireship.io/pro
Use code lORhwXd2 for 25% off your first payment.
My VS Code Theme
- Atom One Dark
- vscode-icons
- Fira Code Font
Пікірлер: 345
Jeff is not a coder, he's an Artist!
@nulled7888
3 жыл бұрын
In some way or another, code is an Art.
@grape2063
3 жыл бұрын
@@nulled7888 it is indeed! changes how ur brain is wired
@nulled7888
3 жыл бұрын
@@grape2063 yea, i can relate. After years of coding, you get somehow used to logic, you experience the world in a mathematic shape.
@ZapOKill
3 жыл бұрын
@@nulled7888 yeah I can relate. I call it PTSD.
@nulled7888
3 жыл бұрын
@@ZapOKill thats something way different lol
*idempotent* - produces the same result multiple times *ephemeral* - may not persist, opposite of immutable *anonymous* - functions that don't have a name *predicate* - function that returns either TRUE or FALSE *memoization* - caching return value of a function *abstraction* - process of hiding implementation details from end user *serialisation* - process of taking data from one format into a more generic format *Turbo Encabulator* - a fictional machine whose technobabble description is an in-joke among engineers for decades. *technobabble* - technical jargon.
@LeoStaley
3 жыл бұрын
7/10 score for the quiz. Points off for not defining turbo encabulator.
@mahmutjomaa6345
3 жыл бұрын
Ephemeral is just a fancy word for non-persisting. Something can be ephemeral and immutable tho. Anything in-between is called partially persisting. Also memoization is caching the result value of (pure) functions for some specific inputs, e.g. the cache key are the input parameters.
@perrym8048
3 жыл бұрын
I find the ephemeral being defined as the opposite of immutable not really true. Immutable doesn't mean persisted, it just means it can't be changed. Ephemeral would simply be something that doesn't last for a very long time (or doesn't persist). I've never heard a javascript object be defined as ephemeral. In that case, anything in the call stack is ephemeral (which is true, but not particularly helpful to think about it that way).
@mahmutjomaa6345
3 жыл бұрын
One oversimplified example for ephemeral + immutable: On application startup you check if the OS is Linux and set a readonly global boolean "IsLinux".
@RobertShaverOfAustin
3 жыл бұрын
@@perrym8048 Your objection is sustained.
This man just explained what an abstract class is perfectly while talking about fish. I spent like 30+ minutes reading and not understanding it XD
@gamerzero6085
2 жыл бұрын
I'm not sure if that's a really good explanation in terms of typescript, I always thought that abstract classes should only contain methods that are not yet implemented, so they have to be overloaded in derived classes.
@MechMK1
2 жыл бұрын
@@gamerzero6085 There are multiple ways of looking at it. Both make sense. For one, an abstract class can be a base class of two different classes, which doesn't make sense to instantiate on its own. The other, as you said, is an abstract class, for which not all implementation details are known yet. Often, both occur simultaneously.
@gamerzero6085
2 жыл бұрын
@@MechMK1 Yes, now i actually understand the practice of using abstract modifier just as mark that this class doesn't have to be instantiated on its own, after working with C# for a while. Yet I think it worth to tell about virtual methods and overriding when talking abstract classes.
@tldoesntlikebread
2 жыл бұрын
I would think of abstract classes as making it not instantiate on its own Because it doesn't have all the implementation details, I feel like those go hand in hand, at least I can't imagine a scenario where that's not the case. and if it was only abstract methods I might just vouch for an interface.
@OatmealTheCrazy
Жыл бұрын
Alternatively, you could take a lecture about Plato
Best fireship video yet! It's this type of stuff that is really hardest to self-teach imo. It's in all documentation, but there's no documentation about it
@ijimmoore
Жыл бұрын
A friend of mine says she uses a paperback dictionary
I love how you explained the pronunciation and origin of the words and how well you explained their meaning! Great job!
I knew only half of them, great word from the sponsor 😂
I'm big about terminology in programming, especially when tutoring. I try to emphasize to my students that using the right words makes communication much more efficient and finding the correct terms deepens your understanding of the subject. However, I'm also a bit of an etymology nerd so I may go too far with it sometimes... most of the time...
@devstuff2576
2 жыл бұрын
I would hate to be your student. Memorizing and using big words has absolutely nothing to do with learning or communicating..in fact, using simple terms is the essence of being a good communicator.
@DavidKizivat1
2 жыл бұрын
@@devstuff2576 I agree that a good communicator need to be able to describe concepts in terms that are close to the target audience. However, I still believe that having good vocabulary and being able to compactly and precisely express ideas using "industry standard" terms in a professional setting among peers is advantageous. Also I don't think that building such vocabulary is a matter of memorization, but rather of exposure to the subject matter. E.g. I wouldn't require a student to know the difference between terms "anonymous function" and "arrow function" in Javascript right after they're introduced to the concepts, but rather after they're comfortable with it, but I would always make sure to use the terms correctly myself and gently correct any misuse of terminology.
@ijimmoore
Жыл бұрын
Nothin beats being able to communicate effectively, and intelligently, with a little humor sprinkled in, as duz Fireship.
@andrewgora5446
Жыл бұрын
@@devstuff2576 He said using "correct" words, not "big" words. Missing that distinction is ironic.
@davidconneely5188
Жыл бұрын
Play
Thank you! The more time I spend in the programming world, the more I wish we could all just have a glossary in front of us and completely agree on the meaning of words like these.
I loved the way you presented and introduced each term. Very useful for me as a software developer and I'll definitely be sharing it with friends who need it. Please make more like this!
Using food items for your examples is GENIUS for knowledge retention! You make some top notch content!
amazing Jeff. This is great. I would love more of these!
Awesome video with great details. I wish all of your videos/ tutorials would be detailed/indepth like this one. You'd be the best instructor out there imo.
Amazing content, remember it took me years to learn these terms by picking the up over time. This is a great and accurate summary!
I recognize idempotent from my discrete math class. The idempotent law, which is basically saying if there a prepositional statement p (boolean) then p OR p is equivalent to p. P AND p is equivalent to p
I’ve never been this early to a video Awesome video, too
@FalseDev
3 жыл бұрын
👀
Thank you for this video, Jeff! There was definitely a word or two (like idempotent and ephemeral) that I've heard before but didn't really understand.
This was one of the most useful videos ever i have added it to my significant playlist
From Wikipedia: The term "memoization" was coined by Donald Michie in 1968 and is derived from the Latin word "memorandum" ("to be remembered"), usually truncated as "memo" in American English, and thus carries the meaning of "turning [the results of] a function into something to be remembered".
My brain! Watched each segment twice to ensure I fully understood. Thank you for the great videos!
Brilliant! I like you explaining the etymology of these terms.
I loved the intro and outro lol I always tell folks when getting into coding the first hard part is learning the terms.
Please do more of these! Loved it
Great vídeo! Thanks for that. Anxious for the sequel! :)
I would say that it's more accurate that while learning software engineering you have to learn some new concepts. These new concepts have words we are unfamiliar with, so for some reason we attribute them as "fancy". Many of the concepts are intuitive though, so it's just a matter of learning the vernacular.
@ijimmoore
Жыл бұрын
... or, just read more, generally.
Please make this a series. It is so helpful
man, you Rock! This is a very beautiful work
Serialisation need not necessarily involve conversion to a language independent format (of which JSON would be an example) for interop. It can also mean dumping object state to file, within a language itself for resumability or streaming.
@AmexL
Жыл бұрын
And it prevents side fumbling.
I am now in absolute awe !!!
Guy, your videos are just gold!
i appreciate your content so much. any time i think you've peaked, you surprise me again.
one of the best videos, so far
When your video came I left all the other things I was doing and clicked on notification 😂 and got some more knowledge ❤️ Great work 👍
Yep! Can you provide the link for signing up to ANONYMOUS? :P
@Fireship
3 жыл бұрын
You're in!
@manu.g91
3 жыл бұрын
Yes please !!
@okie9025
3 жыл бұрын
kzread.info/dash/bejne/p5ZslLqbYaaen9Y.html
@tochimclaren
3 жыл бұрын
Lots a peps getting Rick rolled. Lol
@eyesgotshowyo7800
3 жыл бұрын
Sign up for raid shodow legends
This channel is just so amazing.
Although my mind stuck in those fish icons and couldn't map them into X,Y , but still useful :)
if fireship ever has a real sponsor everyone will think its a joke
This video was profusely exquisite 👌 Jeff rocks 🔥
VERY nice video. Thanks!
Wow, much simple, so understand
This is a kind of video to watch over and over.
need more of this
lol such an easy & clear explanations. especially the one with abstraction. ty.
love the outro!
Superb , need more such
thank you bro, that was informative.
Dude you help a lot more than most
This video prevented a lot of my side fumbling.
Awesome content as always
Didn't know about idempotent. Thanks!
Awesome content 💯
I prefer to think of idempotency as only having an effect once. Pressing the crosswalk button multiple times has the same effect as pressing it once, but that first press has a different effect than not pressing it at all.
@pharoah327
Жыл бұрын
I agree. Saying it has the same effect can be misleading. It has the same power but not same effect. For example the absolute value function. The first time it is used can have a different effect than using it again and again on the same value. But all times after the first will result in the same value returned. Essentially the power is in the first time it is used.
I've never been this early! Great content
Nice work! 😃
PHP - The Scope Resolution Operator (also called Paamayim Nekudotayim) or in simpler terms, the double colon, is a token that allows access to static, constant, and overridden properties or methods of a class.
Great video, very useful and well explained, I'm just waiting for one where you explain technospeak
This is pure gold...
The humor in this video... He must have so much fun editing that :D
Rockwell Automation is still around; among other things they sell maintenance and support for robot arms, which adds an entirely new layer of inscrutable jargon ("inverse kinematics", "homogeneous coordinate transform", "palletizing") in their day-to-day business :-)
THANK YOU
THA BEST VIDEO EVA!!!
this is gold!
The serialization of code has just blown my mind.
@ArchonLicht
3 жыл бұрын
Serialization is not for code - it is for state/data. This video is a bit wrong when explaining it.
@SophieExMachina
3 жыл бұрын
@@ArchonLicht Yeah this video isn't as great as people think lol His definition of abstraction is also not perfect. He described inheritance, not abstraction. Abstraction is for example if you have a data structure with a .sort() method. You just call .sort() on it and you expect a certain outcome (a sorted collection), and you don't care how it sorts itself. Meanwhile the data structure can have a way it gets its output (for example quicksort or something), but then the developer of the library decides to switch out the sort for a faster sorting implementation. You keep using .sort() on it and it keeps giving the same result of a sorted collection, but it does it entirely differently than before and you don't even notice. This is abstraction. Creating an API (API as a term can be used for web APIs but also code libraries) where you hide useless implementation details but give out what the function takes and what it will output. This should always remain consistent but the implementation can then be done in a million different ways and the consumer (user of the API) never has to care or know.
love the office space clip!
added to watch later , just before my interview 😂
You had me at Turboencabulator!😄
Damn cool as always.
I learned the word idempotent from Tom Scott's video "The Two Generals Problem". Just wanted to put that out there.
Very nice... Now let's see you try to do Contravariant, Monad, and Endofunctor
Awesome video
Thanks for making memoization less scary!
Can you make a video on all the customisation you have made on VSCode. Your vs looks great!!!
Very ephemeral. Good to see your idempotence.
How do you make the code pop up chunk by chunk in VS Code? Is there some trick or extension to it or is it just working with ctrl + z? Love your videos btw!
I was expecting more!
I've never heard someone say "idem-po-tent" before. In the UK this is pronounced "i-dempotent" - where the "o" in potent is not emphasised.
Thanks for sharing this content. A few remarks, though: A good example of predicates is the function you pass as the argument of the filter function on arrays. Your example with isCat, however, is a misunderstanding of OO and polymorphism. Both Cat and Dog should have a function makeSound() and their implementing classes then yield the respective result. No if needed. Your example means that for each additional animal you need to add 1 more is... function and you need to add it to the union type and you need one more if block in makeSound. This violates the Open Closed Principle and it is measurably more complex (check the CCN). Secondly, you are right that abstraction means to hide implementation details. Declaring a class "abstract" is not the answer here. Many abstractions exist without OO concepts like inheritence. Your code achieves DRY but not abstraction per se.
"Java doesn't know how to understand PHP code" ~ I mean, who does?
@arafatzahan2082
3 жыл бұрын
hhvm?
@GuRuGeorge03
3 жыл бұрын
? the latest versions of Java and php actually are pretty damn similar if you use the type hinting in php.
"Coding is more an Art than Science." Which to me, coding is not explaining but rather expressing.
@tg5127
3 жыл бұрын
True
I love you man ❤
that predicate definition would make any type theorist furious
Amazing video
I'd mention that the terms marshaling and unmarshaling are basically synonyms for serialize and deserialize in languages like Go and C.
You should do part 2!
Good vocabulary lesson. It is good that you eschew obfuscation. Oh and where did you get those wild B-roll clips of the guy explaining ... nothing? Is it stock footage somewhere?
What do you use for the graphic animation? also do you write a script for each of your video?
So good
Nice :)
Not a single video from Fireship is a waste of time.... 👌✌️🔥🔥🔥
Fun fact: We were made to learn a language called Prolog. It did have *predicates* all over
Did you ever watch Patriot on Amazon? Lots of good jargon there. Skip the second season.
5:14 Well, it's the same "memo" in both cases, haha! Given the etymological focus you had going on earlier in the video, I'm surprised you didn't put it to use there :-)
For first 15 seconds I questioned my whole existence!
Awesome videoo
This is all well and good, but where is the link to the turboencabulator talk? That's what I really want to learn about.
Programming is like an onion, it has layers and the deeper you go the more it makes you cry.
One of your best. Now I forgot what it said. Darn.
1:43 what vscode theme do you use? for the green dots in the windows gutter??
Awesome
at 4:44 I might be wrong but I think TS is not strongly typed because you can coerce values into other types because ultimately it is JS. It does have optional static typing. But I am not an authority on the matter I think it would be cool if you had a video showing off a comparison of Static vs Dynamic and Strong vs Weak to show how those are two different things and not mutually exclusive
@migueldomingos4570
3 жыл бұрын
It depends on your tsconfig. You can make it pretty strongly typed if you want.
@adamd0ggg2
3 жыл бұрын
@@migueldomingos4570 Good point. You could also store two different types in the same variable and check it at runtime. let c: string | number = func() .
@migueldomingos4570
3 жыл бұрын
@@adamd0ggg2 exacly. For checking at runtime you can use type guards which gives amazing intelisences
This is amazing but if you wrapped around and went over your original statement in the beginning it’d be even better!