프로그래밍 언어 기계어의 역사, 특징, 단점에 대해!
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
language_Machine_low_level_example |
프로그래밍 언어 기계어의 역사
컴퓨터의 초기 형태는 진공관을 사용하는 전자계산기였다. 초기 컴퓨터는 전기 신호를 통해 논리 연산을 수행하는데, 이진 형태로 표현되는 기계어를 이해할 수 있었다. 초기의 기계어는 직접 전선과 스위치를 조작하여 명령어를 구현했다. 1940년대 후반부터는 전자계산기가 발전하여 트랜지스터와 같은 반도체 장치를 사용하는 컴퓨터로 진화했다. 이러한 컴퓨터는 직접적으로 기계어 명령을 수행할 수 있으며, 프로그래밍은 주로 기계어 수준에서 이루어졌다. 이 언어는 0과 1로 이루어진 이진 코드로 표현되는데, 이는 컴퓨터의 전기 신호를 나타낸다. 각 비트는 '켜짐' 또는 '꺼짐' 상태를 나타내며, 이진 코드는 기계어 명령과 데이터를 컴퓨터에 전달한다. 어셈블리 언어는 1950년대에 등장한 기계어의 상위 수준 표현 방식이다. 이 언어는 사람이 이해하기 쉬운 기호로 기계어 명령을 대체하여 프로그래밍을 수행한다. 기계어와 일대일 대응 관계를 가지며, 기계어 명령과 1:1로 매칭되는 어셈블리 명령어가 있다. 따라서, 이 언어를 사용하면 기계어에 비해 상대적으로 읽기 쉽고 이해하기 쉬운 코드를 작성할 수 있다. 또한, 하드웨어와 직접적으로 상호 작용할 수 있다. 1960년대부터는 고급 프로그래밍 언어들이 등장하기 시작했다. 이러한 언어들은 사람이 이해하기 쉽고 프로그램을 작성하기 쉬운 기능을 제공했다. 고급 프로그래밍 언어들은 컴파일러나 인터프리터 등의 도구를 통해 기계어로 변환되어 실행된다. 예를 들어, FORTRAN(FORMULA TRANslating system)은 수치 계산을 위한 언어로, COBOL은 비즈니스 운용 프로그램을 작성하기 위한 언어로 개발되었다.
특징
1세대 프로그래밍 언어라고도 한다. 0과 1로 이루어진 이진 코드로 표현된다. 컴퓨터는 이 코드를 해석하여 명령어와 데이터를 이해하고 실행한다. 이진 코드는 컴퓨터의 전기 신호를 표현하는 방식으로, 전기 신호의 상태를 '켜짐'과 '꺼짐'으로 나타낸다. 기계어는 해당 컴퓨터 아키텍처에서 지원하는 명령어 세트를 사용한다. 이는 컴퓨터에서 수행할 수 있는 연산과 동작을 나타내는 명령어의 집합이다. 예를 들어, 산술 연산, 논리 연산, 메모리 접근 등의 명령어가 포함될 수 있다. 메모리에 직접 접근하여 데이터를 읽고 쓸 수 있다. 따라서, 그 어떤 프로그래밍 언어보다 수행 속도가 빠르다. 또한, 프로그램 크기도 잘 알려진 고급 언어보다 작다. 메모리 주소 지정 방식은 해당 컴퓨터 아키텍처에 따라 다를 수 있으며, 주소 계산을 위해 레지스터와 포인터를 사용할 수 있다. 기계어는 레지스터를 활용하여 데이터를 저장하고 처리할 수 있다. 레지스터는 고속으로 액세스할 수 있는 기억장치로, 컴퓨터가 직접적으로 사용하는 데이터 저장 공간이다. 기계어 명령어는 레지스터 간의 데이터 전송, 산술 논리 연산 등을 수행할 수 있다. 기계어는 특정 컴퓨터 아키텍처와 밀접한 관련이 있다. 따라서 한 아키텍처에서 작성된 기계어 코드는 다른 아키텍처에서 실행할 수 없다. 예를 들어, x86 아키텍처에서 작성된 기계어 코드는 ARM 아키텍처에서 실행할 수 없다.
단점
이진 코드로 작성되어 있어서 사람이 직접 읽고 이해하기 어렵다. 0과 1로 이루어져 있으며, 직관적이지 않고 암호적인 특징을 갖는다. 프로그래머는 메모리 주소, 레지스터 이름, 명령어 코드 등 다양한 정보를 기억하고 이해해야 한다. 이는 기계어 프로그램의 가독성을 낮추고, 코드를 이해하고 유지 보수하는 과정을 어렵게 만든다. 특정 아키텍처와 밀접하게 관련되어 있다. 따라서 한 아키텍처에서 작성된 기계어 코드는 다른 아키텍처에서 실행될 수 없다. 다시 말해, 이식성에 제한이 있다. 다른 플랫폼에서 실행하기 위해서는 새로운 코드를 작성해야 한다. 개발 비용과 시간을 증가시키는 요인이 될 수 있다. 더 나아가, 하드웨어의 저수준 동작을 직접 제어하기 때문에 프로그래머는 모든 세부 사항을 고려해야 한다. 이는 코드 작성을 복잡하게 만들고, 프로그래머가 실수를 저지를 가능성을 높인다. 실수가 발생하면 프로그램이 예기치 않게 동작하거나 오작동할 수 있다. 기계어로 프로그램을 작성하는 것은 고급 언어에 비해 시간과 비용이 많이 들어간다. 추상화 수준이 낮고 저수준 명령어로 직접적인 제어가 필요하기 때문에 프로그램을 작성하는 데 더 많은 노력과 시간을 투자해야 한다. 따라서 개발 프로세스는 더 오래 걸리고 비용이 증가할 수 있다. 이 언어로 작성된 프로그램의 유지 보수는 더욱 어렵다. 추상화 수준이 낮아 코드 변경이 다른 부분에도 영향을 준다. 또한, 이진 코드를 직접 수정하고 디버깅하는 것은 오류를 발생시킬 가능성을 높여준다. 유지 보수 작업을 복잡하게 만들고 오류를 찾아 수정하는 과정을 어렵게 만든다.
결론
기계어는 컴퓨터의 핵심인 하드웨어와 직접적으로 연결되어 있으며, 컴퓨터의 동작을 제어하는 데 사용된다. 초기에는 기계어가 직접 사용되었으며, 어셈블리 언어의 등장으로 상대적으로 읽기 쉽고 이해하기 쉬운 형태로 변화했다. 하지만 이진 코드로 표현되어 있고 읽기 어렵기 때문에 보다 추상화된 고급 언어들이 개발되었다. 지금은 CPU 아키텍처를 설계하는 데 기업체에서 활용하고 있다.
댓글
댓글 쓰기
안녕하세요. 부투하는코린이 입니다. 욕설, 비방, 관련없는 광고성 댓글은 삭제될 수 있습니다. 감사합니다.