Julia vs. Python : 데이터 과학에 가장 적합한 것은 무엇입니까?

Python이 다루는 많은 사용 사례 중에서 데이터 분석이 아마도 가장 크고 가장 중요해졌습니다. Python 생태계에는 과학 컴퓨팅 및 데이터 분석 작업을 빠르고 편리하게 만드는 라이브러리, 도구 및 애플리케이션이로드되어 있습니다.

그러나 "과학적 컴퓨팅, 기계 학습, 데이터 마이닝, 대규모 선형 대수, 분산 및 병렬 컴퓨팅"을 겨냥한 Julia 언어의 개발자에게는 Python이 충분히 빠르거나 편리 하지 않습니다 . Julia는 과학자와 데이터 분석가에게 빠르고 편리한 개발뿐만 아니라 놀라운 실행 속도를 제공하는 것을 목표로합니다. 

줄리아 언어는 무엇입니까?

4 명으로 구성된 팀이 2009 년에 만들어 2012 년에 공개 된 Julia는 과학 컴퓨팅 및 데이터 처리에 사용되는 Python 및 기타 언어 및 응용 프로그램의 단점을 해결하기위한 것입니다. “우리는 탐욕 스럽습니다.”라고 그들은 썼습니다. 그들은 더 많은 것을 원했습니다. 

우리는 자유 라이선스가있는 오픈 소스 언어를 원합니다. Ruby의 역동 성과 함께 C의 속도를 원합니다. Lisp와 같은 진정한 매크로를 사용하지만 Matlab과 같은 명확하고 친숙한 수학적 표기법을 사용하는 동음이의 언어를 원합니다. 우리는 Python처럼 일반 프로그래밍에 유용하고, R만큼 쉬운 통계, Perl만큼 자연스러운 문자열 처리, Matlab처럼 선형 대수에 대해 강력하고, 프로그램을 셸처럼 결합하는 데 능숙한 것을 원합니다. 배우기 쉽지만 가장 심각한 해커를 행복하게 만드는 것. 인터랙티브하고 컴파일되기를 원합니다.

(C만큼 빨라야한다고 언급 했습니까?)

Julia가 이러한 열망을 구현하는 몇 가지 방법은 다음과 같습니다.

  • Julia는 해석되지 않고 컴파일됩니다.  더 빠른 런타임 성능을 위해 Julia는 LLVM 컴파일러 프레임 워크를 사용하여 JIT (Just-In-Time) 컴파일됩니다. 최상의 상태에서 Julia는 C의 속도에 접근하거나 일치시킬 수 있습니다.
  • Julia는 대화 형입니다. Julia에는 Python이 제공하는 것과 유사한 REPL (read-eval-print loop) 또는 대화 형 명령 줄이 포함되어 있습니다. 빠른 일회성 스크립트와 명령을 바로 삽입 할 수 있습니다.
  • Julia는 간단한 구문을 가지고 있습니다. Julia의 구문은 Python의 구문과 비슷하지만 간결하지만 표현력도 뛰어나고 강력합니다.
  • Julia는 동적 타이핑과 정적 타이핑의 이점을 결합합니다. "부호없는 32 비트 정수"와 같은 변수 유형을 지정할 수 있습니다. 그러나 특정 유형의 변수를 처리하는 일반적인 경우를 허용하기 위해 유형의 계층을 생성 할 수도 있습니다. 예를 들어 정수의 길이나 부호를 지정하지 않고 정수를 허용하는 함수를 작성할 수 있습니다. 특정 컨텍스트에서 필요하지 않은 경우 완전히 입력하지 않고도 수행 할 수 있습니다.
  • Julia는 Python, C 및 Fortran 라이브러리를 호출 할 수 있습니다. Julia는 C 및 Fortran으로 작성된 외부 라이브러리와 직접 인터페이스 할 수 있습니다. 또한 PyCall 라이브러리를 통해 Python 코드와 인터페이스하고 Python과 Julia간에 데이터를 공유 할 수도 있습니다.
  • Julia는 메타 프로그래밍을 지원합니다. Julia 프로그램은 Lisp와 같은 언어를 연상시키는 방식으로 다른 Julia 프로그램을 생성하고 자체 코드를 수정할 수도 있습니다.
  • Julia에는 모든 기능을 갖춘 디버거가 있습니다.  Julia 1.1은 로컬 REPL에서 코드를 실행하고 결과를 단계별로 살펴보고 변수를 검사하고 코드에 중단 점을 추가 할 수있는 디버깅 제품군을 도입했습니다. 코드에 의해 생성 된 함수를 단계별로 실행하는 것과 같은 세분화 된 작업을 수행 할 수도 있습니다.

관련 비디오 : Python이 프로그래밍을 더 쉽게 만드는 방법

IT에 완벽한 Python은 시스템 자동화에서 기계 학습과 같은 최첨단 분야에서의 작업에 이르기까지 다양한 종류의 작업을 단순화합니다.

Julia vs. Python : Julia 언어의 장점

