C언어를 공부할려고 하는데요..

자바를 공부하고 취직준비하는데… 아무래도 자바가지곤 부족함을 느껴서 C언어를 다시 공부할려고하는데요…

그냥 공부하면 능률도 안 오를꺼 같아서 C언어 관련 자격증을 준비하면서 공부할려고 하는데요.

혹시 C 관련 자격증이 따로 있나여??? 찾아보니깐 없다고 해서여…

아님 고수님들은 C언어 공부할때 어떻게 하셔서 능률있게 잼나게 공부하셨나여?? 궁금해요…ㅜㅜ

프로그래밍 관련 자격증은 없는걸로 알고 있습니다.
뭐…재미있게 프로그래밍 공부를 할려면…자기에게 필요한 프로그램을 만들어 보거나 할수 있겠죠…ㅎ

윗분 말씀처럼 프로젝트 하면서 언어 배우는 게 지름길입니다.

기본서는 최대한 빠르게 쭉 훑어보고 바로 프로젝트 만들어 보세요.

테트리스 한번 만들어보심이 어떤가요?
[img:1gxc9ydg]http://grr.co.kr/blog/attach/1/1003613946.jpg[/img:1gxc9ydg]

VC나 gcc로 요렇게 콘솔(터미널) 라인에서 돌아가는 테트리스를 만들어 보시는것을 추천해 드립니다. 저도 C에서 if , for, while, scanf, printf 만 알고 있는 상태에서 테트리스를 만들어 봄으로써 많은 것을 깨닳을 수 있었습니다. (저는 한달 걸리더군요…)

C 자격증은 없습니다…
굳이 자격증이 있어야 뭘 하는것도 아닌 언어라…ㅡ.ㅡ…

윗분들처럼 하나 만드시면서 배우시는게 가장 좋다고 하던데…
전… 실무나와서 배워가고 있습니다ㅠ.ㅠ.

저는 예전에 GWBasic으로 프로그래밍하다가 깝깝해서
터보C로 넘어가면서 C언어를 접했구요
터보C와 같은 인터페이스의 풀다운메뉴를 가진 에디터를 만들면서 C언어를 많이 공부하게 되었어요.
그 후론 CGI하면서 더 많이 알게 되었구요.

작은 게임을 만들어 보면… 사운드, 키보드, 메모리 관련 사항들을 공부하기에 좋구요.
에디터를 만들어 보다보면 자료구조와 사용자 인터페이스, 입출력등을 공부하기에 좋습니다.

궁금한 것이 왜 자바만으로는 불충분하다고 생각하는 것인가요? 그 부분을 알아야 여기 분들이 답변을 더 잘 해 드릴 수 있을 것 같습니다만. 혹 자바만으로는 취직이 어렵다고 생각하신다면 C를 잘 하는 것이 취직을 더 잘하게 해 주는 길은 아니라는 말씀을 드리고 싶습니다. 현재 자바만큼 한번 배워 여러분야에 범용으로 잘 쓸 수 있는 언어는 없거든요. 모르겠습니다. 커널이나 하드웨어 제어처럼 low level을 깊이 들어가야 한다면 C가 유용하겠지만요.

저 역시도 언어를 새로 배운다면 간단한 게임, 특히 테트리스 같은 게임을 만들어 보시길 추천합니다. 생각보다 쉽지 않고, 또 테트리스를 만들면서 언어의 특성을 파악하기 좋습니다.

어쨌든 취직을 위해서라면 C는 특화된 분야를 선정하시는 게 좋을 겁니다. 그렇지 않다면 아예 고전적인 C 프로그래밍을 해 보시길. C를 배우는 많은 사람들이 간과하는 것이 C는 언어 자체가 Unix 운영체제와 같이 개발되었다는 점입니다. 일단 책은 kernighan의 Unix programming environment도 괜찮고 좀 더 광범위해도 괜찮다면 역시나 고전의 명저 stevens의 Advanced Programming in the UNIX Environment도 좋습니다. 요즘도 업데이트가 되고 있는 모양이네요.

