0

C18 is developed version of C11 as C11 is developed version of C99.

Then I think

Price of C99 < Price of C11 < Price of C18 is right. I’m trying to learn C as my first programming language. And I thought Standard’s of C helps me a lot about my curiosity about C. I want to buy the standard. But what standard should I buy?

It seems reasonable to buy C18 as it’s the latest version of ANSI C. But why? Why C18 is $232.00 and C99 is $403.00? Does C18 encompass only revised section of C99? Or it’s for man who already buy C99? I feel so confused. And when I google 'ISO/IEC 9899:1999', I can easily see C99's pdf file at the first page. What is it? C99 is originally require money to access. Is it illegal document?

Thomas Dickey
  • 51,086
  • 7
  • 70
  • 105
lev.1 code
  • 87
  • 7
  • 5
    What is your objective for reading the standard? If you are just starting out to learn C I'm not sure reading the standard is the way to go (others may differ). IMHO better to do some free tutorials or invest your money on a good book. – kaylum Dec 18 '19 at 23:25
  • Related: https://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents and also: https://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list – Bob__ Dec 18 '19 at 23:25
  • 4
    You can usually go with the final draft of the current standard: https://web.archive.org/web/20181230041359if_/http://www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf (no, it is not illegal to read this) – Ctx Dec 18 '19 at 23:30
  • - kaylum Learning C, I got fundamental questions about C, and I think what i need is axiom of C. – lev.1 code Dec 18 '19 at 23:37
  • - bob__, Ctx 7 thank you, I'm going to try these links right now. – lev.1 code Dec 18 '19 at 23:39
  • 6
    Unless you're already an experienced programmer, the text of a language standard is going to be pretty confusing. It's not written in simple language, it's targeted to the people who write compilers and similar programs. – Barmar Dec 18 '19 at 23:43
  • 1
    @Barmar: A programming language standard **cannot** be targeted just to the people who write compilers and similar programs. If it were, only the people who write compilers and similar programs would know what it says. The people who write programs **for** those compilers would not have the information they need to write correctly and well for those compilers, especially if they want to write portably and not just for a single compiler. So good programmers in general also need to be familiar with the programming language specification, so it should be written for them too. – Eric Postpischil Dec 18 '19 at 23:48
  • 1
    @EricPostpischil You are fully correct here; I wished, there was an annotated version of the standard, that is _accurate_ and _easy understandable_ (human [or at least nerd] language, augmented with examples), that is not a pain to read and interpret... – Ctx Dec 18 '19 at 23:51
  • 4
    @EricPostpischil It's also targeted to other experienced programmers who write manuals, tutorials, test suites, etc. I didn't feel the need to get into all the details just to point out that it's NOT written to be accessible to newbies. – Barmar Dec 18 '19 at 23:54
  • 1
    @EricPostpischil: Arguably it *should* be written for a more general audience, but generally it is not. It tends to be written by and for people who are intimately familiar with the implementation details of the compilers. – Chris Dodd Dec 19 '19 at 00:18
  • 1
    @ChrisDodd: Maybe by, but not for. It explicitly states that (C 2018 footnote 1). Certainly many programmers neglect it—too many. But the C standard is intended for programmers to read, not just compiler implementors. It is technical because it has to be, so it is not for novices, but professional programmers are negligent if they use standard C professionally and do not study the standard to some extent. It does not make sense that it would not be for programmers to read—how would they **know** how to program correctly? Not just assumefrom examples or unauthoritative lessons, but truly know? – Eric Postpischil Dec 19 '19 at 00:39

1 Answers1

2

I’m trying to learn C as my first programming language.

Your first programming language as in "my first prgramming language ever" or "the one I will write most code with"? If you have no prior programming experience I suggest not to go into reference business right from the beginning, it will distract you from getting familiar with common language paradigms. There are really good tutorials and introductionary books* that will be much easier to digest. Most of the better books even have a language reference section.

About C specs / language specs in general:

C is more on the legacy side of evolution. Most things that were standardized with C11/C18 were already common as custom compiler extensions for many years. As a beginner most of these changes will not help you to get used to C. Secondly specs are written to represent a formal correct write down of a language, that is not quite easy to understand without some background in formal languages and/or compilers.

Furthermore you should check if your compiler(s) for your target platforms support a certain standard. There are many compilers that stopped progressing at C89 or C99. Nothing is more frustrating than learning about a useful pattern that simply does not work because of an outdated compiler. Also at a certain level of C programming a good compiler reference will become more important than the C reference itself due to many custom extensions and switches.

About books vs. PDFs: Books will not always follow the "oh its old, thus less pricey" rule. If an edition is almost sold out it gets rare and the price might go up (eventually leading to a new edition release if demand is still high). Most of the C specs are in public as PDFs, they are not illegal.

[*] Did not want to advertise here, I am sure you will find lots of good books with an internet search.

jerch
  • 682
  • 4
  • 9