과학

C언어를 배우자 1. C언어의 정의와 개념 [스압, 읽판처녀글, 브금, No잼, No전문성]

Hello

맨날 눈팅만 하다가 글을 써보려니까 뭐라고 어떻게 시작해야 될지 모르겠다.

그런의미로 일단 브금 받으셈


BGM정보 : 브금저장소 - http://bgmstore.net/view/GsJfQ

 

일단 내가 앞으로 조금씩 써갈 글은 컴퓨터 프로그래밍에 있어서 가장 기본이 된다는 C언어야.

다들 C언어에 대해서 몇번 들은이야기는 있을거야.

내가 가장 많이 주워들은 이야기는

C언어가 애미리스하게 어렵기로 악명이 높다고들 하는데 막상 해보면 그렇게 어려운것만은 아니거든

 

솔직히 시작하기 앞서 나는 C언어에 관해서 그렇게 능통하지도 않고

이틀전에 처음으로 책으로 접하고 야자시간에 연습장으로 끼적이면서 집에와서 프로그램으로 작성해보는 식으로 독학을 하고 있거든

그러다가 매일 눈팅만 하던 개드립 읽판에 올리면 나는 복습이 되서 좋고 너희들은 C언어에 관해 나랑 같이 공부하게 되는거니까

여러가지로 의미 있을거라고 생각했어.

 

그러니까 요점은

 

이 글은 전문가가 세심하게 써내려간 강의글이 아니고

내가 공부한것을 개드리퍼들과 함께 복습할겸 같이 알아보자는 취지로 쓴것이니까

C언어에 대해서 정확하게 알고싶은 사람은 인터넷에 검색해서 강의를 보는게 훨씬 바람직할것이다.



 

이제 본격적으로 C언어에 대해서 같이 공부를 시작해보자.

 

C언어의 정의



C언어의 이름의 유래는

nhnsvc.jpg 

데니스 리치(1941. 9. 9. ~ 2011. 10. 12.)

(Dennis Ritchie | Dennis MacAlistair Ritchie)

1997_ken_thompson.jpg

켄 톰슨(1943. 2. 4. ~ )(Kenneth Lane Thompson))

 

이 두 사람이 만들었다고 해.

내가 C언어를 배우면서 사용하는 책의 본문을 그대로 옮겨 쓰면

 

『UNIX라는 운영체제의 개발을 위해 Dennis Ritchie와 Ken Thompson이 함께 설계한 범용적인 고급언어(High-level Language)언어이다.

하지만 그 탄생의 배경은 훨씬 이전부터 시작되었다.

ALGOL(1960)을 시작으로 CPL(1963), BCPL(1969), B언어(1970)에 이르기까지 그 기원을 두고 있으며, 그 후에 탄생한 것이 C언어이다.』

[출처 : 윤성우 저 열혈  C프로그래밍]

결론부터 말하자면 B언어 다음에 나와서 C언어라고 하는거야.

흔히들 C언어의 C가 Computer언어의 앞부분을 따서 C언어라고 하는줄 알고 있고 나도 그랬어.(개드리퍼들의 경우는 잘 모르겠지만)

하지만 C에는 별다른 의미는 없고 그냥 단순히 B언어 다음에 나와서 C언어인거야.

 

책의 뒷부분에 나와있는 내용을 내 나름대로 요약해서 적어보면,

UNIX라는 운영체제는 ASSEMBLY언어라고 하는 저급언어(Low-Level language)를 사용해서 만들어졌는데 하드웨어의 의존성이 높았다고해

여기서 하드웨어의 의존성이 높다는것을 우리는 이식성이 낮다고 표현하면 될거야.

쉽게 말해 이식성이 낮다는 것은 기존 CPU에서 프로그래밍한것을 다른 CPU로 옮기면 그 CPU에서 작동을 안한다는 거지.

그래서 컴퓨터를 바꾸면 기존의 사용하던 프로그램도 새로 작성해야 하는 불편함이 있었다고해.

이러한 불편함을 해결하기 위해 위에 켄 톰슨과 데니스 리치는 어셈블리 언어의 장점을 살리고 단점을 극복한,

그러니까 저급언어의 특성을 살리면서도 하드웨어의 이식성이 좋은 언어를 개발하였는데 그렇게 탄생한것이 C언어야.

 

C언어가 개발되고 나서 UNIX의 프로그램의 90%이상이 C언어로 변경되고 C언의 인기가 하늘높은줄 모르듯이 치솟고 오늘날 까지 사랑받게 되었다고 해.

 

참고로 위에서 언급된 저급언어와 고급언어는 컴퓨터가 이해하기 쉬운지 어려운지를 기준으로 나누고 있어.

컴퓨터가 이해하기 쉬운언어는 저급언어,

사람이 이해하기 쉬운언어는 고급언어. 쉽지?
그러니까 질이 낮아서 저급언어라는것은 아니야.

 

