科学と工学での使用を意図したプログラミング言語は、汎用言語と比較して一貫して奇妙なようです。私の頭の上のいくつかの例:
もちろん、これらの言語にはすべて実際により自然な行列表記などの科学的アプリケーションでの使用を容易にするいくつかの設計機能があります。それでも、これらすべてが不可解にこれらの奇妙な選択をすべて行いますが、これは何も簡単ではなく、言語設計者が他の言語の99%が行うことを選択した場合に簡単に回避できたはずです。ベンダーロックインの理由は何ですか?幅広いソフトウェア開発コミュニティとの連絡がないのですか?他に何か?
私は this スレッドを読み、説明が満足できるものであるとは思いませんでした。 Rが科学的言語として設計されたからといって、規則を完全に無視してhadしたからといって、=の代わりに<-を使用する必要はありません。
そして、IT基準のみに従って判断する場合でも、申し訳ありませんが、どのような基準を意味しますか? APLまたはSNOBOLでprogを記述しようとしましたか?これらの2つの言語は、適切なフィールド(カウントと文字列)で最も強力なIMHOです。しかし、構文は非常に奇妙な(そして効果的な)ものです。APLコードの行を読み取るには数日かかる場合があります。一方、そのようなラインはSWの重要な部分です。安心して涙を浮かべてMathlabに戻ります。
「=」については、平等ではなく代入であることに慣れている人が多い。ところで、Pascalでは、IS等価であり、代入は ":="です。
そして、あなたは本当に平等のための==がより自然であると思いますか?反対に、=と==の混合はCプログラミングで最も一般的なエラーであり、自動制御を使用する現代のIDEでも非常に頻繁に発生します。
1からの索引付けについては、これが唯一の自然な方法です。あなたが子供だったとき、あなたは数えた詩と歌を学びました:1、2、3 ...そして0,1,2ではありません...学校の数学では、カウントは1から始まり、自然/カウント数に属していません。関数の定義がある場合にのみ、非自然なインデックスが発生します。結局のところ、0は、祖先が指を上げてから数千年後に発明されました。
0-startはより簡単に実現でき、Cの登場後すぐにITの実践に入りました。ただし、第1言語のFortranでは、1インデックスが使用されます。産業革命以前の他の言語と同じ。
そして、はい、私は0ベースのカウントの自然さに関するDyjkstraの記事を読みました。そして、彼の主張に完全に同意しません。それはミュージシャンのみにとっては自然なことです。 CとJavaコンパイラを作成する愛好家が0人でも、コードの行数を1から開始します!
1からのインデックス付けは奇妙ではなく、完全に正常で予期されるプログラマを除くです。これは、Cによる0ベースのカウントを期待するように条件付けられているためです(これは、プロセッサアーキテクチャのプロパティから条件付けられました)。
コメントは、さまざまな言語でさまざまな方法で示されます。 no標準的な方法があります。すべての言語は、まだ使用されていない記号またはダイグラフを選択します。
同様に、割り当ては奇妙で理解できない概念ですプログラマを除く;ほとんどの人は、それが=
でも:=
でも<-
でもかまわないので、[意味]を理解するのに苦労しています(そして、彼らにとっては、実際にはより良いです) notは=
を使用します。これは、割り当てが同等ではないことを強調するためです-プログラマー以外がコードを理解するための最も一般的なハードルです)。
要するに、プロのプログラマー以外の人々を対象としたプログラミング言語は、それらを最も使用する人々がそれをそのように望んでいるので、異なって見えます。
3つの問題があります。
今あなたの特定のポイントに:
Matlabがわからないので、ファイル編成の要件についてコメントできません。 Javaでは、パブリッククラスごとに1つのファイルを使用する必要があることに注意してください。
Rでは、_=
_は代入演算子としても使用できます。スコーピングの概念に対処するには、複数の代入演算子_<-
_および_<<-
_が必要であることに注意してください(_<<-
_は、関数内に新しいシンボルを作成するのではなく、外部スコープ内のシンボルに割り当てます)。矢印は他の方向にも使用できるため、コードがきれいになる可能性があります:complex_calculation() -> x
。
1ベースのインデックス付けは数学の標準であり、これはMatlabとRのユーザーがCよりも使いやすいものです。ジュリアは、より良い学習曲線を得るためにMatlabに従います。
コメントの_%
_はTeX/LaTeXでも使用されます。 _#
_は、Unixスクリプト言語とその子孫の慣例にすぎません。
また、「実際の」プログラミング言語には多くの奇妙な部分があることも無視します。 Schemeが_=
_を使用しないのはなぜですか?代わりに:
_(define foo 5)
_
明らかにキャレット_*
_が他の伝統でより一般的であるのに、なぜCは逆参照に_^x
_を使用するのですか?
それはあなたが他の言語に触れたことによると思います。私の頭の上から: