7 Fancy Programming Words

Поділитися
Вставка
  • Опубліковано 7 січ 2025

КОМЕНТАРІ • 342

  • @grape2063
    @grape2063 4 роки тому +584

    Jeff is not a coder, he's an Artist!

    • @nulled7888
      @nulled7888 4 роки тому +9

      In some way or another, code is an Art.

    • @grape2063
      @grape2063 4 роки тому +3

      @@nulled7888 it is indeed! changes how ur brain is wired

    • @nulled7888
      @nulled7888 4 роки тому +7

      @@grape2063 yea, i can relate. After years of coding, you get somehow used to logic, you experience the world in a mathematic shape.

    • @ZapOKill
      @ZapOKill 4 роки тому +8

      @@nulled7888 yeah I can relate. I call it PTSD.

    • @nulled7888
      @nulled7888 4 роки тому +4

      @@ZapOKill thats something way different lol

  • @gradientO
    @gradientO 4 роки тому +1320

    *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
      @LeoStaley 4 роки тому +57

      7/10 score for the quiz. Points off for not defining turbo encabulator.

    • @mahmutjomaa6345
      @mahmutjomaa6345 4 роки тому +34

      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
      @perrym8048 4 роки тому +31

      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
      @mahmutjomaa6345 4 роки тому +6

      One oversimplified example for ephemeral + immutable: On application startup you check if the OS is Linux and set a readonly global boolean "IsLinux".

    • @RobertShaverOfAustin
      @RobertShaverOfAustin 4 роки тому +6

      @@perrym8048 Your objection is sustained.

  • @ObinnaWGMI
    @ObinnaWGMI 4 роки тому +339

    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
      @gamerzero6085 3 роки тому +1

      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
      @MechMK1 3 роки тому +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
      @gamerzero6085 3 роки тому

      @@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
      @tldoesntlikebread 2 роки тому +4

      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
      @OatmealTheCrazy 2 роки тому

      Alternatively, you could take a lecture about Plato

  • @mattjohnstondev
    @mattjohnstondev 4 роки тому +66

    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
      @ijimmoore 2 роки тому +2

      A friend of mine says she uses a paperback dictionary

  • @alexpopov5971
    @alexpopov5971 3 роки тому +47

    I love how you explained the pronunciation and origin of the words and how well you explained their meaning! Great job!

  • @david.kizivat
    @david.kizivat 4 роки тому +69

    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...

    • @david.kizivat
      @david.kizivat 3 роки тому +14

      @dev stuff 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
      @ijimmoore 2 роки тому +5

      Nothin beats being able to communicate effectively, and intelligently, with a little humor sprinkled in, as duz Fireship.

    • @andrewgora5446
      @andrewgora5446 Рік тому +5

      @dev stuff He said using "correct" words, not "big" words. Missing that distinction is ironic.

    • @davidconneely5188
      @davidconneely5188 Рік тому

      Play

  • @BradenJohnYoung
    @BradenJohnYoung 4 роки тому +6

    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.

  • @3nertia
    @3nertia 2 роки тому +4

    Using food items for your examples is GENIUS for knowledge retention! You make some top notch content!

  • @sneckie
    @sneckie 3 роки тому +6

    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!

  • @FalseDev
    @FalseDev 4 роки тому +35

    I knew only half of them, great word from the sponsor 😂

  • @BitwiseMobile
    @BitwiseMobile 4 роки тому +8

    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
      @ijimmoore 2 роки тому +1

      ... or, just read more, generally.

  • @as-qh1qq
    @as-qh1qq 2 роки тому +7

    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
      @AmexL 2 роки тому

      And it prevents side fumbling.

  • @oluwatomisinbabatunde8426
    @oluwatomisinbabatunde8426 4 роки тому +2

    This was one of the most useful videos ever i have added it to my significant playlist

  • @Spcbl-td9sx
    @Spcbl-td9sx 4 роки тому +41

    I’ve never been this early to a video
    Awesome video, too

  • @baluditor
    @baluditor 4 роки тому +3

    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.

  • @leojweda
    @leojweda 4 роки тому +2

    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".

  • @fire_boat
    @fire_boat 4 роки тому +7

    if fireship ever has a real sponsor everyone will think its a joke

  • @parthkharwar69
    @parthkharwar69 4 роки тому +1

    My brain! Watched each segment twice to ensure I fully understood.
    Thank you for the great videos!

  • @Aaronmoreno
    @Aaronmoreno 4 роки тому +3

    amazing Jeff. This is great. I would love more of these!

  • @tilakmadichettitheappdeveloper
    @tilakmadichettitheappdeveloper 4 роки тому

    5:56 Just wanted to point out that you can optimise it even more from linear to log(n) by using Matrix exponentiation.
    f = 1
    s = 1
    new_f = 0 * f + 1 * s
    new_s = 1 * f + 1 * s
    f, s = new_f, new_s
    => Multiplier matrix = [0 1]
    [1 1]
    raise it power N using binary exponentiation to get the n-th Fibonacci number.
    There is NO need to memoize anything - So we can even save some space complexity to constant space; (assuming your binary exponentiation function is iterative and not recursive)
    Best solo: Time = O(log n), Space = O(1)
    Thanks for reading !

    • @kebien6020
      @kebien6020 2 роки тому +1

      If we are going the math way, might as well go all the way and use the formula
      Fib(n) = (phi^n - (-phi)^-n) / sqrt(5)
      Where phi = (sqrt(5) + 1) / 2
      For time and space both O(1)

    • @tilakmadichettitheappdeveloper
      @tilakmadichettitheappdeveloper 2 роки тому

      @@kebien6020 wow, thanks for sharing

  • @acollierr17
    @acollierr17 4 роки тому +5

    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.

  • @darshangowda309
    @darshangowda309 4 роки тому +120

    Yep! Can you provide the link for signing up to ANONYMOUS? :P

    • @Fireship
      @Fireship  4 роки тому +66

      You're in!

    • @manu.g91
      @manu.g91 4 роки тому +2

      Yes please !!

    • @okie9025
      @okie9025 4 роки тому +11

      ua-cam.com/video/ub82Xb1C8os/v-deo.html

    • @tochimclaren
      @tochimclaren 4 роки тому +6

      Lots a peps getting Rick rolled. Lol

    • @eyesgotshowyo7800
      @eyesgotshowyo7800 4 роки тому +2

      Sign up for raid shodow legends

  • @Alex-pd5xv
    @Alex-pd5xv 4 роки тому +2

    Amazing content, remember it took me years to learn these terms by picking the up over time. This is a great and accurate summary!

  • @minuspi8372
    @minuspi8372 2 роки тому +4

    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
      @pharoah327 2 роки тому +1

      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.

  • @Sid-xt3kt
    @Sid-xt3kt 2 роки тому +1

    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

  • @adamd0ggg2
    @adamd0ggg2 4 роки тому +1

    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
      @migueldomingos4570 4 роки тому

      It depends on your tsconfig. You can make it pretty strongly typed if you want.

    • @adamd0ggg2
      @adamd0ggg2 4 роки тому

      ​@@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
      @migueldomingos4570 4 роки тому

      @@adamd0ggg2 exacly. For checking at runtime you can use type guards which gives amazing intelisences

  • @cbaxtermusic
    @cbaxtermusic 4 роки тому +1

    I loved the intro and outro lol I always tell folks when getting into coding the first hard part is learning the terms.

  • @minitheatre2712
    @minitheatre2712 4 роки тому +1

    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.

  • @salifouaffoh9626
    @salifouaffoh9626 4 роки тому +1

    Please make this a series. It is so helpful

  • @it.a.01.maheshaaraj88
    @it.a.01.maheshaaraj88 4 роки тому +2

    When your video came I left all the other things I was doing and clicked on notification 😂 and got some more knowledge ❤️
    Great work 👍

  • @MrBlazzerBoy
    @MrBlazzerBoy 2 роки тому

    This video prevented a lot of my side fumbling.

  • @hanzhiyin5239
    @hanzhiyin5239 4 роки тому +1

    Brilliant! I like you explaining the etymology of these terms.

  • @DanielEliasKana
    @DanielEliasKana 4 роки тому

    Guy, your videos are just gold!

  • @victorpinasarnault9135
    @victorpinasarnault9135 4 роки тому

    This is a kind of video to watch over and over.

  • @goisenate
    @goisenate 2 роки тому

    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.

  • @KImtOs
    @KImtOs 4 роки тому

    one of the best videos, so far

  • @aminzarei1557
    @aminzarei1557 3 роки тому +1

    Although my mind stuck in those fish icons and couldn't map them into X,Y , but still useful :)

  • @troika_473h
    @troika_473h 4 роки тому

    This channel is just so amazing.

  • @sy-hungdoan4859
    @sy-hungdoan4859 4 роки тому

    I am now in absolute awe !!!

  • @Michael-ri8sg
    @Michael-ri8sg 4 роки тому

    Please do more of these! Loved it

  • @AlexSpieslechner
    @AlexSpieslechner 4 роки тому

    i appreciate your content so much. any time i think you've peaked, you surprise me again.

  • @FilipeOliveira94
    @FilipeOliveira94 4 роки тому

    Great vídeo! Thanks for that. Anxious for the sequel! :)

  • @TheJobCompany
    @TheJobCompany 4 роки тому +83

    "Java doesn't know how to understand PHP code" ~ I mean, who does?

    • @arafatzahan2082
      @arafatzahan2082 4 роки тому +1

      hhvm?

    • @GuRuGeorge03
      @GuRuGeorge03 3 роки тому

      ? the latest versions of Java and php actually are pretty damn similar if you use the type hinting in php.

  • @sssrigoku
    @sssrigoku 3 роки тому

    Not a single video from Fireship is a waste of time.... 👌✌️🔥🔥🔥

  • @RawPeds
    @RawPeds 4 роки тому

    Didn't know about idempotent. Thanks!

  • @Jesse_Carl
    @Jesse_Carl 2 роки тому +3

    Very nice... Now let's see you try to do Contravariant, Monad, and Endofunctor

  • @MarkEichin
    @MarkEichin 2 роки тому

    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 :-)

  • @add1989
    @add1989 4 роки тому +2

    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.

  • @gokseningngr
    @gokseningngr 4 роки тому

    The humor in this video... He must have so much fun editing that :D

  • @luwi8125
    @luwi8125 2 роки тому

    In the picture at 6:16, doesn't C (and C++ and Rust) count as a low level programming language?

  • @cheaterman49
    @cheaterman49 4 роки тому

    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 :-)

  • @TheBenjaminsky
    @TheBenjaminsky 3 роки тому

    I'd mention that the terms marshaling and unmarshaling are basically synonyms for serialize and deserialize in languages like Go and C.

  • @ridl27
    @ridl27 4 роки тому

    lol such an easy & clear explanations. especially the one with abstraction. ty.

  • @cenacr007
    @cenacr007 3 роки тому

    added to watch later , just before my interview 😂

  • @motabarjavaid5482
    @motabarjavaid5482 4 роки тому

    Dude you help a lot more than most

  • @abhinav.sharma
    @abhinav.sharma 4 роки тому

    This video was profusely exquisite 👌
    Jeff rocks 🔥

  • @wateenafzal2963
    @wateenafzal2963 3 роки тому

    1:43 what vscode theme do you use?
    for the green dots in the windows gutter??

  • @DodaGarcia
    @DodaGarcia Рік тому

    God I finally understand what memoization means, thank you!

  • @BlockCylinder
    @BlockCylinder 2 роки тому

    Did you ever watch Patriot on Amazon? Lots of good jargon there. Skip the second season.

  • @MikeM8891
    @MikeM8891 2 роки тому

    Programming is like an onion, it has layers and the deeper you go the more it makes you cry.

  • @freddyfozzyfilms2688
    @freddyfozzyfilms2688 2 роки тому

    that predicate definition would make any type theorist furious

  • @exortions
    @exortions 2 роки тому

    love the office space clip!

  • @shk8089
    @shk8089 4 роки тому

    Wow, much simple, so understand

  • @danieljayne8623
    @danieljayne8623 3 роки тому

    Thanks for making memoization less scary!

  • @lorem2057
    @lorem2057 4 роки тому

    8:00, The variable "dataFromJS" is assigned to a string containing a JavaScript object not Json data? idk if you meant that

  • @jamesmorrison9893
    @jamesmorrison9893 2 роки тому

    This is a great video, very helpful

  • @matteogheza
    @matteogheza 4 роки тому

    Nobody:
    Programmers in Sci-FI films: 0:00

  • @AkshayKumar-es7pc
    @AkshayKumar-es7pc 4 роки тому +3

    Awesome content 💯

  • @Jackson_Zheng
    @Jackson_Zheng 10 місяців тому

    I learned the word idempotent from Tom Scott's video "The Two Generals Problem". Just wanted to put that out there.

  • @faik...
    @faik... Рік тому +1

    3:49 the function isn't actually named have fun :O

  • @GregBressler
    @GregBressler 2 роки тому

    You had me at Turboencabulator!😄

  • @JohnNecirRebellion
    @JohnNecirRebellion 4 роки тому +5

    "Coding is more an Art than Science."
    Which to me, coding is not explaining but rather expressing.

    • @tg5127
      @tg5127 4 роки тому +2

      True

  • @manishgautam2424
    @manishgautam2424 Рік тому

    Superb , need more such

  • @talhaibnemahmud
    @talhaibnemahmud 4 роки тому +1

    I really really like the interface and the theme of your IDE.
    Which one is it? Adobe Brackets?
    What Theme is it.
    Please make one video about it.
    We'll deeply appreciate it. ❤️

    • @DendrocnideMoroides
      @DendrocnideMoroides 2 роки тому

      I do not know about the theme but the IDE is definitely VS Code (and yes the VS Code is a very good IDE)

  • @gabrielcoelho1623
    @gabrielcoelho1623 4 роки тому +1

    I've never been this early! Great content

  • @mvgiacomello
    @mvgiacomello 2 роки тому

    VERY nice video. Thanks!

  • @richardkirigaya8254
    @richardkirigaya8254 4 роки тому

    This is pure gold...

  • @Nikhil-eg9zc
    @Nikhil-eg9zc 4 роки тому

    cant wait to brag on the interviewer, that will be the first time the interviewee kept the interviewer in confusion and not vice versa

  • @Brunoenribeiro
    @Brunoenribeiro 4 роки тому +1

    Now I'm ready to use a turboencabulator

  • @abdelrhmanhashem3256
    @abdelrhmanhashem3256 2 роки тому

    thank you bro, that was informative.

  • @Exilum
    @Exilum 2 роки тому

    I didn't know anonymous functions meant the same thing than lambda functions. Turns out than as usual, the hardest part is actually knowing the right terms to use.

  • @innovationscode9909
    @innovationscode9909 4 роки тому

    In C#, Abstract Class doesn't hide implementation details but define, specify and mandate what must be implemented. I would have expected just defining a function, then calling it as an example of abstraction. In Js land, For example, importing a module, and calling it's function is an example of abstraction, as it has hidden all the implementation details...hence functional abstraction.

  • @erikbustos2187
    @erikbustos2187 2 роки тому

    Awesome content as always

  • @Its_Pritam_
    @Its_Pritam_ 4 роки тому

    For first 15 seconds I questioned my whole existence!

  • @lucio8794
    @lucio8794 4 роки тому

    Great video, very useful and well explained, I'm just waiting for one where you explain technospeak

  • @rondamon4408
    @rondamon4408 4 роки тому

    Very ephemeral. Good to see your idempotence.

  • @justintime802
    @justintime802 2 роки тому

    Nice work! 😃

  • @robertbuliga2248
    @robertbuliga2248 4 роки тому

    I know is a newbie question but can you explain, please, what
    ' : animal is Cat'
    in isCat function declaration means???
    I didn't knew that you can type something else there besides the returned TYPE of that function...

  • @RobertShaverOfAustin
    @RobertShaverOfAustin 4 роки тому

    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?

  • @adnanbadshah3425
    @adnanbadshah3425 4 роки тому

    THA BEST VIDEO EVA!!!

  • @talkingmango8658
    @talkingmango8658 4 роки тому

    This is amazing but if you wrapped around and went over your original statement in the beginning it’d be even better!

  • @printTest
    @printTest 4 роки тому

    need more of this

  • @AlvinGreat
    @AlvinGreat 4 роки тому +2

    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!

  • @dadestor
    @dadestor 3 роки тому

    hello in your python example of json should use quotes and you cannot use single quotes with json

  • @babakkarimiasl8127
    @babakkarimiasl8127 4 роки тому

    helpful thank you . what is the music that starts at 00:03?

    • @minasie
      @minasie 4 роки тому +1

      I want to knowww

  • @anweshandev
    @anweshandev 2 роки тому

    Fun fact: We were made to learn a language called Prolog. It did have *predicates* all over

  • @Tiddle_s
    @Tiddle_s 2 роки тому

    They could both from the same latin root but I couldn't trace memo further than memorare
    memor -> memorial -> memorie -> memory
    momorare -> memorandum -> (memo)

  • @sdstorm
    @sdstorm 2 роки тому

    This is all well and good, but where is the link to the turboencabulator talk? That's what I really want to learn about.

  • @manu.g91
    @manu.g91 4 роки тому

    Can you make a video on all the customisation you have made on VSCode. Your vs looks great!!!

  • @Tvde1
    @Tvde1 2 роки тому

    why should PUTs be idempotent? Don't you usually save the last modified date?