括弧の無い Lisp
なんか,いつまで経っても呪いのように,「Lisp は括弧が多い」 とか言ってる人がいて,なんだかなぁと見るたびに思うわけです.
いやいや,全然括弧多くないよと.
最高にキモい Lisp コードを書いてみよう with 100 行リーダーマクロ
誰だい,Common Lisp に括弧が多いなんて言ったのは !! あと,ちゃんと end で区切られるから,Pascal な人も安心だね ☆
# というのはネタとしても,Perl の $ や # 等々記号の群や,Ruby の @ と end の群や, Python の,インデントの見た目なんていうある種環境依存する要因が本質的に重要になってるとことかと,どっこどっこいのトレードオフだとは思う.なにゆえに,括弧という伝統的かつエッセンシャルな要因が,それほどまでに叩かれねばならぬのだ,と.それ,単に慣れの問題ちゃうか ? と.逆に括弧が無くて,ダラダラとひたすらアスキーが並んでいるプログラムの字面の方が読みにくい,と感じる場面も多いと思う (少なくとも,ボクは).括弧があれば,少なくとも紛れや迷いは無くなる.というか,まぁ,Lisp にパタンマッチがあれば,ほとんどの問題は解決するような.一番きついのは,複雑な条件分岐で,異様に括弧のネストが深くなるケースだと思うから (そういう S 式の塊,見た瞬間読む気が失せる).
これを良い機会として,Allegro の人とか黒田さんとかが意地と気合いと本気で,Ruby と完全互換な Common Lisp の DSL とか書いたらカッコいいのになぁ (笑) そしたら素直に尊敬してしまう.ソースの冒頭で,(require 'ruby) とか w
いくら Ruby の構文が複雑でも,最終的には構文木になってるはずだから,S 式に機械変換できるはず (いや,そりゃそうだけど… ムチャクチャ)
ブロックはラムダに,ドットでのメソッド呼出しは,C++ の内部みたいに this を引数にして総称関数呼び出す形に変換すれば,とりあえず見た目は同じにできそうな気も.
そしたらまぁ,CLer は,Ruby は CL の DSL です !! と胸を張って言えるし,Ruby の人は,CL の莫大な資産 (例えば,商用の気合いの入ったネイティブコンパイラとか) を使えるようになるわけだし,みんなハッピーになれる気がする.誰か本当にやったら面白そうだ.
ちなみに他の呪いの例 :
・ FORTRAN は再帰ができない… (酷いのになると,動的メモリ割り当てが dekinai もあり)
・ Java はのろい (← これが言いたかっただけ)
あと,関数型言語は,普通の人には難し過ぎる,とか.
サルが使おうとすると怒られる気がする言語
ていうか,C だって,FORTRAN だって,そもそも計算機自体が,全て偉大な計算機科学界の,知の巨人たちの生み出した数学理論の結晶なんですけどね.なんで関数型言語ばかり変に崇めたり,卑屈になったりする人が多いのだろうか ?
# BNF が確立するまでは,高級言語なんて未来永劫実現しない夢物語に過ぎない,と言われてたんですよ.今では学部の 2 〜 3 年生でも,習うところは習うぐらいまで道が整備されてますが.
まぁ,こういう意見はあいまいなので,ちょっと便宜上,定義を定めることにしよう.
○ 普通の人
・ 言語処理系を作らない人
・ ライブラリを使うだけの人
・ メタプログラミングしない人
・ コーダー
○ 普通じゃない人
・ 言語 (仕様 | 処理系) を作る人
・ ライブラリアン
・ メタプログラミングする人
・ デザイナー
まぁ,こう書くと語弊があるんだけど.しかし,「素人は,熟練した大工の道具箱の中を除いたとき,多種多様な道具の数々に目眩を起こし,また使いかたが見当もつかないため,なんでこんなに多種多様な道具が必要なのだ ? 無駄だ,必要ない,と言うかもしれない.しかし,C++ はプロのための言語だ」 と堂々と語るびじゃーねすっぽすっぽ先生も (たぶんプログラミング言語 C++ かどっかで) 私は門外漢の分野では,むしろ素人でいたい,と言っていたような気がするけど,別に自分の専門外のものまで,何でもかんでも知る必要も作る必要も無いのである.
だから,ただ使う人ってのは,全然駄目じゃない.むしろ,使う人がいなかったら,言語にせよプログラムにせよ思想にせよデザインにせよ,発展が滞るので,エンドユーザは素晴らしい,タコは素晴らしい,フリーライダー万歳 !! という在り方ことこそが,本来の FOSS の正しい在り方だったのではないだろうか.変に卑屈になったり,逆にたかがちょっと変わった言語使ってるってだけで尊大になったり,ってのは,なんか違うのではなかろうか.
# まぁ,往々にして,母国語で近所の人々とまともに挨拶もコミュニケーションもできないような人間に限って,10 億人と話せる ! とか言って NOVA に通いたがるものですが.重要なのは,言語使えることじゃなくて,言語を使って表現するもののような気が.いや,もちろん,表現手段がいろいろあることは,非常に素晴らしいことですが.英語にフランス語に手話に,何でもできるに越したことはないです.そして,文法とかはむしろどうでも良くて,外国のカルチャーを学ぶことの方が重要なんじゃないかなー と思うとですよ.対話重要.コミュニケート重要.プログラミングに限らず,何でも同じですな.
そして,いざ自分が当事者,例えばプリンタドライバが上手く動かなくて困っちゃったリチャード (RMS) みたいな立場になったとき,オープンソースなら自由に改良できるかもしれない,もっと上手いやり方を思い付いて,みんながハッピーになれるかもしれない.世界が一気に良い方向に変わるかもしれない.ソフトウェアのコピーコストは完全に (ほぼ) ゼロなので,誰も不幸にならない,みんな幸せになれるユートピアさ.ボクはピーターパンなんだばじゃーい (マイケルジャクソン管理人)
ということが,FOSS の最大の素晴らしい点だったのではなかろうか.
とかいう話はどうでもいいな.まぁ,目的に対して効果的な道具を自由に使ってれば良いのではなかろうかと.私は,C++ に対して Java が,C# に対して VisualBasic が,Perl に対して PHP が素晴らしいのと同じ理由で,Ruby は良くできていて素晴らしい言語だと思いますし.別に,大根を切るのにチェーンソーを持ってくる必要は無いですし,いくらチェーンソーでも大根は切れるとはいえ,明らかにやりすぎというか.
# いや,ま,チェーンソーを使えないやつが,大木を切れるか ! というのは最もな意見なんですが,別にみんながみんな木樵になりたいわけじゃないし.いや,もちろん,使えるに越したことはありませんけどね.
ただまぁ,処理系屋からすると,やっぱり S 式は扱いやすいわけで.プログラムを手で書くか,あるいは機械で処理するか,という認識の違いを,いたるところで目にするような気もします.Ruby のPerl モドキの親の仇のように括弧を省略したがる複雑な文法 自然言語のように柔軟かつ簡潔な人間にやさしい文法は解析は面倒というのが本音.
あと,正直,機械に解析が困難な文法が,あまり人間にやさしいとも思えないのですが.結局のところ,Ruby だって,思いもよらない意味に解析されちゃって,書いた本人がびっくり ! というケースだって多いのでは ? 私はいちおう人間のつもりですが,英語の自然言語処理は苦手で,さっぱり意味が取れませんし.
んで,結局は,慣れてる人は簡潔に書きやすくて読みやすくて良いだろうけど,演算子の優先順位が狂ってる C みたいに,疑心暗鬼になって括弧を付け回るという本末転倒になりそうな予感も.
# いや,生粋の Rubyist 様がたは,みんな完璧に文法規則が頭に入ってるから,括弧省略しまくりで変数なのかメソッド呼出なのかさっぱりわからないようなコードでも,初見でスラスラ読めるのかね ? そしてそういうコードが Ruby らしいというならば,いやはや,Ruby は頭の良い人達しか使えない.選民思想に溢れた言語ですね (とか毒を吐いてみる w)
とはいえ,まぁ (ネタはともかくとして),やっぱり S 式を読みやすいと思う人間もいないわけで (たぶん,*ほとんどの人* はそうだよね ? この言葉ほど当てにならない曖昧 me mine もないけれど).特にネストが深くなってくると,アレはいくらなんでも感がすぐに漂ってくる (いや,現世から解脱した Lisper は括弧が見えなくなるらしいけど).
というわけで,やっぱり Python みたいに,インデントでスコープを括ったり,C みたいに {} やセミコロンで閉じたりとかが,妥協案としては良いのではないだろうか ?
とか思っていたら,やっぱりもう既にあったのね (via はじめてのにき コメント欄)
SRFI-49: Indentation-sensitive syntax
うわははは.まさしく誰が書いても同じ見た目になる w
これぐらいだったら,普通に実用になりそう,というか,普通に欲しいな.見やすいのう.
一番外側の括弧の省略は,普通にデフォルトになっても良いと思う.Dylan とかは知らんけど.
なんか,やたら前置きが長い上に,不明瞭な記事になってしまった.おまけにもうこんな時間だ.明日早いし,今日睡眠不足でフラフラだから早く寝ようと思っていたのに… orz
疲れていると,無駄に変なテンションになっていかん.当初は,「もう CL の方言が Ruby ,Sheme の方言が Python ってことで良くね ? w」 的なネタ記事を,リンクテキトーに張って 10 行ぐらいで軽く書くだけのつもりだったのに…
# 挙げ句の果てに,なんか発言を引用しようとして,「C++ の設計と進化」 まで引っ張り出してきたのに,結局見付からず.駄目駄目.
何か,書いてるうちに変な方向に文章が流れ初めてしまって,軌道修正を繰り返すうちに迷走してメチャクチャになっちゃった.寝てないと変に攻撃的で皮肉屋文体になってしまって非常に良くない.キモすぎ ! > わし
もう面倒になってきたからリリース.なげやり (最近の若者)
λ…
うは,もちろん偶然だろうけど,タイムリーだなぁ.
[言語] まつもとゆきひろ氏のHSPに対する見解について
いやー,単に HSP は,特定領域 (ゲームなど) に優れた DSL ってことのような… 何もこういう言いかたをしなくても.正直,読んでいて良い気持ちがしない文章ですな (なら読むな > わし) SURU- 力が足りない.
う〜ん,どうなんでしょう,こういう言いかたは.前回の記事の発言とかと合わせると,なんか自ら Ruby を貶めているようにも聞こえてしまうのですが… つまり,Ruby は,普通の人のための簡易言語である,と.そもそも,Common Lisp の人から見れば,たぶんこのエントリに書かれている内容は,全て Ruby にもそっくりそのまま当てはまるのだろうし.
あと,一方では,「初心者はいつまでも初心者ではない」,とか言っておきながら,もう一方では,「業界の人間の大多数がいわゆる劣った人間」 と発言するという矛盾というか.いや,松本氏的には我慢ならないだろうけど,むしろ Ruby が,例えば Java と Common Lisp の間のギャップを埋めるための緩衝材となるならば,それはそれで素晴らしいことなのではないかとも思う.親はいつまでも子供に子供のままでいてほしいのでしょうが,それでは子供は成長が止まってしまうかもしれない.最初は CL を扱えなかった子供でも,やがては Ruby を糧に成長して,CL を飲み込めるようになるかもしれない.
# もしそれを嫌がるのならば,まさしくそれは囲い込みというか,自分の食い扶持のために信者を増やす宗教活動に見えてしまうかも.いや,それは言い過ぎか.すいません.現に幸せになってる人も多いわけですからねぇ.
しっかし,ボク的には,松本氏は,Lisp が 50 年かけてできなかったことをやりとげ,Ruby で,現に世界を変えつつある凄い人,というイメージがあるのだが,なにゆえにこんなにムキになって他言語を取り上げ,いやらしい皮肉を語るのだろうか ? 誰にもマネできないことを成し遂げたのだから,もっとどっしり,大御所的に振る舞っても良いと思うのに.嫌いな言語やよく知らない言語は,単に放っとけば良いんじゃないかなぁと.他言語訪問,とかいって,結局は中途半端に取り上げるだけで,最後は Ruby マンセーに落ち着く水戸黄門的るびま記事とかも,いろいろアレな気が.
# いや,その庶民的なところが良いのかもしれませんが.口を滑らせるのも芸なのかも知れない.
dankogai さんも,どっからどうも見ても圧倒的な勝ち組 (金持ち,有名人,アルファブロガー,奥さん美人らしい,良いマンションに住んでるらしい) なのに,やたら数学や学歴にコンプレックス剥き出しな印象があるし (なんか,中卒だけど,そこらの ph.D よりも勝ち組だぜ的な.いや,もちろんそうですし,裸一貫から自分の実力一つで成り上がったということは,非常に立派で物凄いことだと思うのでですがねぇ…).う〜ん,まぁ,わかってやってる芸風なんでしょうけど.ちょっとボク的には辟易してしまうかもしれない.
いや〜,ボクみたいな人生負け組一直線が言うのもアレだけど (普段から自分のこと,低学歴とか田舎者とか DQN とか言ってるし w まぁ,れっきとした事実なんだけど),教養とか読書とか知識ってのは,世界を広げて,変なコンプレックスを無くしてまっすぐ物事を見るためのものなんじゃないのかなという.
けして,自分の頭の良さをひけらかしたりとか,そういうためのもんじゃないような.まぁ,どうでも良いけど (ていうか,ボクみたいなぺーぺーが語ることじゃないな.眠いときに勢いだけで文章を書くのは良くない).
わはは,確かにそりゃそうだ.
Ruby が叩かれるのは,成功したから.少なくともそれは間違い無いし,凄いこと.
ただ,wo さんの,この含蓄溢れる御言葉を,思い出さずにはおれないのである.
(強調筆者)
あー,よく読み返してみると,思っていたのと意味が違ってるなぁ… まぁいいや.
自分を客観的に見るってのは,難しいよねぇ.
結論 : 広がった Ruby は凄い.Ruby を作った Matz 氏は偉大.
おっと,修正して消したところが引用されてました > HSP のくだり.
ありゃりゃ,すいません.
雑感
# しっかし,部分部分だけ取り出されると,えらいドギツイ皮肉みたいになってしまいますな (大汗) まぁ,みなさん大人だと思うので,きちんと全体の大意を汲んでくださるに違いないと思いますが (^^;
何で表現を代えたかと言うと,HSP のサイトを見て見たら,なんかやたら面白そうな言語だなと www
簡単に絵が動かせて,バイナリも生成できるとか.まぁ,ボクはゲームとかしない人だから,ゲームプログラミング自体には興味無いんですが.こりゃ流行るわい,と納得も.
HSP は,汎用言語じゃないんですよ,たぶん.だから,HSP に対する例の批判 (BASIC や COBOL みたいな老害はしぶとい) は,的外れというか.
どっちかっていうと,HSP は,シナリオ記述用 (まさしく) スクリプト言語「吉里吉里」みたいなもんなんじゃないすか ? (いや,こっちも名前しか知らないですけど)
PHP にしろ,HSP にしろ,もともと汎用言語よりもある種の仕事は上手くできてあたりまえ (というか,そのための「ツール」) なので,そもそも Ruby の攻撃比較対象では無いような.
まぁ,専用言語は,一度普及するとつぎはぎ的に汎用言語にまで拡張せざるを得なくなってくる宿命があるので,一度広がった影響を苦々しく思う気持ちもわからなくはないですが.
自転車で十分な人も,世の中には多いと思いますですよ.みんながみんな,マニュアルを取る必要も無いわけで.今の時代,オートマで 9 割以上の人間は満足だと思います.マニュアルで運転できないようなやつは本物のドライバじゃない,とかいうのは論外としても,オートマは燃費が悪いってのも,もう過去の話のような.もちろん,F1 ドライバも,軽トラ (たいていマニュアル) の運転手も,いつの時代も重要なのは間違い無いのですが.
(もう 5 年間ペーパードライバ一応マニュアル免許管理人)
あわわわわわわわわ,す,すいませんっ !!
きむらさんの 「んーと宗教活動云々は言葉的にもちょっと微妙っす。 詳しくはコメントしないけど。 ただそう感じている人はあろはさん以外にもいることはいます。」 という反応の意味がわからなかったのですが,今日氷解.
だいありー : samidare が新しいRubyスレを捕捉してくれた
経由で
Rubyについて Part 25 (気にしてますか?GPL混入
経由で
【カルト】Ruby開発者Matz【モルモン】
という 2ch のスレを発見.うへぇ,いくらなんでも,酷すぎる誹謗中傷だなぁ (個々の書き込みの真偽はともかくとして,少なくとも万人が見れるネット上に書くような内容じゃない).
# すいません,全く 2ch とか ./ の類は見ないので,この方面に無頓着でした.
いやぁー,私の意図は,「(Allegro の中の人と同様に) Ruby の処理系の開発が仕事になってるから,FUD を流してでも他の言語を貶めて,ユーザを確保していかないといけないのだとしたら,それはいかがなものか ?」 程度の意味合いでした.けして個人の信教を貶めるような意図ではありません (迂闊なことに,キリスト教徒の Matz 氏に対して,いわゆる 「Lisp カルト教」 的な揶揄と同列のつもりで,宗教という単語を使った発言をしてしまったのは,さすがにマズかったなぁ.特に他意はなかったのですが).
しかし,上記のようなスレを知っている人が見たら,全く違う意味に取られて,とんでもない誤解をされてもおかしくないですね.心配になったので,念のため.
いやいや,全然括弧多くないよと.
最高にキモい Lisp コードを書いてみよう with 100 行リーダーマクロ
defun fib (n)
if (< n 0)
(error "oops")
elif (= n 0)
0
elif (= n 1)
1
else
let
x <- (fib (- n 1))
y <- (fib (- n 2))
in
(+ x y)
end
end
end
誰だい,Common Lisp に括弧が多いなんて言ったのは !! あと,ちゃんと end で区切られるから,Pascal な人も安心だね ☆
# というのはネタとしても,Perl の $ や # 等々記号の群や,Ruby の @ と end の群や, Python の,インデントの見た目なんていうある種環境依存する要因が本質的に重要になってるとことかと,どっこどっこいのトレードオフだとは思う.なにゆえに,括弧という伝統的かつエッセンシャルな要因が,それほどまでに叩かれねばならぬのだ,と.それ,単に慣れの問題ちゃうか ? と.逆に括弧が無くて,ダラダラとひたすらアスキーが並んでいるプログラムの字面の方が読みにくい,と感じる場面も多いと思う (少なくとも,ボクは).括弧があれば,少なくとも紛れや迷いは無くなる.というか,まぁ,Lisp にパタンマッチがあれば,ほとんどの問題は解決するような.一番きついのは,複雑な条件分岐で,異様に括弧のネストが深くなるケースだと思うから (そういう S 式の塊,見た瞬間読む気が失せる).
これを良い機会として,Allegro の人とか黒田さんとかが意地と気合いと本気で,Ruby と完全互換な Common Lisp の DSL とか書いたらカッコいいのになぁ (笑) そしたら素直に尊敬してしまう.ソースの冒頭で,(require 'ruby) とか w
いくら Ruby の構文が複雑でも,最終的には構文木になってるはずだから,S 式に機械変換できるはず (いや,そりゃそうだけど… ムチャクチャ)
ブロックはラムダに,ドットでのメソッド呼出しは,C++ の内部みたいに this を引数にして総称関数呼び出す形に変換すれば,とりあえず見た目は同じにできそうな気も.
そしたらまぁ,CLer は,Ruby は CL の DSL です !! と胸を張って言えるし,Ruby の人は,CL の莫大な資産 (例えば,商用の気合いの入ったネイティブコンパイラとか) を使えるようになるわけだし,みんなハッピーになれる気がする.誰か本当にやったら面白そうだ.
ちなみに他の呪いの例 :
・ FORTRAN は再帰ができない… (酷いのになると,動的メモリ割り当てが dekinai もあり)
・ Java はのろい (← これが言いたかっただけ)
あと,関数型言語は,普通の人には難し過ぎる,とか.
サルが使おうとすると怒られる気がする言語
ていうか,C だって,FORTRAN だって,そもそも計算機自体が,全て偉大な計算機科学界の,知の巨人たちの生み出した数学理論の結晶なんですけどね.なんで関数型言語ばかり変に崇めたり,卑屈になったりする人が多いのだろうか ?
# BNF が確立するまでは,高級言語なんて未来永劫実現しない夢物語に過ぎない,と言われてたんですよ.今では学部の 2 〜 3 年生でも,習うところは習うぐらいまで道が整備されてますが.
まぁ,こういう意見はあいまいなので,ちょっと便宜上,定義を定めることにしよう.
○ 普通の人
・ 言語処理系を作らない人
・ ライブラリを使うだけの人
・ メタプログラミングしない人
・ コーダー
○ 普通じゃない人
・ 言語 (仕様 | 処理系) を作る人
・ ライブラリアン
・ メタプログラミングする人
・ デザイナー
まぁ,こう書くと語弊があるんだけど.しかし,「素人は,熟練した大工の道具箱の中を除いたとき,多種多様な道具の数々に目眩を起こし,また使いかたが見当もつかないため,なんでこんなに多種多様な道具が必要なのだ ? 無駄だ,必要ない,と言うかもしれない.しかし,C++ はプロのための言語だ」 と堂々と語るびじゃーねすっぽすっぽ先生も (たぶんプログラミング言語 C++ かどっかで) 私は門外漢の分野では,むしろ素人でいたい,と言っていたような気がするけど,別に自分の専門外のものまで,何でもかんでも知る必要も作る必要も無いのである.
だから,ただ使う人ってのは,全然駄目じゃない.むしろ,使う人がいなかったら,言語にせよプログラムにせよ思想にせよデザインにせよ,発展が滞るので,エンドユーザは素晴らしい,タコは素晴らしい,フリーライダー万歳 !! という在り方ことこそが,本来の FOSS の正しい在り方だったのではないだろうか.変に卑屈になったり,逆にたかがちょっと変わった言語使ってるってだけで尊大になったり,ってのは,なんか違うのではなかろうか.
# まぁ,往々にして,母国語で近所の人々とまともに挨拶もコミュニケーションもできないような人間に限って,10 億人と話せる ! とか言って NOVA に通いたがるものですが.重要なのは,言語使えることじゃなくて,言語を使って表現するもののような気が.いや,もちろん,表現手段がいろいろあることは,非常に素晴らしいことですが.英語にフランス語に手話に,何でもできるに越したことはないです.そして,文法とかはむしろどうでも良くて,外国のカルチャーを学ぶことの方が重要なんじゃないかなー と思うとですよ.対話重要.コミュニケート重要.プログラミングに限らず,何でも同じですな.
そして,いざ自分が当事者,例えばプリンタドライバが上手く動かなくて困っちゃったリチャード (RMS) みたいな立場になったとき,オープンソースなら自由に改良できるかもしれない,もっと上手いやり方を思い付いて,みんながハッピーになれるかもしれない.世界が一気に良い方向に変わるかもしれない.ソフトウェアのコピーコストは完全に (ほぼ) ゼロなので,誰も不幸にならない,みんな幸せになれるユートピアさ.ボクはピーターパンなんだばじゃーい (マイケルジャクソン管理人)
ということが,FOSS の最大の素晴らしい点だったのではなかろうか.
とかいう話はどうでもいいな.まぁ,目的に対して効果的な道具を自由に使ってれば良いのではなかろうかと.私は,C++ に対して Java が,C# に対して VisualBasic が,Perl に対して PHP が素晴らしいのと同じ理由で,Ruby は良くできていて素晴らしい言語だと思いますし.別に,大根を切るのにチェーンソーを持ってくる必要は無いですし,いくらチェーンソーでも大根は切れるとはいえ,明らかにやりすぎというか.
# いや,ま,チェーンソーを使えないやつが,大木を切れるか ! というのは最もな意見なんですが,別にみんながみんな木樵になりたいわけじゃないし.いや,もちろん,使えるに越したことはありませんけどね.
ただまぁ,処理系屋からすると,やっぱり S 式は扱いやすいわけで.プログラムを手で書くか,あるいは機械で処理するか,という認識の違いを,いたるところで目にするような気もします.Ruby の
あと,正直,機械に解析が困難な文法が,あまり人間にやさしいとも思えないのですが.結局のところ,Ruby だって,思いもよらない意味に解析されちゃって,書いた本人がびっくり ! というケースだって多いのでは ? 私はいちおう人間のつもりですが,英語の自然言語処理は苦手で,さっぱり意味が取れませんし.
んで,結局は,慣れてる人は簡潔に書きやすくて読みやすくて良いだろうけど,演算子の優先順位が狂ってる C みたいに,疑心暗鬼になって括弧を付け回るという本末転倒になりそうな予感も.
# いや,生粋の Rubyist 様がたは,みんな完璧に文法規則が頭に入ってるから,括弧省略しまくりで変数なのかメソッド呼出なのかさっぱりわからないようなコードでも,初見でスラスラ読めるのかね ? そしてそういうコードが Ruby らしいというならば,いやはや,Ruby は頭の良い人達しか使えない.選民思想に溢れた言語ですね (とか毒を吐いてみる w)
とはいえ,まぁ (ネタはともかくとして),やっぱり S 式を読みやすいと思う人間もいないわけで (たぶん,*ほとんどの人* はそうだよね ? この言葉ほど当てにならない曖昧 me mine もないけれど).特にネストが深くなってくると,アレはいくらなんでも感がすぐに漂ってくる (いや,現世から解脱した Lisper は括弧が見えなくなるらしいけど).
というわけで,やっぱり Python みたいに,インデントでスコープを括ったり,C みたいに {} やセミコロンで閉じたりとかが,妥協案としては良いのではないだろうか ?
とか思っていたら,やっぱりもう既にあったのね (via はじめてのにき コメント欄)
SRFI-49: Indentation-sensitive syntax
define
fac x
if
= x 0
1
* x
fac
- x 1
うわははは.まさしく誰が書いても同じ見た目になる w
define (fac x)
if (= x 0) 1
* x
fac (- x 1)
これぐらいだったら,普通に実用になりそう,というか,普通に欲しいな.見やすいのう.
一番外側の括弧の省略は,普通にデフォルトになっても良いと思う.Dylan とかは知らんけど.
なんか,やたら前置きが長い上に,不明瞭な記事になってしまった.おまけにもうこんな時間だ.明日早いし,今日睡眠不足でフラフラだから早く寝ようと思っていたのに… orz
疲れていると,無駄に変なテンションになっていかん.当初は,「もう CL の方言が Ruby ,Sheme の方言が Python ってことで良くね ? w」 的なネタ記事を,リンクテキトーに張って 10 行ぐらいで軽く書くだけのつもりだったのに…
# 挙げ句の果てに,なんか発言を引用しようとして,「C++ の設計と進化」 まで引っ張り出してきたのに,結局見付からず.駄目駄目.
何か,書いてるうちに変な方向に文章が流れ初めてしまって,軌道修正を繰り返すうちに迷走してメチャクチャになっちゃった.寝てないと変に攻撃的で皮肉屋文体になってしまって非常に良くない.キモすぎ ! > わし
もう面倒になってきたからリリース.なげやり (最近の若者)
λ…
うは,もちろん偶然だろうけど,タイムリーだなぁ.
[言語] まつもとゆきひろ氏のHSPに対する見解について
いやー,単に HSP は,特定領域 (ゲームなど) に優れた DSL ってことのような… 何もこういう言いかたをしなくても.正直,読んでいて良い気持ちがしない文章ですな (なら読むな > わし) SURU- 力が足りない.
う〜ん,どうなんでしょう,こういう言いかたは.前回の記事の発言とかと合わせると,なんか自ら Ruby を貶めているようにも聞こえてしまうのですが… つまり,Ruby は,普通の人のための簡易言語である,と.そもそも,Common Lisp の人から見れば,たぶんこのエントリに書かれている内容は,全て Ruby にもそっくりそのまま当てはまるのだろうし.
あと,一方では,「初心者はいつまでも初心者ではない」,とか言っておきながら,もう一方では,「業界の人間の大多数がいわゆる劣った人間」 と発言するという矛盾というか.いや,松本氏的には我慢ならないだろうけど,むしろ Ruby が,例えば Java と Common Lisp の間のギャップを埋めるための緩衝材となるならば,それはそれで素晴らしいことなのではないかとも思う.親はいつまでも子供に子供のままでいてほしいのでしょうが,それでは子供は成長が止まってしまうかもしれない.最初は CL を扱えなかった子供でも,やがては Ruby を糧に成長して,CL を飲み込めるようになるかもしれない.
# もしそれを嫌がるのならば,まさしくそれは囲い込みというか,自分の食い扶持のために信者を増やす宗教活動に見えてしまうかも.いや,それは言い過ぎか.すいません.現に幸せになってる人も多いわけですからねぇ.
しっかし,ボク的には,松本氏は,Lisp が 50 年かけてできなかったことをやりとげ,Ruby で,現に世界を変えつつある凄い人,というイメージがあるのだが,なにゆえにこんなにムキになって他言語を取り上げ,いやらしい皮肉を語るのだろうか ? 誰にもマネできないことを成し遂げたのだから,もっとどっしり,大御所的に振る舞っても良いと思うのに.嫌いな言語やよく知らない言語は,単に放っとけば良いんじゃないかなぁと.他言語訪問,とかいって,結局は中途半端に取り上げるだけで,最後は Ruby マンセーに落ち着く水戸黄門的るびま記事とかも,いろいろアレな気が.
# いや,その庶民的なところが良いのかもしれませんが.口を滑らせるのも芸なのかも知れない.
dankogai さんも,どっからどうも見ても圧倒的な勝ち組 (金持ち,有名人,アルファブロガー,奥さん美人らしい,良いマンションに住んでるらしい) なのに,やたら数学や学歴にコンプレックス剥き出しな印象があるし (なんか,中卒だけど,そこらの ph.D よりも勝ち組だぜ的な.いや,もちろんそうですし,裸一貫から自分の実力一つで成り上がったということは,非常に立派で物凄いことだと思うのでですがねぇ…).う〜ん,まぁ,わかってやってる芸風なんでしょうけど.ちょっとボク的には辟易してしまうかもしれない.
いや〜,ボクみたいな人生負け組一直線が言うのもアレだけど (普段から自分のこと,低学歴とか田舎者とか DQN とか言ってるし w まぁ,れっきとした事実なんだけど),教養とか読書とか知識ってのは,世界を広げて,変なコンプレックスを無くしてまっすぐ物事を見るためのものなんじゃないのかなという.
けして,自分の頭の良さをひけらかしたりとか,そういうためのもんじゃないような.まぁ,どうでも良いけど (ていうか,ボクみたいなぺーぺーが語ることじゃないな.眠いときに勢いだけで文章を書くのは良くない).
わはは,確かにそりゃそうだ.
_ むみむみ
自分の言語が好きで好きでしかたがなくない m さんなんて見てて何も面白くないんじゃないかとかいう話。まぁそれ以前にそうじゃないと成功しないよなーとか適当に思う。
Ruby が叩かれるのは,成功したから.少なくともそれは間違い無いし,凄いこと.
ただ,wo さんの,この含蓄溢れる御言葉を,思い出さずにはおれないのである.
プログラマだったら一度は「自分言語を作ろう。」と思ったことがあるかもしれない。でも、実際に実装なんか全然することなんかなくて、即没。っていう人が9割以上だと思う。もし、実際に実装したとしても、生き残って広く使われるとなると、その確率はごくごくわずかだと思う。(ちなみに、Xftのkeith氏も言語作ってたりする - http://nickle.org/。全然関係無いけど。)
それでも、本気で自分言語の仕様について考えてみる価値はあると思う。
経験とかライブラリの知識とかの都合上、あるひとつの言語弄ってばっかり。っていう状況は十分考えられるだろう。結果として、その言語マンセーな状況、いわゆる「信者」になってしまうんだと思う。大抵のプログラマは大なり小なり何らかの言語の信者だ。
でも、プログラマ、というか、技術者にとって、何かを盲信するというのは最も避けるべき行為だ。そういうのは客観的に長所、短所を見極める際の障害になってしまう。
で、そういうのを避けるために自分言語を考えるのである。自分言語を作るとすれば、もちろん、その言語を世界最高の言語にしようとするだろう。そうすれば、自然と、他の言語の欠点を探そうとするんじゃないだろうか。
そして、その時は自分が信じる言語さえも客観的に見れると思う。
でも、そういううんちくはどうでもいいとして、自分言語を考えるってゆーのは結構楽しい。まあ、暇潰しとかにもってこいだ。
--
で、色々考えてて、結構考えがまとまってきたし、今日は何か他の言語からパクってこようと思って、D言語調べてたら僕が考えてたアイデアがもっとしっかりした形で十分実装されてたのでなんか、もうD言語でいいや。とか思ったんだけど、続きます。
(強調筆者)
あー,よく読み返してみると,思っていたのと意味が違ってるなぁ… まぁいいや.
自分を客観的に見るってのは,難しいよねぇ.
結論 : 広がった Ruby は凄い.Ruby を作った Matz 氏は偉大.
おっと,修正して消したところが引用されてました > HSP のくだり.
ありゃりゃ,すいません.
雑感
# しっかし,部分部分だけ取り出されると,えらいドギツイ皮肉みたいになってしまいますな (大汗) まぁ,みなさん大人だと思うので,きちんと全体の大意を汲んでくださるに違いないと思いますが (^^;
何で表現を代えたかと言うと,HSP のサイトを見て見たら,なんかやたら面白そうな言語だなと www
簡単に絵が動かせて,バイナリも生成できるとか.まぁ,ボクはゲームとかしない人だから,ゲームプログラミング自体には興味無いんですが.こりゃ流行るわい,と納得も.
HSP は,汎用言語じゃないんですよ,たぶん.だから,HSP に対する例の批判 (BASIC や COBOL みたいな老害はしぶとい) は,的外れというか.
どっちかっていうと,HSP は,シナリオ記述用 (まさしく) スクリプト言語「吉里吉里」みたいなもんなんじゃないすか ? (いや,こっちも名前しか知らないですけど)
PHP にしろ,HSP にしろ,もともと汎用言語よりもある種の仕事は上手くできてあたりまえ (というか,そのための「ツール」) なので,そもそも Ruby の
まぁ,専用言語は,一度普及するとつぎはぎ的に汎用言語にまで拡張せざるを得なくなってくる宿命があるので,一度広がった影響を苦々しく思う気持ちもわからなくはないですが.
自転車で十分な人も,世の中には多いと思いますですよ.みんながみんな,マニュアルを取る必要も無いわけで.今の時代,オートマで 9 割以上の人間は満足だと思います.マニュアルで運転できないようなやつは本物のドライバじゃない,とかいうのは論外としても,オートマは燃費が悪いってのも,もう過去の話のような.もちろん,F1 ドライバも,軽トラ (たいていマニュアル) の運転手も,いつの時代も重要なのは間違い無いのですが.
(もう 5 年間ペーパードライバ一応マニュアル免許管理人)
あわわわわわわわわ,す,すいませんっ !!
きむらさんの 「んーと宗教活動云々は言葉的にもちょっと微妙っす。 詳しくはコメントしないけど。 ただそう感じている人はあろはさん以外にもいることはいます。」 という反応の意味がわからなかったのですが,今日氷解.
だいありー : samidare が新しいRubyスレを捕捉してくれた
経由で
Rubyについて Part 25 (気にしてますか?GPL混入
経由で
【カルト】Ruby開発者Matz【モルモン】
という 2ch のスレを発見.うへぇ,いくらなんでも,酷すぎる誹謗中傷だなぁ (個々の書き込みの真偽はともかくとして,少なくとも万人が見れるネット上に書くような内容じゃない).
# すいません,全く 2ch とか ./ の類は見ないので,この方面に無頓着でした.
いやぁー,私の意図は,「(Allegro の中の人と同様に) Ruby の処理系の開発が仕事になってるから,FUD を流してでも他の言語を貶めて,ユーザを確保していかないといけないのだとしたら,それはいかがなものか ?」 程度の意味合いでした.けして個人の信教を貶めるような意図ではありません (迂闊なことに,キリスト教徒の Matz 氏に対して,いわゆる 「Lisp カルト教」 的な揶揄と同列のつもりで,宗教という単語を使った発言をしてしまったのは,さすがにマズかったなぁ.特に他意はなかったのですが).
しかし,上記のようなスレを知っている人が見たら,全く違う意味に取られて,とんでもない誤解をされてもおかしくないですね.心配になったので,念のため.
