Lisp Scheme Part40 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
速いに越したことはないなら一番速いやつを選ぶじゃん >>592
picrin のどういうところが好き? >>594
他の条件が同じなら速いやつを選ぶけどさぁ、
そんなの用途によるだろ。 実際のところSchemeでどんなプログラム書いてる?
具体的に晒せるものがある人いる? 晒せないが、S式で書いたテンプレートからHTMLに変換してた
CSSで過去の技術となったが
あとはC++に組み込みスクリプト >>594
schemeと俺を比べたら俺が遅いからあんまり意味無いんだよトホホ >>599
そもそも盛り上ってないこのスレを盛り上げるにはお前が身を削ってネタ投下するしかないだろ biwascheme http://www.biwascheme.org/ はページ上にREPLあるから遊べるかも >>444
実際の時間差はあまりないな
順位はかなり後ろだけど picrin のコア機能では unicode サポートなしで、後付けは可能なようにするという方針も提示されている
ので、コアだけのスピードで評価するのもアンフェアな気がする。
https://twitter.com/___yuni/status/504240324831477760 Python ってプログラマでない人にも使いやすいデザインなんだとさ。
数学屋や物理屋もプログラムを書くことはあるけど、専門家じゃないからな。
言語に関わってばかりはいられん。
綺麗な抽象化とか考えずに愚直に書いて動くってのはそれはそれで良い言語なんだよ。
VB とかな。
AI の核になるライブラリが出そろってきていろんな応用をする段階になると
Python の方が色んな人に使ってもらえるという意味で良いんじゃないか?
それに今の AI ってのは記号処理するのに柔軟なデータ構造が必要って感じじゃないだろ。
計算量を投入しまくって結果を出す機械学習とかじゃん。
広い意味では AI つってもやってることは違うよ。 Schemeが本当に美しさと強さを両立させようと思うんなら
速さを二の次にして仮想機械の仕様も標準に入れてしまえばよかった
Smalltalk-80のVMは美しかったが
RnRSのdenotational semanticsの記述はCOBOLのコードみたいで正直読みたくない Scheme の仕様ってのは業務マニュアルみたいなもんだよ。
たとえば「誰にハンコをもらえば進めていいのか?」みたいな手順は組織の秩序としてやらなきゃならないことだから
個人の創造性で決めれることじゃないし、仮にそれぞれの場面で最高の才能を発揮して根回ししたところで
正事の成果が良いものになるわけじゃない。
どうでもいいことはマニュアル通りにやってもっと大したことに力を入れようってのが業務マニュアルだろ。
逆に言えば創造の余地がある部分は決めつけてしまいたくないんだ。 lispworks 32bitを使ってて、fliを使ってwindowsのdllから関数を呼ぼうとするのだけど、
一部の関数だけがunresolved symbolだと言われて呼び出せない。
dll exported functipn viewerとかでみてみると、
ちゃんと関数を確認できるのに。
何でかわかる人いる?
おいどん、初心者やからわけわかめなのよ。
とりあえず、cffiでもできないかどうかと、ほかの処理系ではどうかを試そうとは思うのだけど、
なんか知ってる人いたら助けてー >>609
呼び出せなかったのは具体的にどの関数?
確認した範囲で呼び出せている関数も書いてもらえれば
何か違いを見出せるかも >>610
windowsのdllってのは適切な言い方じゃなかったかも。
具体的には、趣味で下記のライブラリをlispworks上で使いたいと思っているんです。
ttp://www.astro.com/swisseph/swephinfo_e.htm
ttp://www.astro.com/ftp/swisseph/
ここのsweph.zipにWindows 32bit用のdllがあるのですが(swedll32.dll)、
lispworksのfliを使って呼び出そうとすと、呼び出せる関数と呼び出せないのがあるんです。
ただ、私、lispもcもwindowsプログラミングも素人なので、何が問題なのかもよくわかってません。
後ほど、呼び出せる、呼び出せない関数の例や、その定義等含め書いてみます。
なにかアドバイスありましたらいただけますと幸いです。 609です。
うまくいく例とダメな例を挙げてみます。おそらく皆さんは全く興味のないライブラリだと思うので、質問するのも恐縮ですが。
問題なく呼び出せる例:
CL-USER 1 > (fli:register-module "swedll32.dll")
"swedll32.dll"
CL-USER 2 > (fli:define-foreign-function (swe_julday "_swe_julday@24" :source) ((year :int) (month :int) (day :int) (hour :double) (gregflag :int)) :result-type :double)
SWE_JULDAY
CL-USER 3 > (swe_julday 2001 1 1 0d0 1)
2451910.5D0
CL-USER 4 > (fli:define-foreign-function (swe_calc_ut "_swe_calc_ut@24" :source)
??? ((tjd_et :double) (ipl :int) (iflag :long) (xx (:reference-return (:c-array :double 6))) (serr? (:reference-return (:ef-mb-string :limit 256))) ) :result-type :int :lambda-list (tjd_et ipl iflag &aux? xx? serr))
SWE_CALC_UT
CL-USER 5 > (swe_calc_ut (swe_julday 2001 1 1 0d0 1) 0 0)
4
#<Foreign-Array :DOUBLE (6): addr #x02189F08>
"SwissEph file 'sepl_18.se1' not found in PATH '\\sweph\\ephe\\'
using Moshier eph.; " 今度はダメな例です。
CL-USER 6 > (fli:define-foreign-function (swe_version "_swe_version@4" :source) ((sver (:reference-return (:ef-mb-string :limit 256)))) :result-type :pointer :lambda-list (&aux sver))
SWE_VERSION
CL-USER 7 > (swe_version)
Error: Foreign function SWE_VERSION trying to call to unresolved external function "_swe_version@4".
? 1 (abort) Return to level 0.
? 2 Return to top loop level 0.
Type :b for backtrace or :c <option number> to proceed.
Type :bug-form "<subject>" for a bug report template or :? for other options.
CL-USER 8 : 1 > :c 1
CL-USER 9 >
一応、自分なりに調べてソースファイルからdefファイル使ってコンパイルしなおしたりもしたのですが、
やはりだめでした。もっとも素人なので意図していることができているかどうかも怪しいのですが。。。
もし何かアドバイスありましたらお願いします。 612訂正
誤:
>CL-USER 4 > (fli:define-foreign-function (swe_calc_ut "_swe_calc_ut@24" :source)
>??? ((tjd_et :double) (ipl :int) (iflag :long) (xx (:reference-return (:c-array :double 6))) (serr? (:reference-return (:ef-mb-string :limit 256))) ) :result-type :int :lambda-list (tjd_et ipl iflag &aux? xx? serr))
>SWE_CALC_UT
不要な?がはいっちゃいました。
正:
CL-USER 4 > (fli:define-foreign-function (swe_calc_ut "_swe_calc_ut@24" :source)
((tjd_et :double) (ipl :int) (iflag :long) (xx (:reference-return (:c-array :double 6))) (serr (:reference-return (:ef-mb-string :limit 256))) ) :result-type :int :lambda-list (tjd_et ipl iflag &aux xx serr))
SWE_CALC_UT >>609です。自己解決しました。
defファイルを使ってソースファイルからコンパイルしなおしたら
問題なく呼び出せるようになりました。汗
これまでも何度かVisual Studioからコンパイルを試していて、
dllは問題なく作成されるものの、一部呼び出せない関数があり、問題は解決しませんでした。
しかし、今回コマンドラインからコンパイル、リンクすると、なぜかうまくいきました。
結局、何が問題だったのかはわからないのですが、
とりあえず利用で来るようになりましたので、ご報告です。
お騒がせしました。。 そういやピンボールゲームSchemeの人、ピンボールも放置してるし死んだのかと思ったら
Twitter社に入ってたんだよな。 >>605
今のAIはPythonが完全に主流だね
>>606
そりゃ大多数にはLispより
Pythonの方が使いやすいだろう >>617
ISLispの話ぜんぜん聞かないけど
Clojureとかの方が圧倒的に普及してるんじゃね そもそも本質的にLISPはAIとは関係がないぞ。
未だにAI=LISPなどと言っている輩はだめだと最近まで言われていたのにな。
Pythonだってライブラリがあるかないかというだけの理由であって
AIはスクリプト言語とは無関係だから。みんな誤解している。
AI言われる以前からPythonはあっただろ(w マッカーシが AI 研究者だったこともあって、
実際に AI 研究に使われたのと、
その流れで AI 分野での利用実績は有るけど、
言語仕様的に特別 AI に向いてるってことはない。
ただ、当時のプログラミング言語っていうと Fortran とかの時代だから、
それで柔軟なデータ構造を必要とする記号処理をするのはつらかっただろうし、
その中で選ぶなら LISP は圧倒的に AI 研究に向いてたとは思う。 >>622
本質的に関係ないとまで言いきっちゃうと
それはそれで違う
Lisp(とProlog)は記号処理に向いてたから
一昔前のAIブームで利用された
>>623
記号処理がしやすいんだから
結局向いてたんだよ >>624
あ、 >>623 の「特別 AI に向いてるってことはない」の前に「今では他と比べて」 を付け加えといて。
今なら Ruby や Python くらいでも記号処理をする上で LISP よりすごく不利ってことはないと思うって話。
まあ不向きの部分もあるかもしれないけど、それ以上のメリットがある部分もあるし、それはバランスの問題ってことで。
逆に 今じゃ LISP も普通に汎用プログラミング言語として使いうるわけだし、
あまり AI を強調して LISP を紹介するようなのがあってもなんかもにょっとすることあるよね。 書籍や情報が多い少ないだけでも、向いてる向いてないと言われるだろう AI 分野であろうとなかろうと言語の盛衰があったっていう単純な話かもね。 そのAIってのが曲者で、単なる構文解析やエキスパートシステムじゃん。
それは単なる文字処理と機械のモノマネでAIじゃないですよ。
上の人も書いているけど、今だからスクリプト言語がある。当時はそれがなかったから
LISPが応用分野の開発の道具として開発され選択されたというだけ。
世界初の難解言語であるが、関数型のLISPはAIとは本質的に関係はないですから。
Prologも関数型のように基本となる仕組みが手続き型と違うのであってそれが評価されるのであり
本質的にはAIとは関係が無い。 LISPに限らず定義が曖昧なAIなどという話を持ち出すことがいかにデタラメで間違いであるかに気付くべき。
AIという呼称で、いかにLISPが誤解され続けて来たのかを問題視するべき。
失敗事例も多く、何十年も前から存在している技術なのに今更AIなど言うのもおかしい訳。 >>628
>>629
いや一般的なジャンル区分では
エキスパートシステムはAIでしょ
強いAIは実現できてないけど
弱いAIをエキスパートシステムと呼んでる
定義が曖昧とか言っておいて
自分でオレ定義使ってる気がする MITの人工知能研=Lisperの巣というイメージはもう古いのかな あとシグマの時代だったか、テレビで日本人のAI研究者が
マクロが使えるから人工知能に向いてる的なコメントしてた記憶が 今のAI開発に言語の自己プログラミング能力なんて求められてないでしょ >>633
今のAIとLISPが生み出された時代のAIとは全く違うからねえ
今のAIは本質的にはパラメータの最適化だよ
ところが当時のAIは記号処理(数式処理…つまり数式のままの微分や不定積分とか…だって
70年代初頭頃まではAIのテーマだったんだから)が中心で、その記号処理がAIに求められた時代に
科学技術計算向けのFORTRANやALGOLあるいは事務計算向けのCOBOLといった本質的には数値計算しか
できない言語しかない時代に、ATOMの概念を持ち込んで更にリストの任意の入れ子のデータ構造によって
記号のプログラム上での直接的な表現とそれら多数の記号から成る複雑な構造(特に言語の構造として
Chomskyの主張した句構造)の処理をサクサクと書けるLISPは当時の人々の眼には画期的に映ったのは
容易に想像がつく
要するに「AI」という言葉の表す内容とその研究の推進に必要な技術がLISPが生まれた時代と今とでは全く違うと
いうだけの話 AI って言葉が広すぎるってのもあるけど、
LISP ってのも初期と今じゃやっぱり違うやで。 AIの意味自体はほとんど変わってないやろ。研究すすんでちょっと内容が豊かになって、訳のわからなさがふえて、短期目標がいろいろ設定されて、研究予算獲得やもの売るための宣伝文句としてのAIのイメージがかわってきただけ。
今も昔もLispでAIやるのは楽しい(と思ってる人がいる)というとこだけが変わらん。 >>マクロが使えるからAIに向いている
頭がおかしい?
別の文脈で言えば、マクロアセンブラが使えるからAIに向いているのか?。
その人間の勘違いさに気付くべき
>>636
数式処理は別にしても今なら記号処理はスクリプト言語で可能な話。それをAIとは言わないでしょ。
Siriなんて原理は人工無能ですよ。昔からあったでしょ。本気でAIと思っているなら勘違いもはなはだしい。
>>638
それはLISPとは関係ないから 海外でやっている人工知能の対話実験は、単に人工無能の二台並べて会話させているだけでしょ。
それのどこが先進的で時代先取りのAIなんですかね?
>>638のような話はニューラルネットといって昔からあったし今更な話題でしょ。
画像認識なら別にニューラルネット使わなくともあるでしょ。
グラフのフィッティング実演見せてこれがAIですという場面見るとシラけるのですよね。
そんなものは昔からフィッテングアルゴリズムあるし、AI違うでしょ。 人工知能って言いながら実体は
昔からあるアルゴリズムだったり
人工無能だったりするのはそうなんだが
たんにハードルあげて
こんなのくだらないって
こき下ろすのも簡単
既存のアルゴリズムでも
実際に少しでも精度を上げるのは
すごい大変だし大事なことだよ >>642
なんかズレてる気がするな。
ある程度手法が確立してひとつの分野になったものをいまだに AI って読んでるのに違和感があるってのが >>641 の言ってることなんじゃないの?
ニューラルネットワークの界隈では大した成果なのかもしれないけど、 AI としてのインパクトに欠けるってのは両立する話で、
それをこき下ろしているといって批判するのはちょっと違うでしょ。 >>640
> >>636
> 数式処理は別にしても今なら記号処理はスクリプト言語で可能な話。それをAIとは言わないでしょ。
だから今はどうかでなく、1970年代初頭辺りまでは数式処理、特に不定積分は人工知能研究のテーマと看做されてたんだよ。
更に言えば、1950年代はコンパイル技術の研究はAIにおける自動プログラミングというテーマだったんだよ。
当時はそういうテーマも人工知能研究の一環として研究されていたという歴史的事実が厳として存在しているということだ。
それら歴史的事実に対して、今はどうだからとか、Siriが人工知能でなく人工無能だからとかは全く関係ないし反論になっていない。 mccarthyは 1959 年から programs with common sense っていってる。
おまえらこれの意味わかった上でAIがどうのこうのっていってるの?
歴史云々するならちゃんと原典も読めよ糞が 渋谷Lispとかの勉強会、以前は誰でも発表できたはずなのに
今は有名人以外はお断りになったの? Lisperなんてマニアックな奴が多いから
相当な知識がないと発表できないだろ 聴衆のレベルが高いことがわかっている場所でアホなことは言いたくないだろうし、
そういうところで気後れしやすい素地はあるのかもしれんなぁ。
わかってる人には今更すぎることでも知りたい人はいると思んだが。
レベルが高すぎると思うんならそうでもない人向けの勉強会を開催してもいいんですよ。 >>647
ほんと何から何まで他人のせいにしてて2chの化身みたいな意見だな
誰一人おまえの邪魔なんかしてないから.おまえが勝手に障壁つくってるだけだから. 初歩的な質問いいっすか?
ドット(.)とかカンマ(,)を標準入力で文字列として受け取るにはどうすればいい?
readじゃ無理ですよね? ボードゲームの盤面を表したような、空白で区切られた複数文字を受け取ることを想定してたんですが、read-lineで受け取ってsplitとかするのが無難ですかね 空白で区切られているのにカンマやピリオドも出てくるの? セミコロンやカンマで区切られた文字の中に空白が入っていることもある形式って意味かな? >>647
むしろshibuya.lispは事前審査も何もないし、入門してみた的な内容でも全然大丈夫だと思うぞ。LTでもいいし。
発表登録も単にconnpassのページのコメント欄で表明するだけだし。 記号処理ってC言語で言ったらどういう処理のことですか? 記号処理は文字列処理のうち
人工知能の分野に関係する処理
たとえば機械翻訳とか コンパイラの字句解析、構文解析みない処理といことですかね。
Lispはそういうのが得意なんですか? まだ関数型言語の実装イメージがよくわかりません。 そういうコンパイラなどの言語処理系も記号処理と言える
Lispは言語処理系の実装が得意 LISP言語の設計は人工知能とはまったく関係がない。
機械翻訳は翻訳であって人工知能ではないが、LISPの記号処理の使用例でもない。
コンパイラはコンパイラ技術であって記号処理ではない。Cで書かれた処理系は幾らでもある。
だからといってCが記号処理得意なんですか?違うでしょ?
LISPはコンパイラ処理が得意という訳ではない。LISP製コンパイラを見たことがない。 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 だって使うだろうし、
時代の変化とそれに合わせた適材適所っていう当たり前の話なんだよね。 ■ このスレッドは過去ログ倉庫に格納されています