sorcerer_see: (Default)

Programming languages evolve over time because many experienced programmers use them continuously, become aware of their deficiencies, and experiment with possible improvements along the way. Organizations have been created to develop 'standards': indexes of rules for proper usage. these are being adjusted as time goes by. New methods developed by some incidental innovative programmers with good ideas, get adopted into a new standard for all to apply. Compilers follow these standards. In this manner compatibility between programs, IDE's, and compilers, is assured, and programmers can trust that all who use a specific standard are on the same platform, and it makes it clear which one that is, and hence it is clear for all, what differences may exist between the methods individual programmers use, if they use different standards. Their chosen tool-set has a name.

A rule of thumb is that older C standards have less risk for incompatibility because new methods are added while old methods are not dismissed. In this way, later standards will simply have more and, possibly more efficient, ways to do the same things. All compilers run C89 while older compilers can not run newer standards. C23 is therefor the least compatible standard. As you can see, newer is not always better in the IT world!

Programmers choose the standard they use based on what kind of programs they want to write and on which platform they need to run.

In my case, for learning purposes, I want to focus on the 3D era of games & the early internet (1995 - 2005) and I want applications to run under the Windows NT 5.1 operating system, which was commercially labeled as Windows XP.

Iterations of the C standard that can be compiled by Windows XP era compilers and run under the same OS are:

- K&R C
- C89 (ANSI)
- C90
- C99
- C03
- C11
- C14

Because I want to create applications like they did in the time period 1995 - 2005,  think the logical choice is C89/C90 (ANSI C), which is arguably the most important of them all, as later iterations only adjusted fairly minor aspects. K&R (1978) is interesting but not useful due to being outdated.

For C it is not a big issue that I learn a 35 year old standard, since innovations over the years have been fairly minor. In C++ it would be a bigger issue because that language has seen significant changes as it is much more geared at innovation, at the cost of stability, whereas C is treated much more conservatively it seems. If it works, don't change it, is the spirit of C I have the feeling. It probably also has to do with the fact that C is partly aimed at low level programming, which means it is more confined to the rules that exist at the physical level, which has more limitations then the abstraction of high level programming. I could be wrong do, these are the speculations of a green leaf, so take my words with a grain of salt!

Profile

sorcerer_see: (Default)
sorcerer_see

October 2025

S M T W T F S
    12 34
56 7 8 9 10 11
12 1314 15 16 1718
19 2021 22 23 2425
2627 28293031 

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 16th, 2026 02:29 am
Powered by Dreamwidth Studios