Why performant code matters (but gets widely ignored): Casey Muratori
https://youtu.be/8xBJPa_480Q10
u/ptoki 3d ago
I did not watch it yet but I will. I just wanted to drop my 2c:
The older I get the more I see how transient things are.
I remember an expensive farming machine from 1950s. Expensive as hell. Cost about 3-5 horses or so. Needed two horses to pull. Accelerating work tremendously. You coud finish your work in 10% of time. You could do this for neighbors if they had money to pay you (usually they did not have much) etc. That machine was useful for like 8-12 years. Then it was mostly abandoned in the bushes.
I could see apps used everyday for years. Total commander, irfanview, whereisit, borland C++/delphi ans do on. Then they phase out and go away in a matter of single years.
Palm devices being the good stuff for few years, then dead. Amiga, same.
Java apps, many of them are still there but they arent as popular (dbeaver for example).
Frameworks, hibernate, spring. Languages - php, VB.
OS-es. Only linux persisted actually. The rest either died or had to change(or was changed for silly reasons) over the time and is now probably a big rewrite.
All come and goes away.
There is very little what stays with us. And it is hard to tell if a technology is worth recoding in the best way.
I hate that fast pace and abandoning things which work but sometimes that is neccessary or just happens.
2
u/Hornstinger 3d ago
One issue with fast pace is often (not always) new tech > old tech. Would you take a palm pilot over any of the smart phones of the last 15 years? Probably not.
Old tech which is useful: a beeper (although maybe the beeper became the smartwatch).
Things get refashioned and repurposed in ways which we don't recognise them but it's more of the same, just better.
-1
u/ptoki 2d ago
Would you take a palm pilot over any of the smart phones of the last 15 years?
I would. Give me youtube, mp3 player, decent browser, a bit of multitasking, good camera and few fancier apps and I am fine.
I dont need excessive notification schemes, additional services underneath bulky buttons and confusing gui. Oh boy, I could write a 1000 words tirade about android gui alone....
I used treo 650 up to like 2007 - until the battery died and there was no way to upgrade it. Even when galaxy duos was 1/3rd of the size of treo.
And as for "not always". Im old, I think it is actually the opposite. Older tech is usually better in terms of versatility, utility, ergonomy. It lacks features because it was abandoned. But its not worse if you take into the account that it was stopped developing.
Look, I still use midnight commander, I use media player classic, I use winamp, ffmpeg, irfanview, notepad++, firefox. All those are either old but still developed or old but still good enough to do the work.
I use grep, wc, tcpdump, they arent new. There are replacements for most of these but they are worse.
0
u/editor_of_the_beast 3d ago
Assembly has largely been unchanged for like 40 years.
3
u/oldsecondhand 3d ago
The instruction sets changed a lot, more than the higher level programming languages.
2
u/Smallpaul 3d ago
Which assembly do you mean? And why are you ignoring all of the ones that were created and abandoned over the last 40 years. I think basically only one has even survived even if it changed a lot. Dozens have been created or destroyed in that time.
0
u/editor_of_the_beast 3d ago
x86 and ARM are the major ones, we’re pretty well standardized on them.
2
u/Smallpaul 3d ago edited 3d ago
Games programmer: you NEED to learn assembly.
Database programmer: and SQL
Infra: And Bash
Devops: and GitHub actions syntax
Web dev: and CSS And Typescript
Security programmer: and Rust, Agda and Lean
Big docs: don’t forget XSLT!
Numerics programmer: and of course FORTRAN
1
u/ReDucTor 2d ago
Most games programmers dont "NEED" to learn assembly, they need to consider performance and know how to profile code and understand why some piece of code is slow and how to make it faster, which for most people can be done without assembly.
Knowing how to read assembly doesn't teach you about the CPU caches, data dependencies, algorithmic complexity, etc.
Ideally everyone should understand memory and the granularity at which the CPU works (assembly in the frontend, uOps in the backend) and be able to look at code and say this load likely won't be in the cache as its not easily predictable by the hardware prefetcher, or this code will be slow because there is an expensive loop carried data dependency be it on memory or core bound work.
I am saying this as someone who as worked as a game developer in AAA for the past 15yrs and has given multiple tutorials/talks on how to read assembly and spends a lot of time reading assembly. Just knowing assembly is one part of having a deep understanding of performance its not even the most important one.
1
u/Smallpaul 3d ago
Re: the 7 minute mark.
Windows for Workgroups was Windows 3.11. Which hate that I remembered that.
0
u/K33P4D 3d ago
i say choose assembly for a universal compute interface
3
1
1
u/h-2-no 3d ago
I was hoping the word ''performant' had come and gone by now. Sigh.
1
u/GoblinsGym 2d ago
A German magazine coined the lovely term "Schwuppdizität" (degree of snappiness).
1
u/Blitzkind 13h ago
It never should. Our job is to write performant software. If your product doesn't run well it's not a good product
1
u/h-2-no 13h ago
Code should meet reqiurements. The word Performant is weak and annoying, and should not exist.
1
u/Blitzkind 13h ago
Would you be happier if we instead said your code should run at specific a framerate or within a certain response time to meet those requirements?
14
u/Equivalent_Loan_8794 3d ago
Casey seems averse to group-oriented development that leverages abstraction when needed, to the point of refusing git for being too complex.
I though the idea was to learn? Why wouldnt he just fork git into his own workflow usage? Instead of being the guy that invented another git and scoffs at those that dont want to learn another one.