💾 혼공학습단 12기
챕터 4. 개발자의 길로 들어서기: 프로그래밍 용어 알기
04-4 오류라는 위험에 대비하기
1. 컴파일 오류, 런타임 오류
- 컴파일 오류
- 소스 코드에 오타나 문법적 결함 등의 문제가 있는 경우 빌드 과정에서 컴파일이 실패하면서 오류가 보고됨
- 해결하지 않으면 빌드 자체가 되지 않음
- 런타임 오류
- 프로그램 실행 중, 즉 런타임에 발생하는 런타임 오류
- 컴파일 과정이 없는 인터프리터 언어에서 발생하는 오류는 모두 런타임 오류임
- 런타임 오류가 발견하지 못한 채로 프로그램이 사용자에게 배포됨
- 대표적인 오류
- Null에 의한 오류
- 0으로 나눠서 생기는 오류
- 의도하지 않은 무한 루프
버그
: 개발자에 의해 발생, 개발자가 코드를 잘못 작성해서 발생하면 '버그', 오류의 결과, 오류의 결과로 프로그램이 의도와 다르게 동작하는 것을 '버그'
오류
: 프로그램 사용자에 의해 발생, 사용자가 전화번호 입력란에 한글을 입력에서 일어나면 '오류', 개발자가 작성한 코드에 결함이 있으면 '오류'
2. 논리 오류
- 컴파일이나 실행 자체는 성공하지만 잘못된 결과를 반환하는 오류를 논리 오류라고 함
- 알고리즘상의 논리적 결함이나 코드상의 문제로 발생함
3. 예외 처리
- try-catch
- try문 안에는 오류 바생 가능성이 있는 코드를 작성하고, catch문 안에는 오류가 발생할 경우에 실행할 명령문을 입력함
public void tryDivide (int number, int divider) {
try {
// 오류 발생 가능성이 있는 코드
int result = number / divider;
system.out.println("몫: " + result);
} catch (Exception e) {
// 오류 발생 시 실행할 코드
System.out.println("예외 상황 발생");
}
}
4. 메모리 누수, 가비지 컬렉션
- 메모리 공간에 불필요한 데이터가 쌓여서 남아있는 것을 메모리 누수라고 함
- 가비지 컬렉션
- 자바나 파이썬에서는 메모리 관리를 상당 부분 자동으로 처리해 줌
- 데이터 중에 사용할 일이 없는 데이터를 컴퓨터가 판단해서 주기적으로 치워줌
- 한계
- 프로그램이 동작하는 도중 불특정 시점에 실행됨
- 언어의 쓰레기 수집 방식에 따라 프로그램이 부분적으로 혹은 전체적으로 중단됨
- C언어나 C++에서처럼 개발자가 직접 메모리를 비우는 것에 비해서는 프로그램의 성능이 떨어짐
- 불필요한 데이터를 모두 제거하지 못한다는 점도 한계
04-5 개발에 필요한 여러 가지 도구
1. 패키지 매니저
- 패키지: 소스 코드를 배포하기 위해 사용되는 코드 묶음
- 패키지 매니저: 패키지를 편리하고 안전하게 다루기 위한 도구
- 운영체제 패키지 매니저: 컴퓨터에서 사용할 프로그램들을 관리함
- 리눅스: apt-get, yum, pacman
- 맥: Homebrew
- 프로그래밍 언어 패키지 매니저
- 파이썬: pip
- 자바: Maven, Gradle
- 자바스크립트(Node.js 환경): NPM, Yarn
- 루비: RubyGems
- 패키지 매니저는 라이브러리를 설치, 업데이트, 삭제하는 데 사용됨
- 운영체제 패키지 매니저: 컴퓨터에서 사용할 프로그램들을 관리함
2. 환경 변수
- 프로그램이 컴퓨터에서 동작할 때 환경과 관련된 변수, 동적인 값
- 운영체제에서 프로세스를 실행시키기 위해 참조하는 값을 담은 변수가 환경변수임
- 용도
- 필요한 프로그램의 실행 경로
- path 경로: 컴퓨터에서 작동하는 프로그램을 필요로 하는 다른 프로그램이나 라이브러리의 위치를 모두가 접근할 수 있는 곳에 적어 두는 용도로 사용하는 환경 변수
- 개발 환경 용도 구분
- 민감한 요소의 보안
- 필요한 프로그램의 실행 경로
3. 런타임 환경
- 런타임 = 런타임 환경 (런타임 시스템)
- 어떤 프로그래밍 언어가 컴퓨터에서 일을 할 수 있도록 해 주는 요소
- 특정 언어로 작성한 프로그램을 실행할 수 있도록 해주는 프로그램
- 자바
- JRE (Java runtime environment, 자바 런타임 환경)
- JRE는 자바로 작성한 소스 코드를 컴파일했을 때 생성된 자바 바이트코드를 해당 컴퓨터의 기계어로 통역해 주는 프로그램인 JVM과 자바 프로그램을 돌릴 때 이와 함께 사용되는 각종 라이브러리가 포함되어 있음
- Node.js
- 컴퓨터에서 직접 자바스크립트를 돌릴 수 있도록 해 주는 런타임 환경임
4. SDK
- Software Development Kit의 약자로, 소프트웨어를 개발하는 데 사용되는 키트임
- 라이브러리, 런타임 환경, 편집 도구, 코드 샘플, 설명서 등이 포함됨
5. 라이브러리, 프레임워크
- 공통점: 특정 기능을 누군가 미리 소스 코드로 작성해 놓은 것
- 차이점
- 라이브러리: 가져다 쓰는 것
- 프레임워크: 기반으로 삼는 것
04-6 타임머신을 타고 평행우주를 누비는 개발자
1. VCS
- VSC: 소프트웨어의 시간과 차원을 관리해 주는 시스템을 버전 관리 시스템, 다른 말로 VCS라고 함
- 프로젝트의 변경 내역, 프로젝트 버전을 관리해 주는 프로그램
- 개발자가 일정 작업을 마칠 때마다 파일의 추가, 수정, 삭제된 모든 내역을 편리하게 백업할 수 있음
- 프로젝트의 상태를 버전별로 상세히 조회하고, 필요 시 원하는 시점으로 되돌릴 수 있도록 해 줌
- 저장 공간도 매우 효율적으로 사용하기 때문에 프로젝트 버전이 많이 만들어져도 용량이 크게 늘어나지 않음
- SVN(SubVerioN, 소스 관리 도구), CVS(Concurrent Versions System, 동시 버전 시스템), Mercurial(머큐리얼, Mercurial), 깃 등
2. 깃
- 2005년, 리눅스의 창시자인 리누스 토르발스가 깃이란 VCS 개발
- 리셋과 리버트
- 커밋: 프로젝트 상태를 버전으로 저장하는 것
- 리셋: 작업을 취소하고 이전으로 되돌려야 하는 상황
- 리버트: 해당 버전만 콕 집어서 거꾸로 돌림
- 브랜치
- 브랜치: 하나의 프로젝트 폴더 안에 여러 차원을 분기할 수 있음
- 머지: dev에서 작업한 것을 main으로 가져오는 것
- 리셋과 리버트
3. 깃 호스팅 서비스
- 깃 호스팅 서비스: 온라인에서 효율적으로 협업하기 위해, 작업한 여러 버전이 공유되고 저장되는 공간
- 푸시: 이 공간에서 각자 작업한 버전을 업로드하는 것을 푸시라고 함
- 풀: 동료들이 작업한 버전을 통합된 최신 버전으로 다운로드하는 것
- 깃허브, 깃랩, 빅버킷 등
기본 숙제(필수)
Ch.04(04-5) 확인 문제 풀고 인증하기 (p.340~341)
04-5 확인 문제
1. 다음 중 문장에 들어갈 알맞은 단어를 보기에서 찾아 작성해 보세요.
1. 프레임워크 / 2. 환경 변수 / 3. SDK / 4. 라이브러리
- 컴퓨터에 설치된 프로그래밍 언어의 경로를 프로그램에 알려주기 위해 (2. 환경 변수)가 사용됩니다.
- 소프트웨어를 개발하는 도중 이미 개발된 유용한 기능을 넣기 위해 (4. 라이브러리)를 받아 사용할 수 있습니다.
- 프로그램을 만들 때 필요한 도구들을 제공하는 것은 (3. SDK), 프로그램의 기초 설계를 미리 구성해둔 것을 (1. 프레임워크)라고 합니다.
2. 다음 중 틀린 것을 고르세요.
- 패키지 매니저는 언어에 따라 디버그나 빌드에도 사용될 수 있습니다.
- 환경 변수의 값은 프로그램의 코드에 들어갑니다.
- JVM은 JRE에 포함됩니다.
- SDK는 개발자의 편의를 위해 제공됩니다.
- 라이브러리는 개발자가 작성하는 코드에 import 되어 사용됩니다.
3. 다음 중 나머지 넷과 종류가 다른 하나를 고르세요.
- apt-gt
- pip
- Gradle
- JDK
- NPM
4. 다음 용도 중 환경 변수를 사용하기 적합하지 않은 것을 고르세요.
- 소프트웨어가 사용할 언어가 설치된 위치
- 외부에서 노출되어서는 안 되는 코드
- 소프트웨어의 버전 정보
- 실제로 배포될 컴퓨터인지 여부
- 소프트웨어를 실행할 서버의 식별 값
6주 차 후기
6주 차 혼공얄코 학습이 끝이 났다.
5주 차에 이어, 프로그래밍 용어 관련하여 학습을 했다.
역시나 아는 단어이고, 안다고 생각했었지만 두루뭉술하게 알고 있던 것에 대해 조금 더 이해할 수 있는 시간이었다.
혼공얄코 책을 봤다고 해서 끝은 아니라고 생각한다.
종종 필요한 내용이 있다면, 앞으로도 찾아서 볼 예정이다.
6주 차 학습까지 완주할 수 있었다니, 나 자신 칭찬한다. (셀프 칭찬)
한빛미디어 <혼자 공부하는 얄팍한 코딩 지식> 책 참고
300x250
'ETC > LEARN' 카테고리의 다른 글
[자격증] 2024 제53회 SQLD 합격 후기 (0) | 2024.09.10 |
---|---|
[혼공얄코] 6주의 학습 혼공학습단 12기 회고 (0) | 2024.08.13 |
[혼공얄코] 프로그래밍 용어 습득하기 (5주 차) (0) | 2024.08.06 |
[혼공얄코] 요청 메소드와 응답코드, 리눅스에 대한 학습 (4주 차) (0) | 2024.07.23 |
[혼공얄코] 다양한 IT 용어 학습하기 (3주 차) (0) | 2024.07.16 |