Pythonの特性とメリットとデメリットのまとめ

3965 ワード

*最近Pythonを使い始めましたが、その特徴がよく分からないようなので、整理するために文章を書きました.
-概要-
1.Pythonの特性:スクリプト言語、ダイナミックタイプ言語、プラットフォームから独立
2.利点:使いやすく、開発速度が速く、拡張性と移植性が高い
3.短所:遅い(コンパイル言語に対して)+GIL

1.Pythonとはどんな言語ですか。


Pythonはプロや非プロに人気のある言語です.特に、最近はPythonを使って大量のデータ分析が行われているので、より人気があります.
1991年にプログラマーGuido van Rossumが開発したPython
  • 語の法位は簡単です.
  • は毒性が高い.
  • この2つの理由で、多くの人が使いやすいです.
    しかし、簡単で学びやすいため、言語の使用に問題があると考えられていますが、その特徴とメリットとデメリットをまとめてみましょう.

    2.Python特性


    2.1スクリプト言語


    Pythonはスクリプト言語で、コンパイルせずにコードを直接チェック、変更、作成できます.
    *컴파일(Compile)
    컴파일이란 인간이 작성한 코드를 컴퓨터가 이해할 수 있도록 기계어(바이너리 코드)로 번역하는 과정을 의미합니다. 
    즉, C++나 Java와 같은 언어로 코드를 작성하면 컴퓨터가 이해할 수 있도록 해당 코드를 컴파일하여 기계어로 번역하게 됩니다. 
    이후 실행할 때 기계어로 번역된(컴파일된) 파일을 실행하는 원리입니다. 
    반면, 스크립트 언어는 이런 컴파일 과정 없이 실행과정에서 번역과 실행이 동시에 일어나므로, 
    수정이 빠르지만 컴파일 언어보다 느린 실행속도를 보여줍니다. 

    2.2. ダイナミックタイプ言語


    Pythonは、変数のデータ型を指定することなく、宣言するだけで値を指定できる動的タイプ言語です.
    これらの宣言変数のデータ型は、コードの実行時に決定されます.
    #Java
    int a = 10
    
    #Python
    a = 10
    この点は開発時に便利かもしれませんが、コード実行中に予期せぬタイプのエラーが発生する可能性があります.

    2.3プラットフォームから独立した言語


    Pythonは、ほとんどのオペレーティングシステムで使用されている言語です.ウィンドウ、Linux、Macなどのオペレーティングシステムに基づいてコンパイルする必要がないため、どの環境でも使用できます.

    3.Pythonのメリット


    3.1使いやすい。


    Pythonは運動曲線が低いという利点がある.思考と人間の思考が似ているからか、プログラミングを知らない非専門家も学びやすい.
    「HelloWorld」文を出力する場合、JavaとPythonは次のように比較されます.
    #Java
    public class Solution {
       public static void main(String args[]) {
         System.out.println("Hello World");
       }
    }
    
    #Python
    print("Hello World")

    3.2より速い開発速度


    Pythonは仕事の効率が高い.シンプルで簡潔な構文により、迅速に開発でき、より少ないコードでより多くの作業を実行できます.また、複雑な構文によるエラーを減らすこともできます.

    3.3高い拡張性と移植性


    Pythonは、他の言語やライブラリに簡単にアクセスでき、連携できます.高性能アプリケーションが必要な場合は、C/C++言語と組み合わせて使用できます.

    3.4活発な生態系


    多くのライブラリだけでなく、オープンソースコードにより、多くの開発者が使用している言語を使用できます.最近開発されたマシンラーニングライブラリやオープンソースの大部分はPythonで開発されており,生態系がいかに活発であるかがうかがえる.また、迅速な開発とコラボレーション能力も提供します.

    4.Pythonの欠点


    4.1遅い


    スクリプト言語の特徴を紹介するときに少し言及しますが、Pythonは他のコンパイル言語より遅いです.
    これは、リアルタイムで機械言語に翻訳することによる欠点であり、ハードウェアを迅速に実行したり直接制御したりするプログラムには適していない.

    4.2 GIL(Global Intepreter Lock)


    *このセクションが開発者にとってより特別なコンテンツである場合は、スキップすることをお勧めします.
    GLIはGlobal Integrator Lockの略で、1つのスレッド上のすべてのリソースを許可し、残りのスレッドにロックを掛けて他のスレッドの実行を阻止します.
    問題は、シングルコアプロセッサだけでなく、マルチコアプロセッサの優位性も阻害することです.
    マルチコアのマルチスレッドを使用している場合は、次の図が表示されます.

    しかし、Pythonでは、マルチコアでもGILのせいだと考えられます.

    スレッドのContext Switingのため、マルチスレッドを使用するとパフォーマンスが低下します.
    これにより、次の問題が発生する可能性があります.
  • Pythonはパラレル操作をサポートしていませんか?
  • Pythonでは、マルチスレッドは意味がありませんか?
  • 結論から、パラレルで作業したり、マルチスレッドを使用したりすることができます.
    Pythonで並列に作業できませんか?
    マルチプロセッサモジュールはパラレル操作をサポートします.
    Pythonではマルチスレッドは意味がありませんか?
    いいえ.GILは、cpu操作に適用される内容を表し、cpu操作とI/O操作が完了すると、他のスレッドが同時に実行される.これは、CPUの使用量が少なく、I/Oの使用量が多いパラレルプロセッサで使用できることを意味します.
    ProcesとThreadの違いとGILについてもう少し議論したいのですが、内容が長すぎるかもしれないので、次の記事で別にまとめた記事を紹介します.
    ソース:
    https://library.gabia.com/contents/9256/
    https://wangin9.tistory.com/entry/pythonthreadGIL
    https://ssungkang.tistory.com/entry/python-GIL-Global-interpreter-Lock%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C
    https://monkey3199.github.io/develop/python/2018/12/04/python-pararrel.html