PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2010/01/19 11:35:58
Name ski~
Subject 프로그래밍 이라는 것에 대해 질문드립니다.
프로그래밍이라는 것에 대해 질문드립니다.

저는 다른것을 전공하는 학생인데 갑자기 여러가지 궁금증이 일어서 이렇게 질문드리게 되었습니다.

그냥 양민이다 보니 전문용어를 활용하면 잘 못알아들을 것 같습니다. C언어 이런것 말로만 들었지 정확히 무엇을 위해 어떻게 활용되는 건지도 모릅니다.

조금 자세하게 알고 싶습니다.

0.C언어 라는것이 무엇인가요? 그리고 c언어와 동반되어 활용되는 여러가지 것들을 알고싶습니다.

1. 프로그램을 배우신 분들은 간단하게 자신이 만들고 싶은 프로그램을 만들어서 활용한다고 들었는데요. 그렇다면 그 프로그램을 만드는 기반은 무엇인가요? 그것이 C언어 인가요?

2. 프로그래밍을 해서 프로그램을 뽑아내는 과정, 순서, 전반적인 개념들을 그냥 간단하고 포괄적으로 알고 싶습니다. 어떤 컴퓨터를 활용해야 하는지, 어떤것을 활용해서 만드는지 등등등.

3. 사실 이 모든게 아이폰 때문입니다. 아이폰때문에 모바일 프로그램밍이라는 것을 알고 싶게 되었구요. 어떤 아이디와 창의성, 컨텐츠 같은것을 공유해서 프로그래밍을 할줄 아는 분들과 컨택하고 싶었는데, 조금 더 생각해보니 스스로 공부해서 조금씩 배우는게 재밌겠다 생각되서 이렇게 글을 올리게 되었습니다. 어디서 부터 어떻게 공부를 시작해야 하는지 조언을 듣고 싶습니다. 아에 바닥부터요ㅠ 맥컴퓨터 같은 경우는 제가 영화쪽에서 일을 좀 하고 있어서 final cut을 쓰기위해 활용한 적이 있습니다. 지금도 가끔 쓰구요. 급하게 빠르게 뭔가를 할 생각은 없습니다. 지금 하고 있는 일들과 공부도 있어서.. 그냥 천천히 즐기면서 장기적으로 취미같이 배우고 싶습니다. 어디서 부터 어떻게 시작해야 하는지 조언 부탁드립니다.

ps. 컴퓨터 프로그래밍과 모바일 프로그래밍만드는 방식은 동일한 것인가요? 어떻게 모바일에 적용을 시키는건지, 어떻게 연결이 되는 건지도 궁금하네요.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
MoreThanAir
10/01/19 11:48
수정 아이콘
프로그래밍 언어라는 것은 컴퓨터와 인간이 소통할 수 있는 일종의 '언어'입니다.

컴퓨터- 바이너리 - 기계어(어셈블리) - 고급프로그래밍언어 - 사람

고급 프로그래밍언어는 사람이 이해하기 쉽도록 만들어진 언어입니다. 여기에 C언어도 포함됩니다.

한글, 영어에 문법이 있듯이 프로그래밍 언어에도 문법이 있습니다. 이 문법에 맞춰서 프로그램을 작성하면 이것을 컴퓨터가 알 수 있는 언어로 변환해줘야 합니다. (컴파일) 이 과정에서 사용하는 프로그래밍 언어에 따라서 다른 컴파일러를 사용하게 됩니다.

프로그램 작성(텍스트파일) - 컴파일 - 기계어 - 실행

이런 식이라고 보면 되겠습니다.

모바일 프로그래밍을 하는데 쓰이는 언어 역시 프로그래밍 언어 중 하나입니다. 개념은 제가 위에서 말씀드린 것과 동일하나
언어의 문법이 다를 것입니다. 하지만 모바일 프로그래밍 언어를 갑자기 배우기는 좀 어려울겁니다.
왜냐하면 기본적인 프로그래밍 언어의 개념(순환, 분기, 변수, 메모리 관리 등등)을 모르고는 문법을 제대로 이해하기가 어렵기 때문입니다.

프로그래밍 지식이 아예 없는 상태라면 바로 모바일 프로그래밍을 하기가 쉽지 않습니다.
기초적인 프로그래밍언어 (C나 베이직) 등등을 공부해서 프로그래밍을 익힌 후에
특화된 모바일 프로그래밍을 하는 것이 낫습니다.

