프로그래밍 언어의 간략한 역사. 프로그래밍 언어: 등장한 이유, 저명한 대표자, 언어 선택 방법

비고 1

첫 번째 프로그램이 작동하려면 컴퓨팅 장치의 전면 패널에 키 스위치를 설정해야 했습니다. 당연히 이 방법을 사용하여 작은 프로그램만 작성할 수 있습니다. 본격적인 프로그래밍 언어를 만들려는 첫 번째 시도 중 하나는 1943년에서 1945년 사이에 독일 과학자 Konrad Zuse에 의해 이루어졌습니다. Plankalkul 언어를 개발했습니다. Plankalkul은 매우 유망한 언어로 실제로는 고급 언어였지만 전쟁 중에 제대로 구현되지 않았고 설명이 1972년에 출판되었습니다.

기계 코드. 어셈블러

프로그래밍 언어의 역사는 기계어의 발달로 시작됩니다. 논리적 0과 1의 언어입니다. 이 언어로 작성하는 것은 매우 어렵고 지루했습니다.

1940년대 후반에 프로그래머의 작업을 용이하게 하기 위해. 어셈블리 언어가 개발되었습니다. 명령을 나타내는 이진수 대신 짧은 단어나 약어가 작성되었습니다. 어셈블리 언어는 가장 낮은 수준의 언어인 기계어에 가깝기 때문에 프로그래머가 낮은 수준의 프로그래밍 언어로 간주합니다. 어셈블러로 작성된 프로그램은 특정 프로세서의 특성에 직접적으로 의존하기 때문에 이를 기계 지향 언어라고 합니다.

어셈블러에서 프로그램을 작성하는 것은 다소 어려운 작업이며 컴퓨터 장치에 대한 지식도 필요합니다. 그럼에도 불구하고 어셈블리 언어 프로그램이 가장 효율적이고 효율적입니다.

알고리즘 언어

프로그래밍 개발 과정에서 자연어와 유사하고 기계 명령으로 직접 작업할 수 없는 보다 발전된 새로운 프로그래밍 언어를 개발할 필요가 있게 되었습니다. 고급 언어로 알려지게 되었습니다. 고급 언어는 알고리즘 설명에 중점을 두므로 알고리즘 언어라고 합니다. 이러한 언어의 장점은 특정 컴퓨터에서 가시성과 독립성을 높일 수 있다는 것입니다.

컴퓨터는 기계어만 인식하기 때문에 알고리즘 언어로 작성된 프로그램은 실행 전에 특수 프로그램인 번역기에 의해 기계어로 번역되어야 한다. 번역기에는 알고리즘 언어의 모든 규칙과 다양한 구성을 기계어로 변환하는 방법이 포함되어 있습니다. 방송에는 두 가지 유형이 있습니다.

  • 컴파일은 프로그램을 실행하는 방법으로 전체 프로그램 텍스트의 번역이 조합된 경우에만 프로그램 명령이 실행됩니다.
  • 해석은 프로그램의 명령을 번역하여 즉시 실행하는 프로그램을 실행하는 방법입니다.

비고 2

알고리즘 언어로 작성된 프로그램의 장점은 쓰기의 상대적 단순성, 쉬운 가독성 및 수정 가능성으로 인해 프로그램 작업이 간단하다는 것입니다. 단점은 다음과 같습니다. 방송을 위한 추가 시간 및 메모리.

구조화된 프로그래밍

1954년, 최초의 고급 언어 컴파일러 개발이 시작되었습니다. 2년 후, Fortran 언어가 등장했습니다(FORMula TRANslator - "수식 번역기"). 이 언어에는 개발을 크게 단순화하는 기능이 포함되어 있지만 Fortran에서 프로그래밍하는 것은 쉬운 일이 아니었습니다. 짧은 프로그램에서는 쉽게 이해되지만 큰 프로그램에서는 읽을 수 없게 되었습니다. 그럼에도 불구하고 언어는 꽤 성공적이었고 많은 버전이 출시되었습니다.

문제는 구조적 프로그래밍 언어의 개발 후에 해결되었습니다. 프로그램 블록, 독립 서브루틴, 재귀 및 지역 변수 지원, 무조건 점프 연산자(GoTo) 부재를 생성할 수 있는 기능이 있습니다. 따라서 이러한 언어는 프로그램을 구성 요소로 분할할 수 있는 가능성을 지원하기 시작했습니다.

10년 동안 상당히 많은 수의 새로운 언어가 만들어졌습니다.

  1. Algol(1958)은 별개의 블록으로 구성된 알고리즘을 작성하기 위한 것이었습니다.
  2. Cobol(1959)은 관리 및 비즈니스에서 대량 데이터 처리에 사용되었습니다.
  3. Basic(1965)에서는 간단한 프로그램을 작성할 수 있었고, 프로그래밍의 기초를 가르치는 데 사용되었습니다.

생성된 언어 중 구조화된 언어는 거의 없었습니다. Lisp, Prolog, Forth 등의 특수 언어도 생성되었습니다. 특히 주목할만한 것은 과학자 Blaise Pascal의 이름을 따서 명명된 Pascal(1970)로, 학습과 다양한 복잡성 문제 해결에 사용되었습니다. Pascal 프로그램은 읽기 쉽고 오류를 빠르게 찾고 수정할 수 있으며 잘 구성되어 있습니다. 위의 모든 것은 널리 사용되었으며 오늘날에도 교육 기관에서 활발히 사용됩니다.

1972년에 C 언어가 등장하여 프로그래밍의 성공적인 단계였습니다. 이 언어는 많은 언어의 장점을 결합했으며 다양한 혁신을 가졌습니다. 광범위한 가능성, 구조화 및 연구의 상대적 단순성으로 인해 해당 언어가 빠르게 인식되고 주요 언어 중 하나의 자리를 차지할 수 있었습니다.

구조화된 프로그래밍의 출현으로 우수한 결과를 얻었지만 길고 진지한 프로그램을 작성하는 것은 여전히 ​​어려웠습니다.

