> 백엔드 개발 > 파이썬 튜토리얼 > Python의 대체품을 찾기 위해 서두르는 이유는 무엇입니까?

Python의 대체품을 찾기 위해 서두르는 이유는 무엇입니까?

王林
풀어 주다: 2023-04-11 21:10:09
앞으로
976명이 탐색했습니다.

번역가 | Liu Tao

리뷰어 | Sun Shujuan

인공지능(AI)과 기계 학습(ML)은 우리의 일상 동반자입니다. 알고리즘과 통계 모델이 없다면 삶이 어떨지 상상하기 어렵습니다. 머신러닝이라는 단어를 들을 때마다 가장 먼저 떠오르는 것은 Python입니다. Python은 오랫동안 기계 학습의 목소리였기 때문에 기계 학습의 기술적 측면을 구현하는 데 중요한 역할을 해왔습니다.

Python은 아마도 48.24%의 개발자가 사용하는 가장 아름다운 기계 학습 언어일 것입니다. Python은 강력하고 편리한 저수준 패키지와 고수준 API 인터페이스를 갖추고 있기 때문에 과학 컴퓨팅의 모든 분야에서 비교할 수 없는 장점을 가지고 있지만 특정 작업에 사용할 때는 몇 가지 단점도 있습니다. 따라서 Python을 대체할 언어에 대한 필요성이 점점 더 일반화되고 있습니다.

현재 많은 신흥 언어는 성능 측면에서 Python과 비슷하거나 더 뛰어납니다. 따라서 더 이상 머신러닝을 위한 유일한 옵션이 아닙니다. Scala, Julia, MQL5 및 Python의 상위 집합이 아닌 기타 언어를 사용하여 기계 학습 애플리케이션을 개발하고 제공할 수 있습니다. 따라서 머신러닝은 더 이상 Python에만 국한되지 않습니다.

이 기사에서는 새로운 기계 학습 언어의 출현, 이러한 언어가 Python의 시장 점유율을 어떻게 잠식하고 있는지, 기계 학습이 미래에 어떻게 변화할지 살펴보겠습니다.

1. Python의 단점

개발자와 데이터 과학자가 자주 직면하는 Python의 단점에 대해 논의해 보겠습니다.

성능 및 속도

Python 개발은 빠르지만 계산 속도는 매우 느립니다. 컴파일러보다는 인터프리터를 사용합니다. 순차 코드 실행으로 인해 다른 데이터 과학 프로그래밍 언어보다 속도가 느립니다. C에는 유용한 도구와 라이브러리가 많기 때문에 Python은 C보다 느립니다. 벡터화된 코드를 마스터하지 않으면 코드가 얼마나 느린지 알 수 있습니다.

Cython은 Python의 상위 집합입니다. Python 소스 코드를 C 언어 코드로 컴파일합니다. 가장 중요한 것은 추가 컴퓨팅 리소스 없이 C 언어 수준의 컴퓨팅 속도를 제공한다는 것입니다. 많은 프로그래머는 Cython을 사용하여 C 언어만큼 빠르게 실행되지만 더 간단하고 읽기 쉬운 Python 코드를 작성합니다.

디자인 제한

Python은 동적 타이핑으로 인해 디자인에 큰 결함이 있습니다. 일반적으로 프로그래밍 언어에서 동적으로 유형이 지정된 변수에는 특별한 선언이 필요하지 않습니다. Python은 혼란스러울 수 있는 덕 타이핑을 사용합니다. 덕 타이핑에서는 개체의 클래스나 속성이 해당 기능보다 덜 중요합니다. 덕 타이핑에는 유형 검사가 필요하지 않습니다. 프로세스나 속성을 확인할 수도 있습니다.

비효율적인 메모리 소비

