>  기사  >  컴퓨터 언어에는 어떤 종류가 있나요?

컴퓨터 언어에는 어떤 종류가 있나요?

小老鼠
小老鼠원래의
2023-06-29 17:46:4411381검색

컴퓨터 언어 유형에는 다음이 포함됩니다. 1. 고급 언어 및 저수준 언어 2. 동적 유형 및 정적 유형 3. 필수 유형 및 약한 유형 4. 컴파일, 해석, 반 해석 .객체 지향형과 프로세스 지향형을 구분합니다.

컴퓨터 언어에는 어떤 종류가 있나요?

컴퓨터 언어의 세 가지 주요 범주 ​​(레벨별로 구분)

하드웨어와의 상관 관계가 점차 감소합니다.

컴퓨터 언어에는 다양한 기능과 구현 방법에 따라 여러 유형이 있으며 크게 나눌 수 있습니다. 기계어 어셈블리 언어와 고급 언어라는 세 가지 주요 범주로 나뉩니다.

1. 기계어, 번역 없이 컴퓨터가 직접 인식할 수 있는 언어를 기계어(이진 코드 언어라고도 함)라고 합니다. 이 언어는 이진수 0 또는 1로 구성된 일련의 명령어입니다.

2. 어셈블리 언어는 기계어를 대체하기 위해 영어 문자나 기호 문자열을 사용합니다. 이해하고 기억하기 어려운 기계어를 해당 관계에 따라 어셈블리 언어로 변환합니다. 언어.

3. 고급 언어는 언어가 아니라 언어 클래스의 총칭입니다. 어셈블리 언어보다 인간이 사용하는 언어에 더 가깝고 이해하기 쉽고 기억하기 쉽습니다. 고급 언어는 컴퓨터 아키텍처 및 명령어 세트와 관련이 없기 때문에 이식성이 좋습니다. 프로그램 개발에는 C, C+, Java, VB, C#, Python, Ruby 등 고급 언어가 널리 사용됩니다.

여러 가지 공통 분류 방법 분류

1. 고급 언어와 저급 언어 ​​

일반적인 저급 언어로는 기계어, 어셈블리 언어 등이 있습니다. 예: c, c++, java, python, PHP, Ruby, go, kotlin, Swift.

기계코드, 컴퓨터가 직접 인식할 수 있는 2차 코드. 아무리 언어가 발달해도 컴퓨터가 인식하고 실행할 수 있도록 2차 파일로 변환해야 합니다.

어셈블리, 기계 명령어의 opcode를 대체하기 위해 니모닉 사용, 주소 기호를 사용하여 명령어 또는 피연산자의 주소 대체를 위한 기호 또는 라벨, 장치마다 다른 명령어 세트가 있음

프로그래밍을 저장하기 위해 고급 언어 불필요한 작업 세부 사항을 제거하고 코드 양을 절약하며 읽기 쉽고 유지 관리가 쉽고 사용자 친화적입니다.

고급 언어와 저급 언어의 차이점: 대부분의 고급 언어는 하드웨어와 직접 상호 작용할 수 없으므로 프로그램의 실행 속도가 느려집니다. 한마디로 더 가까운 언어입니다. 인간의 본성은 더욱 진보했습니다.

고급 언어 컴파일의 6가지 과정

컴파일은 고급 언어 소스 프로그램을 타겟 프로그램으로 번역하는 과정입니다.