객체 지향 프로그래밍(OOP)

1970년대부터 객체 지향 프로그래밍(OOP)의 기반이 마련되었으며, 이는 데이터와 처리를 위한 서브루틴이 공식적으로 연결되지 않은 절차적 프로그래밍 개발의 결과로 나타났습니다.

OOP에는 다음과 같은 기본 개념이 포함됩니다.

  • 등급- 아직 존재하지 않는 객체의 모델. 사실, 그것은 구조를 설명하는 개체의 다이어그램입니다.
  • 객체– 클래스의 인스턴스, 클래스의 인스턴스가 생성될 때 나타나는 컴퓨팅 시스템의 주소 공간에 있는 엔터티.
  • 추출- 다른 모든 대상과 구별되는 경계를 명확하게 정의하는 특성을 대상에 할당합니다. 기본 아이디어는 복합 데이터 개체가 사용되는 방식을 더 단순한 개체로 구현 세부 사항과 분리하는 것입니다.
  • 캡슐화- 프로그램의 나머지 부분에서 객체의 데이터를 숨기고 객체의 무결성과 독립성을 보장하기 위해 클래스에서 속성(데이터)과 메서드(서브루틴)를 결합(객체의 속성 변경은 특수 클래스 메서드).
  • 계승- 새로운 속성 및 메서드를 추가하여 기존 클래스(또는 클래스)를 기반으로 새 클래스를 설명할 수 있는 언어 메커니즘.
  • 다형성– 유형 및 내부 구조에 대한 정보를 얻지 않고 동일한 인터페이스를 가진 객체를 사용하는 시스템의 속성.

비고 3

1967년 Simula 언어가 등장했습니다. 이는 객체 지향 원칙이 제안된 최초의 프로그래밍 언어입니다. 그는 객체, 클래스, 가상 메서드 등으로 작업하는 것을 지원했지만 이러한 모든 기능은 동시대 사람의 가치 있는 평가를 받지 못했습니다. 그러나 이러한 개념의 대부분은 Alan Kay와 Dan Ingalls에 의해 처음으로 널리 퍼진 객체 지향 프로그래밍 언어가 된 Smalltalk 언어에 통합되었습니다.

현재 객체지향 패러다임을 구현하는 응용 프로그래밍 언어의 수는 다른 패러다임에 비해 가장 많다. OOP 개념을 지원하는 주요 언어는 C++, C#, Object Pascal(Delphi), Java 등입니다.

인터넷 개발

WWW(World Wide Web) 기술의 발달로 인터넷은 매우 대중화되었습니다. 인터넷 액세스, 웹 사이트 디자인, 리소스 액세스 등을 제공하기 위해 많은 보조 언어가 만들어졌습니다.

해석 언어인 Perl은 널리 보급되고 있으며 단순성과 다른 플랫폼으로의 쉬운 이식성으로 구별됩니다. 다양한 복잡성의 응용 프로그램 및 CGI 스크립트를 작성하도록 설계되었습니다. Java 언어도 널리 사용되며 인터넷의 개발 및 기능에 중요한 역할을 합니다.

1970년대 SQL 언어가 나타났습니다 - 데이터베이스에 액세스하고 작업하기 위해 만들어진 구조화된 쿼리 언어입니다.

웹 페이지용 코드를 작성하기 위해 텍스트 및 그래픽을 표시하고 장식하는 명령이 포함된 HTML 하이퍼텍스트 마크업 언어가 개발되었습니다. 사이트를 더 매력적이고 기능적으로 만들기 위해 다음을 사용합니다.

  • 사용자의 웹 브라우저에서 실행되고 주로 사이트의 모양과 느낌을 개선하고 사소한 작업을 수행하는 데 사용되는 JavaScript 스크립트입니다.
  • 서버 측에서 실행되고 이미 처리된 정보를 사용자의 브라우저로 보내는 PHP 스크립트. 동적 HTML 페이지, 방명록, 포럼 및 투표를 만드는 데 사용됩니다.
  • 주로 Perl, C/C++로 작성된 CGI 스크립트는 서버 측에서 실행되며 특정 사용자 작업에 의존합니다. PHP 스크립트와 같이 동적 HTML 페이지, 방명록, 포럼 및 설문 조사를 만드는 데 사용됩니다.

20세기의 50년대에 진공관에 컴퓨터가 등장하면서 프로그래밍 언어의 급속한 발전이 시작되었습니다. 그 당시에는 어떤 프로그램의 개발보다 훨씬 더 많은 비용이 드는 컴퓨터에는 매우 효율적인 코드가 필요했습니다. 이러한 코드는 언어로 수동으로 개발되었습니다. 어셈블러. 1950년대 중반 John Backus의 지도하에 알고리즘 프로그래밍 언어 FORTRAN이 IBM을 위해 개발되었습니다. 산술 표현식을 기계어로 변환하는 언어 개발이 이미 있었음에도 불구하고 조건 연산자 및 입력/출력 연산자를 사용하여 계산 알고리즘을 작성할 수 있는 기능을 제공하는 FORTRAN 언어(FORmula TRANslator)의 생성이 출발점이 되었습니다. 알고리즘 프로그래밍 언어의 시대.

혀로 포트란매우 효율적인 코드를 만들기 위한 요구 사항이 있었습니다. 따라서 많은 언어 구성이 원래 IBM 407 아키텍처를 고려하여 개발되었으며 이 언어 개발의 성공으로 인해 다른 컴퓨팅 시스템 제조업체가 자체 버전의 번역기를 만들기 시작했습니다. 그 당시 언어의 일부 가능한 통일을 목표로 1966년에 개발된 FORTRAN IV 언어가 FORTRAN 66이라는 첫 번째 표준이 되었습니다.

