最近、私は答えるしか仕方がなかった2つのテキストに出会いました。 最初の最悪の記事は、デイリーWTFの記事「プログラミングの裏技」です。 またはそのようなもの 。 」 2つ目は、 なぜ関数型プログラミングが普及していないのかについての投稿です。
IT業界のほぼすべての分野で何らかの方法で自分自身を試したことがありますが、私は、面白くない重要な問題はないと確信しています。 非常に単純な理由で、どんな機械でも、退屈でささいな、機械的な作業に従事する必要があります。 いや、本当に! 私たちはプログラマーです。 他の人にも同じことをすれば、私たちではないにしても、だれがコンピューターを使って作業を簡単にすることができますか?
プログラミングは、完全な愚かさのためにのみ吸い込むことができます。 ユーザーインターフェイスプロパティを公開するために5行のコードを繰り返しますか? なんてこった ルーチンを聞いたことがありますか? 抽象化? コード生成はどうですか、それともDSLを書く価値がありますか? さて、これらの5行を数回コピーしただけでも大丈夫です。 しかし、何度も繰り返し行う場合(これらの行をわずかに編集する場合もあります)、おそらくこれを無視する方法について考える必要があります。
抽象化は、面白くて日常的な作業の割合を増やし、退屈なコードの量を減らすのに役立ちます。 5行のコードが1万回繰り返されるのではなく、同じ1万回繰り返される1行を書くことができた場合、プロジェクトは5行から1万行に減り、少なくとも5行、さらには25倍も速く書けます。 できるだけ早く汚い仕事を取り除いてください、そうすればあなたは本当に面白いことをするより多くの時間を持つでしょう。
開発言語の変更については一言も言いませんでした。標準的でない思考、または少なくとも単なる思考について話しているだけです。 しかし、少なくとも新しいツールと抽象化の方法を提供するため、新しい言語を学習するとプログラミングがより魅力的になります。 実際、一部のプログラミング言語は他のプログラミング言語よりも優れており、知識が豊富なほど、優れた言語を知っている可能性が高くなります。 何もよくわからなければ、それを利用することはできません。
Daily WTFに関する記事の私の最初の印象は、これがアフリカの飢えた赤ちゃん症候群のもう1つの症状だということでした。 さて、あなたは写真を見ました。 通常はアフリカにある第三世界のいまいましい穴にいる子供ですが、アジアや南アメリカに行きます。 病気や寄生虫に疲れた空腹の子供たちは、短い人生を運命づけられ、剥奪と残酷さに満ちていました。 しかし、彼らはそのような人生しか知らないので、彼らは幸せそうに笑っています。 彼らは他に何も見なかったし、最高のシェアについて聞いていなかった。 それが彼らの人生です。 私は、多くのプログラマーがこれらの子供のようなものだと思うことがよくあります。 彼らは和解しており、インターフェイスのプロパティを設定するコードの半ダース行を書くことに何の問題もありません。 バグやウイルスに感染し、肥大化した、遅く、完全にサポートされていないソフトウェア-それらのためのプログラミングです。
しかし、2番目の投稿は、実際には状況がはるかに悪いことを確信させました。 これは単なる無知ではありません。 多くのプログラマーは知らないだけでなく、もっと良いことを知りたくないし 、無知のままでいられる言い訳を求めます。 空腹の子供が提供された食べ物を拒否したかのように。
事実、私はすでにその投稿からすべての議論を聞いていました。 業界が手続き型プログラミングからオブジェクト指向に移行したとき、パラダイムの最後の大きな変化を目の当たりにしました。 さらに、以前の革命の反響、つまり非構造プログラミングから手続きプログラミングへの移行を聞きました。 C ++やJavaを学びたくない人から、これらすべての議論、あるいは言い訳を聞きました。
これらの言い訳は、いかなる門にも登りません。 自分で見てください:
- 数千行のコードより短い例は軽薄であるため、考慮できません。 実際のプログラムは数万から数十万の行で構成されており、あちこちで数行を保存しても何の役割も果たしません。 数十行より長い例を読む人はいないので、考慮されていません。
- 言語の高度な機能を使用する例は、言語が複雑すぎて学習が難しいことを証明しています。 そのような機会を使用しない例は、実際にはその言語を書いていないため拒否されます。
- プログラマーが現在従事している領域に直接関係しない例は拒否されます。 ゲーム開発者向けの3Dグラフィック、サーバーアプリケーション、およびビジネスロジックに携わる人向けのデータベースへのアクセス、デスクトップアプリケーションの開発者向けのグラフィカルインターフェイス。 「私のコードを書いていない場合、あなたの物語の用途は何ですか?」
- 誰もが異なる能力を持っているため、異なる開発チームの有効性を直接比較することはできません。 また、特定の言語に対して誰もが異なる能力を持っているため、異なる言語で同じ開発者の有効性を比較することも不可能です。 1つの問題を解決するために同じ方法を使用することはできません。この方法は特定の言語に引き付けられ、別の言語では異なる方法で解決する必要があるためです。 しかし、それでも別の方法を適用した場合、暖かさとソフトを比較するものは何もありません。 すぐに比較できるものはありませんか? したがって、証拠はなく、あなたの意見は偏っています。
- 私の言語のコンパイラーには何百年も投資されており、週末にハッカーが書いたオプティマイザーであるあなたの言語のコンパイラーと比較して、はるかに高速なコードを生成します。 これまでもこれからもそうです。
- 書店の棚が教科書で一杯になったときに初めて言語が普及し、上司が読む光沢のある雑誌で言及されており、数千人のプログラマーがその言語を要求する数千の仕事に並んでいます。 つまり、ポピュラーになる唯一の方法はポピュラーになることです。 また、あなたの言語は人気がないため、決して普及しません。
- あなたの言語は学ぶのが難しいです。 すでに知っているので、私の言語は簡単です。 人々はまだ知らないことを学びません。
私は「退屈な」データ処理に従事していました。 この「退屈な」コードでは、 面白くて深い問題を見つけることができます。 特定の言語やパラダイムを賞賛するとき、私はあなたに何かの製品を詰め込もうとはせず、ただのがらくたプログラミングを取り除く方法を提案しています。 あなたが決定したら、私と一緒に、面白いタスクの魔法の土地に来てください。そこでは、副産物コードを時々ではなく、長い間扱う必要があります。 人生が常に沸騰する神秘的な国、ワトソン! どうやってこれを実現し、どのように人生をより良くするか? プログラミングが時代の偉大な芸術と工学の奇跡であり、決して悪いことではない場所に私と一緒に来てください。
最初の一歩を踏み出すには? 最初に新しい言語を学びます。