마토의 세상

MATO WORLD

Daily 일상 기록/인강 기록

컴퓨터 개론 02. 프로그래밍 언어 이해하기 (2)

jy-agnes-lee 2021. 7. 21. 21:31

프로그래밍 언어 Overview

01. 프로그래밍 언어의 스펙트럼

- 프로그래밍 언어 분류 기준

1. 객체 지향 지원 여부

2. 변수의 자료형 지정 여부

3. 컴퓨터와 인간 중 어디에 더 가까운지 (상대적 개념 - 스펙트럼-> 추상화의 정도)

- 프로그래밍 언어를 추상화가 얼마나 되었는지를 기준으로 분류하는 방법

기준 : 변수의 자료형 

컴퓨터에 가까운 언어 = 저수준 언어 (Low-Level Programming Language)

-> 사람이 이해하기 어렵다.

-> 1, "1"을 다르게 인식 (자료형을 필요로 한다)

-> 추상화가 적게 되어있는 언어

사람에 가까운 언어 = 고수준 언어 (High-Level Programming Language)

-> 컴퓨터가 이해하기 어렵다.

-> 1, "1"을 동일하게 인식 (자료형이 필요없다)

-> 추상화가 많이 된 언어

컴퓨터
저수준 언어
Low-Level
Machine code



Assembly
language
C


Java

C++
Ruby

Python
사람
고수준 언어
High-Level

                                                                                                      * Tip :큰 관점에서 보면 다 매우 사람과 가까운 언어임 !

머신코드(0101000111)이나 어셈블리어의 경우 컴퓨터만 이해할 수 있는 언어이다.

02. 프로그래밍 언어의 추상화

- 추상화

정의 : 몰라도 되는 내용은 숨기고 꼭 알아야 할 내용만 드러내는 것

프로그래밍 언어의 전반에 적용됨.

- 추상화가 프로그래밍 언어에 미치는 영향

추상화가 얼마나 되었는가에 따라

문법, 코드를 작성하는 방식, 코드를 바라보는 관점이 달라진다.

예 ) 신발관리프로그램(저수준) - 컴퓨터가 이해할 수 있게 하나하나 다 알려줘야 한다.

신발관리프로그램(고수준) - 간단하게 필요한 명령만 내리는 것.

-> 프로그램을 작성할 때 어디에 초점을 두는지가 달라진다.

04. 저수준 언어와 고수준 언어 비교하기

- 추상화가 많이 된 언어와 적게 된 언어의 장, 단점

 두 언어 모두 Static typing언어지만 저수준 언어는 객체지향개념이 적용되지 않은 언어, 고수준 언어는 객체지향개념이 적용된 언어이다.

저수준 언어의 특징 고수준 언어의 특징
1. 컴퓨터에게 맡기는 일을 줄여 실행 속도가 빠름
2. 프로그램을 빠르고 효율적으로 동작할 수 있음.
3. 성능이 좋지 않은 제한적 상황에서도 효율적 동작 가능
4. 대체로 컴퓨터가 메인이 아닌 기계에 자주 사용.
5. 코드 유지 보수가 어려움.
1. 프로그래머가 좀 더 필요한 기능과 논리에만 집중 가능
2. 유지 보수에 용이(수정이 편리)
3. 비교적 단기간에 코드작성 가능
4. 성능이 좋은 경우 유리함.
5. 체계적 설계에 시간이 오래 걸린다. - 체계적인 언어
6. 간결하고 편리하다 - 쉬운 언어

* Tip : 저수준 언어는 자세한 언어, 고수준 언어는 체계적인 언어(자바, C), 쉬운 언어(루비, 파이썬)가 있다.

스마트 워치, 스피커, 전광판, 가전제품, TV 등 컴퓨터가 메인이 아닌 기계에는 보통 작은 칩에서 돌아간다.

따라서 저장 공간이나 성능이 컴퓨터에 비해 상당히 열악하기 때문에 저수준 언어를 핵심적으로 사용한다.

이런 곳에 들어가는 시스템을 임베디드 시스템이라고 부르며,

IoT는 이러한 임베디드 시스템을 연결하여 스마트홈을 만들거나 기계 간 통신이 가능하도록 하는 것이다.

이외에도 수많은 문자를 실시간으로 전송해야 하는 텔레그램과 같은 채팅 애플리케이션이나 트위치 같은 동여상 스트리밍 서비스, 검색엔진, 개발자들이 코드관리를 위해 사용하는 깃허브, 머신러닝과 같은 빅데이터 처리 속도와 알고리즘이 중요한 그런 분야에서 많이 사용한다.

* Tip : 규모가 큰 기업들에서는 자바를 많이 사용하기 때문에 취업 시장이 비교적 큰 편이라 볼 수 있다.

06. 프로그래밍 언어의 흐름

대체로 객체지향이 적용되지 않은 자세한 언어 -> 객체지향이 적용된 체계적인 언어 -> 객체지향이 적용된 쉬운 언어의 방향으로 흘러갔다.

언어를 나누는 절대적인 기준은 없고, 필요에 따라 언어들이 등장하였다.

프로그래밍 언어의 흐름
객체지향지원여부 변수의 자료형 지정 여부
O X Static Typing Dynamic Typing
자세한 언어 체계적인 언어 쉬운 언어
Assembly language
Fortran

COBOL
Pascal
Basic
Swift
Kotlin
C++
Java
Haskell
Go
JavaScript
php
Python
Ruby
Perl
Objective-C

07. 특수 목적 언어

- R

주로 통계 소프트웨어 개발과 데이터 분석 및 시각화에 사용

특히 통계나 빅데이터 분석에 필요한 데이터 전처리, 분석, 수학적인 계산과 그래프 그리기에 특화

- SQL

데이터베이스 설계, 운영, 관리를 위한 프로그래밍 언어

-> 데이터베이스 : 데이터를 모아둔 공간

특히 데이터 분석에 활용

- 프론트엔드/웹디자인 (웹구성 3요소)

HTML : 웹페이지 구조와 레이아웃 구현

CSS : 웹페이지의 시각적 표현 구현

(+ JS : 웹페이지 동작)

==> 웹페이지가 사용자와 상호작용할 수 있도록 만듦.

이외에도, MATLAB(공학 시뮬레이션용 프로그래밍 언어), Csound(소리 및 음악 합성용 프로그래밍 언어), Scratch(교육용 프로그래밍 언어) 등이 있다.

 

프로그래밍 언어 제대로 사용하기

01. 좋은 코드란?

- 프로그래밍 언어의 활용법

프로그래밍 언어는 동작만 한다고 좋은 코드를 작성한 것은 아님.

* Tip : 어디에 중점을 두어 프로그래밍을 배우면 좋을지 고민해보아야 한다.

개발자들은 컴퓨터와 코드를 통해 소통하며, 타 개발자와도 코드를 통해 소통한다.

02. 읽기 쉬운 코드

- 어떻게 하면 더 좋은 코드를 만들 수 있는가

가독성 높은 코드

1. 상황에 맞는 적절한 코멘트 작성하기

-> Comment 코멘트 : 사람에게만 전하는 메시지

2. 변수명 잘 짓기

-> 전체적인 코드의 흐름 안에서 충분히 구체적이고 간결한 이름