하나의 프로그래밍 언어에 어느 정도 능통하였다면…
자료구조는 물론이고, 사용자 인터페이스, 프로토콜 등에 관한 지식들을 얻게 될 것입니다.
그렇게 되다 보면… 타 언어와의 인터페이스도 필요할 경우가 있으며…
자연적으로 다른 언어도 접하게 되고, 그언어를 배우는 것에도 쉽게 됩니다.

프로그래밍 언어들을 별개의 분야로 보시는 것은 별루 좋지 않아 보입니다.
왜냐면 어자피 로우레벨로 가면 기계어로 통합되는 것이니까…
컴퓨터라는 것을 어떻게 제어하고, 사용자와 어떻게 소통하는가 하는 것에 촛점을 맞춰서 공부해
가신다면… 전반적인 지식들을 얻게 될 것입니다.

욧점은 컴퓨터 언어란 컴퓨팅의 한 도구로서 사용되는 것이고,
그 도구를 다루는 방법이 언어를 공부하는 것이라 볼 수 있는데…
다루는 방법을 내내 공부하는 것이 중요하지 않다는 것입니다.
그 도구를 어떻게 사용하는가 어떤 분야에 사용하는가가 중요하죠.

그러니까, 취직을 위해서 다른 언어를 택하신다면 그다지 추천하고 싶지 않습니다.
그러지 말고, 어떤 분야로 갈 것인가를 먼저 선택하십시오.

예를들어, 하드웨어에 최적화된 프로그래밍이라면 어셈블리어가 있을 것이고,
이보다는 보통은 C언어를 많이 사용합니다 (EFI의 펌웨어도 C언어로 작성이 가능함)

자바언어는 그 특유의 범용성으로 인하여 모바일 프로그래밍에 특별한 강점을 가집니다.

인공지능 분야라면 LISP가 각광을 받습니다.

수치계산용이라면 FORTRAN이 아직 까지도 사용됩니다.

사용자 인터페이스를 중점으로 한다면 인터프리터 언어인 VisualBasic, PERL, LUA, RUBY등이 괜찮습니다.

리눅스용으로는 Python도 많이 사용되더군요.

저의경우 Java>C>LUA>PERL>FORTRAN 의 능숙도를 가지고 있는데…
C언어(도스, 유닉스)를 먼저배우고, 자바를 배웠습니다만…
자바를 주 프로그래밍 언어로 사용하면서 C언어를 쓸일은 거의 없었습니다. JNI를 사용하는 것은 범용성에 해가 되니까…
관련 라이브러리나, 명령어를 이용하는 방법으로 대부분 커버가 됩니다.
오히려 스크립트언어의 활용도가 더 높더군요. 아무래도 사용자 인터페이스와 개발속도 면에서
인터프리터 언어가 컴파일러 언어보다는 장점이 있습니다.

protochaos님 글 추가해서 그냥 재미삼아 좀 더 써보면요… 언어를 선택하는 것과 분야를 선택하는 것은 간단한 예를 들면 이렇습니다. 1부터 100까지 더하는 분야를 선택해 볼까요? 우선 basic

[code:2komhay9]
sum = 0
for i = 1 to 100
sum = sum + i
next
[/code:2komhay9]

C는 이렇게 되겠죠. 아무래도 구조화가 편리합니다. 블럭이 중요하겠죠.

[code:2komhay9]
int sum = 0;
for (i = 1; i <= 100; i ++)
{
sum = sum + i;
}
[/code:2komhay9]

그런데 C를 쓰면서 이런식으로 쓰면 좀 자원 낭비죠? 펑션을 도입하면

[code:2komhay9]
int sum(int num)
{
int i = 0, sum = 0;
for (i = 1; i <= num; i++)
{
sum = sum + i;
}
return sum;
}

......

sum_to_100 = sum(100);

[/code:2komhay9]

이걸 좀 더 줄이면 이쯤 될겁니다.

[code:2komhay9]
int sum(int num) { return num*(1 + num)/2; }
[/code:2komhay9]

자바로 가서 객체지향을 써 볼까요?

[code:2komhay9]
public class Calculator
{
private int num = 0;

public Calculator(int n) { num = n; }

public int getSum() { return num*(1 + num)/2; }

}

