LoginSignup
8
14

この資料は、下記のyoutubeにあげた資料の補足資料です。

名古屋Reject会議 2011 プログラミング言語教育のXYZ

プログラミング言語教育のXYZ

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

目次

  1. あなたはどうやって言語を覚えましたか
    2.1 母語方式
    2.2 外来語方式

  2. 言語教育の課題
    2.2 状態
    2.1 技能(skill)

  3. 言語
    3.1 アセンブラ
    3.2 Fortran
    3.3 COBOL
    3.4 C
    3.5 JAVA
    3.6 PHP
    3.7 Verilog HDL
    3.8 UML
    3.9 Event-B
    3.10 SPIN
    3.11 coq
    3.12 uppaal
    3.13 alloy
    3.14 LaTeX
    3.15 python
    3.16 R
    3.17 その他

4 エディタ
4.1 VZエディタ
4.2 Mule(Emacs)
4.3 Eclipse

  1. 設計指針
    5.1 万能指針(universal design)
    5.2 形の設計指針

  2. 作業
    6.1 HAZOP
    6.2 見直し(review)
    6.3 作業診断(process assessment)
    6.4 検索

  3. 動画

8.参考文献

1.あなたはどうやって言語を覚えましたか

この資料は、名古屋Reject会議の発表を元に、プログラミング言語を覚えるためのいくつかの材料を用意することです。
ABCが入門だとすれば、XYZは技術の最高峰を収める最後の詰めについてを述べようと企画したものです。

発表はグダグダでしたが、現在岐阜大学にいる今井圭吾さんの、適宜説明や突っ込みが絶妙でした。色々補足してくださった。なんとか内容は若いプログラマには伝わったようです。

参加者の大半は20代。

プログラマではない方には、いつものように何を言っているかわからないという、すごい褒め言葉を頂いています。

その十年後に、
データサイエンティストの気づき『勉強だけして仕事に役立てない人。大嫌い』それ自分かもってなった。

とは思ってもみなかった。

1.1 母語方式

なんども何度も繰り返し言語を使うことにより、徐々に使えるようになる。

写経

新しい言語を覚えるときは、まず10冊その言語のプログラムを入力する

  • OSの版、言語の版による違い
  • 日本語のコード、フォントへの対応の違い
  • ネットワーク、データベースへの対応の違い
  • ライブラリの違い
    などなど、いろいろな違いが分かり、自分に必要な機能は何かが掴める。

キーボード練習ソフトの自作とType Quick
https://qiita.com/kaizen_nagoya/items/421da486b7730ea11514

言語学習母語方式
https://qiita.com/kaizen_nagoya/items/52640bbaff6349db61e2

1.2外来語方式

母語との対比で、同意語、構造、文法などを理解する。

  • 言語仕様
  • 文法検査(syntax checker)等道具類の作成
  • 検査・証明の記述

2.言語教育の課題

2.1 状態

言語は覚えても書けない
役に立つモデルが書けない
何を検証、証明すればいいかわからない

2.2 技能(skill)

スキル表が大きくて最初は入力できても保守できない
本当に必要な能力はなんですか。

3.言語

3.1アセンブラ

VZエディタのN5200版の移植
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949

Qiitaで組立語・機械語・CPU<アセンブラへの道>https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2

3.2Fortran

連立微分方程式のPade近似解法 Fortran手による最適化とコンパイラの最適化、誤差の評価
https://qiita.com/kaizen_nagoya/items/c55d29f0d7e9ebd07a31

3.3 COBOL

事務処理ではCOBOL。簡易言語という、COBOLよりも行数が短く記述できる、検索、編集、出力用の言語を併用していました。

プログラムちょい替え(4)COBOLを40年ぶりにうごかしてみた:dockerでcobol, docker(81) https://qiita.com/kaizen_nagoya/items/9d9a216ce1b7b05d

3.4 C

SWESTではMISRA Cについて何度も企画を立ててきた。
講演者も6人以上。

OBJのシンタックスチェッカの試作, ソフトウェアシンポジウム1992,長野
SEA MAIL Vol7. No.1, 1992に渡邊雄一氏が「時間の制約もあっていずれの話題もの今一つ理解できなかった。やはり苦心談というものは、発表しきれない部分を、予稿集にもっと”くどくど”と書いて欲しかった。」と書かれている。ちなみに電総研には3ヶ月滞在。

1)C言語の拡張の仕様を再設計, 2)8086のディスアセンブラの仕様の記述 3) objのシンタックスチェッカの3つの内容の紹介。

1)はC++のexceptionとは異なる実装例。

「項書き換え機能付きプログラム」のディスアセンブラの作成
https://qiita.com/kaizen_nagoya/items/8b8fe645b06bc7eccefb

3)はOBJの言語仕様の対称性がないことの指摘のみで、解決策は提示していない。どれも苦心したことではなく、困ったことを解決しただけで苦心はしていない。困ったことの共感が得られない人には何を説明しても無駄だと悟った時だった。
共著者が、「3ヶ月の滞在でこれだけの仕事をしたのは稀だ」とおっしゃった途端に質問がなくなったのはなんだったんだろう。それを報告して欲しかった。プログラマのすれ違い例@26年前。
表題は当初、「OBJ言語の非対称性」だった。言いたいのはそれだけ。言語の非対称性は今でもEvent-Bの記述の際に、モデル設計の対称性・非対称性をどう設計するかで迷いが生じる事象と相似。まだ解決していない問題。解決していないのだから苦心はしていない。苦心談は解決してから。

