2018年3月10日土曜日
曖昧なプログラミング言語
殆どの言語は英語ベースだが、英語ネイティブな人にとって、あの書き方は(少し変だけれども)英語として認識できるのだろうか、というのは興味あるところだ。今のコンピュータ言語は全て厳密な仕様に基づいている(書き方が曖昧だとしても曖昧さを許す範囲はあらかじめ固定されている)が、もっと自然言語に近づいてきたときにはどんな書き方になるのだろう。
何々を25回繰り返す、というとき、do something1 for 25 times. と書けるのなら、もっと英語表記に近い気がする。それで、subroutine somthing1 is to do something2 and something3 concurrently, if stacked, stop doing and send me the error message . くらいなら、今のパーサーでも何とか行けそうだ。
今のプログラミング言語の主流は、さまざまな新しいプログラミング概念を取り込みつつも記述がシンプルなものが多い。このため、コメント欄が欠かせない。だがコメントはプログラムの動きには関係がないから、修正し損ねたり説明し損ねたりしても問題ない。人間が常に適切に書き、修正しない限り、かえって邪魔になる。
この書き方では、従来のプログラミング言語レベルの記述をすると冗長になってしまい、たぶん膨大な量になってかえって読めなくなる。人間が読める仕様書と実言語の間の中間言語として、ある程度読め、抽象度もそこそこの言語があるのがよい。
どんなところを抽象化するのかというと、プログラムレベルで使う変数として人間が読む価値があるを残し、ロジックを厳密にするために内部で使うような変数を隠すのが第一だろう。上で言うなら、for a=1 to 25 ... next などと書くところだが、この a というのは人にとって価値がない。そこで 25 times と書くわけだ。
また、「全ての入力に関してSQLインジェクションチェックを行う」のような記述は、曖昧さを伴った記述だ。これは従来の言語で言う、アスペクト指向に類似している。違うのは、どこに適用するかを指示するかしないか、という点だ。
コードが冗長化する原因の多くは、こういったエラーチェックなどの「ネガティブロジック」だ。これを曖昧な記述で一手に引き受けることができれば、コードはずっと短くなる。これを適切に実行するのには、従来のプログラミング言語とは異なった仕掛けが必要になる。インタプリタでもコンパイラでもない、第三のスヌープエンジンのようなものだ。
プログラムの動きを見ていて、適用可能なところに達したら制御を奪ってチェックを実行する。このような仕掛けを前提にして、可能な曖昧記述を許すような文法を構築できれば、プログラミングはもっと簡単になるような気がする。それは既存の「コード自動生成」と似たようなものになるのかもしれないが、検討に値する概念だと思う。
登録:
コメントの投稿 (Atom)
注目の投稿:
超音波モーターの原理によるVR用トレッドミル
VRにおけるリアリティ問題の一つに、その場で動くのではなく移動する場合、つまり歩いたり走ったりすることが挙げられる。実際にはその場にいるので、歩いたかのように足場を調節してやる必要がある。 これを実現する方法として、すり鉢状の滑りやすい足場を作っておく方法と、トレッドミルを使...
人気の投稿:
-
http://techon.nikkeibp.co.jp/real/project/025.html 水と混ぜるだけでできるセラミックスで、圧縮強度、曲げ強度、引っ張り強度、接着強度、耐食性、とあらゆる面で優れているのだそうだ。また、混ぜ物ができるので、その特性をさらに...
-
性善説と性悪説、どちらを取るかと言えば、やや性善説、だろうか。 子供の成長を見ていると分かるのだが、基本的に子供は善だ。だが、同時に自分勝手なところもある。人の持っているものを欲しがり、場合によっては喧嘩してでも奪おうとする。だがこれは「悪」と言えるほどのものではない。 ...
-
CAS冷凍 については何回か書いているのだが、いわゆる冷凍睡眠にこれを使えないだろうか、と考えた。 不治の病を未来の医療に託すとして冷凍睡眠(実際には死んでから凍っているのだが)している人は居るし、火星程度より遠くに行くとなると冷凍睡眠の実用化は必要になるだろう。「20...
-
http://www.reconstruction.go.jp/topics/m18/04/20180409160607.html 復興庁が出した、東日本大震災における復興支援の報告書だ。 ざっと読んだが、よくある役所の成果報告書という感じで、タイトルからして「事例...
-
http://japanese.engadget.com/2017/03/28/ai/ これは、上の記事への反論である。 記事の流れについては先のリンクを読んで頂ければと思うが、大きくはその結論として①AIには想像力がない(苦手)、②日本人には世界に稀に見る想像力...
-
ディーン・ケーメン氏が発明した浄水器「 スリングショット 」の原理は、いわゆる蒸留である。つまり水を沸騰させて水蒸気にした後、冷やして水に戻す。汚水と蒸留水の間で熱交換を行うことで効率を上げている。 日本では、防災用の浄水器としては中空糸膜や逆浸透膜が殆どだ。これと蒸留式には...
-
ハクキンカイロの発熱原理を調べていて、これを防災用(キャンプ用でも良いのだが)の湯沸しに使えないかと考えた。 普通、キャンプではガスコンロを持っていく。だがあれは裸火を使うから、熱効率は悪い。これに対してハクキンカイロの仕掛けは、白金触媒を適切な場所に配することで、極...
-
「人はなぜ悪に憧れるのか」と「人はなぜ正義に憧れるのか」をGoogle検索してみたところ、前者は素直にヒットするのに後者はひねくれたサイトしかヒットしなかった。どうやら人は悪に憧れているようだ。 前者のサイトを読んでいると、様々な解釈が出てきて面白い。だが、検索前に自分...
-
電線の地中化が遅々として進まないそうだ。 電線を地中化できない最大の要因はコストだろう。よく「予算が無い」などと言われるが、その本質は「それだけの予算を掛ける価値が見出せない」ということだ。地中化の主目的は防災だが、普段のメリットがせいぜい景観くらいしかないことが、...
-
骨梁とは、骨の内部に存在する網の目ないしはスポンジのような構造のことだ。この構造によって、骨は頑丈なのに軽量でいられる。類似の構造としてはアルミ発泡材があるが、あれはどちらかと言えば消音や軽量化が目的であり、骨のような(建築用語で言うところの)構造材としての用途とは少し違う...
0 件のコメント:
コメントを投稿