4 Programming Paradigms In 40 Minutes

Sdílet
Vložit
  • čas přidán 20. 07. 2024
  • One of the most important lessons I've learned is that programming languages are tools and not all tools are good for all jobs. Some tasks are easier to solve functionally. Some are clearly suited for OO. Others get simpler when you use constraint solving or pattern matching.
    Let's go on a whirlwind tour of 4 different programming languages emphasizing different programming techniques: OO, functional, logical, and procedural. You'll leave this talk with a better understanding of which languages are best suited to which types of jobs and a list of resources for learning more.
    EVENT:
    RubyConf 2017
    SPEAKER:
    Aja Hammerly
    PERMISSIONS:
    The original video was published with the Creative Commons Attribution license (reuse allowed).
    CREDITS:
    Original video source: • RubyConf 2017: 4 Progr...
  • Věda a technologie

Komentáře • 523

  • @123userthatsme
    @123userthatsme Před 5 lety +692

    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 Před 3 lety +154

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

    • @VOID-nq4oq
      @VOID-nq4oq Před 3 lety

      @@JinnGuild good

    • @terrymiller111
      @terrymiller111 Před 2 lety +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 Před 5 lety +72

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

  • @writingpanda
    @writingpanda Před 6 lety +224

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

  • @iAmTheSquidThing
    @iAmTheSquidThing Před 6 lety +221

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

    • @greenghost2008
      @greenghost2008 Před 6 lety +5

      Object Oriented ones are the simplest imo

    • @SamBIllium
      @SamBIllium Před 6 lety +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 Před 6 lety

      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 Před 6 lety +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 Před 6 lety +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.

  • @ViktorEngelmann
    @ViktorEngelmann Před 6 lety +111

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

    • @KbIPbIL0
      @KbIPbIL0 Před 6 lety +20

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

    • @alurma
      @alurma Před 4 lety +3

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

    • @solitone
      @solitone Před 4 lety +8

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

  •  Před 5 lety +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.

  • @MadpolygonDEV
    @MadpolygonDEV Před rokem +5

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

  • @KoltPenny
    @KoltPenny Před 5 lety +226

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

  • @amateruss
    @amateruss Před 6 lety +681

    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 Před 5 lety +74

      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 Před 5 lety +6

      @@theblackhundreds7124 true

    • @adrianbundy3249
      @adrianbundy3249 Před 5 lety +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.

    • @Nemesis816
      @Nemesis816 Před 4 lety +12

      But they utterly fail when presented with a real world problem to solve during a job interview. CS Grads are plagued by the illness of ivory tower thinking. It’s so comfortable up there, please don’t throw us in the cold water.

    • @nickbrutanna9973
      @nickbrutanna9973 Před 4 lety +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.

  • @spicemasterii6775
    @spicemasterii6775 Před 5 lety +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 Před 2 lety +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. :)

  • @pjf7044
    @pjf7044 Před rokem +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

  • @surohittandon6082
    @surohittandon6082 Před 5 lety +2

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

  • @dskinnerify
    @dskinnerify Před 6 lety +55

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

    • @dimkir100
      @dimkir100 Před 5 lety +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.

  • @j-r-hill
    @j-r-hill Před 6 lety +3

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

  • @immortalsofar5314
    @immortalsofar5314 Před 3 lety +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 Před 4 měsíci

      train me

    • @kwccoin3115
      @kwccoin3115 Před 3 měsíci

      It is just the application programmer. System one used control block and reading dump all the time. Hence “pointer” is there in a sense, as Assembler is the language of s/360 from day one. But the c pointer is not.

    • @immortalsofar5314
      @immortalsofar5314 Před 3 měsíci

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

  • @RealToughCandy
    @RealToughCandy Před 6 lety +81

    Wildly useful. Thanks Aja and Coding Tech.

    • @IOwnThisHandle
      @IOwnThisHandle Před 6 lety +1

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

    • @RealToughCandy
      @RealToughCandy Před 6 lety +9

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

    • @xynyde0
      @xynyde0 Před 6 lety +2

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

    • @cupajoesir
      @cupajoesir Před 6 lety

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

  • @cupajoesir
    @cupajoesir Před 6 lety +14

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

  • @monk_mode8273
    @monk_mode8273 Před 5 lety +3

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

  • @TE89
    @TE89 Před 6 lety +26

    Loved this talk

  • @dirtrockground4543
    @dirtrockground4543 Před 2 lety +3

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

  • @9to5Magic
    @9to5Magic Před 5 lety +2

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

  • @amypellegrini1732
    @amypellegrini1732 Před 5 lety +4

    This is such a clear-cut explanation. Awesome

  • @tristanhurley9071
    @tristanhurley9071 Před 5 lety +10

    The syntax to abstract concept is the key.

  • @righton3730
    @righton3730 Před 6 lety +7

    Excellent stuff! Thanks for sharing!

  • @ThomasGodart
    @ThomasGodart Před 5 lety +2

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

  • @NevadaWilliford
    @NevadaWilliford Před 6 lety +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.

  • @dirkwalker9686
    @dirkwalker9686 Před 6 lety +46

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

    • @Elite7555
      @Elite7555 Před 4 lety +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.

  • @jd42010
    @jd42010 Před 11 měsíci +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++

  • @im-a-trailblazer
    @im-a-trailblazer Před 4 lety +2

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

  • @Sttuey
    @Sttuey Před 4 lety +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 Před 4 lety +7

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

  • @speirnhujin8940
    @speirnhujin8940 Před 6 lety +225

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

    • @tech6hutch
      @tech6hutch Před 5 lety +22

      I didn't hear it until you pointed it out

    • @leonbishop7404
      @leonbishop7404 Před 4 lety +2

      @@tech6hutch but I did! :D

    • @powermetallistic2293
      @powermetallistic2293 Před 3 lety

      This is huge.

    • @darksalmon
      @darksalmon Před 3 lety +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 Před 2 lety +1

      bruh you got that shit cranked up

  • @rowannieuport3942
    @rowannieuport3942 Před 6 lety +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.

  • @kornbread5359
    @kornbread5359 Před 4 lety +6

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

  • @kristypolymath1359
    @kristypolymath1359 Před 4 lety +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 Před 3 lety

      interesting thought

    • @ansidhe
      @ansidhe Před rokem

      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

  • @17rusy
    @17rusy Před 5 lety +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.

  • @mrlithium69
    @mrlithium69 Před 6 lety +15

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

  • @sethjchandler
    @sethjchandler Před 4 lety +1

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

  • @contemplator1993
    @contemplator1993 Před 4 lety

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

  • @perkodanny
    @perkodanny Před 5 lety +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.

  • @thekidsacademy3820
    @thekidsacademy3820 Před 6 lety +2

    Very fundamental! Amazing talk!

  • @bruhmoment1835
    @bruhmoment1835 Před 3 lety +2

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

  • @coolworx
    @coolworx Před 6 lety +21

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

    • @leoassis3694
      @leoassis3694 Před 6 lety +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 Před 6 lety +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 Před 4 lety

      @@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 Před 4 lety +2

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

  • @Adam-yr2nq
    @Adam-yr2nq Před 6 lety +3

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

  • @MethodOverRide
    @MethodOverRide Před rokem +1

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

  • @richardlindgren5875
    @richardlindgren5875 Před 5 lety +4

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

  • @CodingPhase
    @CodingPhase Před 6 lety +18

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

  • @nove1398
    @nove1398 Před 6 lety +5

    great video, very informative

  • @gs8323
    @gs8323 Před 2 lety

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

  • @ianprado1488
    @ianprado1488 Před 6 lety

    Wow! Amazing speaker. I hope she does more

  • @andreagrossetti7589
    @andreagrossetti7589 Před 4 lety

    Awesome, fell in love with prolog

  • @Sivet555
    @Sivet555 Před 6 lety +1

    I'm in love. That was amazing :)

  • @mikesimms1
    @mikesimms1 Před 6 lety +184

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

    • @moonbeam2926
      @moonbeam2926 Před 5 lety +86

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

    • @tzacks_
      @tzacks_ Před 5 lety

      @@moonbeam2926 omg man, thanks :D top

    • @DodgyBrothersEngineering
      @DodgyBrothersEngineering Před 5 lety +21

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

    • @csgowoes6319
      @csgowoes6319 Před 5 lety +53

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

    • @tisurmaster
      @tisurmaster Před 5 lety +37

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

  • @Unit_00
    @Unit_00 Před 2 lety

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

  • @dkutagulla
    @dkutagulla Před 7 měsíci

    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.

  • @CodeTechandTutorials
    @CodeTechandTutorials Před 6 lety +12

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

  • @bobDotJS
    @bobDotJS Před 3 lety

    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.

  • @ShinobiEngineer
    @ShinobiEngineer Před 6 lety +6

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

  • @saumeeldesai750
    @saumeeldesai750 Před 2 lety

    Thank you for sharing your knowledge and thought process :)

  • @luke_fabis
    @luke_fabis Před 5 lety

    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?

  • @markcollinscope
    @markcollinscope Před 2 lety +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.

  • @cpuwrite
    @cpuwrite Před 4 lety +1

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

    • @davedaley9093
      @davedaley9093 Před 4 lety

      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 Před 4 lety

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

  • @bafi29
    @bafi29 Před 2 lety +2

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

    • @janAkaliKilo
      @janAkaliKilo Před rokem

      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.

  • @stnhndg
    @stnhndg Před 3 lety +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 ))

  • @murad4485
    @murad4485 Před 5 lety

    very useful talk. she did a great job

  • @BrandonOsborn404
    @BrandonOsborn404 Před 5 lety +50

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

  • @Kingromstar
    @Kingromstar Před 5 lety

    Great talk, very captivating

  • @labwax
    @labwax Před 5 lety

    Awesome talk. I learned a lot :-D

  • @DudeWatIsThis
    @DudeWatIsThis Před 3 lety +8

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

  • @FelonyVideos
    @FelonyVideos Před 5 lety +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 Před 5 lety +1

      xu do se bangu la lojban

    • @FelonyVideos
      @FelonyVideos Před 5 lety

      @@Twisted_Logic I fully agree!

    • @FelonyVideos
      @FelonyVideos Před rokem +2

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

  • @Albert-fe8jx
    @Albert-fe8jx Před 6 lety

    Thank you. Great talk.

  • @saurabhverma7366
    @saurabhverma7366 Před 3 lety +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.

  • @sudeepkuchara5287
    @sudeepkuchara5287 Před 2 lety

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

  • @danielchuang7218
    @danielchuang7218 Před 2 lety

    Fantastic upload!

  • @akab211
    @akab211 Před 5 lety +1

    This is awesome!

  • @chuckmoreland1258
    @chuckmoreland1258 Před 6 lety +3

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

  • @luizotaviocfg
    @luizotaviocfg Před 4 lety +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.

  • @alexgorodecky1661
    @alexgorodecky1661 Před 6 lety

    Not bad. Especially about Prolog. Thanks

  • @MrBledi
    @MrBledi Před 5 lety

    why storing cets as floating number is wrong? Does it have to do with dynamic memory allocation?

    • @acestapp1884
      @acestapp1884 Před 5 lety

      It's because 1/100 is a repeating fraction in binary and cannot be added exactly. After repeated multiplications and additions the machine can lose or gain a cent.

  • @jviper2004
    @jviper2004 Před 4 lety +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.

  • @Zack-xz1ph
    @Zack-xz1ph Před 5 lety +1

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

  • @ViktorEngelmann
    @ViktorEngelmann Před 6 lety +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 Před 6 lety +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).

  • @MidnightSt
    @MidnightSt Před 2 lety

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

  • @KbIPbIL0
    @KbIPbIL0 Před 6 lety +3

    omg prolog is awesome as is this girl :)

  • @kedarpednekar9582
    @kedarpednekar9582 Před rokem

    nice lecture for quick review

  • @nopnop4790
    @nopnop4790 Před 2 lety +1

    Hi there! noob over here, still studying OO (C#).
    I've always used float variables to save data like money, or any floating numbers that aren't really large.
    I've noticed some of my professors use double instead, but they said it's basically the same thing and not to worry about it for now.
    I'd like to know why is it a bad idea to use float in the situation described? (saving an amount of money) and why is it better to use int instead of float or double?
    Thanks!

    • @joelkronqvist6089
      @joelkronqvist6089 Před 2 lety +5

      Well I'm no expert myself, but I guess there are two reasons:
      First, floating point numbers have rounding errors due to their binary representation. For example, in most languages, 0.1 + 0.2 = 0.30000000000000004. This isn't very good when dealing with money: someone would probably find a way to create money from nothing with errors like these, and imprecision is anyways not acceptable in this case.
      Second, it takes up more room. You will never use more than two decimals with money, and pretty much all floating point types have more decimals, so it is a waste of memory. With integers you can use the memory allocated to your program more effectively.
      There may be more reasons, but these seem sensible to me.

    • @Hwyadylaw
      @Hwyadylaw Před 2 lety +2

      ​@@joelkronqvist6089 You might want to use more than two decimals for money in a number of cases. Floating point values don't really have "decimals" in that way. They are represented in the form sign * significand * 2 ^ exponent. In a single-precision float the sign is 1 bit, the significand is 23 bits, and the exponent is 8 bits, for a total of 32 bits.
      But yes, the main reason is that floats (unless they're special floats with a base of 10) can't represent every value we might need to store, such as 0.2, and when dealing with money you have to be exact.

  • @greenghost2008
    @greenghost2008 Před 6 lety

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

  • @Bm23CC
    @Bm23CC Před 5 lety +1

    The first ruby program was quite messy> I had the same for a coding interview and I did it in a while loop with an if else if statements and its way easier.

    • @kizitoonyeagusi2824
      @kizitoonyeagusi2824 Před 4 lety

      Nobody cares... damn!! Show offs... as long as everyone gets the message, dey cool with it ok.

  • @PhilipAlexanderHassialis
    @PhilipAlexanderHassialis Před 6 lety +2

    But what happened @39:00 when the sound was "cut"?

    • @YouLilalas
      @YouLilalas Před 4 lety

      Philip Alexander Hassialis We will never know.

  • @querydelacroix2919
    @querydelacroix2919 Před 6 lety +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)."

  • @bluefrancis14
    @bluefrancis14 Před 5 lety +1

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

    • @YouRxFinisheD
      @YouRxFinisheD Před 5 lety +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

  • @cloudkungfu
    @cloudkungfu Před 3 lety

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

  • @jennifermeier3873
    @jennifermeier3873 Před 3 lety

  • @amorestperpe
    @amorestperpe Před 4 lety

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

  • @jasonreviews
    @jasonreviews Před 6 lety +2

    wow. I learned ruby in one lecture. haha

  • @FredF78
    @FredF78 Před 5 lety

    Correct me if I am wrong but the last example must be some form of quasi assembly? Or is it corresponding to a real architecture?

    • @pH7oslo
      @pH7oslo Před 5 lety

      As real as any abstract architecture can be, I guess. It's for the (educational) nand2tetris hack computer - it's been implemented in hardware in a number of ways, but it's not manufactured by anyone (AFAIK) if that's what you're asking.

  • @qwiglydee
    @qwiglydee Před 5 lety

    Isn't SICP the book kinda obsolete?
    The original MIT course 6.001 is switched to python long ago.

    • @greyfade
      @greyfade Před 5 lety

      It really isn't obsolete. I'm not sure anyone really understands MIT's reasoning for switching to Python beyond the fact that it's currently popular and Scheme isn't; but Scheme is still a very powerful and useful language that does a better job demonstrating the relevant concepts than Python ever could.

  • @sieve5
    @sieve5 Před 6 lety

    You're really smart haha!
    Ruby sounds cool from a perspective of loving python and javascript but not so much C

    • @EvenTheDogAgrees
      @EvenTheDogAgrees Před 6 lety +2

      Ruby is pretty neat. I'm a Python dev, but I had to use Ruby on Rails for one of my projects. It was quite easy to pick up the basics and get comfortable with it in a short amount of time.

  • @matt79006
    @matt79006 Před 5 lety

    awesome awesome video.

  • @safwanljd
    @safwanljd Před 3 lety

    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

    • @brainguide20
      @brainguide20 Před 2 lety

      At each step of the recursion, it concatenates the current denomination to the list being built recursively.
      For x = 2500, the recursive calls would produce (cons 2000 (cons 500 ('[ ])) or [2000, 500]