프로그래밍

나도 공부하고 너도 공부하는 C/C++ (1)

안녕 개붕이들아.

난 개발자로 일하고 있는 한 명의 개붕이야.

컴퓨터 / IT판의 프로그래밍 목록을 살펴보니

질문도 많이 올라오고 하는 거 보니 나도 복습하고 잘못 알고 있던거 알아가면서 같이 공부하면 좋겠다는 생각이 들었어.

 

그래서 아주 기초적인 부분부터 설명하고 알아가보자는 차원에서 글을 올려보려고 한다..

오류가 있거나 하는 부분은 많이 지적해주길 바라고.. 나도 잘 모른다.. 잘 모르는 데도 할 수 있는게 또 어찌보면 프로그래밍이라..

긴 글 싫어하는 사람은 조용히 뒤로 가기 눌러.

 

 

1. 프로그래밍 개요

(1) 프로그래밍이란?

쉽게 표현하면, 사용자가 어떤 목적을 가지고 컴퓨터를 이용하는 모든 행위가 사실 프로그래밍이라고 할 수 있어.

그런데 여기서는 그런 포괄적인 내용에서 좀 더 들어가서

 

a) 사용자가 목적을 가지고 있다.

b) 그러한 목적을 달성하기 위한 방법으로 컴퓨터를 선택했다.

c) 목적을 달성하기 위한 행동 양식(알고리즘)을 만든다.

d) 그러한 행동 양식을 컴퓨터가 이해할 수 있는 언어로 번역 또는 작성한다.

e) 이를 토대로 컴퓨터에게 입력하고 실행한다.

f) 목적을 달성한다.

 

이런 6단계로 구성하는 것이 우리가 배우는 프로그래밍이라는 과목? 혹은 학문일거야.

그 중에서도 우리가 집중하는 것은 d)에서 "컴퓨터가 이해할 수 있는 언어"로 작성하는 방법을 배우는 것이라고 할 수 있을 듯..

 

(2) 컴퓨터가 이해할 수 있는 언어

컴퓨터는 기본적으로 "기계어"라고 불리는 언어만을 이해할 수 있어.

우리가 배웠던 2진수가 기계어라고 생각하면 편해.

다만 그냥 2진수가 아니라 의미가 부여되어 있는 2진수가 기계어지.

 

예를 들어

자연수를 저장하기 위한 2진수 언어가 있다고 할 때,

2진수로 저장하는 자연수는 단순히 자연수의 나열이라고만 하면 안될거야.

 

"사과"가 있다고 할 때, 이게 진짜 먹는 사과를 말하는 건지 아니면

누군가의 닉네임을 부르는 건지는 단순 "사과"라는 말로는 모르잖아?

그래서 컴퓨터에 저장할 때는 "개드립 닉네임 / 사과" 이런 식의 분류가 필요해.

 

그런고로 자연수 15를 저장한다고 가정해보자.

단순히 15를 2진수로 변환한 1111가 아니라

10001111(맨 앞의 1은 자연수일 때만 1이라고 약속했다고 생각해)

이런 식으로 저장해야 하는 거야.

그럼 컴퓨터는 이걸 보고 아 이것은 자연수 15구나 하고 인식하는 거지.

00001111로 저장되어 있다면 맨 앞의 수를 보고 1이 아니니까 이건 자연수가 아니구나

10010000로 저장되어 있다면 맨 앞의 수를 보고 1이니까 이건 자연수 16이구나.

이렇게 말야.

 

근데 이런식으로 프로그래밍을 해야 한다면, 사람들이 쉽게 프로그래밍을 할 수 없겠지?

그래서 여기서 한 걸음 더 나아가서

아까 위의 1로 표시한 것을 (자연수 진위 판별) + (0 또는 1 * 7개)로 표시하는 방식을 하나의 영어 단어처럼 표기하기로 약속하기로 한거야.

자연수를 저장하는 방식을 natural이라고 쓰기로 했다고 생각해보자고.

그래서 "natural 15" 라고 입력하면 자동으로 1 + 0001111 해서 컴퓨터가 알아서 아 자연수 15구나 하고 인식할 수 있게 되는 거지.

이런 기초 단계의 언어를 "어셈블리 언어"라고 해 

 

문제는 어셈블리 언어는 프로그래밍의 비약적인 발전을 가져왔는데도 한계가 드러났다는 점이야.

사람들이 자주 사용하는 기능을 구현하는 것뿐인데도 너무 많은 텍스트가 사용되었거든...

쉽게 말해 코드가 길어진다는 말이지..

그래서 사람들이 자주 사용하는 기능들은 요약해서 기능을 따로 만들고, 새로운 언어로 작성할 필요가 있음을 느꼈어.

이를 토대로 3세대 언어가 등장했지.(기계어 : 1세대, 어셈블리 : 2세대)

3세대가 우리가 배우는 C 같은 언어들이야.

 

그 이후에는 객체 지향성이라던가.. 어쩌고 저쩌고 이야기가 무궁무진 하게 늘어날 테지만..

아직 초보인 C부터 하면 되니까.. 3세대 이후의 언어는 잠시 설명을 미뤄두자.

 

(3) 작성하는 방법

기본적으로 아주 편리하게 프로그래밍 언어를 작성하는 방법은

크게 2가지로 나뉘어.

1) 윈도우만 써봤습니다 하는 사람

Visual Community 2017 버전을 다운로드 받고, 거기서 C/C++ 패키징을 다운로드 받는 방법이야.