TOPPERS オープンソースのMISRA C対応。
https://researchmap.jp/kaizen/MISRA-C愛好会/

組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド,MISRA‐C研究会, 日本規格協会, 2006
https://www.amazon.co.jp/dp/4542503461/

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

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

MISRA C まとめ #include
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

どうやって MISRA Example Suiteをコンパイルするか
https://qiita.com/kaizen_nagoya/items/fbdbff5ff696e2ca7f00

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

C言語(C++)に対する誤解、曲解、無理解、爽快。
https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a

3.5 JAVA

Eclipseも含めて、JAVA系の企画はSWESTでは数度。
特に、下記の書籍での研修は第二回か第三回のSWESTの議論の場で紹介したような気がする。

「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。
https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e

第二章JAVAによるネットワークプログラミング phttpd 三箇所でException収集
https://qiita.com/kaizen_nagoya/items/d1db78d3db0e90c0ff9f

大川知、鈴木大郎 著「コンパイラ 言語処理系の基礎からyacc/lexまで」近代科学社(2008)のソースをMacintoshで実行(java版)
https://qiita.com/kaizen_nagoya/items/1606e97b7f10bf8fe519

Macintosh OS Xにbrew caskでEclipseを導入する(5つの壁+1)
https://qiita.com/kaizen_nagoya/items/b17f03db00aceee41a80

インド、インドネシアとJava、Javascript:接尾辞がついて別物と言うが共通点は多い。
https://qiita.com/kaizen_nagoya/items/2c331ff6654d41d5e157
 

3.6 PHP

WEB, DB等

docker(80)「DockerでPHP7.0×Apacheの環境を構築する@kurkuru」IT業界新人利用時の16の壁(mac mini編)
https://qiita.com/kaizen_nagoya/items/315e8d05a6eef00b56d1

3.7 Verilog HDL

SWESTの企画で、参加いただいた方々に規則の優先順位をつけてもらったら、
必須でないものが2つ優先順位が高かった。
学会等でも発表を重ねたら、規則そのものが変更になり、
必須に変わった。SWESTの参加いただいた方々に感謝します。

RTL設計スタイルガイド Verilog HDL編(System Verilog対応版)
https://qiita.com/kaizen_nagoya/items/4c02f1575db1f28310a7

RTL設計スタイルガイド Verilog HDL編―LSI設計の基本,2011
https://bookway.jp/modules/zox/index.php?main_page=product_info&products_id=809
PDF 3758円, 中古で過大な値付に注意。

RTL設計スタイルガイド Verilog HDL編(System Verilog対応版)https://qiita.com/kaizen_nagoya/items/4c02f1575db1f28310a7

3.8 UML

SWESTで何度か演習を企画した。

UMLモデリング入門,児玉 公信, 2008, ISBN 978-4822283582
https://www.amazon.co.jp/dp/4822283585/

xtUMLを導入する(linux編)
https://qiita.com/kaizen_nagoya/items/297097cc47a6487d9f20

ゼロからはじめる Enterprise Architect
https://qiita.com/kaizen_nagoya/items/31fdc8bcfdad1ad9b98f

3.9 Event-B

SWESTで演習を企画した。

3.10 SPIN(Simple Promela(Process Meta Language) interpreter)

SWESTで何度か演習を企画した。

SPIN(simple promela interpreter)入門
https://qiita.com/kaizen_nagoya/items/a18a4e1e5493591e76fa

4日で学ぶモデル検査 (初級編) (CVS教程 (1))
産業技術総合研究所システム検証研究センター, 2006
https://www.amazon.co.jp/dp/4860431197/

3.11 coq

「coq入門」の入門
https://qiita.com/kaizen_nagoya/items/13566f0b2083ea8d4998

MacintoshでCoqide
https://qiita.com/kaizen_nagoya/items/0314ca15130bdfa9dce2

3.12 uppaal

SWESTで演習を企画した気がする。

3.13 alloy

alloy analyzer入門
https://qiita.com/kaizen_nagoya/items/b7928e2b8e80b9b00498

サンプルで学ぶAlloy, 斉藤直希
https://www.slideshare.net/NSaitoNmiri/alloy-42500369

3.14 python

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

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

「Python 入門」の入門
https://qiita.com/kaizen_nagoya/items/22c99c5926984ede6573

