LoginSignup
2
1

2022/1/21 Qiita Advent Calendar Online Meetup

「に参加する前にしておくとよいかもしれないこと。」を記事にした。

登壇者  @getty104

登壇される @getty104 さんの記事を拝見し5つを上に例示した。一つの記事についての考えを単独の記事にした。

設計を学びたいときに読みたい本一覧

自分が読んだ、似た領域の本を記録しようとしました。

ソフトウェアの設計を学ぶには、計算機の設計をどう利用するかという立場がある。利用者が何を解決したいかの間を結ぶとよいかもしれない。似た本はあまり示せていません。

場合によってはソフトウェアのことを何も知らない方がよいことがあるかもしれないという気もする。あえて、計算機よりの代替書籍を列記した。

自分の読んだ本の中で、代わりになるかもしれない一覧

ユースケース駆動開発実践ガイド

ダグ・ローゼンバーグ, マット・ステファン

ICONIXという著名なやり方を紹介している。
利用事例図(use case chart)から時系列図(sequence diagram)を起こす間に
ロバスとネス分析という作業を入れることを提案しています。
試験と設計の重要さも書いています。
試験事例を作成するための注意事項もあります。
利用事例図から時系列図を作る際に、漏れや重複など、いろいろな課題を感じていたのでちょうどありがたいところに焦点が絞られていると思いました。
予備設計レビューという考え方もいい感じだと思いました。
WEB図書販売という、なじみの深い事例なので、理解しやすい点が利点です。
java, Junitという実際に使っているシステムの例なので、関連するプログラマにはよくわかる内容になっている。
課題は
1 図で矢印のあるところと無いところがあり、意味がよくわからない。
2 ドメインモデルといって用語の構造化を測っているが、用語の木といった方が分かりやすい。
3 ロバスとネス分析が何にロバスとなのかがよくわからない。
4 はじめから多くの教訓を入れすぎていて、重い。
5 もう少し、少ない教訓で小さなものを設計してみて、
 2廻り目に大きなものを多くの教訓で実践する方が良いかも。
6 テクニカルアーキテクチャが、Spring web MVCで具体的に書かれているのは嬉しいが、
 アーキテクチャのパターンをいくつか示してあると嬉しい。
7 失敗のとっぷ10はとても役立つが、具体例が無いものがあり、想像しにくいことがある。
 例えば、アーキテクチャの構築をいっさい行わない(P204)
 やっていないと思っているだけと、いいかげんにやっていることの区分が分からない。
8 Enterpirse Architectというソフトを使っているが、具体的なファイルがついていないので、
細かいところの操作、確認がしにくい。
だと思いました。
いきなり、これを教育で実践するのは重いような気がしました。

UMLモデリング入門

第2版 2011/5, 児玉 公信
41LkPJiQcNL._SX345_BO1,204,203,200_.jpg
https://bookmeter.com/books/9758486

UMLを最初に勉強するのに適している。
なぜなら、Unified Modeling Languageはモデルを作るための道具だから。
クラス図がUMLだとか、ユースケース図がUMLだと思っている人は、本書を読んで、もっと本質的な問題を理解するとよい。
特に大事だと思う部分は、次の2箇所かもしれない。
1-5 モデルには認識する人が要る。
コラム「もの」を識別するということ
モデリングとは、情報システムを開発する際に、ユーザの要求やシステムの全体像を図として見える形にすることです。

コンピュータの構成と設計

ハードウエアとソフトウエアのインタフェース, David Andrew Pattersonデイビッド・A. パターソン John LeRoy Hennessy/ジョン・L. ヘネシー 2014-12
51Jyc8kcmDL._SX384_BO1,204,203,200_.jpg
https://www.amazon.co.jp/dp/4822298426/
https://bookmeter.com/books/8982487
https://booklog.jp/item/1/4822298426

大学でコンピュータを教えるのならこの本が最初がよいかもしれない。
第1章では、すごく幅広く、パソコンから車載の者まで利用の幅があることを紹介している。そういう初歩的な事項から始めて、CPU性能まで上巻で記載している。
各項目ごとの演習問題と、「誤信と落とし穴」というはまりそうな罠について示しているのは有り難い。
情報理論、電気理論のどちらかしか勉強していいない人だと、時々誤信や落とし穴にはまりこんでいることがある。
下巻では、データパスと制御、パイプライン、記憶階層、周辺について書いている。
CPUの例としては、MIPSとIA-32の両方を記載しているので、どちらかしか知らない人にとって、すごく勉強になる。
ps.
5.6 例外の項で、MIPSでは例外、INTELでは割り込みと呼んでいるものを、
内部要因を例外、外部要因を割り込みと呼ぶと分かり易そうな雰囲気の記載があった。
ps2.
80286で追加された保護機能の大部分は使われていないとのこと。私は80286の使われていない機能の説明で、保護機能が嫌いになったので、少し安心しています。
この用語の使い方を自分ではするようにしている。
すごく細かなことですが。

