JavaScript vs. Python

박현희·2020년 12월 28일
0

주요 차이점

  • JavaScript에는 변경 가능 및 불변의 개념이 없지만 Python에는 변경 가능 및 불변 데이터 유형이 있다.
  • JavaScript는 원시 바이트 조작에 대한 내장 지원을 제공하지 않으므로 UTF-16으로 인코딩되어야하지만, 인코딩 형식을 지정하지 않는 한 Python 소스 코드는 기본적으로 ASCII
  • JavaScript는 중괄호를 사용하는 반면 Python 언어는 들여 쓰기를 사용한다.
  • JavaScript 객체에는 속성을 정의 할 수있는 기본 속성으로 구성 할 수있는 속성이 있으며 - - Python 프로그래밍 언어에서는 속성을 정의하는 데 getter 및 setter 함수가 사용된다.
  • JavaScript는 웹 사이트 또는 기본 애플리케이션을 구축하는 데 도움이되는 반면 Python은 데이터 분석, 기계 학습 및 수학 집약적 인 작업과 관련된 작업을 위한 것이다.
  • JavaScript는 프로토 타입 기반 상속 모델을 사용하는데 반면 Python은 클래스 기반 상속 모델을 사용한다.

python

고급 객체지향 프로그래밍 언어이다.
동적 바인딩 및 입력과 결합된 데이터 구조가 내장 되어있어 신속한 애플리케이션 개발에 좋다.
모듈 및 패키지에 대한 지원을 제공하므로 시스템 모듈화 및 코드 재사용 가능하다. 가독성과 단순성에 중점을 둔 언어이다.

장점

  • 배우고, 읽고, 유지하기 쉬움

  • 수정이 쉽다. 파이썬은 인터프리터 언어이기 때문에 컴파일 언어와 다르게 프로그램 수정후 코드를 다시 컴파일 해야 할 필요가 없다.

  • 라이브러리가 아주 많음

  • 절차적, 객체지향, 함수형, 관점형 프로그래밍이 모두 가능

  • 인터프리터에 저수준 모듈을 포함 가능

  • 대규모 프로그램에 대한 이상적인 구조와 지원을 제공

  • 테스트 및 디버깅의 대화형 모드를 지원

  • 높은 수준의 동적 데이터 유형을 제공하고 동적 유형 검사도 지원

  • Python 언어는 Java, C 및 C ++ 프로그래밍 코드와 통합 가능

  • 배포가 간편한 정적으로 연결된 바이너리

    단점

  • 속도
    파이썬은 다른 언어에 비해 2~10배 정도 느리다. 여러가지 이유가 있지만 그 중 하나는 dynamical type이다. 파이썬은 변수들의 데이터 타입을 정해줄 필요가 없다. 파이썬이 알아서 그 일을 처리하는데 그 과정이 파이썬에게 큰 부담이 된다고 한다. 그래서 프로젝트가 점점 커지고 소스 코드가 길어질수록 속도는 점점 느려진다.

    또 하나의 문제는 인터프리터 언어라는 점이다.
    파이썬은 기계어로 컴파일해서 실행파일을 만들어 실행하는 컴파일 언어와는 다르게 코드를 한 줄씩 읽어 내려가며 실행하기 때문에 다른 컴파일 언어보다 느리다는 단점을 가지고 있다.

  • scope
    파이썬은 dynamical scope로 동작한다. 이 의미는 특정한 변수를 정한 후 계산식을 통해 동명의 변수가 나왔을때 파이썬은 소스 가장 아래에 있는 변수를 가져온다.
    이 특성의 문제점은 소스 코드가 길어졌을때 발생하는데 보통 코드가 길어질수록 많은 변수들을 사용한다. 이 때 자신도 모르게 같은 변수를 2번 이상 사용하면 본인이 계획한대로 결과가 나오지 않는 상황이 발생할 수 있다.

  • 런타임 에러
    파이썬은 다른 언어들과 달리 실행할 때마다 컴파일을 진행한다. 이런 특성(동적)이 안좋은 성능을 불러오고 많은 테스트를 요구한다.

  • 모바일
    모바일 컴퓨팅이 약하여 앱 개발에 사용되지 않음

    JavaScript

  • 크로스 플랫폼 언어

  • 클라이언트 측 및 서버 측에 널리 사용됩니다.

  • 컴파일 과정이 따로 필요가 없으며 바로 화면에 적용 가능

  • 언어를 적극적으로 지원하는 대규모 커뮤니티가 있다.

  • 인터프리터 언어로서 동적이며 타입을 명시할 필요가 없다.

  • 객체 기반의 스크립트 언어

  • 동일 단일 페이지 애플리케이션(SPA)

단점

  • 브라우저 상에 소스가 노출되어서 보안에 취약
  • 브라우저 상에서 소스 변경 가능. 사용자가 임의로 기능을 실행하거나 악용할 가능성이 있다.
  • 한정된 객체와 객체 함수 제공
  • 다중 프로세서 다중 스레딩 기능이 없다.

0개의 댓글