대부분의 절차 적 언어의 기본은 거의 동일합니다.
그들은 다음을 제공합니다.
- 스칼라 데이터 유형 : 일반적으로 부울, 정수, 부동 및 문자
- 복합 데이터 유형 : 배열 (문자열은 특수한 경우) 및 구조
- 기본 코드 구성 : 스칼라에 대한 산술, 배열 / 구조 액세스, 할당
- 간단한 제어 구조 : if-then, if-then-else, while, for 루프
- 코드 블록 패키지 : 함수, 매개 변수가있는 프로 시저
- 범위 : 식별자가 특정 의미를 갖는 영역
이것을 이해하면 지구상의 언어 중 90 %를 잘 이해하게됩니다. 이 언어들을 조금 더 이해하기 어렵게 만드는 것은 사람들이 동일한 기본 말을하는 데 사용하는 엄청나게 다양한 이상한 구문입니다. 일부는 홀수 구두점을 포함하는 간결한 표기법을 사용합니다 (APL은 극단적 임). 일부는 많은 키워드를 사용합니다 (COBOL은 훌륭한 대표자 임). 그다지 중요하지 않습니다. 중요한 것은 언어 자체만으로도 머리카락을 찢지 않고 복잡한 작업을 수행 할 수있을만큼 완벽하다는 것입니다. (Window DOS 쉘 스크립트에서 심각한 문자열 해킹을 코딩하십시오 : Turing은 가능하지만 모든 것이 실제로 나쁩니다).
보다 흥미로운 절차 적 언어 제공
- 중첩 또는 어휘 범위, 네임 스페이스
- 동적 스토리지 할당을 통해 한 엔티티가 다른 엔티티를 참조 할 수 있도록하는 포인터
- 관련 코드 패키징 : 패키지, 메소드가있는 객체, 특성
- 보다 정교한 제어 : 재귀, 연속, 폐쇄
- 특수 연산자 : 문자열 및 배열 연산, 수학 함수
기술적으로 랭 게이지의 속성이 아니라 그러한 언어가 존재하는 생태계의 속성이지만 개발 도구의 일부로 언어에 쉽게 액세스하거나 제공되는 라이브러리입니다. 광범위한 라이브러리 기능을 갖추면 라이브러리가하는 일을 다시 만들 필요가 없기 때문에 애플리케이션 작성을 단순화 / 빠르게 할 수 있습니다. Java와 C #은 그 자체로는 좋은 언어로 널리 알려져 있지만, 실제로 유용한 것은 그것들과 함께 제공되는 거대한 라이브러리와 쉽게 구할 수있는 확장 라이브러리입니다.
이해하기 어려운 언어는 절차 적이 지 않은 언어입니다.
- 과제 나 부작용이없는 순수하게 기능적인 언어
- 기호 계산 및 통일이 발생하는 Prolog와 같은 논리 언어
- 패턴 일치 언어-문제에 일치하는 모양을 지정하고 종종 동작에 의해 동작이 트리거됩니다.
- 구속 조건 언어 : 관계를 지정하고 방정식을 자동으로 풀 수 있습니다.
- 모든 것이 병렬로 실행되는 하드웨어 설명 언어
- SQL, Colored Petri Nets 등과 같은 도메인 별 언어
언어에는 두 가지 주요 표현 스타일이 있습니다.
- 식별자 이름 엔터티 및 정보 흐름이 식별자를 사용하여 엔터티 이름을 지정하는 수식 (Java, APL, ...)으로 암시 적으로 인코딩되는 텍스트 기반
- 엔터티가 노드로 그려지고 엔터티 간의 관계가 해당 노드 사이의 명시적인 호로 그려지는 그래픽 (UML, Simulink, LabView)
그래픽 언어는 종종 텍스트 하위 언어를 노드와 원호의 주석으로 허용합니다. Odder 그래픽 언어는 노드와 호에 그래프 (텍스트 :)를 재귀 적으로 허용합니다. 정말 이상한 그래픽 언어를 사용하면 주석 그래프가 주석이 달린 그래프를 가리킬 수 있습니다.
이러한 언어의 대부분은 매우 적은 수의 계산 모델을 기반으로합니다.
- 람다 미적분학 (Lisp 및 모든 기능적 언어의 기초)
- 포스트 시스템 (또는 문자열 / 트리 / 그래프 재 작성 기술)
- 튜링 머신 (상태 수정 및 새 메모리 셀 선택)
대부분의 산업계에서 절차 적 언어와 복잡한 제어 구조에 중점을두면,이 범주에서 더 흥미로운 언어 중 하나를 잘 배우면, 특히 객체 지향 유형이 포함 된 경우 잘 학습 할 수 있습니다.
나는 특히 훌륭한 책인 컴퓨터 프로그램의 구조와 해석 에서 체계를 배우는 것이 좋습니다
. 여기에는 이러한 모든 기본 개념이 설명되어 있습니다. 이 내용을 알면 구피 구문을 제외하고 다른 언어는 매우 간단 해 보일 것입니다.