パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

プログラマーの力量を見極める質問 」記事へのコメント

  • 参照渡しの無い言語も広く使われている現状で、値渡しと参照渡しについて説明できないだけで入門レベルというのは厳しすぎると思う。

    参照渡しの有る言語: C++, C#, VB, Pascal, Perlなど
    参照渡しの無い言語: C, Java, JavaScript, Ruby, Python, Scheme, Haskell, Erlangなど

    それとも、原文にあるpass-by-reference(call-by-referenceではなく)というのはreference typeとかポインタとかの値渡しのことを差すのだろうか。
    しかし、C#の言語仕様では“A struct may be passed by reference to a function member using a ref or out parameter.”という文があり、call-by-referenceと同じ意味として使われている。Perldocのperlsub [perl.org]

    • by Anonymous Coward
      Schemeの場合、構文は参照渡しになるような。値渡しは変数に束縛されたもの(のポインタ)を継続に入れる、参照渡しは変数そのもの(のポインタ)を継続に入れると言う話で、手続きか、構文か、ってだけなので、参照渡し無しというのは言いすぎのような。

      あと、"a number X"と言うのは「数値X」ではなくて、「X番目」という意味だと思いますよ。英語では、序数も基数も"what number"で聞き、numberは基数を表したり、序数を表したり。
      • 構文が参照渡しのような動作をするからといって参照渡しのある言語とは言わないと思います。
        例えば、Javaにおける=演算子は左辺に対して参照渡しのような動作をしますが、これを差してJavaに参照渡しがあるとは言いません。

        「継続に変数そのもの(のポインタ)を入れる」という表現も不正確です。
        Schemeにおいて継続は「変数そのもの」「変数そのものへのポインタ」「変数への参照」「ロケーション」のいずれも取れません。
        継続はR5RSの意味論においては値(expressed value)の列とストアを受けとって最終結果を返すものと定義されています。
        set!の意味を見ても、継続の内部で識別子を使って環境からロケーションを得ています。継続が外部からロケーション等を受け取ったりはしません。

        > あと、"a number X"と言うのは「数値X」ではなくて、「X番目」という意味だと思いますよ。
        なるほど、確かにNo. 1, No. 2とか言いますね。それのNo. Xという意味ですか。

アレゲは一日にしてならず -- アレゲ見習い

処理中...