<프로그래밍 언어 이해하기>
1. 프로그래밍 언어 살펴보기
# 프로그래밍 언어란?
컴퓨터 → 일을 대신 해주는 기계
프로그램 → 컴퓨터가 어떤 일을 해야할지 알려주는 설명서
프로그래밍 언어 → 설명서를 쓰기 위해 사용하는 언어
2. 프로그래밍 언어를 분류하는 두 가지 기준
# 프로그래밍 언어
프로그래밍 기본 개념 → 자료형, 변수, 함수, 파라미터
코드마다 생김새가 다르다
용도, 상황, 프로젝트 규모에 따라서 더 유용하고 적합한 언어가 있다
# 프로그래밍 언어 퀴즈 정리
모든 프로그래밍 언어의 사용법이 모두 동일한 건 아니다.
대체로 비슷한 개념들이 각 프로그래밍 언어에 녹아 있지만, 그 개념을 사용하는 방식과 코드의 문법은 달라질 수 있다
# 객체 지향 프로그래밍
객체 지향 프로그래밍 키워드 5가지
- 클래스 + 인스턴스(객체)
- 추상화
- 캡슐화
- 상속
- 다형성
💡객체 지향이란?
• 프로그래밍에 대한 여러 접근 방식 중 하나
• Top-down 방식은 전체를 합쳐야지만 전체를 실행할 수 있음
→ 함수와 데이터를 합친 개체 단위로 프로그래밍 하게 됨
장점
• 데이터나 기능에 변화가 생기더라도 관련된 개체만 신경쓰면 되니 프로그래밍하기 편해짐
• 프로그램에서 재사용하기도 수월함
• 일부 기능만 사용해 볼 수도 있기 때문에 테스트에 유리
• 유지 보수에 용이함
단점
• 코드를 잘 나누고 설계하는 것이 어려움
• 코드를 작성하기도 전에 설계부터 많은 노력이 듦
• 사람이 이해하고 작성하기 편한 방식으로 코드를 나누다보니 컴퓨터가 이해하는데 시간이 걸려 실행 속도가 느 려짐, 저장 공간을 많이 차지함
• 임베디드와 같은 특정 분야에는 부적합
객체 지향 언어를 사용하면 좋은 곳
• 많은 데이터를 다루는 프로그램이나 규모가 큰 프로젝트
객체 지향 언어가 적합하지 않은 곳
• 극도로 빠른 실행 속도가 필요한 분야 혹은 저장 장치나 성능이 제한적인 기기
# 변수의 데이터 타입
프로그래밍 언어 분류 기준 두가지
1.객체지향유무
2.변수의 자료형 지정
자료형 → 변수의 데이터 타입 지정
Dynamic typing (파이썬 루비 php js 등)
• 자료형을 미리 정하지 않고 실행될 때 정해줌
• 간결하고 편리함
• 코드의 내용 로직 이해 편함
Static typing (c/c++,java 등)
• 자료형을 실행되기 전에 미리 정해줌
• 명확하고 정교함 (제약이나 규제가 많다)
• 컴퓨터 구조가 눈에 들어옴(실행 속도 빠름)
3. 프로그래밍 언어 overview
# 프로그래밍 언어의 스펙트럼
컴퓨터에 가까운 언어(low-level)
• C, java , 어셈블리어, 머신코드
인간에 가까운 언어(high-level)
• Python, Ruby
# 프로그래밍 언어의 추상화
고수준언어는 추상화가 많이 된 언어, 즉 저수준 언어는 추상화가 적게 된 언어
# 저수준, 고수준 언어 비교
•고수준 언어의 장점
→ 프로그래머가 좀 더 필요한 기능과 논리에 집중할 수 있다
•고수준 언어의 단점
→일반적으로 실행이 느림
•저수준 언어의 장점
→ 실행이 빠름
•저수준 언어의 단점
→ 이해하기 어렵고 복잡하고 코드가 길어서 만드는데 시간이 오래걸림
4. 프로그래밍 언어 제대로 사용하기
# 좋은 코드란?
작성한 코드의 퀄리티가 높아야함
# 읽기 쉬운 코드
가독성이 좋은 코드
• Comment :사람에게만 전하는 메세지
• 변수 이름을 잘 짓는 것 → 충분히 구체적이고 간결한 이름
# 스타일 가이드 활용
변수: 보통 띄어쓰기 불가
Snake 표기법, pascal 표기법, camel 표기법
스타일 가이드
• 띄어쓰기, 줄바꿈 등 규칙을 정해놓고 코드 작성
# 구조화가 잘 된 코드
💡파일 분리 → 관련된 코드를 필요한 만큼 한곳에 모아두는 것
객체지향 프로그래밍을 배우면 구조화를 잘 할 수 있다
💡디자인 패턴→ 프로그래밍에서 고질적으로 발생하는 문제들을 해결하기 위한 테크닉
# 라이브러리 vs 프레임워크
💡라이브러리
→ 기존의 코드를 활용, 언어를 선택하는 기준이 되기도 함
→이미 누가 만들어둔 코드를 가져와서 쓰는 것
💡프레임워크
→ 적은 양의 코드만으로도 프로그램을 만들 수 있다는 점이 라이브러리와 유사
→ 프로그래밍의 뼈대가 이미 준비되어있고 내가 작성할 공간들만 비워져 있다는 것
→ 반은 완성된 프로그램
'🏃♀️ 대외활동 > Codeit Boost-Node.js' 카테고리의 다른 글
2주차 프로그래밍과 데이터 in JavaScript [코드잇 부스트 백엔드 스터디] (1) | 2024.05.12 |
---|---|
2주차 프로그래밍 핵심 개념 in JavaScript [코드잇 부스터 백엔드 스터디] (2) | 2024.05.12 |
1주차 프로그래밍 시작하기 in JavaScript [코드잇 부스트 백엔드 스터디] (0) | 2024.05.08 |
1주차 프로그래밍 프리뷰 [코드잇 부스트 백엔드 스터디] (0) | 2024.05.08 |
1주차 프로그래밍 오버뷰 [코드잇 부스트 백엔드 스터디] (1) | 2024.05.08 |