원래 IBM 아키텍처에 중점을 둔 FORTRAN 언어의 대안으로 ALGOL(ALGorithmic Language)은 50년대 후반 Peter Naur의 주도 하에 개발되었습니다. 이 언어의 개발자가 추구하는 주요 목표는 컴퓨팅 시스템의 특정 아키텍처에서 독립하는 것이었습니다. 또한 ALGOL 언어의 창시자들은 알고리즘 기술에 편리하고 수학에서 채택한 표기법에 가까운 표기법을 사용하는 언어를 개발하고자 했습니다.

FORTRAN 및 ALGOL 언어는 최초의 프로그래밍 지향 언어였습니다.

언어 PL/I 60년대 초에 등장한 첫 번째 버전은 원래 IBM 360에 중점을 두었고 같은 해에 개발된 COBOL 언어의 일부 기능으로 FORTRAN 언어의 기능을 확장했습니다. IBM 컴퓨터와 EC 시리즈 기계에서 작업한 프로그래머들 사이에서 PL/I 언어의 인기에도 불구하고 현재로서는 순전히 이론적인 관심 대상입니다.

60년대 후반 Nayard와 Dahl의 주도 하에 사용자 정의 데이터 유형의 개념을 사용하여 Simula-67 언어가 개발되었습니다. 사실, 클래스라는 개념을 사용한 최초의 언어입니다.

70년대 중반에 Wirth는 언어를 제안했습니다. 파스칼즉시 널리 사용되었습니다. 동시에 미국 국방부의 주도로 프로그래머이자 Byron 경의 딸인 Ada Lovelace를 기리기 위해 Ada라는 고급 언어를 만드는 작업이 시작되었습니다. 언어의 생성은 요구 사항의 정의와 사양의 개발로 시작되었습니다. 4개의 독립적인 그룹이 프로젝트에 참여했지만 모두 Pascal 언어를 기본으로 사용했습니다. 1980년대 초, 최초의 상용 언어 컴파일러가 개발되었습니다. 에이다.

범용 프로그래밍 언어 와 함께 Denis Ritchie와 Ken Thompson이 70년대 중반에 개발했습니다. 이 언어는 널리 사용되는 시스템 프로그래밍 언어가 되었으며 한때 UNIX 운영 체제의 커널을 작성하는 데 사용되었습니다. C 언어 표준은 1982년 ANSI Standards Institute의 작업 그룹에 의해 개발되기 시작했습니다. C 언어에 대한 국제 표준은 1990년에 채택되었습니다. C 언어는 C++ 및 Java 프로그래밍 언어 개발의 기초를 형성했습니다.

알고리즘 언어와 함께 비즈니스 정보 처리를 위한 언어와 인공 지능 언어가 병렬로 개발되었습니다. 첫 번째는 COBOL(COMmon Business Oriented Language)이고 두 번째는 COBOL 언어입니다. LISP(목록 처리) 및 프롤로그. J. McCarthy의 주도 하에 60년대에 개발된 LISP 언어는 게임 이론에서 널리 응용된 최초의 기능 목록 처리 언어였습니다.

개인용 컴퓨터의 출현으로 언어는 통합 개발 환경의 필수적인 부분이 되었습니다. VBA(Visual Basic for Application) 등 다양한 오피스 프로그램에서 사용되는 언어가 있습니다.

90년대에는 인터넷의 보급과 함께 분산 데이터 처리의 가능성이 확대되고 있으며, 이는 프로그래밍 언어의 발달에 반영되고 있습니다. 다음과 같은 서버 애플리케이션 구축에 중점을 둔 언어가 있습니다. 자바, 그리고 PHP, 문서 설명 언어 - HTML그리고 XML. 기존의 C++ 및 파스칼 프로그래밍 언어도 변화를 겪고 있습니다. 프로그래밍 언어는 언어 자체의 기능뿐만 아니라 프로그래밍 환경에서 제공하는 클래스 라이브러리를 의미하기 시작했습니다. 강조점은 프로그래밍 언어 자체의 사양에서 분산 응용 프로그램의 상호 작용을 위한 메커니즘의 표준화로 옮겨졌습니다. 분산 개체의 상호 작용을 지정하는 COM 및 CORBA와 같은 새로운 기술이 나타납니다.

컴퓨터는 여전히 사람들 사이의 의사 소통에 사용되는 자연어에 대한 이해가 부족합니다. 적어도 그들은 아직 이해하는 법을 배우지 못했습니다.

결과적으로 사람들은 기계어를 잘 이해하지 못합니다. 따라서 사람과 컴퓨터 사이의 사고 모델에서 이해의 구멍을 덮는 프로그래밍 언어가 만들어졌습니다.

프로그래밍 언어는 다음과 같습니다.

  • 단순한,
  • 복잡하고
  • 이해할 수 없음(예: 그래픽).

프로그래밍 언어 출현의 역사

수백 개의 프로그래밍 언어가 현재 사용 중이지만 이러한 언어는 더 이상 사용되지 않습니다. 시간이 지남에 따라 새로운 작업을 위해 새로운 프로그래밍 언어가 개발되었습니다.

제로 제너레이션

  • (전기) ,
  • 자체 장치의 구조로 프로그래밍
  • 고도로 전문화된
  • 프로그래밍 옵션이 제한됩니다.

자카드 직조기

이러한 기계의 예로는 프로그램된 장치가 있는 자카드 직기가 있습니다. 1804년 프랑스인 Joseph Marie Jaccard가 만들었습니다. 그건 그렇고, 그를 기리기 위해 무늬가있는 장식용 천을 자카드 또는 자카드라고합니다.

기계의 도움으로 아래 그림과 같이 천공 카드를 사용하여 천에 자수를 쉽고 대량으로 생산할 수 있었습니다.

쌀. 1. 자카드 직기용 천공 카드

천공된 카드에는 기계가 직물의 모든 패턴을 재현하도록 일련의 작업이 프로그래밍되었습니다.

배비지의 차

인터넷과 웹

전문 언어가 등장했습니다:

  • 자바스크립트.

많은 웹사이트가 PHP와 JavaScript로 작성되었습니다.