전체 프로세스는 일반적으로 어휘 분석, 구문 분석, 의미 분석, 중간 코드 생성, 코드 최적화 및 대상 코드 생성의 6단계로 나눌 수 있습니다.

    어휘 분석, 어휘 분석은 첫 번째 단계입니다. 이 단계의 작업은 소스 프로그램을 왼쪽에서 오른쪽으로 문자별로 읽고 소스 프로그램을 구성하는 문자 스트림을 스캔 및 분해하여 각 문자를 식별하는 것입니다. . 단어.
  • 문법 분석, 문법 분석 작업은 어휘 분석을 기반으로 단어 프로그램을 문법 구문으로 분해하는 것입니다.
  • 의미 분석, 의미 분석은 코드 생성 단계에서 소스 프로그램의 의미 오류를 검토하고 유형 정보를 수집하는 것입니다.
  • 중간 코드 생성, 위에서 언급한 구문 분석 단계 및 기타 작업 후에 일부 컴파일러는 소스 프로그램을 내부 표현으로 변환합니다. 이 내부 표현을 중간 언어 또는 중간 코드라고 합니다. 중간 코드 생성 단계에서는 구문 및 의미 분석을 기반으로 소스 프로그램을 내부 표현으로 추가로 변환합니다. 일반적으로 생성하고 대상 코드로 번역하는 것은 쉽지만 모든 언어가 이 단계를 거쳐야 하는 것은 아닙니다.
  • 코드 최적화, 이 단계의 작업은 생성된 대상 코드를 보다 효율적으로 만들기 위한 목적으로 이전 단계에서 생성된 중간 코드를 변환하거나 변환하는 것입니다. 코드 최적화 단계에서는 타겟 코드 생성 시 더 많은 시간과 공간을 절약하기 위해 이전 단계에서 생성된 중간 코드를 변환하거나 변환할 필요가 없습니다.
  • 대상 코드 생성, 이 단계의 작업은 중간 코드를 특정 기계의 절대 명령 코드 또는 재배치 가능한 명령 코드 또는 조립 명령 코드로 변환하는 것입니다.
  • 2. 동적 유형과 정적 유형

동적 언어는 프로그램 실행 중에 변수에 대한 데이터 유형을 지정하는 것을 의미하지만, 정적 유형 언어는 프로그램 코드를 작성할 때 그 반대입니다. 변수의 유형을 지정해야 합니다. 이 언어에는 cc++java

3. 강제 유형과 약한 유형이 있습니다

C 언어의 변수는 float 유형과 같이 하나의 유형으로만 정의될 수 있다는 것을 알고 있습니다. 그러면 부동 소수점 유형만 가능합니다. 변환 없이는 int 유형을 지정할 수 없습니다. 이는 필수 유형의 구체적인 구현입니다.

그리고 파이썬은 유형 경계 없이 임의로 복사할 수 있는 파이썬의 변수가 아닙니다. 이것은 약한 타이핑입니다

강제 타이핑은 더 엄격하고 오류가 덜 발생하지만 약한 타이핑 언어는 더 우아하고 쓰기 편합니다

4 컴파일 및 해석 반 컴파일 및 반 해석

소스 프로그램의 경우, 컴파일된 언어는 실행 프로그램에 들어있습니다. 소스파일은 기계어로 한번에 변환되고, 해석된 언어는 컴파일과 해석이 동시에 진행됩니다

컴파일된 언어는 인터프리터와 분리될 수 없기 때문에 런타임 시 인터프리터 언어가 느려지는 결과를 낳습니다. 인터프리터가 있는 한 인터프리터 언어는 이식하기가 더 편리하지만, 컴파일된 언어는 컴파일해야 합니다. 프로그램을 디버깅할 때 작업이 지루하고 느립니다

컴파일된 언어는 cc++ 등에서 찾을 수 있습니다.

해석된 언어는 Python, JavaScript, Perlshell 등에서 찾을 수 있습니다.

그리고 java는 반컴파일 및 반해석 언어. Java는 소스 파일을 바이트코드로 변환합니다. 즉, .class 파일은 프로그램이 실행될 때 바이너리 파일로 변환됩니다. C#의 .net과 조금 다릅니다. C#으로 컴파일된 .net 대상 코드는 바이너리 파일의 이식성에 가깝고 Java만큼 좋지 않습니다. Java는 "한 번 컴파일하고 어디서나 실행"합니다. 어디서나 컴파일할 수 있습니다."

5. 객체지향과 프로세스지향

프로세스지향은 목표에 도달하기 위한 길을 어떻게 개척할지 결정하는 것이고, 객체지향은 특정 ​​기능을 가진 이미지를 사용하는 것과는 다른 개념입니다.

C++는 캡슐화가 적용된 부분적 객체 지향 Java 언어, 완전한 객체 지향 C 언어 및 프로세스 지향 언어입니다.

여기에도 함수형이 있습니다

프로그래밍 언어 패러다임의 동적, 정적, 강약 유형의 개념 - 바람은 맑고 마음은 날고 있습니다 - Blog Park 동적, 정적 및 강약 유형의 개념 프로그래밍 언어 패러다임은 언어를 배울 때 자주 접하게 됩니다. Java는 객체 지향 언어, C는 프로세스 지향 언어, Lisp는 기능적 프로그래밍 언어, Scala는 정적 언어입니다. 이것이 의미하는 바는 무엇입니까? //www.cnblogs.com/binbinbin/articles/14012424.html