....
Calculator c = new Calculator(100);
System.out.println(c.getSum());
[/code:2komhay9]

Python의 list를 써 보죠.

[code:2komhay9]
nums = range(1, 100)
sum(nums)
[/code:2komhay9]

벡터 내적을 이용해 Matlab의 행렬 처리를 쓰면 이렇죠.

[code:2komhay9]
nums = 1:100;

print nums * ones’
[/code:2komhay9]

참고로 Matlab은 이런 경우에 더 좋죠. 1^2 + 2^2 + 3^2 + … +100^2을 계산하려면

[code:2komhay9]
nums = 1:100;
nums_squared = nums * nums’;
[/code:2komhay9]

소스가 벡터 연산 그대로입니다.

Perl로 1부터 100까지 숫자가 있는 텍스트 파일을 한줄 한줄 읽어 볼까요?

[code:2komhay9]
$sum = 0;
while ($line = <STDIN>) {
chomp $line;

$sum = $sum + $line;

}
[/code:2komhay9]

이렇습니다. 같은 문제도 내 필요에 따라 편하게 쓸 수 있는 연장이 다른 셈이죠.

테스트 안해보고 적은 코드이니 틀린 부분은 다른 분들이 디버깅 해 주세요. :)

고수님들의 답변 정말 정말 감사합니다…

졸업반이라 이래저래 초조하네요… 해 놓은건 딸랑 java 공부해서 SCJP따고…

안드로이드에 관심있어서 어플 좀 만든걸로 취업전선에 갈려니…

해 놓은게 없는거 같고…해서 C언어로 바꿀생각이였는데…

좀 더 java를 더 공부를 해야겠다는 맘으로 확고해지기 시작했네요…

솔직히 java 공부라곤 그냥 기본서에 있는거로 몇번 깔짝 거린거 밖에 없다고 생각이 들기도 하고요…

아참… 저는 모바일 프로그래밍으로 갈 생각이였거든요… ^^…

암튼 이래저래 답변 달아주신분들 정말로 감사합니다… 진심으로…^^…

글구요… 이건 정말 마지막 부탁인데요… 혹시 모바일 프로그래머(스마트폰 관련)가 혹시 계신다면 기본적으로

알아야 할 내용 좀 알 수 있을까여? 아니면 java를 공부할때 추천할만한 책이라던지… 원문도 상관없습니다… ^^

모바일 플랫폼이면 C는 필수 코스겠지만 모바일 어플이나 서비스 쪽이라면

  • 전산 기초지식과
  • 안드로이드 프로그램 하나 정도 포트폴리오로 가지고 있으면 좋을 듯 합니다.

대기업이 아니라면 당장 채용해서 사용할 수 있는 인력을 선호합니다. 언어를 알고 있다고 하는 것과 전혀 경험이 없다고 하는 것은 많은 차이가 있습니다. 자바를 주력으로 하고 모바일 어플 개발쪽으로 지원하실 생각이시라면 자바의 기초지식과 안드로이드 UI를 이용한 프로그램을 작성하면서 기초적인 것을 배워 두시면 유용할 것으로 생각됩니다. 해당해서 자신감을 가질만 하다면 다른 언어를 준비해 두는 것도 좋을 듯 합니다.

[quote="lanterrt":mwql7tgz]모바일 플랫폼이면 C는 필수 코스겠지만 모바일 어플이나 서비스 쪽이라면

  • 전산 기초지식과
  • 안드로이드 프로그램 하나 정도 포트폴리오로 가지고 있으면 좋을 듯 합니다.

대기업이 아니라면 당장 채용해서 사용할 수 있는 인력을 선호합니다. 언어를 알고 있다고 하는 것과 전혀 경험이 없다고 하는 것은 많은 차이가 있습니다. 자바를 주력으로 하고 모바일 어플 개발쪽으로 지원하실 생각이시라면 자바의 기초지식과 안드로이드 UI를 이용한 프로그램을 작성하면서 기초적인 것을 배워 두시면 유용할 것으로 생각됩니다. 해당해서 자신감을 가질만 하다면 다른 언어를 준비해 두는 것도 좋을 듯 합니다.[/quote:mwql7tgz]