인터넷과 웹의 출현으로 일부 기존 언어는 새로운 틈새를 발견하고 웹 지향적이 되었습니다.

  • 루비,
  • 핀턴,
  • 자바.

2000년대까지 오래된 프로그래밍 언어는 점차 "죽어가고" 새로운 언어가 등장하지만 이러한 상황에 대해 일반적으로 받아들여지는 개념은 없습니다.

모든 프로그래밍 언어는 자체 수명 주기가 있는 인공 언어입니다. 마찬가지로 Windows 제품군의 운영 체제에도 고유한 수명 주기가 있습니다. .

프로그래밍 언어 수명 주기:

  • 창조,
  • 조기 채택(언어의 초기 사용),
  • (산업) 성공,
  • 멸종, 다른 언어의 변화.

현대 세계에서 소프트웨어(소프트웨어)의 주요 부분은 10-15개 언어로 작성되지만 우리가 알고 있는 시간이 지남에 따라 수백 개 이상의 프로그래밍 언어가 만들어졌습니다. 어떻게 든 300 또는 400 언어가 공식적으로 등록됩니다.

프로그래밍 언어란 무엇인가

언어는

  • 구문(프로그램 작성 규칙),
  • 의미론(쓰기 규칙에 포함되고 언어에 내장된 요소의 동작),
  • 런타임(런타임).

구문은 프로그램의 텍스트 표현 형식, 즉 작성 방법, 언어에 포함된 단어, 쉼표, 공백 등을 넣는 방법을 결정합니다.

Lisp의 예에 대한 구문

형식 문법이 있는 가장 간단한 프로그래밍 언어 중 하나는 목록 언어 LISP입니다.

쌀. 10. LISP 프로그램

LISP는 목록을 생성하는 아주 오래된 언어입니다. 그러한 언어의 문법은 위에서 아래로 읽는 목록의 문법입니다.

  • Lisp에는 표현식이 있습니다. 하나의 원자 또는 목록이 있을 수 있습니다.
  • 원자는 숫자 또는 문자이고,
  • 숫자 - 숫자, 즉 더하기 또는 빼기 숫자가 적어도 하나,
  • 기호 - 이것은 문자입니다. 원하는만큼 여러 번 할 수 있습니다.
  • list - 목록, 대괄호로 묶인 표현식이 두 번 이상 있습니다.

Lisp 프로그램은 목록의 목록입니다. Lisp에는 구두점이 없지만 대괄호는 있습니다. Lisp에는 마지막에 닫는 대괄호로만 구성된 2-3개의 시트가 있는 긴 프로그램이 있을 수 있습니다.

가장 간단한 Lisp 인터프리터는 길이가 19줄에 불과합니다! 다른 어떤 언어도 그런 사치를 감당할 수 없습니다.

의미론

문법이 문자, 숫자, 대괄호와 같은 표현 형식을 설명하는 경우 의미론은 프로그램이 작동하는 방식, 이러한 문자, 숫자, 대괄호가 의미하는 것, 작동하는 방식, 서로 상호 작용하는 방식 등을 설명합니다.

의미론을 나타내는 옵션은 상당히 제한적입니다.

의미론은 다음과 같을 수 있습니다.

  • 자연어, 인간의 언어로 설명합니다. 많은 언어는 이런 식으로 만 설명 될 수 있습니다. 사실 이것은 이런 저런 일이 이런 식으로 작동한다고 러시아어나 영어로 설명되어 있는 문서가 있을 때 하나의 명령이 하나의 작업을 수행하고 다른 명령이 이러한 작업을 수행하는 경우의 주요 경우입니다. 등 ;
  • 공식적으로 지정됨(예: 일부 계산의 경우 특수 언어에서 요소의 동작을 공식적으로 설명할 수 있음)
  • 원래 구현에 의해 정의됨(거의 사용되지 않지만 의미 체계가 너무 복잡하거나 그다지 중요하지 않은 경우 설명에 대한 "최후의 수단"임)
  • 일련의 테스트(케이스)에 의해 설명됩니다. 즉, 이러한 방식으로 작동해야 하며 이것이 작동하는 방식입니다.

의미론은 두 부분으로 나뉩니다.

  • 공전,
  • 동적.

정적 의미론

  • 어휘 구성에 의미를 부여합니다.
  • 변수 및 매개 변수의 허용 값을 결정합니다.
  • 예를 들어 구문을 사용하여 숫자가 있는 문자열을 추가할 수 없다는 것을 설명하는 것은 불가능합니다.

동적 또는 전면 런타임 시맨틱

  • 프로그램의 일반적인 특성을 결정합니다.
  • 기본 제공 작업 및 기본 제공 라이브러리가 작동하는 방식을 설명합니다. 이것은 프로그램이 작성된 후 어떻게 작동하고 작동하는지 이해하는 데 필요한 의미론의 주요 부분입니다.
  • 인터프리터에 대한 요구 사항을 지정합니다.

프로그래밍 언어의 데이터 유형 시스템

의미론의 중요한 부분은 유형 시스템입니다. 이것은 언어의 이데올로기와 서로 상호 작용하는 방식으로 작성된 방법에 대한 일련의 규칙 및 표현입니다.

일반적으로 프로그래밍 언어에는 문자열, 숫자, 목록 등의 데이터 유형 시스템이 있습니다. 예를 들어 모든 데이터가 단순히 포스 언어가 있습니다. 즉, 데이터 유형이 전혀 내장되지 않은 언어가 있습니다.

유형 시스템이 있는 경우 프로그래밍 언어는 아래에 나와 있는 두 개의 독립적인 클래스로 나눌 수 있습니다.

데이터 유형 시스템:

  • 입력 또는 입력되지 않은 언어
  • 정적 또는 동적 입력
  • 강하거나 약한 타이핑

