본문 바로가기

programming study/Computer Science

[코드잇] 프로그래밍 언어 이해하기 (1)(2021.2.9)

본 내용은 해당 강의 토대로 작성

프로그래밍 언어 살펴보기

01. 프로그래밍 언어란?

  • 컴퓨터 : 일을 대신해 주는 기계
  • 프로그램 : 컴퓨터가 어떤 일을 해야할지 알려주는 설명서
  • 프로그래밍 언어 : 설명서를 쓰기 위해 사용하는 언어

02. 프로그래밍 언어의 발전

  • 주판, 파스칼 계산기
    • 단순 계산
    • 프로그래밍 언어 : 숫자로만 이루어짐
  • 현대의 컴퓨터
    • 많은 기능
    • 프로그래밍 언어 : 문자와 숫자, 수학 기호

프로그래밍 언어를 분류하는 두 가지 기준

01. 프로그래밍 언어 구분하기

  • 공통적으로 영어, 숫자, 괄호, 따옴표, 점, 세미콜론으로 이루어져있다.
  • 각 언어마다 자료형, 변수, 함수, 파라미터 형식의 차이가 있다.
  • 다양한 이유로 많은 언어들이 만들어지게 되었다.
    • 용도
    • 상황
    • 프로젝트

02. 객체 지향 프로그래밍

  • 객체 지향: 프로그래밍에대한 여러 접근 방식 중 하나 cf) 절차지향(C, Ftn, Haskell)
  • 객체 지향 언어들 : Swift, Java, Kotilin, Ruby, Objective-C, C++, Python, C# 등

03. 객체 지향 프로그래밍 이해하기

Top -down

  • 많은 복잡한 기능을 가진 프로그램을 협업하여 만들 때 사용하는 방식
  • 전체를 각 부분으로 나누어 각자 완성해 나간다.
  • 문제점
    • 하나의 데이터가 여러 함수에서 사용된다.
    • 어떤 데이터가 사용되는지 쉽게 예측할 수 없다.
    • 완성되기 전에 동작이 잘 되는지 확인 불가.
    • 하나의 오류가 전체를 망가뜨릴 위험이 있다.
    • 하나의 기능을 수정할 시 모든 코드를 점검해야 한다.

객체 지향 프로그래밍(Bottom -up)

  • 객체: 함수와 관련있는 변수, 데이터를 하나로 묶은 것
  • 프로그램을 객체 단위로 나누어서 작업
  • 직관적
  • 단독으로 테스트 가능
  • 한 객체가 오류가 발생해도 나머지는 동작한다.

객체 지향의 장단점 정리

장점 단점
프로그래밍 용이 설계부터 많은 비용 소요
가독성 규모가 작은 프로젝트에서 비효율
유지보수 느린 실행속도
재사용 가능 저장 공간을 많이 차지
테스트 가능  
  • 객체 지향 언어를 사용하면 좋은 곳

    • 많은 데이터를 다루는 프로그램
  • 객체 지향 언어가 적합하지 않은 곳

    • 극도로 빠른 실행속도가 필요
    • 저장장치가 성능이 제한적인 분야
    • 임베디드

딥러닝, Ai를 파이썬에서 만드는 이유는?

  • 실제 연산 작업은 C, C++, Java가 수행
  • 파이썬은 라이브러리를 통해 그를 정리하고 상호작용하는 역할

04. 변수의 데이터 타입

자료형

  • 변수의 데이터 타입 지정
  • Java, C
    • 복잡, 비효율
    • 코드를 정밀하게 작성할 수 있다.
  • Python, Ruby는 자료형이 필요없다.
    • 간편함, 편리함
    • 코드를 정밀하게 만들 수 없어 오류 발생 가능성이 있다.

05. Dynamic typing vs. Static typing

  • 프로그래밍 언어 패러다임

Dynamic typing

  • 변수의 자료형을 정하지 않는 언어
  • 간결, 편리
  • 컴퓨터적 구조 생략
  • 가독성
  • 접근성
  • 작은 사이즈의 프로그램을 만들기 적합
  • 느린 실행속도

Static typing

  • 자료형을 정하는 언어
  • 명확, 정교
  • 컴퓨터적 구조
  • 제약, 규칙이 많다. (사람의 실수를 방지, 체계적인 코드 작성)
  • 많은 사람이 협업하는 프로젝트에 사용
  • 빠른 실행속도
  • 임베디드, 실시간 투자, 인공 지능 분야

장단점 정리

  Dynamic typing Static typing
코딩 속도 빠름 느림
실행 속도 느림 빠름
가독성 좋음 나쁨
난이도 쉬움 어려움

느낀점

왜 JavaScript는 웹에서 사용되고 Java는 문법이 왜 그렇게 복잡한지에 대해 궁금했는데 큰 맥락에서 알수있게 되었다. 내에게 필요한 언어가 무엇이고 왜 배워야하는지 정할 수 있을 것 같다.