Mike Shah

Mike Shah

Teaching computer Science, primarily Modern C++, C, DLang, games, and computer graphics programming
I'm a teaching professor and Senior 3D Graphics Engineer who has worked in industry at various games and graphics companies.

Access Full Courses: courses.mshah.io
Free Community Forum: courses.mshah.io/communities/Q29tbXVuaXR5LTI3MzAz

Пікірлер

  • @catharsis222
    @catharsis222Сағат бұрын

    Just looking to get my feet in Golang a little wet incase the need arises. This seems like just the place.

  • @MikeShah
    @MikeShah20 минут бұрын

    Cheers, enjoy!

  • @mikhailgulyi7716
    @mikhailgulyi77165 сағат бұрын

    Thank you for you videos! I've learnt so much from them! Looks like you switched from vim to neovim since this colorscheme looks like new neovim's default colorscheme

  • @MikeShah
    @MikeShah14 минут бұрын

    Cheers, happy to hear that! Just using a colorscheme that is neovim like, but still in vanilla vim :) Might be time to switch to neovim however... we'll see :)

  • @gnulinuxnutyx3474
    @gnulinuxnutyx347410 сағат бұрын

    Really nice tuto. Still I would like to ask you why we need to specify the bool operator== as friend this I really don't get

  • @__hannibaalbarca__
    @__hannibaalbarca__13 сағат бұрын

    If they are some, why we need to west time.

  • @GaryChike
    @GaryChikeКүн бұрын

    Thank you! Such great insight!

  • @MikeShah
    @MikeShahКүн бұрын

    Cheers!

  • @jimhewes7507
    @jimhewes7507Күн бұрын

    I've been following cpp2. I really like the consistency in the way objects and functions are defined. I also like the way parameters are passed for example "in", "inout", etc. Simpler to deal with and less to remember. However currently cfront is not a compiler and so cpp2 can't do anything that can't be done in C++20. I also like Sean Baxter's Circle compiler which can do cool things like "choice" types and now even has a borrow checker like Rust. Ideally I'd love to see Herb's cpp2 syntax merge with Sean's Circle compiler. Although I guess that's not so likely to happen since I think one of the Circle compiler's goals is to stay faithful to cpp1 syntax as much as possible. My question about all this, though, is whether the C++ committee would even consider actually changing the language. Or will they just continue to add more stuff to the existing language every three years. Herb did a video pointing out that it can take ten years to adopt a totally new language whereas cpp2 can be adopted faster because it can just be mixed with cpp1 a little at a time. However, I think it would still take ten years anyway because the committee doesn't work that fast.

  • @MikeShah
    @MikeShahКүн бұрын

    It's a good question if a cpp2 would win what the evolution looks like -- eventually you could just have that be the compiler, though I suspect that's a several years away

  • @mahdies56
    @mahdies56Күн бұрын

    Very informative

  • @MikeShah
    @MikeShahКүн бұрын

    Cheers!

  • @VoidloniXaarii
    @VoidloniXaariiКүн бұрын

    Thnx so munch, as a person into gfx (#dr dobbz journal, m abrash rulz) thank you from the bottom of my heart for these videos ❤ ++lynuxez

  • @anshul5909
    @anshul5909Күн бұрын

    i have llvm installed, it has lldb binary. when i execute it, nothing happens. Why? no response at all!, when i pass program as 1st argument nothing happends! why why?

  • @nsudhir_here
    @nsudhir_hereКүн бұрын

    Could you please complete behavioral design patterns?

  • @MikeShah
    @MikeShahКүн бұрын

    There will be more videos over time in the software design series

  • @raszagal1000
    @raszagal10002 күн бұрын

    if you do :set paste you wont lose indentation when pasting into vim :)

  • @MikeShah
    @MikeShah2 күн бұрын

    Probably should have that in my .vimrc by now 😅

  • @ada-georgianastoica
    @ada-georgianastoica2 күн бұрын

    🤭

  • @naranyala_dev
    @naranyala_dev2 күн бұрын

    gleam, gleam, gleam

  • @MikeShah
    @MikeShah2 күн бұрын

    Will consider it!

  • @mehmetderan1208
    @mehmetderan12082 күн бұрын

    Great conversation. Thank you.

  • @MikeShah
    @MikeShah2 күн бұрын

    Cheers!

  • @tanveerasif5978
    @tanveerasif59782 күн бұрын

    Thank you. Never disappoint after your videos, it's always more than expectation.

  • @MikeShah
    @MikeShah2 күн бұрын

    Cheers, thank you for the kind words 🙏

  • @GaryChike
    @GaryChike3 күн бұрын

    The next variant of Mojo will be called 'Randy'. My obscure reference to Austin Powers for today.

  • @MikeShah
    @MikeShah3 күн бұрын

    😂 still hoping for Austin Powers 4 someday 😂

  • @GaryChike
    @GaryChike3 күн бұрын

    @@MikeShah😂

  • @default2043
    @default20433 күн бұрын

    Great series, Mike! I have just one request for your future lectures that I would like to make. I would really appreciate it if you could take the time to read my request: In modern variations of C++ and even C, I constantly see primitive types or class types such as these: int32_t, uint32_t, int64_t, uint64_t char, wchar_t std::string, std::wstring There are, of course, many more, and it's impossible for me to list them all here at once. But I would really appreciate it if you could dedicate a few lectures to these types and others, explaining a few things about them: Where did they originate? (Are they from the C language or the C++ language?) What libraries do we need to import or include to use them? Why were they introduced in the first place? Thank you for considering my request.

  • @MikeShah
    @MikeShahКүн бұрын

    Indeed, I'll consider a video i this series on that for this series. I have a version in C of fixed-width types (kzread.info/dash/bejne/ioZq0ciOoM3Mcpc.html) -- the 'why' is indeed for predictability in the number of bits that will be the default. #include <cstdint> is what you'll need to bring in the types.

  • @default2043
    @default2043Күн бұрын

    ​@@MikeShah Thank you for referring me to that lecture; it was incredibly helpful. Could you please consider creating a lecture that explains the `char` and `wchar_t` types in C and C++, along with the fundamental concepts of ASCII versus Unicode? I often encounter programs that face issues like varying char sizes or portability problems related to ASCII and Unicode. I would greatly appreciate it if you could clarify the history and essential considerations regarding characters, strings, and encoding across different platforms for these languages once and for all. I have heard that Windows uses utf-16 and other platforms such as Linux use utf-8 and this can cause problems. Here is a video that I watched and I hope this will help with understanding my frustrations: kzread.info/dash/bejne/ZGuiusd-hq7JesY.htmlsi=OEX7m4Kt0A-yFHgn I know this is not great, but it is the only video I managed to find on this concept.

  • @MikeShah
    @MikeShahКүн бұрын

    @@default2043 Noted, will add it to the wish list for consideration

  • @config2000
    @config20003 күн бұрын

    If a *Polyglot* is an expert in several spoken languages does that mean an expert in several graphical programming languages is a *Polygon* ?

  • @MikeShah
    @MikeShah3 күн бұрын

    Indeed! 🤣

  • @bsdooby
    @bsdooby3 күн бұрын

    Maybe we see the emergence of languages mainly used for implementing the models (C++), and languages better suited for inferencing (DSL)...

  • @MikeShah
    @MikeShah3 күн бұрын

    Could be -- I wonder if native/app development will become more like web dev, where there are many languages+frameworks involved at any given time.😅

  • @bsdooby
    @bsdooby3 күн бұрын

    @@MikeShah puh; TBH: I hope not…

  • @MikeShah
    @MikeShah3 күн бұрын

    @@bsdooby Me also -- already plenty to keep track of :)

  • @twenty-fifth420
    @twenty-fifth4203 күн бұрын

    I will pass. In fact, I started my own language that is 'Mojo' but for Ruby and Crystal, but for systems programming. That said, I am hungry and I need something to listen to lol. I sort of see Mojo as Chris's weird middle, compiler age phase. I love Swift and I like Python, but I struggle to see it being a programming language other then for production grade server applications that need to interop with Python. ... *hides my .net and c inspired programming languages away* That isn't done yet. Don't make me lose my Mojo please.

  • @MikeShah
    @MikeShah3 күн бұрын

    Sounds like you have a cool project! Yes, Mojo is interesting and a very young language, so will be interesting to see how folks adopt it.

  • @enamoe593
    @enamoe5933 күн бұрын

    Mojo is 🔥

  • @MikeShah
    @MikeShah3 күн бұрын

    🔥

  • @im_another_you
    @im_another_you3 күн бұрын

    Composition over inheritance please make a session for this. 😊

  • @MikeShah
    @MikeShah3 күн бұрын

    Indeed, composition is in favor these days :)

  • @androth1502
    @androth15024 күн бұрын

    i'm surprised you haven't done C# yet. it's one of the more popular languages. i've dabbled in it and at first, i thought it was the most beautiful programming language, then it became a mess like C++, now it's back on my top 10. i actually find all the .NET language family fun and interesting in their own way(C#, F#, scala (which targets both JVM and CLR)).

  • @MikeShah
    @MikeShah3 күн бұрын

    C# is one I'm considering for later on. I really haven't used it for anything serious in probably 10 years -- so it'll probably feel like a new language to me :)

  • @MatheusCatarino
    @MatheusCatarino4 күн бұрын

    The carbon project is interesting, although I don't believe it can ever really be considered a feasible alternative to c++ codebase (Could they learn from the D community that has already walked the same path?) This includes possible alternatives that would support the C++ FFI. I think there is a missing video about the circle-lang. Like @safe (dlang), it shows safe features.

  • @GaryChike
    @GaryChike4 күн бұрын

    I agree with many of your comments Mike. I have a strong 2D/3D background since 1991, and seeing the keyword 'vector' as a dynamic array in C++ always throws me off a little

  • @MikeShah
    @MikeShah4 күн бұрын

    I can't recall the history, I know it's documented somewhere, but I just don't know why it wasn't 'dyn_array' or something of that sort 😂

  • @GaryChike
    @GaryChike4 күн бұрын

    @@MikeShah 😂

  • @chankayau
    @chankayau4 күн бұрын

    template<typename... Args> auto sum(Args... args) { return (args + ...); } could we do this?

  • @MikeShah
    @MikeShahКүн бұрын

    You can reutrn 'auto' -- that's no problem instead of T -- in fact that could be preferred to deduce the correct type. Syntatically, you can do (args + ...) -- consider however it does not exapnd fully, so you will miss the 'start' value. See around 9:57 for the corect implementation. Note -- I also prefer to put the function name in as well, just to be explicit about what type will expand and execute.

  • @gabrielj.9786
    @gabrielj.97864 күн бұрын

    Whenever something doesn't work: "INTERESTING. LET'S GET RID OF THAT."

  • @MikeShah
    @MikeShah4 күн бұрын

    Delta debugging, remove then retry. 😅 Admittedly this video in the series was quite challenging as there were few COBOL resources at least in my initial search

  • @werhanihoussemeddine7309
    @werhanihoussemeddine73094 күн бұрын

    That is a very good video. I enjoy watching it, but I have a couple of questions. Firstly, I do not understand why he refactored the Add function. Instead of getting two values and returning a value, he changed it to return nothing and passed two references. The result will be the value of the first variable (out). It seems like not a good practice. Lastly, why doesn't he simply pass a value for the variable (in) instead of passing a reference if he is not changing its values?

  • @MikeShah
    @MikeShah4 күн бұрын

    Indeed, there's a few ways to do add. Here's yet another way we could have done things. // The 'int' return value can be used for an error code which is common in C. We could use it to detect overflow, underflow, or otherwise return some useful information. // The cleanest way to use this function is probably to create a new vector for the out_result -- that's a 'functional' style so we can track the side effects. int AddVector(Vector_h* out_result, const Vector_h a, const Vector_h b){ out_result.x = a.x + b.x; out_result.y = a.y + b.y; return SUCCESS; } Part of this example is to focus on header files and organization, but you're right there's many decisions to be made in regards to how we pass in and out data. Now we can probably provide another example where we as you suggest do what is most natural. This allows us to do what is most obvious, and probably what I should have shown. In many cases, the obvious case is also something the compiler can optimize/inline as well (and most humans will also understand exactly the intent). Vector_h AddVector(const Vector_h a, const Vector_h b){ Vector_h out_result; out_result.x = a.x + b.x; out_result.y = a.y + b.y; return out_result; } So in short, agreed I probably should have just showed this example in the video :)

  • @hscroot123
    @hscroot1234 күн бұрын

    hi mike can u create one video for counting_sempahore and binary_sempahore

  • @MikeShah
    @MikeShah4 күн бұрын

    In time I have plans to cover both in this series :)

  • @forbiddenc9202
    @forbiddenc92024 күн бұрын

    Been a great lecture , also learning your c++ series, Great series

  • @MikeShah
    @MikeShah4 күн бұрын

    Cheers!

  • @Singh.Chinmay
    @Singh.Chinmay4 күн бұрын

    Loving this video! Really grinding on your C++ and other videos. What's your take on the future of languages like C++ in the job market? Cheers!

  • @MikeShah
    @MikeShah4 күн бұрын

    Cheers! Happy to hear that! My thoughts probably belong in a separate video on that -- in short, there will be plenty of C++ jobs. Long term, C++ just might become more dominant in specific areas (e.g. games, finance, etc.) and less so for domains where other languages are best fit. Long term (it's my guess) that we'll see acceptance of a wider breadth of languages. Let's never estimate legacy code however, there will remain lots of C++ for some time, hence the need for folks to still learn it.

  • @tanveerasif5978
    @tanveerasif59784 күн бұрын

    Thank you so much, I also learnt how to look into documents and use the function. 🙂

  • @MikeShah
    @MikeShah4 күн бұрын

    Cheers, happy to hear that!

  • @Stephan_London-ps6ug
    @Stephan_London-ps6ug5 күн бұрын

    These videos seem absolutely underrated. I’ve been working with Python for the last 17 years and not much with C++, so I really need to brush up my STL knowledge. Your videos have a good intermediate level, which is quite rare.

  • @MikeShah
    @MikeShah5 күн бұрын

    Cheers, thank you for the kind words!

  • @thegameoflife9179
    @thegameoflife91795 күн бұрын

    there must be a carbon footprint if we use this? sorry couldnt resist 🤣

  • @MikeShah
    @MikeShah5 күн бұрын

    😜

  • @timesink6325
    @timesink63255 күн бұрын

    As a non-english speaker,i feel very comfortable about the content and your teaching in this lecture.Thank you very much sir!

  • @MikeShah
    @MikeShah5 күн бұрын

    Cheers, thank you for the kind words 🙏

  • @bsdooby
    @bsdooby5 күн бұрын

    Would be great to have an honest feedback from you @MikeShah on the most promising language of these „direct“ alternatives to C++. Which one do you/did you like the most, etc.

  • @bsdooby
    @bsdooby5 күн бұрын

    No need to consider Dlang (the best anyways ;)), or the other languages of the series which are not considered system languages.

  • @MikeShah
    @MikeShah5 күн бұрын

    Throwing out dlang from the contenders, so far I like cpp2 🙂 could be purely because it seems further along​@@bsdooby

  • @twenty-fifth420
    @twenty-fifth4205 күн бұрын

    IMO, I see CPP Front as the future of C++ and other languages as well. The big 3 of those are D, Nim and Odin. You could say Rust, but I know some Rusties would get on me for that. I could also say Swift as an honorable mention, but it is sort of inbetween a high/low systems language. Since it does not have raw memory access except with interfacing with C/C++, I know some hardcore C++ devs will probably look away at it. ...That said, Carbon is a very cool name.

  • @MikeShah
    @MikeShah5 күн бұрын

    I'm excited to see what happens (and maybe some of you folks will even participate in pushing things one way or the other :) ). It was interesting that in the JavaScript evolution comparison, that TypeScript pretty much has won, but there were other things like CoffeeScript (which is still in use) that I remember being quite popular -- so never know what will take off!

  • @bobweiram6321
    @bobweiram63215 күн бұрын

    "Perceived shortcomings of C++?" That phrase tells me everything I need to know about the language. It was designed with the same philosophy behind C++ which means it sucks.

  • @MikeShah
    @MikeShah5 күн бұрын

    Still in active evolution, let's see what happens!

  • @QWin-ir6yq
    @QWin-ir6yq5 күн бұрын

    Great video. I learned C++ first, now backfilling concept gaps with C. Your C and C++ have videos have been critical in my development. I will continue to promote you but let me know of additional ways I can support you. Also, I see you are also doing videos on D. I’m not familiar with that language. Is that the next logical evolution from c or c++?

  • @MikeShah
    @MikeShah5 күн бұрын

    Cheers, thanks for the kind words! Feel free to share as you like! D is indeed the next evolution in the C-family of languages. I've found it allows me to think in different paradigms (specifically functionally, concurrent programming, and generic programming) more efficiently. Neat thing about D is it also has a C compiler built-in, so all the knowledge you otherwise learn here applies :)

  • @314Labs
    @314Labs5 күн бұрын

    Love this series!!

  • @MikeShah
    @MikeShah5 күн бұрын

    Thank you! It's been a blast to film :)

  • @ishimachi
    @ishimachi5 күн бұрын

    C3 next?

  • @MikeShah
    @MikeShah5 күн бұрын

    Will add it to the wishlist -- I think there was also Safe-C, Cyclone, HolyC (which I just learned about) and maybe C0 if I recall correctly 😅

  • @ishimachi
    @ishimachi5 күн бұрын

    @@MikeShah The joyful list of languages that aim to fix C! Looking forward! Love this series. Helps me to learn so many different languages I never knew about

  • @androth1502
    @androth15024 күн бұрын

    @@MikeShah holyc was written by the greatest programmer who ever lived. you would have to run holyc in an emulator and be prepared for a psychedelic experience of flashing text and no line spacing.

  • @mrinalyadav4261
    @mrinalyadav42615 күн бұрын

    I tried reading cppreference for loops section, it's bit difficult for me to grasp. Should I follow you video then go back to it?

  • @MikeShah
    @MikeShah5 күн бұрын

    Sure, give it a try here, and then you can always revisit cppreference :)

  • @c_3ax
    @c_3ax5 күн бұрын

    mike, ever thought about streaming? awesome video as always btw

  • @MikeShah
    @MikeShah5 күн бұрын

    Starting to consider it more -- need to figure out Twitch vs KZread and what kind of content. I think some of the content from this series would have been nice to livestream

  • @bsdooby
    @bsdooby5 күн бұрын

    Looking forward to some nice livestreams 👍

  • @c_3ax
    @c_3ax5 күн бұрын

    @@MikeShah great! and yes, this series would be nice in stream :)

  • @richardericlope3341
    @richardericlope33415 күн бұрын

    A bit of correction, FreeBasic was bootstrapped using VB-DOS. The idea back then was for it to self-host itself sometime in the future so QBASIC variants were the best choice. Then at about 20k lines, Victor was able to compile FBC with FBC.

  • @MikeShah
    @MikeShah5 күн бұрын

    Ah, I did not know that -- very cool! Thanks for sharing that important part of the history!

  • @mishaerementchouk
    @mishaerementchouk6 күн бұрын

    Mixed feelings. It’s like cpp2 tries to catch an already gone train. There’s nothing particularly wrong about it but nothing stands out as particularly right. Probably, I expected better error messages but the accident with vector<int> was quite bad. I should play with it on some toy project to get a better impression but it doesn’t look like cpp2 is poised for widespread industry adoption.

  • @MikeShah
    @MikeShah5 күн бұрын

    I suspect this project still has a few years of development, but indeed we'll know more (and the developers) as it's used for larger projects :)

  • @shuojinbecool4778
    @shuojinbecool47786 күн бұрын

    Do you know how to enable copy/paste across vmware and macos?

  • @MikeShah
    @MikeShah5 күн бұрын

    Looks like it's possible, need to enable keymappings according to this: docs.vmware.com/en/VMware-Fusion/13/com.vmware.fusion.using.doc/GUID-E6C39F39-178D-49E6-BF9C-FA2F5F8D27F3.html

  • @hannahm9259
    @hannahm92596 күн бұрын

    The to_string is a little confusing since glm seems to save columns, as opposed to std::vector<vector<T>> that is a vector of rows. So for when printing a vec4 on screen, I made a little function that first transposes it then prints the transposed matrix on the terminal. This way the matrix shows up with each row of numbers horizontally aligned on the screen.

  • @MikeShah
    @MikeShah6 күн бұрын

    Very nice!

  • @kcvinu
    @kcvinu6 күн бұрын

    Wow! dart looks nice. Can Dart produce an exe file?

  • @MikeShah
    @MikeShah6 күн бұрын

    Yes, I it supports native compilation(Ahead of time compliation -- AoT) targets on multiple platforms beyond even windows. There's also JIT and web targets, so it supports quite a bit of platforms. Someone mentioned in the comments here it can even compile to C++ :)

  • @hannahm9259
    @hannahm92596 күн бұрын

    I'm just gonna go ahead and give this video a thumbs up even before watching it because having watched your previous videos, I know this one is going to be very informative! too! Now I'm gonna go ahead and enjoy it! 😉

  • @MikeShah
    @MikeShah6 күн бұрын

    Cheers! Enjoy!