プログラミングの司祭

ごく最近、私はなぜPHPを使用する多くのプログラマーが「一般的に」プログラマーと異なるのかを理解しました。 私の理解の基礎は、Ruslan Kosolapovの言葉でした。「これはPHPです。 理解することは不可能で、覚えるだけです。」 しかし、実際にはそうです。 理由を説明します。



PHPと密接に連携するほぼ全員が、言語を学ぶのは簡単ではないことに同意します:ほとんどの言語で、言語に定められた原則を理解し、必要に応じてドキュメントを参照する必要がある場合、焦点は機能しません:ドキュメントを実際に見る必要があります常に-ロジックが機能していないため。 実際には、PHPには膨大な数の機能があり、グローバルな範囲に広がっています。 これらの関数は、異なる方法で、異なる人々によって、それらを呼び出す方法、パラメーターの受信を整理する方法、および結果を返す方法について明確な合意なしに作成されました。 非常に、非常に多くのことが自然発生的に、歴史的に発生し、これが発生した場合、それをやり直すことはできません。 各拡張機能内-独自のスタイルと独自のロジック。 拡張機能から関数がインポートされる範囲はグローバルですが、グローバルな標準はありませんでしたし、そうでないことはすでに明らかです。これに必要な作業量が大きすぎます。

PHPは歴史のある言語であり、レイヤーを持っています-古代都市のようなものです。 それはホームページを作成するためのPerlスクリプトのセットから始まり、Cで書き直されました(数回)。 エンジンは対応し、自発的に追加された機能は、下位互換性の理由からほとんど変更されませんでしたが、パラメーターの数が増加しました。 しかし、パラメータのリストが減少するように、または、たとえば、機能がなくなった-これは私の記憶にありませんでした(これは1998年からです)。 ところで、関数の引数の順序は覚えておく必要があります。 簡単な例:検索関数preg_match()およびereg()が最初に「探しているもの」、次に「what」を渡す必要があり、3番目のオプションのパラメーターで、見つかったものを保存する変数を渡し、次に関数strpos()を渡すことができます; ちなみに、関数名の不均一性と不整合性を評価します)。 関数が何を返し、どのような状況で-覚えておく必要があります。 何も見つからない場合、同じstrpos()はfalseを返します。ドキュメントは、関数が0を返すことができることを強調しています。つまり、型を考慮せずに戻り値とfalseを比較する必要があります。偽



それは主題にあまり含まれていない人々のためのすべてのことわざでした。 シートベルトを締めてください。おとぎ話が始まります。

上記のすべては、他のスキルとともに、プログラマーに別の逆説的なスキルを持っていることを必要とします:蓄積された知識を一般化しようとしないこと。 個人的には、適合する多くのケースを覚えるよりも、ルールを理解したり思いついたりする方がずっと簡単でした。 この場合、ルールが機能する場合よりも多くの例外がルールにあります。



PHPの操作を非常に迅速に開始できます(正確で、時には便利な構文のため)。 それが初心者がそれを学び始め、そして原則として、プロジェクトの研究と並行して始まる理由です。 そして、不条理が始まります。人々は最初、継承された低品位コードを扱うことに慣れます。 また、プロジェクトのコードボリュームは、理論的には正しく書き換えることが可能な場合がほとんどですが、...多くの経験や自由な時間などがある場合にのみ、それを言うのは非現実的です。 そして、次の大量のコードは、次に来るすべての人を恐怖に陥れ、少し習得するための第一歩を踏み出します。

これがWindowsの構成です-覚えておくべきこともたくさんあります。 ルールはほとんどなく、各メニューは特別なケースです。 すべてがシンプルで明確に思えますが、個人的には、絵を使わずに説明資料を読み、必要な機能を1か所で設定する方が、スマートな外観で最小の塗り絵に貼り付けるよりも簡単です。 すばやく簡単に開始できますが、はい。



最近、私はLiveJournalの投稿を読みました。そこでは、Windows EnikeyschikiとD&Dの司祭を比較するというアイデアがコメントを通過しました。 「D&Dゲームシステムでは、このような興味深い区分が、プリセットの精神能力の特性について発明されました。INT(知性)とWIS(知恵)です。 魔術師にとって、INTは司祭にとってより重要です-WIS、ゲームの本質はほぼ同じですが-魔法の使用(平均的な素人の観点からは「コンピューターマン」の仕事の投影ではないにしても) ただし、ここではゲームの仕組みは必須ではありませんが、論理構造(INT)を独自に構築するか知識を蓄積する(WIS)ことにより、分類自体は世界を理解する方法にとって非常に興味深いものです。



これは、私が目的とするものです。一般的に、多様で無関係な事実を思い出すよりも、開発者が開発した「汲み上げられた」思考メカニズムがプログラマにとってより重要です。 しかし、PHPプログラマーにとっては、状況はまったく逆に変わります。理解しようとせずに事実を覚えておくことが重要です。 そして、異なるタイプの引用符が異なる速度で処理されることを覚えているという事実のために、なぜプログラマー間のプロジェクトの聖戦が勃発するのか疑問に思っています(違いは無視できますが、実際の生活では不可能な巨大なサイクルで顕著になります) 、2番目は、実際にそのようなサイクルを実際にどこでも行う必要はなく、決して行う必要がないことを示しています。 第一に、これは事実であり、これは常に考慮されるべきです。 同時に、彼は、同じサイクルで不定変数をチェックすることはリソースの浪費であることを理解していません。 エラーを保護できるが、エラーがこれから消えないこと。 トランザクションの独立性が必要な理由を理解していません。 片方が賢いということではなく、もう片方が愚かではありません。 これは、データを収集し、さまざまな角度から状況を分析したいという願望ではなく、記憶に焦点を当てた単なる異なるタイプの思考です。 また、PHP自体は、ツールとして、手段として、コミュニケーションのトピックとして、分析的なタイプではなく、主に「記憶に残る」人々を惹きつけます。

司祭のプログラミング。



All Articles