모바일 플랫폼에서 C언어가 필수 코스라고 생각되지 않습니다.
혼자서 몽땅 해결하려면 이것저것 다 배워야겠지요.

안드로이드의 경우, arm리눅스커널에, 자바안드로이드가 얹혀진 형태인데…
커널드라이버나, 커널관련서비스는 하드웨어와 밀접한 관계를 가지고 있으므로,
이것은 해당 하드웨어 관련 담당자가 처리할 문제이고,

안드로이드 플랫폼의 어플은… 자바로 작성되어도 충분합니다.

안드로이드가 인기를 끌게 된 원인도… 그렇게 쉽게 프로그램이 작성될 수 있으며,
자바라는 환경의 이식성때문이기도 하지요.

프로요라던가, 진저브레이드라는… 안드로이드 시스템운영체제는…
일반적인 리눅스의 커널과 관련 서비스들을 처리해주지 않습니까?

일반적으로 어플 작성자는 커널및 로레벨에 접근하지 않아도 되고, 만약 접근을 해야된다면…
이것은 루팅이 되어야 하므로, 범용성이 떨어집니다.

그러니까 스마트폰의 소프트웨어가 개발될때, 해당 하드웨어 의존적인 것들과…
사용자들을 위한 어플은 분리되어 개발될 필요가 있는 것입니다.
아니면 적어도 모듈화라도 해야겠지요.

그리고, 모바일 플랫폼이니까 속도가 중요하기 때문에 빠르다는 C언어로 개발되어야 한다는 편견은 좋지 않습니다.
운영체제와 서비스및 드라이버를 어떻게 최적화 하는가에 따라 속도가 많이 좌우되기 때문에…
안드로이드 운영체제 업그레이드에 따라 속도가 차이가 나고,
어플의 속도는 해당 프로그래머가 어떻게 알고리즘을 작성하였는가에 좌우된다고 볼 수 있습니다.
어떤 사람이 JavaScript로 프로그램을 작성하였다고 하더라도…
Script코딩 자체가 최적화 되어 있다면… 최상의 프로그램이라고 볼 수 있는거죠.
이사람이 C언어나 Java를 공부해서 최적화 해야만 최상의 프로그램이라고 볼 수 있을까요?

아, 몰라요. 하다보면 다 하게 됨.

C하고 java하고 둘중에 무엇을 할지 고민하는것 자체가 이상한겁니다.

초밥 요리사중에 매운탕 못 끓이는 요리사가 있습니까?

아 물론 있다고 말할수도 있습니다.

그런데 그 매운탕 못 끓이는 초밥 요리사가 만드는 초밥은 맛있겠어요?

컴퓨터 프로그래밍의 기본은 수학과 그림실력입니다.

중급 프로그래밍 서적에 필수로 등장하는게 자료구조지요?

어느 프로그래밍이든 집합은 필수로 들어가니 집합부터 공부하시고,

만약 게임 프로그래밍을 하시려면 삼각함수와 물리를 공부하시기 바랍니다.

언어가 중요한게 아닙니다…

윗분이 말씀하셨지만…

분야가 중요하다고생각합니다.

언어는 C로 시작해서 자바도하면 좋구요

분야라면

시스템엔지니어
커널개발
윈도우어플리케이션이라든지
모바일 개발이라든지
웹개발
아키텍쳐설계
머신러닝,인공지능,패턴인식
검색엔진
HTML 코더
FT개발
3D엔진개발
3D엔진 사용자

뭐 많네요 이런분야를 정확히 선택하고목적성있게접근하세요

[quote="protochaos":jo1y8653][quote="lanterrt":jo1y8653]모바일 플랫폼이면 C는 필수 코스겠지만 모바일 어플이나 서비스 쪽이라면

  • 전산 기초지식과
  • 안드로이드 프로그램 하나 정도 포트폴리오로 가지고 있으면 좋을 듯 합니다.