그건.. 따로 여기 달아놓지 않을게.. 조금만 구글링 해봐도 다 나와.

게다가 프로그래밍 하고자 하는 사람들은 반드시 갖추어야 할 덕목이 있어.

"구글링"의 생활화..

그러니 내가 구글링 하는게 좀 약했다 하는 사람들의 능력을 키워주기 위함 + 내도 쓰기 귀찮아의 콜라보로..

구글링하라는 말을 많이 할거야..

 

2) 맥 / 리눅스도 써봤습니다 하는 사람

뭐야.. 프로그래밍 할 줄 아는거 아님?

여튼.. 맥이나 리눅스는 터미널이라는 게 있을 거야.

기본적으로 완전히 생버전의 리눅스가 아니면, 대부분은 gcc나 vi가 깔려있거든..

vi 생성하고자 하는 파일명.c 입력하면.. 바로 vi 편집창으로 넘어가면서 프로그래밍이 가능해.

단, visual 처럼 자동생성은 안되니까.. 웬만하면 비주얼 쓰자..

 

일단 처음이니까 요정도만...

피드백 받을거고 어떤 방향으로 글 나갔으면 좋겠으면 댓글로 의견남겨줘.

그럼 안녕 다음에 만나요

11개의 댓글

2019.11.15

우왕 친절하게 잘 적어줬넹

 

다름글도 기대할게!

0
2019.11.15

다들 호응 감사

근데 한번에 많이 안쓰려고 해서 속도가 답답할 순 있지만 내가 쓰려고 하는 곳까지는 쓰도록 노력할게

0
2019.11.15

비주얼 스튜디오 2017 이 갑자기? ㅋㅋㅋ

어짜피 커뮤니티 버전 쓸꺼면 최신 쓰지

무슨 이유 있음?

0
2019.11.15
@마왕곰

2019같이 완전 최신버전은 되도록 안쓰는게 좋은게

안정성이 떨어져서.... 보통은 출시 후 2-3년 정도 된걸 선호해서 2017 쓰라고 한거 뿐임

2019 써도 상관은 없음

0
2019.11.15
@숨은음은

근데 뭐 사실 ide 가 안정성이 조지거나 그럴일은 적으니까

사실 있던게 없어지는게 문제지..

암튼 취향의 영역이라는거네 ㅇㅋㅇㅋ

0
2019.11.15

다른 언어는 계획에 없나요?

0
2019.11.15
@2sens

아쉽게.. C계열만 알아서 ㅠ

0
2019.11.15
@숨은음은
0

끝까지 볼게요 :) 계속 써주세요

0
2019.11.15

포트폴리오 만들기 전에 여기다 연습하는거지?!

0
2019.11.15
@김케이

아니..

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180373 [잡담] 개꿀 당근에서 만원짜리 컴 득템 2 플게이어 1 3 시간 전 205
180372 [컴퓨터] 중고로 키크론 k3 pro? 라는 키보드를 구해왔는데 6 3th3 0 3 시간 전 107
180371 [견적] 이거 에센코어 KLEVV DDR4 PC4-25600 CL22 매우 싸게 나왔는... 11 부터시작하는이세... 0 8 시간 전 141
180370 [잡담] 모니터암 설치하는데 미스테리 3 사나이테스트 0 9 시간 전 225
180369 [컴퓨터] 음향 관련 잘아는 형들 질문... 3 Marlin 0 9 시간 전 102
180368 [잡담] 애드가드 안드로이드 kt-dpi 우회 업데이트 됨 어무니 0 10 시간 전 138
180367 [컴퓨터] m2 ssd를 메인보드 기준으로 슬롯 1번에 있는거 2번으로 옮기... 3 오뜨 0 10 시간 전 100
180366 [잡담] 유튜브앱 구간 스킵 방식이 바꼈네?? 2 츄이로 0 11 시간 전 143
180365 [컴퓨터] 이륙 허가좀 17 사촌간부랄빨기 0 11 시간 전 140
180364 [컴퓨터] 완전 컴알못인데 이 레노버 노트북 사도 될까? 10 Fiesta 0 12 시간 전 146
180363 [잡담] 천천히 충전하는 거 폰 배터리에 더 안 좋음? 6 개돼지무한리필 0 12 시간 전 123
180362 [잡담] 메타ai 공개 2 년차html개발자 1 12 시간 전 127
180361 [컴퓨터] p41을 서브 게임저장용은 낭비인가? 7 신우철 0 14 시간 전 144
180360 [정보] 해당 모니터암이 여기 모니터2개에 맞을지 모르겠습니다 2 골든베릴 0 17 시간 전 116
180359 [견적] (직구) SK하이닉스 Platinum P41 2TB PCIe4.0 NVMe M.2 2280 ... 7 요기쪄 0 17 시간 전 300
180358 [컴퓨터] 이거 괜찮은 가격인가요? 5 죽업 0 18 시간 전 187
180357 [잡담] 급해서 특급운송으로 주문했는데... 오브 0 18 시간 전 145
180356 [컴퓨터] 사도 됨? 8 or5469 0 21 시간 전 179
180355 [모바일] 에어팟 프로 1세대 노이즈 캔슬링시 들리는 잡음 해결 방법 5 기승전치킨 0 23 시간 전 160
180354 [컴퓨터] RX7600 생각보다 잘만들었네? 7 Vv연옥의사신vV 0 1 일 전 268