28
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AUTOSAR CountdownAdvent Calendar 2022

Day 25
エンジニアキャリアについてあなたの考えをシェアしよう!

「@yumetodo C++er」に倣って、Cerを簡易に水準分けし、「初心者詐欺」を減らす試み。

Last updated at Posted at 2021-09-12

yumetodo C++erを簡易的にレベル分けすることで初心者詐欺を減らそうという試み
https://qiita.com/yumetodo/items/a843bd542106215bbc84

を見習って、C言語理解を、
C初学者
C入門者
C初心者
C中級者
C上級者
という区分は同様の順番にします。

規格読破は、全く別の次元だという理解でいます。

そこで、
C言語規格初学者
C言語規格入門者
C言語規格初心者
C言語規格中級者
C言語規格上級者
という区分を別に設けます。

また、C言語は、Cコンパイラが大事な応用例でした。
そこで
Cコンパイラ初学者
Cコンパイラ入門者
Cコンパイラ初心者
Cコンパイラ中級者
Cコンパイラ上級者
というのも別の次元で設けさせてください。

理解、規格、コンパイラの3次元として、どこかの次元は別の次元にそんなに影響を与えないことを想定。どこかの上級者は、別の初心者でもなれる。2つくらいの水準の差があってもいいというのが経験則。

アプリケーションはばんばん書くのに、規格全く呼んでない人、ANSI Cしか知らない人いっぱいいた。
アプリケーションばんばん書くのに、Cコンパイラをコンパイルしたことがない人いっぱいいた。

理解

C初学者

main.c
#include <stdio.h>
void main(void)
{
    printf("Hello World!");
}

という、mainとか、printfとかが可変長引数の、一番難しい関数だということを知らないままコンパイルしてリンクして実行して。やったC言語書けたという段階。

C入門者

main.c
#include <stdio.h>
int main(void)
{
    return printf("Hello World!");
}

可変長引数はわかっていないが、関数は戻り値があるのがいいらしいという認識が芽生える。

固定引数で、戻り値があるのが書ける感じ。

C初心者

main.c
#include <stdio.h>
int main(argc, argv)
{
    return printf("Hello World! $¥ arc = %d argv= %s", argh, argv);
}

可変数引数関数であるmainの引数を使いこなせるようになったら初心者。

C中級者

main.c
#include <stdio.h>
int main(argc, argv)
{
  int * ptrd = &argc;
    char ** ptrs = argv;
    return printf("Hello World! $¥ arc = %d argv= %s", *ptrd, ptrs);
}

ポインタ変数を宣言できるようになったら中級者。
実際には、しばしば間違えて暴走させたり、デバッグ方法がわからなくなって上級者に聞く。

C上級者

ポインタ変数を自由に扱えるようになったら上級者。

確かめるために、Cパズルブックを全部正解したらご褒美を挙げるとして、
3ヶ月でCコンパイラ書いた人も全問正解できなかった。Cコンパイラ中級者でもC上級者ではない可能性があるかも。

Cパズルブック
https://qiita.com/kaizen_nagoya/items/408869e685d8b6272fce

C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9

アドレス演算 C言語
https://qiita.com/kaizen_nagoya/items/7a576a6390ecaeab4573

C言語規格

C言語規格初学者

ANSI CがC言語規格で、ISO/IECとかJISとか知らないのが初学者。

C言語規格入門者

ANSI C, ISO/IEC 9899があり、翻訳JISがあることを知ったら入門者。

C言語規格初心者

C言語規格のコード断片をコンパイルしようとするが、全部はコンパイルできないのは初心者。
未定義、未規定、処理系定義という定義があることは小耳に挟んでいるが、意味をうまく理解していないのが初心者。

C言語規格中級者

Cの精神を呼んで、未定義、未規定、処理系定義が、CPUの発展、コンパイラの発展を妨げないためのものだと知ったら中級者。

freestanding, hostが、POSIXを挟んで、C言語の三層構造になっていることがわかりかけたら中級者。

C言語規格のコード断片が全部コンパイルできる。

[C][C++]の国際規格案の例題をコンパイルするときの課題7つ。
https://qiita.com/kaizen_nagoya/items/5f4b155030259497c4de

C言語規格上級者

C++との整合性を簡単に取るには、どういう規格改定がいいか提案できる。

言語規格、コーディング標準の使い方
https://qiita.com/kaizen_nagoya/items/01256365b82666e101aa

C言語:未定義、未規定、処理系定義
https://qiita.com/kaizen_nagoya/items/f416efd38aaaec7f8230

Cコンパイラ

