본문 바로가기
프로그래밍 공통기초

프로그래밍 기초지식 2

by 코드덕후 2022. 8. 13.
728x90
반응형

이글을 읽기 전에 아래글을 먼저 읽어 보세요

2022.08.13 - [프로그래밍 공통기초] - 프로그래밍 용어 기초지식

2022.08.13 - [프로그래밍 공통기초] - 기초 디버깅

2022.08.13 - [분류 전체보기] - visual studio 디버깅(메모리 디버깅)

 

프로그래밍이란 ? 

 

프로그래밍에 처음으로 입문했을때  필자는 프로그래밍 언어만 알면 프로그램을 모두 짤수 있을거라 생각을 했습니다.

 

그리고 요즘에도 아래와 같은 질문을 가장 많이 받습니다.

 

어떻게 하면 프로그래밍을 잘 할수 있을까요?

어떻게 하면 c언어를 잘 할수 있을 까요?

어떻게 하면 언어에 대해 이해가 잘 갈까요?

 

이는 초보들이 가장 하기쉬운 착각입니다.

이러한 질문에 대해서 필자가 먼저 이야기 하는것은 먼저 프로그래밍을 이해해야 한다고 답변해 줍니다.

 

그러면 이렇게 되 물어 옵니다.

프로그래밍은 프로그램을 만드는 것인데 프로그램을 잘 만들려면 언어만 잘하면 되는것 아니냐구..

 

프로그래밍에 대한 정의를 내려보면 가장 많은 답을 하는것이 프로그램을 만드는 것.

아주 단순하게 이야기 해보면 단순히 프로그램을 만드는 것이 프로그래밍 이다 라고 합니다.

하지만 이것을 저는 이렇게 풀이 해봅니다.  

 

프로그래밍의 정의를 내려보면
주어진 문제에 대해 프로그래밍 도구를 이용해서 컴퓨터가 효율적으로 수행 하기위해서  논리 와 순서에 맞게 처리할 명령들을 나열한 명령들의 집합을 만드는 것.

 

로그래밍 도구란?

 

 

 

C/C++/Java/파이썬/api 같은 프로그래밍 언어도 프로그래밍 도구가 됩니다. 

자료구조/알고리즘/수학원리/물리 등도 프로그래밍 도구가 됩니다.

컴파일러(비주얼스튜디오), 이클립스 같은 툴도 프로그래밍 도구가 됩니다.

 

즉 절절한 도구를 효율적으로 잘 사용해야 프로그래밍을  잘 할수 있다는 뜻이 됩니다.

물고기를 잡을 때는 일반적으로 그물이나 낚시대가 유용하지만 물고기를 잡겠다고 물에 올가미를 풀어 두는 일을 하지는 않을 것이라 생각합니다.

 

프로그램을 짜기위해서 프로그램밍에 필요한 도구가 무엇인지 제대로 알고 설계하고 사용해서 만드는 것이 프로그래밍 이라는 것입니다.

 

그리고 컴퓨터가 효율적으로 수행하기 위해서 라고 말씀드린것도 알고리즘의 이론에 부합하는 내용입니다. 알고리즘은 주어진 문제를 효율적으로 풀어내어 컴퓨터가 조금이라도 쉴 수있게 만들어 주는것 그것이 알고리즘입니다. 빠르게 효율적으로 ....

 

비쥬얼 스튜디오가 없다고 하더라도 메모장으로 소스를 작성할 수는 있습니다.

하지만 빌드도 대신해주는 비주얼 스튜디오 같은 도구(툴)를 이용하는 것은 많은 개발 시간을 단축해 줍니다.

 

그걸 일일이 기계어로 번역 하시는 번거로움을 하지는 않으시겠죠? 

 

프로그래밍 언어의 필요성 

그러면 프로그래밍 언어는  필요한것일까?

컴퓨터는 0과 1을 내부적으로 가장 좋아합니다.

컴퓨터가 관리하는 모든 데이터는 숫자로 이루어져 있습니다.

우리가 사용하는 1120 은 우리는 일천 백 이십이라고 읽지만

컴퓨터는 일일이공 이라고 읽고 저장합니다.

 

사람이 컴퓨터에게 일일이 모든 언어를 숫자로 읽어주는 일은 바로..바보가 하는 일이 되겠죠?

아마 프로그래머의 연봉이 수억을 호가 해도 하지 않는 사람보다는 못하는 사람이 많을 겁니다.

 

예전에는 이런 작업을 사람이 직접 했기 때문에 프로그래머의 연봉이 높았다고 합니다^^

그때로 돌아 가고 싶기도 하긴 합니다 ㅎㅎㅎㅎㅎ( 밥그릇 )

 

컴파일과 컴파일러에 대한 내용을 읽어 보셨다면 위의 내용이 이해가 더 많이 가실거구요

그래도 번역 과정이 이해가 가지 않으시면 컴파일 과 컴파일러에 대한 부분을 더 찾아 보시는게 좋겠습니다.

 

