SONOTRI
  • Unit 1, 2
    2024년 12월 31일 12시 14분 01초에 업로드 된 글입니다.
    작성자: sonootri

    1. 문제 해결을 위한 과학적 사고

    공학자들은 어렵고 복잡한 문제에 어떻게 접근할까?

    -> 복잡한 문제를 작은 문제로 나누어 하나씩 접근한다. 이렇게 작은 문제를 하나씩 해결하다 보면 결국 큰 문제를 해결하게 된다.

     

    이처럼 현실 세계의 문제를 분석하여 해결책을 찾는 과학적 사고법을 computational thinking이라고 하며, 이렇게 설계한 해결책을 컴퓨터의 명령어로 작성하는 것을 컴퓨터 프로그래밍이라고 한다. 즉 작은 문제로 분해하고, 문제의 패턴을 발견하고, 어떤 데이터를 이용해야 하는지 찾는 과정이다.

     

    예를 들어, 비트맵 파일을 아스키 아트로 변환하는 문제는 1) 이미지 포맷 알아내기, 2) 픽셀의 색상을 얻어오기, 3) 픽셀이 색상에 따라 특수 문자로 출력하기로 나누어 생각할 수 있다.

     

    +) 처리하고자 하는 작업 또는 문제는 다른 말로 요구사항이라고도 한다. 따라서 프로그램을 작성하는 작업은 요구사항을 만족시키는 일이 된다.

     

     

     

    2. 알고리즘과 코딩

    알고리즘이란 뭘 의미하는걸까?

    -> 문제에서 일정한 패턴을 발견하고, 패턴을 토대로 문제를 해결하는 절차를 알고리즘이라고 한다.

     

    그리고 이 알고리즘을 코드로 표현하는 행동코딩이라고 한다. 알고리즘을 컴퓨터 명령으로 작성하는 것을 프로그래밍이라고 하며, 이는 코딩과 같은 개념이다.

     

    프로그래밍과 코딩?

    -> 사실 둘 다 같은 작업을 지칭한다. 프로그래밍은 컴퓨터 명령어로 표현한다는 뜻이라는 컴퓨터 쪽에 가깝고, 코딩은 C 언어 등으로 프로그래밍 언어로 코드를 작성한다는 뜻에서 언어 쪽에 가까운 표현이다.

     

     

    3. C언어란?

    BCPL(Basic Combined Programming Language) -> B언어 -> C언어 -> C++, Java, C#, PHP...

    현재 우리가 사용하고있는 Window, Linux, iOS, Android 등의 운영체제의 핵심 요소인 커널은 C언어로 만들어져있다(약간의 어셈블리어 포함). 즉, 운영체제의 모든 기능을 이용할 수 있는 건 C언어를 통하기 때문이다. 다른 언어들은 모두 C언어의 라이브러리를 가져다 쓰는 구조이다.

     

    특히 메모리와 하드웨어를 직접 제어하는데 C언어를 따라갈 언어가 없다. C와 C++을 제외하면 메모리를 직접 제어하는 범용 언어는 많지 않다. 우리 눈에 잘 띄지는 않지만 C언어는 컴퓨터 세상의 단단한 기반을 이루고있다.

     

    C언어가 어렵다는 평가도 있지만, 프로그래밍의 기초를 제대로 배우기 좋은 언어이기도 하다. 메모리 관리나 하드웨어에 관련된 내용도 배우기 떄문에 컴퓨터의 동작 원리를 함께 이해할 수 있다.

     

    BCPL
    : 마틴 리처드가 설계한 절차적 명령형, 구조적 컴퓨터 프로그래밍 언어이다.

    BCPL은 괄호 {}를 사용한 최초의 프로그래밍 언어이다. 괄호는 거듭되는 문법의 변화를 생존시켰고, 프로그램 소스 코드의 문들을 표기하는 일반적인 수단이 되었다.

     

    댓글