Julia는 처음부터 과학 및 수치 계산을 위해 설계되었습니다. 따라서 Julia가 이러한 사용 사례에 유리한 많은 기능을 가지고 있다는 것은 놀라운 일이 아닙니다.

  • Julia는 빠릅니다. Julia의 JIT 컴파일 및 유형 선언은 일상적으로 "순수한"최적화되지 않은 Python을 몇 배로 이길 수 있음을 의미합니다. 파이썬이 될 수있다 만든 외부 라이브러리의 방법으로 빠르고, 타사 JIT 컴파일러 (PyPy)와 사이 썬과 같은 도구를 사용하여 최적화하지만 줄리아는 설계 게이트의 빠른 바로 나올 수 있습니다.
  • Julia는 수학 친화적 인 구문을 가지고 있습니다. Julia의 주요 타겟 고객은 Matlab, R, Mathematica 및 Octave와 같은 과학 컴퓨팅 언어 및 환경 사용자입니다. 수학 연산을위한 Julia의 구문은 컴퓨팅 세계 외부에서 수학 공식이 작성되는 방식과 비슷해 프로그래머가 아닌 사람이 쉽게 익힐 수 있습니다.
  • Julia는 자동 메모리 관리 기능이 있습니다. Python과 마찬가지로 Julia는 메모리 할당 및 해제에 대한 세부 사항에 대해 사용자에게 부담을주지 않으며 가비지 수집에 대한 수동 제어 수단을 제공합니다. 아이디어는 Julia로 전환해도 Python의 일반적인 편리함 중 하나를 잃지 않는다는 것입니다.
  • Julia는 우수한 병렬성을 제공합니다. 수학 및 과학 컴퓨팅은 주어진 컴퓨터, 특히 다중 코어에서 사용 가능한 전체 리소스를 사용할 수있을 때 번성합니다. Python과 Julia는 모두 작업을 병렬로 실행할 수 있습니다. 그러나 작업을 병렬화하는 Python의 방법은 종종 스레드 또는 노드간에 데이터를 직렬화 및 역 직렬화해야하는 반면 Julia의 병렬화는 더 세분화됩니다. 또한 Julia의 병렬화 구문은 Python보다 덜 무겁기 때문에 사용 임계 값을 낮 춥니 다.
  • Julia는 자체 네이티브 머신 러닝 라이브러리를 개발하고 있습니다. Flux는 일반적인 사용 사례에 대한 기존 모델 패턴이 많은 Julia 용 기계 학습 라이브러리입니다. 전체적으로 Julia로 작성되었으므로 사용자가 필요에 따라 수정할 수 있으며 Julia의 네이티브 Just-in-Time 컴파일을 사용하여 프로젝트를 내부에서 최적화합니다. 

Julia vs. Python : Python의 장점

Julia는 데이터 과학을 위해 특별히 제작되었지만 Python은 어느 정도 역할을 발전 시켰지만 Python은 데이터 과학자에게 몇 가지 강력한 이점을 제공합니다. "일반적인 목적"Python이 데이터 과학 작업에 더 나은 선택이 될 수있는 몇 가지 이유 :

  • Python은 0부터 시작하는 배열 인덱싱을 사용합니다. 대부분의 언어 (Python과 C 포함)에서 배열의 첫 번째 요소는 0으로 액세스됩니다. 예를 들어 string[0]Python에서 문자열의 첫 번째 문자에 대해 액세스합니다. Julia는 배열의 첫 번째 요소에 1을 사용합니다. 이것은 임의의 결정이 아닙니다. Mathematica와 같은 다른 많은 수학 및 과학 응용 프로그램은 1- 인덱싱을 사용하며 Julia는 해당 청중의 관심을 끌기위한 것입니다. 실험적 기능을 사용하여 Julia에서 제로 인덱싱을 지원할 수 있지만 기본적으로 1- 인덱싱은 프로그래밍 습관이 깊숙한 일반 사용자가 채택하는 데 방해가 될 수 있습니다.
  • Python은 시작 오버 헤드가 적습니다.  Python 프로그램은 Julia 프로그램보다 느릴 수 있지만 Python 런타임 자체는 더 가볍고 일반적으로 Python 프로그램을 시작하고 첫 번째 결과를 제공하는 데 시간이 덜 걸립니다. 또한 JIT 컴파일은 Julia 프로그램의 실행 시간을 가속화하지만 시작 속도가 느려집니다. Julia가 더 빨리 시작할 수 있도록 많은 작업이 수행되었지만 Python은 여전히 ​​여기에서 우위를 점하고 있습니다.
  • 파이썬은 성숙합니다. 줄리아 언어는 젊습니다. Julia는 2009 년부터 개발 중이며 상당한 양의 기능 변동을 겪었습니다. 대조적으로 Python은 거의 30 년 동안 사용되었습니다.
  • Python에는 훨씬 더 많은 타사 패키지가 있습니다. Python의 타사 패키지 문화의 폭과 유용성은 언어의 가장 큰 매력 중 하나입니다. 다시 말하지만 Julia의 상대적인 새로움은 주변의 소프트웨어 문화가 아직 작다는 것을 의미합니다. 그 중 일부는 기존 C 및 Python 라이브러리를 사용할 수있는 능력으로 상쇄되지만 Julia는 번성하기 위해 자체 라이브러리가 필요합니다. Flux 및 Knet과 같은 라이브러리는 Julia를 기계 학습 및 딥 러닝에 유용하게 만들지 만 대부분의 작업은 여전히 ​​TensorFlow 또는 PyTorch로 수행됩니다.
  • Python에는 수백만 명의 사용자가 있습니다. 언어는 주위에 크고 헌신적이며 활동적인 커뮤니티가 없다면 아무것도 아닙니다. Julia 주변의 커뮤니티는 열정적이고 성장하고 있지만 여전히 Python 커뮤니티 규모의 일부에 불과합니다. Python의 거대한 커뮤니티는 큰 이점입니다. 
  • Python이 점점 빨라지고 있습니다. Python 인터프리터 (멀티 코어 및 병렬 처리에 대한 개선 포함)가 개선되는 것 외에도 Python은 속도를 높이기가 더 쉬워졌습니다. mypyc 프로젝트는 유형 주석이 달린 Python을 Cython보다 훨씬 덜 어설프게 네이티브 C로 변환합니다. 일반적으로 4 배의 성능 향상을 가져오고, 순수한 수학적 연산의 경우 훨씬 더 많은 경우가 많습니다.