プログラミング言語の関数と命令の違いについてなのですが、
関数は返り値があるもの、命令は返り値が無いもの。
とどこかで読んだ覚えがあるのですが、
いくつかのプログラミング言語を使っているとそうは思わないときがあります。
(voidの関数のように、何も返さない関数もあると思います。)
検索して調べてみると、例えば、
HSPなどでは命令と関数が明確に区別されていますが、
なでしこでは曖昧のように思います。
(なでしこの場合、標準の機能は、どれも命令と呼ばれていますが、命令のくせに普通に値を返します。)
しかし、もし、先述の通りだとすると、
何故、わざわざ区別する必要があるのでしょうか?
すべて、関数にしてしまっても良いと思うのですが?
また先述の、命令と関数の違いがそもそも間違っているのであれば、
正しい違いを教えていただけるとありがたいです。
No.1ベストアンサー
- 回答日時:
関数と命令、全く違うジャンルの言葉なんです。
命令(ORDER)は、元々アセンブラなどのプログラム言語で特定の動作
を行うコマンドを意味していました。ですので、古い対応のプログラム
では、処理は全て「命令」だったんです。
一方、関数(Function)は、出自が表計算アプリ(MultiPlanなど)で、
「計算して結果を返す」数学的な用語の一環として使われました。これが
オブジェクト言語が開発される中で、実装される処理が「要は結果を返す
んだから同じことじゃないか」と、処理を指す用語として使われだした
のが初めなんです。即ち「元々コンピュータ用語じゃなかった」んですね。
ということで、「クルマ」と「自動車」みたいな状況で2つの言葉が混在
しているんです。これら用語の細かい定義は、各々の言語セットの中で
決まっていますから、詳細はそちらを参照して下さい。ただし、出自の
関係から、どちらか片方が定義されて無い、なんて言語もありますけど。
なるほど、ありがとうございます。
ということは、プログラミング言語全体として考えれば、
今では、どちらでも良い(同じ)のであって、
個々のプログラミング言語では、そもそもどちらかしか無かったり、
扱いが異なる場合もあるということでしょうか。
No.2
- 回答日時:
やっぱり言語によって違うのかな?
Lispは関数とマクロしかなく、命令というのが
ありませんね。
C/C++でも命令ってないんじゃないでしょうか?
HSPって初耳ですが、考えたら命令という言葉は
私はアセンブラでしか知らないような気がします。
COBOLは命令だったかなあ?忘れた。
逆にCOBOLには関数って無かったような気が・・・
No.3
- 回答日時:
関数と命令を区別する習慣は、cが一般化させたものだと思います。
なでしこはその辺の区別があいまいと言うことですが、昔々の8bitマイコンで使われていたROM-BASICも確かそうでした。これは、全ての命令と関数を処理系が一緒くたに抱え込んでいて、後から追加したり削除したりすると言う発想がなかったせいじゃないでしょうか?そういう処理系では、区別する必要そのものがあまりありません。なぜなら、処理系が提供するものが全てであり、それが命令か関数かを意識してもしょうがないからです。あえて意識することはできますが、呼び名の違いでしかないです。これがcだと、関数はどのライブラリに定義されているのかを知らないと使えませんから、命令か関数か(あるいはマクロか)の区別は非常に重要です。
結局、それを意識する必要があるかないかは、処理系によると言うことになりますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 事件・事故 ガーシー容疑者にパスポート返納命令。なぜ? ガーシー容疑者だけ特別扱いなのか? 7 2023/03/18 08:16
- 消費者問題・詐欺 裁判所からの返済命令に全く応じない者には、刑罰を課せるようにしてもよいのでは? 2 2022/04/02 19:06
- 哲学 《光あれ》という命令法は どういう実態か 1 2023/01/24 17:57
- 憲法・法令通則 マスクのお話 マスクは今推奨という形です。 「推奨(すいしょう)」は「物事や人物の優れている部分をあ 6 2022/04/25 12:49
- Excel(エクセル) 表の中を『年』で検索し、値を得たい。 4 2023/01/31 22:37
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- 政治 特定の政党や候補者に投票するよう強要・命令・指示・洗脳するのは憲法にある思想信条の自由や 3 2022/08/03 10:40
- その他(悩み相談・人生相談) 「はぁ…」とか言わずに中身教えてくあげればいいのに。 って提案の意味で伝えたら 相手は、命令するなと 2 2022/07/11 15:27
- 情報処理技術者・Microsoft認定資格 (パイプライン処理)基本情報技術者の演習問題について 1 2023/03/11 17:47
- Excel(エクセル) Application.Volatile利用(excel2003) 1 2023/02/06 10:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
COM1(RS232C)とUSB仮想COMポー...
-
MIPS と クロック周波数の換算方法
-
組み込みCプログラムで実数型
-
命令網羅率の計算問題です
-
VBAでのコントロール操作
-
Pentium 4とPentium Mの性能差...
-
KBとMB
-
【有効数字について】 授業で、...
-
実行計画の「COST」と「BYTE」...
-
2ビット、3ビット、4ビットのグ...
-
携帯電話の略語であるMBって英...
-
SSDのデータがビット落ちにより...
-
8進数 8進数の47+32の答えを 8...
-
EXCELでの16進数取り出し、上...
-
1Mバイトって何バイト?
-
16bitはダイナミックレンジが97...
-
1TBHDDに音楽ファイルは何ア...
-
もしコンピューターが2進数か...
-
Oracle AL32UTF8でのバイトサイ...
-
かけ算(わり算)と足し算(引き算...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラム言語FortranとCの違...
-
組み込みCプログラムで実数型
-
VBAでのコントロール操作
-
COM1(RS232C)とUSB仮想COMポー...
-
命令網羅率の計算問題です
-
VBSとVBA
-
PICマイコンのプログラムについ...
-
+=と÷=の処理速度の謎を教え...
-
arduino
-
任天堂64の64 CPUの仕...
-
64ビット化による処理速度低下...
-
CPUのHTについて教えてください。
-
MIPS と クロック周波数の換算方法
-
なぜ、i++なのか?(ものすごく...
-
CPU、Z80からステート数から...
-
H8Sで割り込み発生時の飛び先ア...
-
ステート数とは
-
Pentium 4とPentium Mの性能差...
-
処理時間の計算 PICアセンブラ
-
応用情報技術者試験問題の解き...
おすすめ情報