1 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:52:46 ] lispを触ってみたい入門者のQ&A 初心者のQ&A 本スレでは恥ずかしくて聞けない人のQ&A 本スレは高度すぎて割り込めない人のQ&A linuxでなくてwindowsでやりたいんですが・・・Q&A lispを使用してC#やJAVAの代替にするための方法(おまけ) ま、ゆっくりたりましょう。 「いいものの本質は、いかなる時代においても変わらない」byパワーズ (list (url pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1) (url pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2) (url pc11.2ch.net/test/read.so/tech/1181479267/l50 :part 3))
101 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 21:12:36 ] どんな略し方をするのだ
102 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 23:45:08 ] ANSI COMMON LISPを読みはじめたのですが、 初めの、ランレングス符号化?で nextが使えるのはなぜですか? call-next-method だとおもい、書き換えたら動いたのでこっちが正しいと思うのですが…。 お願いします。
103 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:09:12 ] >>102 それだと持ってる人しか答えられないから コードコピペしたほうがいいと思うよ で、あれは let で局所変数 next に car lst を設定してる
104 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:14:37 ] , - ,----、 (U( ) | |∨T∨ (__)_) ありがとうございました。letを見てませんでした。
105 名前:デフォルトの名無しさん [2008/02/29(金) 12:45:22 ] WindowsXP でLispプログラミングの勉強したいんだけど まずどうすればいいかさっぱり。 助けてLisper!!
106 名前:105 [2008/02/29(金) 13:28:07 ] ttp://sourceforge.net/project/showfiles.php?group_id=1355 これつかってみるね!
107 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 13:29:29 ] いくつか無料で使える処理系があるのでそれを導入してください。
108 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:32:04 ] これ使えよ www.gigamonkeys.com/lispbox/
109 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:57:05 ] >>105 Ubuntuを入れて sudo apt-get install clisp するだけ
110 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:03:46 ] >>105 ntemacs+slime+clispにするか、 xyzzyにするか 好きな方を選んでください。
111 名前:105 [2008/03/01(土) 18:05:03 ] >>110 XYZはちょっと・・・ 今の一軍エレメンタルヒーローで完成してるんで
112 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:31:22 ] >111 「エレメンタルヒーロー」って何? "xyzzy"の名前の由来知ってる? Wikiを読むとすぐ分かるけど、ちょっと面白いよ。
113 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 20:36:09 ] >>105 GCL or SBCL + ChezEdit-NT
114 名前:105 [2008/03/01(土) 23:17:03 ] >>111 俺のふりをするな俺のふりをw xyzzyの本がジュンク堂池袋支店にあったから 読んでみたけど、 ショートカットキーで動かすのがデフォっぽいから 勉強にはclispがやっぱ一番ベストかなぁ ていうかLispすごいね。 Lispの本読んだり、家でいじってたときは、 「戻り値を引数にしてさらに、その戻り値を〜」とか そんなんでプログラミングするとかアホちゃうかっ!! って思ってたけど、今日帰ってきてJavaっぽい言語である ActionScript3,0でプログラミングしてたら 「戻り値を引数にしてさらに〜」ってやりたいのに わざわざ一時的な変数つくって代入してとか クソめんどく感じた!! まだマクロとかλとかよくわかんないけど すげームダが無い言語っていう感じは伝わった! てか、Lispの書物少なすぎ
115 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:30:36 ] > 「戻り値を引数にしてさらに、その戻り値を〜」 これって、できない言語の方が珍しくない?
116 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:32:42 ] >>113 SBCLってWINでまともに動くようになったん?
117 名前:105 [2008/03/01(土) 23:53:52 ] >>115 う、そうかもしれない。 やっぱJavaとかでnewが絡んだりしたら 一時的に変数に入れるのは普通かぁ…
118 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 00:56:54 ] >>114 >今日帰ってきてJavaっぽい言語である >ActionScript3,0でプログラミングしてたら ECMAScript は C の文法をまとった Scheme と言われている様に、 Scheme の次に Scheme っぽい言語の一つだよ。 見た目に惑わされてはいけない。
119 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 01:07:19 ] >>117 こんなのが望みか? System.out.println(String.valueOf(new String(new StringBuilder().append('h').append("oge"))).intern());
120 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 01:07:28 ] JavaScriptにはクロージャがあるのあまり知られてないよな。
121 名前:105 [2008/03/02(日) 01:11:02 ] >>114 そ、そうなのか! なるほど、「ハッカーと画家」って本に Lispは良いプログラマーを育てるって言ってたことが なんとなくわかった気がする! って、Schemeなんて言語もあるのか… 色々あるんだなぁ。 ってSchemeはLispの方言の一つってどゆことだ?? んー… Lispの書物少ないから今度はSchemeあさってみるね!
122 名前:105 [2008/03/02(日) 01:12:48 ] うお、書き込んだら一気にレスが!w >>119 んーそういわれると、どっちが良いんだかわかんなくなってきた…
123 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 02:24:42 ] >>120 俺もつい最近JavaScripの凄さを知って勉強中。 ほんとSchemeっぽいわ。 function makecounter() { var number = 0; var counter = function(cmd) { if (cmd == "set") {number=arguments[1];return number;} else if (cmd == "inc") {number++;return number;} else if (cmd == "dec") {number--;return number;} else if (cmd == "get") {return number;} }; return counter; } var c0=new makecounter(); var c1=new makecounter(); WScript.Echo(c0("set",0)); WScript.Echo(c0("inc")); WScript.Echo(c0("inc")); WScript.Echo(c1("set",10)); WScript.Echo(c1("dec"));; WScript.Echo(c1("dec")); WScript.Echo(c0("get")); >>122 SchemeとLispの大きな違いは名前空間が同一か値と関数で別個になっているってとこかな。 あと念のためJavaScriptとJavaは違うからね。
124 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 09:10:22 ] >>121 schemeだったら、gaucheが良いよ。 確か近々、gaucheの入門書がでるはず。
125 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 10:04:28 ] >>116 SBCLはWindowsではまだまだみたい。 学習用、ちょっといじってみるならOK。 なにしろ高速。Lispが遅いなんてこたぁないよ。
126 名前:105 [2008/03/02(日) 12:10:55 ] >>124 うっ!Unixで動くのか… UnixってOSだよね?Windowsじゃ動かないかぁ なんかEclipceで動くプラグイン的なものをみつけたので それでやってみるね!
127 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:02:09 ] 登場した頃、JavaScriptの見た目がC++に似てたからなのか、クロージャとかApplyとか使いこなしてる人って見なかったな。 ほとんどのプラグラムはCとかC++の延長で考えられてると思う。というか関数型っぽい考え方はされていないと言った方がいいか。 JavaScriptはフラナガンの本が出版されてから再評価され始めたんジャマイカ?Schemerにはアルゴリズムを流用できるから使いやすい言語だと思う。
128 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:46:40 ] 向こう側のいいところは、どうやって実装するか理解していることだ クロージャはクラスをネストすれば作れることを多くの人が知っている
129 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:53:57 ] >>126 GaucheはWindowsでも使えるよ。 ただしcygwinというパッケージを入れないとダメだけど。 cygwinなしでも動くようにしている人たちがいたと思うけど どんな状態なのかは知らない。
130 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:53:59 ] ここ数年の JavaScript ≒ Scheme の元はこれかなぁ。 javascript.crockford.com/javascript.html こんなのもあるしね javascript.crockford.com/little.html Schemeっぽいのは作った人がこれなんだから、当然なんだけども(泣ける...) People invoke Scheme when talking about JavaScript. I was originally drawn to Scheme when Netscape recruited me in early 1995, but there was less than zero time to use it https://mail.mozilla.org/pipermail/es4-discuss/2007-November/001527.html
131 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:30:41 ] たしかに泣ける 日の目を見ていたのはJavaScriptだけじゃなかったんだな
132 名前:デフォルトの名無しさん [2008/03/02(日) 17:05:11 ] 「ハッカーと画家」の著者が Lisp の派生言語 Arc を先日発表しました。 Windows、Mac、LinuxでMzSchemeと言う処理系を利用しているそうです。 Windowsなら、DrScheme(MzSchemeのGUI環境)を使って Arcの処理系を導入できるようですよ。
133 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:27:38 ] GaucheはMingwで作られたやつもあるよ
134 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:34:20 ] JavaScriptのユーザってAjaxやDOMを使うのがやっとの人が多いのに、クロージャの作り方を多くの人が知ってると思うか?ありえないw
135 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:06:36 ] そいつらは「CとかC++の延長」にも「関数型」にも属さない「その他」だろう。
136 名前:デフォルトの名無しさん [2008/03/02(日) 18:18:43 ] かなり検索ヒットするよ。 www.google.co.jp/search?q=javascript+%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3
137 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:29:48 ] >>132 おまはや つ pc11.2ch.net/test/read.cgi/tech/1202098949/l50
138 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:59:42 ] >>135 世の中「その他」が圧倒的大多数な件w
139 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 00:19:38 ] いいかげんスレ違いだけども。 著名なライブラリ(prototype.js, jquery, YUI Ext ...) ならばそれなりに使ってる、関数返したり、apply 使いまくったりを クロージャというなら、だけど。 ただ、IE6 で DOM イベントにクロージャ使うとメモリリークするため (最新パッチなら直ってるのかな) 使う場合気を使ってたりする。
140 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 04:28:53 ] ECMAScriptスレ同様クロージャを勘違いしてそうな連中が大量に顔出してきたな……
141 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 06:06:03 ] 「してそうな」じゃわからんよ。 自分以外は馬鹿ばっか、っていう思春期みたいな思考でモノ言ってるようにしか見えん。
142 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 07:49:57 ] >>140 >関数返したり、apply 使いまくったり するのはレキシカルスコープありきの話なんだし、別段間違った理解でも ないのでは? 高階関数の使用のことを「クロージャつかう」、っていうのが駄目ってこと? まあ、CLじゃないからどうでもいいんだけどwwww
143 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 08:10:52 ] 高階関数とクロージャは別の概念だから、混同せず、 きちんと用語を使い分けるべき。
144 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 11:57:33 ] JavaScriptの関数は全てクロージャじゃん。 あれグローバルコンテクストすらオブジェクトで引き回し可能だから 参照の最適化困難だし。
145 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:19:15 ] >>144 javascriptって名前のせいでclass特化な言語に見られがちだけど実際はプロトタイプ指向の言語なんでどっちかっつーとLispにもっとも近い言語の一つじゃないだろうか? java,lispと比較したらオプティマイズやJITを行う場合Lispとあんまりアプローチ変えられないよね?
146 名前:デフォルトの名無しさん mailto:shine [2008/03/03(月) 17:41:52 ] Visual Basic.NET VS Lisp 全面戦争勃発ニツキ応援求ム
147 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 17:46:29 ] URLも貼らずに釣りとな
148 名前:デフォルトの名無しさん [2008/03/03(月) 17:48:05 ] チョンのあやかり創価学会 偽善者が政治活動、公明党 ニセ仏教、騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや カルトキチガイ・創価騙されバカ信者 カルト・キチガイ・偽善政治活動・公明党 カルト・キチガイ・偽善政治活動・公明党 カルト・キチガイ・偽善政治活動・公明党
149 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 18:00:40 ] 急速にスレの質が下がってまいりました ここらで燃料投下しとく? おk?おk?
150 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 18:22:25 ] >>149 俺が許可する 権限はないが
151 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:15:26 ] よし俺にまかせろ caddrの発音のしかたを教えてください
152 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:17:39 ] カッダー
153 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:21:16 ] じゃあcadddrは…?
154 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:22:59 ] カダッダー
155 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 20:07:34 ] カッダダダー
156 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 20:09:07 ] キャドディディアール
157 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 20:43:36 ] JavaScriptでクラス作ってみたよ。 なんかCLOSっぽいな。 >>153 キャドゥドゥドゥル
158 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:19:25 ] >>157 ソース
159 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:26:10 ] ずっとスクリプトは VBScript で書いてたんだが、Visual Studio 2008 で JavaScript をサポートする (インテルセンスとかが効くようになる) と書 いてあったので、なんかの展博の時にマイクロソフトの説明員に「もう、 VBScript は、やめるんか?」って聞いてたら、すごく困ってたがしつこく 聞いたら「まあ、そう言うことです。」と言う答えだった。 と言うことで、これからは JavaScript に転向しよう...。 って、ここ JavaScript のスレじゃなかったな、すまん。
160 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:53:32 ] 関数がATOMかどうか知りたいのですが、 (atom 'cdr) t (atom #'cdr) t 上はシンボルがATOMで、下は関数がATOMって事で良いんですよね?
161 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 00:43:19 ] (functionp 'cdr) nil (functionp #'cdr) t ところで、CLの半分の実装を含むCのライブラリがあるという噂を聞いたのですが どこで手に入りますかね?
162 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 00:51:04 ] functionpだったのか。 知らなかった。 #'が関数渡しだって事が思い出せて良かった。 161さんありがとう。 lispってたまに思い出したようにやるんで、いっつも忘れてる。
163 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 01:03:48 ] Guy Steeleって、Common LispとJavaの仕様を作ってるけど、思想的に全く別物だし、どちらが優れていると考えているんだろうね? javaの方が新しいから、SteeleはJavaの方が優れていると考えているのかもと私は思う。 Guy Steeleの頭カチ割って中見てみたい。
164 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 08:44:54 ] 答えはFortressで!
165 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 16:38:11 ] >>48 数値計算とかcommon lispでできるんですか? どんなコードなのかかなり興味あります lapackを呼ぶとか?
166 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 17:12:46 ] >>163 JavaはC++と競合させるためにつくったもので、Lispと競合するものではないって どっかでいってたよ、GLSが。 どこでいってたんだっけねえ。
167 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 17:48:28 ] 物事を脳内で比喩する時に lispで考えてしまう人は居ても Javaで行う様な人は居ないと思う。
168 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:01:29 ] >>167 オブジェクト指向はいると思う。 自分はそれです。 Lispは人生で4回は挫折しているから、Lispで考えるってことは無いな。 Lispはある程度覚えても、使わないからすぐ忘れる。再帰とかのアルゴリズムは覚えてるんだけどね。
169 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:20:48 ] >>161 ECLかな? ttp://ecls.sourceforge.net/ 素人なんでどれだけ実装できてるのかわからんのだけど ちっちゃいしWindowsでも簡単にビルドできたんで 最近これで勉強してます。 LispのコードをCに変換できるのが面白い。 あと.NETシェルで作れるHyperSpecのCHMが便利。
170 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 06:09:03 ] >>166 これ? people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg04045.html
171 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 13:07:56 ] >>170 それだったかもしれない。 でも案外いろんなところで言ってる気もする。 Frotressのインタビュッーでは、Fortressで科学計算コミュニティに JavaがCコミュニティーに果たしたような効果をもたらしたいっていってた。
172 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 23:19:27 ] すみません.質問です. packageのlockってどのような場合に使用するのでしょうか. また, (without-package-lock() (load "path-to-file") ... ) とするとロックが無視される?のでしょうか.
173 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 23:42:36 ] >>172 ご明察。その通りです。 でも、余程の事がない限りパッケージロックを破るよりは、 別にパッケージをつくったりシャドウしたりする方が良いと思われ。
174 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:07:43 ] 172です. >>173 コメントありがとうございます. Lispの場合プログラムを配布する際にはロックをかけるものなのでしょうか.
175 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 20:19:19 ] 処理系のCLパッケージのようにc再定義されると困るようなもの (carやcdrが再定義されるとこまるetc)には掛かっていますが、 普通のものには殆ど掛かっていないと思われます。 また、パッケージのロック機能自体オプションだったと思うので、 処理系依存です。
176 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 21:52:26 ] 172です. >>175 > 処理系のCLパッケージのようにc再定義されると困るようなもの なるほど,そう言うことですか. toplevelとpackageで混乱してます. もうちょっと勉強してきます. ありがとうございました.
177 名前:デフォルトの名無しさん [2008/03/21(金) 10:03:34 ] Common Lispは、Javaで言うBigDecimalのような十進数演算ができる ライブラリや関数はありますか?
178 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 10:18:08 ] BCD より Bignum で小数位置を適当に自分で持ってあげたほうがいいんじゃないかな。
179 名前:177 mailto:sage [2008/03/21(金) 10:50:37 ] >>178 どうもありがとうございます。 やはりそうですか。 Googleで調べてみたのですが、見つかりませんでした。
180 名前:デフォルトの名無しさん [2008/03/21(金) 11:12:05 ] 表示は変かもだけどratioで計算するのでは不満?
181 名前:177 mailto:sage [2008/03/21(金) 11:31:12 ] >>180 お金が絡むようなWebアプリに適用できるのか(簡単に書けるのか)、 調べているのですが、ratioでも適用できると思いますが、 十進数演算を素直に記述できるような標準的な ライブラリがあるのかなと思いまして。
182 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 12:06:32 ] maximaが大きい行列を実質扱うことできないと前に検索したblogに書いてあったのですが本当なのでしょうか?
183 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 19:03:50 ] 大きいの定義は。
184 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 20:28:33 ] うんこ/おしっこ
185 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 10:55:35 ] Common Lispの引数の順番は統一性がないのでしょうか? 例えば (etl オブジェクト インデックス) (gethash キー オブジェクト) となっていますが、 他の関数もこのように、てんでんばらばらなのでしょうか? 使っているうちに慣れると思うけど、なんだか美しくないなぁ。
186 名前:185 mailto:sage [2008/03/22(土) 11:25:52 ] Practical Common Lispを読み進めていったら By an accident of history, the order of arguments to gethash is the opposite of elt--elt takes the collection first and then the index while gethash takes the key first and then the collection. と書いてありますね。 他の関数は大丈夫なのかな?
187 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 11:58:26 ] みんな一度は考える事だな。でもまぁ、ハッシュと配列アクセスの引数が揃うと何かすごい進歩がある、 というならともかく、気分で非互換にするわけにもいかなかったんだろう。 まぁ次世代のLispの時には揃うかもね。 あるいは↓のように自分でなんとかするとか。コンパイラががんばれば効率はかわらんはず。 ;; c.l.l のスレより転載 groups.google.com/group/comp.lang.lisp/browse_thread/thread/40e7f65f415b0cd3/ (proclaim '(inline hashget)) (defun hashget (table key &optional default) (gethash key table default)) (defun (setf hashget) (value table key &optional default) (setf (gethash key table default) value)) どうしても許せん、ならSchemeとか…
188 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 12:21:45 ] Common Lispは惰性と妥協の塊だからしょうがない
189 名前:185 mailto:sage [2008/03/22(土) 15:49:42 ] >>187 どうもありがとうございます。 リンク参考になりました。 >>188 やはりそうですか。 JavaやRuby等の、比較的最近の言語から見ると 関数名や引数の順番の一貫性の無さが気になってしまいます。
190 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 16:20:14 ] 上の例のように関数名や引数の順番の一貫性の無さが気になったら 自分好みに変えられるのがLisp風。 むしろそこを気にかけてほすい。 気になった箇所を徹底的に自分好みに変更するのも勉強になります。
191 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 16:48:46 ] 一貫性が無い、のは事実だけど、 覚えることがそもそも少いから、あまり気にしたことないなぁ。
192 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:40:12 ] 「lisp」という単語でネットサーフィンしていたら「仕様記述からソース生成」などという言葉が出てきたのですが、ありえないですよね? ただの電波ですよね?
193 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:52:16 ] その「仕様記述」とやらによるけど、厳密さが十分にあれば可能ですよ。別にLispに限らないけどね…… S式があるおかげでフォーマットに悩まないとかマクロのおかげでコード生成が身近というあたりが利点かもね。 でも、あいまいな仕様でもLispをつかうだけで魔法のようにまともなソースができあがる、なんて話ならありえない。
194 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:12:38 ] あいまいでない仕様などそう簡単に書けないし、激しく無理がありそうな気がします。
195 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:16:07 ] >>192 Leeを思い出したww
196 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:19:50 ] 無理なものは無理だろうね。 元ネタがどこだなのかわからんから推測しか言えないが、厳密にかける世界の話だったんじゃないかな? ファイルフォーマット解析とか状態遷移とかコンパイラとか、仕様を厳密に記述するほうが自力でゴリゴリコーディング するより楽、という話ではないかな。
197 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:19:53 ] て言うか、「仕様記述からソース生成」なんて言うのは、文字列処理や リスト処理がたくさん出てくるので、Lisp 向き。 と言う時代もあったけど、最近の言語はどれもそれなりに文字列処理や リスト処理に不自由しなくなってきたので Lisp だからどうと言うこと は少なくなくって来た。
198 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:30:05 ] >>197 実行時にevalがあるような言語だけじゃないかな? lispだとマクロが化け物だから可能な領域ってのもあるからそこを前提にされると太刀打ちできない気がする。
199 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:30:16 ] >>192 仕様記述からプログラムが書けるとすれば、その仕様記述は(自然言語とかけはなれた) 曖昧性の無いもののハズで、それは完全にプログラムそのものだろ。 可能ちゃ可能だろうけど、それに何の意味があるんだ? といつも思う。
200 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:40:42 ] 発想が逆なんじゃないかな? 仕様を定義するほうが、プログラム書くより量的に少ない場合とか、 そうでなくても厳密な仕様をミスなく書き下す手間が自動化できてラッキーとか、 モデルチェッカとかでチェックした仕様をソースにできるとか、 図でプログラム読めない人(←でも業務とかその道のプロ)に漏れや抜けがないかを チェックしてもらって、そっからミスなくソースができてうれしーとか。
201 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:54:24 ] そもそも実用になっていないって事が良くわかった。