LoginSignup
1
0

文法派 対 写経派 CN3054を題材に

Last updated at Posted at 2022-10-29

言語と言うと母語といって繰り返し聞いた言葉を使うことから始まる。 
文法から始まった人はいないらしい。 

二つ目の言語も母語方式の方が流行りらしい。英語習得がすごい。 

三つ目の言語は、まだまだ文法派が多いらしい。 

ここでは第三の言語を習得する際に、母語方式がいいか、文法派がいいかを検討するかもしれません。

文法を検討しているのは文法派のすることではありませんが、ここでは文法からは入りません。 

<この項は書きかけです。順次追記します。>

CN3054

N3054 Working Draft, Standard for Programming Language C

CN3054は、ISO/IEC JTC1 SC22 WG14の作業原案(Working Draft)です。
公式のISO/IEC 9899原本ではありません。

ISO/IEC JTC1 SC22 のWG14を含むいくつかのWGでは、可能な限り作業文書を公開し、幅広い意見を求めています。

ISO/IEC JTC1 SC7からISO/IEC JTC1 SC22リエゾンとして、2000年頃、C/C++の品質向上に貢献しようとした活動をしていたことがあります。その頃は、まだISO/IEC TS 17961の原案が出る前です。Cの精神が優勢で、セキュリティ対策は補助的な位置付けでした。ISO/IEC TS 17961の制定と、C/C++のライブラリ類の見直しと、C++の進化はどんどん進んでいきます。 

進化の具合が、どちらに行こうとしているかは、コンパイルて実行させてみないとわかりません。C/C++の規格案の電子ファイルは、そのままコンパイルできる形式であるとよいと主張してきました。MISRA-C/C++, CERTC/C++でも同様です。MISRA-C/C++は、Example Suiteという形で、コード断片をコンパイルできる形で提供するようになりました。

一連の記事はコード断片をコンパイルできる形にする方法を検討してコンパイル、リンク、実行して、規格案の原文と処理系(gcc, clang)との違いを確認し、技術内容を検討し、ISO/IEC JTC1 SC22 WG21にフィードバックするために用います。
また、CERT C/C++, MISRA C/C++等のコーディング標準のコード断片をコンパイルする際の参考にさせていただこうと考えています。CERT C++, MISRA C++が標準化の動きとの時間的なずれがあれば確認できれば幸いです。また、boostライブラリとの関連、Linux OS, 箱庭プロジェクト、g++(GCC), clang++(LLVM)との関係も調査中です。
何か、抜け漏れ、耳より情報がありましたらおしらせくださると幸いです。

最新規格はCN4950

背景(back ground)

C/C++でコンパイルエラーが出ると、途方にくれることがしばしばあります。
何回かに1回は、該当するエラーが検索できます。
ただ、条件が違っていて、そこでの修正方法では目的を達成しないこともしばしばです。いろいろな条件のコンパイルエラーとその対応方法について、広く記録することによって、いつか同じエラーに遭遇した時にやくに立つことを目指しています。

過去に何度か、自分のネットでの記録に助けられたことがあります。

また
https://researchmap.jp/joub9b3my-1797580/#_1797580
に記載したサイトのお世話になっています。

一覧 

番号 表題 views いいね stocks
-2 C言語教育はCコンパイラの写経で https://qiita.com/kaizen_nagoya/items/088a9906797559cd8b8a - 20101023 9370 38 37
-1 C言語(C++)に対する誤解、曲解、無理解、爽快。 https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a - 20180325 11550 63 65
0 文法派 対 写経派 CN3054を題材に https://qiita.com/kaizen_nagoya/items/445ebc1939f0034ee038 - 20101029 33 0 0
1 3. Terms, definitions, and symbols https://qiita.com/kaizen_nagoya/items/3b7ee0a87766f822e9b8 3 20101011 187 0 0
2 4. Conformance https://qiita.com/kaizen_nagoya/items/cd74bd8080291b6fd3e7 8 20101012 200 0 0
3 5. Environment https://qiita.com/kaizen_nagoya/items/e22a6ba69ec3079c73ef 10 20101013 172 0 0
4 6. Language 6.2 Concepts https://qiita.com/kaizen_nagoya/items/082da75afc7559700bbe 34 20101014 153 0 0
5 6.3 Conversions https://qiita.com/kaizen_nagoya/items/2be4b0bc44acda96c541 45 20101015 137 0 0
6 6.4 Lexical elements https://qiita.com/kaizen_nagoya/items/043503ea1cbe689cbec1 51 20101016 160 0 0
7 6.5 Expressions https://qiita.com/kaizen_nagoya/items/963b98d368569be817bd 71 20101017 89 0 0
8 6.6 Constant expressions https://qiita.com/kaizen_nagoya/items/4fbf54d314b65de76552 94 20101018 93 0 0
9 6.7 Declarations https://qiita.com/kaizen_nagoya/items/5aa0d35f7ede6deb27c1 96 20101019 111 0 0
合計 22255 101 102

作業方針(sequence)

clangでは--std=c11, -std=c17 -std=c2xの3種類
gccでは-std=c11, -std=c17 -std=c2xの3種類
でコンパイルし、

1)コンパイルエラーを収集する。
2)コンパイルエラーをなくす方法を検討する。
コンパイルエラーになる例を示すだけが目的のコードは、コンパイルエラーをなくすのではなく、コンパイルエラーの種類を収集するだけにする。
文法を示すのが目的のコード場合に、コンパイルエラーをなくすのに手間がかかる場合は、順次作業します。
3)リンクエラーをなくす方法を検討する。
文法を示すのが目的のコード場合に、リンクエラーをなくすのに手間がかかる場合は、順次作業します。
4)意味のある出力を作る。
コンパイル、リンクが通っても、意味のある出力を示そうとすると、コンパイル・リンクエラーが出て収拾できそうにない場合がある。順次作業します。

1)だけのものから4)まで進んだものと色々ある状態です。一歩でも前に進むご助言をお待ちしています。「検討事項」の欄に現状を記録するようにしています。

bash
$ docker run -v /Users/ogawakiyoshi/n4910/n3540:/Users/ogawakiyoshi/n4910/n3540 -it kaizenjapan/n3540 /bin/bash

編纂器(Compiler)

clang --version

Debian clang version 14.0.6-++20220622053050+f28c006a5895-1~exp1~20220622173135.152
Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin

gcc --version

gcc (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

3. Terms, definitions, and symbols CN3054:2022 (1) p3.c

読書感想文

CコンパイラによるC言語規格の読書感想文として掲載しています。

コンパイル実験が、CN3242に対する、gccとclangによる感想文だということご理解いただけると幸いです。

読書感想文は人間かAIだけが作るものとは限りません。
本(電子書籍を含む)を入力として、その内容に対する文字列を読書感想文として受け止めましょう。
元の文章をあり方、コンパイルできるように電子化しておくこと、コンパイラが解釈可能な断片の作り方など。

個人開発

Cコンパイラの試験を一人でもくもくとやっているのは個人開発の一つの姿です。

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

文書履歴(document history)

ver. 0.01 初稿   20230527
ver. 0.02 ありがとう追記 20230620

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0