그럼 우리가 왜 C언어를 배워야 하는지에 대해 알아보자.

 

 

2. C언어의 장점.



위에서 언급한 프로그래밍 언어의 역사를 보면 수많은 언어가 태어나고, 또 소멸했다는 것을 알 수 있지.

하지만 수많은 언어가 죽어버림에도 불구하고 여태까지 살아남은 C언어. 무엇이 C언어를 이렇게 오랫동안 사랑받게 만들었을까?

 

1. C언어는 절차지향성 특징을 지닌다. 때문에 익숙해지는데 오랜 시간이 걸리지 않는다.

   내가 보고 있는 책의 본문을 그대로 배껴왔어

절차지향성이라는 것은 정해진 순서의 실행흐름을 중시한다는 의미.

 

쉽게말해 일을하는데 순서를 정해놓고 한다고 보면 될거야.

 

솔직히 말해 나는 아직도 이게 정확히 무슨 소리인지 모르겠지만,

 대충 밑에 해설을 보면 사람이 일을 처리하는 과정과 C언어로서 일을 처리하는 과정이

사람과 비슷해서 사람이 배우기 쉬운 언어 라고만 알아두면 될거 같아.
그리고 이것으로 C언어는 저급언어가 아닌 고급언어라는 것을 알 수 있지.

 

2. C언어로 작성된 프로그램은 이식성이 좋다.

  앞에서 언급했듯이 기존에 존재했던 이식성이 낮은 언어들의 장점만 건져내고 단점을 극복해서 만든것이 C언어야. 이것에 대한 설명은 더 안해도 되겠지?

 

3. C언어로 구현된 프로그램은 좋은 성능을 보인다.

 이 장점은, C언어를 사용해서 프로그램을 만드는 절차에 따라 정해지는 상대적인 장점으로 봐야할거야.

 

앞서 C언어가 절차지향성이라고 말을 했듯이 프로그램이 일을 처리하는 과정을 어떻게

절묘하게 배치하느냐에 따라 프로그램의 성능이 좌우된다고 보면되.(이것은 내생각임)

 

4. C언어는 이전에 속해있던 다른 프로그래밍언어보다 더 많은 연산자를 이용할 수 있다.

 예전에 있던 저급언어들은 여러가지 연산자를 쓸 수 없었다고 해.

예전 언어보다 나중에 나온언어니까 당연히 예전에 언어들은 사용하지 못했던 연산자들도 쓸 수 있겠지.

물론 C언어 보다도 나중에 생긴 프로그래밍언어는 있는 모양이지만, 이쪽에 관한 지식은 완전 0이기 때문에 함부로 언급은 못하겠다.

(흔히 알고 있는 JAVA도 프로그래밍언어라고 하네)

 

일단 C언의 장점은 이쯤만 알아두자.

 

C언라고 장점만 있고 단점이 없는것은 아니야.

 

가장 대표적인 단점은

저급언어의 특성을 가지고 와서 조금이라도 입력을 잘못하거나 실수를 하면 프로그램이 실행이 안될 수 도 있다는 거지.

 

지금 이글을 다 쓴 시간이 9시 50분이네.

30분동안 대충 책에 있는 본문과 인터넷에 검색한 자료들을 내 머릿속에서 짜집기해서 알아봣는데,

이글을 다쓰고 바로 2편인 기초프로그램 작성을 쓸 예정이야.

물론 개드립 안에는 나보다도 훨씬 C언어를 잘 다루는 사람이 있을거야.

그 게이의 입장에서는 내 글이 어떻게 보일지는 모르겠지만

내가 잘못알고 있는 정보는 따끔하게 지적해주길 바란다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16개의 댓글

2013.09.12
네이티브언어 기초중의 기초 이건 전자공학을 하든 컴퓨터공학을 하든 필수지 ㅇㅇ

게이들이 일일이 VS받을순 없으니 코드블럭같은 오픈소스 GNU기반 컴파일러 써서 해주면 좋을듯

난 개인적으로 code block 추천하는바임
0
@덜티한세상
문과에서 어떠한 사유로 컴퓨터/IT 공학과로 대학 진학하게 되어서 발등에 불똥떨어지듯이 배우기 시작한 거라서
다른 언어는 아직 손댈 엄두도 못내고 있어서...

기회가 되면 C언어 다 배우고 다른 언어들도 차차 배워볼 생각임
0
2013.09.13
@공대생이된문과생
굿굿 !!C++ 자바 추천함

네이티브는 2개정도 아는게 ㄱㅊ은거 같더라고
0
2013.09.12
언어 자체가 어려운게 아니다..

논리적 사고 방식을 통한 구조화가 어려운거지..
0
@ERO++
확실히 책 뒷장에 보면 마법수식같은 어려운 함수도 여러게 있더라.
하지만 조금씩 공부해보면 다 알게 되겠지.
0
2013.09.12
난 C, C++, JAVA와 같은 프로그래밍언어를
정말 중국어, 영어, 일본어 정말 언어라고 생각해.