파이썬은 거대한 구조로 인해 메모리를 많이 차지합니다. 또한 Python 데이터 유형은 메모리 소비 측면에서 유연합니다. 메모리 집약적인 작업에는 적합하지 않습니다. 유연한 데이터 유형으로 인해 메모리 소비도 발생합니다. 따라서 대규모의 장기 실행 Python 시스템을 만들 때 Python의 메모리 관리가 어려워집니다.

스레드가 충분하지 않습니다

Python은 다른 언어에 비해 스레드 효율성이 떨어집니다. Python은 다중 스레드이지만 한 번에 하나의 스레드만 실행할 수 있습니다. 따라서 다중 스레드 Python은 단일 스레드 처리 효율성을 제공합니다. Python에는 한 번에 하나의 스레드만 사용할 수 있도록 허용하는 전역 해석기 잠금(GIL)이 있습니다. Python이 기본 라이브러리를 사용하는 경우에만 여러 스레드를 동시에 실행할 수 있습니다. 또한 Python의 상위 집합인 Jython은 멀티스레딩을 구현할 수 있지만 Python은 구현할 수 없습니다.

2. 데이터 과학자가 Python 대안을 찾아야 하는 이유는 무엇입니까?

파이썬은 정말 훌륭해요. 하지만 플래시와 인크레더블 헐크가 동시에 될 수는 없습니다! 누군가는 플래시를 원할 수도 있고 누군가는 헐크를 원할 수도 있습니다. 사용자의 요구는 다양합니다. 마찬가지로 Python은 수학 및 데이터 과학 응용 프로그램용으로 설계되지 않았습니다. 딥 러닝 알고리즘에 특화된 NumPy 또는 Tensorflow와 같은 타사 라이브러리가 필요합니다. 따라서 데이터 관련 프로그래밍 언어는 Python보다 장점이 있습니다.

예를 들어, 비즈니스 세계에서 머신러닝은 실행 시간을 줄이기 위해 속도와 확장성이 필요합니다. 고객을 너무 오래 기다리게 할 수는 없습니다. 따라서 수행하려면 더 빠른 ML 언어(범용 기능 프로그래밍 언어)가 필요합니다. 빠를수록 좋습니다.

이제 Python은 빠르지만 Python보다 더 빠른 것이 또 있을까요? 네, Julia 또는 Scala입니다!

이 경우 데이터 과학자는 Python이 아닌 다른 프로그래밍 언어를 사용하는 것을 선호합니다.

3. 데이터 과학을 위한 Python 대안

다양한 애플리케이션 환경에서 Python과 같거나 더 나은 성능을 발휘하는 여러 Python 대안이 있습니다. 다음은 몇 가지 Python 데이터 과학 대안입니다.

(1) Julia

Julia는 혁신적이고 빠르며 편안한 새로운 고급 동적 프로그래밍 언어입니다. 다양한 애플리케이션을 작성할 수 있는 범용 언어입니다. 패키지 생태계와 기능의 상당 부분이 고급 수치 계산에 맞춰져 있어 기계 학습에 이상적이라는 점은 언급할 가치가 있습니다.

Julia는 C 언어와 Python, R, MATLAB과 같은 고급 동적 클래스 언어를 포함한 여러 언어를 기반으로 구축되었습니다. Julia는 이들 언어의 장점을 결합하고 약점을 제거하는 것이 목표이기 때문에 이러한 언어의 선택적 유형, 구문 및 기능을 활용합니다.

Python의 대체품을 찾기 위해 서두르는 이유는 무엇입니까?

Julia의 제작자는 과학 컴퓨팅, 기계 학습, 데이터 마이닝, 대규모 선형 대수, 분산 및 병렬 컴퓨팅을 C만큼 빠르게 처리할 수 있는 언어를 개발하고 싶었습니다. 그러나 그들은 결국 더 빠른 언어를 개발했습니다. Python이 점점 빨라지고 있음에도 불구하고 Julia는 여전히 Python보다 성능이 뛰어납니다.

