Java や Python を学ぶ前に PHP を学んだことがありますか?

王林
リリース: 2023-02-23 19:20:02
オリジナル
4005 人が閲覧しました

Java や Python を学ぶ前に PHP を学んだことがありますか?

Java と Python のどちらを学ぶかを考える前に、この 2 つの応用分野について話しましょう。

Python の主な応用方向:

1. 科学計算

NumPy、SciPy、Matplotlib、Enthoughtlibrarys などを使用. 多くのプログラム ライブラリの開発により、Python は科学計算を行ったり、高品質の 2D および 3D 画像を描画したりするのにますます適しています。科学技術計算の分野で最も人気のある商用ソフトウェアである Matlab と比較すると、Python は汎用プログラミング言語であり、Matlab で使用されるスクリプト言語よりも応用範囲が広く、より多くのプログラム ライブラリでサポートされています。 Matlab の多くの高度な機能やツールボックスは今でもかけがえのないものですが、日常の科学研究や開発においては Python で実行できるタスクもまだたくさんあります。

2. Web クローラー

(Web スパイダーとも呼ばれる) は、ビッグ データ業界でデータを取得するための中心的なツールです。 Web クローラーが昼夜を問わず自動的に稼働し、インターネット上の無料データを高度にインテリジェントにクローリングしなければ、ビッグ データに関連する企業はおそらく 4 分の 3 減少していただろう。 Web クローラーの作成に使用できるプログラミング言語は数多くありますが、Python は間違いなく主流の 1 つであり、その Scripy クローラー フレームワークは広く使用されています。

3. データ分析

大量のデータに基づいて、科学計算、機械学習、その他のテクノロジーと組み合わせて、データのクリーンアップ、重複排除、標準化、および関連する分析はビッグデータ業界の基礎です。 Python はデータ分析の主流言語の 1 つです。

4. 人工知能

Python は、機械学習、ニューラル ネットワーク、深層学習など、人工知能の大きな分野における主流のプログラミング言語であり、広く使用されているサポートとアプリケーション。

Java の主なアプリケーションの方向性:

1. エンタープライズ レベルのアプリケーション

これは現在最も広く使用されています。 Java アプリケーション この分野では、ほぼ唯一のものです。さまざまな産業アプリケーション、企業情報化、電子政府などを含む分野には、OA OA、顧客関係管理 CRM、人事 HR、エンタープライズ リソース プランニング ERP、ナレッジ マネジメント KM、サプライ チェーン マネジメント SCM、企業機器管理が含まれます。システム EAM、製品ライフサイクル管理 PLM、サービス指向アーキテクチャ SOA、ビジネス インテリジェンス BI、プロジェクト管理 PM、マーケティング管理、プロセス管理ワークフロー、財務管理など、考えられるほぼすべてのアプリケーションが含まれます。

2. 組み込みデバイスおよび家電製品

ワイヤレスハンドヘルドデバイス、スマートカード、通信端末、医療機器、情報家電 (デジタル TV、セットなど)トップボックス、冷蔵庫など)、自動車用電子機器などはすべて、近年人気のある Java アプリケーション分野であり、特に携帯電話での Java アプリケーションと Java ゲームはさらに人気があります。

次に、Python と Java を簡単に比較してみましょう:

静的言語と動的言語:

静的言語:
java、c、c、go など。
強く型付けされた言語 (静的型付け言語) は、変数/オブジェクトの型宣言が必要な言語を指し、通常はコンパイルと実行が必要です。厳密に型指定された言語とは、変数の型が一度決定されると変換できない言語です。

動的言語:
python、javascript、php、rubyなど。
弱い型付け言語(動的型付け言語)とは、変数/オブジェクトを必要としない言語を指します。型宣言 通常、コンパイルは必要ありません (ただし、コンパイルされたバージョンもあります)。動的型付け言語は、データ型が実行時に決定される言語です。変数を使用する前に型宣言をする必要はなく、通常、変数の型は割り当てられる値の型になります。
逆に、弱い型指定言語では、変数の型はアプリケーション コンテキストによって決まります。

静的言語の利点:

型の宣言が必須であるため、IDE は強力なコード認識機能を備えているため、複雑なビジネス ロジックを実装する場合、ライフサイクルの長い大規模商用システムやアプリケーションの開発では、IDE に依存することで確実なシステム開発が可能です;
静的言語は比較的閉鎖的であるため、コードへのサードパーティ開発キットの侵入を最小限に抑えることができます;

動的言語の利点:

Java のリフレクションやリフレクションに基づく AOP など、静的言語のいくつかの高度な概念。これらの概念は Java 初心者や一般の人にとって役立ちます。わずか 1 ~ 2 年の実務経験では、これらの概念を理解することは困難であり、ましてやそれを実装する方法自体は困難です。 AOP を使用したことがある人ならわかると思いますが、これらの概念を理解して使いこなすのは難しく、開発効率は相対的に低くなります。動的言語でデコレータを使用したことがありません。

