프로그래밍

나도 공부하고 너도 공부하는 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
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180445 [컴퓨터] 컴맹 노트북에 ssd추가 장착 질문점 2 바퀴 0 5 시간 전 65
180444 [컴퓨터] 윈도우 설치 후에 쓰던 디스크를 추가설치하려는데 14 드웨인토마스 0 10 시간 전 127
180443 [컴퓨터] 램 16기가인데 왜이러는지 모르겠어요 12 파워불곰이 0 10 시간 전 299
180442 [프로그래밍] 현업개발자분들 주말엔 편하게 쉴수있나요? 8 키로 0 11 시간 전 449
180441 [컴퓨터] 컴퓨터 왔다 8 사촌간부랄빨기 0 11 시간 전 197
180440 [잡담] 최종 데스크테리어 완성! 6 냐하하하하 3 12 시간 전 206
180439 [컴퓨터] 이 케이스보다 더 예술적인 케이스 본 적이 없어 3 닉네임변경후13일차 0 13 시간 전 181
180438 [잡담] rx6600 질문 3 전업주부하고싶다 0 13 시간 전 60
180437 [컴퓨터] 공랭 1티어 케이스 찾음. 4 마두라지 0 13 시간 전 181
180436 [컴퓨터] 윈도우11 요즘 어떰? 19 9700k 0 14 시간 전 281
180435 [컴퓨터] 윈도우11에서, 꼭 로그인을 해야 시작프로그램이 실행됨?? 1 갤럭시울리 0 15 시간 전 90
180434 [컴퓨터] 레이저 프린터 저렴하고 성능좋은 거 있음 알려주세요. 3 발로그림 0 15 시간 전 50
180433 [모바일] 갤a35 사려고 하는데요 1 소리벗고빤쓰질러 0 15 시간 전 67
180432 [컴퓨터] 10400f에 rx6800 가격 ladin 0 16 시간 전 73
180431 [모바일] 아이폰15 프맥에서 갤24 울트라로 18 1등 0 18 시간 전 204
180430 [컴퓨터] 중고로 팔려고하는데 도움 부탁드립니다 4 뀨엉 0 19 시간 전 148
180429 [컴퓨터] 님드라 앱코 케이스 쓰지마세요 11 블끼얏호우 0 19 시간 전 399
180428 [컴퓨터] 네트워크 공유가 안돼.. 7 WE3 0 19 시간 전 81
180427 [견적] 4070티슈 살바에 4080슈퍼ㄱㄱ? 11 r71999 0 21 시간 전 282
180426 [컴퓨터] 그래픽 카드구매 질문 5 라티오스 0 21 시간 전 92