Cコンパイラ初学者

Cコンパイラが、C言語で書かれているのを聞いたことがあるか、見たことがある。
コンパイラのコンパイルはしたことがない。

Cコンパイラ入門者

small C, portable Cなどの小さいCコンパイラのコンパイルはできる。
Cコンパイラのソースコードも読もうとする努力はしている。

Cコンパイラ初心者

GCC, ClangなどのCコンパイラのコンパイルはできる。
GCC, Clangのソースコードを一通り眺めたり、
Bison(Yacc), Flex(Lex)の存在を知り、両方を使ったソースもコンパイルできる。

Cコンパイラ中級者

Cコンパイラの改良ができる。シンタックスチェッカを作ったり、簡単なC言語のソースコード生成が書ける。

Cコンパイラ上級者

メモリの最適化、時間の最適化の比較ができ、新しいCコンパイラの提案ができる。
C++とCの共通処理の範囲を知っている。

コンパイラを書くのは難しいか。仮説(175)
https://qiita.com/kaizen_nagoya/items/a87c65d487bc7a67da11

C言語(C++)の理解、溶解、爽快。仮説(173)
https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a

C++/C コンパイルエラーを記録するとよい理由7つ
https://qiita.com/kaizen_nagoya/items/85c0e92b206883140e89

意図

OSEK OS, AUTOSAR OSがfreestandingで動作することを知らないC上級者がいて、どうしたらいいだろうと思った。C言語の習熟度と、Cコンパイラを書いた経験と、C言語規格の理解度は、初めの二つはやや連動するが、3つめは関係ない状態になっているようだと思った。

それならそうで、別々だよねって合意があると、話がややこしくない。

コンパイラ書くとCプログラムの半分くらいの書き方が習得できるとすれば、1次元目と2次元目は直交していない。規格書はプログラム作るのには要らない。コンパイラ作る時にはちょっと要るかも。2次元目と3次元目も直行していない。

30年ほど前、C言語を教える時に、まずCコンパイラを描こうねって勧めた。
C言語に3ヶ月時間をもらえる会社がいくつもあり、じゃ、自分がCコンパイラ書いたのは3ヶ月かかっているのでちょうどいいって、ほぼ3ヶ月かけてコンパイラを作る教育をしていた。

数年前に、3週間でパイソンばりばりに書ける人たちに遭遇した。

プログラムは音楽だ (A program is a music.) 仮説(54)
https://qiita.com/kaizen_nagoya/items/33c9f33581e6886f8ad8

言語処理100本ノックをdockerで。python覚えるのに最適。docker(19) python(1)
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

じゃあ、Cコンパイラも3週間でかけるようになるんじゃね。って思って、3週間でコンパイラ書きましょうって言う話になった。簡単なCコンパイラを、最初の週は入力してコンパイル。次の週は、自分でちょこちょこって書き換えてみる。最後の週は、目標をたてて、そのコンパイラの改良をしてみるっていう感じ。

無事、Cコンパイラの原理と、Cコンパイラの改良の仕方を手に入れたらしい。
ここで言うCコンパイラ中級者。

参考資料

算譜(program)が計画(plane),設計(design)である3つの理由
https://qiita.com/kaizen_nagoya/items/34daa0403eaca5e8b5a6

MISRA C 2012のTechnical Corrigendum 1の21.X訂正意見のかなりの部分が日本からだった件
https://qiita.com/kaizen_nagoya/items/152c1de26b0831c02f41

MISRA-C 2012 Referenceに掲載している文献の入手可能性を確認
https://qiita.com/kaizen_nagoya/items/96dc8b125e462d5575bb

MISRA C/C++の勇み足または書き足りない事項を見つける方法
https://qiita.com/kaizen_nagoya/items/bbd69313d6cd3fc1d69b

C初学者がC++を学習するまでの軌跡
https://qiita.com/gis/items/49dd3e6f11846c8dedab

初めてのC初心者限定#1
https://qiita.com/ggggnonaka/items/171df85f44b2546b8407

初めてのC初心者限定#2
https://qiita.com/ggggnonaka/items/94744ec9d714943d3766

初めてのC初心者限定#3
https://qiita.com/ggggnonaka/items/3a2716d5950f2dac384d

初めてのC初心者限定#4
https://qiita.com/ggggnonaka/items/1719771307544223a6cf

プログラミング言語教育のXYZ。Youtube(1) 仮説(52)
https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4

Microsoftとの歴史 Cコンパイラを中心に
https://qiita.com/kaizen_nagoya/items/d7c0cc257e99de0573cf

