내가 쓰는 언어 이해하기 (Python, C++, Javascript)

개미·2023년 3월 7일
0

1. Python

  • 가독성과 신뢰성이 높은 객체 지향 프로그래밍 언어이다.
  • 표준 라이브러리도 많기 때문에 원하는 기능은 대부분 구현된 경우가 많다.
  • 인터프리터 언어로 한줄 한줄 바로바로 실행하며 디버깅이 용이하다.
  • 스크립트 언어이다.
  • Garvage Collection을 지원한다.
  • 동적 타입 언어이다. 변수의 자료형을 따로 지정하지 않고 선언하는 것으로 값을 지정할 수 있다. 따라서 변수의 자료형은 코드가 실행되는 시점에 결정된다.

2. C++

  • 컴파일 언어이다.
  • garbage collection이 없어 사용자가 메모리를 관리해야 한다.
  • 객체 지향언어이다.
  • 타입 체크를 엄격히 하여 Runtime Error의 가능성을 줄이고 디버깅을 돕는다.

3. Javascript

  • 인터프리터 언어이다.
  • 객체 지향형 프로그래밍과 함수형 프로그래밍을 모두 표현한다.
  • 동적 타입 언어이다.

4. 용어 정리

객체 지향 프로그래밍 vs 함수 지향 프로그래밍

객체지향함수지향
모든 데이터를 객체로 취급하고, 처리 요청시 객체 내부 기능으로 처리하는 방법"순수 함수"를 사용해, 상태를 제어하기보단, 빨리 처리하는데 초점을 둔 방법
코드의 재사용이 가능하여 유지 보수에 용이함수의 동작부가 간결해지기 때문에, 코드 이해도와 가독성이 좋아짐.
처리 속도가 상대적으로 다소 느리고 설계에 많은 시간이 소요됨.외부 데이터 혹은 내부 데이터의 상태를 조작할 수 없음.
함수가 일급 객체객체(클래스)가 일급 객체
Python, C++, JavascriptJavascript

** 순수함수: 동일한 입력값을 넣었을 때 항상 동일한 리턴값을 반환하며 외부요인에 영향을 받지 않는 함수.

** 일급객체: 다른 요소들과 아무런 차별이 없는 객체. 즉, 함수의 인자로도 넘겨질 수 있고, 변수에 대입도 가능한 객체를 일급 객체.

컴파일러 언어 vs 인터프리터 언어

컴파일러 언어인터프리터 언어
의미코드 실행 전 컴파일 시, 소스 코드 전체를 한번에 기계어로 변환 후 실행하는 언어코드가 실행 단계인 런타임에서 코드 한 줄씩 중간 코드인 바이트코드로 변환 후 즉시 실행하는 언어
실행 파일OX
횟수컴파일은 한번만인터프리트는 코드 실행마다 반복적으로
예시C, C++, JAVAPython, Javascript

++ 스크립트 언어: 이미 존재하는 소프트웨어를 제어하기 위한 용도로 사용되는 언어. 인터프리터 언어이다.
ex) JavaScript는 웹 브라우저의 스크립트 언어이다. 그 목적이 고정되어 있어서 스크립트 언어라고 한다.
컴파일러 언어와 인터프리터 언어랑은 다른 얘기!

Garbage collection

메모리 관리 기법 중 하나로 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 자동으로 해제하는 기능

장점단점
이미 동적 할당한 메모리를 해제한 영역에 접근하게 되는 버그를 줄임어떤 메모리를 해제해야 할 지 결정하는데 사용되는 알고리즘에 의해 비용이 듦
이미 해제된 메모리를 또 다시 해제하는 오류를 줄임할당된 메모리가 해제되는 시점을 알 수 없게 됨
메모리 누수를 줄임시작과 실행 타이밍을 모르기에 실시간 예측 시스템에는 부적합
profile
개발자

0개의 댓글