대기업이 아니라면 당장 채용해서 사용할 수 있는 인력을 선호합니다. 언어를 알고 있다고 하는 것과 전혀 경험이 없다고 하는 것은 많은 차이가 있습니다. 자바를 주력으로 하고 모바일 어플 개발쪽으로 지원하실 생각이시라면 자바의 기초지식과 안드로이드 UI를 이용한 프로그램을 작성하면서 기초적인 것을 배워 두시면 유용할 것으로 생각됩니다. 해당해서 자신감을 가질만 하다면 다른 언어를 준비해 두는 것도 좋을 듯 합니다.[/quote:jo1y8653]

모바일 플랫폼에서 C언어가 필수 코스라고 생각되지 않습니다.
혼자서 몽땅 해결하려면 이것저것 다 배워야겠지요.

안드로이드의 경우, arm리눅스커널에, 자바안드로이드가 얹혀진 형태인데…
커널드라이버나, 커널관련서비스는 하드웨어와 밀접한 관계를 가지고 있으므로,
이것은 해당 하드웨어 관련 담당자가 처리할 문제이고,
[/quote:jo1y8653]

모바일 어플리케이션 서비스를 개발을 제외하면 모바일 플랫폼에서 말씀하신 하드웨어 관련 빼고 남는게 머가 있는지 궁금하네요. 말씀하신 분야는 대부분 모바일 어플리케이션 분야라고 생각됩니다. 플랫폼에 물론 일부 시스템 어플리케이션이 포함되긴 하지만 이는 제품을 구성하기 나름일 뿐 개발을 하는 조직상의 구조는 이와는 별개로 API를 기준으로 아래쪽과 위쪽으로 분리된다고 보면 API위쪽은 주로 어플리케이션개발이고 API아래쪽은 플랫폼개발이라고 생각해서 전 모바일 플랫폼은 C가 필수코스가 된다 라고 본 것입니다.

Javascript만으로도 충분히 고객이 원하는 성능을 달성할 수 있다면 더 할 필요는 없겠지만. 아무리 Javascript로 고급의 기술을 사용한다 하더라도 C나 Java를 이용해서 기능을 구현한 것만큼 고성능이긴 힘듧니다. 물론 이도 업무에 따라서 다 다르겠지만, 고객이 돈을 주고 구입하는 시스템이라면 간단한 기능은 아닐 터이고 그런 고객을 가진 회사에 취직하려는 만큼, 다양한 도구에 익숙해 지는 것은 중요한 것입니다.

개인적으로는

  • Native용 언어 (C, C++, Objective-C)
  • High level언어 (Java, .Net, VB, … )
  • Web개발용 언어 (JSP, PHP, ASP, …)
  • 스크립트 언어 (Python, Ruby, …)
    등 4가지 언어종류중 하나씩 정도는 배워 놓는게 좋다고 생각합니다.

머 플랫폼에 대해서 서로 다르게 이해한것 같은데 머 그건 충분히 그럴 수 있다고 보고…
플랫폼 아랫단이라면 당연히 저레벨 언어가 필요하겠지요.

모바일 어플리케이션이라면 그렇지 않다고 말한 것이구요.

대부분의 스크립트 언어는 그것을 구동하는 엔진의 속도에 좌우 됩니다.

C언어의 경우 거의 전적으로 프로그래머의 몫이 겠는데…
보통 엔진이라고 부르면, 나름 최적화 되어 있는 코드입니다.
자꾸 속도를 강조하다 보면 C언어도 버려야 합니다.

학교다닐때 Z80을 강의하시는 교수님은 Z80기계어 코드를 다 외울 정도라고 했습니다.
16진수로 되어 있는 숫자열을 보고… 머릿속에서 어셈블리어 니모닉코드로 번역되는 것이죠.
저는 어셈블리어도 꽤 했습니다만… 그만한 속도를 위해서 희생해야 될것이 너무도 많다고 느꼈습니다.

물론 C언어는 그것보다는 환상적으로 편리하면서도, 만만찮은 속도를 보여줍니다만…
개발속도에 있어서는 인터프리터 계열에 절대 따라가지 못할 것입니다.

보통 unix계열 C언어나 python프로그래밍을 하더라도 시스템 명령들을 많이 사용하지 않나요?