그리고 정말 언어보다 쉽지..

문제는 그 언어로 문학을 써나가는 행위가 어려운거야.
0
2ID
2013.09.12
C를 시스템 독립적인 어셈블리어라고도 하던데
여하튼 배워놓으면 두고두고 쓸만한 언어라고 생각한다
0
2013.09.12
진짜 C언어만 썼나 보네 자바나 파이썬 같은 후기 프로그래밍 언어 잘 모르는 걸 보면... 잠깐 토막상식으로 파이썬은 진짜 고급 언어지. 진짜 C하다가 이거 하면 롤 랭겜에서 트롤 만나서 시발 힘들게 게임하다 AI 초급 돌리는 기분이랄까
0
@한숨만쉰다
이틀전에 새로 시작한거라서.
본문에서도 말했듯이 그냥 내가 공부한것을 개드리퍼들하고 같이 복습한다는 생각으로 글 쓰고 있어서
전문성은 많이 떨어질거임.
또 내가 쓰고 있는 글 자체가 다른글보다는 C언어 위주로 써갈 예정이라서.
0
2013.09.13
@한숨만쉰다
요즘 파이썬 누가쓰니.... 시대에 뒤떨어지게말야
0
2013.09.13
@프로그래머
... 뭘 좀 알고 말하는지? 파이썬 써 보고서는 하는 말인지 궁금하다.
요즘 웹 기반 서버 사이드는 왠만하면 파이썬을 선호한다.
왜냐? 라이브러리가 존나 탄탄하거든.
Numpy, Scipy 등 하이레벨이지만 하이레벨스럽지 않게 복잡 계산을 존나 빨리 해주는
라이브러리들이 있다.

공부좀 더 하고, 좀 더 읽고 와라
0
2013.09.12
훌륭하다 공부하다 모르는거 있으면 질문해라
0
ㅊㅊ
0
awfw
0
2013.09.13
컴퓨터 과학과 가는데 C언어는 하나도 몰라서 고민했는데, 이거 읽으면 되겠네 ㅊㅊ
0
멋잇따~ c언어 학교서 배웟는데 ㅋㅋ 조별과제 혼자함...ㅠㅠ 다행이 a나옴
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
563 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 12 2024.04.14
562 [과학] 번역)새들은 왜 알을 많이 낳는가? - 후투티의 형제살해 습성... 7 리보솜 3 2024.03.23
561 [과학] 학계와 AI, 그리고 Bitter Lesson (쓰라린 교훈) 26 elomn 35 2024.02.17
560 [과학] 지구의 속삭임, 골든 레코드의 우주 9 Archaea 10 2024.02.16
559 [과학] 잔혹한 과학실험 이야기 <1> 절망의 구덩이 19 개드립하면안됨 37 2024.02.15
558 [과학] 스트레스를 받으면 술이 땡기는 이유 12 동식 16 2024.02.10
557 [과학] 지능은 모계유전이 아니다. 40 울릉특별자치도 35 2024.01.26
556 [과학] 진화를 생각할 때 고려할 것들 23 날씨가나쁘잖아 12 2024.01.17
555 [과학] 학문적(과학적) 접근과 유사 진화심리"학" 26 날씨가나쁘잖아 19 2024.01.15
554 [과학] 호모 사피엔스의 야릇한 은폐된 배란에 대한 남녀 학자의 다... 14 개드립하면안됨 15 2023.12.29
553 [과학] 김영하의 작별인사를 읽고 느낀 점 (스포있음) 21 장문주의 2 2023.11.28
552 [과학] 제4회 포스텍 SF 어워드 공모전 ( SF 단편소설 / SF 미니픽션 ) 2 따스땅 1 2023.11.25
551 [과학] 펌) CRISPR 유전자 가위 치료제 "최초" 승인 12 리보솜 7 2023.11.25
550 [과학] 러시아는 기술산업을 어떻게 파괴시켰는가(펌) 9 세기노비는역사비... 15 2023.11.18
549 [과학] 고양이에 의한 섬생태계 교란과 생물 종의 절멸 (펌) 2 힘들힘들고 6 2023.11.16
548 [과학] 번역) 알츠하이머병 유전자는 어떻게 살아남았는가? 12 리보솜 10 2023.11.15
547 [과학] 『우영우』의 자폐 스펙트럼 장애 개념이 왜곡인 이유 (펌) 47 힘들힘들고 10 2023.11.12
546 [과학] 흑수저 문과충 출신 구글 취직하는 파이썬 특강 -1 14 지방흡입기 11 2023.09.27
545 [과학] 국가별 당뇨 유병율 이거 뭐가 바뀐건지 아는사람? 8 LAMBDA 1 2023.09.27
544 [과학] 물샤워 ㅇㅈㄹ 하는 놈들 봐라 171 철동이 48 2023.09.23