타이핑이 정적이면 프로그램에 작성된 모든 유형 및 표현식은 실행 순간까지 알려져 있습니다. 즉, 함수, 클래스, 변수가 설명될 때 조건이 즉시 설정되거나 명시적으로 제공되므로 다음이 가능합니다. 그러한 구조의 유형은 처음부터 알려져 있습니다.

타이핑이 동적이라면 반대로 문맥 언어의 객체 유형은 실행 순간까지 알 수 없습니다. 즉, 함수의 유형이나 무엇이든 끝까지 알 수 없습니다.

강력한 유형 지정이란 엔터티에 유형이 있고 알려진 경우 이 유형을 대체할 수 있지만 개체 자체는 고정 유형을 가지며 변경되지 않음을 의미합니다.

약한 타이핑을 사용하면 컨텍스트와 개체로 수행하는 작업에 따라 개체 유형이 달라질 수 있습니다.

언어의 유형 체계를 주시해야 합니다. 프로그램 시작 시 눈에 띄지 않는 문자 하나만 잘못 지정했기 때문에 전체 표현식의 유형이 변경되어 매우 이상한 오류가 발생할 수 있습니다.

언어의 다음으로 중요한 특성은

프로그래밍 언어 패러다임

  • 그리스어에서 - 템플릿, 예, 샘플;
  • 이 언어로 프로그램을 작성하는 스타일을 정의하는 것은 아이디어와 개념의 시스템입니다. 언어가 프로그램을 작성하는 방식(위키)입니다.
  • 언어는 하나 이상의 패러다임(다중 패러다임)을 "선호"합니다.

주요 패러다임

  • 명령형: 프로그램은 컴퓨터, 데이터 등의 내부 상태를 변경하는 일련의 순차적 명령입니다. 즉, 프로그램은 명령입니다.
  • 기능적: 프로그램은 수학 함수의 집합입니다. 프로그램의 작업은 함수의 값을 계산하는 것입니다.
  • 객체 지향: 주제 영역은 속성과 메서드가 있는 객체를 사용하여 설명됩니다. 프로그램 - 객체의 상호 작용 과정;
  • 논리적: 프로그램은 주제 영역에 대한 일련의 명령문입니다. 프로그램의 작업은 이 주제 영역에 대한 진술의 진실성을 확립하는 것입니다.

종종 위에 나열된 패러다임 중 하나를 사용하여 동일한 실제 문제를 구현할 수 있습니다.

언어를 사용할 때 고려해야 할 언어의 또 다른 중요한 부분은 런타임(언어가 실행되는 방식)입니다.

런타임 - 프로그램 실행

프로그램은 다음과 같이 다양한 방식으로 실행할 수 있습니다.

  1. 프로그램을 실행하는 가장 간단하고 순진한 방법은 실행 시 소스 코드를 읽는 해석입니다. 이것이 경량의 스크립팅 언어가 작동하는 방식입니다. 프로그래머 자신도 작동합니다. 프로그램을 작성할 때 자신의 눈으로 자신의 프로그램을 보고 자신의 프로그램이 어떻게 작동하고 무엇을 해야 하는지 파악합니다.
  2. 프로그램을 실행하는 일반적인 방법은 실행하기 전에 별도의 단계인 기계어로 컴파일하는 것입니다. 별도의 도구가 있습니다. 컴파일러는 프로그램의 소스 코드를 읽고, 이를 사용하여 작업을 수행하여 현재 시스템에서 이해할 수 있는 기계어로 변환합니다. 그런 다음 이 코드는 하드웨어에서 직접 실행됩니다.
  3. 하이브리드 방식은 가상 머신에서 바이트 컴파일 및 실행입니다. 컴파일러는 소스 코드를 읽은 후 가상 머신에서 실행되는 바이트 코드가 생성됩니다.

이 세 가지 방법은 서로 다르며 다른 목적으로 사용됩니다. 이러한 기술을 결합할 수 있습니다. 인터프리터는 프로그램의 일부를 즉석에서 컴파일하여 더 빠르게 작동할 수 있습니다. 동적으로 생성된 코드는 컴파일 없이 해석될 수 있습니다.

언어 대표

C 언어

- 가장 인기 있는 것 중 하나, 물리적으로 작성된 코드 측면에서 가장 중요한 것 중 하나는 사실상 "우리의 모든 것"입니다.

1972년 Dennis Ritchie와 동료들이 만들었습니다. D. Ritchie는 또한 Linux 시스템과 기타 많은 유용한 것들을 만들었습니다.

  • 피할 수 없는,
  • 컴파일,
  • 수동 메모리 관리(언어에 내장된 일부 작업의 도움으로 변수에 대한 메모리 요소를 할당한 다음 더 이상 필요하지 않을 때 해제해야 함).

그건 그렇고, C는 여전히 관련성이 있으며 다음에 사용됩니다.

  • 시스템 프로그래밍(예: Linux 커널은 C로 작성됨),
  • 숫자 크런칭(소위 크러셔 숫자, 즉 속도가 중요한 대규모 계산의 경우),
  • 마이크로컨트롤러 및 임베디드 시스템의 프로그래밍.

C는 저수준 언어이며 사람의 얼굴을 가진 어셈블러라고 말할 수 있습니다. 사람이 거의 모든 C 구성을 어셈블러로 수동으로 변환할 수 있고 매우 이해할 수 있는 작업을 얻을 수 있기 때문입니다.

C 프로그램은 매우 컴팩트합니다. 유사한 프로그램이 어셈블러로 작성된 경우보다 훨씬 크지 않습니다. 동시에 C의 개발은 어셈블리보다 훨씬 빠릅니다.

따라서 C는 이제 속도가 요구되는 작업에 사용되며 메모리 관리가 매우 중요하며 프로그램 자체의 컴팩트한 크기가 매우 중요합니다. 어떤 종류의 장치에 내장된 작은 마이크로컨트롤러가 있는 경우 해당 프로그램은 어셈블러 또는 C로 작성될 가능성이 큽니다.

쌀. 11. 간단한 C 프로그램의 예.