動的言語では、Java の AOP の概念はデコレータを使用して直接完成させることができ、Python 言語自体の一部です。 Java のように、完了するためにサードパーティの導入が必要になるわけではありません。

Python は動的言語であるため、これを簡単に実現できます。動的言語の特性により、誰でもクラス全体の初期化を制御したり、オブジェクトを動的に変更したりすることが非常に簡単になります。これらの特性により、非常に簡単になります。動的言語の柔軟性は静的言語をはるかに上回ります。

インタープリタおよびコンパイルされた言語

ここでの解釈の実行は、コンパイルの実行に関連しています。 C/C などのコンパイル言語で書かれたプログラムは、ソース ファイルからコンピューターで使用される機械語に変換し、リンカーによってリンクしてバイナリ実行可能ファイルを形成する必要があることは誰もが知っています。このプログラムを実行すると、バイナリ プログラムをハードディスクからメモリにロードして実行できます。

Python の実行プロセスは Java に似ています。
Python インタープリターはソース コードをバイトコードに変換し、Python インタープリターはこれらのバイトコードを実行します。

具体的な Python プログラムの実行プロセス:

- Python プログラムの実行後、Python インタプリタが起動され、Python プログラムがバイトコードにコンパイルされます。オブジェクトPyCodeオブジェクト。

- 実行時、コンパイル結果 (PyCodeObject オブジェクト) はメモリ内にのみ存在します。このモジュールの Python コードが実行されると、コンパイル結果は pyc ファイルに保存されるため、次のtime コンパイルする必要はなく、メモリに直接ロードされます。 pyc ファイルは、ディスク上の PyCodeObject オブジェクトを表現したものにすぎません。

- この PyCodeObject オブジェクトには、文字列、Python ソース コード内の定数値、および構文解析を通じてコン​​パイルおよび生成されたバイトコード命令が含まれています。 PyCodeObject オブジェクトには、これらのバイトコード命令と元のコード行番号との対応関係も格納されるため、例外が発生したときにコードのどの行が位置するかを示すことができます。

Java も最初にバイトコードにコンパイルされ、その後
インタプリタで実行されます。Java は非常に特殊です。Java はコンパイルする必要がありますが、機械語に直接コンパイルされるのではなく、バイトコードにコンパイルされます。その後、バイトコードは Java 仮想マシン上で解釈された方法で実行されます。 Python も同様のアプローチを使用しており、Python は最初に Python バイトコードにコンパイルされ、その後、特殊な Python バイトコード インタプリタがバイトコードの解釈と実行を担当します。

Python における GIL

GIL の正式名称は Global Interpreter Lock (グローバル インタープリター ロック) で、ソースは Python 設計の最初に検討したもので、データのセキュリティのために行われます。

Python マルチスレッドでは、各スレッドの実行方法:
1. GIL を取得します
2. スリープするか、Python 仮想マシンがサスペンドするまでコードを実行します。
3. GIL を解放する

スレッドが実行したい場合は、まず GIL を取得する必要があることがわかります。GIL を「パス」とみなすことができ、Python プロセスでは、 GILは1つだけです。パスを取得できないスレッドは、実行のために CPU に入ることができません。
GIL ロックが解放されるたびに、スレッドがロックを競合してスレッドを切り替え、リソースを消費します。また、GIL ロックのため、Python のプロセスは同時に 1 つのスレッドしか実行できません (GIL を取得したスレッドが実行できます) これが、マルチコア CPU 上で Python のマルチスレッド効率が高くない理由です。
各プロセスは独立したGILを持ち、互いに干渉することがないため、本当の意味での並列実行が可能となり、Pythonではマルチプロセスよりもマルチプロセスの方が実行効率が良くなります。スレッド化 (マルチコア CPU のみ)。

GIL の存在により、Python のマルチスレッドのパフォーマンスは非常に低く、マルチコア CPU を活用できず、そのパフォーマンスはシングルスレッドよりもさらに悪くなります。したがって、マルチコア CPU を使用したい場合は、マルチプロセスまたはコルーチンを使用することをお勧めします。

Python ガベージ コレクション

ガベージ コレクションについて話すときは、通常、参照カウント モデルが使用されます。これは、最も直観的でシンプルなガベージ コレクション テクノロジです。 Python も参照カウントを使用しますが、参照カウントには次の欠点があります:

1. 参照カウントを頻繁に更新すると操作効率が低下します

2. 参照カウントでは循環参照の問題を解決できません

Python は、マーククリアランスと参照カウント メカニズムに基づく世代別コレクションという 2 つの主流のガベージ コレクション テクノロジを使用します。

上記の内容は参考用です。

推奨 Python ビデオ チュートリアル: Python ビデオ チュートリアル

推奨 Java ビデオ チュートリアル: JAVA ビデオ チュートリアル

以上がJava や Python を学ぶ前に PHP を学んだことがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!