본 내용은 해당 강의 토대로 작성
프로그래밍 언어 Overview
01. 프로그래밍 언어의 스펙트럼
프로그래밍 언어의 분류 기준
- 객체 지향 프로그래밍
- Dynamic typing & Static typing
- 고수준 언어(High-level) & 저수준 언어(Low-level)
- 고수준 언어: 사람과 가까운 언어 (Python, Ruby)
- 저수준 언어: 기계와 가까운 언어 (C, Java)
- 더 저수준인 언어 : 어셈블리어, 머신코드
02. 프로그래밍 언어의 추상화
- 추상화가 많이 될 수록 고수준 언어
- 추상화 정도에 따라 문법, 코드를 작성하는 방식, 코드를 바라보는 관점이 달라진다.
03. 저수준 언어와 고수준 언어 비교하기
- 고수준 언어
- 프로그래머가 좀 더 필요한 기능과 논리에 집중할 수 있다.
- 실행 속도가 느리다.
- 저수준 언어
- 코드 작성과 관리가 오래 걸린다.
- 실행 속도가 빠르다.
- 효율적이다.
- 한정된 자원 환경에서도 사용할 수 있다.
04. 프로그래밍 언어 총정리
자세한 언어
- Low-level에 가까운 언어
- 객체 지향 개념이 적용되지 않는다.
- 컴퓨터적 구조 고려
- 임베디드 시스템
- 속도가 중요한 서비스(ex. 채팅 애플리케이션, 동영상 스트리밍 서비스, 검색 엔진)
- 장점 : 실행속도, 한정된 자원에서도 효율이 좋음
- 단점 : 코드 작성이 오래걸리고 유지보수의 어려움
어셈블리 언어, C 언어
체계적인 언어
- 자세한 언어에서 객체 지향 개념이 적용된 언어
- 협업과정에서 오류가 적다.
- 큰 규모의 프로젝트에 적합
- 장점 : 유지 보수의 편리
- 단점 : 비교적 어려운 문법, 체계적으로 설계하는데에 시간이 오래걸림
Java, C++
쉬운 언어
- 객체 지향 개념 적용
- Dynamic typing
- 빠르게 개발이 필요한, 변화가 많고 잦은 분야에서 많이 사용
- 데이터 사이언스 분야
- 업무 자동화와 같이 개인 규모의 프로젝트
- 장점 : 진입장벽이 낮음, 코드 가독성이 좋고 작성이 빠름
- 단점 : 코드 실행 속도 느림, 큰 규모의 프로젝트에서 실수 방지의 어려움, 협업에 부적절
Python, Ruby
0.5 특수 목적 언어
- 일반적인 용도로 만들어진 프로그래밍 언어(General-purpose programming language)
- Java, C, C++ …
- 특별한 목적을 위한 프로그래밍 언어(Domain-specific programming language)
- R, SQL, HTML, CSS, MATLAB, Csound, Scratch
R
- 통계 소프트웨어 개발, 데이터 분석 및 시각화
- 통계나 빅데이터 분석에 필요한 전처리, 분석, 수학적 계산과 그래프 그리기 기능에 특화
SQL
- 데이터베이스를 관리하기 위한 목적의 프로그래밍 언어
- 데이터베이스 : 데이터를 모아둔 공간
HTML, CSS
- HTML : 웹 페이지의 구조와 레이아웃 담당
- CSS : 웹 페이지의 시각적인 표현 담당
- JavaScript를 함께 사용해서, 웹 페이지가 사용자와 상호작용 하도록 할 수 있다.
프로그래밍 언어 제대로 사용하기
01. 읽기 쉬운 코드
- 컴퓨터가 정확하게 동작하면서 가독성이 좋은 코드를 작성해야 한다.
Comment
- 코드 상에서 사람에게 전하는 메시지
- 기능이 어떤 의도인지, 주의할 점 적어두기
이름 잘 짓기
- 변수, 함수의 이름을 적절하게 지어야 한다.
- 전체적인 코드의 흐름 안에서 충분히 구체적이고 간결한 이름
02. 스타일 가이드 활용하기
- 일정한 규칙이 있어야 코드가 보기 좋다.
- 각 언어 별로 규정한 스타일 가이드가 존재한다.
- 구글 검색
변수명 짓기
변수 명을 지을 때 여러가지 방법이 있다.
math score
- snake 표기법 : math_score
- pascal 표기법 : MathScore
- carmel 표기법 : mathScore
03. 구조화가 잘 된 코드
구조화
- 파일 분리: 관련된 코드를 한 곳에 모아두는 것
- 객체 지향 프로그래밍
- 디자인 패턴(Design Pattern) : 프로그래밍에서 고질적으로 발생하는 문제들을 해결하기 위한 테크닉
04. 라이브러리
- 자주 사용되는 코드를 모아 놓은 것
- 필요한 코드를 찾아 사용할 수 있다.
- 빠른 프로그래밍을 할 수 있다.
- 데이터 사이언스에서 많이 사용
- 언어마다 자신에게 맞는 라이브러리가 있다.
- 언어 선택의 기준
05. 프레임워크
- 준비된 뼈대에 코드를 채워넣는 방식
- 반은 완성된 프로그램
- 간단하고 빠르게 프로그램을 만들 수 있다.
- 큰 틀이 정해 있고 세부내용만 바뀌는 프로그램에 사용(ex. 쇼핑몰)
- 고려하지 못한 부분도 제공한다. (ex. 보안, 암호화)
- 원하는 서비스에 맞게 수정한다.
- 프레임워크 틀 자체를 바꾸는 것은 어렵다.
06. 라이브러리 vs. 프레임워크
라이브러리 | 프레임워크 |
---|---|
이미 누가 만든 도구를 가져와 사용 | 정해진 틀에 맞춰 코드 작성 |
코드를 가져오는데 비용이 들지 않음 | 최소한의 노력으로 프로그램 완성 |
07. 남의 코드에서 배우기
- 잘 짜여진 코드를 살펴보면서 어떤 식으로 코드를 작성하는 것이 좋은 것인지 알 수 있다.
좋은 코드를 찾을 수 있는 곳
- 라이브러리 내부의 코드
- 개발 문서
- 커뮤니티
- 구글 Best Practice 검색
느낀점
생각해보니 지금까지 파이썬으로 알고리즘 문제를 풀면서 내 방식대로 너무 지저분하게 작성해왔던 것 같다. 한 번 스타일가이드를 공부해야겠다.
'programming study > Computer Science' 카테고리의 다른 글
TDD와 단위테스트 (0) | 2021.07.14 |
---|---|
[코드잇] 기본 자료 구조들 (1) (2021.2.26) (0) | 2021.02.26 |
[코드잇] 소프트웨어 이해하기 (2021.2.10) (0) | 2021.02.10 |
[코드잇] 프로그래머의 세계 이해하기 (2021.2.10) (0) | 2021.02.10 |
[코드잇] 프로그래밍 언어 이해하기 (1)(2021.2.9) (0) | 2021.02.09 |