Transcript 2つの プログラミング スタイル
シェルスクリプト プログラミングスタイル USP 友の会会員 鳥海秀一
自己紹介 • • • • 名前:鳥海秀一 年齢:45歳 職業:プログラマ 所属: USP友の会会員 データベース友の会会員 日本ファシリテーション協会会員 その他
スクリプト言語 としての
シェルの特徴
しょぼい
・多次元配列 ・連想配列(ハッ シュ) ・オブジェクト指向
何がよいの?
良い点その1
2つの プログラミング スタイルを サポート
1つ目
手続き型の スタイル
2つ目
関数型の スタイル
誰が言ってるの?
僕です
(^^;
元ネタ
計算機プログラム の 構造と解釈 (略称 SICP )
Structure and Interpretation of Computer Programs
MITの教科書
プログラムの組織化方法 • オブジェクト準拠の方法 => 手続き型スタイル • ストリーム処理の方法 => 関数型スタイル
2つのスタイルは まるで違います
手続き型スタイル • 計算モデル チューリングマシン • 言語 手続き型プログラミング言語 • 主な操作対象 変数
関数型スタイル • 計算モデル ラムダ計算 • 言語 関数型プログラミング言語 • 主な操作対象 ストリーム
具体例で 説明します
問題 80 個の“ =” で画面に罫線を引け
手続き型スタイル for ((i=0; i<80; ++i)) do printf = done; echo
関数型スタイル yes '' | head -80 | tr \\n = | paste - <(echo) あるいは printf '%80s\n' | tr ' ' =
2つのスタイルを サポートしている言語 ・ Lisp ・ Perl ・ Ruby ・ Python ・ JavaScript ・ Ocaml ・ Scala ・ Clojure
良い点その2
しょぼい
ドナルド・クヌース 曰く
能力を限界まで 圧迫するような
「おもちゃ」の プログラムを 書くことは
非常に有益です
道具立てが 少ないほど
楽しみは多い
具体例で 説明します
時間がないので やめておきます
続きは USP友の会 学習会で \(^ o ^)/
ところで …
問題 80 個の“ =” で画面に罫線を引け
状況によりますが … 一般的にはこう書きます echo "==========…=" 80 個
ご清聴ありがとう ごさいました