6. 컴파일된 유형과 해석된 유형의 구별

1. 컴파일된 프로그램은 전체적으로 컴파일되어 타겟 코드를 형성한 후 한번에 실행됩니다.

통역사가 해석과 실행을 동시에 합니다. 문장을 설명하고 이를 컴퓨터에 제출하여 실행하는 것은 대상 프로그램을 형성하지 않습니다. 외국어 번역의 '통역'과 마찬가지로 번역된 텍스트를 생성하지 않습니다.

2. 컴파일이란 첫 번째 컴파일을 제외하면 항상 타겟 코드 + 기계 실행 = 결과

그리고 인터프리터는 항상 코드 + 인터프리터 + 기계 실행 = 결과

자세히 말하면 컴파일러는 각 부분을 변환합니다. 소스 프로그램 각 명령문은 기계어로 컴파일되어 바이너리 파일로 저장됩니다. 이런 방식으로 컴퓨터는 런타임에 기계어로 프로그램을 직접 실행할 수 있어 매우 빠릅니다.

인터프리터는 프로그램을 하나씩 컴퓨터가 실행할 수 있는 기계어로 해석하기 때문에 실행 속도가 컴파일된 프로그램만큼 빠르지는 않습니다. 컴퓨터는 우리가 작성한 문장을 직접 인식하고 실행할 수 없고 기계어(바이너리 형식)만 인식할 수 있기 때문입니다

7. 레벨별 분류 이유

1. 중간 코드

중간 코드 생성은 중간 코드를 생성하기 위한 것입니다. 과정을 코딩합니다. 소위 "중간 코드"는 간단한 구조와 명확한 의미를 지닌 표기 시스템입니다. 이 표기 시스템의 복잡성은 소스 프로그램 언어와 기계 언어 사이에 있으며 이를 대상 코드로 번역하기 쉽습니다. 또한 중간 코드 수준에서 기계 독립적인 최적화를 수행할 수 있습니다.

어셈블리 코드는 대상 코드이고 중간 코드는 이론적으로 기계 독립적입니다.

컴파일 원리에서 지식 삼항, 사차, 역 폴란드어 등은 중간 코드를 나타냅니다.

2. 객체 코드

객체 코드는 컴퓨터 공학에서 소스 코드를 처리한 후 생성한 코드를 의미하며 일반적으로 기계어 또는 기계어에 가까운 코드로 구성됩니다. 개체 파일은 개체 코드를 저장하는 컴퓨터 파일입니다. 바이너리 파일이라고도 합니다. 개체 파일에는 컴퓨터의 중앙 프로세서에서 직접 실행하고 런타임 중에 코드에서 사용할 수 있는 기계어 데이터가 포함되어 있습니다. 예를 들어 연결 또는 디버깅을 위한 프로그램 기호, 기타 디버깅 정보 등이 있습니다. 오브젝트 파일은 소스 코드 파일로부터 프로그램 파일을 생성하는 과정의 중간 산물입니다. 링커는 오브젝트 파일을 서로 연결하여 실행 파일이나 라이브러리 파일을 생성합니다. 객체 파일의 유일한 요소는 기계어 코드입니다. 예를 들어 임베디드 시스템의 객체 파일에는 기계어 코드만 포함될 수 있습니다.

대상 코드는 일반적으로 기계어, 어셈블리 언어, 조립할 기계어 모듈의 세 가지 형태를 취합니다.

타겟 코드 생성 시 고려해야 할 문제

(1) 생성된 타겟 코드를 짧게 만드는 방법

(2) 레지스터를 최대한 활용하여 메모리 액세스 횟수를 줄이는 방법

(3) 방법 시스템 전문성을 최대한 활용하세요.

어셈블리 언어에서는 레지스터 AX, 명령어 레지스터 IR 등이 직접 사용되는 경우가 많습니다. 다양한 레지스터 매개변수가 다르기 때문에 어셈블리 언어가 하드웨어 언어에 가깝습니다.

위 내용은 컴퓨터 언어에는 어떤 종류가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.