14:06:37 [g0000000'in]
14:09:59 <g0000000> usaturn: そうですね、なんか微妙なギャグがはいってますね。ギャグっていうか駄洒落というか
14:11:59 <g0000000> ということで今日は昨日の続きで、
14:11:59 <g0000000> (((( 第I部 基礎的な対話 - 第6話 再帰的なリスト処理を楽しもう ))))
14:11:59 <g0000000> から読みます。
14:30:54 <g0000000> 結構末尾再帰の記述が多いみたいですね
14:31:20 <g0000000> これの兼ね合いでリストでの計算量の話もでてきますが、説明はスムーズに繋っている感じです
14:32:16 <g0000000> eq・eql・equalもここで説明されますが、equalが再帰的なので、
14:32:22 <g0000000> ここで説明となったのでしょう
14:35:27 <g0000000> 章末のコラムで評価有害説を取り上げていますが、evaluation considered harmful は初めて耳にしました
14:36:44 <g0000000> 評価結果とリダクション結果が対応しないのが良くないってことらしいですが、元論文があったら読んでみたいですね
14:37:24 <g0000000> quoteは、lispの設計ミスみたいな話は、リフレクションの3-lispあたりでも言われてた気はします
14:40:18 <g0000000> (((( 第I部 基礎的な対話 - 第7話 制御構造や変数を使い分けよう ))))
14:55:06 <g0000000> cond・case・and・or等の制御構造の説明が主なところです
14:55:28 <g0000000> letと変数のスコープについての説明もあります。説明はかなり丁寧ですね
14:56:08 <g0000000> この話で第I部は終了のようですが、練習問題があるので、やってみます
15:39:18 <usaturn> お、進んでたー。ちなみにLispは途中で挫折した人です
15:40:17 <g0000000> ここまで読んでる限りでは、結構良い本ですね
15:40:33 <g0000000> 入門には良いんじゃないかと思いました。
15:41:25 <g0000000> なんというか、基礎知識的なところでは、ですが
15:41:40 <usaturn> なるほど~
15:42:17 <usaturn> 初めての人のためのLispを半分くらい読んで放置しちゃったんで、それ終わらせたら次はこっち読もうかなあ
15:42:42 <g0000000> 初めての人のためのLisp は、なんというか、古典的なlispの解説って感じですよね
15:43:00 <g0000000> 最後にeval作ってみたりとか
15:43:06 <usaturn> あー、そうなんですか?あんまりよくわかってない物で(^-^;
15:43:09 <usaturn> ほうほう
15:43:41 <g0000000> 好みが分かれるような気はしますが、
15:43:52 <g0000000> 対話によるCommon Lisp入門 の方が
15:44:07 <usaturn> 自分は解り易いなあと思ったんですが、根気が続かなかった >初めての
15:44:08 <g0000000> 普通の言語の入門って感じがしますね
15:44:18 <usaturn> ほー、なるほど。ちょっと期待
15:45:05 <g0000000> 処理系を作る方の入門なら、初めての人のためのLisp
15:45:15 <g0000000> 普通に言語としての入門なら、対話によるCommon Lisp入門
15:45:28 <usaturn> 処理系を作るためのって、それはハードル高いw
15:45:49 <g0000000> なんというか、lispって処理系作る人も多いというか、
15:46:10 <g0000000> そういう視点を重視する人達も多いんですよね
15:46:16 <usaturn> ええ、聞くところによるとLispでLispの処理系を作るのがスタンダードとか
15:46:29 <g0000000> そうですね、80年代とかは、教育でもそういう感じだと思います
15:46:37 <usaturn> なるほど~
15:46:48 <usaturn> 私はそもそもプログラミング自体が初心者なもので・・・
15:47:07 <g0000000> アプリ作る人は、そんなに処理系作るのにこだわってるわけでもないので
15:47:30 <usaturn> ええ
15:47:43 <g0000000> プログラミング自体の入門ってことだと、
15:48:04 <g0000000> やっぱり、位置付け的にアプリ作るのか、処理系の仕組みを学んで、
15:48:29 <g0000000> 別にアプリはどうでも良い派大別される気がしますねー
15:48:58 <usaturn> 私はアプリ作りたい派ですね~
15:49:02 <usaturn> 手続き型の概念的なところは、シェルとかVBSとかawkは書けて、今ちょっとPythonで書き始めた所です >初心者レベルの度合い
15:49:18 <g0000000> なるほど、そうなると、
15:49:30 <usaturn> classというかオブジェクト指向がさっぱりな感じです。もちろんCLOSとか何それてきな。
15:49:59 <g0000000> なるほど、closはまたこれが一般のoopとは
15:50:07 <usaturn> 違うわけですね(^-^;
15:50:10 <g0000000> 作法がかなり違うんですよねー
15:50:19 <usaturn> c⌒っ*^-^)っφ メモメモ...
15:50:40 <g0000000> javaとかとは、かなり違って、じゃあ、smalltalk的かというと、そうでもないんですよね
15:51:41 <g0000000> なかなか微妙なところですw
15:51:45 <usaturn> なるほど(^-^;
15:51:46 <usaturn> clos使わない人は使わない感じなんでしたっけ
15:52:09 <g0000000> アプリ書いてる人は、使わないってのは、まずないですねw
15:52:19 <usaturn> むむ、そうでしたか。
15:52:29 <g0000000> ポール・グレアムとかは、closが嫌いなので、
15:52:47 <g0000000> その辺りの宣伝が色々広まってる気がします
15:53:08 <usaturn> AnsiCommonLispでも結構後の方にのってる感じでしたっけ >clos
15:53:29 <g0000000> そうですね、というか、pg流の説明があって、結局説明してないに近いですねw
15:53:37 <g0000000> loopもそうですけどw
15:54:12 <g0000000> pgが好きでない機能はあまり説明されてないんですよね
15:54:16 <usaturn> そ、そうなんですかw
15:54:32 <g0000000> そうなんですよ、でも、偏ってても面白い本なんですけど
15:54:48 <usaturn> なるほど~
15:54:51 <usaturn> どっちにしろ、あの本は自分にとってハードル激高すぎて読めませんでしたw
15:55:34 <g0000000> まだ、読んでないですが、対話によるCommon Lisp入門は
15:55:40 <g0000000> closの説明もちょっとあるらしいので、
15:55:55 <usaturn> おお、目次もあんまり見てなくて気づかなかった
15:55:58 <g0000000> 対話によるCommon Lisp入門 → ansi clって流れも良いかもしれないですね
15:56:21 <usaturn> c⌒っ*^-^)っφ メモメモ...
15:56:26 <g0000000> lispの哲学みたいなのを学ぶには、初めての人のためのlispって感じでしょうか
15:56:36 <g0000000> あと、アプリ書きたいなら、実践Common Lispとか
15:56:54 <usaturn> 12話がオブジェクト指向みたいですね >対話
15:57:25 <usaturn> そう、Lispの本、買うだけ買って全て積読 >実践とかも
15:57:31 <g0000000> そうみたいですね。closの解説って割合少ないですね
15:57:54 <g0000000> なるほど、もってるということなら
15:57:55 <usaturn> closの本が再販されてましたけど、それは買ってないなあ。
15:58:17 <usaturn> 対話⇒実践?
15:58:24 <g0000000> そうですね
15:58:29 <g0000000> それも良いかもしれないですね、それで
15:58:42 <g0000000> 最初の方は、流して
15:58:44 <g0000000> 読むとか
15:58:51 <usaturn> ええ
15:59:06 <g0000000> keeneのclosの本は、唯一というか
15:59:19 <g0000000> clos風のoopを説明してる本なんですが
15:59:27 <usaturn> ほうほう
15:59:35 <g0000000> 古いのと翻訳が絶版なんですよねー
15:59:55 <g0000000> 他のoopからclosを語るという切り口はあるのですが、
16:00:12 <g0000000> ネイティブなclosの説明っていう点では唯一なんですよね
16:00:59 <g0000000> CLOSとその周辺っていう本もあるんですが、実装寄りすぎるんですよね
16:01:35 <g0000000> CLOSとその周辺読んで、なるほどって思っちゃう人は、よっぽどの人ですねw
16:01:35 <usaturn> Common Lisp オブジェクトシステム http://www.amazon.co.jp/dp/4320122542/ これは勉強するのに向いてなさそうですか?
16:01:46 <usaturn> よっぽどの人こわいw
16:01:59 <g0000000> あ、この本ですね、CLOSとその周辺は
16:02:01 <g0000000> 副題なんですね
16:02:05 <usaturn> おお、なるほど
16:02:27 <g0000000> 処理系製作者が関心を持つようなところですね、
16:02:42 <usaturn> むう
16:02:55 <g0000000> もちろん知ってて悪いことはないですが、
16:03:20 <usaturn> アプリを作りたい人向けじゃない感じですね
16:03:24 <g0000000> この本を読んで得られた知識をどう生かすのかという感じですね
16:03:39 <g0000000> そうですね、この辺りも、lisp方面は、実装者が多いので
16:03:50 <g0000000> そういう話題が好まれてるだけって気がしますね
16:04:01 <usaturn> やっぱり、そういう人多いのかあ
16:04:02 <g0000000> 推薦してる人もrubyの作者とかですし
16:04:16 <usaturn> なるほど
16:04:25 <g0000000> Schemeやってる人は大抵そうですね > 処理系作る側
16:04:43 <g0000000> アプリ作る側は、Common Lispと、clojure、あとはelispとか
16:04:46 <g0000000> そういう感じですね
16:04:56 <usaturn> なるほど~
16:05:08 <g0000000> どっちも処理系関連の話は好きなんですが
16:05:23 <g0000000> 二派に分かれるといえば、分かれる気がします。
16:05:33 <usaturn> ふむふむ
16:06:01 <g0000000> ブログとかでも、schemeの話題っていったら大抵処理系制作の話かなと思いますw
16:06:20 <g0000000> CL、clojureは大抵プログラムの話ですね
16:06:27 <usaturn> ほうほう
16:06:47 <g0000000> elispは更に進んで、便利ツールの話で、lispかどうかはどうでも良いってところですね
16:07:19 <usaturn> たまにアプリのマクロ言語(Lispのマクロじゃなくて)にscheme使ってるのがあって、ちょっと興味ありました
16:07:47 <usaturn> scheme手習いの読書会に参加して、ちょっと読んだんですけど、あれ結構理解し辛かった記憶が
16:07:55 <g0000000> schemeは、教育と、あとは組み込みでも割と成功しているので
16:08:07 <usaturn> ええ
16:08:08 <g0000000> uimとか、gimpとか
16:08:19 <usaturn> はいはい
16:08:23 <g0000000> カスタマイズ用の言語としても採用されてたりしますね
16:08:52 <g0000000> gimpの拡張とか、schemeやってる人がみたら卒倒するようなコードが多い気がします
16:08:56 <g0000000> まあ、動けば良いってところですねw
16:09:00 <usaturn> そ、そうなんですか(^-^;
16:09:12 <g0000000> そうなんですね。別にschemeがやりたい訳じゃなくて
16:09:23 <g0000000> ツールが欲しいだけなので
16:09:26 <usaturn> そこはschemeらしさが生かされてない感じなんですね(^-^;
16:09:30 <g0000000> 正しいといえば、正しいですねw
16:09:44 <usaturn> もったいないw
16:09:55 <g0000000> elispもそうかもしれないですが、これはこれでアリかなと思います
16:10:02 <usaturn> Emacs使いたいと思いつつ、ずっと放置中・・・
16:10:18 <g0000000> インデントからして、みんな独特ですし > gimp
16:10:25 <usaturn> ほー
16:11:29 <g0000000> 自分も職業プログラマではないのですが
16:11:44 <usaturn> 普段Vim使ってるんですが、なんか拡張しようと思った時に、Vim scriptがあまりにも辛すぎて、elispなら覚えるモチベーションもあるのになあ、とか思ってます
16:11:47 <usaturn> はい
16:11:58 <g0000000> 実アプリ作るには、結局言語だけではないので、なかなか難しいですねw
16:12:06 <g0000000> なるほど > elisp
16:12:43 <g0000000> elispは書き始めると面白い気もしますが、あんまりlispっぽい作法を学ぶには
16:12:55 <g0000000> 適してる感じではないかもしれないですね
16:13:01 <usaturn> なるほど
16:13:14 <g0000000> なんというか、lispやってる人が書くと、lispっぽいんですが、
16:13:14 <usaturn> 一応、CLも拡張して使えるようになるんでしたっけ
16:13:22 <g0000000> そうでないと、そうでもないんですよねw
16:13:35 <g0000000> ですね、便利関数が使えるって位ですね > elisp
16:13:38 <r_takaishi> すごい盛り上がってる!
16:13:41 <usaturn> ほうほう
16:13:49 <usaturn> ども、こんにちは
16:14:12 <g0000000> こんにちは、暑いので読書して感想を投下しまくってますw
16:14:13 <usaturn> cl.elでしたっけ >emacsでcl
16:14:29 <g0000000> ですね。でも、微妙に違ったりはするんですよね
16:14:45 <usaturn> そですか~
16:15:10 <r_takaishi> こんにちは!
16:15:16 <g0000000> scheme手習い → elisp って流れだと、
16:15:28 <g0000000> 再帰が使えないので、また妙な感じになるんですよね
16:15:42 <r_takaishi> 最近eieio使ったりしてますね
16:16:00 <g0000000> なるほど、eieioもまたclosとは微妙に違ってて
16:16:01 <usaturn> elispって、末尾再帰最適化されてないんでしたっけ >超うろおぼえ
16:16:04 <g0000000> ハマるんですよねw
16:16:15 <usaturn> ほうほう
16:16:29 <g0000000> そうですね、CLもされないですが
16:16:40 <usaturn> ええ、そうだったんですか(^-^;
16:16:48 <g0000000> 処理系に指示すれば可能ではあります
16:16:54 <usaturn> 全然知らなかったです(^-^;
16:17:05 <g0000000> Schemeの場合は、最適化されるように書けば絶対されるので
16:17:18 <g0000000> その辺りはスタイルも変ってきちゃいますね
16:17:39 <g0000000> それでも、elisp程、スタックがすぐ溢れることはないですが
16:18:20 <usaturn> ふむふむ
16:18:51 <g0000000> 指示しないと最適化されないってことになると、じゃあ、ループで書いとこうかと
16:19:12 <g0000000> なっちゃうことも多いんですよね。人によりますが。あと処理系にもよりますけど。
16:19:27 <usaturn> なるほど~
16:20:03 <usaturn> eieio はclosっぽい事ができるようになるんですかね。まあ、私にはしばらくご縁がなさそうですが・・・
16:20:27 <g0000000> 多分、eieioだけやってる分には悪くないんだと思いますが、
16:20:32 <r_takaishi> CLOSっぽいですねー
16:20:43 <g0000000> closと同じように書くと、ハマりどころは多い気はします
16:21:25 <usaturn> sourceforgeを見てるけど、いかんせん英語もLispもわかってないので把握できないとゆー
16:21:45 <g0000000> あんまり書いてないので、なんとも言えないですが、cl.elと同じで、そのままという訳にはいかないですねー >eieieo
16:21:58 <usaturn> ほう・・・
16:22:42 <g0000000> emacsでアプリを書くのがゴールなら、elispはelispと割り切って学習という感じが良いのかなと思えます
16:23:00 <usaturn> むう、Lispである事を意識しないほうが良いという事ですね
16:23:22 <g0000000> CLの参考書はちら見って感じですね
16:23:31 <usaturn> なるほど
16:23:34 <usaturn> 結構elisp嫌いなLisperの人多いですよね
16:23:36 <g0000000> でも、schemeよりは、CLに近いです >elisp
16:23:47 <usaturn> ふむふむ
16:24:02 <g0000000> 嫌いって訳ではないと思いますが、制限があったりするので、
16:24:12 <g0000000> その辺りでしょうか。
16:24:43 <g0000000> CLとか、Schemeそのままって訳にはいかないので、当然といえば、当然なのですが
16:25:18 <usaturn> ええ
16:25:26 <usaturn> 前に、PGやLOLの作者はVim使ってるんだよなーって話したら、elispが酷いからだって言ってた人がいたので、嫌いな人多いのかなとか思ってました。
16:25:54 <usaturn> VimかViか忘れちゃいましたけど。
16:26:00 <g0000000> 厨二っぽい人が多いので
16:26:06 <usaturn> がーんw
16:26:21 <g0000000> アドバイスは話半分で聞いてますね、自分はw
16:26:27 <usaturn> なるほどw
16:26:47 <g0000000> この辺りも独特ですね。美意識が高い人多いのでw
16:27:05 <usaturn> あはは
16:27:07 <usaturn> elispが酷いからVim使うって人は、Vim scriptは許せるのかとか思っちゃいましたけどw
16:27:28 <g0000000> pg と lolの人は、vimじゃなくて確か素のviだった気がします
16:27:48 <usaturn> なるほど~。素のViは辛いなあw
16:28:12 <g0000000> arcの関数名が短いのは、vi使ってるからなのかなーとか思ったりはしてました
16:28:20 <g0000000> emacsだと補完命って感じなので
16:28:33 <g0000000> あえて短くする必要もなかったりで、だらだら長いですね
16:28:40 <usaturn> あー、素のViで補完ってできませんね・・・
16:29:05 <g0000000> こういうのも結構コーディングスタイルに影響を与えるのかなとか思ったりはします
16:29:32 <usaturn> 補完ができないと、長い関数名とかつけたくないですよね~
16:29:54 <g0000000> ですね。まあ、一画面に収まるのが肝って話もあるんですが
16:30:52 <usaturn> Pythonとかだと、1行79文字以内とかありますけど、そこまでいかんでも、見やすくしないとダメってのもありますよね
16:31:19 <g0000000> shiroさんとかは、大体80行ルールらしいですね
16:31:27 <g0000000> 80桁か
16:31:37 <usaturn> おー、そうなんですか!
16:31:46 <g0000000> 80桁ルールな人はそれなりにいる気はします。
16:32:01 <g0000000> 長くても大体95桁位な気はしますね。
16:32:13 <g0000000> CLOS方面だと横に長かったりはします
16:32:21 <usaturn> へーへーへー
16:32:34 <g0000000> やっぱりこれも開発環境の影響で、
16:32:52 <g0000000> ターミナルで開発してることが多いと、80桁ルールっぽいですね
16:33:04 <g0000000> clos方面は、Lispマシンとかの専用環境が多いので、
16:33:12 <usaturn> ええ
16:33:19 <g0000000> 94〜120まで表示できるせいか、そのあたりっぽいです
16:33:25 <usaturn> なるほど~
16:33:58 <usaturn> Solarisにターミナルを横に長くしてログインして作業してたら、Vi開いた時に怒られた記憶がw
16:34:27 <g0000000> lisp系の場合、縦に長くしていくってのも、できなくはないですが
16:34:38 <usaturn> ええ
16:35:13 <g0000000> そんなに見ないですね。ちなみに、自分は長くなくても(foo 1 改行 2 3 4)って感じに
16:35:26 <g0000000> 折るので、縦長になることが多いです
16:35:38 <usaturn> ほうほう
16:36:17 <g0000000> 引数の意味合いが変ったら折る的なところですね。人によっては読み辛いかもしれないですw
16:36:41 <g0000000> 一応、コード読んでると、こういう派閥の人もいます
16:37:03 <g0000000> (format t
16:37:03 <g0000000> "~A"
16:37:03 <g0000000> args)
16:37:09 <g0000000> とかですね
16:37:18 <g0000000> (format t "~A"
16:37:19 <g0000000> args)
16:37:32 <g0000000> ってする人もいます
16:37:34 <usaturn> 色々考えないといけないですね。難しいなあ・・・
16:37:47 <g0000000> いやまあ、適当ですねw
16:37:55 <usaturn> あははw
16:38:21 <g0000000> slimeだと引数について色々補助してくれるので
16:38:40 <g0000000> 覚えてなくても良いですし、あとはなんとなくの好みですね
16:38:46 <usaturn> ほうほう
16:39:06 <g0000000> フォームによってインデントも自動で調整されるので、
16:39:08 <usaturn> Vimでslimeとかよくわからないので、やっぱりEmacsを覚えるしか・・・
16:39:19 <g0000000> それだけで、なんとなく意味合いがわかります
16:39:25 <usaturn> なるほど~
16:39:32 <g0000000> vimも色々やってくれるやつがあるっぽいですね
16:40:03 <usaturn> ですね~
16:40:04 <g0000000> slimvとか、なんか色々あった気はするんですが、自分がvim使ってないもので
16:40:14 <g0000000> 追い掛けてないんですね
16:40:30 <g0000000> あと、emacsで、viのモードを使う人もいるっぽいです
16:40:39 <g0000000> これだと、slimeも使えたりはするみたいです
16:40:49 <usaturn> あー、vipper-modeとか使う人いらっしゃるみたいですねw
16:41:09 <usaturn> pが多かったw
16:42:16 <g0000000> なんかキーバインド的には混ざるので
16:42:25 <g0000000> 混乱することもあるらしいですがw
16:43:07 <usaturn> うはw
16:43:30 <g0000000> 自分もちょっと試してみましたが、slime的なキーバインドは素の感じなので
16:43:42 <g0000000> 確かにvi+emacsって感じにはなりますね
16:46:00 <usaturn> c⌒っ*^-^)っφ メモメモ...
16:46:39 <g0000000> 話をLisp入門ってことに戻すと
16:47:02 <g0000000> 最近、書籍とかウェブを元に入門するには、どういう組み合わせが良いのか
16:47:13 <g0000000> 知りたいというのがあるので
16:47:42 <g0000000> 是非そのうちusaturnさんの感想もきかせて下さい :)
16:47:49 <usaturn> ええ
16:48:04 <usaturn> ちょっとづつ読んで、これは良かった!ってやつですね。
16:48:27 <g0000000> ですね、こっからアプリを作る流れに、
16:48:52 <g0000000> どうやってつなげるのかなという気もしますが、rubyとか
16:48:56 <g0000000> どうなってるんでしょうねー。
16:49:13 <g0000000> 最初からRuby on Railsでwebアプリ作るって人が多い気もしますがw
16:49:29 <usaturn> 今のところ、初めての人のためのLisp半分くらいまで読んで、まあ理解できたってのと、Webで M.Hiroi'sさんのサイトかなあ。でも、アプリは全くまだ書けないw
16:50:00 <g0000000> 自分もそうなんですが、アプリはアプリ書かないと分からないんですよねw
16:50:05 <usaturn> アプリって所だと、去年ちょっと書き始める必要があって、Pythonを始めちゃったんですけどね・・・・
16:50:38 <g0000000> なるほど、やっぱり書き易いのが一番というのと、資料が多い言語になりますよねー
16:50:40 <usaturn> 正直、Lispでアプリってあまりにも情報が少ない=ハードル高いと思って・・・
16:50:48 <g0000000> そうなんですよ、
16:50:52 <g0000000> 割と苦行なんですよねw
16:50:54 <usaturn> あと、ライブラリですよね。
16:51:04 <usaturn> 苦行っぽいですねw
16:51:12 <g0000000> quicklispで改善されたとはいえ、まだまだなんですよね
16:51:26 <g0000000> あと良いライブラリでも途中で飽きて放置する人が多いんですよね
16:51:44 <usaturn> なるほど
16:51:45 <g0000000> この辺りもlispっぽいっていえばlispっぽい気もしますがw
16:51:56 <usaturn> nitro_idiotさんもその辺で苦労されてるっぽいですね・・・
16:52:22 <g0000000> 基盤になるようなものでも安定度は低いかもしれないですね
16:52:39 <g0000000> あと逆に活発だと、変更が多いんですよね
16:53:01 <g0000000> この辺りは、rubyも開発者が振り回されてるところは、同じですが。
16:53:12 <usaturn> なるほど~
16:53:22 <g0000000> rubyの場合は、これが格好良いらしいのでw
16:53:30 <g0000000> まあ、勢いがあって良いですよね
16:53:34 <usaturn> あははw
16:54:16 <g0000000> 既存のライブラリを繋げて何か手早く作るということだと、pythonとかには
16:54:22 <g0000000> 及ばないですねー
16:54:59 <g0000000> なので、逆に一から全部自分で作るってジャンルと、そういう人が強いです
16:55:36 <usaturn> RubyやPerlもだと思いますけど、ホントに標準でも拡張でもライブラリ多くて、何か作りたい時に素人でもなんとかできるかな、って気になりますよね
16:56:08 <g0000000> ライブラリの使い方を学べば良いって感じですね
16:56:15 <usaturn> ええ
16:56:22 <usaturn> Lispは既存のライブラリが無い物とか、どう作っていくのか読めない場合に強いのかなあ、とか勝手に思ってます。
16:56:47 <g0000000> そうですね、実際作ってる人は、そういうことを言うし、そういう感じです
16:57:22 <g0000000> なので、いまどきの感覚でライブラリが足りない、みたいな話をしても割と話が噛み合わないところもあるんですよねー
16:57:52 <usaturn> あはは(^-^;
16:58:03 <g0000000> まあ、実際、試行錯誤みたいなやつには強いんだと思いますし、これがメリットなんでしょうね
16:58:20 <g0000000> あとは、スピードとか位ですねCommon Lispの場合
16:58:46 <usaturn> おお、処理系によってはコンパイル後は結構な速度が出ますよって事ですかね
16:59:25 <g0000000> そうですね、調整が面倒臭いですが、CLであれば、Cの1〜3倍位遅いところまで
16:59:29 <g0000000> 追い込めるっぽいです
17:00:13 <usaturn> ほうほう
17:00:23 <g0000000> 試行錯誤するのが得意なので、沢山色々なことが試せた結果、速いアルゴリズムに到達するのが早いって、ことみたいですが
17:00:36 <usaturn> へー
17:01:13 <g0000000> アセンブリレベルで調整もできるので、追い込もうと思えば、追い込めなくもないです
17:01:37 <g0000000> なので、pythonとか、rubyに比べて、100倍位速かったりもしますが、
17:01:49 <g0000000> 別に速度にそんなにこだわることも少ないんですよねw
17:02:00 <usaturn> あれw
17:02:18 <g0000000> pythonも、pypyとか速いんでしたっけ
17:02:24 <usaturn> Webアプリとかでも速度は大きなアドバンテージになるかなあ、と思いました
17:02:34 <g0000000> 速度を気にするところは、Cで書くとかもあるでしょうね
17:02:37 <usaturn> pypyは速いと言っても、アプリが普通に作れるわけではないので・・・
17:02:45 <g0000000> なるほどー
17:02:52 <usaturn> 処理系とかを作る用的な。
17:03:03 <g0000000> なるほど、そうだったんですねー
17:03:10 <usaturn> って、聞いてますw
17:03:15 <g0000000> webアプリとか速度必要な気もしますが、
17:03:27 <g0000000> やっぱり開発の手間が関係してくるので、
17:03:33 <usaturn> ええ
17:03:49 <usaturn> バックエンドのDBとかもネックになりやすいでしょうし。
17:03:51 <g0000000> 良いフレームワークがあるか、ないかって感じですよねー
17:04:01 <usaturn> そうですねえ・・・
17:04:14 <usaturn> CLだとcave manとかありましたっけ。
17:04:18 <g0000000> CLも良いやつがあれば、それは、速いと思いますよw
17:04:32 <g0000000> ですね、色々やってる人はいるとは思いますが、
17:04:51 <g0000000> LLみたいな本場とは、活気が違うというか、人が
17:04:59 <usaturn> ほうほう
17:05:05 <g0000000> 少ないのでなんとも、というところですね
17:05:28 <usaturn> うーん、なんでアプリ方面でLispは活気が無いんだろ・・・
17:05:32 <g0000000> スピードだけは出ると思いますw CLには最速のウェブサーバとかありますし
17:06:08 <g0000000> いまどきのアプリはやっぱりライブラリをくつけて作るので、やっぱりライブラリですよね
17:06:54 <g0000000> あと、lispで食べてる人が少ないってのもあるかもしれないですえ
17:06:56 <g0000000> ね
17:07:09 <usaturn> 残念
17:07:36 <g0000000> 鶏と卵ですが、rails方面とかフルタイムでコミットしてますし
17:07:44 <g0000000> 成果物もどんどん出てきますよね
17:08:07 <g0000000> まあ、ぶっちゃけ言語は関係ないというかw
17:08:26 <usaturn> うーむ
17:08:35 <g0000000> 自分は、lisp大好きで、lispにこだわってますが、言語でなにかできるかというと、
17:08:41 <g0000000> それだけでは、なかなか難しいですよね
17:08:54 <g0000000> そういう点では、haskellとかも、これからどう展開するのか興味あります
17:09:00 <usaturn> 残念ですねえ
17:09:21 <g0000000> 何か強力なメリットがないと、という感じですね
17:09:28 <usaturn> haskellはちょっとづつアプリとか出てるので、いいとこ行くのかなあと感じてます
17:09:37 <usaturn> haskellは全然興味無いのですが(^-^;
17:10:00 <g0000000> hashellは色々メリットがある気はしますが、一般の人が果してついてこれるのかなというところはありますよね
17:10:24 <usaturn> 今の流行に乗りきれれば!って所ですかね
17:10:35 <g0000000> まあ、lispもそうなんですが、lispはhaskellほど色々パラダイムが違ったりしないので
17:10:44 <usaturn> ええ
17:10:55 <g0000000> ですね、haskellは流行ってるとは思いますが、どうなんですかねーw
17:11:22 <g0000000> 2、3年前は、日本では、lispもhaskellっぽく流行ってましたし
17:11:34 <usaturn> 「流行」で興味持ってる人が凄く多いですね。これがホントに根付けばってところかなあと。
17:11:39 <g0000000> 多分、言語を勉強したいって層が、今haskellなんですよね
17:11:40 <usaturn> あれ、そうでしたっけ?w
17:11:46 <usaturn> >Lispの流行
17:12:12 <g0000000> 勉強会とかは、結構人気でした。今は、ハッカソンとか勉強会をやると
17:12:18 <usaturn> ええ、関数型言語ってくくりでHaskellハスケルって
17:12:20 <usaturn> はい
17:12:23 <g0000000> そんなに集まらない気がしますw
17:12:34 <g0000000> まあ少ないなかで、人気があったって感じですね
17:12:47 <usaturn> そうだったんですか~
17:13:06 <g0000000> 正確には、人気があったというより、今人気がなくなったという感じかもしれませんw
17:13:07 <usaturn> CLの勉強会とか、あまりにも少ないですねw
17:13:11 <usaturn> ほうほう
17:13:27 <g0000000> 勉強会ブームの始まりにぶつかったってのもありますね
17:13:36 <usaturn> なるほど
17:13:44 <g0000000> 勉強会ブームは、2008、9年あたりからかなと思いますが、
17:13:57 <g0000000> lispでなんかやろうってのも、その辺りが多かった気がします
17:14:26 <g0000000> 今や、勉強会も普通になったので、前程、気合いを入れて参加する人もいないみたいですし
17:14:32 <usaturn> おお、全然知りませんでした。勉強会とか行くようになったの1年弱程度前からなので。
17:14:59 <g0000000> 理解のある企業も多いので、会場の提供も盛んで、開催も簡単になったし、という感じですね
17:15:28 <usaturn> ちょっと前に比べても増えましたよね~
17:15:33 <g0000000> 2008年位は、公共の施設を皆でお金を出しあって借りようか、みたいな話が多かったと思いますね
17:15:48 <usaturn> ええ、今は大分そういうの少なくなりましたね。
17:16:08 <g0000000> 今は、大抵、会社の会議室がだたで借りられて、無料ってパターンが多いですよね
17:16:19 <usaturn> ですです。
17:16:48 <usaturn> オラクルさんとか行くと、会議室無料どころか、ドリンクサーバも飲ませてくれますw
17:17:07 <g0000000> ですね、大手の企業さんは凄いですねー
17:17:54 <g0000000> なので、参加者に有難味がないというか、善し悪しは置いて昔に比べて普通な感じになりましたね。
17:17:57 <usaturn> 会議室とプロジェクタ使わせてくれるだけで十分ありがたいですね
17:18:04 <usaturn> なるほど、そういう事ですか
17:18:46 <g0000000> 自分は、オンラインが好きなので、オンラインで勉強会とかやってたこともあります
17:19:09 <g0000000> 30回位やったんですが、そこそこ面白かったです
17:19:15 <usaturn> おー
17:19:41 <g0000000> ここでも、これから、毎日14時位になったら、自分が読みたい本を読んで
17:19:49 <g0000000> 垂れながそうかなーとか思っていますw
17:19:49 <usaturn> おお
17:19:56 <usaturn> じゃあ、楽しみにしてますw
17:20:05 <g0000000> 対話によるCommon Lisp入門 は手始めですね
17:20:18 <usaturn> 素晴らしい!
17:20:34 <usaturn> 次の本の予定はなんですか?
17:20:51 <g0000000> 別になんでも良い感じなんですが、ログが残るので、
17:21:03 <g0000000> オンラインである本だと、全部ネタバレしても良いんですが、そうじゃないと
17:21:13 <g0000000> 適当なまとめになるので、オンラインの本が良いかなーとか思っています
17:21:25 <g0000000> もしくは、積読になってる本とかですねw
17:21:32 <usaturn> なるほど(^-^;
17:22:02 <g0000000> The Art of the Metaobject Protocol ってのをちゃんと読んだことがないので
17:22:14 <g0000000> これやりたいところですが…
17:22:34 <usaturn> 洋書ですかね。聞いたことないです(^-^;
17:22:42 <g0000000> 積読になってるlisp本は結構あるので、適当に読みちらかしたいですね
17:22:50 <g0000000> AMOPって略されることが多いのですが
17:22:57 <usaturn> ほほー
17:23:14 <g0000000> closのオブジェクト指向の手順というか、作法を
17:23:21 <usaturn> おお
17:23:56 <g0000000> メタに捉えて、それをオブジェクト指向風に解釈してシステムを構成するっていう本ですね
17:24:11 <usaturn> なるほど~
17:24:24 <usaturn> むずいw
17:24:30 <g0000000> オブジェクト指向のシステム自体が、オブジェクト指向で拡張できる、という感じですね
17:24:53 <usaturn> もう、なんでもありですね~
17:25:05 <g0000000> なんというか、デザインパターンに、テンプレートメソッドというのががあるんですが、
17:25:30 <g0000000> 枠組みが決まってて、
17:25:43 <g0000000> その部品をカスタマイズするってパターンなんですが、これが
17:25:51 <usaturn> ええ
17:25:54 <g0000000> オブジェクト指向のシステムに適用されてるってところなんですね
17:26:20 <g0000000> なんかメタなので、混乱することも多いですw
17:26:49 <usaturn> 自分、まだまだ過ぎて理解がおっつかないですねw
17:26:57 <g0000000> 自分も全然分からないですねw
17:27:24 <usaturn> デザインパターンは単語知ってても、中身にどーゆー物があるのかとか全然知らないし、そもそもオブジェクト指向をわかってないというw
17:28:06 <g0000000> 自分もデザインパターンは全然分からなかったので、CLOSで23のパターンをなぞってみたりしたんですが、
17:28:18 <usaturn> ほうほう
17:28:40 <g0000000> 結構作法が違うので、逆に混乱したところもありましたw
17:29:11 <g0000000> デザインパターンは、言語がサポートしてくれないところを補うものって解釈があるらしいんですが、
17:29:40 <g0000000> CLOSの場合、言語がサポートしてるところもあるので、ストレートに書けちゃったりするんですね
17:29:48 <usaturn> ほー
17:30:01 <g0000000> そこをわざわざ迂回することになるので、パターンの意味が分からなかったりするんですね
17:30:17 <usaturn> なるほど~
17:30:36 <g0000000> たとえば、関数はファーストクラスじゃないの変数に格納できない言語だと
17:30:51 <g0000000> あるパターンを考えて、処理することになるんですが、
17:31:11 <g0000000> 変数に格納言語では、そのまま書けば良いので、最初から問題にならない、とかですね
17:31:23 <g0000000> デザインパターンでいうと、visitorパターンとかです
17:31:57 <usaturn> c⌒っ*^-^)っφ メモメモ...
17:32:32 <g0000000> 自分の場合、ネタがないので、こんなことやったりしてた、という感じですね
17:33:08 <usaturn> やっぱりムズイですw
17:33:11 <g0000000> 別に役には立ってないですねw
17:33:53 <g0000000> 自分は、始めて本格的に取り組んだ言語がlispで、しかも、職業でやってる訳ではないので
17:33:54 <usaturn> がーんw
17:34:03 <usaturn> おー
17:34:33 <g0000000> なんというか、勉強方面に偏ってるんですよね。lisp系の人には多いですけど
17:34:49 <usaturn> なるほど、そうなんですね
17:35:15 <g0000000> それで、今時のプログラマが必要なことといえば、ライブラリの使い方をいかに早く理解するかって感じなので、
17:35:33 <g0000000> 言語詳しくなっても、しょうがないってところはありますよね
17:35:48 <usaturn> うーん、そうなんですかね
17:35:51 <g0000000> 言語だけでアプリ作れるわけでもないっていうw
17:36:16 <g0000000> アプリ作ってる人でも、使ってる言語にそんなに詳しくないって人は沢山いる気がします
17:36:29 <usaturn> なるほど
17:36:53 <usaturn> 最近、プログラマの人に教えを受けているんですが、ライブラリの使い方をいかに早く理解できるようになるかがポイント、とは教わらなかったです
17:37:25 <g0000000> 総合的な力を付けるってことだと
17:37:33 <g0000000> 基本大事ってことになるかもしれないですね
17:37:57 <g0000000> ただ、lisp系の場合、言語方面を突き詰めていくとトピックが膨大なので
17:38:05 <g0000000> きりがないんですよねー
17:38:10 <usaturn> コードを読みやすくするためには、が一番重要みたいな感じでした。
17:38:14 <usaturn> なるほど
17:38:36 <g0000000> 自分は、webプログラマの人と一緒に働いてたことがあるので、
17:38:42 <usaturn> ええ
17:38:49 <g0000000> ぱぱっと眺めて理解するのが重要って感じでしたね
17:39:16 <usaturn> ええ、読みやすさ、メンテナンスのしやすさが最重要と。
17:39:56 <g0000000> 多分、これもその人が書くアプリの性質によるんじゃないですかね
17:39:59 <usaturn> 名前の付け方に苦労するような関数は、その時点で分割する必要があるとか。
17:40:01 <usaturn> ほうほう
17:40:25 <usaturn> やはり色々な考え方があるんですね
17:40:39 <g0000000> 関数の分割については、smalltalkとか、lispとか色々ありますが、
17:40:54 <g0000000> 返り値を使う系の言語は、自然にどんどん細かくなりますよね
17:41:18 <g0000000> 返り値を使わない系の言語は、一つの関数が長くなる傾向はある気はします
17:41:37 <usaturn> むむ、返り値を使わない系の言語がよくわからないです。どんな物があるんですか?
17:42:14 <g0000000> javaとかのオブジェクト指向プログラミングだと、まず、オブジェクトを作って、
17:42:31 <g0000000> それの中身をいじってくことが多いような気がします
17:42:32 <usaturn> あー、そうか
17:42:36 <g0000000> 変数とかもそういう感じで、
17:42:50 <g0000000> 最初に宣言して、それに1足したり引いたりして、色々形にして、
17:43:01 <g0000000> 最後に辻褄があってれば良い、という感じですね。
17:43:12 <usaturn> なるほど~
17:43:22 <g0000000> そして、それも返り値を返すとは限らないという。大域変数にセットしたり
17:43:32 <g0000000> オブジェクトを変更したり、という感じですね
17:43:41 <g0000000> lispとかだと、こういうのはあまりないですよね
17:43:43 <usaturn> はい
17:44:12 <g0000000> この辺りは、自分的にその人の言語のバックグラウンドが出るなと思った唯一のところですね
17:44:31 <g0000000> rubyで仕事してたことがあるんですが、rubyはどっちのスタイルでも書けるので
17:44:42 <usaturn> 奥が深い・・・
17:44:45 <g0000000> 人によって違いが見れるって感じでした
17:44:56 <usaturn> なるほど~
17:46:17 <g0000000> haskellだとまた違う抽象化なので
17:46:21 <g0000000> また違うでしょうねー
17:47:30 <usaturn> 固定観念は切り捨てていかないと・・・
17:47:47 <g0000000> Schemeもそういうところがありますが、制御の流れを関数として抜き出して、合成ってのが普通なので
17:48:12 <g0000000> 名前付けetcとはまた違った感じになるんでしょうね
17:48:13 <usaturn> ほうほう
17:48:32 <usaturn> うううーむ・・・
17:49:10 <g0000000> 関数スタイルはこの辺りが面白いんだと思いますが、自分はあまり知らないですねw
17:51:04 <usaturn> そうなんですか
17:51:29 <g0000000> 自分は、スタイル的に結構手続き型なのでw
17:51:39 <g0000000> 関数スタイルに比べて、ですが
17:52:14 <g0000000> Common Lispが割と手続き的なスタイルを許容するってのがありますね
17:53:13 <usaturn> 割となんでもありっぽい感じですよね
17:53:41 <g0000000> ですね、関数もファーストクラスなんですが、Schemeほど綺麗に書けないので
17:54:04 <g0000000> schemeほど関数スタイルではない、という感じです。あと効率がべたに書いた方が
17:54:37 <g0000000> 速いバイナリができるってのがあります
17:54:53 <usaturn> ふむふむ
17:55:36 <usaturn> 効率の良い書き方ってのは、処理系に依存するんですかね
17:55:39 <g0000000> Common Lispはスピードを気にするので、そっちを取る傾向が高いんですよね
17:55:42 <g0000000> ですね >効率
17:55:53 <g0000000> 大体のところは同じですが
17:55:58 <usaturn> なるほど~
17:56:30 <g0000000> 特性があるので、それに合せるってのはありますね
17:57:34 <usaturn> 色々考えないといけないんですねえ
17:58:10 <g0000000> 突き詰める場合って感じですね、普段は、考えなくても良いってところも、Common Lispの良いところではあります
17:58:51 <usaturn> あ、そうなんですか
17:59:27 <g0000000> 後付けできるので、ちょっとづつ調整ってのが得意なんですね
17:59:49 <g0000000> 型宣言とかは後付けできるので、必要なところだけ付ければ、大抵済むんですね
17:59:57 <usaturn> なんか凄いなあ
18:00:09 <g0000000> なので、全部終ってからボトルネックを調整って感じになります
18:00:49 <g0000000> しかし型推論はないんですよねw
18:01:31 <g0000000> まあ、古いのでしょうがないってところですが、
18:01:51 <g0000000> 自分の思ったように色々調整したい人は好きみたいですね
18:03:36 <usaturn> そういう調整ができるんですね。想像もつかなかったです
18:04:19 <usaturn> さてと、そろそろ飯いってきます。またです~
18:04:27 <g0000000> はいー、ではまたー
18:28:47 [g0000000`'in]
18:30:24 [g0000000'out] ; Read error: Connection reset by peer
18:47:36 <g0000000`> 対話によるCommon Lisp入門の第I部の練習問題やってみましたが、
18:47:37 <g0000000`> https://github.com/g000001/learn/blob/master/cl/introduction-to-common-lisp-in-dialogue/introduction-to-common-lisp-in-dialogue.lisp
18:47:43 <g0000000`> 初歩のところで間違いましたw
18:49:00 <g0000000`> やっぱり処理系に触らないで書くと全然書けないですね
18:49:25 <g0000000`> define-symbol-macro 使ってるのは、コンパイラの警告を回避するためです(変数x yが未宣言となる)
18:49:50 <g0000000`> テストには、fiveam使ってます
18:53:06 <g0000000`> exptの問題も問題のいわんとするところを理解してなかったですねw
19:01:46 <g0000000`> ということで、また14時あたりから続きを読みます
19:01:51 [g0000000`'out] ; Quit: ERC Version 5.1.2 $Revision: 1.796.2.4 $ (IRC client for Emacs)