>>1025419
>>starting on C and ASM, compulsory
>>1025563
>none of that is relevant to CS education aside from learning C and ASM.
>>1026183
>Knowing C is pretty relevant to CS education
C is anti-CS education that shits on more than sixty years of computer science including OS design and non-PDP-11 hardware and it was only allowed to be taught because of widespread computer illiteracy. Incompetent "decision makers" replaced real CS with C and UNIX bullshit because UNIX companies like AT&T needed thousands of "programmers" because C was so unproductive. It's the opposite of how innovation and advances work in any other field. C is also so full of special cases and bullshit "rules" that instead of teaching general concepts and several languages like they used to, they had to focus on a single language. C is complex not because it does a lot of things (like e.g. Common Lisp), but because it's badly designed.
The complexity in Common Lisp reduces complexity for the programmer by creating "frameworks" that anyone can extend, like macros, streams, setf expanders, condition handling, and generic functions, but the complexity in C increases complexity for the programmer by making everyone avoid problems that don't even exist in assembly language. C was "designed" to be hard to replace by using shitty "techniques" like null-terminated strings and array decay that nobody else was stupid enough to do. At that time, there was a lot of work on tagged architectures and array descriptors that do bounds checking automatically, like Lisp machines, so C took a big shit on hardware development too. I also want to be able to understand every single line of code that runs on my machine, and the fact that C needs tens of millions of lines of code to do anything and so much redundancy and reinvention of wheels gets in the way of that.
I originally found this article while searching for information about the OOM killer and overcommit in Linux and found this amazing comment.
https://www.hanselman.com/blog/WhenDidWeStopCaringAboutMemoryManagement.aspx
>Sure, for along time in programming I thought about memory management.
>I liked the block structure of PL/I and how that helped make memory management easy, efficient for for the machine and easy for the programmer. Also important was that the exceptional condition handling walked back in the stack of dynamic descendancy, did the right things with memory along the way -- got rid of a lot of 'memory leaks' automatically -- not a pun. And the static memory was task-relative so that if a task went away, so did it's memory, also automatically. PL/I -- darned nice language. A George Radin victory.
>Then on a team that wrote an AI language, I thought about memory management and gave up as I discovered that for essentially any (IIRC just any) scheme of memory management, there was a situation that made a mess out of memory, that is, left a lot of holes. So, since there can be no really perfect solution, I settled on the PL/I approach as good enough in practice.
>In our program, IIRC we used Cartesian trees to help with memory management.
>Currently popular languages that gave far too much weight to the design decision in C (IMHO a total disaster for computing), far behind Algol, Fortran, PL/I, Pascal, Ada, at least, but, sure, what the heck expect from a one-pass compiler on an 8 KB memory DEC PDP-8 or whatever that toy was?
>We'd all be much better off with some block structure, scope of names, etc. -- heck, just borrow from PL/I. The emphasis on C instead of PL/I was a gigantic case of a whole industry shooting itself in the gut. Much worse -- C++. I never could get a clean definition of that language; I'm not sure Stroustrup has one either.
>For more, the PL/I structures are so nice, far, far ahead of C, that OO programming is both much less efficient for both the machine and the programmer and also not much more useful for the programmer.
>PL/I could be tweaked a little, e.g., have AVL trees built in and do more with the attribute LIKE.
>Now, of course, sure, I just take the memory management in Microsoft's Visual Basic .NET. For the code for my Web site, VB seems fine.
>C#? Reminds me of C so that I do an upchuck. I hate C. Deeply, profoundly, bitterly hate and despise C. The thing is like digging a grave with a teaspoon -- work like hell and then just fall in and die.
If there's one thing which truly pisses me off, it is the
attempt to pretend that there is anything vaguely "academic"
about this stuff. I mean, can you think of anything closer
to hell on earth than a "conference" full of unix geeks
presenting their oh-so-rigourous "papers" on, say, "SMURFY:
An automatic cron-driven fsck-daemon"?