하지만 모바일 프로그래밍은 특화된 분야이므로 기본 프로그래밍 스킬로 풀 수 없는 상황들이 많이 나올 것입니다.
그런 어려움을 헤쳐 나가는 것은 프로그래밍 스킬 뿐 아니라 다년간 경험과 정보를 검색하는 능력 등등이 필요한데
컴퓨터 쪽 경험이 없는 분은 검색 능력이 좋을 수가 없습니다. 다시 말해서 구글링을 못한다는 것이 아니라
무엇을 찾아야 할지 감 자체가 없는 것이죠.

대충 질문에는 답변을 드린 것 같은데, 제 개인적인 의견으로는 프로그램 경험이 아예 없는 사람이 모바일 프로그래밍을 하는 것은
많이 어려울 것 같다는 생각입니다.
Cazellnu
10/01/19 11:50
수정 아이콘
3. 모바일 프로그래밍이란거는 말그대로 모바일 디바이스에 들어가는 프로그램을 개발하는 것을 말하겠죠.
일단은 먼저 아이폰에서 제공하는 개발환경이 어떻게 되는지 모르지만 거기에서 개발환경을 제공하고 있을겁니다. 그것들 부터 익숙해지도록 하는게 먼저겠지요.
관련서적이 벌써부터 나와있을지는 의문이지만 "얼마만큼만 하면 누구처럼 한다", "1주일 마스터" 이런 책들이 있으면 보는것도 괜찮을거 같습니다.
사실 저는 아이폰과 관련해서 별로 관심이 없어서 디테일한 내용까지는 모르지만 그런건 지엽적일테고 크게 따지면 아이폰에서 제공하는 툴, 개발환경에 익숙해지고 숙달되면 가능할것으로 보입니다.

나머지 0~2번은 교과서적인 질문이므로 많은분들이 대답해 주실거라고 믿습...
하루빨리
10/01/19 11:56
수정 아이콘
0. c언어는 프로그래밍 언어입니다... 하면 몰매맞겠죠... 근데 다른 설명이 필요 없을 것 같아요... 이름이 c언어인 이유는 a언어 b언어 다음에 나온 프로그래밍 언어기 때문입니다.(정확하게 말하자면 표준 규약이겠죠...) 프로그래밍 언어란 말 그대로 언어란 개념입니다. 컴퓨터에게 명령하기 위한 언어

1. 기반은 다양합니다 c언어가 될 수 도 있고, basic이 될 수도 있고, html이나 php, asp 등등이 될 수 도 있습니다. c언어 c언어 하는 것은 대부분의 프로그래밍 언어가 c언어랑 비슷하기 때문입니다.(즉 c언어를 알면 다른 언어들을 배우기 쉽다는 것이지요.)

2-3. 아이폰 관련 어플리케이션을 만드는 방법은 두가지입니다. 첫번째로 웹어플리케이션을 만드는 방법 (웹 기반 프로그램을 만드는 방법으로 어느 스마트폰에나 적용 가능하다는 장점이 있습니다. ex)m.naver.com )
두번째로 애플에서 제공하는 SDK를 이용하여 만드는 어플리케이션입니다. 연간 100달러정도의 비용을 애플에 지불하여 개발자 그룹에 가입하시면 SDK툴을 얻으실 수 있습니다. 이걸 이용해 어플리케이션을 만드시면 됩니다. (물론 cocoa라는 c기반 언어를 알아야 합니다. 또, 개발환경이 맥os이므로 맥킨토시도 한대 장만하셔야 할 겁니다.)

간단하게 적어서 잘못된 내용이 있을 수 있습니다.
彌親男
10/01/19 12:55
수정 아이콘
첫 리플이 정말 대단한 도움이 되는군요. 사실 컴퓨터 관련 전공을 하는 사람으로서도 모바일 관련 어플리케이션을 만드는 일은 대단히 도전적이고 많은 공부를 요구하는 일이라 쉽게 도전하기 어려운데 비전공자로써 도전하시는 모습에 박수를 쳐드리고 싶습니다. 자, 이제 저희와 함께 불구덩이에 빠져드시면 됩니다.

저는 모바일 어플리케이션을 배우는 공부 순서를 간단하게 가르쳐 드리려고 합니다.

1. 기본적인 컴퓨터 프로그래밍 언어(C나 Java가 이 경우에는 대표적인 언어겠군요.)를 책 2~3개를 마스터할 수 있는 수준으로 습득하시면 됩니다. 이는 미적분을 배우기 위해 덧셈, 뺄셈, 곱셈, 나눗셈을 비롯하여 극한까지 배우는 것과 비슷합니다.