자바에서 그렇게 속도를 요하는 부분들은 Jni를 통하거나, 해당 명령을 실행함으로써 보충합니다.
스크립트 언어도 마찬가지로… 최적화된 시스템 명령을 실행함으로써 보충을 하지요.
아무리 C언어로 라이브러리를 만들어서 사용한다고 하더라도, 정적코딩의 한계로…
인터프리터언어의 개발속도에 비하면 C언어는 반의반도 안되는 것 같습니다.

요새는 시스템이 좋아지고, 플랫폼도 너무나 좋아져서… 응용프로그램들은 그 환경을 누릴 필요가 있다고 보구요…
또한, 누군가 말하는 것 처럼 이젠 소프트웨어가 하드웨어를 이끌어 가는 시대입니다.
하드웨어는 점점 좋아지기 마련이고, 모바일 플랫폼의 경우에도 작성한 프로그램을 다른 버젼의 제품에도 적용할 필요가 있습니다.
이럴때에 대비해서 속도를 조금 희생하여 이식성이 좋게 프로그램을 개발하고, 속도를 필요로 하는 부분들은
최적화된 코드를 호출하는 방식으로 작성하는 것이 좋다고 봅니다.

요새는 세상이 너무나 빠르게 변해가거든요.

컴퓨터가 조금 후지더라도, Gnome3를 쓰고 싶지 Motif쓰고 싶은 사람은 별루 없을 겁니다.

[quote="grr":8ludhwqj]테트리스 한번 만들어보심이 어떤가요?
[img:8ludhwqj]http://grr.co.kr/blog/attach/1/1003613946.jpg[/img:8ludhwqj]

VC나 gcc로 요렇게 콘솔(터미널) 라인에서 돌아가는 테트리스를 만들어 보시는것을 추천해 드립니다. 저도 C에서 if , for, while, scanf, printf 만 알고 있는 상태에서 테트리스를 만들어 봄으로써 많은 것을 깨닳을 수 있었습니다. (저는 한달 걸리더군요…)[/quote:8ludhwqj]

오오오오오오~~~ 멋진데요!!! (+_+)

[quote="protochaos":1ny54l3e]

모바일 플랫폼에서 C언어가 필수 코스라고 생각되지 않습니다.
혼자서 몽땅 해결하려면 이것저것 다 배워야겠지요.

안드로이드의 경우, arm리눅스커널에, 자바안드로이드가 얹혀진 형태인데…
커널드라이버나, 커널관련서비스는 하드웨어와 밀접한 관계를 가지고 있으므로,
이것은 해당 하드웨어 관련 담당자가 처리할 문제이고,

안드로이드 플랫폼의 어플은… 자바로 작성되어도 충분합니다.

안드로이드가 인기를 끌게 된 원인도… 그렇게 쉽게 프로그램이 작성될 수 있으며,
자바라는 환경의 이식성때문이기도 하지요.
[/quote:1ny54l3e]

아… 무언가 열띤 토론 같기에 은근슬쩍~ 구렁이 담 넘어 가듯이 그냥 지나치려다가…
그래도 명색이 안드로이드 플랫폼 전문가…라는 사람이 그냥 넘어가기엔 뭣 … 해서 몇 글자 적어 놓고 갑니다. :)

일단 안드로이드 어플리케이션이 Java 로만 충분하지는 않습니다.

만약 그렇다면 현재 안드로이드 앱으로 나와 있는 3D 기반의 게임 앱들 역시 죄다 Java 로만 개발되어야 하겠죠.
왜냐하면 Java 에도 3D 지원 라이브러리가 있기 때문입니다.

그러나, 그렇게 하지 않는 이유는 당연한 얘기지만 속도가 떨어지기 때문입니다.
밑 바닥에 있는 마이크로 프로세서(CPU)에 내장된 3D 가속기까지 가지 않더라도 Open GL ES 라이브러리만
사용한다 손 치더라도 결국 C/C++ 같은 Native 언어와 결합(융합?)해서 개발하는 게 훨씬 성능적으로 뛰어납니다.

