프로그래밍

나도 공부하고 너도 공부하는 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 처럼 자동생성은 안되니까.. 웬만하면 비주얼 쓰자..

 

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

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

그럼 안녕 다음에 만나요

13개의 댓글

20 일 전

이런글을 쓰는 사람은 많았으나 이런 글이 오래가는건 본 적이 얼마없다....

0
20 일 전

우왕 친절하게 잘 적어줬넹

 

다름글도 기대할게!

0
20 일 전

하나만 지켜줘. 강좌 끝까지 쓰는거. 다들 반복문 쓰고나면 사라지고 없음.

2
20 일 전

다들 호응 감사

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

0
20 일 전

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

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

무슨 이유 있음?

0
20 일 전
@마왕곰

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

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

2019 써도 상관은 없음

0
20 일 전
@숨은음은

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

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

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

0
20 일 전

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

0
20 일 전
@2sens

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

0
20 일 전
@숨은음은
0

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

0
20 일 전

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

0
20 일 전
@김케이

아니..

0
번호 제목 글쓴이 추천 수 날짜 조회 수
공지 컴퓨터 / IT에 관련된 글을 올려주시기 바랍니다. 21 overflow 5 2016.08.22 22760
122948 [모바일] 어흑 내 백업파일... 친구없는병신찐따... 0 18 분 전 11
122947 [프로그래밍] 형냐들질문좀.. 6 rjsrjasorjso 0 36 분 전 43
122946 [프로그래밍] 하 진짜 물어보고 지우는 놈들 왜 그러는걸까? 6 headfish 0 48 분 전 67
122945 [컴퓨터] 컴린이 짭수 샀는데 팬이안돌아간다?!! 7 무의식의흐름 0 57 분 전 49
122944 [컴퓨터] 모니터 27인치에서 해상도 6 친구없음 0 1 시간 전 56
122943 [잡담] VR기기 추천받음! 7 하찮은 0 1 시간 전 46
122942 [컴퓨터] 모니터 27인치 QHD FHD??? 7 친구없음 0 1 시간 전 85
122941 [잡담] 로지텍 G102 유선 쓰는데? 6 딩덕 0 1 시간 전 71
122940 [잡담] 글카 못빼겠다는 개붕아 13 멘붕맛보드카 0 1 시간 전 105
122939 [컴퓨터] 제발 도와주세요 ㅠㅠ 1 닉생각하기귀찮 0 2 시간 전 53
122938 [잡담] 아 이거 개붕이꺼 아닌가????? 5 실2 0 2 시간 전 63
122937 [견적] 몬헌하려고 견적짰는데 5 minoss 0 2 시간 전 73
122936 [컴퓨터] windows 7을 사용해서 새로 구매하려고 해 2 그냥이에요 0 2 시간 전 89
122935 [잡담] 음원 사재기 사진에 나오는 이 네트워크 장비 명이 뭐냐 2 몰라아아아앙 1 2 시간 전 75
122934 [견적] tv 5.1 스피커 추천좀..... 8 류혱 0 3 시간 전 43
122933 [견적] 견적 수정해봤어 4 빨간내복 0 3 시간 전 82
122932 [잡담] 밥을 제대로 주지 않으면 노예는 일하지 못한다 7 실2 0 3 시간 전 99
122931 [모바일] 유튜브 어플 캐시 하고 데이터 지워도 됨?? 3 Gochu丶Man 0 3 시간 전 64
122930 [견적] 얘들아 견적 한번봐줭 25 빨간내복 0 4 시간 전 120
122929 [잡담] 로지텍 G613 팔고 옴 뀨뀨뀨꺄꺄꺄 0 4 시간 전 62
서버에 요청 중입니다. 잠시만 기다려 주십시오...