자바

  • 1995년 창단,
  • 제작자 - James Gosling(James Gosling) 및 Sun Microsystems(Gosling은 이 회사에서 일함).
  • 객체 지향, 명령형(C는 명령형이지만 객체 지향형은 아님),
  • 강력하고 정적으로 형식화되고,
  • 가상 머신으로 바이트 컴파일,
  • 메모리 액세스 없음, 자동 가비지 수집(후자는 사용 가능한 메모리의 3분의 1 또는 4분의 1이 있는 경우 잘 작동함).

90년대에 JAVA는 다중 플랫폼 언어로 큰 인기를 얻었습니다. Windows, Linux 또는 Mac용과 같은 일부 플랫폼용 가상 머신을 작성한 후에는 재컴파일 없이 JAVA 프로그램을 실행할 수 있습니다. 따라서 이 언어는 다른 플랫폼(다른 버전의 Windows, 다른 Mac)이 있던 웹 시대에 인기가 있었습니다. JAVA 프로그램은 여러 플랫폼에서 빠르고 상당히 잘 작동했습니다.

다음 용도로 사용됩니다.

  • 웹 프로그래밍을 포함한 애플리케이션 프로그래밍,
  • 임베디드 시스템(C가 마이크로컨트롤러에 사용되는 경우 JAVA는 휴대전화, 터미널 등에 사용됨),
  • 많은 수의 사용자가 있는 고부하 시스템(은행 프로그램, 항공 교통 관제 시스템 등).

Java 언어 사양과 다양한 JVM 구현을 구별해야 합니다.

  • Sun JDK(Sun, 현재 Oracle),
  • IBM JDK(돈으로 판매됨),
  • OpenJDK(완전 무료)
  • 등.

쌀. 12. 간단한 JAVA 프로그램의 예.

그림에서 볼 수 있듯이. 12, 간단한 액션을 완성하려면 많은 글자를 써야 합니다. Java는 한때 Cobol을 나쁜 언어로 만든 것과 동일한 부정적인 속성을 포함하고 있기 때문에 종종 새로운 Cobol이라고 합니다.

그럼에도 불구하고 JAVA는 매우 인기가 있으며 특히 운영 체제의 클라이언트 부분이 작성됩니다.

리스프

  • 그는 정말로 완성한다 리스로서(LisP);
  • 1958년에 만들어졌습니다.
  • 제작자 - John McCarthy;
  • 다소 이상한 구문에도 불구하고 순수한 함수형 언어;
  • 강력하고 동적으로 유형이 지정됩니다.
  • 일반적으로 해석됨;
  • 메모리 액세스 없음, 가상 머신이 아닌 인터프리터에 있는 자동 가비지 수집.

다음 용도로 사용됩니다.

  • 과학 프로그래밍 및 연구;
  • 인공 지능 - Lisp는 검색 초기에 지능으로 만들어졌습니다. 1950년대 후반과 1960년대 초반에는 과학계에서 인공지능이 곧 만들어질 것이라는 강한 느낌이 있었습니다. 그런 다음 인공 지능의 핵심 기능은 자연어, 텍스트, 읽기, 말하기 및 합리적인 일을 처리하는 능력이라고 믿었습니다. Lisp는 텍스트에서 의미론적 데이터를 처리하도록 만들어졌으며 이러한 작업을 잘 수행할 수 있습니다.
  • 어떤 것이든 일반적으로 매우 효과적으로 사용되지는 않습니다.

1958년에 개발된 Lisp 언어는 많은 변화를 겪었습니다.

다양한 구현 및 방언이 있습니다.

  • CommonLisp(1970년대에 생성됨)는 주요 구현으로 간주되는 고전적인 구현입니다.
  • Scheme (scheme) - CommonLisp에서 일부를 제외하고 더 쉽게 수행할 수 있는 단순화된 방언입니다.
  • Clojure는 언어면에서 Lisp의 방언이지만 JAVA 머신 위에서 실행됩니다. 즉, 바이트코드로 컴파일되어 JAVA 프로그램처럼 실행됩니다.

쌀. 13. LISP 프로그램: 버블 정렬

파이썬

  • 1970년대 영국 쇼인 Monty Pynton의 Flying Circus의 이름을 따서 명명되었습니다(오래된 농담이지만 ​​재미있음)
  • 1991년에 만들어진
  • 네덜란드인 Guido van Rossum이 만든
  • 다중 패러다임 언어, 객체 지향, 명령형, 기능적
  • 강력하고 동적으로 입력
  • 가상 머신으로 해석, 바이트 컴파일(구현에 따라 다름)

다음 용도로 사용됩니다.

  • 스크립트 프로그래밍
  • 웹 프로그래밍
  • 과학 프로그래밍(모델링, 확률, 통계 및 다른 영역에서 얻은 경험을 결합한 기타 영역에 크고 강력한 패키지를 사용할 수 있음)

파이썬은 언어 사양입니다. 몇 가지 주요 구현이 있습니다.

  • CPython - 기본(참조)
  • Jython - JVM 위에서
  • PyPy - Python의 Python("Python in Python"은 CPython 및 Jython보다 빠르고 우수함)

쌀. 14. 파이썬 프로그램: 버블 정렬

Python에는 중요한 기능이 있습니다. 대괄호(둥근, 곱슬) 대신 공백이 있는 들여쓰기를 사용하여 코드 블록과 구조적 요소를 강조 표시합니다. 이는 모든 언어에서 매우 드문 일입니다. Python을 제외하고는 거의 아무도 그러한 기능을 가지고 있지 않습니다.

작업 언어 선택

해야 할 일을 알고 있지만 무엇을 해야 할지 모를 때 작업에 사용할 언어를 선택하는 방법은 무엇입니까?

중요한 조언: 프로그래밍 방법을 알고 있는 것을 사용하십시오. 프로그래밍 방법을 모르는 것을 사용하는 것보다 훨씬 낫습니다.

생태계

