C언어는 왜 하드웨어에 적합한언어인가요?
제곧내 입니다
C언어는 왜 하드웨어에 종속적인 언어인가죠??
이유가 무엇인지 궁금합니다
여러많은 언어들이 있는데 왜 그런것일까요?
C언어만의 강점이,있는것인지요?????????
C언어는 가장 대표적인 절차지향언어입니다.
절차지향적이라는 것은 코딩한 순서대로 실행이 된다고 보시면 되고, 객체지향적이라는 것은 객체(하나의모듈)라는 것을 만들어서 재사용함으로써 여러 군데서 호출해서 쓸수 있다고 보시면 됩니다.
또한 가장 기초적인 언어이고 다른 언어들의 기반이 되는 언어이기때문에 보통 컴퓨터 학과에서 가장 기본적으로 배우는 언어입니다. 절차지향이기 때문에 임베디드(기계제어)에서 가장 많이 쓰이는 언어이기도 합니다. 특히 C언어는 하드웨어나 서버를 직접 다루기에 쉬운 언어이고 프로그램의 크기가 작으며 속도가 빨라서 메모리가 작은 환경에서도 구현이 가능하답니다.
C언어가 왜 하드웨어에 종속적인 언어인지 질문을 하셨습니다.
하지만 결과부터 말씀드리면 C언어는 하드웨어에 종속적인 언어가 아닙니다.
C언어가 아닌 C 컴파일러가 하드웨어에 종속적이라고 할 수 있습니다. (일반 애플리케이션 관점)C언어 자체는 지원되는 기능이 적고 문법이 간단합니다.
550쪽 정도밖에 안 되는 C언어 표준에서도 순수 문법 부분은 200쪽 정도밖에 안 되며 나머지는 다 라이브러리 관련 부분이고, 함수의 개수로 치면 대략 150개 근처입니다.
다만, C언어를 통해 만들어진 프로그램(애플리케이션)은 운영체제에 종속적인 형태로 만들어집니다. 이 말은 동일한 C언어 코드라고 하더라고 운영체제에 따라서 다르게 만들어지게 됩니다.예를 들면 C언어를 배울 때 가장 처음 배우는 Hello World 프로그램의 경우 대부분의 C언어의 코드는 아래와 동일합니다.
#include <stdio.h> int main(int argc, char** argv) { printf("Hello, world!\n"); return 0; }하지만 만들어지는 실행파일은 천차만별입니다.
Windows > Visual Studio > x64 용 콘솔 애플리케이션용 실행파일
Mac OS > gcc > Mach O 용 실행파일
하지만 위의 설명은 일반 애플리케이션 기준이고 좀 더 저수준의 소프트웨어 (펌웨어, 운영체제)를 작성하게 된다면 하드웨어와 밀접한 코드를 작성하게 됩니다. 경우에 따라서는 심지어 인라인 어셈블리를 작성하기도 합니다.
C언어가 만들어진 1972년에는 저수준 언어로는 어셈블리어가 고수준 언어에는 코볼, 포트란이 주로 쓰였습니다. C언어는 유닉스라는 운영체제를 만들기 위한 언어로 시작했기 때문에 어셈블리어에 대한 대체하여 운영체제를 만들기 위한 언어로서의 역할을 가지고 있었습니다. 그렇기에 하드웨어에 밀접한 구현 코드가 이루어질 수 밖에 없게 된 것입니다.
안녕하세요. 아하 (a-ha) 프로그래밍 지식 답변자 입니다.
C 언어가 하드웨어에 왜 적합한 언어인지 물어보셨는데요. C언어는 UNIX/LINUX와 같은 OS의 커널에 서비스를 요청할 때 직접 호출하는 시스템 콜을 이용할 수 있기 때문 입니다.
답변이 도움이 됐으면 좋겠습니다. 좋은 하루 되세요
C언어가 처음 만들어질 때 이용 되었던 프로그래밍 언어인 어셈블리어와 비교할만한 효율을 가지도록 프로그래밍 언어로 만들어졌기 때문입니다.
그 외에도 프로그래밍 언어인 C언어가 어셈블리어 다음으로 기계어에 가깝게 접근이 가능하기 때문에 하드웨어에 종속적인 언어라고 보시는 것이 맞을 것이라 생각됩니다.
하드웨어에 종속적인 언어는 어셈블리어처럼 기계어에 가까운 저급언어들을 말합니다.
C언어는 이에 해당하지않는 고급언어에 해당합니다.
AT&T 벨 연구소에서 운영체제를 만드는데 있어 어셈블리어로 작성하기 어려워 B언어를 개선하여 C언어를 개발한 것으로 알고 있습니다.
참고하세요....