Julia는 기계 학습을 위한 많은 수학적 표기법을 단순화합니다. GPU가 범용 코드를 실행할 수 있도록 하는 ArrayFire와 같은 다양한 GPU 프로그래밍 패키지를 제공합니다. 각 패키지에는 고유한 프로그래밍 모델이 있습니다. 예를 들어 NVIDIA에는 CUDA.Jl이 있고 AMD에는 AMDGPU.jl이 있습니다.

기계 학습 엔지니어는 MLBase.jl, Flux.jl(딥 러닝), MLJ.j(일반 기계 학습) 및 Knet.jl(딥 러닝)과 같은 강력한 도구의 이점을 활용하여 대규모 클러스터에 Julia를 신속하게 배포할 수 있습니다. Flux는 Julia의 기능을 극대화하기 위한 추가 도구가 사전 로드되어 있는 고속 심층 기계 학습 라이브러리입니다. 마찬가지로 ML 애플리케이션용 ScikitLearn.jl, TensorFlow.jl 및 MXNet.jl이 포함되어 있습니다.

Julia는 복잡한 계산 문제를 해결하는 데 능숙합니다. 따라서 스탠포드 대학, 도쿄 메트로폴리탄 대학 등 많은 유명 대학에서 Julia 코스를 제공하고 있습니다. 성능도 Python에 비해 매우 견고합니다.

(2) Scala

Logan Kilpatrick과 같은 수많은 업계 임원들은 Julia가 기계 학습 및 데이터 과학의 미래라고 믿습니다.

Julia의 주요 기능:

  • Julia의 일부 핵심 기능은 효율적인 데이터 과학 계산을 가능하게 합니다.
  • Julia는 빠릅니다. Python보다 2~20배 빠릅니다.
  • 내장 패키지 관리자;
  • PyCall 및 CCall 패키지는
  • 셸과 유사한 기능을 사용하여 다른 프로세스를 관리합니다. 분산 컴퓨팅을 위한 병렬 및 개발을 제공합니다.
  • 다양한 매개변수 유형에 대한 효율적인 코드를 자동으로 생성합니다.
  • MIT 라이센스가 있는 무료 오픈 소스 소프트웨어입니다.
  • Scala는 객체 지향 프로그래밍 기술과 함수형 프로그래밍 기술을 모두 지원하는 고급 프로그래밍 언어입니다. Martin Odersky가 이를 개발하고 2004년 6월에 공식 출시했습니다. Scala는 개발자들 사이에서 인기가 높아지고 있으며 오늘날의 기술을 뛰어넘고 있습니다.
  • Scala는 Java 애플리케이션 및 라이브러리와 호환되는 JVM(Java Virtual Machine) 언어입니다. 기본 데이터의 개념이 부족하기 때문에 정적 언어로 간주되는 경우가 많습니다. 멀티 패러다임, 멀티 코어 아키텍처는 복잡합니다.

ApacheSpark는 강력하고 빠른 실시간 데이터 스트리밍 및 데이터 처리 도구입니다. Scala Spark는 복잡한 매핑, ETL 및 대규모 데이터 처리 작업을 용이하게 합니다. Scala를 사용하면 사용자는 코드를 이해하여 새로운 Spark 기능을 구현할 수 있습니다. Scala는 Java와 호환되므로 프로그래머는 객체 지향 개념을 빠르게 익힐 수 있습니다.

SparkMLlib에는 Spark의 고품질 알고리즘과 뛰어난 성능이 포함되어 있어 확장 가능한 기계 학습 라이브러리가 됩니다. 분류, 회귀, 클러스터링, 협업 필터링 및 차원 축소는 모두 Spark의 MLlib 기계 학습 라이브러리에 포함되어 있습니다. 또한 Breeze, Spire, Saddle 및 Scalalab은 강력한 데이터 처리 애플리케이션을 만드는 데 도움이 되는 기타 ML 라이브러리입니다.

