LISPって実際どうなの...at TECH
LISPって実際どうなの... - 暇つぶし2ch49:デフォルトの名無しさん
16/01/22 21:42:26.66 uxMuX/y7.net
しかし一ヶ月と少したった今、Lisp は関数プログラミングの明晰性を犠牲にしていると
考え出しています。Python のほうが、より明晰な関数プログラミング・スタイルで書け
ると考え始めました。
Emacs Lisp も簡単なものならば書けるようになってきました。でも階層構造さえ無しで
多数のグローバル変数を憶えなければならないのは古臭い言語だと感じます。
Lisp のを高機能にできる秘密はマクロにあるのだろうと思い出しました。自己書き換え
プログラムさえ書け、新たな構文を作り出せてしまうのですから。でも、このような
lisp macro は人智で制御できない領域に簡単に踏み込んでしまう地雷でもあります。こ
んな lisp macro に依存している lisp と そのライブラリには近づかないほうが良いと
考え出しています。

普通のプログラムを書くのならば Python の方が、関数プログラムなら Haskell のほう
がマシだと考え始めています。私の推測は誤っているでしょうか?

50:デフォルトの名無しさん
16/01/22 22:11:11.89 d8M8QDrI.net
このスレには近づかないほうが良いな

51:デフォルトの名無しさん
16/01/23 03:02:36.02 FFMD2tda.net
自己書き換えプログラムってどういう意味で使ってるの?
人智で制御出来ないって何を怖がってるの?
なんか叙情的っていうか論理的じゃない文章

52:デフォルトの名無しさん
16/01/24 23:54:11.89 YlUheVzc.net
>>51
Lispを齧り初めて、全能感を感じた奴が大抵陥る熱病みたいなもん。

53:デフォルトの名無しさん
16/01/25 15:44:16.15 u5H64Vmc.net
emacsでlispを書くのはparedit-modeが便利という一点

54:デフォルトの名無しさん
16/01/30 03:18:52.28 /yL7/idn.net
>>1
ブレブレミーハータイプ
結局なにも身に付かない

55:デフォルトの名無しさん
16/01/31 10:12:41.19 2lMtsceY.net
LISPerねぇ…

56:デフォルトの名無しさん
16/01/31 14:32:16.34 nkqZ2rBB.net
多い日も安心

57:デフォルトの名無しさん
16/01/31 22:43:58.95 qEntIMIg.net
阿澄佳奈

58:デフォルトの名無しさん
16/02/01 10:44:44.88 ZwVHcnBv.net
すぐには役に立たないが後で振り返ってみるとやっててよかった、になると思う>>LISP
武道でいう「型」みたいなノリだな

59:デフォルトの名無しさん
16/02/05 07:59:27.38 6t6ADPrg.net
武道もLISPも知らないくせにその例えはどうかとw

60:電波いっぱい
16/02/09 22:07:38.84 jMsR+HI1.net
>>49
ここでの LISP というのはCommon Lisp(CL)のことだと思われるので、そうだとして話をする。
CLはマルチパラダイム言語なので、CLの情報を探して関数型言語の勉強をするのには向かない。ほとんど手続き型の書き方をしているものもあるし、関数型らしく書いたのもあるし、DSLバリバリで宣言的に書いたのもある。
本当に自由なので、書きたいように書ける反面、どのように書きたいかわからない人にはどう書いたらいいかわからない。
エコシステムもあまり整備されているとは言えないから、実用的な物を作ろうとしても、なかなか情報に出会えない。
一通りいろいろなパラダイムに触れてどこかでで行き詰まりを感じたら戻ってみるといいことあるかもね。

61:デフォルトの名無しさん
16/02/09 23:19:41.89 wLcnim+T.net
>>60
LISP系言語で関数プログラミングをやりたいのならSchemeを使うのが良い

62:デフォルトの名無しさん
16/02/26 18:46:24.51 AKtOFowY.net
なんかこのスレはてなブックマーク臭くてキモい

63:デフォルトの名無しさん
16/03/31 21:46:31.24 ITnJ0pB2.net
Common Lispで何か作りたいなら,
まず適当な軽めの入門書をやった後,最近でたApressのCommon Lisp Recipesをリファレンスにするのがいいと思ふ.
GUIとかWEBとか,ライブラリの使い方もだいたい書いてある.

