夢のある言語、将来性 ..
883:デフォルトの名無しさん
08/04/18 00:55:57
メソッドチェーンできる言語だと、日本語っぽくなるというブログ記事を最近見たよ
第20回 日本語でおk | WIRED VISION
URLリンク(wiredvision.jp)
Ruby もいいけど Smalltalk でも、おk。 - sumim’s smalltalking-tos
URLリンク(d.hatena.ne.jp)
inforno :: 日本語プログラミング言語Scala
URLリンク(inforno.net)
POBoxの増井俊之さんが「日本語でおk」とかタイトルつけてて吹いたw
884:デフォルトの名無しさん
08/04/18 11:29:02
つ「日本語の語順と逆ポーランド記法」(水谷静夫)
885:デフォルトの名無しさん
08/04/18 15:06:37
>>883
Xの平方根の逆数を印刷する
> という具合に、処理の流れとプログラムの形式と日本語表現を同じ順番で簡潔に記述することができます。
> このように、実は日本語は計算機処理の記述にかなり適した言語であるということができそうです。
日本語のコメントがあると分かりやすい気がするのはもしかしてそういうこと?
なんか目からうろこ。
886:デフォルトの名無しさん
08/04/19 22:03:15
>>885
ifとかforとか制御構文を毎回日本語で書かされるとかなりゲンナリなんだけれども。
メソッド名とか関数名、強い意味をもった変数くらいに絞って日本語を使うと、
適切に構造化してるとかなり読みやすくはなる。
んで、日本語でメソッド名を書いてみると、割と解り易いメソッド名を付けやすいと思えると思うよ。
VBとかVBAとかの環境が手元にあるなら、試してみるといい。
887:デフォルトの名無しさん
08/04/19 22:25:45
入力がめんどい
888:デフォルトの名無しさん
08/04/20 00:44:12
全部のキーワードが日本語だと確かに面倒だけど。
メソッド名だけとかならそうでもないじゃないかな。
定義するのは一回だけで、そっからさきはインテリセンスでいけるし。
まあ、IDE使ってる前提があって、だけれど。
889:デフォルトの名無しさん
08/04/20 06:01:53
引数無く日報が呼ばれたときは昨日の日報を出力する。
という仕様から、
日報 :- 昨日(_昨日),日報(_昨日).
を生成する。ということは、「引数無く」の意味理解や、
「が」「呼ばれた」「とき」「は」「の」「を」「出力」「する」などを
捨象しなくてはならない。Prologの手入れはこのレベル。
nippo() {
date(&date);
nippo(date);
}
のようなコードはもう一段手入れが入っていて一枚仕様書が増えます。
ム板にこういう部分の話をするスレはあまりありませんが、
言語比較評価をするならこの部分も含める必要があります。
890:デフォルトの名無しさん
08/04/20 06:23:14
date(&date); ではなく sakujitsu(&date) に訂正します。
891:デフォルトの名無しさん
08/04/20 08:16:52
>>889
一方が漢字でもう一方がローマ字なのはフェアな比較じゃないね。
nippou :- sakujitsu(date), nippo(date)
読む気にならんよ、これは。
892:デフォルトの名無しさん
08/04/20 08:50:19
>>891
変数は大文字からはじめるからこうだな。
nippou :- sakujitsu(Date), nippo(Date).
別に俺は読みにくいとは思わんよ。慣れの問題じゃない?
初めてLispをみれば誰だって読みにくいと思うし、
Cのような中括弧使う言語ばっかし使ってたら
beginとendを使う言語を見たとき読みにくいと思う。
893:デフォルトの名無しさん
08/04/20 12:56:20
>>891
これは >>886 以下に対するレスで、Prologだと>>889の日本語表記が
当たり前です。これは、仕様とプログラムを近くに置きたいという
プログラマの意識の反映とも言えます。その意識から「必然的に」に
日本語になったのです。これに比べるとC系言語のソースコードからは
この意識をほとんど感じることができない。日本語だと読み易いか
とか、入力がめんどうだといった次元の話しかでてこないのはやはり
問題でしょう。
894:デフォルトの名無しさん
08/04/20 13:03:18
>>893
クラス名や関数名や変数名やメソッド名に日本語を使える言語は色々あるが、
それに対するPrologのメリットは?
895:デフォルトの名無しさん
08/04/20 13:18:07
>>894
日本語の使用の利点はこれはPrologに限らないことだと思いますが、
仕様書の切り貼りでプログラムが構成できることです。さらにPrologに
利点があるとすれば、一応裸の論理式ですから、比較的原文に近い姿に
なるということでしょう。
896:デフォルトの名無しさん
08/04/20 13:25:46
日報 :- 昨日(_昨日),日報(_昨日).
なんか日報という述語がカブってるように見えるのは気のせいだろうか。
まあ、それはいいとして、
日報
self.報告(new Date.昨日())
のほうが
「日報を提出するとは、昨日の日付けで報告を作成することである」
に近いと思うのだが、気のせいか?
897:デフォルトの名無しさん
08/04/20 14:35:41
そもそも日本語に近い表現が出来るプログラミング言語って理解しやすいものなの?
俺は日本語に似ていればいるほど逆にその差異が気になって
かえって理解しづらいと言うか、
むしろ日本語は日本語、プログラミング言語はプログラミング言語として
別物として考えた方が理解しやすいと感じるんだが。
898:デフォルトの名無しさん
08/04/20 15:25:46
>>896 最初の仕様が
"引数無く日報が呼ばれたときは昨日の日報を出力する。"なのだから
この場合仕方ないでしょうw
既に、
?- 日報('20080419').
という呼び方が既にあり、これでも面倒だという人がいて、
上記の仕様の追加要求がだされた。
?- 日報.
899:デフォルトの名無しさん
08/04/20 15:30:20
既に がダブって読み苦しかったですね。
一引数の述語が定義されていて、後から引数なしの述語要求がくる上記の
ようなケースは、実務ではしばしばあります。
900:デフォルトの名無しさん
08/04/20 15:39:11
昨日(_昨日)が入ることが自然に見えているうちは、
日本語に近いとかいう問題じゃなくて、
単にProlog教に洗脳されているだけでしょう。
>>896のほうがはるかにマシだ。
901:デフォルトの名無しさん
08/04/20 15:53:43
ロジカルなやつは英語ベースのASCII文字がいいけど、
大まかなやつは日本語名使えるとすごい分かりやすい。
ユーザー視点での基本設計レベルの構造を日本語で定義してやると、
設計書はむしろソースコードがあればよくて、ソースコードにコメントもいらなかったり。
まあ実際には一まとめにした設計書はどうしても必要になるだろうけど。
プログラミングでは普通日本語使わないし、ローマ字使うとまずその判別が必要になって読みにくくなるんだけど
UWSCてスクリプトは全角スペース使えるし変数名も関数名も日本語で定義できる。
完全な日本語プログラムは完全な英語表現と同じ問題があってややこしいけど、
コメントを入れたくなるような機能とか変数を日本語にすることでそこが際立つから
全体を見渡すときに一瞬で大まかな流れが理解できる。
>>897へのレスにしようと思ったけど完全日本語化が分かりやすいって意見じゃないからやめ。
長ったらしく書いたけど「>>896に同意」の一言でよかったかもしれない。
902:デフォルトの名無しさん
08/04/20 17:11:05
>>900
日報 :- 昨日(X),日報(X).
だって全然問題ないんじゃないですか。Xって論理変数を
用いて定義せよっていう仕様じゃないから、仕様の
なかにある語彙を用いて定義してみただけですから。
903:デフォルトの名無しさん
08/04/20 17:17:45
日本語の何が問題かって、
変換が面倒くさいことだな。
904:デフォルトの名無しさん
08/04/20 17:22:52
話のテーマと、どんどん離れてしまいますが、
日報(_出荷場所,_出荷日下限,_出荷日上限) :- ... <略>
のような意味を暗示した論理変数は実務的には意味があります。
このソースコードの字面から、
<input type="hidden" name="述語" value="日報">
出荷場所 <input type="text" name="出荷場所">
出荷日下限 <input type="text" name="出荷日下限">
出荷日上限 <input type="text" name="出荷日上限">
を自動的に生成する時に使いますね。
905:デフォルトの名無しさん
08/04/20 17:31:35
>>902
その「昨日(X)」という記述に何の疑問も持たないのなら、
それは技術的な議論をする資格を喪失していると言わざるを得ない。
906:デフォルトの名無しさん
08/04/20 17:32:25
>>904
その程度のHTMLの生成もできない言語のほうが珍しいという罠
907:デフォルトの名無しさん
08/04/20 17:41:30
>>906
何を元に生成するのですか?
908:デフォルトの名無しさん
08/04/20 17:43:13
>>907
それはむしろ>>904に聞くべき話なのでは?
909:デフォルトの名無しさん
08/04/20 17:56:07
1) ?- tell('日報.pl'),listing(日報/3),told.
で現在メモリーに定義されている日報の定義がファイル"日報.pl"に
書き出されます。(既に正確なソースファイルがあるならこの作業は不要です)
2) これを読み込んで解析し :- の左の
日報(_出荷場所,_出荷日下限,_出荷日上限) を切り出します。
3) これを更に解析して,関数名='日報',
第一引数='_出荷場所',第二引数='_出荷日下限',第三引数='_出荷日上限'を切り出します。
4) それぞれの引数の先頭の"_"を取り除いて、'出荷場所','出荷日下限','出荷日上限'
が得られます。
この四つの情報から、>>904が生成されます。
910:デフォルトの名無しさん
08/04/20 18:15:30
>>909
まさか、同様なことが手続き型言語ではできないと思ってるのか?
911:デフォルトの名無しさん
08/04/20 18:25:35
ですから、この四つの情報をソースコードのどこに書いておくのですか?
定型的に、かつ日常的に、手続き型言語でこのような情報をソースコードから
取り出せるように定義しているならば、何の問題もありません。
912:デフォルトの名無しさん
08/04/20 18:32:13
>>911
OO言語ならメソッドの宣言。
非OOの手続き型言語なら関数や手続きの宣言。
913:デフォルトの名無しさん
08/04/20 18:34:05
>>904 について誤解がありそうなので、追加説明します。これは
既にたとえばCUIで使い込まれている日報というプログラムがあり、
これをPrologサーバーに移して、Web参照を可能にしましょうと
いうような場合のはなしです。Prologのプログラムとしては
日報(A,B,C) :- ... という定義で十分なのですが、A,B,Cでは
ブラウザに表示するための情報としては不足ですね、というような
話なのです。
914:デフォルトの名無しさん
08/04/20 18:41:22
>>912
メソッドの変数名を日本語で書く習慣があり、その情報を
元に例えば>>904のようなプログラムが生成できるのなら、
問題がないどころか、型情報等、豊かなアサーションを
利用できるのですから、>>909 のようなケレンよりはずっと
上等なのではないでしょうか。
結局前のテーマに戻ってきましたね。
915:デフォルトの名無しさん
08/04/22 06:25:41
>>881
句構造文法的なアプローチでもそうなのでしょうか。
オブジェクト指向論者が日本語の名詞だけ指示して述語を省略する点を
日本語がオブジェクト指向向きであるとする主張の論拠にすることが
ありますが、これは私も感じます。仕様書レベルであっても述語が存在せず、
項を構成できないというケースはあります。
916:デフォルトの名無しさん
08/04/22 06:30:46
>>915
オブジェクト指向言語ではメッセージレシーバが先頭にくる。
これは欧米語の多数派である、主語が文頭にくる文法構造のあらわれ。
日本語のように主語が省略されることが多い言語はオブジェクト指向とは
あまり相性はよくない。
917:デフォルトの名無しさん
08/04/22 06:46:56
日本語も基本的に主語が先頭だと思うけど。
918:デフォルトの名無しさん
08/04/22 07:28:51
>>917がいい例だけど、「思うけど」の主語が抜けてるだろ?
英語でも口語では主語を省略することもあるが日本語ほど頻繁じゃないし、
書き言葉では主語は省略されずに先頭に明示される。
919:デフォルトの名無しさん
08/04/22 07:31:24
省略はあくまで省略だろ。
書こうと思えば書けない事も無い。
920:デフォルトの名無しさん
08/04/22 07:44:42
>>918
なにをするにも self.hoge とか明示的に自分を宣言しないと
いけないOOP言語が好きなようですね。
921:デフォルトの名無しさん
08/04/22 07:45:24
>>919
省略するのが自然か、省略しないのが自然か、それは重要な問題だぞ。
922:デフォルトの名無しさん
08/04/22 07:45:51
>>920
るび厨乙
923:デフォルトの名無しさん
08/04/22 11:27:33
>>920
ちょっと蒸し返すようだけれど、>>896 の self new を
どう評価するべきか迷って、結局触れないことにした。
OOPでは()や{}のように自然なものなんだろうな、と。
だけど、自然言語というか日常的な言語レベルから眺めると、
「え、これなんですか」って誰だって思うよね。
924:デフォルトの名無しさん
08/04/22 13:36:28
どんな種類の言語も、使ってる人には自然で、使ってない人には不自然。
自分が好きな言語だけが自然に思えたら危険サイン。
925:デフォルトの名無しさん
08/04/22 20:39:38
だから自然言語はエスペラント語を使えばいいのに。
926:デフォルトの名無しさん
08/04/22 21:51:29
>>925
あんな欧米語偏重の人工言語を認められるかよ。
927:デフォルトの名無しさん
08/04/22 22:45:19
>>922
蛇毒が体に回っているようですね
928:デフォルトの名無しさん
08/04/22 23:30:50
>>925
ぶっちゃけエスペラントは自然言語ではないと思うのだがどうか。
929:デフォルトの名無しさん
08/04/23 00:24:44
ぶっちゃけなくても自然言語じゃない
930:デフォルトの名無しさん
08/04/23 00:33:46
エスペラントよりロジバンだろ
931:デフォルトの名無しさん
08/04/23 00:54:39
ひんたぼ語を習得しないとあとで後悔するよ
932:デフォルトの名無しさん
08/04/23 06:41:37
まあ、機械翻訳が書きやすい言語が
夢もあって、将来性があるということよ。
933:デフォルトの名無しさん
08/04/23 06:59:43
Googleの悲しい「言語ツール」を開く度につくづくそう思う。
なにが、Pythonだ、Ajaxだ。
934:デフォルトの名無しさん
08/04/23 12:18:39
ロジバンに比べたらエスペラントは自然言語だろ
935:デフォルトの名無しさん
08/04/27 23:31:34
936:デフォルトの名無しさん
08/05/27 09:30:55
937:デフォルトの名無しさん
08/06/08 22:48:11
流れよんでないけど
VB以外は認めない
938:デフォルトの名無しさん
08/06/12 22:00:22
939:デフォルトの名無しさん
08/07/11 10:44:42
940:デフォルトの名無しさん
08/08/08 00:16:48
cobolのこともたまには思い出してあげてください。
941:デフォルトの名無しさん
08/08/08 01:29:58
夢があるかどうかは別として
1番壮大な夢を持ってんのはLispだな
942:デフォルトの名無しさん
08/08/08 02:18:20
最近Scheme始めたけど、面白いね。
で、数学勉強し始めたんだけど、集合論のあたりでもう苦しんでる。
個人的には、Scalaがいいと思うんだけど、あまり認識されてないみたいだね。
943:デフォルトの名無しさん
08/08/08 07:42:37
>>942
Scalaはシッタカ御用達言語として有名になりつつあるね。
944:デフォルトの名無しさん
08/08/08 18:39:15
C++の問題点は 禿 が理屈っぽいこと。
皆がお前みたいに理屈っぽくないって。
やはり、生産性に問題がある。
ちょっと、考えてみろ。あるプロジェクトに携わっている人間
がすべてお前みたいにわかっているわけじゃあない。
プロジェクトに新入社員がいれば、そいつがプロジェクトの中に
バグを仕込むテロリストになりうるんだぞ(本人にはその自覚が
なくとも結果的にそうなる)。そういうことを簡単に許してしまう
言語なんぞ、いくら切れ味がよくても害にしかならない。
もう、禿のC++0xなんていいって。
945:デフォルトの名無しさん
08/08/08 21:03:57
夢があるっていえば、アラン・ケイが最近のプロジェクトで使っている COLA 。
* cola ? combined lambda/object architecture
URLリンク(piumarta.com)
これと OMeta を使って Win の 2000分の1、Squeak Smalltalkの 10分の1の行数で
GUI 込みの個人向けシステムを書くという。
* Inventing Fundamental New Computing Technologies
URLリンク(vpri.org)
* Implementing Programming Languages for Fun and Profit with OMeta
URLリンク(www.stic.st)
946:デフォルトの名無しさん
08/08/09 06:15:36
JavaScriptやFLASH(Actionscript)
はいつまでもちますか?
947:デフォルトの名無しさん
08/08/09 07:02:11
もうピークは過ぎたね。
948:デフォルトの名無しさん
08/08/09 10:17:32
>>946
Googleの次の企業が出てくるまでは安泰だと思う。
最近は、FlashというかFlexが企業向けRIA技術として流行りつつある感じだな。
949:デフォルトの名無しさん
08/08/10 15:51:30
どんな言語は最初は夢がある。
だが、実際に使われ初めて実用性が求められると仕様が破たんする。
C++なんか、厚化粧で禿げかかっている中年の女。
C#もいずれそうなるだろう。あのMSの言語だから
950:デフォルトの名無しさん
08/08/10 16:10:12
どんな言語は最初は夢がある。
↓
どんな言語も最初は夢がある。
951:デフォルトの名無しさん
08/08/10 16:26:52
>>949
C++は最初から複雑怪奇な言語仕様だったぞ。
952:デフォルトの名無しさん
08/08/10 17:10:02
>>949
MSのC#つっても、トップがJ#とDelphiのヘジルスバグだからなあw
953:デフォルトの名無しさん
08/08/10 21:49:18
今はLLやってると夢が広がリングるな。
Pythonだと、ctypesでCのネイティブDLLを簡単に呼べたり、
IronPythonとCPythonの橋渡し頑張ってるひとがいたりするのみてると、
もうネイティブの領域も.Netの領域も美味しいところを拾い食いしながら
楽できるところはPythonでっていう書き方あれこれ考えるだけで楽しいよ。
自分がよく使うからPythonを例に出したけど、Rubyなんかでも同じような
状況の気がする。
954:デフォルトの名無しさん
08/08/10 23:47:52
>>953
どっちかというとpythonよりrubyの方がC関数作りは簡単かも。
まあGCの違いがほとんどなんだけどね。
955:デフォルトの名無しさん
08/08/16 01:16:46
>>949 C++がそうなったのは、MSの言語だったからということではなかろうに。
956:デフォルトの名無しさん
08/08/16 07:15:10
>>949
つまり、このスレ的には非実用的でマイナーな言語が一番
ということですね。
957:デフォルトの名無しさん
08/08/16 08:52:15
そういう夢の強さならWhiteSpace最強だな。
読めないプログラムを作りたい
という思いをシンプルに極めた最強の言語。
958:デフォルトの名無しさん
08/08/17 11:35:03
pythonって手続き脳用の劣化lispって感じがする(少なくともrubyよりは近い)
ライブラリさえ充実できればlispって十分LLの代用になると思うわ
()を上手く処理できるrlwrapクローンがあればシェルからの利用もできるし
>>954
つboost::python
これ使うと一気にその関係は逆転するよ
959:デフォルトの名無しさん
08/08/28 03:26:35
>>958
問題はなぜ50年近くも経って
ライブラリさえ充実できないのかということですね。
960:デフォルトの名無しさん
08/08/28 08:20:56
処理系が沢山あって何を標準にしたらいいかわからんからかも
961:デフォルトの名無しさん
08/08/28 08:53:22
ライブラリは沢山あるけど、どれも相互運用を何も考えてないからなあ。
結局つなぎ合わせるだけで結構なコード量になっちまう。意味なし。
962:デフォルトの名無しさん
08/08/28 09:07:24
関数型はいつでもコードなら書けるとライブラリにしない傾向があるね。
ちょっと自信過剰かな。
963:デフォルトの名無しさん
08/08/28 09:46:09
perlやCのライブラリを利用すりゃいいじゃんwww
みたいな考えなのかな?
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5244日前に更新/198 KB
担当:undef