Jonathan Blow's Twitch: / j_blow Tip me: ko-fi.com/blowfan LLVM, Doxygen
Пікірлер: 438
@shadow_vertex7 ай бұрын
That's not programming, it's cable management!
@ecranfortessa7 ай бұрын
Good one. xd
@Don_XII7 ай бұрын
Lmao
@tanko.reactions1767 ай бұрын
i have seen cable management. capable management can be beautiful. this is not cable management. this is lack of cable management.
@batatanna7 ай бұрын
Cable mismanagement @@tanko.reactions176
@paulywalnutz58557 ай бұрын
it looks like my cable management anyway
@clownpiece59927 ай бұрын
"An idiot admires complexity, a genius admires simplicity." -Terry A. Davis
@chudchadanstud7 ай бұрын
You misunderstood him. The person who admires simplicity because he understands the difficulty of the problem is the genius. I would love to see how Jia compares.
@kuklama07067 ай бұрын
A realist admires salary
@michaelstekrt80317 ай бұрын
the most powerfull sentence of our time
@Don_XII7 ай бұрын
@@kuklama0706 real big brain here
@byebeybyebey7 ай бұрын
"so grug say again and say often: complexity very, very bad"
@calebfuller47136 ай бұрын
I've never seen the phrase "spaghetti code" represented so literally before!
@hexarith6 ай бұрын
You should check out the average "grown" LabVIEW program, that's running an experiment that went through the hands of 3 generations of PhD grad students and their respective undergraduates. THAT is the true form of spaghetti code.
@tx73006 ай бұрын
open source dev: read the docs the docs:
@Dzatoah6 ай бұрын
i dont like it, but its true...
@Th12006 ай бұрын
The docs:
@C4CH3S6 ай бұрын
My experience trying to setup neovim
@sullivan35036 ай бұрын
I don't really understand the point being made here... Vanishingly few docs have useful graphics, but they're important. What are we even looking at in this video, an OOP command flags parser? For OOP, a graph like this is actually useful.
@tx73006 ай бұрын
@@sullivan3503 not about the literal graph, but more about how documentation, much like this graph here, is often a tangled incomprehensible mess, defeating the very purpose of its own existence
@tetraquark24026 ай бұрын
Someone somewhere is very proud of that graph
@InconspicuousChap6 ай бұрын
Only if they have seen it. Which is unlikely because idiots never view their creation as a whole.
@sub-harmonik6 ай бұрын
I mean idk if I could do the paths that well (to go around other objects and stuff) but I'm somewhat of a noob
@AlfaToTheOmega6 ай бұрын
Someone spent 5 seconds configuring a plugin to autogenerate dependency graphs. More time was spent criticizing it here. It's still readable enough and it'd take more time handcrafting pixel-perfect graphs than you'd save because of better readibility. Plus, you'd risk people forgetting to updating the graph to reflect reality. Moreover, a lot of "dependencies" here are just basic utility types like "string", so we can't really conclude from this graph that this solution is overly complex (as some other comments suggest).
@astrixx2 ай бұрын
@@AlfaToTheOmega Nobody reads or cares about this graph and it's completely useless, no one gets anything out of it. But someone though it would be fine to autogenerate everything and dump it on a page without caring what it's outputting. I guarantee you 0 people have gotten any value from it. In addition, the graph software is poorly written for the various reasons blow points out so it's just stupid bullshit on more stupid bullshit.
@karmatraining7 ай бұрын
Imagine how much time they must've spent getting rid of recursive references
@HollywoodCameraWork6 ай бұрын
Yeah, it's weird they even managed to compile it.
@OskarNendes6 ай бұрын
They did not
@bananesalee70867 ай бұрын
what a decade of "clean code" gurus does to ya
@CashsCoffeeАй бұрын
can you elaborate on this? just trying to learn
@Infernal_Puppet12 күн бұрын
@@CashsCoffeeguy is referring to the clean code book and the philosophy of breaking everything down into tiny methods that each do almost nothing and obscure what is going on in service of pretty looking object oriented code
@junosoft7 ай бұрын
I guess reading clang llvm-ir output is way, way easier than figuring out any of this.
@junosoft6 ай бұрын
@ctxz9580I did the same too
@chocolate_maned_wolfАй бұрын
im never complaining about template errors ever again
@MenkoDany7 ай бұрын
Am I the only one that thinks the blow fan channels are copying each other
@ericng88077 ай бұрын
they definitely are
@limarchenko967 ай бұрын
Yeah, I saw this same moment two times already. I even copied my comment from one of those videos here.
@docmars7 ай бұрын
Hey now, no consthpiracy theories allowed! ☝💢
@MenkoDany7 ай бұрын
@BufordTJustice42069 Wordcel
@FrancisGo.7 ай бұрын
I don't mind if they're copying each other. The alternative would be trying hard not to cover the same material in a race to the bottom.
@Optimus61287 ай бұрын
When you write a single line of goto: REEEEEEEEEEEEEEEEE That's Horrible Programming, cause it breaks the flow When people write things like that: Everything is fine, that's expert software engineer right there!
@bossgd1007 ай бұрын
exactly lol
@etodemerzel26277 ай бұрын
I've seen colleagues act disgusted when they see a medium-sized if-else-if chain... Feels like I'm working with professional cargo cultists.
@chudchadanstud7 ай бұрын
Don't ever use goto, like ever. They are unscoped loops.
@starc0w7 ай бұрын
@@chudchadanstud This statement contains too much dogma. There are definitely a few situations where it can make sense to use goto. And luminaries like Kernighan also confirm this.
@chudchadanstud7 ай бұрын
@@starc0w There has never been a situation when it makes sense to use goto. Use a switch case, for/while loop, recursion functions etc. You have no reason to use them. They don't exist in Jia too. JB hates them too.
@SurrogateActivities7 ай бұрын
rare jblow laughing moment
@insidiousmaximus2 ай бұрын
He is literally always laughing in every video
@thomassynths7 ай бұрын
f you take this as him complaining about diagram generation, I get his point. If his argument is about the actual header dependencies, I mean who actually cares. It's meaningless. I bet it's mostly due to using lots of forward declarations to save on rebuild times. Remember, LLVM is a huge project that takes forever to rebuild.
@HollywoodCameraWork6 ай бұрын
I feel like the point of forward declarations is to cut down on includes, not tricking the compiler into accepting mutual and circular dependencies. It's a trick that's only available because .h files exist and need some help to not be hogs.
@minhuang88486 ай бұрын
yeah, sanest take in here
@sajti8126 ай бұрын
Yeah, feels like he conflates mediocrity of the visualization tool with the codebase itself.
@Erik-cl5ff6 ай бұрын
@ndy-dp1bh I honestly don't get people like you, or the guy in the video. I mean---He is literally the irony of his own video. He is complaining about mostly meaningless shit without providing any context. I worked on massive projects like these and eventually, if you run it through a dependency graph generator, you will end up with something as ugly as this. I don't know how about YOU, but from the video itself I can't even make out the details of the dependencies and without any in depth analysis it is very naive to claim that it is a "mess" that can be outright simplified. As far as there are no cycles and the dependencies are inverted---It is not a problem. Even if you are doing redundant includes, the compiler will optimize that away.
@togofar6 ай бұрын
I'm actually not sure if he's complaining about the people who created the content of the graph or those that implemented how it's rendered... or is it both?
@BramStolk6 ай бұрын
THIS! He is shooting the messenger. He must mistakenly think that the llvm project wrote the graph visualizer. Doxygen and graphviz are great. Jon does not get it.
@zhulikkulik7 ай бұрын
I just had some pizza, but this made me want to make spaghetti 😋
@salim4444 ай бұрын
"a picture is worth a thousand words" well a messy diagram is worth a thousand spaghetti sauce
@sergrojGrayFace6 ай бұрын
"An idiot admires complexity, a genius admires -simplicity- a good laugh." -Terry A. Davis
@gudrungunzelmann6 ай бұрын
Usually when I come around such representations I remember my early code architecture curses from university: If you have crossing lines (which where actually not allowed in my UML course) it's under-abstraction. If you have graphs with many nodes down the line, it's over-abstraction. Here we have both :D
@user-mv4oh8yp1y6 ай бұрын
Oh Jesus they built a NEURAL NETWOKR!
@KunjaBihariKrishna7 ай бұрын
I recently got into programming as a hobby, and when I make little apps for my own use, I don't really care how messy the code is. If it works, then I'm happy, and after a while I get the urge to improve it. I enjoy the process, but ultimately it would be a huge pain for anyone other than me to deal with it. I wonder if what's happening in the code world is that people refuse to care about the bigger picture, and just put their nose down on the specific task they want to accomplish without regard for how it will work for others
@kattihatt7 ай бұрын
Thats not my experience, but i guess youre free to speculate on things you know nothing about.
@cristianstoica45447 ай бұрын
Not to that degree but it does. You will find people that submit pull requests with a few changes and each change mixes in something that they forgot to do earlier in the same PR. If you tell them to combine and simplify the PR they will look at you funny. They don't know what purpose the git history has in understanding the reason for a change and write crappy commit messages for thousand line diffs. They don't care about 'craft' and we all know a little how it feels. Mind you, I'm using the same approach to write crappy changes as I go along. But when I'm done, I clean up my mess even if it's for my own eyes.
@ifstatementifstatement27047 ай бұрын
Code should be periodically refactored like you do with your small projects. But with large projects where you have multiple programmers with varying degrees of design pattern knowledge and style, it becomes very difficult to do that. And to go through a codebase that large to refactor will take way too long. Time that no company will allow you to take. They'd rather have you work on projects that other clients are waiting for.
@ifstatementifstatement27047 ай бұрын
@@cristianstoica4544 yeah I always clean up. I cannot stand leaving code in a mess, for my own sanity. And I try to be as detailed as possible in my commit comments to explain the reason for why something was implemented or refactored in a specific way. I try to leave comments that I would have liked others to have left for me.
@wolfumz7 ай бұрын
Software developers are paid a lot of money to not do this
@om3galul9897 ай бұрын
That's horrible cable management.
@hmmmidkkk5 ай бұрын
Now this is REAL speghetti code 😂
@ozzymandius6666 ай бұрын
It's the Lorentz Attractor!
@carriagereturned39748 күн бұрын
Elon Musk: "Good part is no part" Programmers: ...
@leshommesdupilly2 ай бұрын
I don't understand what's wrong. I'm in biology and I work with graphs like this every day
@supernewuser7 ай бұрын
I wonder if he realises the llvm guys didn’t write doxygen or graphviz
@oncetwice63666 ай бұрын
Not relevant
@seriouscat22314 ай бұрын
What makes you think he doesn't?
@zuma206Ай бұрын
smallest javascript dependency graph
@alexandersuvorov20027 ай бұрын
When I see complex and obscuring documentation like this I just do things my own - documentation should help, not to confuse. Though, if it was “my boss wants this to work” I’d be fucked. There’s a lot of software out there which is hyped like crazy with awesome demos, but when you want to do something specific to your environment you just get stuck with no help. In old good days it was just pure math and computers. Rock solid. You learn the math and just code it into computer. These days it’s about hype, loads of confusing abracadabra terminology and “duck you!” minded documentation.
@dumbfailurekms7 ай бұрын
relax buddy you were what? 4 yrs old during the old days
@Muzzleflash19907 ай бұрын
There is nothing obscuring about it. In fact, people are accusing it of the opposite, of showing an include dependency graph - giving more details they don't feel they need or is useless. If you go read the auto-generated reference documentation then don't be surprised you find reference documentation. Which almost always implies that only parts of it will be useful because usually you only to the reference looking for specifics. Admittedly this is not a pretty (auto-generated) graph, but for any C++ developer it obvious what it is (since it says next to it). If one is perusing the *reference documentation* and *not* looking for an include graph then one wouldn't bother spending time on it. Blow spent more time laughing on this than there most likely ever was spent CPU time on generating the page. I don't know the context from this clip. But if the idea was to learn how to use this Command Line API, then one does not go the reference documentation, but rather documentation actually meant to teach usage, like llvm.org/docs/CommandLine.html#quick-start-guide .. (okay, probably not command line, but codegen flags, but then reference doc is generally the last and not first place to go).
@thewhitefalcon85397 ай бұрын
This documentation was produced by people whose job is to make documentation look impressive.
@alexandersuvorov20027 ай бұрын
@@dumbfailurekms That “new school” of programming started like 10 years ago or something. Most of it is just extreme hype over some basic concept or idea. And obviously documentation is not there when you want to do something complex beyond glorified demos. I figured out just to do things my own way with barebones programming language - it’s faster and stress-free. Shitty libraries and documentation is not my problem.
@alexandersuvorov20027 ай бұрын
@@thewhitefalcon8539 There is so, so many shitty production code out there just because dev’s were not able to figure out how to use certain platform ans just “patched” things together and released just to get this shit off their shoulders. This is modern day programming, nobody cares about quality, the code is barely operational.
@vladalex95567 ай бұрын
his laugh 😂😂😂😂
@alejmc7 ай бұрын
Exactly hahah, I couldn’t help but join in. Legit laugh.
@user-hz4tc2pf3x5 ай бұрын
This one really got him 💀
@liquidsnake68795 ай бұрын
It's not just "look at the documentation" in this case, it's reserve a whole week, prepare various jugs of coffee, get a notepad and a pen, and plow through this nonsense we've left you
@AbelCableTV7 ай бұрын
it's drawing time
@GeorgeFosberry6 ай бұрын
I don't get what he finds so funny about this. This is a typical GraphViz diagram generated automatically from header dependencies. This has nothing to do with "actual programming". And nobody in the comment section acknowledged that. How dumb can Blow fans be?
@williamdrum98997 күн бұрын
I'm no expert but the funny part is that the graph is a tangled mess. Which seems to be a problem with the coding style or the way languages are designed
@usernamesrbacknowthx7 ай бұрын
puzzle game developer rants about actually useful and complex software and there are 150 meatriders in the comments who learned how to install linux 2 years ago parroting him like they're L8 engineers from AWS
@defeqel65377 ай бұрын
Yup, the Dunning-Kruger here is astonishing, especially from commenters, but JoBlow too. I doubt most commenters here have done anything more complex than a CSV parser, or a basic web server.
@nerdError0XF6 ай бұрын
It's funny how you specifically call him "puzzle game developer" to disregard his 30 years of programming experience, including some noticeable achievements (which are hard to underestimate, like making a programming language, and making multiple critically and commercaly acclaimed games (one of which is 3D 1st person open world), from ground up, without any game engine) You definetly have some similar amount of experience to talk like that, right?
@usernamesrbacknowthx6 ай бұрын
@@nerdError0XF Yes.
@jonathanmoore21396 ай бұрын
Literal spaghetti code
@IkeFoxbrush6 ай бұрын
I might be wrong, but isn't this (autogenerated) diagram just an #include hierarchy of a C++ header file? The file includes five other header files, also listed in the top left corner, among others vector and string. These typically depend on some more headers themselves (often times the same ones), so you get a rather dense dependency graph. Doesn't necessarily mean the underlying code is bad. Otoh, this kind of representation isn't particularly helpful either. And yes, #includes are a rather crude and outdated mechanism, basically recursively copying pieces of text into your compilation units. This is programming like 40 years ago, and brings some serious problems. That's why modern C++ offers modules as a replacement.
@MightyAlex2006 ай бұрын
yeah, and the url is clearly visible in the video. im not sure why more people didnt check. its a stupid graph but it doesnt speak at all of the code quality. maybe people are just looking for a reason to get mad
@sullivan35036 ай бұрын
@@MightyAlex200 How is it even a stupid graph? Because the indegree of some of the nodes is a bit high? Many graphs of such complexity that they are actually useful is bound to have an indegree like that!
@Erik-cl5ff6 ай бұрын
100% agree with you. This video is an irony of the exact thing he is complaining about. Holy hell.
@Erik-cl5ff6 ай бұрын
@@TootNZ Fully agree with you.
@chromosundrift4 ай бұрын
I check the URL but the graph does not automatically show. How do I get that graph to appear?
@sprytnychomik7 ай бұрын
It's like having a separate header file for each declaration or define (which, btw, should be accessed only via microservice or, in a worst case scenario, singleton).
@oren22346 ай бұрын
microservices and singletons, found the OOP corporate slave
@jfftck6 ай бұрын
This is LLVM, it’s known for being complex. I believe the complexity is stemming from supporting so many OSs that everything has been abstracted to a degree that most of us should never see. I wonder if this is following clean code principles, that also could be why it looks like this.
@trejohnson76776 ай бұрын
ya its not a bs platform game u can shit out on godot these dayz lel.
@Kevzz2srs5 ай бұрын
people dont recommend clean code principles anymore, most of the advice is terrible
@astrixx2 ай бұрын
The abstraction is the problem. Everyone is so pre-occupied for being "general". It doesn't have to be general, literally just write a fucking separate targeted implementation rather than making abstract functions that work on every platform. That's what leads to shit like this. I work with the unreal engine code base and it's the same shit because they try to make everything super abstract and general and no one (not even the devs by the comments in the code) understands wtf it's doing.
@jfftck2 ай бұрын
@@astrixx If abstraction is your issue, then you should consider writing your code in Assembly, which is very platform dependent. All programming languages are written as abstractions and you can’t really remove that if you want to port them to different platforms, the problem will always be present at some point - even if it is just a bunch of functions, someone will turn those into an abstraction layer for their project, but now there isn’t any team that is tasked to maintaining the integrity of that code and the likelihood that many individual abstractions will fail is higher. So, it’s better to take the lesser of two evils, or maybe do the Python approach, where the low level code is available, but it’s recommended to use the higher level abstraction in most projects - you can look at the the packages in the os library as one of the best examples, this could be taken all the way down in a library for writing programming languages. Just remember that every language is a trade off between simplicity and deep control of the hardware, so most are extremely abstract and the complexity in undoing those abstractions will be messy.
@g13n4Ай бұрын
@@astrixx I completely agree. The desire to abstract everything and utilise generics as much as possible leads to a code that's both unreadable and unmaintainable
@carriagereturned39748 күн бұрын
nowadays internet is for looking "how not to program"
@callisoncaffrey6 ай бұрын
I see Windows, I leave.
@shroomer38676 ай бұрын
"AI will replace us!" What AI code will look if it were unchained without little to no programmers:
@lepidoptera93374 ай бұрын
AI code will look much, much worse. AI will, for instance, constantly invent new communication protocols. Instead of standardizing, it will constantly obfuscate.
@Titere0525 күн бұрын
@@lepidoptera9337 Not to mention it'll constantly do stupid shit no one asked for because it's an effing prediction machine not an intelligence
@waltwhite812623 күн бұрын
@@lepidoptera9337 in time AI will code quality might trend downwards, since it will train using public repositories like github and in time more and more AI generated code will be in those repos, so it will feed itself the garbage code it produces.
@Mjjn744 ай бұрын
It looks like the milky way.
@MalushJ5 ай бұрын
where is the meatballs and the tomato sauce?
@Powerofthepickle7 ай бұрын
lol did they delete it after this? I don't see it on the page
@Casgen7 ай бұрын
I think so, i dont see it too. You can see it in the wayback machine though
@BlowFan7 ай бұрын
I actually had to use Wayback Machine in order to find it. I wanted to use it for the thumbnail. It's those blue lines in the thumbnail.
@KunjaBihariKrishna7 ай бұрын
The tofudreg of information technology
@orbik_fin25 күн бұрын
Include (or import) dependencies are IMO one of the strongest arguments against using text files as source code. A file is an artificial grouping of symbol definitions and creates lots of unwanted dependency sprawl.
@aodfr2 ай бұрын
Spegetti code goes brrr. 😂
@robrick93617 ай бұрын
I guess Jon Blow doesn't like spaghetti.
@ReedoTV29 күн бұрын
I had to read the UML spec and I must justify that
@ilu19946 ай бұрын
Good lord, so much elitism.
@Mike.Garcia7 ай бұрын
that's what dogmatic belief looks like
@Titere0525 күн бұрын
It's funny to read the lofty academic debates down here when it's clear most people (myself included) are unsure what exactly Jon is criticising here. The automatic diagram generation? The complexity? The imports? That some dude actually thinks programming is doodling a line with a marker around some boxes? Is this complexity even relevant to anyone? Who knows, but I'll just interpret it however I like it the most and plaster my rant here
@1111112222236 ай бұрын
I can't tell whether you are making fun of the guys that wrote the code the graphic was generated from or the guys that wrote the graphic generation.
@iestynneАй бұрын
well why choose
@RNMSC6 ай бұрын
It almost looks like they were attempting to represent code as a wiring diagram for a neural net, and forgot to color code the wires.
@miikavihersaari31047 ай бұрын
The LLVM team has been real busy! 🤣😂🤣😂
@llothar687 ай бұрын
No thats the whole point of it. They use unintelligent artifical intelligence to save time. That the result is just worth nothing is a sympthom of modern software development.
@SaidMetiche-qy9hb7 ай бұрын
LLVM use Ai? where did you hear that@@llothar68
@The-cyber-imbiber7 ай бұрын
Maybe these "elitists" don't want you to understand their systems. If you did, then they wouldn't be special anymore.
@RomanKnavАй бұрын
poor spaghetti didn't deserve to be roasted that bad
@stephenkentperez77056 ай бұрын
Knees weak, arms are heavy...
@shortcat7 ай бұрын
programming is like gaming, but programming
@imjustsaiyan74506 ай бұрын
Last time I made something that looks like that my cheap biro was refusing to work.
@alfredo1valenzuela6 ай бұрын
"I dont understand the diagram heh heh heh heh heh heh Hilarity"
@trejohnson76776 ай бұрын
this fucking game developer lmao.
@alexkuhn50786 ай бұрын
"it would still be unreadable, but it would be less unreadable"
@Apocobat7 ай бұрын
Bad documentation has got to be something you get judged for at the pearly gates
@nerdError0XF6 ай бұрын
Bad documentation on what? The programming language he hasnt done yet and which is in closed beta? Yea right, he should definetly focus on docs right now, very important
@ItsFuckinLoona6 ай бұрын
junior game programmer here, and I do this. matter of fact honestly mine are worse. Can someone kindly explain what i should do instead? I just, when I write state machines I want to know the complex ins and outs of which states transition to which states, so i am not just going in blind and messing up the extremely important order of state change logic.
@TheGalantir6 ай бұрын
You shouldn't do anything else instead, this video is just about ego and pretending to be better than others. These are the types of graphs you get when you follow clean code principles. Some who pretend to be better than other say you have to follow clean code guidelines and other as we can see here say you shouldn't. At the end the only result that really counts is if it works and performs, that's all your future boss will be interrested in, he couldn't care less about the rest.
@dawidkotlinski6 ай бұрын
Why model a state machine with classes
@TheGalantir6 ай бұрын
@@dawidkotlinski Nobody, don't try to be smart. Try learning to read the entire text since you clearly did not understand it and chose just one word out of the entire text and responded to that one word. That is exactly the same as randomly shouting pancake. It makes no sense.
@equalent6 ай бұрын
@@TheGalantir couldn't agree more. 95% of "tech influencers" are all about that. one of the most complex c++ projects available online, Unreal Engine, is way worse than LLVM in terms of headers and code complexity in general. yet I don't see it failing because of it
@OskarNendes6 ай бұрын
For state machines you have to write the states interpreter and them just create tables of rules. This is how they have been written since 1980. There is nothing to mess, not even code to write.
@fk32397 ай бұрын
I don't know what's going on here, who Blow is, or why this is in my recommendations, but man I do know I could go for some spaghetti right about now.
@-Engineering01-7 ай бұрын
Keep this channel active bro pls !
@vosdraug4628Ай бұрын
The definition of spaghetti code.
@patrykcelinski24136 ай бұрын
They never heard about Miller rule that humans can focus on 7-10 things at time. For IT/CS people it implies that a single diagram should never have more than 7-10 components or the client or your team or whoever that you explain system to may have problems of understanding it. Always split huge diagram into small ones.
@noobdernoobder67076 ай бұрын
True. Merging arrows sounds like serious programming. And not that shit we see here.
@bitskit34766 ай бұрын
John's reaction on the graph reminds me of this discussion I had with my roommates the other day. I'm in electrical engineering, one is in industrial engineering, one is in chemical engineering, and the fourth is in biological engineering. One of them made a joke that if we combined our collective brainpower, we might be able to solve a three-body diagram. I legit went into an almost 10min long fit of laughter.
@heliumcalcium3966 ай бұрын
It sounds as if you could write a lot of good jokes with that premise. Have the four of you ever gone fishing? Or rock-climbing? Or tried to assemble IKEA furniture?
@shroomer38676 ай бұрын
Please tell us what happens when you four enter a bar
@juha-petrityrkko37716 ай бұрын
I solve problems like this with my homemade software that creates zoomable, rotatable colour-coded 3D connection models. It has arrow merging, too, if the 3 dimensions are not otherwise sufficient to facilitate legible geometries.
@guxershmeg6 ай бұрын
I calculated only about 60 objects. Not so complicated compared to our projects. We have like 7 stages inheritance chains.
@extantsanity6 ай бұрын
I totally get the general sentiment that this spaghetti stuff is unreadable, but his laughing isn't illuminating or productive. Worse, it remains entirely possible (however improbable) that there is a lot of wisdom in the diagram that just hasn't been explained properly through the documentation. This reminds me of a TED talk where Eric Berlow shows how you can drastically simplify a complex food chain in an ecosystem by focusing on "nodes of influence" -- that is, by both grouping similar vectors and then prioritizing the ones which have the most impact. My favorite line is at the end: *"[What we found is] the more you step back and embrace complexity, the better chance you have of finding simple answers -- and it's often different than the simple answer you started with. So, for any problem, the more you can zoom out and embrace complexity, the better chance you have of zooming in on the simple details that matter most."* kzfaq.info/get/bejne/i6hinLyrsMvJmmw.htmlsi=kG_Vu6CsEG2sthv0
@paxcoder6 ай бұрын
Do we think a graph like this wouldn't be generated for this man's code?
@sullivan35036 ай бұрын
Facts. Any useful software project is likely to have a dependency graph of this complexity.
@AloisMahdal6 ай бұрын
I think the point is that *he* would not choose to generate it. But sure, the complexity of the code here might not be the real problem, it's how this "bad attempt at a ball of threads" is not helping anyone. (Except Jon to have a good laugh.)
@Argoon1981Ай бұрын
Is not the fact that "complex code makes complex graphs" that is true, is why make a graph system, that ends making graphs for complex code that are unreadable. And then, have the courage to call that docs! IMO is better to just not show any graph at all, IMO no help is better than bad help.
@SheelByTorn6 ай бұрын
no way! it's LLVM?! 😂😂😂
@poutineausyropderable71086 ай бұрын
Who's THEY. WHAT'S THE CONTEXT!
@williamdrum98997 күн бұрын
They - computer science professors and experts
@vasiovasio6 ай бұрын
Spaghetti in a Nutshell! 😂😂😂
@p99chan996 ай бұрын
Isn't visual programming a thing? instead of writing code you connect a bunch of nodes together? kind of like Scartch, Unity, or Unreal Engine?
@recursiv6 ай бұрын
Yes, and some of it is bad, just like some text-based programming is bad. This graph technically contains a lot of information, but none of it use usable for a human.
@terryriley64106 ай бұрын
When writing code you connect a bunch of characters together. It isn't all that different. The good thing about node based is that syntax errors doesn't exist, the bad thing is that nodes and wires take up a lot of space. In the future we will have a middle ground, a code editor where you will be able to write code without the ability to express either syntax or even type errors.
@BoardGameMaker41086 ай бұрын
Visual programming is a thing but it is normally a very bad idea because it leads to confusing spaghetti like this. The only reason to use visual programming is if you don't understand text. It's generally much quicker to type than it is to draw the same thing (and you can fit more on the page when it's typed). This video isn't about visual programming though, just a diagram of the codebase.
@pvc9887 ай бұрын
Graphviz hell. BTW. This is not that bad. Have you seen diagrams generated by Yosys?
@nanimo_null7 ай бұрын
"It would still be unreadable, but it would be less unreadable" Interesting
@KimTiger7777 ай бұрын
Basic spaghetti programming all over again 😵😵
@Erik-cl5ff6 ай бұрын
You are sayin this as if you wrote at least single line of code in your life.
@remsee16087 ай бұрын
I had to explain to my dog that it’s water is ok because he said dog water at 3
@bugothecatplays78644 ай бұрын
When Jonathan started laughing manically, I thought of a crossover with Terry from TempleOS for some reason. I'd think of Terry's voice asking "is that programming *slur word*" and "they glow in the dark". There is something about being the outcast criticising the whole software industry on how they do stuff and you doing things in your own way while laughing hysterically on how things have become.
@1schwererziehbar17 ай бұрын
This is just an automatically generated documentation. They put their source code through a program which creates a documentation for it, and part of it is a function call graph, which sometimes is helpful and often not. This is still better than writing the documentation manually, because then you forget to update things.
@etodemerzel26277 ай бұрын
Did you mean to say hellful or helpful? (:
@921Ether7 ай бұрын
what, did you even think one second before you wrote this?
@blenderpanzi7 ай бұрын
I can't imagine when a graph of include files like that would ever be useful, even if it's readable. A list of all direct includes and maybe a second list of all indirect includes is useful, but idgaf about those graph relationships in-between.
@semyaza5557 ай бұрын
I don’t think you thought this through big dog.
@KunjaBihariKrishna7 ай бұрын
Thanks, I will sleep better now
@Seacle145 ай бұрын
I think it's sort of cute than Jonathan named his PC "Warrior".
@OJeyjunior6 ай бұрын
the thing about that flowchart is either programing is WAY simpler than that OR 100 times harder... depending on your level of detail... they missed both
@synchro-dentally19656 ай бұрын
Makes me hungry for spaghetti
@ArtoPekkanen6 ай бұрын
This is why I hate many highly advertised/popular software ... libraries, frameworks, you name it. Many big name doodads have garbage documentation, auto generated mess plus a few "cookbook examples", and when you cannot fucking get productive trying to follow that shit and ask around, you get told you are stupid. Why cannot we have proper documentation that contains actual prose explaining the semantics, and not only list APIs with comments? Maybe too much to ask goddamn.
@SquigglyP7 ай бұрын
What the hell even is this? Like a graph of what types are used in what functions and what functions are called by other functions or something? I don't even know what the hell the arrows are trying to illustrate. Dependency tree or something? Someone explain, please...
@resresres17 ай бұрын
i was about to say the same thing. if i was to graph all the signal connections between functions for a program im currently working on.... this is probably what it would look like :x
@rodrigoserafim88347 ай бұрын
Its a class dependency graph, which is, to be blunt, a very stupid thing to print out. Usually when you are designing a OOP class system each class depends on dozens of others because you are trying to encapsulate complex things inside it. So you end up with this ridiculous amount of arrows. It might be useful to do it centered on 1 class, kind of like a "find all references", but even the utility of that drawn as a graph is debatable. Drawing it N:N is idiotic. What dependency graphs should really be used for is for module or layer dependencies, where at that level you don't expect one module to depend on too many other ones. Or you might want to quickly identify circular dependencies you might need to deal with. This is pretty much a case of the wrong tool for the job, and Jonathan should know that and explain instead of just laughing at it.
@sergiofitch43786 ай бұрын
I appreciate the 40 seconds laugh
@stevecarter88106 ай бұрын
This is what happens when you give graph viz dot any kind of complexity to render. Useless for visualising the graph, ironically
@shte_ken39786 ай бұрын
Average Unreal Engine Blueprint experience
@Yohoat3 күн бұрын
And then a man plays The Witness for an hour, begins laughing uncontrollably, and says "He ACTUALLY thinks this is fun!" Jon has clearly chosen his lane, and he is not interested in fun. He is not interested in open doors, or approaching you as an equal. He will make sure to let you know how you are living your life wrong. Visual scripting is laughable. Maintaining a healthy life balance means you'll never be good enough. Modern engines suck. Everyday rendering techniques are garbage. Social progress is bad. He's is a horrible influence on any devs that continue to listen to him, or any people, for that matter.
@yaksher7 ай бұрын
I've still seen nothing that explains why people care what Jonathan Blow has to say so much, but by default I'm automatically assuming that anything associated with LLVM deserves more respect than he does and is definitely "real programming" given that LLVM is the foundation of very roughly a third of all code.
@codaaaaaaaaa7 ай бұрын
Obvious bait, avoid interacting regardless of what this individual says next. Stay productive everyone ❤
@alexandersuvorov20027 ай бұрын
Why should we care what you think either? That’s just opinion, bro, take it easy. You like to waste your time deciphering those messy charts made by “real programmers” that’s fine, just move on.
@yaksher7 ай бұрын
@@alexandersuvorov2002 I mean, obviously I'm not going to decipher this chart-I have no use for it because I've no current plans to use LLVM as a library-but I suspect that it exists for a reason and conveys valuable information to someone rather than LLVM devs just making extra useless documentation for shits and giggles. That or it's just an entirely automatically generated thing that required no effort to make and which nobody uses. But in that case, I don't see the point of making fun of the LLVM documentation for... having some redundant autogenerated stuff?
@alexandersuvorov20027 ай бұрын
@@yaksher Why would you put evidently useless chart as a documentation? Not only they made it impossible to read (just zoom in to see those lines running so close you lose which one leads where), but they also squeezed it and contained in a shape that is hard to read. The problem is that there are folks like yourself who know nothing about LLVM except “2/3 of code uses it” and then start preaching everyone around how incompetent we are and that we should get as good as LLVM team. Zero logic, negligent knowledge, just exaggerated ignorance and insecurity. It was a good laugh and 99% of folks in the industry can relate to what is going on in this vid.
@yaksher7 ай бұрын
@@alexandersuvorov2002 Given that your reading comprehension is so bad that you think I said 2/3rds and not 1/3rd, I'm not sure why I should care about anything you have to say, but getting into arguments on the internet can be fun, so: I never called anybody incompetent-that's you (by proxy), saying that what the developers of LLVM do isn't "real programming". Nor did I say anybody should get as good as the LLVM team-I just said that by default, I would assume that the LLVM team has some reason for doing what they do (presumably, somebody finds header graphs generally useful, even if this particular one is unlikely to be of much help to anyone), whereas Jonathon Blow is some random game dev who's only credentials are an alright puzzle game and a programming language that is neither available for general use nor notable enough to have a Wikipedia page. I think wanting to shit on a project infinitely more important and impressive than anything you will ever do in your life, as well as immediately rushing to Jonathon Blow's defense with insults is very a much a sign of insecurity in its own right. You're an insecure fanboy dumbass who thinks being loud and annoying makes somebody's opinions about code valuable, rather than - saying something of substance that stands on its own merit - having credentials like having designed something actually useful
@alfonzo63204 ай бұрын
you should link a tutorial on how you would fix that.
@rightwingsafetysquad98727 ай бұрын
I have no idea what I'm looking at, but it's pretty plain that whoever made it didn't want anyone to understand it.
@ilu19946 ай бұрын
It's LLVM, a gigantic compiler toolchain. it contains a C/C++ frontend (Clang) along with many others, a heavy-duty optimizer, backends for many different architectures, and is meant to be extensible. LLVM is used as a backend for many languages, like Swift, Rust, Julia, etc. It's very likely you're running programs compiled with LLVM on your computer. As much as KISS is a good principle, not all things are simple. This entire video is a joke.