프로그래밍에 대한 이해

JS·2023년 1월 5일
0

Tech Explanation

목록 보기
6/14
post-thumbnail

1. 프로그래밍에 대한 이해

  • 프로그래밍(Programming)은 무엇인가?

    • 사전적인 의미로서 프로그램(Program)은 지시 사항들이 나열된 순서를 프로그램이라 부른다
    • 이를 프로그래밍(ing)에 대입하면, 컴퓨터가 우리의 목적을 달성할 수 있도록 필요한 절차를 기술하는 것을 뜻한다
  • 프로그래밍 언어(Programming Language)란 무엇인가?

    • 컴퓨터는 우리의 언어를 알아들을 수 없다. 0과 1로 이루어진 기계어만을 알아듣는다
    • 컴퓨터는 수동적인 존재로서 우리가 명령을 해야 동작하며, 여기서 명령을 내리는 도구로서 프로그래밍 언어를 사용한다
    • 정리하자면 사람 대신에 컴퓨터에게 내 생각을 전달할 수 있는 도구이다
    • 영어나 한국어, 일본어에도 문법이 있듯 프로그래밍 언어 또한 일정한 규칙이 있으며 이를 문법(Syntax)라 한다
    • 문법을 지키지 않는다면 컴퓨터와 소통할 수 없다
    • 코드(Code)는 문법에 맞춰 적어놓은 명령어를 의미한다
    • 코딩(Coding)은 코드를 작성하는 것을 의미한다
    • 코딩과 프로그래밍을 동일하게 여겨서는 안된다
    • 프로그래밍은 목적을 달성할 수 있게 논리적인 절차를 기술하는 것이며, 코딩은 이 절차를 바탕으로 명령어로 적어나가는 것이다
    • 프로그래밍 언어는 문법을 의미하는 코어(Core) 부분과 문법을 이용, 코딩을 더 편리하게 할 수 있게 도와주는 라이브러리(Library) 부분으로 구성된다 참고 자료
  • 빌드(Build) 과정

    • 컴퓨터는 근본적으로 0과 1밖에 모르며, 우리가 작성하는 코드들은 우리의 언어를 사용하기 때문에 컴퓨터가 이해할 수 있도록 번역을 해주어야 한다
    • 때문에 소스코드 > 빌드 > 실행 가능한 파일로 바꾸어주는 과정이 필요하다
    • 대표적인 빌드과정으로 컴파일(Compile)이 있다
  • 저급 언어(Low-Level Language)

    기계 중심의 언어
    실행 속도가 빠름
    상이한 기계 마다 다른 코드를 가진다

  • 고급 언어(High-Level Language)

    사람 중심의 언어
    실행을 위해서는 번역하는 과정이 필요함
    상이한 기계에서 소스 수정 없이 실행이 가능함

  • 프로그래밍 언어의 성질

    • 프로그래밍 언어의 목적을 위해 만족해야 하는 세 가지 요구사항이 있다

      표현 풍부성(Expressiveness) : 프로그래머의 아이디어를 쉽게 표현할 수 있다
      유지 보수성(Maintainability) : 작성된 프로그램은 쉽게 유지보수할 수 있다
      실행 가능성(Executability) : 작성된 프로그램이 빠르게 실행될 수 있다

    • 그리고 위 세가지 요구사항을 만족하기위해 고려해야하는 설계 원칙들이 있다

      규칙성(Regularity) : 언어의 기능이 잘 조합될 수 있다
      추상화 지원(Support of abstraction) : 실세계의 대상을 간략히 추상화하여 나타낼 수 있다
      복잡도 지원(Complexity control) : 복잡한 대상 및 처리 방법을 제어하기 위해 복잡도를 제어할 수 있다

  • 어떠한 프로그래밍 언어를 선택해야하나?

    • 사용 할 프로그래밍 언어의 커뮤니티가 활발해야 함(관련 지식 검색에 용의)
    • 특정 응용 분야가 존재하는 프로그래밍 언어(예시로 Apple에 사용되는 Swift)
    • 접해 보지 못한 프로그래밍 패러다임을 지원할 수 있는 프로그래밍 언어
    • 중요한 점은 모든 걸 만족하는 언어는 존재하지 않는다. 어떠한 언어를 사용할 지는 목적을 달성하는데 필요한 언어를 선택하면 된다

2. 프로그래밍에 사용되는 도구들

크게 4가지로 분류할 수 있다

  • 텍스트 에디터 : 코드를 작성하는 도구
  • 컴파일러 : 작성한 문서를 컴파일(기계어로 바꿔주는 것) 하는 프로그램 참고 자료
  • 디버거 : 버그를 수정하기 위해(디버그) 여러 가지 기능을 제공하는 프로그램
  • IDE : 상기된 것을 포함하여 여러 프로그램 도구를 통합한 프로그램 참고 자료
profile
게임 프로그래머 지망생

0개의 댓글