On the history and justification of the C programming language
I think a large problem with this is that people unreasonably idealize the features of ALGOL 60 and many other &quot;Perfect Systems Languages&quot;<p>The issue is that there are not any major open source projects to examine that use these languages to see how they actually work in the wild. For example, writing a Java codebase with nothing other then the standard library you can do some very nice design patterns. You can come up with some very clean and concise code and everything can be perfect. Then, when you go to integrate with someone else&#x27;s code (see Spring) you notice that everything becomes a mess since they are using some crazy things that make it very difficult to integrate with it.<p>Due to this it&#x27;s impossible to say how well another language would behave in the wild since I don&#x27;t think anyone can predict how well the language will be used to it&#x27;s extent.<p>That being said, I think C succeeded because it was SIMPLE. Not only for the compiler, but I can teach pretty much anyone how to understand C in most likely a few days to a week. It&#x27;s very simple and very little you need to know to understand how to start writing your programs.<p>On the other hand, ALGOL is MASSIVE. There are 106 reserved identifiers in the language according to wikipedia and I don&#x27;t think I could ever remember what every one of them did.<p>Currently C has about 32 key words and I can tell you in full detail what every one of them means except union as I don&#x27;t work much with C.<p>This is good for the beginning programmer since it shortens the time they need to hit the books and helps them jump strait into writing.<p>Something that&#x27;s good for the advanced programmer, in my opinion, is the use of braces and not words.<p>I know this is kind of controversial but I do honestly think that a code should be easily segmented by the eye not readable.<p>Begin and End only help so much and by so much I mean not at all. Words should not be syntax in my opinion. Seeing { } is less to look at and understand then seing Begin and End.<p>This sample phenomenon can be looked at from the recent Linux 1000 patches debacle.<p>Linus said he didn&#x27;t want to replace unix file permission numbers with the symbolic values. Why? Because it&#x27;s much much faster for someone to see the numbers and know what&#x27;s going on then to have to read a bunch of text. It&#x27;s much quicker in parsing.<p>That&#x27;s where the breakdown comes in these discussions. People will throw &quot;You&#x27;ve never used these, how do you know yours is faster.&quot;<p>While that&#x27;s true that doesn&#x27;t really present a good argument for changing everything.<p>I also hate needing to type := for assignment. It makes no sense. Fixing the beginner issue of missing the second equal sign in an if statement has a much simpler fix. Use some kind of IDE&#x2F;Editor with a linter. You&#x27;ll not have this problem.