The same input anyways produces the same output. Dang, I was wondering why my $0 always produces $0.
@ivanmaglica2642 сағат бұрын
Hey, has anybody actually deployed Windows app through Docker? I'm curious, I know its possible, but haven't seen anything used in real life yet, at least beyond local experiment.
@apexhacker3465 сағат бұрын
GCC will always be king. End of conversation
@TheCodingGopher7 сағат бұрын
Looking to upgrade my audio setup with a Blue Yeti USB microphone! If you'd like to support the channel, you can buy me a coffee here: ko-fi.com/thecodinggopher.
@yancanam11 сағат бұрын
I'm not a programmer, but functional programming seems similar to how you would lay things out in a product like MathCad.
@lelsewherelelsewhere943514 сағат бұрын
I womder then if LLVM suffers from premature optimization, which then makes hardware specific translation and optimization more difficult. I wonder if different first pass LLVM optimizer types or flavors would be good, or if that is sort of the antithesis of their goal, and such variation on style would create more problems, lack of modularity, and prevent improvements from being sharable.
@TheCodingGopher13 сағат бұрын
Great question! LLVM's design actually strives to avoid premature optimization (i.e. via a modular, "multi-phase approach" where each pass applies optimizations progressively - though it depends on the target architecture and compilation stage). This way, early passes focus on general, high-level optimizations; later ones handle more hardware-specific tuning. As for different 'flavors' of optimizers, LLVM does allow for customization via custom passes, but you're right - too much fragmentation could hurt modularity / code reuse. The shared intermediate representation (e.g. LLVM IR) ensures that improvements in one part of the pipeline benefit the entire ecosystem. At the EOD, for LLVM it's about modularity / flexibility.
@gabrielcanaple347915 сағат бұрын
this is the second video i watch on docker from you, and it's simply amazing i'll slowly watch all your content because as i saw it's always on interesting topics, while staying fast and going right to the point love this format and how clear it is
@TheCodingGopher13 сағат бұрын
Thank you! My goal is to keep things clear, informative, and fast-paced. While some of my earlier videos may not fully reflect this, I’m committed to applying this mantra to all future content :)
@gabrielcanaple347915 сағат бұрын
incredible video man, although i've been on the development side, i was curious about the deployment and orchestration magic and you made it really clear ! thanks man
@TheCodingGopher15 сағат бұрын
It's my pleasure, thank you for tuning in
@Ryan11lv42616 сағат бұрын
I think a few examples of better comparisons would be: - docker swarm vs kubernetes since those are both orchestration platforms - docker engine vs podman since they handle the lifetime of their containers differently - lxc vs docker since there is large differences in how containerd and lxd interact with the os/kernel/containers Hopefully not too critical your mic was fine and you pulled good diagrams in, but my opinion is it's a long video to say docker is a runtime package used in industry mainly for building images (it does have an engine to run containers on a single machine). While kubernetes is an orchestration platform for managing running containers across multiple nodes/machines.
@TheCodingGopher16 сағат бұрын
This is a common challenge I often face. The audience for this video is quite diverse in terms of skill levels / YOE. This video serves as a basic introduction to Docker and Kubernetes concepts, aimed at developers who are newer to these topics and looking for a soft introduction. At the end, I clarify that Docker and Kubernetes are not an either/or choice; they’re complementary and can work together in a hybrid approach. That said, you make valid points about better comparisons. I’ll take note of them and consider creating a follow-up video focused on Docker Swarm vs. Kubernetes, and I'll incorporate the other comparisons as well. Cheers.
@debbie806216 сағат бұрын
we’re being spoiled by these daily uploads haha your videos are getting better, can’t wait to see your channel get bigger 🙌
@TheCodingGopher16 сағат бұрын
Trying to balance quality of videos with burnout
@neeraj33negi18 сағат бұрын
Wow, well put video. I'm not experienced in low level/compiler tech and this taught me something new. Subscribed
@TheCodingGopher18 сағат бұрын
Pleasure is mine
@יובלהרמן-ח2ד20 сағат бұрын
I mean it's a choice between a roaring dragon a some sort of cow...
@TheCodingGopher18 сағат бұрын
I'd go with the cow here...
@TheCodingGopher18 сағат бұрын
Aesthetically though, I'd take the dragon any day
@BrunoBernard-kn6vt21 сағат бұрын
Amazing! Can you talk about Docker Swarm / Docker Stack?
@TheCodingGopher18 сағат бұрын
Yes, added to my ideas list!
@waikanaebeachКүн бұрын
Same techniques as earlier OS’s such as VAX/VMS, Unix, MVS/ESA, Etc except the latter uses multi-port memory and specialised paging hardware.
@josephliu8802Күн бұрын
@TheCodingGopher Are all Clang optimizations mentioned here available in GCC?
@TheCodingGopherКүн бұрын
Not all optimizations available in Clang have a direct equivalent in GCC, but the core optimizations (i.e. the -O1, -O2, -O3 optimizations in the video) are shared between both compilers
@_RMSG_Күн бұрын
I always wonder what Linux would be like if they didn't GCC-specific code
@AtomSymbolКүн бұрын
Please note that ChatGPT is able to describe those topics better than this video. For example enter "Describe -ffast-math optimization".
@martinnovak679Күн бұрын
Recursion instead of loop🤔 i have feeling this can't end well😃 sooner or later you get stack overflow
@TheCodingGopher17 сағат бұрын
Recursion still seems much less intuitive than a loop
@Axman612 сағат бұрын
@@martinnovak679 only if you have a call stack, which most functional languages like Haskell don’t have. Function calls in (GHC) Haskell are just jumps, and that’s how we work with infinite lists all the time. It’s be great to do a video on the common misconceptions programmers have about functional programming, people say so many simply wrong things with such confidence.
@yancanam11 сағат бұрын
Isn't recursion how a spreadsheet works when evaluating the cells?
@martinnovak67910 сағат бұрын
@@yancanam that should be simple reference Recursion is when function call itself (clasical example is factorial)
@martinnovak67910 сағат бұрын
@@Axman6 1) you can use functional programing in languages like C# and Java where deep recursion cause stack overflow 2) i am curious how does it work without keeping track of caller state 🤔 is there some special syntax for those cases? Does compiler/interpreter recognize it threat that different? Or does it just behave like one huge block of code? Or something zotaly different?
@AdrenalineAkash13Күн бұрын
Clean Concise and to the point. A great way to begin with #Docker
@TheCodingGopherКүн бұрын
Appreciate the comment
@debbie8062Күн бұрын
another great video on Kubernetes!! this really is the only video i needed to understand containers 🤯
@TheCodingGopherКүн бұрын
🚀!
@TheCodingGopherКүн бұрын
Looking to upgrade my audio setup with a Blue Yeti USB microphone! If you'd like to support the channel, you can buy me a coffee here: ko-fi.com/thecodinggopher.
@martinrodriguez1329Күн бұрын
Just use both when it's needed , it's yet another tool
@ehSamurai3483Күн бұрын
So SDK follows Facade pattern?
@eaglemaster7Күн бұрын
shit... I misread title as as LLM (large language model) compiler
@TheCodingGopherКүн бұрын
That might be a reason why this video is getting quite a bit of traction lately. It hits the LLM hot topic, as well as the LMVH clothing brand 😂
@eaglemaster7Күн бұрын
@@TheCodingGopher it gotta be be interesting though if we can replace todays compiler with LLM chatgpt-like compiler that can read 'dumb human prompt' into binary executable
@TheCodingGopherКүн бұрын
@@eaglemaster7 There would likely need to be a ridiculous amount of fine-tuning as it would be very error-prone. But food for thought
@gurupartapkhalsa65652 күн бұрын
API and SDK are not really related unless you mean to say that an SDK typically uses the interface design pattern for customers. An SDK is something you use as part of a buildsystem, which is provided to you by a hardware vendor (or some other service entity such as Apple providing an entire platform). If you build embedded hardware, the SOC vendor will give you a "BSP" which is a type of SDK. I haven't watched the video, but I guess it has merit since the commenters really do appear to have this question.
@evertchin2 күн бұрын
Frankly i still don't understand rhe differences, to me both explanations are extremely similar.
@markovermeer13942 күн бұрын
The difference in the shown compilation flow diagrams is partially artificial: a compiler has so many components that there are many ways to group them in an overview. Both have CPU specific optimizations (f.i. to allocate registers), but you may list them into the main optimization (there is a lot over overlap/reuse in that logic anyway) or in the specific CPU backends (which will in reality share a lot of code). So: the flow between components will be organized at bit differently, but by far most effort is put in components which exist in both compilers... in any compiler: the drawings make it look more different than it is.
@soymadip2 күн бұрын
What is difference with sdk, framework & library?
@gurupartapkhalsa65652 күн бұрын
An SDK implies hardware support, such as drivers and a specific buildsystem or platform. A framework implies a specific user experience, such as a React or iOS app. Both of those includes libraries, which can be loosely described as a set of functions, procedures, or programs published under a single namespace with its own memory.
@ismbks2 күн бұрын
what kind of job you guys do to be on top of this stuff? i'm talking about half the comment section
@debbie80622 күн бұрын
underrated vid. some of your videos need more recognition tbh
@TheCodingGopher2 күн бұрын
You may be onto something; grateful for all the support I get ❤️
@tomwilliam72992 күн бұрын
Your video is wrong from beginning because the Question is What is the difference between a framework and a library ? 🤔🤔🤔🤔make it your new video
@fluffysheap2 күн бұрын
Because you want 20% as much code and 10% as many bugs. It's pretty simple really.
@TheCoder-19242 күн бұрын
Great video!!!
@TheCodingGopher2 күн бұрын
Thanks for the visit
@TheCodingGopher2 күн бұрын
Looking to upgrade my audio setup with a Blue Yeti USB microphone! If you'd like to support the channel, you can buy me a coffee here: ko-fi.com/thecodinggopher.
@georgimirchev32312 күн бұрын
RISC vee?
@maksimluzin11212 күн бұрын
What about BSON Binary representation of JSON, introduced by the MongoDB developers and supported by a set of languages as standalone libraries? Can you compare them?
@TheCodingGopher2 күн бұрын
BSON is designed for storing JSON-like documents (i.e. supports flexible data types / is storage-friendly). Protobufs focus on speed / efficiency, using a compact binary format. TL;DR: BSON is best for document storage. Protobufs is best for efficient data transfer.
@maksimluzin11212 күн бұрын
@TheCodingGopher OK. Thanks!
@MarijuJonage2 күн бұрын
Idk, for a moment i thought it had something to do with Gucci and LVMH.
@herpderp7283 күн бұрын
LLMs are trash technology and anyone who uses them unironically is a moron
@happygofishing3 күн бұрын
llvm uses a cuck license
@RelayComputer3 күн бұрын
One problem with LLVM is that its focus on general optimisations hurts small 8 and 16 bit platforms such as AVR or MSP430. These processors in particular do not have multiple shift instructions. However LLVM will still produce generic optimisations that depend on the existence of such instructions. The result in many cases is code generation that is much larger and slower than the equivalent GCC generated one. As a former contributor to the LLVM project, some years ago I proposed a solution to that problem. However it involved changes on the generic optimisation passes, and was not accepted by the developers community. Nobody has fixed this so far. As a result LLVM still generates code that is significantly worse than GCC for said small platforms.
@simonfarre49072 күн бұрын
That's interesting! Are you sure about this? Because this seems trivially fixable, due to how incredibly much more extensible LLVM (so clang/clang++ compilers) than the gnu compiler "platform", no? Judging by your comments, this seems to be an area of low hanging fruit for contributions?
@RelayComputer2 күн бұрын
@@simonfarre4907 The problem that I encountered is that the LLVM developers community is highly reluctant to introduce target dependent variations to the code that is not part of specific backends. It's understandable because the front end is supposed to generate the same IR code, while applying generic optimizations, regardless of target. Specific backends are responsible for target dependent optimizations, and to translate the IR code into the targeted assembly code. However, in practice the generic code is highly influenced by the main targets capabilities, namely the x86-64 and the ARM64, and many optimizations that should technically be considered as target specific are coded as generic just because (most?) targets will support them. What happens is that simpler targets such as 8 bit or 16 bit processors can't efficiently translate some pieces of the IR to their ISAs because some instructions are just missing, the most flagrant example is lack of multiple shift instructions. You are absolutely right that fixing this should be easy. In fact, my code submissions were not complicated at all, as they mostly consisted on skipping generic code transformations that would result in multiple shifts, based on a compiler command option, which also could be made default depending on architecture. This worked fine as per my tests on the AVR and MSP430 targets, and it was not strictly target specific because it would apply to any architectures that do not support multiple shifts. However, since this involved parametrising the generic LLVM transformations, it was rejected. As an alternative, I was told to "reverse" the already applied optimisations to the IR code during the target specific passes. I actually spend some time looking at it, but found that it was very difficult or required a big amount of code. The reason is that LLVM will apply several code transformations in a row, one over another, until no further transformations are possible. This often creates IR code that is very hard or impossible to "reverse" to the original state. In this case, you may end with parts of IR code making heavy use of multiple shifts that are introduced by generic optimizations, and there's no way to figure out what to do to remove them. This, while just by skipping the transformations that created the shifts in the first place, would just enable the backend or even the generic optimizer itself, to apply alternative optimizations that could be actually translated into efficient target assembly code. (I can go to further detail and examples if you are really interested) At the end, I gave up with trying to "reverse" the undesired "optimizations", not without some frustration as my solution to the problem was already implemented and working, just not acceptable by the LLVM community. So as said, the LLVM complier still lacks /significantly/ behind GCC when compiling for small targets, which is the reason it is not generally used for them.
@dancom60302 күн бұрын
@@simonfarre4907open source spaces are very political. Even if the change is trivial, if it touches something that is "core" to the project, it will inevitably meet a lot of resistance.
@RelayComputer2 күн бұрын
@@dancom6030 Sad but true. No wonder why corporations tend to move faster. They are far less allergic to change
@simonfarre49072 күн бұрын
@dancom6030 I wouldn't say they are very political, I've contributed to a few different open source projects, one has to be mindful (and respectful! Incredibly important!) of a whole host of things. May be legacy reasons why things are not accepted or not a stated goal etc. I think painting it with a broad brush (though that may not have been your intention) and saying it is "very political" I think is not fair, necessarily even though, of course, those projects exist as well. I should probably have skipped calling it trivially fixable as that probably gave my question the wrong impression.
@allezvenga76173 күн бұрын
Thanks for your sharing
@TheCodingGopher3 күн бұрын
🙏
@ivanmaglica2643 күн бұрын
It must be emphasized that type of licence a compiler uses (how compiler source is licensed) does not dictate the licence of target software it compiles. GPL'ed compiler can compile software that is completely proprietary or completely open.
@dancom60302 күн бұрын
Do you mean doesn't dictate?
@ivanmaglica2642 күн бұрын
@@dancom6030 sorry, I meant "does not". My first post threw an error, so I had to retype and post it, but I made a mistake
@dancom60302 күн бұрын
@@ivanmaglica264 you're all good, my man. Stuff like this happens all the time. I just wanted to clarify.
@Nothing_seriousКүн бұрын
Not true. The only reason GCC can compile proprietary programs is because they added a special exception. I think the Ada commercial compiler for example have a GPL license but without the exception so you cannot compile proprietary programs with it.
@dancom6030Күн бұрын
@Nothing_serious nothing in the GPL prohibits compiling proprietary code. I'd like to see a source on that claim.
@TheCodingGopher3 күн бұрын
Looking to upgrade my audio setup with a Blue Yeti USB microphone! If you'd like to support the channel, you can buy me a coffee here: ko-fi.com/thecodinggopher.
@TheCodingGopher3 күн бұрын
Looking to upgrade my audio setup with a Blue Yeti USB microphone! If you'd like to support the channel, you can buy me a coffee here: ko-fi.com/thecodinggopher.
@TheCodingGopher3 күн бұрын
Looking to upgrade my audio setup with a Blue Yeti USB microphone! If you'd like to support the channel, you can buy me a coffee here: ko-fi.com/thecodinggopher.
@TheCodingGopher3 күн бұрын
Looking to upgrade my audio setup with a Blue Yeti USB microphone! If you'd like to support the channel, you can buy me a coffee here: ko-fi.com/thecodinggopher.
@TheCodingGopher3 күн бұрын
Looking to upgrade my audio setup with a Blue Yeti USB microphone! If you'd like to support the channel, you can buy me a coffee here: ko-fi.com/thecodinggopher.
@lelsewherelelsewhere943514 сағат бұрын
Good, though your voice sounds pretty clear and good already to me at least. Thanks for the video.
@TheCodingGopher13 сағат бұрын
@@lelsewherelelsewhere9435 Thanks for watching + the feedback!
@Evan490BC3 күн бұрын
Nice video, but you didn't say much (or anything, really) about SSA (static single assignment form). This, and analogous transformations such as continuation-passing style in the functional world, are important tools for parallelisation!
@TheCodingGopher3 күн бұрын
Thanks for the comment! Follow-up video on SSA incoming
@Evan490BC3 күн бұрын
@@TheCodingGopher Excellent!
@debbie80623 күн бұрын
this is was interesting! it was explained so clearly, thanks gopher :)
@TheCodingGopher3 күн бұрын
🚀
@SianaGearz3 күн бұрын
I don't really understand the difference between LLVM IR and GIMPLE. There's any number of different languages which target GIMPLE.
@TheCodingGopher3 күн бұрын
LLVM IR is a low-level IR used across many compilers for optimization / JIT compilation. GIMPLE is a simplified IR that is specific to GCC - mainly for breaking down complex code for easier optimization. LLVM IR targets multiple platforms; GIMPLE mainly serves GCC’s internal needs. Hope that makes sense.