PHP の魅力
古い古典的なスクリプト言語である PHP について考えるとき、私たちはその印象的な特徴の 1 つを思い浮かべずにはいられません。それは、すぐに使い始めることができるということです。この言語について深く広範囲に理解していること。私たちが知っている言語の中で、この機能を完全に具現化できる言語はほとんどありません。もう 1 つの極端な例は Java 言語です。単純な hello world プログラムを作成する場合でも、Web アプリケーションを実行するのはそれほど単純ではありません。そして、これはすべて PHP では簡単なことです。
プログラミング機能の点では、PHP は Perl よりもわずかに優れているだけです。 Perl は古代のスクリプト言語です。初期の Web アプリケーションのほとんどは Perl で書かれており、Perl は C 言語に非常に似ており、非常に柔軟に使用でき、ファイル操作と処理に関しては C 言語と同じ利便性と速度を備えています。
しかし、Perl の柔軟性と「過剰な」冗長構文のせいで、多くの Perl プログラムのコードは読みにくく保守しにくいです。Web が登場したばかりの頃、Web は Perl で書かれるだろうと誰かが言っていたのを覚えています。大規模なアプリケーションに関しては、失敗に直面することは承知しています。
Perl の哲学は、同じことを解決する方法は常に複数あるため、読みにくく理解するのが難しいプログラムが多数生じるということです。大規模なシステムの場合、Perl で作成するメンテナンス コストは比較的高くなります。また、Perl は CPU を大量に消費し、効率性にいくつかの問題があるようです。
それに比べて、PHP は、有名なオープンソース CMS システム Drupal など、いくつかの大規模なアプリケーションを作成しました。私の友人のナンシー・ニコライセンは、旅行 Web サイトを構築したいと言いました。そして、私は彼女に Drupal を検討するよう提案しました。彼女の言葉によれば、彼女がこのユーザー コミュニティに惹かれたのは、そのパワーと使いやすさでした。
PHP を使用すると、初心者でもプログラミング理論や実践の学習に多くの時間を費やすことなく、興味のある機能を直接プログラミングできます。コードを記述するだけで、Web ページを通じて効果を確認できます。
PHP の欠点
しかし、これはこの言語の問題でもあります。 PHP で書かれたコードの多くはエラーだらけであることがよくありますが、これらのコードは人々によってコピーされることがよくありますが、誰も注意深く分析したり研究したりしません。このコードは通常、お互いのコードをコピーすることに慣れているプログラマによって作成されます。このコードの品質が低い理由は、これらのプログラマが通常、理由を尋ねることに慣れておらず、原理を理解することを好まず、単に使用するだけであるためです。それ。
私が最初にこの言語についてもっと知りたいと思ったとき、ファイルのロックに関する例をいくつか見たかったのですが、その結果、たくさんの例を見ましたが、どれも正しくありませんでした。証明されているように、PHP は主にデータベースで使用され、一貫性の問題はすべてデータベースで処理されるため、ほとんどの人は、根本的な問題を考慮することなく、データベースからのデータにアクセスすることだけを気にします。ただし、この言語はデータベースとの対話に関する上位レベルの問題だけでなく、ファイル システムとの対話に関する下位レベルの問題も処理できます。私の感覚では、PHP コミュニティのほとんどの人は、どうすれば良い結果が得られるかのみを気にしており、実際の実装原理を気にしている人はあまり多くないため、このような間違った傾向が現れています。
その後、PHP 5 がリリースされ、以前のバージョンに比べて大幅に改善されましたが、主に C++ と Java から抽出されたいくつかの機能が追加されましたが、人々はあちこちでいくつかの新しい機能を探すだけで、それらに注意を払うことはありませんでした。追加された各機能とその言語への影響の分析。
対照的に、私が Python 言語を長年観察したところによると、過去 10 年間に追加されたすべての新機能は繰り返し分析され、改良されてきました。時間が経てば誰が正しいのか間違っているのかがわかるか、PHP コミュニティがこれらの機能の扱い方を見つけ出すでしょうが、私はそれが非常に疑わしいです。
最近、私は新しく開設したサイトを実装するためにPHPを使用しています。これを選択する鍵は、単純な開発にのみ使用するということです。たとえば、PHP を使用すると、HTML にファイルを含めることができないなど、非常に愚かな HTML の問題を解決できます。 PHP ではこれを簡単に行うことができ、サイト全体にデザインを簡単に実装できます。場合によっては、いくつかの小さなものを実装してページに埋め込むだけで済みます。
ただし、完了するタスクが複雑になるにつれて、Python を使用することを選択する方が良いことがわかりました。そのため、単純なタスクを処理するには PHP の方が適しています。
Python のコアは非常に合理化されており、機能が豊富で、プログラム構築に優れた基盤を提供します。 C と C++ の利点を組み合わせた Python プログラムは、適切な構造とメソッドを採用する限り無限に拡張できます。もちろん、それ自体にも欠点があります。たとえば、Python の正規表現のサポートは PHP ほど強力ではないと不満を漏らす友人もいます。
Python
まず、構文の観点から見ると、Python は Perl ほど柔軟でコンパクトではありません。適度としか言えず、basic、pascal、javaに近い感じです。オペレーティング システム上で実行されるアプリケーションを作成でき、Web コードを作成できます。スクリプト言語ではありませんが、Java、C++、および C と同様の機能を備えています。コードの実行効率が高く、C++とほぼ同等のコードもあります。 C++ に組み込むこともできるため、非常に便利です。これはゲーム開発で最も広く使用されており、オンライン ゲームの作成に C++ が最も広く使用されていることは誰もが知っています。 Python はゲームの特殊効果を処理するのに非常に高速です。Python をよく学べば、ゲーム開発会社で良いポジションを見つけることができるでしょう。ただし、Ruby よりも古い言語ですが、多くのフレームワークがありますが、Web 開発にこれより優れたフレームワークはありません (jsp には j2ee プラットフォームがあり、asp には .net プラットフォームがあります)。小さなウェブサイト。 Linux システムを使用している場合は、perl と同じようにコマンドを記述するのが非常に適しており、非常に高速に実行されます。多くの利点がありますが、大規模なプロジェクトで使用する人はほとんどいません。個人的には、大規模なプロジェクトには Java が最適であると感じています。 Python の構文は非常に厳格であるため、業界では Python を明確な言語と表現していますが、これは Perl とは正反対です。これもメリットです。 Perl は書くのは簡単ですが、読むのは難しいのに対し、Python はプログラマーに適切なプログラミング習慣を強制します。幸いなことに、彼にとってそれはとても簡単に学ぶことができました。最新のデータによると、プログラミング分野における Python のシェアは着実に上昇しており、Python は 6 位にランクされています。上位 5 つは Java、C、PHP、C++、VB です。有名な検索エンジンである Google も Python を広く使用しています。さらに驚くべきことは、Nokia スマートフォンで使用されている Symbian オペレーティング システムでは、Python が C++ と Java に次ぐ 3 番目のプログラミング言語になったことです。 2006 年の Google プログラミング コンペティションには参加言語の 1 つとして Python が含まれており、Python の影響力の大きさがわかります。
Ruby
Ruby はオブジェクト指向プログラミング言語であり、PHP のようなスクリプト言語です。彼女が追求しているのは「簡単で速いオブジェクト指向プログラミング」。 Ruby はインタープリタ型言語であるため、コンパイルを行わずに迅速にプログラムを作成できます。同時に、Ruby は Perl と同様の強力なテキスト処理機能を備えており、単なるおもちゃではなく、実用的なプログラミングにも使用できます。また、C言語を使ってRubyの機能を簡単に拡張できるため、さまざまなライブラリのフロントエンドとしても利用できます。 「シンプルなオブジェクト指向言語が欲しい」、または「Perl の関数は使いやすいけど、その構文はとても耐えられない」と考えたことがある方、または「Lisp シリーズの言語の考え方は難しい」と考えたことがある方は、それは良いですが、どこにでも括弧があるのは本当に迷惑です。少なくとも計算は通常のスタイルで記述する必要があります。」そうすれば、Ruby があなたを満足させるかもしれません。
要約すると、Ruby には次の利点があります:
インタープリタ
Ruby はインタープリタ言語であり、そのプログラムはコンパイルなしで簡単に実行できます。
変数には型がありません
Ruby 変数には型がないため、静的な型の一致について心配する必要はありません。それに伴い、エラーチェック機能も弱くなっています。
変数宣言は不要
すべての変数は宣言なしですぐに使用できます。また、変数名からどのような変数(ローカル変数、グローバル変数、インスタンス変数)であるかを判断できます。
シンプルな構文
構文は比較的単純で、Algol 構文に似ています。
メモリ管理不要
ガベージコレクション(Garbage Collect、GC)機能により、使用されなくなったオブジェクトを自動的にリサイクルできます。
すべてはオブジェクトです
Ruby は最初から純粋なオブジェクト指向言語として設計されたため、整数などの基本データ型から始まるすべてはオブジェクトであり、情報を送信するための統一されたインターフェイスを備えています。
クラス、継承、メソッド
Ruby は確かにオブジェクト指向言語の基本機能を備えています。
特別なメソッドはオブジェクトにメソッドを追加できます。たとえば、GUIのボタンを押したときの動作をメソッドとして記録したり、それを使ってプロトタイプベースでオブジェクト指向プログラミングを実行したりすることもできます(誰かがやるかもしれません)。
混合挿入用モジュールを使う(Mixin)
Rubyは多重継承を意図的に放棄していますが、混合挿入の機能を持っています。モジュールを使用して、クラスの境界を越えてデータやメソッドなどを共有します。
イテレータ
この関数はループを抽象化できます。
クロージャ
は、特定のプロセスの断片をオブジェクト化できます。プロセスのオブジェクト化されたフラグメントはクロージャと呼ばれます。
強力な文字列操作/正規表現
Perl をテンプレートとして使用して、強力な文字列操作と正規表現検索関数を作成します。
超長整数を含む
超長整数を追加すると、非常に大きな整数を計算できます。たとえば、400 の階乗を計算するのも簡単です。
エラー処理機能付き
エラー処理機能を使用すると、エラー状況を処理するコードを作成できます。
OSに直接アクセス可能
Rubyはほとんどのシステムコールを使用可能(UNIX)。 Ruby単体でもシステムプログラミングが可能です。
動的読み込み
OSがサポートしている場合、実行時にオブジェクトファイルを読み込むことができます。
しかし、Ruby には次の欠点もあります。
Ruby On Rails は、Struts のような多数の設定ファイルを必要としないという利点があります。アクセスパスや URI など、すべてがデフォルトの設定を採用します。これは欠点でもあり、柔軟な設定ができません。
要約すると、Ruby は中小規模の Web プロジェクトに非常に適しているということです。これは jsp (J2EE) と競合しません。一方はローエンド、もう一方はハイエンドです。競合は PHP によって引き起こされますが、PHP は学習が簡単で、無料であり、長年のテストを経て非常に安定しており、現在、大企業、中堅企業、中小企業に最も好まれています。 Google、Tencent、NetEase などの大規模なネットワーク グループはすべて PHP を使用しているため、特に Linux クラスター テクノロジの普及により、PHP は Ruby の影響を受けにくくなっています。しかし、過小評価すべきではありません。可能性は非常に大きいです。
PERL
perl と Java は同じです。
まず、Perl の強力な正規表現比較と文字列操作により、この作業が他の言語よりも簡単になります。 Perl は、テキスト ファイルの切り取り、ひねり、ひねり、平坦化、要約、その他の操作に非常に優れています。ほとんどの生物学的データはテキスト ファイルです。種名、種の関係、遺伝子や配列の注釈、レビュー、カタログ検索、さらには DNA 配列さえもテキスト形式です。現在、テキスト ファイルの形式で存在するが互換性のないデータ形式を持つ生体情報を交換することは、非常に厄介な問題です。この点での Perl の利点は、多くの問題を解決できることです。生物学的データは通常不完全であり、データの生成時にエラーが発生する可能性があります。さらに、生物学的データの特定の値フィールドが無視されたり、空になったり、特定の値が期待される場合があります。複数回表示される (たとえば、実験が繰り返される) か、データが手動で入力されているためエラーが含まれています。 Perl は、値が空であっても、奇妙な文字が含まれていても気にしません。正規表現を作成すると、一般的なエラーを抽出して修正できます。もちろん、この柔軟性には欠点もあります。
Perl は書きやすく、迅速に開発できます。インタプリタを使用すると、すべての関数の型とデータ型を宣言する必要がなくなり、未定義の関数が呼び出された場合にのみエラーが発生します。また、デバッガは Emacs と連携して快適な会話型開発モデルを使用できます。
Perl は優れたプロトタイピング言語です。新しいアルゴリズムのプロトタイプは、より高速なプログラミング言語で直接記述するよりも、Perl でプロトタイプを作成するのが合理的です。場合によっては、Perl がすでに十分に高速であるため、プログラムを移植する必要がないことがわかります。C で小さなコア プログラムを作成し、それを動的にロードされるモジュールまたは外部実行可能プログラムにプログラムすることができます。 Perlで行われます。この部分の例は、http://waldo.wi.mit.edu/ftp/distribution/software/rhmapper/ にあります。
強調すべきことの 1 つは、Perl は Web CGI の作成に非常に優れており、実験のたびにデータがインターネット上に公開されるにつれて、その重要性が高まるということです。遺伝子センター環境での Perl の経験は、最初から最後まで称賛に値します。しかし、Perl にも問題があることがわかりました。その緩やかなプログラミング スタイルにより、他の厳密な言語では発見される可能性のある多くのバグが発生します。たとえば、Perl では、値を割り当てる前に変数を使用できます。これは、必要な場合には便利な機能ですが、単に間違った識別名を入力した場合には大惨事になります。同様に、関数内でローカル変数を宣言することを忘れがちで、その結果、誤ってグローバル変数に変更してしまいます。 最後に、Perl が不十分なのは、グラフィカル ユーザー インターフェイスの構築です。 Unix に忠実なユーザーはコマンド モードですべてを実行できますが、ほとんどのエンド ユーザーはこれに同意しません。ウィンドウ、メニュー、およびバウンス パターンは、必要なファッションになっています。