アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日本発のオープンソースソフトウェアは42件 -- ある官僚
みんなで void main (スコア:0)
教科書にそう書いてあるから。
もう、どうにでもなれって、感じですね。
情報処理学会のどこかの部会かなんかが出した、
情報教育の教科書でも、void main ってなってますよ。
動きゃいいんじゃないの?
もう、知らんって感じ。
Re:みんなで void main (スコア:2, 興味深い)
メソッドは副作用があり、戻り値がない。エラーはExceptionなどの別の方法で通知。
ファクション(関数)は副作用がなく、戻り値がある。戻り値の算出に引数以外に依存すべきではない。
というのが「正しい」姿だからだそうだ。で、mainはメソッドなので、voidでなければいけないそうだ (うちのオブジェクト指向論教授談)。
exit(1)の1ってmain()の戻り値やん、と反論したら、いやー
returnじゃないから
コンピュータ言語の関数の定義 (スコア:1)
>ファクション(関数)は副作用がなく、戻り値がある。戻り値の算出に引数以外に依存すべきではない。
プラス、
同じ値の引数で呼び出されたときは、同じ戻り値を返す。
なんてのもあったと思います。
ですから、ランダム関数は、本当は関数ではないと教えられた覚えがあります。(笑)
しかし、コンピュータの数学的モデルであるチューリングマシーン自体が、入力集合と出力集合以外に内部状態とその状態遷移関数を内包しているわけですし、一般的なプログラミング言語の関数を純然たる数学的関数のみで定義するのは、至難の業なのではないでしょうか。
# もっとも、チューリングマシーンは、初期状態と状態遷移関数が固定されてますので、初期状態から全く同じ入力記号列がインプットされれば、必ず同一の出力記号列が得られます。
# そういう意味では、シード値を与えた擬似ランダム関数と同じくらいには、まっとうな“関数”です。(^^;
いまどきのコンピュータ言語の関数の定義って、「戻り値を返せるサブルーティン」くらいの意味であって、数学的な意味合いとは別物と割り切るべきなんでしょうね。
個人的には、コンピュータ言語の関数定義は、ギリギリがんばっても、「同一の内部状態( <-これがクセモノ)と、同一の入力値を与えられたら、同一の出力値を返す」くらいの定義かなと思います。
ちなみに、この定義に則ると、引数で渡されたオブジェクトの内部状態は関数内で変更してはいけないことになります。CONST付き引数の関数のイメージですね。
こんな関数ばかりだったら、使い難くって仕方ないですね。(笑)
<おふとぴ>
そういえば、C言語が一般に広まるときに、「C言語もPascalもAlgol-60系の構造化プログラミング言語だけれど、Pascalは(関数も使える)手続き型言語で、C言語は(手続き的な関数も使える)関数型言語だよ」と云う説明がまかり通っていた記憶があります。
当時、こういう風なツッコミを入れる人が周りに居なかったのが、不思議です。
</おふとぴ>
--- Melloques Les Covdrasey ---