Lisp Scheme Part40 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
LISPだからといって何でもAIと結び付けて考えるのが間違い。
コンパイラはAIですか?->違います。LISPはAIツールですか->違います。
これははっきりしてる。だから90-2000年代になってLISP==AIという認識が間違いだよねという
コミュニティの認識があった。今再びAIと叫ばれ、LISPに対する誤解が再生産されている。
全てをAIと表現して記号処理もAIとしてしまうと、コンピュータサイエンスも何も無い。
AIというバズワードこそが詐欺的だということです。 >>662
>LISP製コンパイラを見たことがない
それは知らないだけだろ
なんで開き直って確信してるのか
>>663
>コンパイラはAIですか?->違います
いやそれは現在の認識だろ
当時は言語処理系もAIだと認識されていた Common Lispはネイティブコードへのコンパイルも仕様に入ってなかったっけ? Lispで書かれたコンパイラ、、、そう言えば20年くらい前だったか Zeta C ってのがあったなぁ >>662
あーでもない、こーでもないと、外堀埋め的説明じゃなくて、
LISPとは何なのか、記号処理とは何なのか、AIとは何なのか、結論だけ教えて。 記号処理は記号を処理することだよ。
数値演算ではなく、たとえば数式みたいなものをいじってなんやかんや。
というのでなんとなくコンパイラ技術とも関係があるというのがわかると思う。
AI (人工知能) は人の知能を真似ようとするもの。
かつては (数値計算ではなく) 数式の変形をするのは機械には出来ない人間的なことだったから、
それをやるのは人工知能というカテゴリだった。
やり方がある程度確立した今では知能もクソもない、普通の数式処理じゃんって話になるから人工知能だとは思われない。
人工知能という言葉が指す具体的な技術の範囲は時代によって変わることになる。
LISP が直接的に得意としているのは名前が示す通りにリスト操作でしかないよ。
それが記号操作に便利だったし、記号操作はかつては人工知能の重要トピックだったって話。 lispアイデンティティの最後の砦はs式と同図像性であろう。 ライブラリがあるのと言語に組み込まれてるのは違うよな >>672
区別なく使える程度の抽象化能力が有ればどうでもよくなる。 あのさ、俺小学生なんだけど、HaskellとLispどっちが強いの?
おっさん、おばさん教えてよ。 どっちも信者しか使う必要を感じない方向での強さしかない
だから信者対策にどっちも舐めとけ >>677
それはたんに「仕事で使わざるを得ないランキング」に見える
Lispは最初から仕事で使われないから対象外なだけ
それに23位にClojureがあるし普及したらもっと上がりそう 入門サイトを読んでみたが必要性が分からない言語だな。 >>681
勉強用には最適だと思うけど実用性はかなり低いからね。
2020年のプログラミング教育必修化の教育に使ってほしいが可能性は0.0000000000000000000001%くらいか。 >>682
Lispは学習用言語に向いてるとは思う
実用できなくはないが大変
あとLisp教えられる教師なんか
ほとんどいないだろ
大学じゃないと無理 プログラミング言語の習得とは、
基本的なデータ構造とアルゴリズムが実装できるようになることだとすると、
この言語は向いてると言えるのか。 言語の習得のための言語ではなく、プログラミングを習得するための言語だよね >>683
MITでもScheme教えられる教師が居ないと言うのに 汎用言語じゃね? 特別に何かに特化しているわけじゃないと思うが。
レイモンドは「悟り体験のため」って言ってるけど、
グレアムはそんなこと言わずに使えばいいじゃないのという立場で莫大な収入を得ているので、
使いたいように使えよ〜 >>687
ああそうか
LispからPythonに変えたんだろ
もう大学でも無理って時代になってきたかもな 教える人がいないからってわけじゃないよ。
Sussman 自身もまだ現役だし。
Sussman が語った内容の日本語訳がここにある。
https://cpplover.blogspot.jp/2016/05/mitsicp.html >>690
「教わる人がいないから」
「教える意味がなくなったから」
って方が実態に近いかもな 主にC++な自分にとって、Lispはmodern C++が目指す最先端なんだけど、
Lispの人たちゃもうどっかに行っちゃってるのかね。 >>691
要約すると「総合的に考えて Scheme は入門講義ではベストではなくなった」って話で、
MIT での教育・研究全てから LISP が排除されたって話ではない (大幅に縮小はしてるかもしれない) ので、
Scheme が手頃な場面では Scheme だって使うだろうし、
時代の変化とそれに合わせた適材適所っていう当たり前の話なんだよね。 >>690
70の爺さまだぞ
モチベーションなかろ >>695
言語を変更するにあたってサスマン自身も主導者のひとりであるように書かれてる。
モチベーションがないならむしろそのまま続けるんじゃね?
だいたい LISP と言ってもフルセットの Common Lisp を隅々まで使おうってんじゃないんだ。
SICP で使ってるのは R4RS 時代の Scheme だぞ。
MIT の教員レベルならどうということのないものだろ。 >>696
>>690 の中で1997年の時点で教えるの嫌になったって書いてる。サスマン50歳でモチベ低下w >>697
「今のエンジニアリングに求められるエンジニアを育てる」ということにモチベーションがあったから、
「それに合ってないカリキュラム (SICP) で指導する」というモチベーションが低下したんだよ。 >>698
そうなのかw
今でもエンジン設計できるヤツとかエンジンの部品を開発できるやつは必要だな。
出来合いの部品買おうにも部品屋がいないと駄目だ。 >>699
MIT で SICP を使ってた講義ってのはあくまでも入門講義であって、それだけで課程が終わるわけじゃないかんね。
そこんところ誤解なきよう。 >>700
その入門レベルで挫折したわけだが
決して翻訳のせいなどではない >>701
入門って言っても MIT のレベルの入門だから仕方がない アメリカの大学は1〜2年生の時に適正ない奴をふるい落とすんだよ
ジョエルがJavaスクールのなんたらで書いているように MITは、入学は簡単、卒業は難しいと言うアメリカの大学の常識は当てはまらないな。
どっちも超難しい。 Common Lisp でscheme と同じ感じで...の使えるMatch マクロ使う方法ないですか? >>706
部分的に syntax-rules を再現したようなライブラリはこういうのがあるよ。
http://www.ccs.neu.edu/home/dorai/mbe/mbe-lsp.html
省略子は ... ではなく *** になってるのと、ハイジニック性は再現されてないことに注意。
マクロ展開器としてだけでなく、パターンマッチ関数を直接使うことも出来る。 >>704
それは両方の敷居が高い方にスライドしてるだけとも言えるのでは
つまり反論になってない cpsスタイルはクロージャの応用にすぎない。慣れれば難しくないし、jsのコールバック地獄の意味も分かってくる。
難しいのは各種継続オペレーターのセマンティクスと使いこなし。 SCM_VM_MAX_VALUES を適当な値に書き換えてからgaucheコンパイルすれば? そんなことはないはずだが、少ない多値を扱うときに特別な最適化をしていたような気がする (apply values (iota 25))でtoo many valuesとか出る
オセロとかチェスの座標(SQ_A1, SQ_B1, ... , SQ_G8, SQ_H8)に連続した数字を割り当てるにはどうすればいいでしょう? へー、そんな制限があったのか。
まあそんな多値を使うのはアレであることには違いないのでしょうがないといえばしょうがない。
識別子に連続した数値を割り当てるにはマクロが必要だが Scheme 的には R6RS を仮定するか処理系の拡張を使う必要がある。
Gauche を使う前提でいいの? racketとchickenではエラーが出ないのでgaucheやめるかも✋
でも
(define-values (SQ_A1 SQ_B1 ... SQ_G8 SQ_H8) (apply values (iota 64)))
と同じぐらい簡単な他の表現をぜひ知りたいです Gauche だとこういう風にすれば識別子の方の自動生成も含めて出来るけど、
なんかイマイチすっきりしないなー。
もっといい方法ありそうだと思うんだけど。
(use util.combinations)
(use gauche.sequence)
(define-macro (define-serial-numbers)
`(begin
,@(map-with-index
(^(i x) `(define ,(string->symbol (apply format #f "SQ_~a~a" x)) ,i))
(cartesian-product `((A B C D E F G H) ,(iota 8 1))))))
(define-serial-numbers) scheme勉強するならこのコード読んどけみたいなのあります?
せいぜい1000~2000行程度の綺麗に書かれてるコードを探してるんですが 3x3の0Xゲームの評価関数をこの言語なら簡単に書けると思いましたが無理でした。 言語のせいです。ぶっちゃけAI記述に向いてません。 今風AI記述向けDSLってできるよねきっと
内部でマクロ書く言語ならアドバンテージあるんじゃないか? >>725
マクロの有無(内部でマクロ書けるってのはC的なんじゃなくてLisp的なマクロって意味なのか?)がAIプログラミングと何の関係があるの? AI書いたことない人がLISPはAIに向いていると言ってるだけ。 お前の言うAIはAIというよりディープラーニング限定だろ >>727
LISPを知らない奴ほどLISPについて語りたがる、とどこかの先生が言っていたけど、
まさに君のことだな >>730
キミがどーんとLISPにおけるAI記述を語ってもいいんだよ。
まぁ書いたことないから低レベルな煽りしかできないんだろうけど。 80年台に腐るほど論文が書かれてるから勝手に探して読んでよ
集大成的なのは人工知能学会から出ている「人工知能ハンドブック」とか、まあ探せばいくらでもある
AI=ディープラーニング前提で話をしてんのかね >>732
1980年代の人工知能の研究成果で現在でも役に立ってるのあるのか? 80年代といえばエキスパートシステム。壮大な詐欺だったな。
>>732 で? キミはその詐欺に加担した一人? >>725
LISPのマクロってたいしたことないよ。それがLISPの本質でもないし。
ただインタプリタでC風にマクロが書けるというだけで。
マクロはマクロなんで、LISP内部で置き換えするだけで本質的なコード処理はしてないし。
それ(マクロ)が記号処理の本質ではないし。
何ならCのマクロ使って記号処理しましたって公開してみ。笑われるだけだから。
LISPの世界はこの程度の話すら理解できてないから誤解されているといっている訳。
だいたい最近までOpenSourceでScheme処理系開発してた連中が居たけれども、
彼らがAIと言った事はただの一つもないよ(w おいらも735に賛成。
エキスパートシステムは失敗と無駄そのもの。第五世代も。
現実には民間企業ではMSエクセルが経営支援機能を果たしている。
表計算がAIより機能を果たしている皮肉。 いやマクロ使わなかったら
Lisp使う意味ほとんどないだろ インタプリタだとかCのプリプロセッサマクロだとか、イカレ過ぎててツッコミどころすらわからんw ディープラーニングを機械学習と言えば詐欺臭はでない。人工知能なんて言うから投資詐欺に使う奴が出てくる。
既存のTCP/IP使ったクライアントサーバシステムをクラウドなんて言い出すのと同じ。 みんなschemeで何作ってるの?
これからscheme始める人は何作るべき? あとC++に組み込んで3Dモデルの作成しようと思ったがまだ上手く行ってない
しかし、おかげで継続が理解できてJSやC#のコルーチンが中でどう動いてるの、とか
本当に勉強になった
人に説明できるようになって仕事に役立ったよ CPUのコールスタックがわかってれば、スタックでなくヒープを使い捨てることにしたと思えば理解は容易いんじゃないか。
プログラミング言語の抽象度しか知らないならCPS変換から入るのが早道かも。 私も CPS で考えるのが早道だと思う。
CPS で考えた時に表出する環境の受渡しを普段の Scheme では暗黙にやってる感じ。 俺はコールスタックからだったが
>CPS
こういう捉えかたもあるんだね
知らなかった、ありがとう! 関数の戻り値が渡る先を操作できるだけじゃん。
トップレベルの特異性には注意だけど。 c++で継続はライブラリ使うだけで良いみたいだけど
C言語では継続はマシン語いじらないと実現出来ないの? >>760
C++ではライブラリで継続が使えるってどういうこと? ■ このスレッドは過去ログ倉庫に格納されています