이제 프로그래밍 언어의 필요성에 대해 본격적으로 이야기 해보도록 하죠

 

우리가 사용하는 언어를 문법에 맞게 사용하여 상대방이 알아듣기 쉽게 처리하기를 모두 원합니다.
컴퓨터와도 대화를 편하게 하기 위해 언어를 문법에 맞게 사용하고, 이렇게 만들어진 집합(프로그램)을 컴퓨터가 알아듣기 쉽게 처리하기 위해 프로그래밍 언어를 사용합니다.

 

번역 해주는 컴파일러가 없다면 ??????

 

 

 

이렇기 때문에 우리는 내부적으로 숫자로 변환해주는 컴파일 과정과 이런 컴파일을 대신해주는 툴인 비주얼 스튜디오( 컴파일러 )를 사용하는 것입니다.

 

프로그래밍 언어는 크게 2가지로 분류를 합니다.

 

아주싼 언어인 저급언어???? ^^

비싼 언어인 고급언어???

 

이렇게 고급 언어와 저급언어로 나뉘는데요

 

싸고 비싸서,, 질이 좋고 나빠서 저급과 고급으로 나뉘는 것이 아니라

 

기계가 좋아하고 알아듯기 쉬워서 기계에 가까운 언어를 저급 언어

사람이 읽기 쉽고 알아듯기 쉬워서 사람에 가까운 언어를 고급 언어라 칭하는 것입니다.

 

조금더 깊게 알아 볼까요?

 

- 저급 언어  : 컴퓨터가 바로 처리 가능한 언어

저급 언어의 특징

고급 언어에 비해 기계에 가깝고 기계어와 일대일로 대응한다.

 

1)기계어
컴퓨터가 이해할 수 있는 가장 기초적인 언어
0 과 1의 2진수로만 되어 있다


(기계어)

 

2) 어셈블리어
기계어 명령어 각각에 대해 사람이 알아보기 쉬운 알파벳 기호를 정해 사람이 좀 더 쉽게 컴퓨터의 행동을 제어할 수 있도록 한 언어

(어셈블리어)

 

- 고급 언어 : 인간이 이해하기 쉽고 인간의 사고에 적합한  개념과 구조를 갖는 프로그래밍 언어

고급 언어의 특징

저급 언어에 비해 자연 언어에 가까운 구문 규칙을 갖췄고, 이식 성이 높다.
명령이 기계어와 일대일로 대응하는 어셈블리 언어와는 다르게,  일반적으로 하나의 명령이 복수의 기계어로 치환된다.

고급언어의 종류
   COBOL FORTRAN,  ALGOL, C, C++, C#, WINAPI, MFC, JAVA, BASIC.. 등등 

. 고급언어중 최초의 고급언어는 포트란. ( 군사용 목적으로 많이 이용 )

. 두번째로 나온것이 코볼( 사업용으로 많이 이용 ) 요것만 이미지를 ^^

 

프로그래밍 언어의 전체적 구조

 

 

 

컴파일러 와 인터프로터   

 

- 컴파일러( compiler )
고급언어로 쓰여진 코드를 그와 의미적으로 동등하며 컴퓨터에서 즉시 실행될 수 있는 형태의 목적 프로그램으로 바꾸어 주는 번역 프로그램. ( C, C++, Java 등 )

 

- 인터프리터( interpreter )
코드를 한번에 기계어로 변환시키는 컴파일러와는 달리 프로그램을 한 단계씩 기계어로 해석하여 실행하는 ‘언어처리 프로그램’이다.
한 단계씩 테스트와 수정을 하면서 진행시켜 나가는 대화형 언어에 적합하지만, 실행 시간이 길어 속도가 늦어진다. ( BASIC, HTML ) 

컴파일러가 빌드하는 과정을 그림으로 보면

 

이렇게 이루어 진다.

 

여기까지 프로그래밍 과 프로그래밍 언어 그리고 언어가 어떻게 번역 되어지는가를

알아 보았습니다.

 

프로그래밍에 대한 개념을 먼저 숙지하고

거기에서 필요로 하는 프로그래밍 도구를 적절하게 사용해야 하는것을 배우셨다면

더 많은 발전이 있을겁니다.

 

만약 게임을 개발 한다면 게임에 필요한 언어들을 배워야겠죠?

C/C++/win api/ mfc/ directX 등 필요에 따라서는 다 많은 도구인 엔진( 유니티/언리얼) 같은

것이 필요할것입니다.

 

만약 서버를 개발 해야한다면

C/C++/Tcp/ip / DataBase/Iocp등 배워야할 도구들이 조금씩 달라집니다. 

 

 

 

프로그래밍 언어나 도구들은

프로그래밍을 하는 목적에 맞게 사용해야 한다는 것입니다.

 

728x90
반응형
LIST

'프로그래밍 공통기초' 카테고리의 다른 글

수도코드,의사코드(PseudoCode) 작성 방법  (0) 2022.09.01
프로그래밍 용어 기초지식  (0) 2022.08.13
기초 디버깅  (0) 2022.08.13

댓글