본문 바로가기
ETC/LEARN

[혼공얄코] 프로그래밍 용어 정리 끝 (6주 차)

by 아이엠제니 2024. 8. 13.

 

💾 혼공학습단 12기


 

 

 

 

 

챕터 4. 개발자의 길로 들어서기: 프로그래밍 용어 알기

04-4 오류라는 위험에 대비하기

 

 

 

1. 컴파일 오류, 런타임 오류


  • 컴파일 오류
    • 소스 코드에 오타나 문법적 결함 등의 문제가 있는 경우 빌드 과정에서 컴파일이 실패하면서 오류가 보고됨
    • 해결하지 않으면 빌드 자체가 되지 않음
  • 런타임 오류
    • 프로그램 실행 중, 즉 런타임에 발생하는 런타임 오류
    • 컴파일 과정이 없는 인터프리터 언어에서 발생하는 오류는 모두 런타임 오류임
    • 런타임 오류가 발견하지 못한 채로 프로그램이 사용자에게 배포됨
    •  대표적인 오류
      1. Null에 의한 오류
      2. 0으로 나눠서 생기는 오류
      3. 의도하지 않은 무한 루프
버그
: 개발자에 의해 발생, 개발자가 코드를 잘못 작성해서 발생하면 '버그', 오류의 결과, 오류의 결과로 프로그램이 의도와 다르게 동작하는 것을 '버그'
오류
: 프로그램 사용자에 의해 발생, 사용자가 전화번호 입력란에 한글을 입력에서 일어나면 '오류', 개발자가 작성한 코드에 결함이 있으면 '오류'

 

 

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. 다음 중 틀린 것을 고르세요.

  1. 패키지 매니저는 언어에 따라 디버그나 빌드에도 사용될 수 있습니다.
  2. 환경 변수의 값은 프로그램의 코드에 들어갑니다.
  3. JVM은 JRE에 포함됩니다.
  4. SDK는 개발자의 편의를 위해 제공됩니다.
  5. 라이브러리는 개발자가 작성하는 코드에 import 되어 사용됩니다.

 

3. 다음 중 나머지 넷과 종류가 다른 하나를 고르세요.

  1. apt-gt
  2. pip
  3. Gradle
  4. JDK
  5. NPM

 

4. 다음 용도 중 환경 변수를 사용하기 적합하지 않은 것을 고르세요.

  1. 소프트웨어가 사용할 언어가 설치된 위치
  2. 외부에서 노출되어서는 안 되는 코드
  3. 소프트웨어의 버전 정보
  4. 실제로 배포될 컴퓨터인지 여부
  5. 소프트웨어를 실행할 서버의 식별 값

 

 

 

6주 차 후기


6주 차 혼공얄코 학습이 끝이 났다.

5주 차에 이어, 프로그래밍 용어 관련하여 학습을 했다.

역시나 아는 단어이고, 안다고 생각했었지만 두루뭉술하게 알고 있던 것에 대해 조금 더 이해할 수 있는 시간이었다.

혼공얄코 책을 봤다고 해서 끝은 아니라고 생각한다.

종종 필요한 내용이 있다면, 앞으로도 찾아서 볼 예정이다.

6주 차 학습까지 완주할 수 있었다니, 나 자신 칭찬한다. (셀프 칭찬)

 

 

 

한빛미디어 <혼자 공부하는 얄팍한 코딩 지식> 책 참고

 

 

 

 

 

300x250