프로그래밍 언어가 너무 많아요!

  • 용도,상황, 프로젝트 등에 따라 다양한 언어를 사용한다.

첫번째 패러다임: 객체 지향 프로그래밍

  • Procedural
  • Object - Oriented
  • Imperative
  • Structured
  • Declarative
  • Functional

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

  • Top - down 방식 : 한개가 오류나면 전체를 실행할 수 없음. 실수하나로 전체 코드 점검 필요!
  • 객체 지향 방식(Bottom - up) : Object안에 함수와 데이터를 가지고 독립적으로 테스트 가능

객체 지향 프로그래밍 정리하기

  • 장점
    • 객체 지향 프로그래밍을 하면 데이터나 기능에 변화가 생기더라도, 관련된 객체만 신경을 쓰면 되니, 프로그래밍하기 훨씬 편합니다.
    • 그리고 조금 더 의미 있는 단위로 나누기 때문에, 코드를 이해하거나, 다른 프로그램에서 재사용하기에도 더 수월하고요.
    • 꼭 전체가 완성되지 않아도 일부 기능만 사용해볼 수도 있기 때문에 테스트에도 더 유리합니다.
    • 유지 보수에 용이하다.
    • 가독성이 높다.
    • 재사용하기 좋다.
    • 테스트가 쉽다.
  • 단점
    • 반면, 객체 지향의 단점은 코드를 잘 나누고 설계하는 것이 어렵다는 겁니다.
      코드를 작성하기도 전에, 설계부터 많은 노력이 든다는 건데요.
    • 그래서, 굳이 객체 지향적으로 만들 필요가 없는 경우들, 예를 들어 규모가 작아서 일을 나누지 않고 혼자 바로 만들어버릴 수 있다든지, 혹은 데이터를 크게 신경 쓰지 않아도 된다든지, 혹은 이후에 바뀔 염려가 거의 없는 경우에는 이런 설계 과정 없이 그냥 바로 만들어버리는 게 더 빠르고 효율적일 수 있는 거죠.
    • 또 객체 지향의 단점이라 하면, 사람이 이해하고 작성하기 편한 방식으로 코드를 나눠두다 보니, 컴퓨터가 이해하는데 시간이 걸려 실행하는 속도가 느려지거나, 저장 공간을 많이 차지하기도 합니다.
    • 설계가 어렵다.
    • 작은 규모의 프로그램에서는 객체 지향적으로 작성하는 것이 더 오래 걸릴 수 있다.
    • 극도로 빠르거나, 주어진 자원을 극도로 활용해야 하는 경우에는 좋지 않다.
    • 임베디드와 같은 특정 분야에는 부적합하다.
  • 객체 지향 언어를 사용하면 좋은 곳
    • 많은 데이터를 다루는 프로그램이나, 규모가 큰 프로젝트같은 경우에는 이 객체 지향의 장점이 더 부각되죠. 특히 요즘은 어떤 프로그램이든 사용하는 데이터가 엄청 많아졌기 때문에, 객체 지향 프로그래밍이 더욱 더 빛을 발하는 시기라고도 볼 수 있습니다.
  • 객체 지향 언어가 적합하지 않는 곳
    • 극도로 빠른 실행 속도가 필요한 분야 혹은 저장 장치나 성능이 제한적인 기기(스마트 워치, 스마트 TV, 스마트 냉장고)에서 돌아가는 프로그램을 만들 때는 객체 지향을 안 쓰는 게 더 유리합니다.

두번째 패러다임: 변수의 데이터 타입

  • Python : 편리함과 간편함 추구
  • Java : 코드를 정밀하게 만듬, 제약(자료형) ⇒ 안정장치 역할

Dynamic typing vs Static typing

  • Dynamic typing : 변수에 자료형을 정해주지 않는 언어
    • 간결하고 편리함

    • 어려운 표현이 적어서 코드의 내용 로직을 이해하기 쉽다

    • 배우기 쉬워서 작은 사이즈의 프로그램을 만들기 적합

    • 컴퓨터적 구조가 생략되서 실행속도가 조금 느림

    • 실행 속도에 민감하지 않은 프로젝트에 사용

    • Dynamic typing 언어는 간편함과 편리함을 추구하며, 컴퓨터적 구조를 생략하기 때문에 코드의 내용(로직)이 눈에 잘 들어오고 사람이 코드를 이해하기 편해서 학습하기가 쉽습니다.

    • 다만 컴퓨터적 구조를 생략하기 때문에 실행 속도에 민감한 곳이나 성능이 좋지 않은 환경에서는 활약하기 힘듭니다.

  • Static typing : 자료형을 표시해둔 언어
    • 명확하고 정교한 언어 추구

    • 컴퓨터적 구조가 눈에 보임

    • 제약이나 규칙이 많아서 실수를 방지하고 체계적으로 코드 작성 가능

    • 체계적이라서 사람이 협업해야하는 프로젝트에 적합

    • 컴퓨터적 구조를 많이 적어서 실행 속도가 빠름

    • Static typing 언어는 안정성과 정교함을 추구하며, 컴퓨터적 구조를 코드에 적어주기 때문에 코드의 구조가 눈에 잘 들어오지만 코드가 복잡해져서 배우기 어렵습니다.

    • 다만 코드의 컴퓨터적 구조 덕분에 컴퓨터가 고민을 덜 하게 되고, 실행 속도가 중요한 곳에서 활약할 수 있습니다. 이런 특징을 살려 Static typing 언어는 임베디드, 실시간 투자, 인공 지능 분야에서 활약하고 있습니다.

Dynamic typing 과 Static typing 정리하기

Dynamic typingStatic typing
코딩 속도가 빠르다코딩 속도가 느리다
실행 속도가 느리다실행 속도가 빠르다
코드의 내용이 눈에 잘 들어온다코드의 구조가 눈에 잘 들어온다
배우기 쉽다배우기 어렵다
혼자서 빠르게 하는, 작고 단순한 프로젝트에 적합여러 사람이 협업하는, 크고 복잫반 프로젝트에 적합
profile
ENTJ 데이터 분석가 준비중입니다:)

0개의 댓글

Powered by GraphCDN, the GraphQL CDN