모바일 시스템 질문과 답

꼭 스마트폰을 사용하는 것이 좋은가요?

글쎄요. 그건 사람마다 다르겠지요.
그 질문을 비슷하게 "컴퓨터를 사용하는 것이 좋은가요"로 바꿀 수도 있습니다.
또는 "대학을 다니는 것이 좋은가요"로 바꿀 수도 있습니다.
또는 "인생을 사는 것이 좋은가요"로 바꿀 수도 있습니다.
즉, 질문 자체가 너무 모호해서, 개개인에 따라 다른 답이 나올 수 있을 거 같습니다.

안드로이드는 무엇인가요?

이미 첫 장에서 배웠다시피, 스마트폰 운영체제입니다.

안드로이드를 다른 장비에 올려서 사용할 수 있다고 하셨는 데, 일반 핸드폰 같은 데에도 올릴 수 있나요?

기본적으로 일반 사용자 수준에선 불가능합니다.
피쳐폰(스마트폰이 아닌 일반 핸드폰)에는 이미 REX 운영체제가 사용되고 있습니다.
다만, 진짜 뛰어난 실력을 가지고 있다면, 피쳐폰에 리눅스를 올릴 수 있을 것이고, 안드로이드는 리눅스 기반이므로 피쳐폰에 올릴 수는 있습니다.
그러나, 이런 경우, 통신사에서 제한을 가한 문제로 전화 통화는 안될 것입니다.

본 수업에서는 안드로이드의 앞의 개념적인 부분은 거쳐서 지나가는 것인가요?

본 수업 제목 자체가 "모바일 시스템"이므로, 개론적인 성격이 강한 수업입니다.
본 수업에서는 구글 안드로이드, 윈도우즈 모바일, 삼성 바다 플랫폼, 애플 아이폰, 노키아 심비안의 순서로 시스템들에 대해 강의할 예정이었습니다.
현재 심비안은 대폭 줄이고, 그 시간에 구글 안드로이드, 윈도우즈 모바일, 그리고 PhoneGap과 Objective C를 하는 방향으로 생각하고 있습니다.
아무튼, 수업 시간이 한정되어 있으므로, 대부분의 시스템들을 간단히 소개하는 사례 연구(case study)에 중점을 둘 생각입니다.
개념적인 부분은 2 시간여에 걸쳐 최대한 빨리 진행하고 나머지 시간은 프로그래밍의 예를 보여주는 식으로 진행할 생각이고, 안드로이드의 경우, 이미 그렇게 했습니다.

안드로이드에 대해 많이 배우고 싶은 데, 각각 스마트폰 강의 비율이 어떻게 되는지 궁금합니다.

기본적으로 강의 계획서에 나온대로 구글 안드로이드, 윈도우 모바일, 삼성 바다, 노키아 심비안에 3 주 정도를 할애하여 12 주를 만들고, 나머지 2주는 애플 아이폰에 대한 얘기를 하려고 하였습니다.
그러나, 노키아 심비안이 너무 미약한 플랫폼인 관계로, 윈도우 모바일과 구글 안드로이드 쪽을 더 보충하는 방안을 생각하고 있습니다.
또한 실습이 불가능한 아이폰의 경우, Objective C에 대한 쪽으로 실습을 대신 할 예정입니다.
또한 PhoneGap과 같은 하이브리드 시스템에 대한 소개에도 1 주를 할애할 예정입니다.

1학기에 안드로이드 수업을 안들었는 데, 영향이 큰지 궁금합니다.

이미 중간 고사에서 보았듯이, 큰 영향은 없습니다.
그러나, 과제를 하려면 어느 정도의 안드로이드 프로그래밍에 대한 지식이 요구되리라 봅니다.
이는, 이미 수업 시간에 다 다뤘던 내용이고, 과제를 하면서 더 필요한 부분은, 강의노트를 참고하시던지, 별도로 제게 문의하시기 바랍니다.

아이폰 수업을 할 경우에도, 오브젝티브 C 언어를 자세히 모르는 데, 오브젝티브 C 언어도 처음부터 보고 넘어가는 것인가요?

역시, 오브젝티브 C 언어의 경우, 기초적인 소개만 할 것입니다.
본 수업 제목 자체가 "모바일 시스템"이므로, 개론적인 성격이 강한 수업입니다.
본 수업에서는 구글 안드로이드, 윈도우즈 모바일, 삼성 바다 플랫폼, 애플 아이폰 / Objective C, PhoneGap의 순서로 시스템들에 대해 강의할 예정입니다.
그러나, 수업 시간이 한정되어 있으므로, 대부분의 시스템들을 간단히 소개하는 사례 연구(case study)에 중점을 둘 생각입니다.

