回答:
Perlは、高レベル、汎用、マルチパラダイム、解釈、動的プログラミング言語です。Javaは、高レベルで汎用的な、主に単一パラダイムの静的に型付けされたプログラミング言語です。
したがって、両方とも高レベルです:
高レベルのプログラミング言語は、コンピューターの詳細から強力に抽象化されたプログラミング言語です。
および汎用:
コンピューターソフトウェアでは、汎用プログラミング言語(GPL)は、さまざまなアプリケーションドメインでソフトウェアを作成するために使用されるように設計されたプログラミング言語です。
つまり、PerlでできることはすべてJavaでもできるということです。@KyleHodgsonがASと言及し、その構文の両方がCやC ++から派生などの単純なもののための構文for
ループやif
文は基本的に同じである-と@DipanMehtaのようノート、両方があるごみ収集します。そしてもちろん、どちらも非常に人気があり、活気のあるコミュニティがあります。
しかし、それは類似点が止まるところです。Perlはマルチパラダイムであり、幅広いプログラミングパラダイムをサポートしています。
Perlは単一のパラダイムを推奨しません。それらは本質的に同等であり、構築するものに最適なものを自由に選択できます。もちろん、単一のパラダイムに制限することなく、自由に組み合わせることができます。一方、Javaはほとんどがクラスベースのオブジェクト指向言語です。汎用プログラミングがサポートされていますが、初心者の方はJavaを厳密にクラスベースのオブジェクト指向言語と考える必要があります。
したがって、Perlではコードを構造化する方法は複数ありますが1、Javaは1つだけです。それは悪いことでも(良いことでもありません)、ただ違うだけです。オブジェクト指向のPerlコードを作成していない場合、最初はJavaが少し異質に見えるかもしれません。落胆しないでください。ソフトウェア開発のキャリアを考えている場合、オブジェクト指向は最終的に学習する必要があるものであり、Javaの学習はオブジェクト指向の基本概念を学ぶ良い方法です-完全な方法ではありませんが、間違いなく良い方法です。
そしてご存じのように、Perlは解釈されますが、Javaは...まあ... まったく別の獣です。Javaでは、Perlで行うようにコードを記述し、コンパイルします。結果は実行可能ファイルではなく、Javaバイトコードです。この中間形式は、(最終的に!)Java仮想マシンで実行されます。これは、Perlインタープリターにやや似ています。A JVMはsimirarlyあなたはPerlのスクリプトを実行するPerlインタプリタをインストールする必要がどのように実行するJavaプログラムのために、あらかじめインストールしておく必要があります2。
Perlのバックグラウンドから来て、覚えておくべき最も重要なことは、バイトコードへのコンパイルのステップです。Javaソースファイルに変更を加えるたびに、それを再コンパイルする必要があります。最初はおかしく聞こえるかもしれませんが、コンパイルには非常に良い結果があります:この段階でコードのさまざまなエラーがチェックされ、コンパイラはプロセスがあればそれを終了することを拒否し、有用なメッセージ(常にメッセージがありますが、有用なメッセージは時々あります)。
最後の大きな違いに私たちをもたらします:
Perlは動的3です。
ダイナミックプログラミング言語とは、コンパイル時に他の言語が実行する可能性のある多くの一般的な動作を実行時に実行する高レベルプログラミング言語のクラスを記述するためにコンピューターサイエンスで広く使用される用語です。これらの動作には、プログラムの実行中に、新しいコードを追加する、オブジェクトと定義を拡張する、または型システムを変更することによる、プログラムの拡張が含まれます。
そして動的に型付けされた4:
プログラミング言語は、その型チェックの大部分がコンパイル時ではなく実行時に実行されるときに動的に型付けされると言われています。
Javaは静的に型付けされます:
プログラミング言語は、実行時ではなくコンパイル時に型チェックが実行される場合、静的型付けを使用すると言われています。
これを可能な限り簡単に言えば、Javaでは変数とメソッドを使用する前にそれらの型を宣言する必要があるということです。他にも違いはありますが、自分でそれらを発見する楽しさを台無しにしたくないでしょう:)
そして最後に、非常に重要な違いが1つあります。Javaは学界5 と企業の世界の恋人の言語であり、学術的な環境でPerlに出会うことはめったにありません(私が彼女に初めて会った場所)。 (まだかなりの数の仕事がありますが、Java、.Net言語、PHPほど多くはありません)。理由についてはコメントしませんが、(悲しい)事実を述べているだけです。あなたはまだ非常に若いので、Javaを学習することで、その道をたどることを選択した場合、コンピューターサイエンスの学位を取得する準備が少しできます。
もちろん、Perlをあきらめないで、Javaを探検してください。それらが類似よりも異なるという事実は、まったく異なるアプローチとプログラミング精神を学ぶことを意味します。それは難しい道ですが、最終的にはあなたがより良いプログラマーになるでしょう。
2 Perlコミュニティは、Parrotを介してPerl仮想マシンの可能性を積極的に調査しています。
3ダイナミックは常に動的型付けを意味するものではありません。
4 Perlはユーザー定義型に対して動的に型付けされ、配列、ハッシュ、スカラー、サブルーチンの区別に関して静的に型付けされ、を介して強く型付けされるuse strict
ため、本質的に可変型システム言語ですが、健全性を保つために動的に呼び出しましょう入力しました。
5ジョエル・スポルスキーがJavaSchoolsの危険に書いているように、悪用のポイントまで。
現在選択されているものは2つの違いに焦点を当てているように見えるので、代替の答えに突き刺してください(実際にはPerlとJavaの間に多くの類似点はありません)。
Perlコードが非常に厳密で直交的(十分にテストされ、十分に文書化され、Mooseまたは厳密なオブジェクト指向を使用)している場合、Javaは非常に直交的で表現力に乏しいため、これらの概念はJavaにも非常にうまく適用されます。