パスワードを忘れた? アカウント作成
16392 story

Schemeの新仕様「R6RS」成立 27

ストーリー by mhatta
紆余曲折 部門より

t-nissie 曰く

WikipediaのSchemeの項目の更新で知ったのですが、 長らく策定作業中だったSchemeの新仕様、R6RSが、この9月ついに成立したそうです。Wikipediaによれば、

2007年9月に新仕様R6RSが成立した。4部構成となり、R5RSに比べおよそ3倍の文章量となった。今までは小さな言語仕様に対してのこだわりが見られたが、Unicodeサポート等の実用的な言語として必要な要素が盛り込まれている点が特徴的である。
とのこと。 Schemeとはプログラミング言語でLISPの方言の1つ、人気はいまいちぱっとしませんが通好みの言語で、 タレコミ子のようなwannabeeにはあこがれの対象です。 今回の新仕様の意義などについてこのストーリーで議論/雑談していただければうれしく思います。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • About Scheme (スコア:1, 参考になる)

    by Anonymous Coward on 2007年09月30日 18時22分 (#1226673)

    http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/scheme

    Schemeはうんこ

  • 最初R4DS [r4ds.com]の話題かと思った。
  • by Anonymous Coward on 2007年09月30日 18時33分 (#1226684)
    Schemeは知りませんがLISP系の言語全般にそういう印象を持ってます(関数言語自体の特性なのかも知れないけど、LISP系以外の関数言語触ったことないし)。
    # データプロセッシング的な用途には結構向いてるんじゃないかなー
    • 具体的にどういう点がわかりやすくて何をめんどくさいと思ったのかくらい書いた方がよいのでは。でないと同意も反論もしようがない。
      • Lispに限れば、機械の代わりに構文解析するのがめんどい
        • by Deasuke (34806) on 2007年10月01日 13時16分 (#1227238) 日記
          それは単に慣れていないだけでは?
          私は脳内にあるアルゴリズムのイメージをそのまま書けると思います。頭の中の「絵のようなもの」をそのままプログラムにする、と言えば良いのかなぁ?
          他の言語だと一端「言語」に変換している感じます。何かC++で書くときと使っている脳が違うような気がするんですよね。
          恐らく#1226985の方は「脳内イメージ」→「得意な言語(またはそれに近い脳内言語)」→「Lisp(Scheme)」と頭の中でやっているので構文解析だと言うのでしょうが、「脳内イメージ」→「Lisp(Scheme)」と頭の中で出来るようになると世界が広がると思います。それを楽しめなければ出来るようになるためのトレーニングは「めんどくさい」ですが。
          --
          Best regards, でぃーすけ
          親コメント
          • 脳内に再帰的プログラムをイメージしてみてください。
          • 世の中にはアルゴリズムを考えなければならない仕事より、
            手続きを考えなければならない仕事の方が多い。
            だから、Lispは傍流なのだと思う。

            たぶん。
            • by Anonymous Coward on 2007年10月01日 19時52分 (#1227408)
              >手続きを考えなければならない仕事

              ただ、
              実際にプログラムを一杯書いて(書かされて)いて感じたことなんですが、
              仕事内容を「手続き」で表現することは、
              実は手抜きなんじゃないか?と
              感じることが多いです。

              ご存知の通り、むき出し(CPUに近い)の「手続き」というものは、
              色々と取り扱いが難しい。
              一度書いたら後で厳密に検証するのが難しいとか、
              「抜け」に対して根本的に無防備だとか。

              でも人は、面白い(?)ことに、
              ほっとくと(きちんと教育しないと)
              実装のみならず設計や分析まで
              「手続き」的に書いてしまいがちです。

              たぶん手続きで考えるほうが、
              楽というか直感的なんだろうと思います。
              「やらせたいこと」を順に書くだけですから簡単簡単。

              ただ、それだと、
              その裏の「やらないとならないこと」の網羅性は
              何も保証されない。

              要するに、責任を後回しにするために格好のフォーマットなんです。手続き型は。

              コーダーのみなさん、
              「やりたいこと」ばっかり書いてあって、
              「やれるかどうか」
              特に「自己矛盾がないかどうか」を
              なーんにも考証してなさそうなドキュメントを
              寄越されて呆然としたこと、ないですか?

              私はずーっとそんなのばかりですよorz

              そういう「手続き脳」な人らがドキュメントを書く(のに任せてる)限り、
              たぶん状況はよくならないでしょうね。

              そして逆にいえば、手続き脳な人らが職を失わないために
              明示的にも無意識にも活動し続けてる結果として、
              非手続き型が傍流だ、という現状が有るのではないかと愚考します。

              #よーするに陰謀論かぃ
              親コメント
          • >それは単に慣れていないだけでは?

            それはその通りだと思いますが、

            >私は脳内にあるアルゴリズムのイメージをそのまま書けると思います。頭の中の「絵のようなもの」をそのままプログラムにする、と言えば良いのかなぁ?

            何が「イメージそのまま」なのかすら、人によって違いますから。
            イメージが高級(高級言語という意味で)な人も居れば低級な人も居る。
            手続き型な人も居れば関数型な人も居る。(そういえばSQLな人も居る。)

            無意識のうちに落とすイメージのかたちが、
            その人の得意とする言語だ、という感じかと思います。

            自分のことを省みても、好きで得意なメイン言語が変遷するにつれて、
            頭のなかのイメージ(モデル)自体がバサっと切り替わると
            • > 何が「イメージそのまま」なのかすら、人によって違いますから。
              これは承知した上で申し上げております。私も最初の言語はポケコンのBASICだし、以降、アセンブラ→C→....という順序で言語を修得しております。

              以下が重要な点で、私も共感する部分が多いです。
              >無意識のうちに落とすイメージのかたちが、
              >その人の得意とする言語だ、という感じかと思います。
              > 自分のことを省みても、好きで得意なメイン言語が変遷するにつれて、
              > 頭のなかのイメージ(モデル)自体がバサっと切り替わるという経験をしてきました。
              はい。このイメージのかたちを「手続き型」と「関数型」の二種類としましょう(細かい分類、他の分類は議論の都合上捨象します)。これらのイメージはトレーニング(慣れ)によってどちらも出来るようになる、というのが私の主張です。喩えて言うなら、英語で考えられるくらいに英語が上達しても日本語は忘れない、ということです。ただし、私自身関数型イメージがまがりなりにも出来るようになるまでには大分苦労しました。
              また、「手続き型イメージ」→「C/C++の構文」より、「関数型イメージ」→「schemeの構文」の方がより直接的に感じます。(私の場合、Cで書くときのイメージは、Cよりも幾分かアセンブラに近いイメージですし、C++のとき(とくにtemplateを使うとき)は幾分か関数的なイメージも加わります)。私自身経験上「関数型イメージ」力はそんなに強いと言えないですが、それでもそう感じました。

              その経験上、Lispで書くときに「C++だとこうだからLispだとこうなる」ではなくて、Lispが自分の最初の言語であるつもりで考えると、「関数型イメージ」力が付くと思うし、世界が広がっていくのではないでしょうか?ということを提案しています。
              # もどかしいし、そのことを楽しめない限りそれこそ「めんどう」なんですけど。他にはschemeを実装してみるとか(私は今マクロで詰まってます)、schemeを組み込んだアプリを作ってみたりするとかも良い経験かと。

              #それにしてもlink先の記事は楽しいですね。SQLは数独を解くのに不向きであると言うのにも同意です。私自身は、数独のヒューリスティックをC++のtemplateを使いまくりで書いたことがありますが(template<template<typename T>class MT, typename Pos>みたいなのが出てくるくらい)そのときはあまり手続的に考えてないように感じました。
              --
              Best regards, でぃーすけ
              親コメント
        • 適切にインデントされていれば、読みやすくないですか?
  • by Anonymous Coward on 2007年09月30日 19時58分 (#1226728)
    lispやschemeに代表される関数型言語は開発効率が高いって本当でしょうか?
    スラドには詳しい方々たくさんいらっしゃるのでぜひ聞いてみたい
    • by Anonymous Coward on 2007年09月30日 21時13分 (#1226773)
      Lispは普段Emacs Lispぐらいしか使わないのですが、
      縁があって関数型言語Ocamlでちょっとしたソフトを作ったことがあります。

      使う前は「高階関数?そんなの関数ポインタでもできるじゃん」と思っていたのですが、
      匿名関数とかカリー化とかすごく使いやすいです。
      関数を変数と同じように気軽に扱えるので、共通部分の処理を関数にまとめやすく
      コードの記述量はすごく減る感じがします。
      残念ながら僕は根っからの手続き型言語人間なので、副作用のある式とか書きまくりなのですが、
      もはや関数型言語なしでは生きれない体になってしまいました。

      この関数型言語に対する魅力はRubyに対する魅力に通じる所があるので、
      Rubyを魅力的と感じる人にはLispを魅力的に感じるのではないでしょうか。

      まあ僕は研究者であり、職業プログラマではないので、
      企業で大規模ソフトの開発となると話は別になってくるのでしょう。
      その辺の考察は別の人にゆずります。

      # Ocamlは純粋な関数型言語じゃないっていうツッコミは入れないで。ぷりーず。
      親コメント
    • 関数型言語の本質である「破壊的代入がない」っていうのは 普通のプログラミングスタイルとは噛みあわないでしょうね。現実問題として関数型言語の多くは 副作用を許して手続き形っぽく書けるようにもなってます。

      とはいっても、いまどきのプログラミング言語は関数型言語の多くが持ってる便利な機能を積極的に取りこんでいます。 スクリプト言語の多くが #1126773 [srad.jp]の人が言ってるlambdaとかカリー化って何かしらの形で実現できるようになっているし、JavaやC#も言語仕様に新しい機能を積極的に加えてます。

      つまり「生産性を高める」(と考えられている)機能の多くはモダンな言語でもサポートされているので、 結局プログラマが十分にそれを理解し適切に適用できるかっていうクソ面白くもない結論になってしまいます。

      • でもですね、そうじゃない気がするんですよ、、。

        例えば、手続き型言語が関数型言語の秀でている点をいくら取り込んだとしても、それはあくまでも真似事であって、本質的なところはやはり手続き型言語のまま変わっていないわけですから、、。

        具体的に説明せよと言われると困ってしまうのですが。
  • by Anonymous Coward on 2007年09月30日 20時47分 (#1226757)
    Schemeの実装のひとつGaucheとGaucheでかかれたWeb applicaition frameworkであるKahuaを使わせていただいている初心者です。

    新規格がGaucheやKahuaの将来にどのように影響するのでしょうか。
    大きな変更があるとすれば、楽しみでもあり、不安でもあります。
    • Re:GaucheとKahua (スコア:1, 興味深い)

      by Anonymous Coward on 2007年09月30日 20時58分 (#1226764)
      shiroさんはR6RS反対だったからコンパチとりつつも積極採用はしないんじゃないかなあ。デフォルトでR6RSはオフとか
      親コメント
      • Re:GaucheとKahua (スコア:1, 参考になる)

        by Anonymous Coward on 2007年09月30日 22時20分 (#1226816)
        GaucheについてR6RSをどう導入するかですが、
        メーリングリストにshiroさんの見解があります。
        当面はそう大きい影響はなさそうですね。
        http://lists.osdn.jp/mailman/archives/gauche-devel-jp/2007-July/001744.html
        親コメント
      • by Anonymous Coward
        ってことはまたLispの亜種ができちゃうわけなんだけど。
        最終的にはCommonLisp以前の混沌にもどっちゃうのかな?(俺様Lispがいっぱい!)

        • Re:GaucheとKahua (スコア:2, 参考になる)

          by Anonymous Coward on 2007年10月01日 9時01分 (#1227013)

          各々の実装が特色を追求しつつも、共通のライブラリが書ける何らかの統一基準が必要、という点ではコミュニティは わりと一致してるんですよ。各論で合意できないだけで。R6RSもひとつのdesign decisionとしては有りなんですが、 細部まで検討されたとは言い難く、標準とする域に達していないと私は思います (例えば、formal commentに対して 「提案はreasonableだが検討してる時間が無いので却下」 [r6rs.org]とか)。 個人的にはモジュールシステムだけ標準にしといて、ライブラリはSRFIで練るべきだったと思うのですが (「同じインフラに対して複数の仕様が出てくる可能性がある」という危険は折込み済みで)、残っている R6RS editorsはあまりSRFIにauthorityを認めたくない感じでした。

          結局僅差で批准されたわけですが、既存のScheme実装者の多くが否決票を投じているので、「R6RS準拠」なSchemeが どのくらい出てくるかはまだわかりません。(最後まで残ったEditorsがPLT SchemeとChez Schemeの実装者なので このふたつはR6RS compliantになるでしょうが)。ただ、残りのSchemeもR6RSの色々な要素については有用性を認めて いるので、より緩い縛り(SRFIレベル)で互換性を取ってゆこうという動きが立ち上がっています (ERR5RS [cyber-rush.org])。

          またこれと協調して、現実に使える共通ライブラリパッケージも作られつつあります (Snowfort [umontreal.ca] )。

          おそらく処理系のdiversionという意味では、R6RS以前とさして変わらないか、むしろ改善してゆくのではないかと 楽観しています。

          現在、Marc Feeley (Gambitの作者)が各Scheme実装者のR6RSへの対応予定を集計しています。近々c.l.sあたりで 結果が出るのではないかと。

          親コメント
  • by Anonymous Coward on 2007年09月30日 23時59分 (#1226887)
    トップレベルの特別扱いは相変わらずなのかね?
  • by Anonymous Coward on 2007年10月01日 11時37分 (#1227133)
    何に使えばいいのか分からん。
    得意分野ってあるの?
  • by Anonymous Coward on 2007年10月01日 13時16分 (#1227236)
    新しいLet'sNoteかと思ってしまった。
    こないだ7が出たじゃん。
typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...