안드로이드는 자바 기반인데, 처음 들어가기 전에, 자바를 간단하게 배울 수는 있나요?

이미 다른 수업에서 자바를 배웠거나 배우고 있지 않습니까? 게다가, 자바는 그 내용만 가지고 한 학기가 필요합니다.
말씀하신 "간단한" 자바가 어느 정도인지 모르겠으나, 제시되는 안드로이드 응용 프로그래밍 예제들을 보시면 알겠지만, 겨우 몇 주 앉아서 수업만 들은 그 간단한 자바는 별 도움이 안됩니다.
본 안드로이드 프로그래밍의 예제들은, 일반 대학교의 자바 수업에서 배우는 수준으로 볼 때, 중급 정도의 자바 실력이 가끔 요구됩니다.
본 수업에선 이미 많은 학생들은 자바를 어느 정도 합니다. 그렇다면, 그들의 수업 시간은 어떻게 해야 할까요?

정리하자면, 학생의 심정도 이해합니다만, 학생이 자바를 모른다고, 대부분의 수업을 자바로 바꿀 수도 없을 뿐더러, 본 수업의 안드로이드 프로그래밍은 학생의 생각하는 "몇 주 정도의" 간단한 자바로는 큰 도움이 안됩니다.
안됐지만, 자바 부분은 혼자 독학하시던지, 다른 수업으로 보충하시는 게 좋을 것입니다.
그리고 과제는 최대한 기본적인 자바 프로그래밍만 가지고 풀 수 있도록 구성할 것입니다.
혹시 하시면서 궁금한 점이 있으면 저에게 문의하시기 바랍니다.
프로젝트 부분은 본인에게 더 용이한 다른 플랫폼을 사용하시는 게 좋을 거 같습니다.

과제가 어떤 형태로 나오는지 궁금합니다.

고민을 꽤 많이 한 부분입니다.
프로그래밍 위주로 할 수도 없지만, 기본적으로 프로그래밍을 배제할 수는 없었습니다.
반면, 특정 개념에 대한 조사 위주로 내면, 단순히 인터넷에서 카피/페이스트해서 제출하는 경우도 많습니다.
프로그래밍 숙제를 내면서, 설계에 대한 아이디어를 보는 수준으로 첫번째 과제를 구성해 봤습니다.
두번째 과제를 어떻게 낼지는 좀 더 고민해 보겠습니다.

C#, Java와 같은 고급 언어와 C,C++에 기초한 프로그래밍 중 앞으로 더 비중있게 다루어보아야 할 것은 무엇이라 생각하십니까?

어느 분야에 적용하느냐에 따라 쓰임이 다른 언어들입니다. C#, Java와 같은 언어들은 C,C++에 비해 상대적으로 사용하기 쉽고 프로젝트 개발 기간이 짧은 반면, 만들어진 코드들은 가상 머신에서 돌아가기 때문에 속도나 반응성이 떨어집니다.
즉, 예를 들면, 자동차 경주 게임을 만들려고 한다면, 주로 C, C++ 언어로 개발해야 하겠지만, 업체에서 짧은 시간 내에 웹 기반 인사 관리 앱을 만들기를 원한다면 C#이나 Java를 사용해야 할 것입니다.
따라서, 본인이 어떤 분야를 고민하는가에 따라 비중이 달라질 것입니다.

참고로, 안드로이드의 경우, 기본적으로 자바 기반이므로, 자바를 공부해야 할 것입니다.
그러나 빠른 속도가 요구되거나 하드웨어를 만지는 부분이 필요하면 NDK 방식으로 C 언어와 연결이 됩니다.
윈도우즈 모바일의 경우에도 기본적으로 C# 기반으로 프로그램이 개발됩니다.
그러나, 역시 빠른 속도가 요구되거나 하드웨어를 만지는 부분이 필요하면 P/Invoke 방식으로 C 언어와 연결이 됩니다.

앞으로 윈도우 모바일이나 안드로이드나 아이폰 중 어떤 모바일 기기들이 강세일 것으로 예상되는지요?

그건 아무도 모릅니다. 다만 개인적인 생각을 말해보겠습니다.