사용하려는 언어가 기본 언어일 필요는 없으며 다음을 포함하는 생태계가 있어야 합니다.

  • 개발 도구(편리한 IDE)
  • 기성 라이브러리 및 프레임워크
  • 테스트 케이스 실행을 위한 테스트 도구: 테스트 프레임워크 및 도구
  • 다른 사람들이 쉽게 사용할 수 있도록 작성된 코드를 패키징하고 어딘가에 배치할 수 있도록 패키징 및 배포 시스템. C에는 이 기능이 없지만 Ruby와 Python에는 있습니다.
  • 커뮤니티. 아무리 멋진 언어라도 죽은 언어를 사용하지 마십시오. 물어볼 사람이 없으면 완전히 막다른 골목에 놓이게 됩니다. 어떤 커뮤니티는 더 우호적이며 다른 커뮤니티는 덜 친절하다고 믿어집니다. 예를 들어, Ruby 커뮤니티는 훌륭하지만 Java 커뮤니티는 끔찍합니다. 거기에서 아무 것도 물어볼 필요가 없습니다.

인기

에펠과 같이 거의 사용되지 않는 언어로 코드를 작성하는 사람을 팀에서 찾기가 어렵습니다. 반면에 진입 문턱이 낮은 메가 인기 JAVA 언어의 공석은 많은 사람들에게 부딪힐 것이지만 정말 잘 쓰는 사람들을 찾기가 쉽지 않을 것입니다.

언어의 인기가 높을수록 위에서 자체적으로 성장하는 라이브러리, 커뮤니티, 프레임워크 및 기타 항목이 늘어납니다.

학습률

언어를 끝까지 아는 사람은 거의 없습니다. 일을 하면 할수록 언어를 점점 더 배워야 합니다. 일부 언어는 배우기 쉬운 반면 다른 언어는 매우 어렵습니다.

JAVA는 배우기 쉽고 기능면에서 단순한 언어이며, 그러면 모든 것이 언어 비용이 아니라 도구 비용으로 구축됩니다.

C++를 완전히 배우는 것은 불가능합니다. 왜냐하면 거기에는 코드 생성과 관련된 매우 복잡한 것들이 있기 때문입니다.

틈새 언어

특정 언어는 특정 틈새 작업에 더 적합합니다.

예 1: 다음을 수행하는 웹 애플리케이션

  • 데이터베이스와 상호 작용
  • 회사 내부 서비스
  • 상사가 정말로 요구하기 때문에 빠른 개발이 필요합니다.

이러한 작업의 경우 Python 또는 Ruby가 가장 가능성이 높습니다. JAVA로 하지마

예 2: 이동통신 사업자의 과금 시스템

  • 초당 수천 번의 작업, 다양한 지불 및 전송
  • 높은 신뢰성 및 내결함성
  • 구성의 유연성, 문제 진단

이 경우 풍부한 도구가 포함된 풍부한 언어인 Java, C++, Erlang을 선택합니다.

예 3: 위성용 온보드 컴퓨터 코드

  • 제한된 리소스(메가바이트의 메모리와 매우 낮은 클럭 속도)
  • 하드 실시간, 위성이 방향을 잃거나 깨지거나 폭발하지 않도록
  • 엄격하게 알려진 작업, 유연성 및 사용자 정의 없음
  • 많은 계산

리소스가 거의 없고 이러한 요구 사항을 충족해야 하기 때문에 우리의 선택은 C 및 C 유사 언어(심지어 어셈블러)입니다.

비디오를 기반으로 한 기사:

올바른 프로그래밍 언어를 선택하는 방법 - Ivan Kalinin

비디오는 2014년 12월에 촬영되었지만 모든 정보는 관련성이 있으며 공소시효가 없습니다. 예를 들어, 1950년대 후반과 1960년대 초반 과학자들은 인공 지능이 이미 문턱에 있으며 도움으로 자연 상태의 컴퓨터에서 작업할 수 있다고 믿었습니다. , 평범한 인간의 언어.

프로그래밍 언어 개발의 일반적인 추세를 강조하겠습니다. 예리한 독자라면 내가 무슨 말을 하려는지 이미 오래전에 짐작했을 것입니다. 언어는 점점 더 추상화를 향해 진화하고 있습니다. 그리고 이것은 효율성의 저하를 동반합니다. 질문: 추상화는 그만한 가치가 있습니까? 답변: 가치가 있습니다. 그럴만한 가치가 있습니다. 추상화 수준을 높이면 프로그래밍 안정성 수준이 높아지기 때문입니다. 낮은 효율성은 더 빠른 컴퓨터를 구축하여 해결할 수 있습니다. 메모리 요구 사항이 너무 높으면 양을 늘릴 수 있습니다. 물론 이것은 시간과 돈이 필요하지만 해결할 수 있습니다. 그러나 프로그램의 오류를 처리하는 방법은 한 가지뿐입니다. 바로 수정해야 합니다. 더 나은 아직, 하지 마십시오. 더 나은 방법은 가능한 한 어렵게 만드는 것입니다. 그리고 이것이 프로그래밍 언어 분야의 모든 연구가 목표로 하는 것입니다. 그리고 효율성의 손실을 감수해야 합니다.

이 리뷰의 목적은 독자에게 기존 프로그래밍 언어의 다양성에 대한 아이디어를 제공하려는 시도였습니다. 프로그래머들 사이에서는 특정 언어(C, C++, Pascal 등)의 "보편적 적용성"에 대한 의견이 종종 있습니다. 이 의견은 정보 부족, 습관, 사고 관성 등 여러 가지 이유로 발생합니다. 나는 첫 번째 요소를 약간 상쇄하려고 노력했습니다. 나머지는 진정한 전문가는 자신의 전문 기술을 향상시키기 위해 끊임없이 노력해야한다고 말할 수 있습니다. 그리고 이것을 위해 실험을 두려워 할 필요가 없습니다. 주변의 모든 사람이 C/C++/VB/Pascal/Perl/Java/…로 작성한다면 어떻게 될까요? 왜 새로운 것을 시도하지 않습니까? 이게 더 효율적이지 않을까요? 물론 새 언어를 사용하기 전에 효과적인 구현의 존재, 기존 모듈과의 상호 작용 기능 등을 포함하여 모든 기능을 주의 깊게 연구한 다음 결정을 내려야 합니다. 물론 엉뚱한 길로 갈 위험은 항상 존재하지만...아무것도 하지 않는 사람만이 틀리지 않는다.

