호기심으로 시작한 Frontend 꾸준함으로 채워나가는 Developer

[혼공얄코] Chapter 03-3 프로그래밍 언어 분류 본문

혼공 시리즈/혼공얄코

[혼공얄코] Chapter 03-3 프로그래밍 언어 분류

RachelLee 2024. 1. 30. 18:40

번역되는 언어와 통역되는 언어 컴파일 언어, 인터프리터 언어

컴파일 언어

- 배포되기 전 다른 형태로 변환되는

- 소스 코드를 다른 언어나 형태로 번역해주는 프로그램

- 컴파일에 많은 시간을 소모하기도 함

- 빌드 과정이 번거롭지만 한 번 배포된 후에는 빠르게 실행된다는 것도 컴파일 언어의 장점

- 소스 코드를 작성할 때 변수마다 자료형을 고정 => 정적 타입

 

인터프리터 언어

- 작성된 그대로 실행되는

- 프로그래밍과 배포, 오류 수정이 수월

- 프로그램 실행 속도는 컴파일 언어에 비해 느림

- 프로그래밍 과정에서 오류가 잘 발견되지 않는 것도 단점

- 통합 개발 환경(IDE) 의 발달로 보완된 편

- 런타임 시 자료형이 부여되기 때문에 변수의 자료형이 바뀔 수 있음 => 동적 타입

 

컴파일

- 코드를 실행하기 전에 기계어나 다른 코드로 먼저 '번역'하는 것

 

프로그래밍의 흐름 차이 절차 지향, 객체지향 프로그래밍

절차지향 프로그래밍

- 소스 코드를 순차적으로 실행하기 때문에 소스 코드의 순서가 굉장히 중요하며, 프로그램 전체가 유기적으로 연결되어 있음

- 사소한 문제가 생겨도 시스템 전체가 돌아가지 않음

- 실행 순서가 정해져 있기 때문에 소스 코드와 순서가 바뀌면 결과가 달라짐

 

객체지향 프로그래밍

- 코드를 작성할 때 구성 요소를 객체라는 단위로 묶어서 이들의 조합으로 프로그램을 만드는 것

- 프로그램을 다수의 객체로 만들고 이 객체끼리 서로 상호작용하는 방법

- 유지 보수도 쉽고 생산성도 좋음

* 객체: 프로그램에서 어떤 역할을 수행하는 요소를 데이터와 기능으로 묶은 단위

 

단점

- 모든 객체의 역할과 기능을 이해해야 하기 때문에 설계에 많은 시간이 걸림

- 처리 속도가 절차지향보다 느림

- 객체지향 언어는 대체로 난도가 높은 편

 

객체의 설계도 : 클래스

객체를 만들기 위해서는 먼저 각 종류의 객체가 어떤 정보를 가지고 있고 어떤 기능을 수행할지 등의 스펙을 정의해야 합니다. 스펙을 정의하는 명세서를 "클래스"라고 함

 

 

공유되는 스펙 물려주기: 상속

객체지향 프로그래밍에서 button이 가진 기본 속성을 '물려받고', 그 위에 각 버튼만의 기능을 추가하는 방법으로 중복을 줄인 코드르 작성할 수 있고 이를 "상속"이라고 함

- 객체지향 프로그래밍을 제대로 공부하고 나면 간결하고 유연하면서도 높은 안정성과 가독성을 갖춘 프로그램을 설계 할 수 있음

 

객체지향 특징 정리: https://tistory-justgoforit.tistory.com/31

변수는 위험해! 함수형 프로그래밍

- 함수형 기능들을 활용해서 변수의 사용을 최소화하는 프로그래밍 방식 

메모리, 직접 관리하시게요?  매니지드 언어, 언매니지드 언어

메모리 관리

- 요리 탁자 위의 공간을 관리하는 것과 같음

- 프로그램은 해당 프로세스에 할다된 메인 메모리에 소스 코드, 함수, 변수, 인자 등과 같은 값을 올려 놓고 작업, 그리고 프로그램을 실행하는 과정에서 더 이사 앗용되지 않는 데이터는 바로 치워서 요리 탁자의 공간을 확보

 

매니지드 언어

- 메모리를 프로그래밍 언어가 직접 관리

 

언매니지드 언어

- 개발자가 직접 관리

- C와 C++, 어셈블리어

- C언어의 포인터를 능숙하게 잘 다룰 수 있으면 메모리 공간을 원하는 대로 직접 조작해서 매니지드 언어로 작성한 것보다 빠르고, 효율적으로 동작하는 프로그램 만들 수 있음

 

확인문제

더보기

1. 다음 중 틀린 것을 고르세요

3

 

2. 다음 중 문장에 들어갈 알맞은 단어를 보기에서 찾아 써 보세요

- 함수형 프로그래밍을 사용하려면 (스레드)가 많이 사용되는 환경에서 변수 문제로부터 안전한 코드를 작성할 수 있습니다.

- 객체지향 프로그래밍에서는 (상속)을 사용해서, 기본이 되는 부모 클래스로부터 추가 속성이나 기능이 있는 자식 클래스를 파생할 수 있습니다.

 

3. 다음 중 프로그래밍 언어와 가장 연관이 깊은 개념을 이어 보세요.

1. 자바  ㄷJVM

2. C언어  ㄱ포인터

3. 스칼라   ㄴ함수형프로그래밍 (스칼라, 하스켈, 클로저, F# 등)

4. 자바스크립트 ㄹ인터프리터 언어

 

4. 다음 중  A, B, C, D에 알맞은 언어를 보기에서 찾아 써 보세요

1. C언어 

2. C++

3. 자바

4. 자바스크립트