web-dev-qa-db-ja.com

voidを返す関数をプロシージャと呼ぶことはできますか?

私は関数vsプロシージャ関数とプロシージャの両方がサブルーチンであるのを読みましたが、関数は戻ります値と手続きはしません

voidを返す関数をプロシージャと呼ぶことはできますか?

定義で理由を説明してください...

1
David Roonie

はい、これは一般的な用語です。

Pascalは、返されないサブルーチン用に別個のprocedureキーワードを持っているところまで行きます。

5
Telastyn

用語の意味について、一定の年齢のプログラマの間でいくつかのコンセンサスがあります。それはすべて文化に関連していることに注意してください。

新しい言語またはパラダイムが導入されたとき、それを販売する人々はそれを目立たせるために彼らの製品と一緒に行くために新しい用語を選ぶでしょう。これらの製品の多くが生まれたため、すぐに意味のある言葉がなくなりました。一部の人にとってはユニークで明確であることはより重要でした。このようにしてメソッドを取得しました。それ以上に馬鹿にはならず、幸運にも誰もがそれに気づいたので、熱狂は終焉を迎え、その時点から、私たちが持っていたモニカーを使ってやりました。

それは、人々が特定の用語の使用を主張するかどうか、そして彼らが特定の意味を彼らに帰するかどうかという状況に依存します。結局、それらは最初のコンピュータが出現する前に何世紀にもわたって存在していた言葉にすぎません。 Pascalプログラマーはそれについて強い意見を持っているかもしれませんが、機能と手順の語源はコンピュータサイエンスのコンテキストでは強くありません。

2
Martin Maat

これらの用語のほとんどは、コンピューティングのコンテキストでは、同義語であることを覚えておく必要があります。一部は数学から引き出されたようであり、他は広くは行政学と呼ばれるものから引き出されたものであり、私たちが知っているようにコンピューターよりも古いものです。

プログラマーがmethodsまたはcallsとして認識するもののすべての小さなバリエーションであることを暫定的に提案します。

functionは、値が「返される」ことを意味する傾向があります。つまり、Cプログラマーが「r値」として知っていると私が信じているものを生成します。

一方、サブルーチンまたは手順は、関数とは見なされずに、「out」パラメーターを提供したり、参照によって渡されたパラメーターを変更したりできます。これは、一連の呼び出しが各呼び出しに順番に渡される共通パラメーターを操作する可能性がある、手続き型プログラミングの典型です。

プログラマにとって、この区別は通常、基本的なものではなく、スタイルまたは利便性の問題です(およびメソッドへの多くの呼び出しには、戻り値と出力パラメータの両方の組み合わせが含まれます)。

多くの言語では、関数とプロシージャの間に構文の区別はなく、VBのように区別があるように見える場合でも、実際には関数の戻り値は無視でき、関数とサブルーチンの両方がパラメータを提供できます。

さて、voidを返す「関数」をプロシージャと呼ぶことができますか? Word関数がプロシージャと同じ意味で使用されない限り、このようなメソッドはそもそも関数ではないので、私は「いいえ」と言います(したがって、いずれにしても意味の区別は存在しません)。

1
Steve