64:デフォルトの名無しさん
16/04/02 05:23:42.67 HVYESdUP.net
武道もLISPも知らないが阿澄佳奈は知ってる

65:デフォルトの名無しさん
16/05/01 16:08:10.24 tKi6j9CT.net
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
URLリンク(twitter.com)
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw

The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
13

66:デフォルトの名無しさん
16/05/04 14:47:47.35 70a3g/qK.net
Lispのmacroは凄いのかもしれないが
それを使う場面ってそんなにない
そのため他の言語を使うのが正解

67:デフォルトの名無しさん
16/12/22 19:17:47.24 E6IX4Vbz.net
わからないけど間違ってる!
こうですね

68:デフォルトの名無しさん
16/12/27 19:58:38.72 tyJ7Gcdt.net
RustとかJuliaとか、最近マクロ流行ってきてるよね

69:デフォルトの名無しさん
17/01/02 17:04:19.70 h7hZD8W/.net
今後どんな言語が現れようが、真のマクロはLispにしかないし
真のマクロを持っているならそれはLispなのです

70:デフォルトの名無しさん
17/01/02 18:28:47.86 1m/cK6rN.net
それって
構文木を直接いじれる言語は全て lisp ですって言ってるようなもんだけど
いいのかね。

71:デフォルトの名無しさん
17/01/02 19:26:42.79 h7hZD8W/.net
もちろんです

72:デフォルトの名無しさん
17/01/03 16:37:36.59 bj+lJcSh.net
S式の良いところに編集のやり安さがあると思う
pareditみたいな感覚でソースコードいじるには、カッコがどうしても必要

73:デフォルトの名無しさん
17/01/04 10:14:19.12 Fdq9YuTD.net
>>72
forthみたいに後置にすれば括弧無くてもなんとかなるよ。

74:デフォルトの名無しさん
17/01/04 11:16:26.87 0ISnzSv/.net
LISP
(+ 1 2 3 4 5)
FORTH
1 2 3 4 5 + + + +
LISPは括弧を数えるのが面倒
FORTHは演算子を数えるのが面倒
もっとも上のLISPの書き方はプリミティブでない実装の場合があるから
FORTHでも楽になる構文糖衣があるのかもしれないけど

75:デフォルトの名無しさん
17/01/04 11:22:27.50 ws9aPhGs.net
>>1
自分でemacs入れて試してみればええやん
なんなん?

76:デフォルトの名無しさん
17/01/05 14:37:26.40 IoFQoH8y.net
FORTHのコンパイラいじれる感じはマクロに近いものを感じる
後置や前置で騒がれるけど触ってみるとおかしいのはそこじゃない、という点でFORTHとLISPは似ている

77:デフォルトの名無しさん
17/06/22 20:42:33.50 uZsOvB/x.net
LISPを学ぶ最善の方法、
それはCのようなGC機能の無い言語で、
GC付きのLISPを実装して見ることだな。

78:デフォルトの名無しさん
18/02/20 01:45:30.62 KbMgozGm.net
それはLISPじゃなくて処理系実装の勉強方法だろ
LISPはもっと手軽に使えるものだと思うよ

79:デフォルトの名無しさん
18/05/23 22:12:02.57 Au5e7VGg.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
6G48C

80:デフォルトの名無しさん
18/07/04 23:51:51.51 gFgZc5FG.net
IHV

81:デフォルトの名無しさん
18/09/09 01:03:49.61 UehpSxem.net
今からLisp始めるってどうなの?

82:デフォルトの名無しさん
18/09/09 01:17:52.73 b63/Vgkc.net
>>81
それは筋が悪い

83:デフォルトの名無しさん
18/09/09 03:45:24.01 NnO4PjJt.net
>>77,>>78
Lispプログラミングの基本を学ぶには、Lispの適当なサブセットを決めて、そのサブセットのインタープリターをLisp自身で書くことだね
Lispのプログラムはリストの形をしているので、Cなど他の言語のように構文解析や字句解析で悩む必要はない
だからリストを処理するプログラムとしてインタープリターを書くことになるので、Lispプログラミングで最も重要なリスト処理の基本を学べることになる
まあ別にLispのインタープリターでなくてもリストによって表現された抽象構文木を扱うプログラムならば入門としては良い課題だと思うけどね

