[App 개발] Carbon 배우는게 좋을까요? Cocoa 배우는게 좋을까요?
본문
매킨토시 API 도 배워둬야 할 필요가 있을거 같은데
두개중 어느걸 배워야 이득이 될지..ㅜㅜ
Carbon 은 오래된거라 하고
Cocoa 는 오브젝C 가 먼지 몰라서 그러고.....
질문도 추가요
1. 윈도우에선 Socket API 라는 네트워크 API 가 있다고 하는데 매킨토시는???
2. 어셈블리어는 어떻게??[머 똑같겠지만..... 어떤 사람이 아키텍처 머 때문에 나중에 배우라고 하던데]
3. 까먹었다 젠장
최신글이 없습니다.
최신글이 없습니다.
댓글목록 8
너무슬픈프린이님의 댓글
아 생각났다.... Carbon 이나 Cocoa 어디서 배워야 합니까???-ㅁ-
美청년.영환군님의 댓글
C를 추천합니다.
hongjuny님의 댓글
카본이 오래되었다 해서 쓸모없는 것은 아닙니다. Win32 도 대략 10년이 넘었지만 쓸모없다 하지는 않지 않습니까? ^^ Cocoa 와 Carbon 을 두 개로 나누어서 생각하는 것은 사실 옳지 못한 분류법이라고 생각합니다. 물론, 기본 입출력과 UI 를 Carbon 으로 뼈대를 만들 것인지 Cocoa 로 만들것인지를 결정하는 것은 큰 일이지요. 전체 프로그램의 구성에 영향을 미치게 될 테니까요. 하지만, 어느 한 줄기를 선택하고 나면 그 이후에는 Carbon 이고 Cocoa 고 별반 차이가 없습니다. Carbon 에서도 Cocoa 루틴을 부를 수 있고, Cocoa 에서도 Carbon 함수들을 부를 수 있고, Obj-C 로 루틴을 구성해도 되고, C/C++ 로 루틴을 구성할 수도 있습니다.
다만 저는 개인적으로 프로그래밍을 배우는 사람들에게는 먼저 C 를 잘 하라고 말을 합니다. C 의 데이터 구조도 잘 모르면서 Obj-C 를 배운다는 것은 어불성설이니까요. 하지만, 너무 C 의 procedure 에 젖으면 Obj-C 를 배울 때 방해가 될 수도 있으니, 일단 C 로 언어의 기초를 잡고, 그 다음 C++ 이나 Obj-C 를 하는 것이 좋겠다는 생각입니다. Java 도 무척 좋습니다. 역시나 C 는 기본!
배우는 것은 책 보셔야죠. ^^ 하지만 대략 모든 Carbon/Cocoa 책들이 기본적으로 C 에 대한 기초 지식을 요구합니다. 구조체에 대한 이해가 없이 Carbon 프로그램을 짠다는 것은 있을 수 없는 일입니다.
1. 윈도우에서 제공하는 WinSock (32 비트 버젼으로는 wsock32) 은 원래 유닉스의 socket 함수를 윈도우로 포팅한 것입니다. 유닉스 함수와 동일한 함수를 제공하며, 더불어서 윈도우의 메세지 구조에 특화된 윈도우 전용 함수들로 구성되어 있습니다. Mac OS X 는 기본적으로 socket 함수들을 사용할 수 있습니다.
2. 요즘은 어셈블리 배우는 사람이 거의 없지만 제가 컴퓨터를 처음 시작하던 80년대에는 컴퓨터 공부 좀 했다 하는 인간들은 모두 어셈블리를 했습니다. 그 당시 8 비트 컴퓨터에서의 어셈블리는 사실 그리 복잡하지 않았고, 베이직 외에 별다른 고급 언어 컴파일러가 없기 때문이기도 했습니다.
어셈블리에 대한 지식은 지금도 상당한 장점이 있습니다. 프로세서의 구조, 동작 원리, 올바른 프로그래밍 방법 등에 대해서 더 깊이, 더 빨리 이해할 수 있게 되지요. 하지만, 이제 어셈블리를 가지고 처음부터 끝까지 프로그램을 짜는 사람은 거의 없습니다. instruction 의 종류와 용법이 예전과는 달리 심하게 복잡해졌으며, 새 프로세서가 출현할 때마다 새로 추가되는 instruction 과 register 를 외우는 것도 힘들고, 특정 프로세서군에 특화된 프로그램이 되어버릴 수도 있고, 무엇보다도 생산성이 떨어진다는 점이 되겠지요.
생산성? 생산성이 무엇인고 하니, 분명 C 컴파일러가 암만 머리를 굴려서 끝내주게 최적화된 코드를 만들어낸다 하더라도, 프로세서가 낼 수 있는 실제 효율의 70% 정도밖에는 안됩니다. 하지만, 인간이 잘 짜면 무조건 100% 인가? 그렇지는 않습니다. 말씀드린 대로, 프로세서가 워낙 복잡해진 관계로, 자칫 잘못하면 C 컴파일러보다도 못한 프로그램이 될 수가 있고 -_-; 그리고 시간이 심하게 많이 걸립니다.
하지만, 정말 프로세서 속도가 필요한 부분, 그리고 계산 과정이 정형화되어 있는 라이브러리 등은 이미 애플에서도 최적화된 라이브러리를 제공하고 있지요. Accelerate.framework 이 바로 그것입니다. ^^
美청년.영환군님의 댓글
저의 사견이겠지만..
프린이님은 벌써부터 무엇이 더욱 효율적이고 장래성이 있다 없다 부터 생각하시는 것 같군요. 이득보다는 먼저 자신의 실력 향상에 주를 두고 공부하심이.
훌륭한 프로그래머는 자신이 가진 환경에서 최적화된 코드를 구현하고 그것을 상대방에서 정확하게 전달시킬 수 있는 능력을 갖춘 프로그래머입니다.
이것은 가장 낮은 수준의 기초 지식이 구비되지 않고 단순히 라이브러리의 기능을 가져와 조합하는 일종의 feat. developer 와는 다른 것입니다.
C를 기본으로 컴퓨터 구조 및 소프트웨어 공학등 기초 학문을 공부하시고 이후 자신이 직접 소규모 프로젝트 (1인이 진행할 수 있는 프로젝트도 좋습니다.)를 하시면서 어떻게 코딩하면 더욱 효율적인가.. 그리고 책에는 없는 자기만의 소스 최적화등을 공부하시는 것이 좋습니다. 책은 아무래도 가장 기본적인 스킬만을 가르쳐 주기 때문에 실무에서 사용되는 코딩은 아무래도 많지 않죠. 하지만 이것 또한 기본적인 지식이 구비되지 않으면 응용또한 불가능하기 때문에 기본이 중요하다는 말씀밖에...
예를 들어 사칙 연산 및 기초 수학 원리를 모르는 사람에게 인수 분해 , 3차 방정식등의 응용 문제을 풀어보라는 것과 같습니다.
어셈블리는 전자공학쪽을 공부하시면 배울 기회가 있습니다만..
저의 경우에는 배워놓고 리버스 엔지니어링외엔 써보지 못했군요.
상위 고급어에 비해 까다롭지만 배우는 재미가 있는 언어라고 생각합니다.
일단 hongjuny님의 말 C를 하세요.
java는 C의 포인터라는 것이 없어 조금은 공부하기 수월합니다.
美청년.영환군님의 댓글
그나저나 hongjuny님 이 방은 광고글도 안올라고도..
-0-;;;
넘흐 심심한데요? 3D 케릭터 모델링은 전 좀 무리고..
미연시 게임이나 같이 하나 만들어 보시죠. 맥용으로 +_+
내년 코마케를 기약하며!
아참 제 폴플에 에니 하나 올려놨어영.. 쵸비츠.
공각기동대는 여동생님이 파일 날려먹어서 업을 못했네요. ;;
너무슬픈프린이님의 댓글
저기요... 이미 C 언어는 다 배운 상태인데...ㅜㅜ
美청년.영환군님의 댓글
아. C는 배우셨군요. 뭐 그렇다면 carbon 이나 cocoa를 공부해보짐도 좋을 것 같네요. 그런데 언어뿐만 아니라 소프트웨어 공학이나 자료 구조론 등도 공부하셨는지.. 공부해보면 도움이 됩니다.
<a href=http://www.koders.com/ target=_blank>http://www.koders.com/ </a>
C 뿐만 아니라 Obj-C 의 스레드를 검색할 수 있는 사이트 입니다.
코딩하시면서 궁금한 부분이 있으면 이곳을 이용하면서 하시는 것도 추천.
hongjuny님의 댓글
C 를 다 배우셨다면, C 언어에 대한 응용문제 삼아서 Carbon 을 공부하시는 것도 나쁘지 않겠군요. ^^ 제가 소개했던 글과 예제들도 살펴보시면 도움이 되시지 않을까요? ㅎㅎㅎ