データサイエンティストの気づき『勉強だけして仕事に役立てない人。大嫌い』それ自分かもってなった。
https://qiita.com/kaizen_nagoya/items/d85830d58d8dd7f71d07

関連資料

' @kazuo_reve 私が効果を確認した「小川メソッド」
https://qiita.com/kazuo_reve/items/a3ea1d9171deeccc04da

' @kazuo_reve 新人の方によく展開している有益な情報
https://qiita.com/kazuo_reve/items/d1a3f0ee48e24bba38f1

' @kazuo_reve Vモデルについて勘違いしていたと思ったこと
https://qiita.com/kazuo_reve/items/46fddb094563bd9b2e1e

自己記事一覧

Qiitaで逆リンクを表示しなくなったような気がする。時々、スマフォで表示するとあらわっることがあり、完全に削除したのではなさそう。

4月以降、せっせとリンクリストを作り、統計を取って確率を説明しようとしている。
2025年2月末を目標にしている。

Qiitaの記事に3段階または5段階で到達するための方法
https://qiita.com/kaizen_nagoya/items/6e9298296852325adc5e

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

逆も真:社会人が最初に確かめるとよいこと。OSEK(69)、Ethernet(59)
https://qiita.com/kaizen_nagoya/items/39afe4a728a31b903ddc

「何を」よりも「誰を」。10年後のために今見習いたい人たち
https://qiita.com/kaizen_nagoya/items/8045978b16eb49d572b2

物理記事 上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff

量子(0) 計算機, 量子力学
https://qiita.com/kaizen_nagoya/items/1cd954cb0eed92879fd4

数学関連記事100
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d

図(0) state, sequence and timing. UML and お絵描き
https://qiita.com/kaizen_nagoya/items/60440a882146aeee9e8f

品質一覧
https://qiita.com/kaizen_nagoya/items/2b99b8e9db6d94b2e971

言語・文学記事 100
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6

医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82

自動車 記事 100
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5

通信記事100
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

日本語(0)一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68

英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d

転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe

仮説(0)一覧(目標100現在40)
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df

音楽 一覧(0)
https://qiita.com/kaizen_nagoya/items/b6e5f42bbfe3bbe40f5d

@kazuo_reve 新人の方によく展開している有益な情報」確認一覧
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b

Qiita(0)Qiita関連記事一覧(自分)
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6

鉄道(0)鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/26bda595f341a27901a0

安全(0)安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

Ethernet 記事一覧 Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48)
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網(Wi-Fi)空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

OSEK OS設計の基礎 OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3

Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

c++ Support(0) 
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514

Coding(0) Rules, C, Secure, MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0

coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68

プログラマによる、プログラマのための、統計(0)と確率のプログラミングとその後
https://qiita.com/kaizen_nagoya/items/6e9897eb641268766909

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

プログラムちょい替え(0)一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

Python(0)記事をまとめたい。
https://qiita.com/kaizen_nagoya/items/088c57d70ab6904ebb53

官公庁・学校・公的団体(NPOを含む)システムの課題、官(0)
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

「はじめての」シリーズ  ベクタージャパン 
https://qiita.com/kaizen_nagoya/items/2e41634f6e21a3cf74eb

AUTOSAR(0)Qiita記事一覧, OSEK(75)
https://qiita.com/kaizen_nagoya/items/89c07961b59a8754c869

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

LaTeX(0) 一覧 
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792

自動制御、制御工学一覧(0)
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

Rust(0) 一覧 
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927

100以上いいねをいただいた記事16選
https://qiita.com/kaizen_nagoya/items/f8d958d9084ffbd15d2a

小川清最終講義、最終講義(再)計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53

参考資料

物理記事 上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff

数学関連記事100
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d

言語・文学記事 100
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6

医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82

通信記事100
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

自動車 記事 100
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5

OSEK 記事で views 100,000を目指して OSEK(8)
https://qiita.com/kaizen_nagoya/items/ff45ee55566eeff5f62e

無線網(Wi-Fi)空中線(antenna)(0) 記事https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

なぜdockerで機械学習するか 書籍・ソース一覧作成中
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

仮説(0)一覧
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df

安全(0)安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409

日本語(0)一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68

英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d

転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

LaTeX(0) 一覧 
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792

自動制御、制御工学一覧(0)
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

Rust(0) 一覧 
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927

小川清最終講義、小川清最終講義(再)計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.

文書履歴(document history)

ver. 0.01 初稿  20210917
ver. 0.02 ありがとう追記 20230513

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

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

Thank you very much for reading to the last sentence.

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

28
21
6

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
28
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?