LISPって実際どうなの... [無断転載禁止]©2ch.net (112レス)
上下前次1-新
88: デフォルトの名無しさん [sage] 2018/12/08(土) 12:27:02.72 ID:KVgBfK85(1) AAS
ここ1、2年でLISP関連の書き込みはめっきり減ったな
はちみつしかいないよ
89(2): デフォルトの名無しさん [sage] 2018/12/08(土) 16:59:17.62 ID:ag0JcdkU(1) AAS
>>87> LISPなのLispなの、どっちなの
まあ好きに使えば良いので決まりはない
常識的に言えば、現在はLisp
全部大文字のLISPは昔のLispのイメージだね
というのも1970年代はプリンタで小文字が出せないのは普通だったからアルファベットは大文字のみ
なので言語名も大文字と数字や限られた特殊記号のみ
というわけで、古くからある言語の当時のバージョン(例えば LISP 1.5 とか FORTRAN 77 とか)を強調したいとか「昔感」を強調したい場合は
全部大文字の言語名、LISP, FORTRAN, COBOL, ALGOL を使えば良い
そうでない場合(や当時のバージョンということを強調する意図がない場合)には、現代式の小文字を使った
Lisp, Fortran, Cobol 等を使えば良い
90: デフォルトの名無しさん [sage] 2018/12/16(日) 17:09:53.21 ID:lVg1cTYK(1) AAS
>>89
なるほど〜!
すごく勉強になりました。
ご回答ありがとうございます!
91: デフォルトの名無しさん [] 2019/11/23(土) 04:46:01.54 ID:l4WHmfnE(1) AAS
並列化はどうなっているの?OpenMPとかのディレクティブをつかうの?
プロセス並列化はMPI?
92: デフォルトの名無しさん [] 2020/11/24(火) 15:18:15.99 ID:nO0Ar+PL(1) AAS
はい
93: (u_・y) ◆e6.oHu1j.o [] 2020/11/24(火) 15:45:26.70 ID:gfNKbZsO(1/2) AAS
>>89
(u_・y)えっほんとに?
(u_・y)適当な事言ってない?
(u_・y)ジョンマッカーシーさんがミックストケースで書いた事はある?
(u_・y)ソース持ってきて?
94(1): (u_・y) ◆e6.oHu1j.o [sage] 2020/11/24(火) 15:55:54.53 ID:gfNKbZsO(2/2) AAS
(u_・y)>>86 uyという概念は常に宇宙とともに存在する
(u_・y)>86 お前がどこで何をしているか手にとるように分かるぞ
(u_・y)>86 「www」とあえて3つのダブリューを書いたのは
(u_・y)>86 自己承認欲求の現れだ
(u_・y)>>86 「w」これは自己肯定をしたい者
(u_・y)>86 「ww」これは1人の親しい友に認められたい者
(u_・y)>86 「www」これは2人以上の多くの人間に認められたい者
(u_・y)>86 お前は今、uyという仮想空間上の共通敵を叩く事により、大勢からの承認を得たいと考えている者だ
(u_・y)>>86 w
(u_・y)>>86 現実世界で得られない承認を・・・ネットで満たそうとしてるんだな・・・
95: デフォルトの名無しさん [sage] 2020/11/25(水) 17:29:16.86 ID:NHQccPME(1) AAS
>>94
とりあえずこのスレ盛り上げて
96: デフォルトの名無しさん [sage] 2021/01/15(金) 13:03:49.25 ID:XkGM5v4E(1) AAS
使えるようになるのは修羅の道だけどとりあえず入門コースやるのはマトモなプログラマの必修科目
97(2): デフォルトの名無しさん [sage] 2021/09/04(土) 14:56:17.80 ID:DQYaENlA(1) AAS
>>4848(2): デフォルトの名無しさん [] 2016/01/22(金) 21:42:26.66 ID:uxMuX/y7(2/2) AAS
しかし一ヶ月と少したった今、Lisp は関数プログラミングの明晰性を犠牲にしていると
考え出しています。Python のほうが、より明晰な関数プログラミング・スタイルで書け
ると考え始めました。
Emacs Lisp も簡単なものならば書けるようになってきました。でも階層構造さえ無しで
多数のグローバル変数を憶えなければならないのは古臭い言語だと感じます。
Lisp のを高機能にできる秘密はマクロにあるのだろうと思い出しました。自己書き換え
プログラムさえ書け、新たな構文を作り出せてしまうのですから。でも、このような
lisp macro は人智で制御できない領域に簡単に踏み込んでしまう地雷でもあります。こ
んな lisp macro に依存している lisp と そのライブラリには近づかないほうが良いと
考え出しています。
普通のプログラムを書くのならば Python の方が、関数プログラムなら Haskell のほう
がマシだと考え始めています。私の推測は誤っているでしょうか?
> Emacs Lisp も簡単なものならば書けるようになってきました。でも階層構造さえ無しで
> 多数のグローバル変数を憶えなければならないのは古臭い言語だと感じます。
超亀レスだが
elispは動的束縛なのでletで同名変数を宣言すれば大域変数は隠され影響範囲が限定され
キーボード割り込みで大域脱出した時もunwind-protectで元に戻す必要はない
というUI記述言語として極めて良好な性質を持ってる
98(1): デフォルトの名無しさん [sage] 2021/09/04(土) 17:04:32.79 ID:Q9qQqykt(1) AAS
>>97
それは動的束縛とは関係無い
defvarで定義された変数はスペシャル変数といって、letで束縛するとそういう挙動になるというだけだ
setqで(無理矢理)定義したグローバル変数はそうならない
ちなみに今のelispは静的束縛が実装されて、全てそれを使うようになっている
ただ、互換性を保つためにまだデフォルトにはなってないけど、時間の問題だろう
99(1): デフォルトの名無しさん [sage] 2021/09/04(土) 18:08:18.70 ID:jSSzYM7r(1) AAS
スペシャル変数は動的束縛なんだから関係あるだろ
静的束縛では外から変数を注入するようなことは難しいし
自由変数をつかったら中断時に値を元に戻すにはunwind-protectのような機構が必要だって話
100: デフォルトの名無しさん [sage] 2021/09/04(土) 22:48:02.97 ID:uKq8oRZn(1) AAS
>>99
いや違う
スペシャル変数のその挙動は、elispが動的束縛だったときと、静的束縛の時で何も変わってない
要するに、単にそういう機能が実装されてるというだけ
101: デフォルトの名無しさん [sage] 2021/09/07(火) 20:48:08.70 ID:8Gi3qZOZ(1) AAS
>>98
> defvarで定義された変数はスペシャル変数といって、letで束縛するとそういう挙動になるというだけだ
> setqで(無理矢理)定義したグローバル変数はそうならない
Elispの話じゃないじゃないか
102: デフォルトの名無しさん [sage] 2021/09/08(水) 23:03:47.01 ID:Z7F+3Q5J(1) AAS
おそらく 98 100 は 97 の
「キーボード割り込みで大域脱出した時も…UI記述言語として極めて良好な性質を持ってる」
という内容を解釈することもなくletで束縛した変数のシャドウイングについてはスペシャルでもレキシカルでも挙動に変化はないと言いたいのだろう
大域脱出やunwind-protectの話をしているのであさっての主張なんだが
何がどう関係ないのか次はコードで例示してくれ
103(1): デフォルトの名無しさん [sage] 2021/09/09(木) 23:10:01.54 ID:ByNHohVX(1) AAS
>>97
elispはバッファーローカル変数も興味深い
スレッドローカル変数と意味論的にも近く
マルチバッファーセーフ←→マルチスレッドセーフ
という対比ができる
凄くシンプルな設計と実装で上手くこなしてる
standard-outputやnilストリームの使い方も上手い
104: デフォルトの名無しさん [sage] 2021/09/10(金) 16:13:07.64 ID:y2IogSqT(1/4) AAS
--- test-global-variable.el ---
;;; -*- lexical-binding: t; -*-
(defvar foo "foo")
(defun print-foo ()
(print foo))
(let ((foo "FOO"))
(print-foo))
(print-foo)
(setq bar "bar")
(defun print-bar ()
(print bar))
(let ((bar "BAR"))
(print-bar))
(print-bar)
--------------------------------
続く
105: デフォルトの名無しさん [sage] 2021/09/10(金) 16:14:14.79 ID:y2IogSqT(2/4) AAS
-*- lexical-binding: t; -*-の有無で静的束縛を有効無効に出来るけど、
↓有りの場合
$ emacs --script test-global-variable.el
"FOO"
"foo"
"bar"
"bar"
↓無しの場合
$ emacs --script test-global-variable.el
"FOO"
"foo"
"BAR"
"bar"
1つ嘘ついたか…動的束縛の場合は、setqで作ったグローバル変数もスペシャル変数になるようだ
しかし、スペシャル変数のletで束縛する挙動は静的動的束縛に関係無く同じ挙動だ
それが言いたかっただけ
106: デフォルトの名無しさん [sage] 2021/09/10(金) 16:22:31.87 ID:y2IogSqT(3/4) AAS
>>103
バッファローカル変数は、他の言語で言うインスタンス変数と役割は同じだな
例えば、buffer-file-nameはバッファローカル変数で、バッファ毎に違う値になるけど、
本来ならばbuffer.file-nameのように、作成したインスタンス変数内(この例ではbuffer)に有るべきだけど、
Emacsはオブジェクト指向を採用しなかったので、グローバル変数をバッファー毎に違う値にする為に、苦肉の策と言えなくもない
LispでもCLOSのようなオブジェクト指向を全面的に採用していれば、バッファローカル変数の仕組みは必要無いものだった
107(1): デフォルトの名無しさん [sage] 2021/09/10(金) 16:29:15.85 ID:y2IogSqT(4/4) AAS
CLOSだと(file-name buffer)で済む所を、elispだと
(with-current-buffer buffer
buffer-file-name)
と書く必要があって、CLOSの方がスマートだと思う
他にもelispのadviceも、CLOSのdefmethodの:before :afterを使えば似たような事ができるだろう(完全に同じじゃないけど)
108(1): デフォルトの名無しさん [sage] 2021/09/11(土) 14:40:21.99 ID:WRGMhX/P(1) AAS
>>107>>108
それじゃbufferがthisのような特殊な識別子になってるだろ
109: デフォルトの名無しさん [sage] 2024/01/25(木) 23:01:09.63 ID:GdCzxGB4(1) AAS
人工知能言語として脚光を浴びた時代もありました
110: デフォルトの名無しさん [sage] 2025/02/02(日) 07:50:12.47 ID:DG2EYWWi(1) AAS
全部が式だし全部がオブジェクトなので分かりやすいよね。
小さい単位で動的に書き換えていけるので開発体験が良い。
動いてるプログラムのオブジェクトをインスペクタで調べたり中身書き換えたり、デバッガ内で値差し替えてリスタートとか楽しい。
Pythonとかより遥かに動的言語してるイメージある
111: デフォルトの名無しさん [] 2025/06/14(土) 06:59:12.29 ID:3Q/jS2n6(1) AAS
norvigやgrahamも言ってたが
PythonはほぼほぼALGOL風味構文のlispだわ
意味論という意味で
まあlispは構文の斉一性こそが大事なので半分だけ同意
112: デフォルトの名無しさん [] 2025/06/15(日) 01:00:42.54 ID:bHsxd1q/(1) AAS
Lispってまだあったのか。カァーとかクダァーとかね。
馬鹿馬鹿しいほどのかっこがあったね。今のエディタは
改善されたけど、昔は大変だった。
smalltalkとかprologはどうなったんだろ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.529s*