John Carmack's keynote at Quakecon 2013 part 4

Поделиться
HTML-код
  • Опубликовано: 6 сен 2024

Комментарии • 76

  • @alanlee67
    @alanlee67 11 лет назад +22

    Pretty sure John Carmack is the only one that can stand up on stage and talk for hours about stuff that most people don't understand and we all still sit through the whole thing with open ears.

  • @3ombieautopilot
    @3ombieautopilot 5 лет назад +32

    Books and stuff to read John mentions in the talk:
    - Hackers: Heroes of the Computer Revolution
    - Paul Graham's esseys
    - The Unix-Haters Handbook
    - Programming Languages as Operating Systems: Revenge of the Son of The LISP Machine
    - Structure and Interpretation of Computer Programs

  • @shayneoneill1506
    @shayneoneill1506 8 лет назад +14

    One of the best things I ever did was teaching myself forth. Its not a language I'd never use for "real" code, but it was great to be able to flip my brain upside down and think of things from the point of view of a stack and *all* my algorithms where viewed from another angle. Ultimately I think it made me a better coder. Forth teaches you the *real* zen of low level coding. Scheme teaches you the mathematical basis of algorithms and Smalltalk teaches you the *real* value of Object orientation. None you'll need much IRL, but it'll make you a better coder.

  • @Mcern
    @Mcern 11 лет назад +4

    I know about zero to nothing about programming. But on the contrary there's a real fascination in just watching this genius who set the foundation for shooter games. You do not need to know the (programming) language to be profoundly inspired by a man like this. I owe John Carmack sooo many of my childhood joys(such as Quake and Quake 2 - those games are pretty much the definition of my childhood gaming).

  • @PenguinDT
    @PenguinDT 11 лет назад +6

    I, too, learned my programming initially through QuakeC - thank you for that, Mr. Carmack :D
    I still remember taking my first actual programming class on C++ in high school, sitting down and getting the first 'hello world' example in front of me. My reaction was pretty much; "Wait what? This is it? I've been doing this for years with Quake, are you saying I can actually program stuff?" And on it went from there, now I have two games under my belt and third on the way.

  • @konorokingdom
    @konorokingdom 7 лет назад +38

    I want Carmack to read a bedtime story to me every night

  • @SchellScivally
    @SchellScivally 11 лет назад +11

    I would really, really love to see John's Haskell code.

  • @hal970fx
    @hal970fx 11 лет назад +3

    I'm a pretty big Lisp enthusiast, and I'd have to agree with everything John said.
    Lisps can be prone to things like type errors (though there are some efforts like the Shen Language which might mitigate these problems), and depending upon the Lisp dialect you're using, code that feels like it should be terse, can come out rather voluminous.

  • @galaxyexpress998
    @galaxyexpress998 11 лет назад +1

    Visual programming has been use quite a bit in the VFX world, especially for people using Houdini. We use something called Vops, which is pretty much a Visual Programming language. It gets little exposure, it has been done and used for a very very long time. Worth a look for anyone interested.

  • @FeelingShred
    @FeelingShred 5 лет назад +12

    breaking the myth of "OOP programming" that is shoved down our throats everywhere, love it

  • @Rope257
    @Rope257 2 года назад +2

    It being 2022 now, does anyone know if Carmack managed to push these ideas to reality? Or maybe a follow-up talk?

  • @nimst3
    @nimst3 7 лет назад +7

    SICP was life-changing for me. But, I also love statically-typed, pure FPLs too. I use Lisp-variants for quick stuff, and Haskell for when correctness matters. So, I don't think it's an either-or scenario.

  • @khlorghaal
    @khlorghaal 4 года назад +17

    "Its amazing how many mistakes and how bad programmers can be.
    Everything that is syntactically legal, that the compiler will accept, will wind up in your codebase."
    🤣🔥🔥🔥👌

  • @oatasdon7734
    @oatasdon7734 11 лет назад +1

    I think its amazing and awe inspiring what this man was able to accomplish. And then after all that, think back to it and still wonder the different possibilities he could have done different and where the world would be today. Only a few people that are alive today can say that.

  • @Ehal256
    @Ehal256 11 лет назад +2

    That it is. I love that he went through and learned Lisp and Haskell, though I think only learning Scheme (rather than Common Lisp for example) may have been a mistake for someone as pragmatic as Carmack.

  • @wolfRAMM
    @wolfRAMM 11 лет назад +6

    he basically said "Linus was right-OOP sux"

  • @desmondsparrs
    @desmondsparrs 10 лет назад +5

    these talks made me passionate to start trying to learn programming again. It tickles my curios-nerve, I wanna understand these things he's talking about.

    • @dgphi
      @dgphi 8 лет назад +1

      +desmondsparrs
      It's two years later. Did you learn to program?

    • @desmondsparrs
      @desmondsparrs 8 лет назад

      Im too stupid for programming. Ive tried going through(forgot the name..maybe it was "Learn python the hard way". Ive tried it several times, learned to make programs spit out obscene words and to do math calculations(and I learned to do basic command line stuff, "cd ..", that sort of thing. Maybe Ill give it a go some other time. Or learn whatever scripting-programming whatever game-making software Ill be using in the future.
      Not really in a good period of my life right now, so stress makes it very hard to actually learn anything new. I just dont think I have the brain for programming.I do think if I would put in the hard work I could become a decent programmer, but not great. But who knows? I learned a lot about myself when I tried doing the course though. Im extremely stubborn and perfectionistic(double-edged sword) so when things are hard, and I REALLY want to get to the next step I work even harder, or try to come up with some other solution.
      I never give up(but I do take breaks), until I realise if whatever Im working hard at is kind of pointless in the big picture of life.
      So theres a huge text that said something. No, I did not learn to program lol. That course was awesome though, I remember I had to go through every fucking line of code BACKWARDS when I was done to check if I had errors. The reasoning behind this was something like when you read things backwards you see the code letter for letter and its easier to spot errors that way. Writing this kinda makes me a bit eager to go at it again.
      But again(sorry about WOT), not a good time in my life now.

    • @dgphi
      @dgphi 8 лет назад +4

      desmondsparrs Good for you for making the effort to learn programming. I'm sure some of it will have rubbed off on you, and it will be easier next time if you decide to go back to it. It's hard to learn a major new skill. Please don't call yourself stupid. No matter who anyone is, there will always be people who are smarter and more talented than them. Talking ourselves down just holds us back.
      I'm a bit like you but with music. I've been trying to learn to play music on and off my whole life. I'm not super-passionate about it; I just want to learn a bit. I haven't had a great deal of success. But for the last few months I've been learning to play the ukulele, and it's going great! I'm learning a lot. I realize that the ukulele is not the coolest instrument in the world, but I don't care. I'm having fun. I think that's the key for learning anything: start small and make it fun.

    • @FeelingShred
      @FeelingShred 5 лет назад

      I'm basically going through the same while learning Python and C (not C++ !!!) I've been able to get a grasp of it pretty quickly and I'm through my first 600 lines of C code, but I'm feeling more like an accountant than anything, I want to find a tutorial to make "real stuff" if you know what I mean, things that run in a GUI, with some graphics... Guess it's going to take a while... Doing a roguelike clone or even Panzer General clone would be cool :D

    • @FeelingShred
      @FeelingShred 5 лет назад +1

      I'm finding Python to be kind of a hassle to set up in a "portable" way and kind of limiting in some aspects, but what I'm finding great about Python is that the easy syntax lets you get a hold of the concepts easier, after that you're able to learn the same stuff in C much easier because you already have a notion of what to do and how to think. I'm fascinated with C, it's so simple and at the same time so powerful.

  • @jonathanpeck
    @jonathanpeck 11 лет назад +1

    I think he just meant calculating the actual animation of the skeleton, not the skinning, which would be done on the GPU.

  • @aoeu256
    @aoeu256 10 лет назад +1

    pylint that comes with most Python IDEs does static type inference to give you type warnings (not errors) that can be ignored.

  • @aliasbinman
    @aliasbinman 11 лет назад

    He means the creation of the per frame skeletal transforms not the application of them to the mesh vertices. That is typical in all game engines.

  • @lulu4882
    @lulu4882 8 лет назад +17

    SICP is light reading for John Carmack.

    • @pimeys
      @pimeys 7 лет назад +4

      Well it's a freshman book for programming. If you've been in the industry for a while already, it's very much a light read.

    • @sobanya_228
      @sobanya_228 6 лет назад +1

      Why wouldn't it? It's introduction to programming and lisp.

  • @clairevicidomini3199
    @clairevicidomini3199 6 лет назад +2

    It would be beautiful, even if it's not clear to me how it would be possible not to have performance issues, given that everything is immutable and functions end up creating a copy
    of everything you pass to them.
    Very interesting.

    • @gertoja1844
      @gertoja1844 5 лет назад +2

      Functional languages actually do put a lot of computer science into their immutable data structures. Clojure, Scala, Immutable.js for JavaScript use complex and specific tree structures for making lists and hashmaps that have speed guarantees for adding removing changing etc. It's even better than the second best technique which is copy on write, although immutable.js does allow you to just use temporary mutability to avoid excessive copying.

    • @SherubThakur
      @SherubThakur 3 года назад +3

      The immutable data structures used in FP langs use a concept called structural-sharing which makes it super easy to create copies. I believe that searching for this particular term will help you understand how you will not have performance issues

  • @Deviant1853
    @Deviant1853 11 лет назад +2

    Wolfenstein 3D in Haskell? God I'd love to see the source of that!

  • @Absolynth
    @Absolynth 11 лет назад

    Quake 2 was the first game I saw transition from software to hardware rendering. and I still love to play it. Kinda wish the software rendering worked these days but apparently it's too archaic for my laptop to even deal with.

  • @keyel74
    @keyel74 11 лет назад

    Structure and Interpretation of Computer Programs, there is an online version too.

  • @KostiantynKostin
    @KostiantynKostin  11 лет назад +3

    But they are. I checked every resolution.

  • @walter0bz
    @walter0bz 11 лет назад

    i like rust, a multiparadigm language thats just a bit more functionaly flavoured and a default memory model suited to concurrency. globals only mutable in'unsafe' blocks ..etc

  • @IgorGuerrero
    @IgorGuerrero 7 лет назад

    I have the exact same problem he does, it's though man, after work I don't wanna code anymore, or I keep going back to work since the rules are more properly defined, it's hard to push yourself especially on deep topics.

  • @Chawitsch
    @Chawitsch 11 лет назад

    Actually, all you need is an interest in programming, as there are many good resources freely available on the internet to explain things. You can either search for the concepts you didn't understand directly or read functional programming tutorials for Haskell, Lisp or whatever language and learn them that way.
    The things John talked about aren't that complicated, it's just that the language used sounds alien to many people. You definitely don't need a CS degree to understand what he said.

  • @Draggobuttboi
    @Draggobuttboi 11 лет назад

    i have no idea what he's talking about but i can't help but listen all the way through

  • @sccrstud92
    @sccrstud92 11 лет назад

    This is my favorite part.

  • @matthewd6306
    @matthewd6306 11 лет назад

    This man is the Albert Einstein of Gaming Development. A true genius.

  • @unleashthedog
    @unleashthedog 11 лет назад

    Well, i had a grasp of C++ in high school, then when at university they thought me some Scheme, i de-understood how recursion works... so it may be true that newcomers work better with these languages... so it sounds true to me :D

  • @noneOfsth
    @noneOfsth 11 лет назад

    he is not trying to teach, just telling his opinions - i like that style in a keynote

  • @KostiantynKostin
    @KostiantynKostin  11 лет назад +2

    This part is about programming. So you were not supposed too, unless you are software developer or studying CS.

  • @timwilliams2881
    @timwilliams2881 11 лет назад +1

    I'd post you a link for "Frag" in Haskell if RUclips would let me.

  • @frabber321
    @frabber321 11 лет назад

    Awesome Talk, ML for the win though!

  • @QuesoDePalo
    @QuesoDePalo 11 лет назад

    Functional programming is a great thing, especially for multi process programming. But I'm wondering what the big revelation is here. People have been writing task based multi-process game engines for a while. There's not much new here. But I'm glad Carmack is fully exploring things. I'm sure he'll come up with some good stuff that others have not.

  • @flamesatdei
    @flamesatdei 2 года назад

    Charles Hoskinson brought me here

  • @DragonSlayingCat
    @DragonSlayingCat 11 лет назад

    What's the textbook he is referencing?

  • @suichoy3014
    @suichoy3014 4 года назад +2

    Sir, this is a Wendy's.

  • @matthewd6306
    @matthewd6306 11 лет назад

    Idk, Wolfenstein 3D, Doom, Quake. Things of that sort.

  • @mihkelv6487
    @mihkelv6487 8 лет назад +6

    Carmack endorsing garbage collection. What the hell.

    • @homomculus
      @homomculus 8 лет назад +17

      Right after that he explains pretty well why it can work: most language *default* GC methods are intermittent and that's troublesome from the point of view of a game loop. If you can switch to doing a much smaller GC pass *every frame*, that's a consistent overhead, and you can account for that.

    • @mihkelv6487
      @mihkelv6487 8 лет назад

      Jess Kay
      GC was a mistake

    • @konstantingeist3587
      @konstantingeist3587 8 лет назад +8

      GC can be simplified and made more efficient in pure functional languages (in the context of which he was talking about GC) because newer objects can reference only older objects and never objects which were created after them (because the data is immutable; once an object is created, you can't modify it anymore). This creates some room for optimizations as you don't have to scan the heap for all possible cases, especially fits if the GC knows that the logic is quantized into "old frame" and "new frame" where you can assume that the old frame has old/outdated data and the new frame has the real deal; usual general purpose GC's in c#/java don't work like that unfortunately.

    • @JackMott
      @JackMott 7 лет назад

      plenty of good games that can be made with it. if you can, it certainly saves you some dev effort.

  • @theArgonautics
    @theArgonautics 7 лет назад +1

    He should try Clojure with Spec instead of Racket. Spec is the solution for the lack of types. And the part about concurrency also (static version of the world state) just screams for Clojure and its persistent data structures + STM.

    • @sobanya_228
      @sobanya_228 6 лет назад

      It's just easier to do SICP in Racket, it basically just works and he clearly doesn't want to waste time on another lisp.
      I feel kind of the same, that "types is life" (if it's not C or Golang), but very curious about ideas of Rich Hickey and Lispers in general.
      Also looks like typed Clojure didn't work out.

  • @HelderP1337
    @HelderP1337 11 лет назад

    What are you working on now man?

  • @ReinkeDK
    @ReinkeDK 11 лет назад +1

    A shame video and audio is not in sync :(

  • @Falcrist
    @Falcrist 11 лет назад

    Or even studying EE! ^^

  • @MauserTM
    @MauserTM 11 лет назад

    Im doing both, i fell asleep

  • @MrSquishles
    @MrSquishles 11 лет назад

    I would totally subscribe to a feed of his commits as he screws around with wolfenstein >.>

  • @ArianvanPutten
    @ArianvanPutten 11 лет назад

    LOLNO.. HASKELL TO THE RESQUE. You know what. we will do a quake 3 duel to decide which one is better. best out of 3

  • @Twiiik
    @Twiiik 11 лет назад

    No. Not at all.
    He might be Albert Einstein of graphics programming/development. But game development, never.
    Where did you get that idea from anyway? :-/

  • @vakisdurduvakis5619
    @vakisdurduvakis5619 10 лет назад +3

    microsoft doing a great job ? wow that sounds interesting. I thought the whole planet is aware of what a crap company microsoft is. do we live on the same planet with this guy ?

    • @KostiantynKostin
      @KostiantynKostin  10 лет назад +10

      You want to talk about the same specifics or just share consumer like "Microsoft is bad" opinion?

    • @vakisdurduvakis5619
      @vakisdurduvakis5619 10 лет назад

      ***** I didn't say "microsoft is bad", I said that microsoft is a crap company. are you not aware of this ?

    • @mrfigsgame
      @mrfigsgame 10 лет назад +12

      Vakis Durduvakis
      Tell me why they are crap...

    • @kaushikthirthappa3350
      @kaushikthirthappa3350 8 лет назад +7

      Microsoft is doing some amazing work right now. In the next few years, you will see a lot of changes.