私は筋金入りのプログラマー向けの言語でのプログラミングが大好きです。(私のお気に入りはPythonとDです。)MATLABはエンジニア向けで、Rは統計学者向けです。これらの言語は、筋金入りのプログラマーではなく、筋金入りのプログラマーのように思わない人向けに設計されたようです。私はいつもそれらを使用するのがやや厄介だと感じており、ある程度までその理由に指を置くことができません。ここに、私が特定したいくつかの問題を示します。
- (両方):真のプリミティブが存在しない範囲でベクトルと行列を極端に強調します。
- (両方):基本的な文字列操作の難しさ。
- (両方):ハッシュテーブルや「実際の」、つまり型パラメトリックでネスト可能な配列などの基本的なデータ構造のサポートの欠如または不便さ。
- (両方):コードをベクトル化するために後ろに曲がらない限り、インタープリター言語の標準でも本当に遅いです。
- (両方):彼らは外の世界と相互作用するように設計されていないようです。たとえば、どちらも起動に時間がかかるかなりかさばるプログラムであり、単純なテキストフィルタープログラムを簡単に作成できるようには設計されていないようです。さらに、適切な文字列処理がないため、非常に標準的な形式以外のファイルI / Oはほとんど不可能になります。
- (両方):オブジェクトの向きは非常にボルトで締められたように見えます。はい、できますが、Cのオブジェクト指向よりもはるかに慣用的な感じはしません。
- (両方):参照型を取得するための明白で簡単な方法はありません。ポインターまたはクラス参照はありません。たとえば、これらの言語のいずれかで独自のリンクリストをどのようにロールするかはわかりません。
- (MATLAB):単一のファイルに複数のトップレベル関数を配置することはできません。非常に長い関数とカットアンドペーストコーディングを奨励します。
- (MATLAB):整数は最初のクラス型として存在しないようです。
- (R):基本的な組み込みデータ構造は、高すぎるレベルであり、文書化が不十分であるように思われ、同様であるが低レベルのデータ構造での私の経験を考えると、期待どおりに機能しないようです。
- (R):ドキュメントはいたるところに散らばっており、閲覧や検索が事実上不可能です。悪いドキュメントのためにしばしばノックされ、まだかなりアルファっぽいDでさえ、私が知る限りではかなり優れています。
- (R):少なくとも私が知っている限りでは、良いIDEはありません。繰り返しますが、小さなコミュニティを持つかなりアルファっぽい言語であるDでさえもうまくいきます。
一般的に、十分に包括的なライブラリが存在する場合、MATLABとRはより汎用的な言語の単純な古いライブラリに簡単に置き換えることができると感じています。これは、ライブラリ作成者向けの多くの機能を含む新しい汎用言語では特に当てはまります。
なぜRとMATLABは私にとってとても奇妙に見えるのですか?これらの言語が筋金入りのプログラマーにとって奇妙なものになるかもしれないと気づいた他の大きな問題はありますか?それらの使用が必要な場合、いくつかの良いサバイバルのヒントは何ですか?
編集:私が得たいくつかの答えから1つの問題を見ています。データを分析するときは、パイプライン全体を組み込む1つのスクリプトを作成することを強く好みます。これは、汎用言語を使用する必要があることを意味します。スクリプトを記述してデータを「クリーンアップ」して吐き出し、次に別のスクリプトを作成して完全に異なる環境で読み返す必要があるのは嫌いです。まったく異なるアドレス空間を備えた異なる言語と、残りの部分が大きな摩擦の原因であると考える方法。さらに、接着剤層が存在することは知っていますが、それらは常に恐ろしく複雑で摩擦の原因になるようです。