qpstudyで随分とお世話になっている@sho7650さんとのTweetのひょんなやりとりから、インフラエンジニア向けのプログラミング超入門に関する勉強会を、ストレージ友の会01の前に開催していただけることになったので参加してきました。
内容としてはプログラムを組んだりすることはなく、プログラミングに当たって知っておく必要のある基礎知識やアルゴリズムなどについてが主な内容でした。
以下、メモより。
●コンピュータの構成要素現在のコンピュータはノイマン型コンピュータ
入力装置、制御装置、出力装置、主記憶装置、演算装置で構成される
●構造化プログラミングプログラムは次の要素で構成される(順次構造、分岐構造、反復(繰り返し/ループ)構造)
●プログラムから別のプログラムを呼び出す方法サブルーチン
●オブジェクト指向ソフトウェアの一部分をカプセル化、部品化し、それを組み合わせて全体を構成するという考え方
サービスの単位でやるとSOA(サービス指向アーキテクチャ:Service-Oriented Architecture)になる
●アルゴリズム概論アルゴリズムがよくわかっていないがために、正しく実装できないことが多い・・・
この分野をちゃんと学んだほうがいいよ!
▲アルゴリズムには以下のようなモノがある再帰的アルゴリズム(数学的な要素を含む)
ソート
探索
文字列探索
データ圧縮
暗号化アルゴリズム
並列分散アルゴリズム
近似アルゴリズム・ヒューリスティックアルゴリズム
●プログラミングをするに当たって・・・
低レベル言語は覚えておいたほうがいいよ(アセンブラとかC言語とか)
GC(ガベージコレクション)などを自分でやる必要があるから。とりあえず基本命令セットは覚えてしまえ。
エラー処理がよくわからなくなるのは、スクリプト
Cとかであればコンパイルの段階で蹴られてしまう
エラー処理はしっかり実装すること
あと、テストは確実に実装する。
●宿題
C言語を覚えること
アプリは、インフラとアプリ、お互いに知っていると歩み寄れるよ
straceは覚えておくと便利(システムコール?の確認に使えるらしい)
とまあ、学生時代よりプログラムを満足にしていなかった自分には、思い出させるモノ有り、そうやって取り組めばいいのかと目から鱗になるものもあり、短い時間ながら大変勉強になる時間でした。
普段インフラよりの仕事をしていて、やはりアプリをする方と意思疎通がうまくいかないことがおおくありますが、こちらも勉強し歩み寄れるような技術者にならないといけないのだと痛感しました。
とりあえず宿題にあるようにC言語から覚える努力をしようと思います。