Rubyは「読むものではなくて、書くもの」

プログラミング言語におけるRubyの位置付けを一言で述べると、「読むためのコードではなく、書くためのコード」と言える。コードの入れ子構造は、日本語の修飾→被修飾の関係に似ており、コードの頭からお尻までを読まないと挙動が解らない点も日本語の書き言葉とそっくりだ。(日本語の書き言葉は述語に牽引されている。述語=オブジェクトの図式が成立する。)

「クラス、メソッド」を書いて学ぶことは、日本語の漢字かな交じり文を「単語、熟語」の書き取りで習得していく手法に近い。例えば、子供は「かく」を耳で覚えて、「書く」「描く」「掻く」の字を目と手で覚える(音→訓(意味)への継承)。「モデル」「ビュー」「コントローラー」という言葉を僕達は日常で聞いたことがある。でも、それはMVCにおける「意味」や「目的」とは違う。それをRuby の書き取りで「上書き」していくプロセスがまず準備段階として必要だ。プログラミングの初学者がRubyを学ぶ理由がここにあるのだろう。とゆうのもRubyに限らず、プログラミング言語の形式が変われば言葉の意味が変わる。なぜなら、コードとは絶対的なものでは無いからだ。時間的には書き替えられ、関係性によってはその都度意味合いが変異するものだから。

今日まで学んだ内容を一度整理しよう。まず、Rubyで分解されたコード「実質」を学んだ。次にコードをリアクションとして成立させているMVCへの理解を深めた。そしてJavascriptの英文法のような「形式」的なシンタックスを学び始めた(「形式」がエンジニアにとってのガイドラインとして機能することに気づき始めた) 以上、「読むためではなく、書くための文章でした。」

※  ※  ※


『プリンシプル オブ プログラミング』によれば、プログラミングの抽象概念(原則)を理解するには、コードの一部を切り出し、呼び出し可能なもの(ルーチン、ファンクション、メッセージ、メソッド)は、便宜上全て「関数」と捉える。
そして、「関数」や「変数」をある責任単位でまとめたもの(クラス、ファイル、ライブラリ、モジュール)は、全て「モジュール」と捉える。
これはあくまで本書の内容を整理するための大雑把な線引きではあるが、コードが関係性によって意味合いが変異するものである事実を踏まえると、この線引きは非常に有効な「物差し」となる。


JavaScriptの関数定義の種類の豊富さは、可読性の「開き具合」を示していると捉えることが出来る。つまり、最も形式的な「関数宣言」から、その場しのぎな「アロー関数」(アローの意味は=>矢印  つまり指示代名詞なので、やはり一時的)まで表現が豊かなことは、構文全体に対しての関数定義の「開き具合」に敏感ということだ。おそらくJavaScriptの肝がここにある。
 現時点で理解すべきは、Rubyと比較して明確な形式を持つJavaScriptが、その形式ゆえに定義一つとってもメタメッセージを込めることが出来るという点だろう。

※  ※  ※

『エンジニアとして世界の最前線で働く選択肢』のFacebookグループから、以下のブログに辿り着く。

「技術力の差は英語力の差」
なんと、、確かに元々プログラミングは英語文化圏のものなのだから、背景となる命名の意味を理解しながら具体的なコードを学ぶ方が本質的だ。こちらのブログを参考に例文が多数掲載されている物書堂のコウビルド英英辞典アプリを即購入。

「コウビルドの「フルセンテンス式の語釈」を→DeepLに突っ込む!」の黄金パターンが完成することで命名の意図を即理解。一気に学習欲にブーストが掛かる。良い感じになってきた。当たり前だが、いつの時代も人に聞く(検索)のまえに、まず辞書だ。いや、寧ろ時代が進む程、語源の系統図は複雑になっているからこそ、より辞書を引くことが重要となる。具体的な技法を学ぶからこそ、抽象化のプロセス(例えば命名)が大事になってくる。なぜならその学びが初歩的だとしても、本質を抽象するために考えることは、いつでも、どこでも、コードが書けなくても出来るから。それは本質的な学びに繋がる。

この記事が気に入ったらサポートをしてみませんか?