우선 윈도우 모바일은 현재로선 갈 길이 먼 상황인 거 같습니다.
게다가 빌 게이츠가 떠난 이후 마이크로소프트를 이끌고 있는 스티브 발머는 회사를 공돌이들보다는 MBA들의 천국으로 만들고 있는 거 같습니다.
이런 상황에선, 발머가 MBA들을 다 짜르고 물러나지 않는 이상, 혁신적인 제품은 커녕, 과거의 마이크로소프트에서 보인 것과 같은, 적어도 시장의 최고의 타사 제품에 필적할만한 제품조차도 나오기 어렵다고 봅니다.

안드로이드는 많은 기기들이 폭발적으로 나오고 있고, 여러 스마트폰에 이식되었고, 앞으로도 그 범위를 넓혀갈 것입니다.
이를 보면, 안드로이드는 충분히 가능성이 있습니다만, 문제는 안드로이드 마켓이 활성화되기 어렵다는 점입니다.
현재 안드로이드 마켓은 대부분의 올라온 유료 프로그램들이 쉽게 복제된다는 문제가 있습니다.
게다가 안드로이드는, 그 철학 자체의 차이로 인해, 아이폰과는 달리 범용적인 기기들 상에서 돌아갑니다.
반면 아이폰은 단일 모델이므로, 속도나 반응성에서 안드로이드가 아이폰의 수준을 따라가는 데에는 한계가 있습니다.
게임을 만들어도 아이폰 프로그래머는 기계의 성능을 100% 가까이 끌어낼 수 있으나, 안드로이드의 경우는 어떤 기계에서 돌아갈지 알 수 없다는 문제가 있습니다.
이는 앞으로 두고 봐야겠지만, 해묵은 "성당과 시장" 논쟁의 재현으로 볼 수도 있을 것입니다.

아이폰의 경우, 현재 마켓 쉐어는 그렇지 않지만, 사실 상의 선두라고 생각합니다.
현재와 같은 추세라면 앞으로도, 아이폰이 계속 그 쉐어를 넓혀갈 것이라고 봅니다.
다만 아이폰의 경우, 누구의 말처럼, 애플의 적은 마이크로소프트나 구글이 아니라 췌장암이라는 것입니다.
그런데, 어떻게 보면, 전세계 IT의 적도 췌장암이 아닐까 하는 생각이 듭니다.

애플(아이폰)과 안드로이드, 윈.모 시장이 향후 어떻게 변화할지 어떤 생각을 가지셨는지 궁금합니다.

바로 위의 비슷한 질문에 답을 한 거 같습니다.

앞으로의 시장 판도는 어떻게 될 거 같습니까? 안드로이드의 무분별한 개방성, 새로운 윈도7 모바일등...

바로 위의 비슷한 질문에 답을 한 거 같습니다.

현재 3학년인데, 졸업 후에 친구들과 아이폰이나 안드로이드의 창업도 비전이 있을꺼라 생각하시는지요?

역시 전적으로 제 생각을 말해보겠습니다.
작년 초기와 같은 열풍은 기대하기 힘들다고 봅니다.
시간이 흘러갈 수록, 이른바 블루 오션이 점점 레드 오션이 될 것입니다.
점점 많은 실력있는 사람들이나 기존의 큰 회사들이 앱 스토어나 안드로이드 마켓에 뛰어들고 있습니다.
창업을 해서 성공하게 되면 큰 돈을 벌 수 있을지도 모릅니다만, 함부로 준비 없이 시작하면 분명히 망할 것입니다.
제대로 창업하는 것은 오히려 취직하는 것보다 어렵습니다.
창업을 하고 싶다면, 이미 창업한 사람들을 만나 많은 질문을 해 볼 필요가 있다고 봅니다.
IT 쪽의 흐름이 매우 빠르므로, 현재 좋은 창업 아이템도 몇 달만 지나면 가치가 떨어질 수 있을 것입니다.
따라서, 당장 창업할만한 그러면서 시급한 아이템이 있다면 창업을 해도 되겠지만, 취업할 수 있다면 우선 취업해서 회사를 다니며 많이 배운 후에 도전해 보는 것도 괜찮을 것 같습니다.

윈도우 7 모바일의 최신 정보에 대해 알려주셨으면 합니다.

사실 신문만 잘 봐도 잘 알 수 있습니다.
한국 IDGZDNet 코리아의 기사가 더 좋을 거 같습니다.
그러나, 말씀하신대로, 저도 열심히 최근 동향을 따라가며, 수업 시간에 알려드리겠습니다.

IT에서 새로운 플랫폼이 등장하면 수명은 어느 정도 될 것이라 생각하시는지요?

