1 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 17:58:58.06 ] Common Lisp、SchemeをはじめとするLisp族全般のスレです ■前スレ Lisp Scheme Part32 hibari.2ch.net/test/read.cgi/tech/1303299696/ ■テンプレ wiki.fdiary.net/lisp/ ■関連スレ 【入門】Common Lisp その8【質問よろず】 hibari.2ch.net/test/read.cgi/tech/1309940115/
474 名前:デフォルトの名無しさん [2011/12/12(月) 21:30:27.25 ] (set-cdr! (last-pair (caddr ls)) (cons ls7 '()))
475 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 22:17:16.53 ] (setq l '((1) (2 (3)))) (defun append-tail (l m) (append (list (first l)) (list (append (list (first (second l))) (list (append (second (second l)) m)))))) CL-USER> (append-tail l '(4)) ((1) (2 (3 4))) CL-USER> (append-tail (append-tail l '(4)) '(5)) ((1) (2 (3 4 5))) CL-USER> (append-tail (append-tail (append-tail l '(4)) '(5)) '(6)) ((1) (2 (3 4 5 6)))
476 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 22:24:46.15 ] >>474 意図した通りに動きました!ありがとうございます
477 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 22:31:47.17 ] >>475 副作用無しのその動作も魅力的です ありがとうございます
478 名前:475 mailto:sage [2011/12/12(月) 22:45:13.92 ] ちなみにこの形だとpush, popが使えて楽だよ。 CL-USER> (setq n '(((3) 2) (1))) CL-USER> (push 4 (first (first n))) (4 3) CL-USER> n (((4 3) 2) (1)) CL-USER> (push 5 (first (first n))) (5 4 3) CL-USER> (push 6 (first (first n))) (6 5 4 3) CL-USER> (push 7 (first (first n))) (7 6 5 4 3) CL-USER> n (((7 6 5 4 3) 2) (1)) CL-USER> (pop (first (first n))) 7 CL-USER> n (((6 5 4 3) 2) (1))
479 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 22:52:01.53 ] >>471 リストをひとつのオブジェクトに見立ててるように見えるけど、 そういう場合は、各要素へのアクセサを定義した方が良いよ。 単純になるし、保守性が良くなる。 あるいは、素直にクラスとか構造体、レコードで定義した方が楽。 単なる演習とかならどんな書き方しても良いと思うけど。
480 名前:475 mailto:sage [2011/12/12(月) 23:42:26.08 ] >>471 具体的に書いてよ。 中高一貫校の中学1年生が英作文の問題を必死こいて解いている子に関係代名詞を使うとシンプルな文章になって 読みやすいよと言われても語彙や文法を知らないのですよ。Web参考書は揃っているんだけどw
481 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:18:03.51 ] >>480 詳しく説明するのが面倒だった。食いついて来たら説明する予定だったけど。 てーか取り敢えず落ち着けよ。明後日の方向に弾飛んでんぞw (define (value-name v) (cadr v)) (define (value-value v) (caddr v)) (define (set-value-name! v x) (set-car! (cdr v) x)) (define (set-value-value! v x) (set-car! (cddr v) x)) (define *x* '(value "x" ())) (value-name *x*) ;=> "x" (value-value *x*) ;=> () (set-value-name! *x* "y") (set-value-value! *x* (append (value-value *x*) (list 0 1 2))) (value-name *x*) ;=> "y" (value-value *x*) ;=> (0 1 2) こういうイディオムのこと。クラスやレコードはそれらのWeb参考書読んでくれ。
482 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:23:05.99 ] いや、イディオムってのも変か。パターンとか常套手段でひとつ。 なんでもリスト使うようなプロトタイプを最初に作るときとか、 後でデータ構造を差し替えたり、コードの可読性を上げるためにやるでしょ?
483 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:47:15.15 ] Schemeで書いたのは、いじめか。 Python使いにRubyで答えればプログラマとしての幅も広がるし、良いことづくしだ。
484 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:52:58.74 ] ?
485 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:56:25.81 ] いやいやいやいや。>>474 の人もSchemeだけど、「動きました!」って言ってんじゃん! そもそもCommon LispともSchemeとも書いてないんだから。 マジレスすると、CLerだった場合はset-car!をrplacaに読み替えれば分かると思います。 普通は汎変数使うと思うけど。
486 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 03:25:02.31 ] schemeは教養だから CLerは当然schemeぐらい読めるから
487 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 07:57:52.15 ] Cは教養だから万行デバッキングできるよね
488 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 09:49:08.78 ] racketはset-car!がありません
489 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 09:50:25.93 ] set-mcar! があるだろ。
490 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 22:15:12.19 ] Lisp方言で良いなら教養としてarcで書くのもあり? gaucheに接近するかと思ったら全然ダメだな。 arc> (time (tarai 12 6 0)) ;; arc3.1 time: 11241 msec. arc> (time (tarai 13 7 0)) time: 83869 msec. > (time (tak 12 6 0)) ;; Racket cpu time: 197 real time: 197 gc time: 0 > (time (tak 13 7 0)) cpu time: 1480 real time: 1481 gc time: 0 > (time (tak 14 8 0)) cpu time: 11046 real time: 11047 gc time: 0 gosh> (time (tak 12 6 0)) ;;gauche ; real 0.715 ; user 0.710 ; sys 0.000 gosh> (time (tak 13 7 0)) ; real 5.214 ; user 5.220 ; sys 0.000 gosh> (time (tak 14 8 0)) ; real 38.301 ; user 38.060 ; sys 0.000
491 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 08:06:59.33 ] Racket 速いな。
492 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 09:29:29.96 ] そりゃ、JIT搭載だもの。 docs.racket-lang.org/guide/performance.html#%28part._.J.I.T%29
493 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 10:04:57.25 ] やだ Racket 格好いい……
494 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 13:17:09.14 ] 既出した気がするけどこういうのもあるよ。 ttp://www.cs.utah.edu/~mflatt/benchmarks-20100126/log1/Gambit_20benchmarks.html ttp://www.cs.utah.edu/~mflatt/benchmarks-20100126/log2/Benchmarks.html
495 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 18:59:12.22 ] 387 名前:デフォルトの名無しさん[sage] 投稿日:2011/11/28(月) 14:59:20.86 馬鹿はお前だろうw shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=racket&lang2=lua
496 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 17:39:51.40 ] lisp.soup.io/post/8879455/Still-from-Serial-Experiments-Lain-via-lain これって、life関数を呼び出すたびにworldを作っているのか…
497 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 18:37:41.57 ] >>488 sicpプラグインではあるけど、set-mcar!をエイリアスしてるみたい
498 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 21:43:56.97 ] Lisperがgcc on LinuxでCの手習いで何かの分野の処理をやるとしたら何の分野がいいかな? コーディングがマゾい奴はやりたくない。うひょー、コーディング楽しいって感じの週末にしたい。
499 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 22:48:59.80 ] LISPインタープリタの原始的なやつを作る。
500 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 23:05:37.17 ] つまらん
501 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/12/16(金) 23:17:28.13 ] そしてその LISP で本格的な LISP 処理系を作る。
502 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 23:20:12.36 ] つまらん
503 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 04:11:27.04 ] >>498 マルチ死ね
504 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 04:39:57.42 ] >>499 だからマゾいの嫌だって言っているでしょ。インタプリタならlispで書いた方が楽でしょ。 Cで文字列処理はしない方が良いと思っているんだけど、偏見かな。 >>501 つまらないし、目的がみえてこない。
505 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 04:47:17.36 ] 自分で考えたら?
506 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 04:55:38.30 ] >504 おまえは499を否定しているがハードウェアべったりの処理系でGC付き言語を組むとかなり楽しいのだが。 GCは奥が深いぞ
507 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 06:08:02.26 ] >>504 どうせなにも出来ないから黙っとけ。
508 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 13:38:40.94 ] >>504 マゾいのが嫌だっていうから原始的なやつって書いたのに。 そもそも手習いが目的なのに「〜の方が楽」とかアホだろ。
509 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 00:07:58.23 ] >>504 >Cで文字列処理はしない方が良いと思っているんだけど、偏見かな。 はい
510 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 00:19:37.39 ] 必要な時に出来ないのは、偏見ではなく無能。
511 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:03:36.80 ] プログラムを組むときに一番大事なのは用件を最短で満たせる適切な言語を選ぶことだけど プログラムを楽しく組む為に必要な事は「いつでも初心でいられる」事だと思っている そんなわけで>>504 はこの土日もグズグズすると感じてしまうのであった。 ;;;仕事でもプライベートでもプログラムを書くのを楽しくするコツは2行目ね
512 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:20:46.27 ] ずいぶん参考になった ほんとうにありがとう
513 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 07:27:48.68 ] schelogってGPLなの? schelogをrequireしたらソース公開しないといけないの?
514 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 09:12:28.02 ] wiki.call-cc.org/eggref/3/schelog これを見る限りではLGPL LGPLは(GPLも)プライベートな利用では何の条件も要求しない 頒布する場合に条件が要求されるが、具体的な条件はお前のコードとSchelogを「リンク」する方法による
515 名前:デフォルトの名無しさん [2011/12/19(月) 15:37:56.70 ] LLGPL(Lisp-LGPL)とBSDライセンスのそれぞれのライブラリを使うアプリケーションを作り (clispとsbclの2パターン) lisp処理系をインストールせずに使えるよう 実行バイナリ化して配布しようと思うのですが、 配布する際のライセンスは結局どうなるのでしょうか lisp処理系とライブラリのライセンスそれぞれの影響がよくわかりません 使うのは↓のライブラリです www.cliki.net/Clack www.cliki.net/CL-PPCRE
516 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:47:34.98 ] >>515 cl.cddddr.org/index.cgi?%E8%89%AF%E3%81%8F%E3%81%82%E3%82%8B%E8%B3%AA%E5%95%8F#H-2v8nnc63s7pll ライブラリについては、手を加えなければ、ライセンスに影響を与えない。 その場合、アプリケーションには自分の好きなライセンスを設定できる。 ただ、含まれるライブラリのバージョンのソースコードの入手手段の保証や、 それぞれのライブラリのライセンス本文の提示とかはしないといけないから、 その辺はしっかり対応しないといけない。 ClackはGitHubだから、対応するリビジョンのリンクでも明記しておいて、 あとはそれぞれのライブラリがどのライセンスを採用してるのかを明記して、 LLGPLとBSDライセンスの本文を含めれば良いんじゃないのかなー。あと著作権表示。
517 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 00:32:23.27 ] >>516 まさに探していた説明です アプリケーションには任意のライセンスを設定できるのですね そのうえで使ったライブラリのソースコードのありかとライセンスを表示する すべきことがわかりました
518 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 01:55:11.33 ] ということは biglooやgambit-CでGPLなライブラリをuseやrequireしたものをCに変換して Cをバイナリーにした場合はソース公開の義務はないってことでいいのかな
519 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 03:17:22.44 ] GPLはリンクの方法を区別しないから(少なくともFSFはそう思ってる)、 それ普通にGPLに感染すると思う。 www.gnu.org/licenses/gpl-faq.ja.html#IfLibraryIsGPL LGPLならライセンスは影響を受けないと思うけど、 静的リンクだから全ソースコード公開の義務はあると思う。 ja.wikipedia.org/wiki/GNU_Lesser_General_Public_License#LGPL.E3.81.AE.E7.89.B9.E5.BE.B4 LLGPLなら確か大丈夫なはず。ただ、ライブラリのコード配布は必須。 最後の段落。 opensource.franz.com/preamble.html
520 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 03:30:15.93 ] chickenはeggの分割コンパイルできるんじゃないの? 動的リンクにできそうな予感が
521 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 11:04:08.18 ] >>519 の最後のリンク先を見ると LLGPLのライブラリを静的リンクして実行ファイルを作った人は 使ったライブラリのソースコードを(公式サイトだけではなくて)独自に配布しなければならぬ こう理解したけどこれでいいのかな
522 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 12:04:43.34 ] プラグインとかならともかく 動的リンクでも根本機能として必要ならダメだよ 使うのをきっぱりやめた方が早い
523 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 12:38:42.75 ] >>520 できるの? 初めて聞いたんだけど
524 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 14:05:09.96 ] >>522 それはGPLの話(>>518 )だよな? LGPLの4.d(LGPLv3の場合)では「"Minimal Corresponding Source"と"Corresponding Application Code"の配布」と 「適切な共有ライブラリ機構の使用」のどちらか一つの実行が条件だから 後者を選択した場合はソースの配布は義務付けられないと思うが
525 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:01:16.33 ] >>521 入手できる手段を保証すれば大丈夫じゃないかな。アクセスできるかが重要なので。 自分は、GitHubとかなら特定リビジョンのリンクの提示だけでいけると解釈してる。 もちろん、配布元が閉鎖とかしちゃったら、自分で配布しなくちゃいけない。 この辺はGPLやLGPLの思想を汲んでおけば、そう大外しはしないと思う。 もちろん、会社の商売でやるなら法務と相談必須だけど。
526 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:23:32.92 ] 一応根拠補足。 LLGPLの最後の段落に"in accordance with the terms and conditions of the LGPL"とあり、 LGPLの6.dでソースコードを同等のアクセス手段、同じ場所で提供すれば良いとされているため。 ダウンロードページに両方のリンクを張っておけば、多分これを満たすと思う。 sourceforge.jp/projects/opensource/wiki/licenses%2FGNU_Library_or_Lesser_General_Public_License
527 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:52:20.72 ] 心配ならソースのzipを読み込んだコアを配布すれば? ある関数実行したらファイルに書きだすようにしといて。
528 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:57:29.14 ] そんな面倒なことするくらいなら、普通にソースも一緒に配布するだろ……。
529 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 17:08:30.14 ] 元のお題(>>515 )が実行ファイル一つだけにしたいというものだから。
530 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 17:16:51.41 ] READMEすら同梱できないとか、>>515 のどこにそんなストイックな条件が書いてんだよw まあ、ある意味そういうのも厨二心をくすぐられてwktkするけど。
531 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 17:43:22.27 ] 気になったんだけど、common lisp絡みの案件で ライセンス上問題となった事件は何かある? それとfranzがllgplをわざわざ設けた経由が知りたい llgplでなくて修正BSDで実用上十分だと思うんだけど 裏事情があるのかしら
532 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 18:11:50.54 ] ソースコードの再利用について考え方が全く違うもので十分という意味がわからない。
533 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 00:56:24.51 ] GPL系と商用のデュアルライセンスの話なのか?
534 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 06:11:56.89 ] 名言来たな。「LLGPLじゃなくて修正BSDで十分」 どうみてもコピーレフトへの宣戦布告です本当にありがとうございました。
535 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 06:53:08.91 ] GoogleがV8に修正BSDを採用した経由が知りたい 修正BSDでなくてUnlicenseで実用上十分だと思うんだけど 裏事情があるのかしら
536 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 12:12:10.46 ] >>531 修正BSDを開発者の視点から考えてみるといいよ 修正BSDでライセンスされているプログラムは、著作権表示の点をクリアすれば ソースコードを公開しなくてもいい そのプログラムを開発した人にとっては自分が作成したコードを見せなくていいが 他の開発者からするとそのプログラムのコードを見る機会がなくなる 誰にとってそのライセンスがいいものかは立ち位置によって変わることには 注意したほうがいいかも
537 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 14:13:00.71 ] >>536 >そのプログラムを開発した人にとっては自分が作成したコードを見せなくていいが いまどきスパゲッティコードを書いているわけでもないだろうよ。 >他の開発者からするとそのプログラムのコードを見る機会がなくなる 見る機会がなくなるのも嘘な気がするなあ。最新技術としての賞味期限過ぎたら 公開しようかなと考える人・団体はかなり存在するんじゃないの。 BSDスタイルライセンスの良いところは公開しない・するといつでも自由に切り替えられる ところだよ。
538 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 18:38:52.63 ] >>537 NDAで公開出来ない物があるからじゃろ、自分のコードが綺麗でないから公開したくないってのとは別の問題。
539 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 00:06:49.95 ] >>537 納入するときはツールを使ってわざとスパゲッティコードにしてる俺が来ましたよ
540 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 02:15:29.56 ] >>539 そのツールは可逆性があるの? 鍵がないとそのツールを使えば可逆できるなあ。
541 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 02:29:56.35 ] 何を言ってるんだお前は。
542 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 07:37:11.95 ] 立て続けに見当外れなことを言ってる奴は釣ってんのか?
543 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:00:00.91 ] >>539 マクロを全部展開するだけでもスパゲッティー化できるよね 前に見たbiglooのソースもあきらかにやってたし
544 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 17:16:02.39 ] おれもコードランダム化させるの作ったよ 自分でハックしてみたが方式が判ってても追跡困難だった もう二度とやりたくない
545 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 17:53:04.64 ] コードランダム化のコードを 誰か公開したりしらいいなあ
546 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 19:06:20.31 ] 実行速度を落とさないで難読化なら 変数や関数の名前をランダムなものに変えたり 実行されない関数を追加したり あと他に何があるかな
547 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 19:33:11.80 ] 実行されないはずの意味ありげな処理追加。 実行されたら、それはそれで異常検出。
548 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:38:44.07 ] >>546 やっぱりマクロの魔術師でしょう :-) これRubyちゃうん? いやCommon Lispさ(ふっ) とか
549 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:44:35.94 ] 納入先がWindows使ってたら、改行コードをUNIXの改行コードにする 改行してしてなくてもいい場所は改行を削除 コメント部分の日本語を全部文字化けさせる コメント部分に実行ファイルの機械語をASCIIコードに変換して追加 diffの差分ファイルを納入
550 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:03:45.81 ] それ途中難読化じゃなく処理系を相手にチキンレースしてるだけでは
551 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:18:29.70 ] 納入しなければならないのはきちんと動くけど人間が読めないコード 相手に解読されたら仕事が来なくなる
552 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 00:25:44.16 ] せめてLispのケースで話して(><)
553 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 00:35:06.37 ] LISPプログラムを他人に渡すなんて、大学の研究室の後輩に渡すくらいしかなかった 当然、究極のスパゲッティにして渡したけど
554 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 00:37:44.49 ] カレーが少し余ったんでスパゲティ茹でて一緒に炒めたらおいしかった
555 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 01:59:19.41 ] >>553 先輩のプログラム、センス悪いな。糞じゃん あのひとエラソーにしてるだけだったよな。いなくてせいぜいだ とか言われてるかも。
556 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 02:00:16.59 ] >>554 次は、麻婆豆腐にスパゲティ入れて上にチーズをかけてオーブンで焼いてみ。
557 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 02:05:49.39 ] >>555 そのプログラムを即座に改良できるのが俺だけ という優越感
558 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 03:45:54.90 ] まあいいんじゃないの 自分で一から書く気になってくれれば
559 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 03:55:01.34 ] 先輩がせっかくテーブル拭きプログラムを書いたのに姑のようにまたテーブル拭きプログラムを書いていいか、悩まないか。 そういう先輩に限って卒業も飲み会に参加して、「まだあんな(俺の)プログラムを使っているの」とバカにしつつ顔が 喜んでいたりするんだよなあ。
560 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 22:32:46.08 ] 難読化したソースなんか納入したら検収で落とすだけだが。 当然納入できなかったんだから違約金は払ってもらう。
561 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 00:55:59.54 ] お前みたいな奴はマ板に行ってくれ。
562 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 06:09:07.85 ] ちょっと遊びで処理系実装してるのだけど symbolとquoteの実装方法で参考になるコードどこかにないでしょうか mosh?
563 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 06:19:30.02 ] 何で実装しているのか、書けよ
564 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 06:57:54.59 ] c
565 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 06:58:35.92 ] ホビットが #define long SCM とかしててびっくりした
566 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 07:13:22.47 ] 何を参考にしたいのかによるな。 原理的なとこ知りたいならミニマルな処理系がいいんじゃない? tinyschemeとか。 つーてもsymbolは単に辞書に登録した文字列だし、quoteの処理はもっと高レイヤ なのでLispで書いてあるevalの実装あたりを見ればいいんじゃないか。
567 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 11:29:44.73 ] Schemeって他の処理系の定義重複部分をコピペすると書く所ほとんどないのか。
568 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 11:41:02.55 ] >>562 mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_sec_4.1 初学者がqouteの処理だと思っていることは、ほとんどreadがやっている。
569 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 15:35:57.68 ] >>568 SICPって何回くらい読むもの? 再来年の年初めぐらいから読み始めようかな。
570 名前:デフォルトの名無しさん [2011/12/24(土) 16:09:36.63 ] 難読化なら一度速度優先でコンパイルしてアセンブラをはかせる。 そのコードを今度はCなりLISPなりに戻してやればよいじゃないかと思う。 動けばよいコードを納品って契約ならコンパイラでアセンブラはかせて、 それをそのまま納品でよいじゃないかともおもいます。 昔移植でアセンブラからCへコンパイルするコードは作ったことがあります。 半自動でしたけど9割は自動化して移植してました。
571 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 16:19:20.59 ] >>570 環境って何?
572 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 22:10:55.29 ] 環境は組み込み。 68アセンブラからCへコンバート。 IOは仮想化して対応した。 なのでアセンブラまで落とせればそれを高級言語に再変換してあげれば、 それだけで難読化しているようなもんだと思うよ。 動作の保証はテストを書いておいてそれを通すとある程度担保てきると思います。
573 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:34:26.37 ] いま難読だい?
574 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:37:57.62 ] 新しい構文を作るマクロって可読性下げてるよね。マクロ禁止みたいなコーディング規約とかある?