01 INTRODUCTION TO COMPUTERS

2025. 1. 2. 12:53학부/객체지향프로그래밍(C++)

  • computer programming?

Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing/building an executable computer program.

즉, 연산 결과를 얻기 위한 과정을 computer programming이라 한다.


  • computer program?

A computer program is a sequence of instructions in a programming language that a computer can execute or interpret.

즉, 컴퓨터가 이해할 수 있는 명령어들의 집합을 computer program이라 한다.


  • computer?

A computer is a digital electronic machine that can be programmed to carry out sequences of arithmetic or logical operations (computation) automatically.

즉, 프로그램을 실행할 수 있는 전자기기를 computer이라 한다.

computer system=hardware+software


  • Computer Program and Machine Languages

컴퓨터는연산 및 정보저장과 처리등에 이진법을 사용.

따라서 프로그램은 이진문자열(bit string) 형태로이루어져있음.(효율적인 해석을 위해 bit string은 16진법으로 표현되곤함).

기계어(machine language)컴퓨터가 바로실행할 수 있는 프로그래밍언어집합이며 bit string으로 구성.


  • Assembly Languages

기계어와 대응되면서 사람이 쓰거나 읽기에 보다 편한 형태의 프로그래밍언어를 의미함.

기계어와 비교하여서는 해석이수월하고 코딩도가능하지만, 여전히 매우 비효율적이고 초보적인 연산들만을 수행가능함.


  • High-Level Languages

사람이 사용하는언어(자연어)와 유사하게 프로그래밍이 가능한 일련의 프로그래밍언어들.

C, C++, Java, Python 일반적으로 사용하는 대부분의 프로그래밍 언어가 이에 해당됨.

  • 컴퓨터보안 등 특정분야에서는 어셈블리어를 많이 다루게될수있음 .

이와반대되는개념으로써 기계어 및 어셈블리어는 저급언어(low-level languages).

High-level language는 컴퓨터가 바로 실행할 수 없기에 compile 과정을 통해 어셈블리어코드로 변환 시켜주어야함.


  • Programming Languages

Low-level language는 하드웨어 종류마다 다를 수 있기 때문에 프로그래밍하려는 하드웨어에 맞는 언어를 써야함.

high-level language는 하드웨어에 따라 달라지지 않음.

하드웨어에 맞는 compiler나 interpreter가 존재해서 똑같은 high-level language라도 각각의 하드웨어에 맞는 machine code로 변환함.


  • C and C++

C 언어에 객체지향 프로그래밍 개념을 더한 언어.

C++은  데이터 추상화를 지원하고 객체지향 프로그래밍을 지원하는 특징을 지닌 범용 프로그래밍 언어.(데이터에서의 추상화라는 것은 복잡한 현실에서 핵심적인 특징만 추려내고, 나머지 세부 사항은 감추는 과정을 의미)


  • 데이터 추상화

C++에서의 데이터  추상화는 클래스를 활용한 추상화, 헤더 파일을 활용한 추상화.

장점은 사용자가 low-level 코드(저수준)를 작성하지 않도록 도와주고, 코드 중복을 방지하고 재사용성을 높인다. 코드의 복잡성과 중복성을 줄여서 가독성을 높이고 프로그램 유지 보수 및 개선, 보안 등에 도움이 된다. 


  • 절차지향 프로그래밍 VS 객체지향 프로그래밍

절차지향 프로그래밍: 실행 순서에 따라 프로그램이 실행, 데이터와 함수(기능)이 늘 분리.

객체지향 프로그래밍: 기본적으로는 실행 순서에 따라 명령어가 실행되지만, 데이터와 함수(기능)을 모두 가진 클래스의 상호작용에 의해 프로그램이 실행될 수 있음.


  • Source Code Editing → Preprocessing → Compile → Linking → Loading → Execution

1)  .cpp형태로 나타나는 C++소스코드를 작성하여 저장.

2) compile전에 compiler에게 정보를 사전 처리하도록 지시함.(ex: 전처리 지시문: #include, #define)

3) compile과정을 통해 C++ 소스코드를 기계어 코드로 변환함.

4) 새로 구현하지 않고 가져다 쓰는 코드들을 연결.

5) 프로그램이 실행되기 위해서는 반드시 메모리(RAM: Random Access Memory:휘발성 메모리)에 로딩되어야 함.

6) 프로그램이 실행될 때는 CPU가 실행 순서에 따라 명령어들을 하나하나 실행함.

 

실행파일은 특정 하드웨어/시스템조합에서 동작하도록 생성되므로 이식불가능.

소스파일을 성공적으로 컴파일해서 다양한 시스템에서 실행 시킬 수 있음. 이식 가능.(c++ 프로그램의 이식성)