Windows(MS)にPython(Anaconda)を導入する(5つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679

3.15 R

R(データマイニング入門) Raspbian(Raspberry PI),Mac OSX, docker/ubuntu 6段階。データ取得・導入・起動・実行・描画・一括実行。
https://qiita.com/kaizen_nagoya/items/e8417310129c2425af59

3.16 LaTeX

確率論及統計論(伏見康司)の数式をTeX(LaTeX)入力するための13の技法
https://qiita.com/kaizen_nagoya/items/9c692c4d3546ffbb70b4

今日LaTeXでpngを取り込んだ
https://qiita.com/kaizen_nagoya/items/3d188cbeeaa844f880b0

LaTeX Ieeeに投稿する準備
https://qiita.com/kaizen_nagoya/items/cd371a58b833bd7b8788

今日LaTeXで調べたこと。
https://qiita.com/kaizen_nagoya/items/31edf224942eb8a692a9

3.17 その他

50歳からのプログラミング言語入門
https://qiita.com/kaizen_nagoya/items/5c7cec79cb3b15237076

仮説・検証(124)IT系勉強会をすべて当たりにする方法
https://qiita.com/kaizen_nagoya/items/9f001a79ab4162220406

4 エディタ

4.1 VZエディタ

VZエディタ移植に当たって実施したことと成果
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949

VZ倶楽部, ビレッジセンター, 1991
https://researchmap.jp/joaglnxz8-50024/

4.2 Mule(Emacs)

マルチリンガル環境の実現―X Window/Wnn/Mule/WWWブラウザでの多国語環境, 錦見美貴子,‎ 戸村哲,‎ 桑理聖二,‎ 吉田智子,
プレンティスホール出版,1996, ISBN 978-4887350205
https://www.amazon.co.jp/dp/4887350201

4.3 Eclipse

Macintosh OS XにEclipseを導入する(5つの壁+1)
https://qiita.com/kaizen_nagoya/items/b17f03db00aceee41a80

5. 設計

5.1 万能設計(universal design)

万能設計.png

5.2 形の設計指針

万能.png

6.作業

6.1 HAZOP

効率的なHAZOPの進め方
https://qiita.com/kaizen_nagoya/items/2b8eae196945b7976446

ちょけねこ たんじょうびのおくりもの 
https://qiita.com/kaizen_nagoya/items/fc9675686c229f7a155e

狙い通り2.png

6.2 見直し(review)

算譜(program)の見直し(review)に必要な志向・技能・技法・手順、上位7
https://qiita.com/kaizen_nagoya/items/6d5962e1a0e4be28405c

居場所、立ち位置、視点

視点.png

6.3 作業診断(process assessment)

作業診断(process assessment)を成功させる5つの鍵。失敗する5つの罠
https://qiita.com/kaizen_nagoya/items/bcdc60db20e8d7081fab

6.4 検索

プログラマに必須な検索技法
https://qiita.com/kaizen_nagoya/items/8ee1f5e241e2aee39f5c

7 動画

名古屋Reject会議 2011
https://www.facebook.com/kaizen.nagoya/videos/142012459202158/

8.参考文献

組込みシステム開発事例集, 産業技術連携推進会議情報電子部会組込み技術研究会, 工業調査会, 2006,ISBN 978-4769351313
https://www.amazon.co.jp/dp/4769351313/

プロセス改善ナビゲーションガイド ベストプラクティス編, IPA, 2008, https://www.amazon.co.jp/dp/4274501752/

SWEST4
https://swest.toppers.jp/SWEST4/report.html#program
組込みソフトウェア開発技術者教育
における議論に基づいています。

参考文献

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

ぼくのかんがえた さいきょうの新人研修
https://qiita.com/aosho235/items/23625cdb340eaaeb5b94

新人教育の際に気をつけたこと
https://qiita.com/yu-croco/items/c41aa79a87fdbcf418fb

自己参照

Qiitaで組立語(assembler)・機械語(machine language)・CPU<アセンブラへの道>
https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2

C言語(C++)に対する誤解、曲解、無理解、爽快。
https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a

量子コンピュータプログラムへの道
https://qiita.com/kaizen_nagoya/items/37c90488c87bbe9f2d71

あなたもdocker, 私もdocker
https://qiita.com/kaizen_nagoya/items/8f2746f10f30b575d0a8

今まで書いてよかった技術書を紹介しよう!
https://qiita.com/kaizen_nagoya/items/d31b7c158541d345a7ef

開発環境を豊かにする開発事例 過去・現在・未来
https://qiita.com/kaizen_nagoya/items/d9bf0c2c671fe7f1c749

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

最初に覚えるプログラミング言語は何がいいですか?

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

文書履歴(document history)

ver. 1.00 初稿 20180206
ver. 1.01 項目追加 20180304
ver. 1.02 URL追加 20180325
ver. 1.03 C言語URL追記 20180329
ver. 1.04 参考文献追記 20180716
ver. 1.05 タグ変更 20180801
ver. 1.06 はてな追記 20190509
ver. 1.07 Youtube 追記 20201229
ver. 1.08 参考資料追記 20210731
ver. 1.09 被参照資料追記 20210808
ver. 1.10 「データサイエンティストの気づき『勉強だけして仕事に役立てない人。大嫌い』それ自分かもってなった。」追記 20210918
ver. 1.11 最初に覚えるプログラミング言語は何がいいですか? 追記 20220228

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

このエントリーをはてなブックマークに追加
http://b.hatena.ne.jp/guide/bbutton

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

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

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

Thank you very much for reading to the last sentence.

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

8
14
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
8
14