본문 바로가기
카테고리 없음

프로그래밍 언어 분류

by cha123 2022. 10. 2.

접근 방식에 따라 프로그래밍 언어에 기준이 달라진다.

객체 지향에 따라 언어가 맞추어 나오고 있는 추세이다.

 

객체 지향 프로그래밍에 장단점

  • 장점
  • 데이터나 기능에 변화가 생기더라도 관련된 객체만 신경 쓰면 되니 프로그래밍이 편하다
  • 조금 더 의미 있는 단위로 나누기 때문에, 코드를 이해하거나 다른 프로그램에 재사용하기 편하다. 전체를 완성하지 않아도 일부 기능만 있어도 작동하기 때문에 테스트에 유리
  • 단점
  • 코드를 잘게 나누어 설계가 어렵다.
  • 코드를 작성 하기 전에 설계부터 많은 노력이 필요하다.
  • 사람이 해하기 편하기 위해 작성되다 보니 컴퓨터가 이해하는데 시간이 걸리고 저장 공간을 많이 차지한다.

Dynamic typing

간편함과 편리함의 추구.

컴퓨터의 구조를 생략하기 때문에 코드에 내용이 눈에 잘 들어오고 배우기가 쉽다.

컴퓨터 구조를 생략하기에 실행속도에 민감하거나 성능이 좋지 않은 곳에서는 실행하기가 쉽지 않다.

예) js, Ruby

 

Static typing

안전성과 정교함의 추구

컴퓨터적 구조를 적어주기 때문에 코드의 구조가 눈에 잘 들어오지만 코드가 배우기가 쉽지않다.

코드의 컴퓨터적 구조덕에 컴퓨터가 고민을 덜하게 되어 실행속도가 중요한 곳에 더 사용된다.

인공지능, 임베디드, 실시간 투자분야

예) java, c++

 

High - level VS Low - level

high로 갈수록 객체 지향과 사람에 친화적인 언어이고 반대로 low로우 갈수록 컴퓨터 친화적인 언어 이다.

 

분류 총 정리

자세한 언어(Low - level)

Low - level에 가까운 어셈블리 언어나 c언어가 있다.

객체 지향이 적용되지 않고 코드를 작성할때 자료형등의 컴퓨터적 구조를 고려해야한다.

이러한 언어들은 사람보다 컴퓨터의 논리적인 사고 방식에 맞추어져 있다.

컴퓨터가 아닌 스마트tv, 스마트 워치, 냉장고 등 성능이 제한적이고 속도가 중요한 곳들에서 사용된다.

이러한 곳에 들어가는 시스템을 임베디드 시스템이라고 한다. iot라고 해서 이런 임베디드 시스템을 연결하여 스마트홈을 만들거나 기계들 사이의 통신을 할 수 도 있게 만듭니다.

Low - level언어가 활약하는 다른 분야

문자를 실시간으로 전송하는 텔레그램, 트위치, 실시간 스트리밍, 검색엔진, github, 머신런닝같은 빅데이터 처리

  • 단점 : 코드를 작성하거나 고치는 게 힘들다.
  • 장점 : 프로그램을 만들기만 하면 실행 속도 빠르다. 성능이 제한적인 컴퓨터에 적용할 수 있다.

 

체계적인 언어

Low - level 언어 와 같이 static typing 언어 이지만 객체 지향이 적용된 언어, java, c++ 같은 언어

체계가 잡혀 있어 협업을 하기가 좋다. 오류가 적고 대규모 프로젝트에 적합

규모가 큰 기업들에 많이 사용된다. 구글, 에어비엔비, 아마존 등이 있다.

  • 단점 : low - level 언어 보다 낫지만, 여전히 문법을 사용하는 것은 쉽지 않다. 코드를 작성하는 시간 보다 체계적인 설계하는 시간이 오래 걸릴 수 있다.
  • 장점 : 짜임새 와 협업이 중요한 대규모 프로젝트에 적합하다. 객체 지향이 적용되어 low - level 언어 보다 보수하기 쉽다.

 

쉬운 언어(High - level)

객체 지향이 적용된 Dynamic typing언어를 말한다. 사람이 비교적 쉽게 사용할 수 있다. python, ruby등이 있다.

언어에 특징으로 최대한 짧고 간결한 코드를 추구, 문법이 간편함, 코드 작성 시간이 짧다.

빠른 개발 추구하고 변화가 많은 분야에서 사용된다.

  • 단점 : 코드 작성 시간이 짧지만 컴퓨터의 실행 속도 늦다. 성능이 제한적인 거나 빠른 속도 실행이 필요한 경우 사용할 수 없다. 코드에 제약이 너무 없어 오류를 방지 하기에 좋지 않다. 대규모 프로젝트에 적합하지 않다.
  • 장점: 진입 장벽이 낮다. 쉽게 배울 수 있다. 코드에 독해 와 작성이 빠르고 수정이 쉽다.