if 条件 > 0 then
begin
条件あり
end
else
begin
それ以外。
end;
Delphiでは、こうなるのですがなぜ{}を使わないのでしょうか?
{}はコメントになるけど、//でも/* */ でもいいじゃないですか。
それに比べて、begin - end って面倒じゃないですか?
何かの本でif文が多いのは汚いプログラムだ、と読んだのですが、当時はPerl,PHPしか知らなかったので、それほど汚くないじゃん。と思ったのですが、Delphiを使ってみると、やっぱりif文が汚く感じます。
もちろん、コンパイルするので、書き方は開発者の自由なのは分かりますが、{}ではいけない明確な理由があるんでしょうか?
豆知識を持っている方、プログラム経験上分かった方、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
いけない理由は無いですね。
DelphiはPascalの一種ですが、Pascalという言語を設計した人がそう決めたというだけです。「なぜwhenじゃなくてifなんだ」という疑問と同じです。なぜ { } でないかというのを豆知識的に言うと当時のコンピューターは文字セットがメーカーごとに違い、必ずしも { } が存在しないという理由もあったでしょう。その場合、(* *) が代わりに使われました。
そうするとあなたの疑問は、「なぜ (* *) じゃなくてbegin endなんだ?」ということになります。
さらにbegin endはPascalが参考にしたAlgol60という言語から来ています。ということで、あなたの疑問は、「なぜAlgol60ではbegin endを使い、(* *) を使わなかったんだ」というところに帰着しますが、理由は冒頭に書いたとおり、「言語設計者がそうしたから」です。
begin,end.{,}等不要で、
if 条件 then
真のときの文1;
真のときの文2
else
偽のときの文1;
偽のときの文2
fi
と書ける言語もあります。
やっぱり、豆知識を持っている方はいるんですねー。
正直、回答はなしか、開発者のかって、というのが予想でした。
プログラム的な制約や利点ではなくって、昔はパソコンの文字セットに{}がない場合というのがあったんですねー。それは予想外です。
if(条件)(* 処理 *)
となっていれば、見栄えもよくすんだのに。>w<。クー
begin-end直感的に分かりにくいと思うのは私だけ?
勝手な想像ですが、他のプログラムと差別化したかったのかなー、と。
例は、Linux等のシェルスクリプトですねー。
生き字引のような豆知識ありがとうございました。
No.3
- 回答日時:
#2の回答の補足になります
要はNicklaus Wirth先生の趣味と言うことになります。
ALgolもPascalもModula-2もwirthの貢献無しには誕生しませんでした。
で、もし、Wirthなかりせば、Cの登場も遅れ(無かったかも)、主力言語は未だに非構造化言語であるFORTRAN66やCOBOL74でとどまっていたかもしれません。
ひょっとすると、C&RやDjykstraも世に出ていない。
システム記述もアセンブラのまま、UNISYSは未だにUNIVACとBurroughsのままだったかも、というより、Burroughsなかったかも。
と、まあそのくらい、陰では影響のあった人です。
そういう意味では、begin-endくらいはご愛敬のうちでしょうね。この先生は、シンタックスやデータ型にも厳しい人で、宣言しないで変数を使うのも大嫌いです(BASICやFORTRANで宣言しなくても変数が使えるのは許せなかったのでしょう)、おそらくは、手続きの単位の前後をbegin-endと掻かないと気が済まなかったのでしょうね。
なお、{}が無いのはPCではなく、ホストやミニコン、オフコンでEBCDICやBCD(6ビットの文字コード)の場合です。FACOMだと(*、*)だったような(記憶が薄れているので)。
>要はNicklaus Wirth先生の趣味と言うことになります。
さすがに知らないプログラム言語が出てきましたが、根源は偉大なWirth先生ですか。(w
確かに、Delphiは型に厳格ですね。
時間の計算等をさせると、関数にしたくなるほど一行に収まりません。
PHPではグローバル変数や、宣言無しの変数は使わないようにしていたので、そういう考え自体は嫌いではないのですが、。
でも、せっかく開発の効率がいいのに書くのが面倒だし、なにより見栄えがよくない。
ifの中のifとか、ループ中のifも逆にどこからどこまでかが、文字同士なので埋もれてしまって。
回答が出ても1日は待つようにしているんですが、今回はそれで当たりでした。
さらなる豆知識ありがとうございます。
No.1
- 回答日時:
Delphiの発売元のBorlandは昔、pascal(パスカル)という言語を作っていました。
Delphiはこのpascalを元に作られているので文法などを引き継いでいるのです。
この回答への補足
元がpascalなのも知ってます。
が、なんでbegin - endなんですか?
毎回書くの面倒じゃないですか。{}の方が簡単なのに。
あ、それに昔はもっとメモリーにシビアで、バイト数も極力少ない方がコンパイルとかも楽だったのでは?
開発者の方が、
if(条件){処理}
else{処理2}
と作成してくれれば、毎回書く事もなかったのに、と思ったのですが。^^
仕組みが違うのは分かりますが、Perl,PHPでは普通にできているので、コンパイルするプログラムではなにか、、、
Javaでも
if(条件){処理} ですよねー。
ふと、そんな事を思ったのですが。
たまにDelphiではなく、ObjectPascalという書籍も見かけます。
その名残なんですねー。
回答ありがとうございますねー。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- WordPress(ワードプレス) httpからhttpsへのリダイレクト設定について 2 2022/04/17 09:49
- Visual Basic(VBA) VBAのエラーについて 2 2023/08/02 17:46
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#とC++とJavaが学べる書籍につ...
-
Pythonって何を意識した言語な...
-
プログラムに書かれる"%"記号の...
-
C言語、C+、C++、C#の違い
-
質問失礼します。 プログラム言...
-
最新のプログラム言語を学ぶに...
-
UWSCはどのプログラミング言語?
-
rpa化する言語としてら何があり...
-
C言語とhtmlの違いを どな...
-
VBScriptで引数を省略したい場合
-
COBOLでのNOT = の AND条件
-
COBOLで文字タイプを数字...
-
楽しくて最高のプログラミング...
-
HTMLてインタプリタの類になる?
-
UNITY Float型の接尾辞fって
-
vbaとc言語の関連性について
-
TO_CHARで小数点以下がある場合...
-
メダルゲームのプログラム
-
FORTRANと他の言語(c、c++、ba...
-
VCとVC++
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
楽しくて最高のプログラミング...
-
Pythonって何を意識した言語な...
-
C言語とhtmlの違いを どな...
-
プログラムに書かれる"%"記号の...
-
COBOLでのNOT = の AND条件
-
C++ ってなんて読む?
-
質問失礼します。 プログラム言...
-
プログラミング言語の制作方法...
-
UNITY Float型の接尾辞fって
-
C言語って古いですか?
-
Int('1234') で、strをかんたん...
-
COBOLで文字タイプを数字...
-
TO_CHARで小数点以下がある場合...
-
最新のプログラム言語を学ぶに...
-
C++における継続行
-
vbaとc言語の関連性について
-
VBScriptで引数を省略したい場合
-
VBSでDim、Private、Publicの違い
-
HTMLとC++で、どんなホームペー...
おすすめ情報