2. 컴퓨터는 과학과목입니다. 우리가 물리나 화학문제들을 풀기 위하여 물리나 화학이론을 공부하듯이, 프로그래밍 스킬을 얻기 위해서는 기초 컴퓨터 과학 이론을 습득해야 합니다. (자료구조, 알고리즘, 운영체제, 네트워크 관련 프로그램을 짜고 싶은 경우는 네트워크나 무선통신 같은 과목들이 있을텐데 이러한 과목들에 대한 이론 지식을 배워야 합니다.) 여기에 아이폰 어플리케이션은 그래픽이 필수이기 때문에 CG에 대한 기초지식을 공부하시면 큰 도움이 될겁니다.

여기까지 끝나셨으면 이제 기본적인 프로그램을 내 머릿속으로 구현이 가능한 수준에 오르셨을 겁니다. (여기까지가 컴퓨터 전공하는 학생들이 학교에서 배우는 지식까지기도 하구요.)

2. 이제 애플에서 제공하는 SDK(쉽게 말해서 새로운 프로그래밍 언어입니다.)를 이용하여 어플리케이션을 제작하시면 됩니다. 이러한 SDK를 이용한 프로그래밍은 아무래도 C언어나 자바 언어가 사용할 수 있는 모든 기능을 사용할 수 없기 때문에 제약이 많을 수 밖에 없는데요.(아이폰은 컴퓨터가 아니니까요.) 이러한 제약적인 상황에서 자신의 머릿속에 있는 내용을 적당한 타협수준에서 만드시려면 많은 연습이 필요하실 것으로 보입니다.

가장 프로그래밍을 하는데 흥미를 느끼는 방법은 게임을 만드는 겁니다. C로 텍스트기반 게임을 만들어보고, Java로 그래픽기반 게임도 만들어보고, 그거를 다시 SDK버전으로 바꿔보면 가장 흥미있게 프로그래밍이 가능할겁니다.
10/01/19 15:56
수정 아이콘
프로그래밍은 취미로 하기에는 너무 헤비합니다...
10/01/19 16:54
수정 아이콘
ski~님//
우선 아이폰 SDK를 구해(하루빨리님의 리플처럼 최근엔 유료화가 되었다고 들었습니다만 어딘가 크랙이...-_-?)
'Hello World'를 화면에 출력해보세요.
우선 아이폰 SDK에서 사용하는 언어의 문법을 먼저 공부하시고요
이후 알고리즘, 컴퓨터 구조 등등은 차차 공부하시면 될껍니다.

아이폰 SDK 역시 Know How보다는 Know Where이 중요할 것 같은데요,
그 이유가 구현에 필요한 것들은 대부분 아이폰 SDK에서 제공해주기 때문에
내가 필요한 기능을 어떤 것(함수)을 호출해 해결하는지가 중요해졌기 때문입니다.
물론 필수적인 문법 이런 것은 알야하겠죠~~