더군다나 현재 시중에 나와 있는 안드로이드 앱 개발 서적에 적혀 있는 내용은 ‘완전한’ 어플리케이션 내용을 담고 있진 않습니다.

안드로이드 전체 계층(Layer) 중 맨 위 상단에 보이는 파란색의 Application Layer 가 사실은 안드로이드 어플리케이션의
모듈(Module) 부분만을 나타내고 있고, 그렇기에 안드로이드 앱 소스에 main() 이 없는 것입니다.

마지막으로 안드로이드가 인기를 끈 이유는 Java의 이식성도 한 몫 했겠지만 보다 더 중요한 이유는 [b:1ny54l3e]기업들이 선호했기 때문[/b:1ny54l3e]입니다.
특히 제조사 입장에서는 더할 나위 없는 이유가 있습니다. 바로 [b:1ny54l3e]‘라이선스’[/b:1ny54l3e] 이죠.

아시다시피 리눅스는 전체적으로 GPL 라이선스를 따르고 있습니다.
그리고, GPL 기반으로 개발된 glibc 기반의 어플리케이션 역시 GPL 을 따라야 하는 건 당연한 거겠죠.

그런데, 안드로이드는 GPL 기반의 glibc 대신에 BSD 기반의 libc 로 대체를 하였고, 어플리케이션을 실행시키기 위한 시스템 라이브러리들이
대부분 APL 와 BSD 기반으로 되어 있어서 소스 코드를 공개하는 게 바람직하지 않는 일부 제조업 분야에서는 너무나 환영할만한
플랫폼이었던 것입니다.

왜냐하면 기존에 소스 코드를 공개하지 않아도 되는 상용 플랫폼의 경우엔 자사에 맞게 고칠 수 있는 커스터마이징이 너무나 어려웠었는데,
안드로이드는 그것도 편하면서 라이선스도 기업체가 좋아할만한 요소를 담고 있었기 때문이었죠.

그래서, 미친 듯이 제조업에서 너도 나도 뛰어 들게 되었고 그 파급 효과가 앱 개발자들의 무한 헤드헌팅으로 이어지면서
현재에 이르게 되었다고 생각합니다.

실제로 어플리케이션의 인기는 안드로이드 보다는 아이폰이 먼저 였고 여전히 개인 사용자용 어플리케이션은 아이폰/아이패드 가
더 인기가 좋은 것으로 여겨지고 있습니다. 안드로이드 앱은 워낙 쉽게 해킹이 되서요. (ㅠ.ㅠ)

모바일이든 어떤 분야든 특정 언어가 더 낫다 아니다… 는 저도 잘 모르겠습니다.

다만 시스템 만큼은 전체적으로 바라보는 ‘눈’ 을 가졌으면 하고 생각합니다.

언어…라는 나무에만 집착하지 않고, 시스템…이라는 전체적인 숲…을 먼저 볼 수 있다면 언어는 그저 전체 시스템의 부품일 뿐이기에
어느 것이 최선이다… 라는 생각을 하지 않아도 될 것 같거든요. ^^;;;

첨언 : 취업을 하기 위해서 흔히들 ‘스펙’ 을 자꾸만 고집하는데, 그러기 보다 남들로부터 ‘인정(= 인증)’ 을 받으려고 노력해 보세요.

        가령 공모대전이나 경진대회에서 입상을 하게 되면 그렇게 되지 않을까요? ^^;;;

크… 뻔뻔한 님의 댓글에 동의합니다.

속도를 요구하는 부분들은 3D같은 경우는 속도가 생명이기 때문에…
당연히 Native Method를 사용하여야 겠지요.

저가 글을 올린 취지도 언어라는 측면에 구애 받기 보담은…
그 언어로 작성되어질 목표, 즉 Targeting이 중요하다고 본 것입니다.

이루어야할 목표를 위해서 다른 언어를 배울필요도 있고, 새로운 하드웨어에 대한 공부도 필요하겠지요.

[quote="protochaos":viga4fy7]크… 뻔뻔한 님의 댓글에 동의합니다.
[/quote:viga4fy7]

얼마나 동의 하셨길래 두 번씩이나 반복하시다니… ㅋㅋㅋ :)