컴퓨터 언어는 컴퓨터가 어떤 문제를 해결하는 데 그 일의 처리방법과 순서를 지시해 주는 언어이다. 첫째는 기계어(machine language), 둘째는 어셈블리언어(assembly language), 셋째는 콤파일러 언어(compiler language) 3가지로 나눠진다.
기계어는 이진법 숫자로 구성된 것으로 번역의 과정을 거치지 않고 계산기가 직접 알아들을 수 있는 언어이다. 또 어셈블리어는 기계어를 기억하기 쉬운 기호어(symbolic language)로 표시한 것을 말하며, 이 언어는 일단 번역(assembling)을 거쳐 기계어로 전환된 뒤 사용된다.
그러나 세번째 콤파일러 언어는 다소 차이는 있으나 어느 기종의 전자계산기에나 공통으로 사용된다. 이것은 일반 사무자료 처리에 적합한 COBOL(Common Business Oriented Language)과 과학기술계산에 보다 편리한 FORTRAN(Formular Translated Language)이 있으며, 이외에도 ALGOL) (Algorithmic Language)·PL/l 등 여러 가지 종류의 언어가 있다. 역시 이 언어도 번역의 과정(이것을 compiling이라 함)을 거쳐서 기계어로 전환되어 사용된다.
또 새롭게 고급(high level) 언어와 저급(low level)언어 이렇게 두 가지로 나뉠 수 있다. 고급 언어는 저급 언어보다 사용하기 쉽고, 더 추상적이며, 더 이식 가능성이 높게 디자인된다. 어떤 언어의 경우에는, 문법적으로 올바른 프로그램들은 저급 언어로 컴파일(compile)되어 컴퓨터 상에서 실행(execute)되게 된다. 그래서 오늘날 대부분의 소프트웨어는 고급 언어로 작성된다.
또 다른 방법으로는 사람이 읽을 수 있는(human-readable) 언어와 사람이 읽을 수 없는 언어로 분류할 수 있다. 사람이 읽을 수 있는 언어는 사람이 직접 사용하여 컴퓨터와 커뮤니케이트하게 해주는 용도로 쓰일 수 있다. 사람이 읽을 수 없는 언어는 더 간결하며, 처리가 쉽게 디자인 되었으나, 이러한 특징을 만족하기 위해 가독성은 희생하여 디자인되었다.
http://terms.naver.com/entry.nhn?docId=512372&cid=42126&categoryId=42126
하드웨어는 중앙처리장치, 주기억장치와 보조기억장치 같은 기억장치, 입력장치, 출력장치로 나뉜다. 이들 장치간의 데이터와 제어 신호의 흐름은 [그림 1-3]과 같으며, 중앙처리장치의 제어 신호에 따라 다른 장치들이 동작을 하게 된다.
http://terms.naver.com/entry.nhn?docId=2270317&cid=51173&categoryId=51173
-컴퓨터언어: 소프트웨어와 하드웨어의 구동관계-
“소프트웨어란 무엇인가 ”라는 글에서 우리는 소프트웨어가 무엇인지를 알아보았다 . 이번 글에서는 소프트웨어를 응용 소프트웨어와 시스템 소프트웨어로 구분하여 그들의 구동원리를 좀더 자세히 알아보고자 한다 . 응용 소프트웨어 와 시스템 소프트웨어 , 그리고 하드웨어 가 각각 어떠한 위치에서 필요하고 어떤 상호 관계 속에서 구동이 되는지를 이해할 필요가 있다 .
자세한 내용을 다루기 앞서서 , “소프트웨어란 무엇인가 ”의 내용을 간단히 정리해보도록 하겠다 . 우선 하드웨어는 기본적으로 CPU(Central Processing Unit)와 메모리로 구성되어있다 . 이때 메모리와 CPU 간의 데이터 입출력을 제어한다거나 컴퓨터가 처리해야 하는 업무의 순서를 정하는 등 , 컴퓨터가 업무수행을 효율적으로 할 수 있게끔 도와주는 것이 바로 “윈도우 ”와 같은 시스템 소프트웨어인 것이다 . 그리고 이러한 시스템 소프트웨어의 플랫폼 위에서 사용자의 목적에 맞게 개발되고 사용되는 “포토샵 ” 등과 같은 프로그램들이 응용 소프트웨어다 .
<컴퓨터언어 : 이들은 무엇으로 소통하는가>
우리에게 우리만의 언어가 존재하듯 , 컴퓨터들에게도 그들만의 언어가 존재한다 . 컴퓨터가 0 과 1 이라는 2 개의 숫자로만 모든 소통과 업무를 수행한다는 것은 누구나 들어보았을 것인데 , 그렇다면 과연 0 과 1 로만 구성되는 컴퓨터적인 소통이 어떻게 이루어지는가와 인간의 입장에서 그러한 언어를 어떻게 해석하고 응용하는가에 대해서 살펴볼 필요가 있다 .
우리는 0 과 1 로만 이루어진 이 언어를 기계어 라고 부르고 , 위 그림에 보이는 숫자들의 배열은 컴퓨터에서 실제로 사용되는 기계어 코드다 . 하지만 사람이 이 코드를 읽으면서 그 의미를 즉각적으로 파악하기가 어렵기에 , 이러한 기계어 코드는 컴퓨터의 개발자 및 이용자 모두의 입장에서 가독성이 떨어진다고 할 수 있다 . 이때 인간의 입장에서 이러한 기계어를 알아볼 수 있게끔 , 원시적이자 1 차적인 차원에서 만들어진 언어가 어셈블리 언어 다 . 하나의 어셈블리 코드는 하나의 기계어 코드를 대표하고 있다는 것이 큰 특징이다 .
하지만 , 어셈블리 언어는 하드웨어가 수행하는 업무 하나하나를 개별적으로 표현하기 때문에 , 복잡한 업무를 수행하는 프로그램을 만들 경우 천문학적인 수의 코드를 작성해야 한다는 한계가 있다 . 이러한 점을 극복하고자 High-level Language(고급언어)가 개발 되었는데 , 대표적으로는 C, C++, Java, Visual Basic, C# 등이 있으며 이 언어들은 우리가 쓰는 자연언어와 유사하다는 점이 가장 큰 장점이다 . 이러한 장점 덕분에 , 고급언어는 프로그램 개발에 처음 임하는 사람도 쉽게 이해하고 개발할 수 있다 .
이러한 고급언어의 발전이 이루어진 현대의 응용 소프트웨어들은 대부분 고급 컴퓨터 언어로 이루어져있다 . 그러나 기계어를 제외한 모든 언어들은 사용자의 편의를 위해 개발된 것이기 때문에 , 정작 컴퓨터의 하드웨어는 기계어를 제외한 언어들을 해석할 수가 없다 . 이때 컴퓨터의 기본적인 구동을 위해 기능하는 시스템 소프트웨어의 역할이 드러난다 . 시스템 소프트웨어는 응용 프로그램에서 사용되는 어셈블리어와 고급언어를 하드웨어가 해석할 수 있도록 번역해주는 기능을 가지고 있고, 이 기능을 수행하는 소프트웨어의 이름은 컴파일러와 어셈블러다 . 컴파일러는 고급 컴퓨터 언어를 , 어셈블러는 어셈블리어를 기계어로 변환해주는 역할을 한다.