C, Java, C++(MFC, C#), Script 등등은 문법은 비슷할지 몰라도 구현되는 개념이 다르기 때문에
그냥 아이폰 SDK에 사용하는 언어를 설명하는 책으로 공부 시작하시면 될 것 같습니다.
10/01/19 18:52
수정 아이콘
프로그래밍이란 시나리오와 같습니다.
- 폴더를 열면 화면을 표시하고 라이트를 켠다
- 숫자를 누르면 화면에 그 숫자를 표시한다.
- send 버튼을 누르면 화면에 표시된 숫자로 통화를 시도 한다

어떤 조건이나 사용자의 조작이 들어오면 시나리오대로 동작하게 만드는 것입니다.
그런데 그 시나리오는 여러 조건에 따라 다양하고 복잡하게 반응할 수 있습니다.
예를 들면, 문자를 쓰는 도중 폴더를 닫거나, 전화가 와서 전화를 받거나
매우 다양한 환경 변화나 사용자의 동작에 대하여 모두 일일이 명령을 써 놓으면 그게 프로그래밍입니다.

그게 영어로 쓰여져 있으면 미국인이 알아볼 수 있고, 한글로 쓰여 있으면 한국인이 알아볼 수 있고,
C 나 기계어로 되어 있으면 컴퓨터가 알아 먹을 수 있습니다. (엄밀하게 따지면 컴파일러라는 개념도 알아야 합니다만 ...)

어쨌든 아이폰 어플리케이션을 하고 싶다고 하니, 기본적으로는 objective C 라는 언어를 배워야 합니다.
기본적으로 애플 하드웨어가 필요하고 OSX 라는 OS 를 설치해야 하며, Xcode 라는 개발툴을 설치하고, 사용법을 배워야 합니다.
이런 건 기본 환경이고 역시 중요한 것은 프로그래밍 언어인 objective C 입니다.
조금 더 공부해 보시면 cocoa 라는 라이브러리를 알게 될텐데 ... 이런 것도 익혀야 합니다.

만약 프로그래밍을 전혀 해 보지 않은 분이라면,
꽤나 많은 시간을 투자해야 할 겁니다.
어느 정도인 지는 ... 직접 해 보시면 알게 될 겁니다....만 제가 보기엔 이쪽 전공자가 아니면 거의 불가능이 아닐까 ... 생각됩니다.
(희망적이지 않은 말씀이라 죄송합니다 -_-)
10/01/19 19:05
수정 아이콘
추가로,
일반 컴퓨터 프로그래밍과 모바일 프로그래밍은 좀 다르고, 경우에 따라서는 매우 크게 다릅니다만,
적어도 아이폰 개발에 있어서는 별 차이가 없다고 말씀드리고 싶습니다.
이게 아이폰 프로그램 개발에 있어서 매우 큰 장점이 됩니다.

아이폰은 일반 여타 애플 제품과 매우 높은 호환성을 자랑합니다. (보통은 플랫폼이 '같다' 라고 표현하죠)
보통 맥에서 돌아가는 프로그램을 만드는 것과 거의 유사하게 아이폰 프로그램을 만들면 되고,
언어 사용이나 개발 툴 사용, 개발 컴파일러가 모두 동일합니다.
이건 애플에서 정말 잘 한 일이죠.
10/01/20 12:59
수정 아이콘
MoreThanAir님// 바보님// 홍군님// 임금님// 彌親男님// 하루빨리님// Cazellnu님//

모두 답변 감사합니다^^
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
72462 이번에 바뀐 학자금대출 관련으로 신경이 이만저만 쓰이는 게 아니네요; Chico2117 10/01/19 2117
72461 정역학 트러스(Truss)에 대한 간단 질문입니다. [2] 쌈드로3177 10/01/19 3177
72460 EBS 어학프로그램 [2] 루비띠아모2119 10/01/19 2119
72459 아마고수 vs 이영호 [57] 천마신군2999 10/01/19 2999
72458 프로그래밍 이라는 것에 대해 질문드립니다. [9] ski~1688 10/01/19 1688
72457 자동차를 구입하면 해야할일이 무엇이 있을까요? [17] 비타민C4014 10/01/19 4014
72456 동방신기 노래 좀 추천해주세요... [13] 정성남자2318 10/01/19 2318
72455 이거 진짜인가요?(황신 관련) [2] 다음세기2689 10/01/19 2689
72453 영어 문법 질문입니다. [4] 국토순례자1623 10/01/19 1623
72452 텝스에 대해서 다시 한번 질문드려요~ ^^;; OnlyJustForYou2095 10/01/19 2095
72451 휴대폰 질문입니다. [6] 바티스투타2373 10/01/19 2373
72450 ppt에 카라사진 이미지만 올리려합니다.(이미지 뒷배경 없어야되요.) [7] yellinoe2440 10/01/19 2440
72448 영어 문법질문입니다. [3] 탱탱구1641 10/01/19 1641
72447 html 질문입니다. [3] 부끄런상디1807 10/01/19 1807
72446 차량용 블랙박스 관련 질문입니다. [2] 평행선1581 10/01/19 1581
72445 네이트온 내부 아이콘이 바보됌.. [2] 포프의대모험2716 10/01/19 2716
72444 pes2009 고수님들 알려주세요 [1] 헬로까꿍베이2200 10/01/19 2200
72443 손이 느린데 스타 잘하시는 분 있나요? [19] 이상해씨3711 10/01/19 3711
72442 면허.. 법이 개정되기 전에 따는게 좋을까요? [4] Robbie2051 10/01/19 2051
72441 편입시험을 봤습니다. [1] 윙스1972 10/01/19 1972
72439 남자분들이 부탁을 잘 거절 못하는 이유는 뭘까요? [29] 로즈마리5890 10/01/19 5890
72438 학사 편입에 대한 질문입니다. [5] 배럭오바마2101 10/01/19 2101
72437 레이저 프린터 토너 어디서 구입하시나요? [1] SooNe2425 10/01/19 2425
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로