Apache Kafka는 오픈소스 분산 이벤트 스트리밍 플랫폼으로 Python의 인기와 함께 Spark도 인기를 끌고 있습니다. Scala Spark에서 느리게 실행되는 모든 항목은 PySpark에서 충돌이 발생합니다. 또한 TensorFlow Scala 라이브러리를 사용하여 머신러닝 모델을 위한 적응형 고성능 제공 시스템을 만들 수 있습니다.

Scala의 정적 타이핑은 복잡한 애플리케이션을 용이하게 합니다. JVM 및 JavaScript 런타임을 통해 고성능 시스템에서 라이브러리에 쉽게 액세스할 수 있습니다. 게다가 성능도 Python보다 좋습니다. 또한 Python과 비교하여 자체적으로 보유하고 있습니다.

Scala의 주요 기능

Scala의 일부 핵심 기능은 효율적인 데이터 과학 계산을 가능하게 합니다.

Scala는 Python보다 10배 빠릅니다.

고급 유형 추론 메커니즘이 있습니다.
  • case 클래스(케이스 클래스) 및 패턴
  • 간결하지만 읽기 쉬운 표현 구문이 있습니다.
  • 정적 변수 대신 Singleton 객체를 사용합니다.
  • Scala 소스 코드는 다음과 같이 컴파일됩니다. JVM에서 실행되는 ".class" 파일.
  • (3) MQL5
  • MQL5는 고급 데이터 분석 및 기계 학습 기능을 제공하는 고급 객체 지향 프로그래밍 언어입니다. 널리 사용되고 잘 알려진 프로그래밍 언어인 C++를 기반으로 하며 속도와 다양성으로 잘 알려져 있습니다.
  • MQL5는 Python, Julia 또는 Scala와 같은 일상적인 ML 언어가 아닙니다. 금융 시장이 금융 상품을 모니터링할 수 있도록 특별히 제작되었습니다. 기본적으로 이 언어는 다른 언어와 유사하지만 고유한 기능을 가지고 있습니다. MQL5는 정수, 부울, 리터럴, 문자열, 날짜, 시간 및 열거형을 지원합니다. 이는 구조와 클래스를 모두 복잡한 데이터 유형으로 정의합니다.
  • MQL5 언어 문서에는 함수, 연산, 예약어 등이 나열되어 있습니다. 또한 정수, 부울, 리터럴, 문자열, 날짜 및 시간과 같은 데이터 유형을 제공합니다. 복잡한 구조와 클래스를 가지고 있습니다. 또한 문서에는 거래 전략, 제어판, 사용자 정의 시각 효과, 파일 액세스 등에 대한 표준 라이브러리 클래스 정의가 포함되어 있습니다.

    또한 MQL5에는 새로운 애플리케이션 개발을 위한 1,500개 이상의 소스 코드 라이브러리가 있습니다. 수많은 수치해석 기능을 포함하고 있는 ALGLIB 라이브러리를 사용할 수 있습니다. 마찬가지로 시계열 처리를 위한 TimeSeries 라이브러리와 퍼지 모델 개발을 위한 Fuzzy 라이브러리 등 다양한 라이브러리가 있습니다.

    MQL5는 실시간 시스템을 구축하고 시각적 의사결정 지원을 제공할 수 있는 강력한 프로그래밍 언어입니다. MQL5는 열거형, 구조, 클래스 및 이벤트를 지원합니다. 주요 임베디드 기능의 수를 늘려서 MQL5 프로그램은 DLL과 통신할 수 있습니다.

    MQL5는 C++와 유사한 구문을 가지고 있어 다른 프로그래밍 언어로 작성된 프로그램을 MQL5 프로그램으로 쉽게 변환할 수 있습니다. 따라서 데이터 분석, 인공지능, 금융 도구를 트레이딩 로봇으로 활용하면 C++와 동일한 효율성을 얻을 수 있습니다.

    MQL5의 주요 기능

    MQL5의 일부 핵심 기능은 효율적인 데이터 과학 계산을 가능하게 합니다.

    • MQL5는 C++를 기반으로 합니다. 따라서 C++만큼 빠르고 Python보다 빠릅니다.
    • 완전한 이벤트 기반
    • 사전 정의된 표준 상수 및 열거형. 서비스 아키텍처는 정보를 저장하고, 색상 구성표를 변경하고, 제어판을 만들고, MQL5 프로그램에서 가격 차트를 내보냅니다.
    • 12개의 새로운 그리기 스타일, 512개의 버퍼 및 과거에서 미래까지의 직접 인덱싱
    • Forex 디버그 차트 및 다중 통화 테스터의 전문가 조언
    • 4.
    • 어떤 Python ML 대안을 선택해야 합니까?
    • 프로그래밍 언어는 경주용 자동차를 운전하는 것과 같습니다. 운전자는 말할 것도 없고 적합한 자동차도 필수입니다. 마찬가지로, 데이터 과학자로서 귀하는 이러한 독특한 스포츠카의 운전자입니다.

    모든 데이터 과학자 또는 개발자는 특정 기술에 대한 고유한 요구 사항과 사양을 가지고 있습니다. 최고의 기술 선택은 필요한 시야각과 기능에 따라 달라집니다. 따라서 최종 선택을 하기가 어렵습니다. 다중 프로세스 컴퓨팅을 구현하고 매우 높은 컴퓨팅 속도가 필요한 경우 Julia를 선택할 수 있습니다. 셋 중에서 가장 빠릅니다. 반면에, 대규모 프로젝트를 진행하고 있다면 Scala가 작업을 수행하는 데 더 나은 선택이 될 것입니다. 금융상품에 관심이 있다면 MQL5가 최고의 선택입니다.

    마찬가지로 모든 프로그래밍 언어에는 고유한 특성과 전문 분야가 있습니다. 따라서 귀하의 요구 사항과 사양에 맞는 언어를 선택하는 것이 가장 좋습니다.

    5.

    요약

    머신러닝은 지속적이고 진화하는 프로세스입니다. 시간이 지나면서 표준화된 ML(SML) 언어로 등장하여 Python에서 인기를 얻었습니다. 오늘날 다양한 요구 사항에 따라 기계 학습 언어가 다양하게 개발되고 있습니다.

    요컨대 Python은 뛰어난 기계 학습 언어입니다. 하지만 Python은 데이터 과학 전용 언어가 아니며 특정 작업을 보다 효율적으로 수행할 수 있는 최신 프로그래밍 언어가 더 많습니다. 따라서 신흥 프로그래밍 언어가 시장 점유율을 확보하고 기계 학습 분야에서 성장하고 있습니다. 바라건대, 이들 역시 앞으로 몇 년 안에 더욱 일반화될 것입니다.

    원본 링크: https://hackernoon.com/not-only-python-problems-errors-and-alternatives

    번역자 소개

    Liu Tao, 51CTO 커뮤니티 편집자, 온라인 탐지 및 제어 책임자 주요 책임은 누락된 스캔, 침투 테스트, 기준 검사 및 기타 탐지 작업에 대한 시스템의 온라인 승인을 엄격하게 검토하는 것입니다. 그는 다년간의 네트워크 보안 관리 경험, 다년간의 PHP 및 웹 개발 및 방어를 보유하고 있습니다. 경험, Linux 사용 및 관리 경험을 보유하고 있으며 코드 감사, 네트워크 보안 테스트 및 위협 마이닝 분야에서 풍부한 경험을 보유하고 있습니다. SQL 감사, SQLMAP 자동 감지, XSS 감사, Metasploit 감사, CSRF 감사, 웹셸 감사, Maltego 감사 및 Kali의 기타 기술에 능숙합니다.

위 내용은 Python의 대체품을 찾기 위해 서두르는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