세상 모든것을 분석하다

반응형

프로그래밍 언어 이해하기

 

이게 단순히 강의만 듣고 넘기는 것보다 들은 내용을 정리하면서 듣는 것이 중요한 것 같다.

 

강의를 들을때는 음음 그렇구나 하고 넘기는데 막상 들은 내용을 정리하려고 하니까. 

 

이해 안되는 부분이 생기기도 했다.

 

 

 

 

 

프로그래밍 언어를 분류하는 기준에는 크게  3가지가 있다.

 


객체지향

 

우선 객체 지향 프로그래밍은 

 

탑다운  (top-down) 방식으로 프로그래밍하던 것에서 발견된 문제들을 해결하기 위해

 

바텀업 (bottom-up) 방식으로 프로그래밍하는 것이라고 한다.

 

 

탑다운 방식에서 발생한 문제

1. 하나의 기능을 수정하려면 전체를 수정해야함

2. 한 부분에서 오류가 나면 전체가 실행이 안됨.

3. 코드 전체를 완성하기 전까지 동작여부를 알 수 없다.

 

많은 데이터를 다루는 프로그램일수록 탑다운 방식이 비효율적이다.

 

 

 

모든 데이터가 한곳에 모여서 기능이 얽혀있는 것이 아니라

 

기능과 관련 있는 데이터를 하나로 묶어서 객체(object)라고 부르기 시작하면서

 

객체 지향 프로그래밍이되었다.

 

 

따라서, 객체 지향 프로그래밍을 하면, 코드에 변화를 주고 싶을때 해당하는 객체 하나만 신경 쓰면 된다.

 

또한 전체가 완성되지 않아도 테스트를 해볼 수 있으며, 객체로 나누어진 기능을 다른 프로그램에 재사용할 수 있다는 장점이 있다.

 

하지만 객체 지향에도 단점이 있다.

 

바로 코드를 작성하기에 앞서 나누는 것부터 노력이 많이 들고,

 

실행 속도가 느리며 저장 공간을 많이 차지하기도 한다는 것이다.

 

 

이런 극명한 장단점으로, 객체 지향 언어를 사용하면 좋은 곳과 아닌곳으로 나누어 볼 수 있다.

 

규모가 작거나, 수정할 일이 없거나, 빠른 실행 속도가 필요한 경우,

 

또 저장공간이 제한적인 기기에서 돌아가는 프로그램을 만들 때는 객체 지향을 안 쓰는 게 더 유리하다.

 

 

따라서  객체 지향 프로그래밍을 지원하지 않는 언어라고 해서 배울 필요가 없지 않다. 

 

 


변수의 데이터 타입

 

String name="may";

name="may" 의 차이!

 

프로그래밍 언어별로 차이가 있는 부분이다.

 

자료형을 선언해 주어야 하는 언어의 경우 확실히 번거롭기는 하지만,

 

이것이 코드가 잘 짜여지도록 돕는 안전장치가 되기도 하는 것이다. 

 

 

 

name="may" 

이런 식으로 자료형을 미리 선언하지 않고 프로그램이 실행될 때 정해주는 언어를 Dynamic typing 언어라고 한다.

 

실행 속도가 조금 느린 경향이 있고 문법이 비교적 단순하며

 

코드의 내용이나 로직이 눈에 쉽게 들어간다는 특징을 가지고 있다.

 

Dynamic typing 언어에는 python, ruby ,javascript, php, perl 등이 있다

 

 

 

 

String name="may"

이런식으로 자료형을 실행하기 전에 미리 정해주는 언어를 static typing언어라고  한다.

 

이 언어는 비교적 명확하고 정교한 코드를 추구하기 때문에 컴퓨터적 표현이 코드에 있어서 코드가 길어진다.

 

컴퓨터적 구조를 적어줌으로 실행 속도가 빠르지만 Dynamic typing언어에 비해 규제나 제약이 많다.

 

static typing 언어에는 c, java ,c++, haskell, Kotlin 등이 있다.

 

 

 

따라서 dynamic typing 언어는 작고 단순한 프로젝트에, static typing언어는 크고 복잡한 프로젝트에 적합하다.

 

 


 

컴퓨터 vs. 인간?

 

언어는 컴퓨터에 가까운 언어(low-level)와 인간과 더 가까운 언어(high-level)로 나누어 볼 수 있다.

 

예를 들어 dynamic typing 언어는 인간에게, static typing 언어는 컴퓨터에 가까운 언어라고 볼 수 있다.

 

뭐가 어디에 가깝다 명확한 기준이 있는 것은 아니지만,

 

컴퓨터의 입장에서 쓰여진 코드일수록 문법이 복잡하고 실행속도가 빠르다는 특징이 있다.

 

 

codeit 에서 수강한 내용을 바탕으로 정리한 내용입니다.

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading