「一部の言語で嫌いなこと」リストについて私が嫌う5つのことはどうですか?:D
5-オレンジ色の赤を塗ってもリンゴにはなりません。
言語が設計されるとき、デザイナーは通常、それが何のために役立つかを念頭に置いています。何か完全に異なるためにそれを使用した缶の仕事が、それは単にダムでないときに文句。Pythonを取ります。私は誰かが持っているか、誰かがPythonコードからexeを作成するユーティリティをいつか作ると確信しています。なぜ神の地上でそれをしたいのですか?それはきちんとしている-私を誤解しないでください-が、それは無駄です。だから文句を言うのはやめて!
適切に設計されたプロジェクトには、複数の言語のコードが含まれている可能性があります。1つの言語だけではプロジェクトを完了できないと言っているのではありません。一部のプロジェクトは、使用している言語の能力の範囲内である場合があります。
4-あなたは木の脚の上に立っていますか?
プラットフォームは、言語が何をできるかに大きく影響します。最近のガベージコレクター、またはパスカルでさえ「ガベージコレクション」の初期の試みでさえ、メモリのフェード(おそらくmalloc more ram ??)に役立ちます。コンピュータの方が高速なので、もちろん、私たちの言語にはもっと多くのことが期待されています。そして率直に言って、おそらくそうすべきです。ただし、ハッシュテーブルや文字列、またはその他のさまざまな概念を作成するコンパイラーの利便性を犠牲にすると、莫大な費用がかかります。これらは、使用されているプラットフォームに継承されない場合があります。言語に含めるのが簡単だと言うのは、あなたが立つ足がないかもしれないと私に告げるだけです。
3-誰のせいですか?
バグ。ええと。バグが大好きです。なぜバグが好きなのですか。仕事を続けることができるからです。バグがなければ、多くの閉鎖ピザ店があります。ただし、ユーザーはバグを嫌います。しかし、ここに冷たい水の少しのしぶきがあります。すべてのバグはプログラマの責任です。言語ではありません。生成される可能性のあるバグの数を大幅に減らすような厳密な構文を持つ言語は、完全に役に立たない言語になります。その能力はおそらく一方では数えることができるでしょう。柔軟性またはパワーが必要ですか?バグがあります。どうして?あなたは完璧ではなく、間違いを犯すからです。Cで本当に識別可能な例を見てみましょう:
int a[10];
for (int idx = 0; idx < 15; idx++) a[idx] = 10;
私たちは皆、それがどうなるか知っています。ただし、一部のユーザーが気付かないのは、その機能が非常に有益な場合があることです。何をしているのかに応じて。バッファオーバーランは、その機能のコストです。上記のコード。実際に公開したとしたら。それはまた..私とそれを言って..「私のせい」。Cが私にそれを許可したわけではありません。
2-ごみ箱に入れてはいけませんか?
私たちが理解していない言語の機能を指すのは非常に簡単です。なぜなら、私たちはそれを頻繁に使用せず、それを愚かと呼んでいるからです。そこにあると文句を言う。後藤はいつも私を楽しませる。人々は常にgotoが言語であることについて不平を言っています。しかし、私はあなたの最後のプログラムに一種のgotoが含まれていたに違いない。ブレークまたはコンティニューを使用したことがある場合は、gotoを使用しました。それはそれです。確かに、それは「安全な」後藤ですが、それはそれです。後藤さんには用途があります。continueやbreakなどの「暗黙の」gotoが使用されているか、明示的なgotoが使用されているか(実際のキーワードは「goto」を使用します)。その言語開発者は完璧ではありませんが、通常、機能が(その言語に対して)黎明期から存在している場合はそうです。おそらくその側面は、その言語を定義する品質です。意味..それは sが使用されており、下位互換性があるため、おそらくハングしていません。今日使われています。5分前のように。そして、適切に使用されています。まあ..間違いなく誰かがそれを不適切に使用していますが、それは私のリストの#3に関連しています。
1.-すべてがオブジェクトです。
わかりました。これは実際には#2のサブセットです。しかし、これは私がヘイトリストで目にする最もいらいらする不満です。すべてがオブジェクトではありません。属していない、またはオブジェクトである必要のない概念は数多くあります。それらが属していない場所に物事を置くことは醜いだけであり、プログラムの効率を低下させる可能性があります。承知しました。たぶん、言語に依存しません。これは#5にも関係しています。つまり...はい。グローバルは大丈夫です。静的メソッドに相当する関数は問題ありません。オブジェクト指向プログラミングとグローバル関数を組み合わせても問題ありません。さて、それは私たち全員が外に出て、そのオブジェクトモデルからコードを "解放"する必要があるという意味ではありません。コードのセクションまたはプロジェクト全体を設計するとき、舞台裏で何が起こるべきか組み合わせる際に考慮してください。そのコンセプトが存在する場所だけでなく、他の多くの要因。グローバル関数が目的を果たさないのに、なぜクラスや名前空間の概念の中にラップするのですか?静的メンバー変数を取得します。言語と実装にもよりますが、一般的に言えば、あなたは単にグローバルを宣言しただけです。はい、これらの非OOの概念をOOラッパーでラップする理由はいくつかあります。もちろん、自己文書化コードです。それは理にかなっています。だから..私が言うように。外出してコードを「解放」しないでください。しかし、優れた現代の言語には、オブジェクト指向モデリング以外のグローバルな概念があります。はい、私は特に、グローバルコンセプトのないOOプログラミング言語に重大な設計上の欠陥があることを指摘するつもりです。でも… 言語の意図とデザインに依存するので、特定の言語を選択するつもりはありません。ここで分析するには多すぎるためです。だれでも、コードをどこに配置し、最も効果的であるかを検討してください。機能やサポートを追加しないものにフレアをたくさん追加すると、キーボードの摩耗が早くなります。それは誰にとっても良いことではありません。まあ..おそらく、すべてがオブジェクトであると誤って教えた人からのブラウニーポイントが好きでない限り。
要するに、プログラミングはキーボードをうっかりタップするだけではありません。どのプロジェクトにも多くの設計上の考慮事項があります。私はそれが決まり文句であることを知っていますが、あらゆる角度からそれを見る必要があります。今日でもタイプセーフな言語で。あなたは単にコードを取り出してそれがうまく機能することを期待するだけではありません。確かに..それはうまくいくかもしれませんが、それについて取り組む正しい方法ではないかもしれません。全体として、特定の仕事と環境に最も適した言語と形式を選択します。しかし、その背後にある考えを取り除く言語はありません。あなたが考えていないなら..あなたはただタイプしているだけです。