어떠한 언어를 사용하는가는 S/W 개발에서 매우 중요한 이슈임.

여러가지 이유가 있지만 그 중 하나는 각 언어마다 힘을 발휘할 수 있는 영역이 다르다는 것임


C언어의 가장 큰 강점은 성능이 아니라 간단하고 단순한 문법임.


문법이 단순하다는 것은 여러가지 장점을 만드는데, 그 내용은 아래와 같음


1. 컴파일러의 제작과 포팅(이식)이 쉬워진다.

2. 코드가 높은 투명성을 갖는다.(추상화 수준이 낮다 그러니 최적화된 코드 생성 가능)


만약 내가 어떤 칩을 만들었다고 치자.. 여기에 프로그램을 넣으려면 컴파일러가 필요해...

그러면 복잡한 문법이라 포팅할 양이 많고 VM까지 이식해 주어야 하는 고급언어들을 사용할까?

아니면 문법의 양이 적어서 비교적 적은 함수들만 다시 작성해 주면 되는 언어를 사용할까?


이러한 이유로 새롭게 만들어지는 칩들은 일단 C를 우선 지원하고 플랫폼의 기반이 되는 레이어에는

거의 C가 쓰이게 되지...


그러면 다른 고급언어(자바 파이썬 또는 웹언어 등등)의 강점은?

1. 추상화 레벨이 높다.(기능이 강력하다.)생산성이 높다.

2. 플렛폼에 대해 이식성이 높다


1번은 뭐... 잘 알려져 있는거고 2번은 좀 의견이 다를 수 있는데, 대부분의 최신언어들은 자신만의 가상

플렛폼을 가지고 있고, 이 플렛폼을 포팅해야지만 그 위에서 돌아가도록 디자인 되어 있어.


대신 일단 환경이 갖추어 지면, 어떤 하드웨어든 별다른 불평없이 돌아가 컴파일을 새로 할 필요 없이말야.

이게 자바라면 JVM이나 달빅 같은 것일테고, HTML이나 자바스크립트라면 웹 브라우져가 되겠지...


그런데 프로그래머라고 하면 다들 PC환경만을 생각하니까 위에서 말한 특징이 싹 사라지고, 오직 성능과 생산성

의 대결이 되어버리고 마는거야. 그렇다면, 당연히 고급 언어들의 압승이지.


그래서 언어의 선택이 중요한거야. 내가 높은 레벨의 레이어에서 작업을 하려고 할 때 C를 쓰면 생산성이 안나와.

그런데 반대로 낮은 레벨의 레이어에서 고급 언어를 쓰려고 하면 작업이 거의 불가능하지.


그러니 작업을 할때 언어의 선택은 신중하게 할 필요가 있다고 봐.



물론 실제로 작업할 때는 아래쪽부터 위쪽까지 다 니가 해야 하니까 어차피 다 익혀야 함 ㅋㅋ