그리고 더. 나는 “A 언어가 B 언어보다 낫다”라는 형식의 토론을 들었고 때로는 참여하기도 했습니다. 이 리뷰를 읽은 후 많은 사람들이 그러한 논쟁의 무의미함을 확신하기를 바랍니다. 논의할 수 있는 최대값은 특정 조건에서 특정 문제를 해결할 때 다른 언어에 비해 한 언어의 장점입니다. 여기, 실제로 때때로 논쟁의 여지가 있습니다. 그리고 때로는 해결책이 결코 명확하지 않습니다. 그러나 "일반적으로"라고 주장하는 것은 분명히 어리석은 일입니다.

이 글은 "Language X MUST DIE"를 외치는 이들에 대한 답글이었다. 답변이 충분히 적절하고 설득력이 있기를 바랍니다. 나는 또한 이 기사가 논쟁적이며 교육적인 가치 외에도 있기를 바랍니다.

>> 조항

프로그래밍 언어는 어떻게 나타 났습니까?

프로그래밍 언어는 수십 년 동안 만들어졌으며 이 작업은 길고 복잡하며 지루했습니다. 사실, 기계어는 논리적으로 배열된 0과 1의 사슬이며, 그 순서를 위반하면 프로그램이 중지되고 컴퓨터가 오작동하게 되며, 명령을 작성하는 새로운 방법을 만든 프로그래머의 요구 사항은 개발에 따라 다릅니다. 기계의.

프로그래밍 언어의 역사: 시작

1940년대 초는 프로그램을 위한 첫 번째 언어인 어셈블리 언어의 등장으로 표시되었습니다. 이 언어에는 명령에 짧은 단어 또는 그 약어 세트가 포함되어 있습니다. 어셈블러는 저수준 프로그래밍 언어로 간주되므로 기계 지향 언어라고 합니다. 그러나 이 언어로 작성된 프로그램은 효율성과 성능으로 구별됩니다.

고급 언어: 알고리즘 언어

기술의 발전과 새로운 유형의 디지털 장치의 도입으로 인해 프로그래머는 알고리즘 작성에 중점을 둔 고급 언어를 발명해야 했습니다. 이것이 알고리즘의 작업을 시작한 추가 프로그램 번역기가 나타난 방법입니다. 두 가지 번역 방법이 있습니다.

- 편집또는 컴파일, 전체 프로그램 패키지의 번역 후에 지침이 실행될 때;

- 해석또는 기계어의 실행과 번역이 동기식으로 수행되는 해석.

이러한 프로그램의 특징은 작성 용이성(코드 작성), 사용 시 수정 기능, 읽기 용이성입니다.

1954년: 구조화된 프로그래밍

세계는 매우 높은 수준의 프로그래밍 언어의 첫 번째 컴파일러를 인식하게 되었습니다. 우리는 영어 약어 FORmula TRANslator에서 Fortran에 대해 이야기하고 있습니다. 언어 개발은 ​​간단했지만 큰 프로그램을 작성할 때 많은 버전의 Fortran이 출시되었지만 언어는 거의 읽을 수 없게 되었습니다.

프로그래밍 언어 개발의 정점은 정확히 50-60 년대에 이르고 몇 가지 옵션이 생성됩니다.

- 알골(1958), 격리된 블록을 기반으로 생성됨;

- 코볼(1959) - 비즈니스 및 관리 언어, C +의 기초;

- 기초적인(1965), 오늘날까지 프로그래머들에게 알려져 있습니다.

1970년에는 과학자 B. Pascal - Pascal의 이름을 따서 명명된 프로그래밍 언어가 만들어졌습니다. 이 언어로 작성된 프로그램은 읽기 쉽고 학습에 어려움이 없었습니다. 단순하고 잘 구조화된 언어는 초보 프로그래머들 사이에서 여전히 인기가 있습니다.

다소 나중에 1972에서 두 번째 프로그래밍 언어가 개발되었습니다. C에는 이전에 만든 언어의 성과, 혁신이 포함되어 있으며 아마도 사용자와 프로그램 제작자 사이에서 가장 인기있는 언어가 될 것입니다. 단순하고 잘 구조화되어 있으며 배우기 쉬운 C는 다른 언어들 사이에서 인기를 얻고 있습니다.

객체 지향 프로그래밍(OOP): 1970

공식적으로 처리와 관련이 없는 함수에 대한 절차적 프로그래밍의 이데올로기는 개발자가 언어 컴파일을 위한 새로운 개념을 만들기 위해 자리에 앉도록 강요했습니다. OOP 개념의 기초는 다음과 같습니다.

아직 존재하지 않는 객체의 모델입니다.

클래스의 인스턴스

추상화, 객체에 특성 부여

데이터를 숨기려는 목적으로 속성과 메서드가 결합된 캡슐화

계승;

다형성.

Simula는 최초의 언어였으며 Smalltalk는 조금 후에 발명되었습니다. 현재 이러한 유형의 프로그래밍 언어는 최신 프로그램인 Object Pascal(Delphi), C++, C#, Java에서 지원됩니다.

프로그래밍 언어의 개발 순서는 새로운 혁신의 도입에 달려 있으므로 인터넷이 출현한 후 리소스, 사이트에 액세스하는 데 언어가 필요하게 되었습니다. 기술 월드 와이드 웹(WWW)오늘날에도 여전히 활발히 사용되는 새로운 언어를 탄생시켰습니다. 자바, 펄, SQL, HTML, PHP, 자바스크립트.



관련 기사: