4 Programming Paradigms In 40 Minutes

Поділитися
Вставка
  • Опубліковано 27 лис 2024

КОМЕНТАРІ • 522

  • @123userthatsme
    @123userthatsme 6 років тому +695

    2:49 Objected-oriented programming w/Ruby
    10:48 Functional programing w/Racket
    19:46 Logic programming w/Prolog
    32:08 Procedural programming w/Assembly

  • @VOID-nq4oq
    @VOID-nq4oq 4 роки тому +158

    13:15 "math is not particularly interesting on its own"
    *angry mathematician noises*

    • @VOID-nq4oq
      @VOID-nq4oq 3 роки тому

      @@JinnGuild good

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

      There are a select few who love math for what it is. Most love it for what it can do, or they "hate it".

  • @MrHatoi
    @MrHatoi 6 років тому +72

    After going through LISP and Prolog I was actually relieved when assembly came up!

  • @writingpanda
    @writingpanda 6 років тому +224

    I love this talk. She did a great job with this.

  • @immortalsofar5314
    @immortalsofar5314 4 роки тому +21

    I once saved a massive project by implementing 68K assembler's link instruction (learned on Commodore's Amiga) in CICS COBOL II on a mainframe to create a stack frame. The mainframe guys hadn't even heard of pointers, let alone realised that that was how the Linkage section worked, and COBOL II had just introduced pointer functionality so having 3 lines of code that solved their problem it seemed like magic to them.

    • @apexhacker346
      @apexhacker346 9 місяців тому

      train me

    • @immortalsofar5314
      @immortalsofar5314 7 місяців тому

      @kwccoin3115 Of course it was available in assembler but not COBOL. The linkage section works by pointers but it wasn't until COBOLII that you could use "set address of..." to use them yourself.

  • @ViktorEngelmann
    @ViktorEngelmann 6 років тому +111

    23:00 The :- in prolog is a logical implication from right to left, not left to right.

    • @KbIPbIL0
      @KbIPbIL0 6 років тому +20

      wow now it actually made more sense to me :) thanks

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

      Oh, thank you! Now i understand the example at 31st minute

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

      that’s right. “if A then B” means “A implies B”, not “B implies A”.

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

    After watching this I feel more comfortable venturing onto other languages. I was always afraid it would somehow confused me and lead me to forgetting my primary language but now I see it will only make me better if anything especially if it is another style of programming

  • @iAmTheSquidThing
    @iAmTheSquidThing 6 років тому +221

    This was actually pretty fascinating. I kind-of want to learn a logic programming language now.

    • @greenghost2008
      @greenghost2008 6 років тому +5

      Object Oriented ones are the simplest imo

    • @SamBIllium
      @SamBIllium 6 років тому +20

      Try Haskell. You can basically do all the logic stuff Prolog can do (like pattern matching! Yay!) plus a lot of really neat functional programming things. It will break your brain in a good way.

    • @iAmTheSquidThing
      @iAmTheSquidThing 6 років тому

      Sam MacKinnon Yeah, I've learned a bit of Haskell, and got quite into the functional way of doing things. So you're saying it can be used as a logic programming language?

    • @SamBIllium
      @SamBIllium 6 років тому +3

      Yeah, I think if you take advantage of pattern matching, you can do a lot of the same things -- I took a course where we learned Prolog in the first month and a half and Haskell for the second half, and a lot of the Prolog logic ideas could be carried over and expanded on in Haskell. That being said, I clicked into the functional stuff more than the logic stuff, so it may just be that I understood Haskell better than Prolog :P

    • @timh.6872
      @timh.6872 6 років тому +13

      Sam MacKinnon Using Haskell as a logic language is less than ideal. While it looks like they have similar features, their fundamental understandings of computation is vastly different. If you really wanted to do logic programming with Haskell, you'd use the type system as a theorem prover, which it was not designed for. An illustrative example is Aphyr's "Typing the Technical Interview" post.

  • @KoltPenny
    @KoltPenny 5 років тому +227

    You missed the opportunity to say "vs. Infix Postfix"

  • @amateruss
    @amateruss 6 років тому +683

    If you are wondering what CS grads can do, this is one of the most prominent examples there is. They eat fundamental concepts for breakfast.

    • @theblackhundreds7124
      @theblackhundreds7124 5 років тому +75

      You must be from outside of California where jobs aren't in massive quantity for programmers. I see alot of programmers from CS degrees who simply dont have such basic concepts down. Sadly, I have known plenty of CS degree indivduals who sadly never took the time to do this and kind of just treated these classes like general ed (memorize and forget momentarily after test and semester)

    • @kirangouds
      @kirangouds 5 років тому +6

      @@theblackhundreds7124 true

    • @adrianbundy3249
      @adrianbundy3249 5 років тому +31

      @@theblackhundreds7124 Unfortunately, that is what at least 2-4 year schools I have had experience seem to do. They have a series of general criteria they want the students to learn, in a somewhat tight time-frame, and you test them for that. There is no emphasis on a deeper or better understanding, they leave that to the student (who usually doesn't feel the inclination to do too much extra with all the other large bits of course-work for other classes). I think how financial aid and government laid down dos-don'ts has gotten in the way for a lot of how these colleges operate, and not for the better.

    • @nickbrutanna9973
      @nickbrutanna9973 5 років тому +18

      This is what they SHOULD be able to do... But most schools are too busy running up the tab on their student loans and indoctrinating them into the liberal cult to actually teach them.

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

      @The Illusionist Idk, sounds like a bad CS course to me.

  •  6 років тому +12

    Long time ago, about twenty years, I had to solve the same problem with the same language (PROLOG) at the university. Many things have changed but I never thought to find the solution 20 years after.

  • @NevadaWilliford
    @NevadaWilliford 6 років тому +16

    I thoroughly enjoyed this talk. Some negative comments have been made but I don't think the intent of the talk was for you to follow every example completely and understand every detail. I think the intent is to show that different languages embody different mindsets when solving a problem. More importantly, you can learn new languages and think differently about solving problems and you should.

  • @surohittandon6082
    @surohittandon6082 5 років тому +2

    Unbelievably good talk. As a junior MLE looking to learn more about programming fundamentals she crushed it.

  • @cupajoesir
    @cupajoesir 6 років тому +15

    This chick has mad skills. I have a whole new respect for prolog. Awesome talk.

  • @MadpolygonDEV
    @MadpolygonDEV 2 роки тому +5

    Kind of appreciate C++ which doesnt force you to use a certain style and allows you to pick the best of each

  • @speirnhujin8940
    @speirnhujin8940 6 років тому +225

    at 33:38 I lost my shit.
    The dude that says ahh in understanding was so unexpected

    • @tech6hutch
      @tech6hutch 5 років тому +22

      I didn't hear it until you pointed it out

    • @leonbishop7404
      @leonbishop7404 5 років тому +2

      @@tech6hutch but I did! :D

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

      This is huge.

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

      Near the first 10 minutes I had been doing a search on CAR and CDR. I got pretty much everything but what they said the acronyms stood for.
      When that guy went "ahhh" in the background much later, it shocked me out of my stupor (mind on tangents) and I heard the echo of what he was responding to. Only because of him did I get to go back and catch what she had just ran past. The object of my heart's desire.
      I programmed in assembly in college so it was familiar. I just didn't expect it to be mentioned in...was it Racket or Prolog...

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

      bruh you got that shit cranked up

  • @spicemasterii6775
    @spicemasterii6775 5 років тому +16

    Amazing talk! I totally didn't expect this. I didn't even know language like Prolog exists. Thank you. Learned a lot

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

      I did know it existed, and I did know the philosophy behind how it's supposed to work, and I did try to learn/understand its basics some time ago... and failed.
      This talk succeeded. :)

  • @kristypolymath1359
    @kristypolymath1359 4 роки тому +14

    I think that what many people do not realize is that we *think* in the same way that LISP programming is done. It's actually IMPOSSIBLE to know that you are adding two numbers (in your head) without telling yourself that you're going to add two numbers. Therefore, the operator should come first. Even if someone grabs an arbitrary collection of numbers, and you tell them "okay, now add them", just by saying that have placed higher priority on the operator than you have on the operands.

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

      interesting thought

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

      I see your point but you do say: „a times b”, which to me sounds more like an infix way, rather than prefix („multiply a by b”). Obviously, whichever works for you :) - I just prefer to visualise infix operators as functions, eg. „add(a,b)” or „multiply(a,b)”. BTW, that looks quite similar to Excel formulas ;P

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

    Somehow ruby syntax draws me off. I know I shouldn't be so serious about syntax, but programming languages are primarily designed to aid humans.

  • @tristanhurley9071
    @tristanhurley9071 6 років тому +10

    The syntax to abstract concept is the key.

  • @Sttuey
    @Sttuey 5 років тому +49

    My biggest takeaway is I need to avoid languages where the number of brackets required for the most basic thing exceeds the number of fingers I have 😅

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

      The biggest takeaway for me was that I need to confront more languages like that

  • @dskinnerify
    @dskinnerify 6 років тому +55

    Really really well done. I watch a lot of videos like this and this one is a gem.

    • @dimkir100
      @dimkir100 5 років тому +2

      Indeed this is a true gem! Sadly most of videos which public sees are just “recipes” on language syntax or framework, whereas this presentation marvellously shows cross paradigm programming and unlocks your mind from being locked onto syntax. A++ ps. I also like Kevlin Henney s videos : he also looks at code in more profound and conceptual way rather than just syntax.

  • @jd42010
    @jd42010 Рік тому +2

    Already loving this talk.
    After having an informal learning experience with code, it is very helpful in understanding the actual concepts of the language more in depth.
    Reallys helps my understanding of C# and makes me more comfortable venturing into C++

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

    Always hated math and scripts in highschool. Total 360 degree turn, obsessed with this stuff now, a beautiful and powerful art.

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

    Hobbyist with no formal comp sci background. Both func and logic look insanely fun to play around with. Def gonna try it out

  • @CodingPhase
    @CodingPhase 6 років тому +18

    god i love this video.... but damn that lisp language is ugly

  • @dirkwalker9686
    @dirkwalker9686 6 років тому +46

    Interesting talk. Logic programming was pretty weird but I'm tempted to try it out.

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

      It is mostly used for parsers or theorem solvers or modeling of non-deterministic automatons. And to be honest, it isn't really good for anything else. It is inherently slow, requires huge amount of RAM and it obviously has a significant mental overhead.

  • @RealToughCandy
    @RealToughCandy 6 років тому +81

    Wildly useful. Thanks Aja and Coding Tech.

    • @IOwnThisHandle
      @IOwnThisHandle 6 років тому +1

      Coding Tech did nothing but steal this video from some where else.

    • @RealToughCandy
      @RealToughCandy 6 років тому +9

      It's nice to meet you too, Bob. I hope you're having a nice day.

    • @xynyde0
      @xynyde0 6 років тому +2

      +Bob , there's something known as Creative Commons Attribution license.

    • @cupajoesir
      @cupajoesir 6 років тому

      @Bob It's called a curated list. And AFAIK Coding Tech never posts without authorization from the source if the license does not allow re-posting. And if you still want to piss all over the Cheerios you can go watch the original, it's linked to in the Description.

  • @FelonyVideos
    @FelonyVideos 6 років тому +4

    This was a great talk. Kudos.
    I was educated in machine code, assembly, basic, c, b, fortran, cobol, and cpp. I've sent things to space and made machines interact with humans in physical and direct mental ways.
    I understand why we need higher level languages and object oriented programming, but the fundamental problem of the "task at hand" getting beyond the brain of the programmer remains.
    The technological singularity is probably the moment we program the perfect programmer.
    But we can't have the perfect programmer until we have the perfect language. And by language, I mean human language, not programming language. From that, all else should be a trivial exercise for the common reader. We need a new language, one that is perfect, without ambiguity.
    It's just around the corner, we are almost there. This is scary, to be honest.
    I sure hope the TS is our servant, and not our master.
    Agriculture and domestication of animals was an order of magnitude advance for mankind. The industrial age was 2.5 orders of magnitude advance. The TS is an infinity power advance. We can't even imagine what the exponent is.
    Godspeed, fellow humans. You've been given an incredible beyond belief blessing, if you can keep it in your control. Make sure you always control it!

    • @Twisted_Logic
      @Twisted_Logic 5 років тому +1

      xu do se bangu la lojban

    • @FelonyVideos
      @FelonyVideos 5 років тому

      @@Twisted_Logic I fully agree!

    • @FelonyVideos
      @FelonyVideos Рік тому +2

      @maxmakman2682 I moved into a remote mountain homestead 1 year ago. That probably tells you everything.

  • @perkodanny
    @perkodanny 6 років тому +1

    I'm guessing there are a lot of Ruby programmers out there who either didn't go to college or didn't do so well there. It really explains a lot.

  • @BrandonOsborn404
    @BrandonOsborn404 5 років тому +50

    I like her presentation style, he organization, and that she's a cat person.

  • @nksyakirin
    @nksyakirin 6 років тому +6

    What a great talk, I know javascript but it gave me a lot of pain when I try to learn java and kotlin to build my first android app. Kind of miss the most fundamental different since I don't take any computer science degree.

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

    In lisp, "car" stands for "contents of address register" and "cdr" stands for "contents of decrement register."

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

      From the register names in the IBM model 704 on which LISP was originally developed. Incidentally FORTRAN was also written for the 704 and it's instruction set weirdness accounts for the odd way memory was laid out in original FORTRAN and for the notorious 3-way branch.

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

      @@davedaley9093 It's been so long that I had forgotten about those! Thanks for the trip down amnesia lane! ;)

  • @mrlithium69
    @mrlithium69 6 років тому +15

    Wow this was a lot to take in. She's cool for this one

  • @j-r-hill
    @j-r-hill 6 років тому +3

    This is only from March, but I've referred to this video a number of times already. Great presentation!

  • @dirtrockground4543
    @dirtrockground4543 3 роки тому +3

    13:10 "Math is not interesting on its own" I died inside lmao! Great talk though

  • @luizotaviocfg
    @luizotaviocfg 5 років тому +2

    I'll never understand why people usually study a primary discipline with multiple languages. I mean, I get that each language is based on a more appropriate paradigm. But I think learning languages is a secondary thing, that you do based on your needs. You just have to understand in first place what means object oriented, functional, logic and procedural programming, not the languages themselves. That's why I teach Programming Paradigms in Python, which is "multi-paradigm" and easy to learn. Logic programming is the only paradigm we approach with other language, PROLOG.

  • @coolworx
    @coolworx 6 років тому +21

    What a cool talk.
    Makes me want to learn LISP.

    • @leoassis3694
      @leoassis3694 6 років тому +5

      People say that it abuses the characters '(' and ')'.
      They might as well say there is no other valid flaw. It must be good!

    • @squirlmy
      @squirlmy 6 років тому +1

      Racket is designed from the ground up to teach functional programming. It is the rename of PLT Scheme, which is inseparable from the DrScheme IDE, which is as much a tutorial app as it is an environment. I assume you know the relationship between Scheme and LISP. Symbolics Inc. and TI and Xerox used to make LISP Machines in the 80s, whose OS was in LISP in the 80s. I believe LISP or LISP-like code was embedded in their CPUs. I used to daydream about getting my hands on one of those.

    • @nativechatter999
      @nativechatter999 5 років тому

      @@casperes0912 All those parentheses are part of the power of Lisp. Lisp's syntax is very uniform, making it easy to write macros that generate Lisp code. These macros make up a large part of the power of Lisp.

    • @felixthehuman
      @felixthehuman 5 років тому +2

      I think the "that's not really OO" might have started me down the road to finding out about smalltalk/squeak/pharo/SuperCollider.

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

    It's really nice of her to use modern languages. That makes this video digestible for even the beginners.
    Jokes aside, I find this really interesting but I'm obsessed with learning new languages, I would have assumed that most people would be turned off from the talk with such obscure languages used for the examples.

  • @richardlindgren5875
    @richardlindgren5875 5 років тому +4

    Finally someone who could explain the weird origins of car and cdr.

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

    'Assembly... Very very limiting'
    Have just remembered my study times when I had to solve problems in Post Machine language... Believe me, assembly is a very very syntax rich language ))

  • @dkutagulla
    @dkutagulla 11 місяців тому

    Ultimate lecture!!! Ma'am you rock - reminded me of my CS307 course at UT.
    ( loved that course). Your lecture Bought back memories of my undergraduate studies at UTCS before I 'chickened' out to UTECE. ( pan to fire).
    But UTCS forcing me into polyglotism made me better Computer Engineer.
    Being in EDA requires you to be a polyglot.

  • @TE89
    @TE89 6 років тому +26

    Loved this talk

  • @im-a-trailblazer
    @im-a-trailblazer 4 роки тому +2

    This is one the best tech talks i have ever seen, thanks!

  • @9to5Magic
    @9to5Magic 5 років тому +2

    Nice. That's the clearest explanation of Prolog I've seen.

  • @krazeemonkee
    @krazeemonkee Місяць тому

    i've watched so, soo many of these tech talks over the years + rarely ever do they contain ads that distract from your attention.. 10 mins in, and they've already played 3.. beyond excited for this talk but it's sad to see a favor of monetization over the integrity of the content/knowledge..

  • @mikesimms1
    @mikesimms1 6 років тому +184

    I use assembly on a regular basis - now get off my lawn, kids!

    • @moonbeam2926
      @moonbeam2926 6 років тому +85

      These whippersnappers will never understand the glory of assembly with their new-age techno languages like C and FORTRAN

    • @tzacks_
      @tzacks_ 6 років тому

      @@moonbeam2926 omg man, thanks :D top

    • @DodgyBrothersEngineering
      @DodgyBrothersEngineering 5 років тому +21

      @@moonbeam2926 Luxury... When I was a lad, I had to assemble my own binary before I could use it.

    • @csgowoes6319
      @csgowoes6319 5 років тому +53

      You aren't a real programmer unless you physically switch the transistors into the configuration of the code.

    • @tisurmaster
      @tisurmaster 5 років тому +37

      bro, I remember using stones and seashells to program. those were the good ol days.

  • @querydelacroix2919
    @querydelacroix2919 6 років тому +5

    The answer to the logic programming joke is 'Yes'. 'No' implies that there are no logic programmers who can screw in a lightbulb. 'Yes' implies that there is at least one answer to the query, and that the query itself was malformed in the first place, as the query *should* be something like, "?- logic_programmers_needed_to_change_lightbulb(X)."

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

    Shit, what an interesting talk. I wish I was there.
    But then again, I'm glad I'm not in New Orleans, lol.

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

    I wrote an assembler for nand2tetris assembly. One of the coolest assignments I've had to do.

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

    Brilliant talk: I am going to use it to introduce law students to ideas about computation and programming languages.

  • @bafi29
    @bafi29 2 роки тому +2

    Before this talk, I was afraid of functional programing... now I'm also afraid of logical and procedural.

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

      Procedural is just how any sane person solves tasks - top to bottom. It's just PURE procedural/functional without much abstractions is hard to wrap your brain around.

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

    This what I needed. Finally got something to comprehend these computer heavy terminologies.

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

    12:22 - 13:13, if you just think of (+ a b c d .....) as add(a, b, c, d......), it's not that bad.

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

    in the functional programming part. she taught the lisp how the Sicp teaches scheme, pretty reminiscent. loved it

  • @CodeTechandTutorials
    @CodeTechandTutorials 6 років тому +12

    That was excellent! Wish I saw this before some of my college courses.

  • @rowannieuport3942
    @rowannieuport3942 6 років тому +1

    Where were you when i took my first comp sci courses in the late 70s!! Wonderful talk. I am keen to learn Prolog now.

  • @lost4468yt
    @lost4468yt 6 років тому +22

    Object orientated programming is fundamentally flawed at its core - fite me irl if you disagree.
    The problem with the object in OOP is that it's fundamentally only a good representation of a static map of the real world. In theory objects look like a good way to represent the world as we have a 2019 Mercedes G-Class (which is apparently the coolest new SUV according to Doug DeMuro in the sidebar) which is a type of SUV, which is a type of car, vehicle, etc. And we can have another class tree called a dealership (shop>utility building>building>etc) which perhaps has a list of vehicles and we can easily add that SUV in. That's great, when you freeze time and put everything in the world into this object mold you can pretty accurately get what is essentially a map.
    The problem is these maps don't work in a changing world at all. Somewhere down the line the requirements are going to change, and let's say after 6 months the following changes have gradually been made:
    The dealership also starts selling timeshares.
    State law requires dealerships to keep a record of all of the dealerships their vehicles have ever been at.
    We need to keep a list of employees who work at the dealership
    We need to keep a list of which, when and where employees drove any vehicle (including their own - liability for hitting parked vehicle)
    We've expanded and need to keep track of multiple dealerships - employees and vehicles can be moved between them
    The new team wants to take a bunch of statistics - which customer test drove what, for how long
    What you'll see is that unless you are willing to do basically entire ground-up rewrites (+ if you have an API then fuck 'em) for most of those features then you quickly end up:
    Needing to access, e.g. the dealership class from everywhere. There's now probably references to it inside vehicles, employees, etc. In the original map we could use the traditional OO inheritance map to send messages between the dealership class and the vehicles, but now that has broken down. Instead of using the inheritance hierarchy we end up just sending the dealership class everywhere, and/or:
    we end up doing something worse and creating a pseudo-global variable class. Maybe we don't do this when we suddenly need the dealership class reference everywhere, but in the later changes we end up needing references to employees everywhere as well. It's not easy for us to come up with a communication method without a significant rewrite, so instead what we may end up doing is creating some sort of class called "CompanyMetadata" and in it we just store a list of employees and dealerships, then we just pass a reference of this all over the place. And we've essentially created global variables. We're also feeling that chaos coming into the code as we start seeing the other problem with OO, which is we're creating classes for the sake of it.
    We've also got another problem now, which is that the dealership is being referenced everywhere and it's becoming hard to manage the dealership itself. This is where we start feeling more chaos as we're about to start creating classes to deal with the dealership which will have stupid names like "manager", "controller" and other nouns. Now we've ended up with some sort of DealershipController class which has code to manage the dealership.
    Now someone could come in here, and build a nice OOP way to rewrite all of the code, where everything communicates nicely in its hierarchy, and various classes can be decorated with things like employee, etc. And the model they come up with looks as brilliant as the original for the project did.
    This is how so many projects tend to end up looking, and you can generally tell right away because you're jumping all over, up, down, left and right through a bunch of different files before you find the most basic functionality of the project.
    I think this is where we get the big problem with OOP, which is that it's only good for describing a map of the world. It fails because in reality which objects end up needing to talk to one another has no relation to any sort of hierarchy and the more and more unpredictable interactions between objects we need to account for, the worse and worse the code generally seems to get.

    • @crazyconan28
      @crazyconan28 6 років тому +7

      Good example and fair point, but OPP is one style of several, as mentioned in the talks languages are a tool and some work much better than others. There are good ways to write code that should be requirements people don't do due to lack of time for project or laziness.
      What type of language are you more of a fan of?

    • @kaseyboles30
      @kaseyboles30 6 років тому +2

      Yep, spaghetti code from hell. The world is NOT static. Nor is action and thing the same as oop generally aims for. The data and the code are separate things. Either should be changeable in detail without screwing up the usability of the other. You cannot do that very easily where the data must have it's own special handler basically baked into.

    • @ZenoDovahkiin
      @ZenoDovahkiin 5 років тому +6

      "Different problems match different solutions." - "No they don't here, have one example of something that creates problems in OOP, therefore it is com pletely useless, fight me!"

    • @chukim8012
      @chukim8012 5 років тому +3

      He doesnt mention any superior alternatives. Obvious flaw in your argument.

    • @YouRxFinisheD
      @YouRxFinisheD 5 років тому +3

      This is just a general problem in programming, one of the biggest strong point of OO is that it can deal with this. Good OO keeps coupling low and has high cohesion, this makes it easy to extend. Trust me this is the first question they will ask in an OO course, "now adapt your design to an extended situation". This is actually where OO really shines, you can reason about and extend very large and complex software. I would be curious why you think any other paradigm does this better.

  • @SomeAdam
    @SomeAdam 6 років тому +3

    This video is fantastic - brief, informative, and providing extra resources to go in depth.

  • @amypellegrini1732
    @amypellegrini1732 5 років тому +4

    This is such a clear-cut explanation. Awesome

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

    Minor correction, LISP actually stands for "Lots of Irritating Superfluous Parentheses"
    Seriously tho, great talk. I really enjoyed the breakdown.

  • @monk_mode8273
    @monk_mode8273 5 років тому +3

    Thank you for uploading this video! It's really awesome and makes things very clear!

  • @ViktorEngelmann
    @ViktorEngelmann 6 років тому +1

    29:48 the prolog code is wrong. The recursive call in the second clause must have R instead of [F|R], because when you put F there, it allows you to "re-use" a coin that has already been deposited. The way it is here, ?- change(5, [2,1,1,1], C). gives you C=[2,2,1], so two 2s, although there was only a single 2 in the available coins.

    • @ViktorEngelmann
      @ViktorEngelmann 6 років тому +1

      By the way: this also works with 2 lines less:
      change(0,_,[]).
      change(S,[F|R],[F|X]) :- change(Q,R,X), S is F + Q.
      change(S,[_|R],X) :- change(S,R,X).
      (it is slower though, because it goes through all sub-lists and selects all that have the right sum).

  • @gabrielpfgm
    @gabrielpfgm 6 років тому +7

    I'm sorry but the choice for the functional programming language looks awful to me. Haskell is way more elegant and readable

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

      And it is actually purely functional, as well.

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

    This is an excellent talk - well presented and fascinating. The speaker is great and has a nice sense of humour. If you're serious about programming you should definitely watch it - even if you've touched on the topics (see "The Red Willow" below) previously.

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

    40:36 THIS.
    I mean... thanks, the talk was great, I finally understood the basics of prolog, but... 40:36 THIS... Info about this book existing was such a huge, HUGE BEAUTIFUL GIFT for me... thank you...

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

    Fantastic video! I definitely want to learn more about Prolog!

  • @magmabot1016
    @magmabot1016 2 місяці тому

    The question does not specifically ask for the area, in some contexts 1/4 of the circle may be shaded

  • @ThomasGodart
    @ThomasGodart 5 років тому +2

    Excellent talk & pace, great stage presence, neat examples. Thanks very much 👍 Appreciated

  • @kozmikhero6749
    @kozmikhero6749 6 років тому +5

    OOR and Func programming looks ight. That other stuff is going to be a HARD pass for me.

  • @righton3730
    @righton3730 6 років тому +7

    Excellent stuff! Thanks for sharing!

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

    The make-change function in Racket broke me, I mean the whole point of the function is to return a list with the change we're giving back to the customer, but the function she showed just keeps recursively calling itself with a decreased value of x, until eventually x reaches 0 and the function returns an empty list!
    Please correct me if I'm wrong

  • @ShinobiEngineer
    @ShinobiEngineer 6 років тому +6

    EXCELLENT TALK ! ! ! REALLY HELPFUL ! ! !
    THANK YOU AJA ! ! !

  • @chuckmoreland1258
    @chuckmoreland1258 6 років тому +3

    I think I want to learn Prolog... ugh. Great presentation.

  • @usbgus
    @usbgus 2 роки тому +2

    Alternative title: Woman flexes for 40 minutes

  • @WyzrdCat
    @WyzrdCat 5 років тому +8

    She is really smart. Man oh man do I wish my brain was this powerful.

  • @iamspencerx
    @iamspencerx 5 років тому +2

    As a CS grad, I can tell you, we keep up with this shit only when there is no way around it. When one of our profs decided she wants us to use only Lisp in her class, everyone dropped it for something else

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

    I think a bit misleading to show assembly for procedural. Java, C, C++, etc are all procedural but can also be functional -- they are hybrids and flexible.
    I like procedural as the core for logic, functional for pieces in which breaking a problem down is intuitive, and Objects for fragile state that should be packaged together and guarded.

  • @raymondjayjohnson693
    @raymondjayjohnson693 5 років тому

    Polyglots are respected for a reason. They are very rare.
    Please never again confuse median & average with far outliers. I get too much of this crap when I talk to business executives, who barely speak English and wouldn't know structured algorithmic breakdowns with conjugating a verb in any language other than their own. If then.

  • @luke_fabis
    @luke_fabis 5 років тому

    In the first example, wouldn’t it be more efficient to put a loop around each currency denomination, breaking out when the denomination is greater than the change owed, rather than having one really big loop that goes through a whole bunch of conditionals each time?

  • @iFireender
    @iFireender 5 років тому +2

    the one thing I'd like to criticize:
    Assembly is not 'old school'; Assembly is, for the most cases where it is actually used, just a transcription of machine language. It will always be used to get the basis of a physical system running unless we get a major paradigm shift from all current architectures.

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

      that instruction set she used is very old school. that looks like the early days of assembly language

  • @Zack-xz1ph
    @Zack-xz1ph 6 років тому +1

    nice. I hope one day I can understand everything she is saying

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

    Haskell is pure functional unlike Racket, but much shorter and does not need the sea of parenthesis. Same algorithm:
    make_change 0 _ = []
    make_change _ [] = error "Can't make change"
    make_change x (d : ds)
    | x < d = make_change x ds
    | otherwise = d : make_change (x - d) (d : ds)

  • @EzyoMusic
    @EzyoMusic 6 років тому +1

    That Assembly code blew my mind as much as the Prolog code did. Way cool!

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

      that was one shitty instruction set. it makes today's x86-64 instruction set look high level.

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

    Fantastic talk! I believe there might be an oversight tough? Assembly language is technically not procedural, right?. It's very low-level imperative, but it is not structured or procedural. Procedural implies subroutines / functions, which are not a feature of assembly languages. Assembly is a paradigm in itself, but it doesn't seem to follow procedural patterns natively? Or which procedural patterns did we see in the procedural examples? Loved everything about this video, but had this thought / nitpick / doubt.

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

    I always found OOP to be ridiculous. A class is just a data structure. An instance is just, well, one such data structure.

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

    This was the missing piece that helped me understand infix and prefix 💯

  • @KbIPbIL0
    @KbIPbIL0 6 років тому +3

    omg prolog is awesome as is this girl :)

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

    Thanks for this. It helped clear up a lot. Great presentation.

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

    I always get the sense that the OO crowd just haven't properly understood existential types ... and that if they *had* they'd abandon their dirty, mutation-focused ways and do normal, purely-functional programming.

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

      It's cruel to trap functions in objects ... Free the functions!

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

    Awesome, fell in love with prolog

  • @greenghost2008
    @greenghost2008 6 років тому

    This prefix thing looks weird but kinda grows on you have a few minutes.

  • @ianprado1488
    @ianprado1488 6 років тому

    Wow! Amazing speaker. I hope she does more

  • @User-cv4ee
    @User-cv4ee Рік тому

    Why does she say that the Ruby cashier example is not OO just before she moves to functional programming?

  • @bluefrancis14
    @bluefrancis14 5 років тому +1

    Why is that example for OO a bad example? What was the best thing that could've been done?

    • @YouRxFinisheD
      @YouRxFinisheD 5 років тому +5

      Cause she just wraps a procedural solution in a class no other objects no messages being passed, etc. Basically the problem domain is too small to make use of the usefull ideas of OO. You would need to model the whole supermarket to demonstrate OO properly

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

    So? Everything in C# is also an object. The same goes for Powershell, probably more programming languages as well.

  • @thekidsacademy3820
    @thekidsacademy3820 6 років тому +2

    Very fundamental! Amazing talk!

  • @VvVv-hw5rv
    @VvVv-hw5rv 5 років тому +1

    The talk is not about programming paradigm but about syntax of different languages.

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

    My brain is melting and I love it.

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

    Prolog seems super cool. It seems to work like my brain.