コンピュータアーキテクチャ 定量的アプローチ

2019/9, David Andrew Pattersonデイビッド・A. パターソン John LeRoy Hennessy/ジョン・L. ヘネシー
2019/9, David Andrew Pattersonデイビッド・A. パターソン John LeRoy Hennessy/ジョン・L. ヘネシー
51guTT4yixL._SX352_BO1,204,203,200_.jpg
https://www.amazon.co.jp/dp/4434264001/
https://bookmeter.com/books/14520207
https://booklog.jp/item/1/4434264001

英語で読むと良い
C言語の移植性を考えるためコンピュータのアーキテクチャを勉強。「コンピュータの設計と構成」と併読む。付録Bにコンパイラに関連する命令セットの話。インテルの成功の理由を3つ。1初期のIBM PCで採用。バイナリ互換が重要。2十分なハードウェア資源が利用でき80x86命令を内部でRISC命令セットに飜訳しRISCライクな命令を実行。3PCマイクロプロセッサは市場規模が非常に大き井。ハードウェアによるRISC命令への返還に要する設計費用が増加しても容易に償却。製品の費用を低下。

RTL設計スタイルガイド Verilog HDL編 STARC

51WwjOc2d3L._SX298_BO1,204,203,200_ (1).jpg https://www.amazon.co.jp/dp/4563067865/ https://bookmeter.com/books/15566527 https://booklog.jp/item/1/4865841768

2001年版の違いは、SystemVerilogに対応したこと、検証系を補強したことclockまわりを改訂したことの3つ。2.12. データタイプの拡張(SystemVerilog 編)2.12.1. reg とwire をlogic におきかえる。Verilog HDLでは,記憶素子を含むregと配線の機能のwireを区別して使用していた。厳密にregは記憶素子になるかというと、必ずしもそうでないため紛らわしい面があった。SystemVerilogではlogicで統一的に書けるとのこと。

空間設計と時間設計がよく均衡している。
ソフトウェアの本だと空間設計に偏っていることがあるかもしれない。

Code Complete

ソフトウェアの本がないと寂しいと思い20211230追記

第2版 完全なプログラミングを目指して, Steve McConnell/スティーブマコネル 2005-03
(https://en.wikipedia.org/wiki/Steve_McConnell) 2005-03
51Sdan3jlwL.jpg
https://www.amazon.co.jp/dp/B01E5DYK1C/
https://bookmeter.com/books/503537
https://booklog.jp/item/1/489100455X

プログラマ志望の人にはぜひ読んで欲しい。プログラマになってしまうと、仕事が忙しくて読む時間がない人が大勢いる。学生のうちに読んでおくのがいい。goto文論争など基本的な情報の資料。すでにプログラマになっている人はC言語プログラマだけに限らず読むべし。会社が、本当にプロを養成するつもりなら必ず読めという。会社が読む時間を工面してくれるはず。プロとしてプログラムに向き合う時に必要なこと。最初は全部理解しようと肩肘はらずに気軽に読み進んだ方がいい。仕事で関係がありそうな話題になった時にもう一度読み直そう。
まとまっているのは嬉しい。翻訳はカタカナ語が多く、本質を捉えにくいかもしれない。
メタファーは、比喩では駄目なのだろうか。直喩(simile)と暗喩(metapher)の差は、それほど明確ではない。
敢えて、メタファーというカタカナ語にする意図が分からない。
紙の版は途中で出てくる参考文献は英語のものだけを示したり、翻訳時の大変さを表したままだった。

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

名古屋Reject会議 2011
https://www.youtube.com/watch?v=&t=489s

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

人生で影響を受けた本100冊。

6 5冊中5 4冊は次の記事からの孫引きです。

参考資料

百点満点の三十点を目指しなさい。

文書履歴

ver. 0.01 初稿 20211228
ver. 0.02 みだし、本文加筆 20211229
ver. 0.02 Code Complete追記 20211230

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

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

Thank you very much for reading to the last sentence.

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

2
1
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
2
1