84:デフォルトの名無しさん
18/09/09 07:46:24.48 N103mDOh.net
>>83
マシンとしてはどこまで持ち上げ(lift)した?

85:デフォルトの名無しさん
18/09/11 22:00:19.84 cGLFa+nx.net
>>81
まずはelispから

86:デフォルトの名無しさん
18/12/03 18:23:20.15 5b9Emnvx.net
それは筋が悪い

87:デフォルトの名無しさん
18/12/04 01:44:56.40 ZSkJl4U8.net
>>36
コイツ今息してんのかな?www

88:デフォルトの名無しさん
18/12/04 08:05:30.38 XwTNxyUO.net
LISPなのLispなの、どっちなの

89:デフォルトの名無しさん
18/12/08 12:27:02.72 KVgBfK85.net
ここ1、2年でLISP関連の書き込みはめっきり減ったな
はちみつしかいないよ

90:デフォルトの名無しさん
18/12/08 16:59:17.62 ag0JcdkU.net
>>88
> LISPなのLispなの、どっちなの
まあ好きに使えば良いので決まりはない
常識的に言えば、現在はLisp
全部大文字のLISPは昔のLispのイメージだね
というのも1970年代はプリンタで小文字が出せないのは普通だったからアルファベットは大文字のみ
なので言語名も大文字と数字や限られた特殊記号のみ
というわけで、古くからある言語の当時のバージョン(例えば LISP 1.5 とか FORTRAN 77 とか)を強調したいとか「昔感」を強調したい場合は
全部大文字の言語名、LISP, FORTRAN, COBOL, ALGOL を使えば良い
そうでない場合(や当時のバージョンということを強調する意図がない場合)には、現代式の小文字を使った
Lisp, Fortran, Cobol 等を使えば良い

91:デフォルトの名無しさん
18/12/16 17:09:53.21 lVg1cTYK.net
>>90
なるほど~!
すごく勉強になりました。
ご回答ありがとうございます!

92:デフォルトの名無しさん
19/11/23 04:46:01 l4WHmfnE.net
並列化はどうなっているの?OpenMPとかのディレクティブをつかうの?
プロセス並列化はMPI?

93:デフォルトの名無しさん
20/11/24 15:18:15.99 nO0Ar+PL.net
はい

94:(u_・y)
20/11/24 15:45:26.70 gfNKbZsO.net
>>90
(u_・y)えっほんとに?
(u_・y)適当な事言ってない?
(u_・y)ジョンマッカーシーさんがミックストケースで書いた事はある?
(u_・y)ソース持ってきて?

95:(u_・y)
20/11/24 15:55:54.53 gfNKbZsO.net
(u_・y)>>87 uyという概念は常に宇宙とともに存在する
(u_・y)>87 お前がどこで何をしているか手にとるように分かるぞ
(u_・y)>87 「www」とあえて3つのダブリューを書いたのは
(u_・y)>87 自己承認欲求の現れだ
(u_・y)>>87 「w」これは自己肯定をしたい者
(u_・y)>87 「ww」これは1人の親しい友に認められたい者
(u_・y)>87 「www」これは2人以上の多くの人間に認められたい者
(u_・y)>87 お前は今、uyという仮想空間上の共通敵を叩く事により、大勢からの承認を得たいと考えている者だ
(u_・y)>>87
(u_・y)>>87 現実世界で得られない承認を・・・ネットで満たそうとしてるんだな・・・

96:デフォルトの名無しさん
20/11/25 17:29:16.86 NHQccPME.net
>>95
とりあえずこのスレ盛り上げて

97:デフォルトの名無しさん
21/01/15 13:03:49.25 XkGM5v4E.net
使えるようになるのは修羅の道だけどとりあえず入門コースやるのはマトモなプログラマの必修科目

98:デフォルトの名無しさん
21/09/04 14:56:17.80 DQYaENlA.net
>>49
> Emacs Lisp も簡単なものならば書けるようになってきました。でも階層構造さえ無しで
> 多数のグローバル変数を憶えなければならないのは古臭い言語だと感じます。
超亀レスだが
elispは動的束縛なのでletで同名変数を宣言すれば大域変数は隠され影響範囲が限定され
キーボード割り込みで大域脱出した時もunwind-protectで元に戻す必要はない
というUI記述言語として極めて良好な性質を持ってる

