복붙노트

[PYTHON] 파이썬 대 Cpython

PYTHON

파이썬 대 Cpython

파이썬과 CPython (자이 썬, IronPython)에 관한이 소란은 무엇입니까, 나는 그것을 얻지 못한다 :

python.org는 CPython이 다음과 같이 언급합니다.

또 다른 스택 오버플로 질문은 다음과 같이 언급합니다.

솔직히이 두 가지 설명이 실제로 의미하는 바를 얻지는 못했지만 CPython을 사용하면 샘플 Python 코드를 실행하면 C 언어로 컴파일 된 다음 C 언어처럼 실행됩니다. 암호

그렇다면 CPython은 정확히 무엇이며 파이썬과 비교했을 때 어떻게 다릅니 까? 아마도 CPython을 파이썬보다 사용해야합니까? 그렇다면 장점은 무엇입니까?

해결법

  1. ==============================

    1.CPython은 원래 파이썬 구현입니다. Python.org에서 다운로드 한 구현체이다. 사람들은 파이썬을 다른 파이썬 구현과 구별하고 파이썬 프로그래밍 언어 자체와 언어 엔진의 구현을 구별하기 위해 CPython이라고 부릅니다.

    CPython은 원래 파이썬 구현입니다. Python.org에서 다운로드 한 구현체이다. 사람들은 파이썬을 다른 파이썬 구현과 구별하고 파이썬 프로그래밍 언어 자체와 언어 엔진의 구현을 구별하기 위해 CPython이라고 부릅니다.

    후반 부분은 당신의 혼란이 오는 곳입니다. 파이썬 코드를 실행하는 것과는 별도로 파이썬과 언어를 분리해야합니다.

    CPython은 C로 구현됩니다. 이것은 구현 세부 사항입니다. CPython은 Python 코드를 바이트 코드 (투명하게)로 컴파일하고 평가 루프에서 해당 바이트 코드를 해석합니다.

    CPython은 또한 새로운 기능을 구현 한 최초의 프로그램입니다. 파이썬 언어 개발은 ​​CPython을 기본 언어로 사용합니다. 다른 구현들이 뒤 따른다.

    Jython, IronPython 및 PyPy는 Python 프로그래밍 언어의 현재 "기타"구현입니다. 이들은 각각 Java, C # 및 RPython (Python의 하위 집합)으로 구현됩니다. 자이 썬은 파이썬 코드를 자바 바이트 코드로 컴파일하여 파이썬 코드를 JVM에서 실행할 수있다. IronPython을 사용하면 Microsoft CLR에서 Python을 실행할 수 있습니다. 파이썬은 파이썬의 일부로 구현되어 파이썬 코드를 CPython보다 빨리 실행할 수있게 해준다. :-)

    따라서 CPython은 Python 코드를 C로 직접 변환하지 않습니다. 대신 인터프리터 루프를 실행합니다. 파이썬 - 틱 코드를 ​​C로 변환하는 프로젝트가 있는데, Cython이라고합니다. Cython은 Python 언어에 대한 몇 가지 확장을 추가하고 CPython 인터프리터에 코드를 연결하는 코드를 C 확장자로 컴파일 할 수 있도록합니다.

  2. ==============================

    2.언어와 구현을 구별해야합니다. 파이썬은 언어입니다.

    언어와 구현을 구별해야합니다. 파이썬은 언어입니다.

    Wikipedia에 따르면, "프로그래밍 언어는 계산이나 알고리즘의 명세 인 프로그램을 작성하는 표기법입니다". 즉, 코드 작성을위한 규칙 및 구문 일뿐입니다. 이와는 별도로 우리는 대부분의 경우 실제 인터프리터 또는 컴파일러 인 프로그래밍 언어 구현을 사용합니다.

    파이썬은 언어입니다. CPython은 C에서 Python을 구현 한 것입니다. Jython은 Java로 구현되는 식입니다.

    요약하면 : 이미 CPython을 사용하고 있습니다 (여기에서 다운로드 한 경우).

  3. ==============================

    3.이 기사에서는 Python의 다양한 구현 간의 차이점을 자세히 설명합니다. 기사와 마찬가지로 :

    이 기사에서는 Python의 다양한 구현 간의 차이점을 자세히 설명합니다. 기사와 마찬가지로 :

  4. ==============================

    4.파이썬은 언어입니다 : 프로그램을 작성하는 데 사용할 수있는 일련의 규칙. 이 언어의 여러 가지 구현이 있습니다.

    파이썬은 언어입니다 : 프로그램을 작성하는 데 사용할 수있는 일련의 규칙. 이 언어의 여러 가지 구현이 있습니다.

    어떤 구현을하든 관계없이 프로그램의 텍스트를 가져 와서 해석하고 명령을 실행하면됩니다. 그들 중 누구도 당신의 코드를 C 나 다른 언어로 컴파일하지 않습니다.

    CPython은 C로 작성된 원래 구현체입니다 ( "CPython"의 "C"부분은 Python 인터프리터 자체를 작성하는 데 사용 된 언어를 나타냄).

    자이 썬은 동일한 언어 (파이썬)이지만 자바를 사용하여 구현된다.

    IronPython 인터프리터는 C #으로 작성되었습니다.

    파이썬으로 작성된 파이썬 인터프리터 인 PyPy도있다. 당신의 선택을 확인하십시오 :)

  5. ==============================

    5.심지어 CPython, JPython, IronPython, PyPy가 서로 다른지 이해하는 데에도 동일한 문제가있었습니다.

    심지어 CPython, JPython, IronPython, PyPy가 서로 다른지 이해하는 데에도 동일한 문제가있었습니다.

    그래서, 설명하기 시작하기 전에 세 가지를 명확히하고자합니다.

    CPython의 바이트 코드를보고 싶다면 그렇게 할 수 있습니다. 방법은 다음과 같습니다.

    >>> def f(x, y):                # line 1
    ...    print("Hello")           # line 2
    ...    if x:                    # line 3
    ...       y += x                # line 4
    ...    print(x, y)              # line 5
    ...    return x+y               # line 6
    ...                             # line 7
    >>> import dis                  # line 8
    >>> dis.dis(f)                  # line 9
      2           0 LOAD_GLOBAL              0 (print)
                  2 LOAD_CONST               1 ('Hello')
                  4 CALL_FUNCTION            1
                  6 POP_TOP
    
      3           8 LOAD_FAST                0 (x)
                 10 POP_JUMP_IF_FALSE       20
    
      4          12 LOAD_FAST                1 (y)
                 14 LOAD_FAST                0 (x)
                 16 INPLACE_ADD
                 18 STORE_FAST               1 (y)
    
      5     >>   20 LOAD_GLOBAL              0 (print)
                 22 LOAD_FAST                0 (x)
                 24 LOAD_FAST                1 (y)
                 26 CALL_FUNCTION            2
                 28 POP_TOP
    
      6          30 LOAD_FAST                0 (x)
                 32 LOAD_FAST                1 (y)
                 34 BINARY_ADD
    36 RETURN_VALUE
    

    이제 위의 코드를 살펴 보겠습니다. 1-6 행은 함수 정의입니다. 8 번째 줄에서는 CPython (인터프리터)에 의해 생성 된 중간 파이썬 바이트 코드 (또는 파이썬 바이트 코드의 디스어셈블러)를 보는 데 사용할 수있는 'dis'모듈을 가져옵니다.

    참고 : #python IRC 채널에서이 코드에 대한 링크를 얻었습니다 : https://gist.github.com/nedbat/e89fa710db0edfb9057dc8d18d979f9c

    그리고 Java에 작성되어 Java 바이트 코드를 생성하는 자이 썬 (Jython)이 있습니다. Java 바이트 코드는 JVM (Java Virtual Machine)의 구현 인 JRE (Java Runtime Environment)에서 실행됩니다. 이것이 혼란 스럽다면 Java가 어떻게 작동하는지 전혀 알지 못한다고 생각합니다. 평범한 용어로, 자바 (컴파일러가 아닌 언어) 코드는 자바 컴파일러에 의해 취해지고 JRE를 사용해서 만 실행될 수있는 파일 (자바 바이트 코드)을 출력한다. 이것은 일단 Java 코드가 컴파일되면 JRE에 의해서만 실행될 수있는 Java 바이트 코드 형식으로 다른 시스템으로 이식 될 수 있도록 수행됩니다. 그래도 여전히 혼란 스럽다면이 웹 페이지를보고 싶을 것입니다.

    자이 썬처럼 CPython의 바이트 코드가 이식성이 있는지 물어볼지도 모르겠다. CPython 구현에서 생성 된 바이트 코드는 코드의 추가 실행을 쉽게하기위한 인터프리터에만 해당됩니다. (중간 바이트 코드 생성은 다른 많은 인터프리터에서 쉽게 처리 할 수 ​​있다고 생각됩니다.)

    자이 썬에서는 파이썬 코드를 컴파일 할 때 자바 바이트 코드로 끝난다. 자바 코드는 JVM에서 돌아갈 수있다.

    마찬가지로 IronPython (C # 언어로 작성)은 Python 코드를 CLR (Common Language Runtime)로 컴파일합니다.이 언어는 Microsoft에서 개발 한 JVM과 유사한 기술입니다.

  6. ==============================

    6.구현은 파이썬 코드를 구현하는 방법이 아닌 파이썬을 구현하는 데 사용 된 언어를 의미합니다. CPython을 사용하면 C 런타임과 C / C ++와의 손쉬운 통합이 가능하다는 장점이 있습니다.

    구현은 파이썬 코드를 구현하는 방법이 아닌 파이썬을 구현하는 데 사용 된 언어를 의미합니다. CPython을 사용하면 C 런타임과 C / C ++와의 손쉬운 통합이 가능하다는 장점이 있습니다.

    따라서 CPython은 원래 C를 사용하여 구현되었습니다. 파이썬이 JYthon 또는 JRE (Java Runtime (IronPython))을 사용할 수있게 해주는 원래 구현에 다른 포크가있었습니다.

    어떤 구현을 사용했는지에 따라 라이브러리 가용성이 달라질 수 있습니다. 예를 들어 Ctypes는 자이 썬에서 사용할 수 없으므로 ctypes를 사용하는 라이브러리는 자이 썬에서 작동하지 않습니다. 마찬가지로 Java 클래스를 사용하려는 경우 CPython에서 직접 Java 클래스를 사용할 수 없습니다. 접착제 (JEPP)가 필요하거나 자이 썬 (Java Implementation of Python)을 사용할 필요가있다.

  7. ==============================

    7.CPython은 전역 인터프리터 잠금 (Global Interpreter Lock) 때문에 멀티 스레딩을 실제로 지원하지 않는다는 것을 알아야합니다. 또한 재귀를위한 최적화 메커니즘이 없으며 다른 구현 및 라이브러리가 채우기 위해 시도하는 많은 다른 제한 사항이 있습니다.

    CPython은 전역 인터프리터 잠금 (Global Interpreter Lock) 때문에 멀티 스레딩을 실제로 지원하지 않는다는 것을 알아야합니다. 또한 재귀를위한 최적화 메커니즘이 없으며 다른 구현 및 라이브러리가 채우기 위해 시도하는 많은 다른 제한 사항이 있습니다.

    파이썬 위키에서이 페이지를 살펴보아야합니다.

    이 페이지의 코드 스 니펫을 보면 인터프리터가 무엇인지 알 수 있습니다.

  8. ==============================

    8.파이썬의 원본 및 표준 구현은 일반적으로 CPython이라고합니다. 당신은 다른 옵션들과 그것을 대조시키고 싶을 것이다 (그리고 다르게 평범한 "Python"). 이 이름은 이식 가능한 ANSI C 언어 코드로 코딩되어 있다는 사실에서 유래합니다. 이것은 http://www.python.org에서 가져온 Python, ActivePython 및 배포판을 구입하고 대부분의 Linux 및 Mac OS X 시스템에 자동으로 설치됩니다. 컴퓨터에 사전 설치된 Python 버전을 발견했다면 아마 귀사 나 조직이 더 전문화 된 방식으로 파이썬을 사용하지 않는 한 CPython 방법.

    파이썬의 원본 및 표준 구현은 일반적으로 CPython이라고합니다. 당신은 다른 옵션들과 그것을 대조시키고 싶을 것이다 (그리고 다르게 평범한 "Python"). 이 이름은 이식 가능한 ANSI C 언어 코드로 코딩되어 있다는 사실에서 유래합니다. 이것은 http://www.python.org에서 가져온 Python, ActivePython 및 배포판을 구입하고 대부분의 Linux 및 Mac OS X 시스템에 자동으로 설치됩니다. 컴퓨터에 사전 설치된 Python 버전을 발견했다면 아마 귀사 나 조직이 더 전문화 된 방식으로 파이썬을 사용하지 않는 한 CPython 방법.

  9. ==============================

    9.프로그래밍 언어 구현은 컴퓨터 프로그램을 실행하기위한 시스템입니다.

    프로그래밍 언어 구현은 컴퓨터 프로그램을 실행하기위한 시스템입니다.

    프로그래밍 언어 구현에는 두 가지 일반적인 접근 방식이 있습니다.

    Python은 1991 년 Guido van Rossum이 만든 해석 형 고급 프로그래밍 언어입니다.

    CPython은 Guido van Rossum이 만든 C로 작성된 Python 컴퓨팅 언어의 참조 버전입니다.

    파이썬 구현의 다른 목록

    출처

  10. ==============================

    10.둘 모두와의 나의 초기 경험은 나에게 잠정적으로 나를 인도했다. 다음과 같은 인상. 나는 둘 다의 특징을 좋아한다.

    둘 모두와의 나의 초기 경험은 나에게 잠정적으로 나를 인도했다. 다음과 같은 인상. 나는 둘 다의 특징을 좋아한다.

    파이썬 대 C 프로그래밍 언어 :

    C - 데이터 선언 및 초기화에 불쌍합니다.   - 구조화 된 형식의 세부 사항으로 인해   그 기능은 꾸밈없이 쉽게 따라 할 수 있습니다.   외설적 인 주석 또는 지나치게 설명적인 이름의

    Python --- 쉽고 빠른 데이터 선언 및 초기화.        --- 호출 된 함수에서 구조의 단순성   그들의 응용 프로그램에 대한 이해와   파이썬에서 로직의 방향. 이를 위해서는 과도한   변수와 루틴을 라벨에 표시하는 데 사용됩니다.   파이썬은 설정에 더 좋고 C는 후속 처리에서 더 뛰어납니다.   및 응용 프로그램.

  11. from https://stackoverflow.com/questions/17130975/python-vs-cpython by cc-by-sa and MIT license