어느 회사가 만들었는지, 얼마나 그 회사가 그 플랫폼에 매진하는지에 따라 다른 질문인거 같습니다.
아마도 질문하신 바는, 배우는 학생이니, 어떤 플랫폼이 등장했을 때, 그게 공부할 만한 것인가 아닌가에 대한 질문인 거 같습니다.
일반적으로 해당 IT 분야에 계속 있으면서, 다른 사람들의 얘기를 들으면 말씀하신 문제에 대한 부분을 빨리 체득할 수 있습니다.

그러나, 어떤 학생들은, 특정 플랫폼을 익힐 때 이게 과연 뜰까 아닐까 하는 식의 생각으로, 잘 나갈 것만 공부하자는 식의 생각을 하는 경우가 있습니다.
물론, 질문한 학생이 그런 생각을 하고 계신 건 아니겠지만, 그런 생각은 전혀 공부에 도움이 안된다고 말씀드리고 싶습니다.
예를 들면, 몇몇 학생들이 많은 언어 중 어떤 것을 공부해야 할까요라는 식의 질문을 많이 합니다.
앞으로 뜰만한, 아니면 적어도 취직할만한 프로그래밍 언어만 공부해서 취직을 하겠다는, 좋게 보면, 소박한 생각인 거 같습니다.
그러나 그런 식으로 공부하면 오히려 IT 분야의 깊은 지식을 얻어내기 힘듭니다.
왜냐하면 대부분의 분야가, 컴퓨터 언어, 운영체제, 데이터베이스, 네트워크 프로그래밍 등의 여러 분야의 지식이 혼합된 형태를 요구하기 때문입니다.
따라서, 특정 플랫폼만 익히려 하는 태도보다는, 시간을 좀 더 투자해서, 여러 플랫폼을 다양하게 공부하고, 적어도 대학 4년 간은 쉼없이 공부하는 자세를 유지할 필요가 있습니다.
그런 태도로 계속 공부하면, 특정 단계를 넘어서면, 새로운 것을 배우는 데에도 크게 어려움이 없게 됩니다.
왜냐하면 새로운 플랫폼도 기존의 것과 서로 유사한 점이 많기 때문입니다.
대부분의 프로그래밍 언어는 유사한 점이 많고, 대부분의 스마트폰도 서로 유사합니다.
프로그래밍 언어도 C와 Java를 제대로 통달하면, 좀 노력하면 C++도 알 수 있고, C#도 할 줄 알게 됩니다. 더 나아가 파이썬이나 루비까지도 쉽게 공부할 수 있습니다.
따라서, 한가지만 배운다는 생각보다는, 처음에는 본인이 좀 답답하더라도, 여러 가지에 대한 통합적인 능력을 쌓으셨으면 합니다.

정말 극소수를 제외한 어플 개발자들의 미래가 PC의 개발자들의 미래와 비교해서 어떻다고 보십니까?

역시, 위의 대답과 같이, 미래는 아무도 모릅니다.
다만, 제 생각엔, 현재의 PC 개발자들과 다를 게 없을 거라고 봅니다.
그러나, 이는 이른바 이공계 위기 때문이 아니라, 어떤 직종을 선택하건 다를 게 없는 얘기입니다.
어떤 전공을 선택해서 어떤 직장을 가건, 어느 정도 나이 이상이 되었는 데, 관리직이 아니라면 어려움이 있는 것이 한국의 현실이라고 봅니다.

제 생각엔 원래부터 이공계 위기는 최고 수준의 공대에 가는 학생들이 의대로 가는 문제였지, 그 이하 학교들에 대해서는 과거나 지금이나 마찬가지였습니다.
열심히 공부해서, 잘되면 대기업이나 탄탄한 기업에 가고, 대기업 가서도 더 힘들고, 이를 못 버티면 중간에 나와서 중소기업에서 중간 간부로 일하거나, 거기서도 밀리면, 나중에 자영업을 하는 구조는 20년 전에도 마찬가지였습니다.
매스컴이나 언론에서 하도 떠들어서 그런 건데, 최고 수준의 상위 세 개 정도의 공대 말고는 이공계 위기는 원래부터 걱정할 성격의 문제가 아니었다고 봅니다.

다만, 아이폰과 같은 수익 구조는 국내의 대기업에게 적합하지 않은 문제가 있습니다.
따라서, 국내의 앱 개발자들이 아직은 파고들 부분이 있다고 생각합니다.