99:デフォルトの名無しさん
21/09/04 17:04:32.79 Q9qQqykt.net
>>98
それは動的束縛とは関係無い
defvarで定義された変数はスペシャル変数といって、letで束縛するとそういう挙動になるというだけだ
setqで(無理矢理)定義したグローバル変数はそうならない
ちなみに今のelispは静的束縛が実装されて、全てそれを使うようになっている
ただ、互換性を保つためにまだデフォルトにはなってないけど、時間の問題だろう

100:デフォルトの名無しさん
21/09/04 18:08:18.70 jSSzYM7r.net
スペシャル変数は動的束縛なんだから関係あるだろ
静的束縛では外から変数を注入するようなことは難しいし
自由変数をつかったら中断時に値を元に戻すにはunwind-protectのような機構が必要だって話

101:デフォルトの名無しさん
21/09/04 22:48:02.97 uKq8oRZn.net
>>100
いや違う
スペシャル変数のその挙動は、elispが動的束縛だったときと、静的束縛の時で何も変わってない
要するに、単にそういう機能が実装されてるというだけ

102:デフォルトの名無しさん
21/09/07 20:48:08.70 8Gi3qZOZ.net
>>99
> defvarで定義された変数はスペシャル変数といって、letで束縛するとそういう挙動になるというだけだ
> setqで(無理矢理)定義したグローバル変数はそうならない
Elispの話じゃないじゃないか

103:デフォルトの名無しさん
21/09/08 23:03:47.01 Z7F+3Q5J.net
おそらく 98 100 は 97 の
「キーボード割り込みで大域脱出した時も…UI記述言語として極めて良好な性質を持ってる」
という内容を解釈することもなくletで束縛した変数のシャドウイングについてはスペシャルでもレキシカルでも挙動に変化はないと言いたいのだろう
大域脱出やunwind-protectの話をしているのであさっての主張なんだが
何がどう関係ないのか次はコードで例示してくれ

104:デフォルトの名無しさん
21/09/09 23:10:01.54 ByNHohVX.net
>>98
elispはバッファーローカル変数も興味深い
スレッドローカル変数と意味論的にも近く
マルチバッファーセーフ←→マルチスレッドセーフ
という対比ができる
凄くシンプルな設計と実装で上手くこなしてる
standard-outputやnilストリームの使い方も上手い

105:デフォルトの名無しさん
21/09/10 16:13:07.64 y2IogSqT.net
--- 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)
--------------------------------
続く

106:デフォルトの名無しさん
21/09/10 16:14:14.79 y2IogSqT.net
-*- 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で束縛する挙動は静的動的束縛に関係無く同じ挙動だ
それが言いたかっただけ

107:デフォルトの名無しさん
21/09/10 16:22:31.87 y2IogSqT.net
>>104
バッファローカル変数は、他の言語で言うインスタンス変数と役割は同じだな
例えば、buffer-file-nameはバッファローカル変数で、バッファ毎に違う値になるけど、
本来ならばbuffer.file-nameのように、作成したインスタンス変数内(この例ではbuffer)に有るべきだけど、
Emacsはオブジェクト指向を採用しなかったので、グローバル変数をバッファー毎に違う値にする為に、苦肉の策と言えなくもない
LispでもCLOSのようなオブジェクト指向を全面的に採用していれば、バッファローカル変数の仕組みは必要無いものだった

108:デフォルトの名無しさん
21/09/10 16:29:15.85 y2IogSqT.net
CLOSだと(file-name buffer)で済む所を、elispだと
(with-current-buffer buffer
buffer-file-name)
と書く必要があって、CLOSの方がスマートだと思う
他にもelispのadviceも、CLOSのdefmethodの:before :afterを使えば似たような事ができるだろう(完全に同じじゃないけど)

109:デフォルトの名無しさん
21/09/11 14:40:21.99 WRGMhX/P.net
>>109
それじゃbufferがthisのような特殊な識別子になってるだろ

110:デフォルトの名無しさん
24/01/25 23:01:09.63 GdCzxGB4.net
人工知能言語として脚光を浴びた時代もありました


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch