첫 번째 프로그래밍 언어는 이름과 작성자입니다. (첫 번째) 프로그래밍 언어를 어떻게 선택합니까? 또는 올바른 질문을 하는 방법은 무엇입니까? 런타임 - 프로그램 실행

이 텍스트로 프로그래밍 언어 개발의 역사에 대한 일련의 기사를 시작하려고 합니다. 이 컬렉션을 개조한 버전입니다.

프로그래밍은 1950년대 훨씬 이전에 등장했습니다. 첫 번째 아이디어는 당연히 컴퓨터의 아버지로 간주되는 Charles Babbage(1792-1871)에 의해 표현되었습니다. 그는 트랜지스터, 마이크로 회로 및 모니터에 대해 알지 못했지만 모든 컴퓨터가 만들어지는 기본 원리를 정확하게 설명했습니다. 아이디어는 백작부인 Ada Lovelace(1815-1852)에 의해 개발되었습니다. 역사상 그녀의 위치는 여전히 많은 논란을 일으키지만 한 가지는 절대적으로 확실합니다. 실제로 최초의 알려진 프로그래머가 된 것은 Ada였습니다. 그녀의 작업 덕분에 기계를 효율적으로 사용하는 방법은 코드에 설명된 알고리즘이라는 것이 분명해졌습니다.

배비지의 분석 엔진

그러나 프로그래밍은 컴퓨터와 분리되어 개발될 수 없습니다. 그것들이 없으면 아이디어의 질에 상관없이 그저 마음의 게임, 추상화일 뿐입니다. 따라서 1950년대까지 프로그래밍 언어는 기계 명령어 세트였으며 종종 고도로 전문화되어 대상 장치와 함께 사라지곤 했습니다.

문제의 본질

오늘날 대부분의 프로그래머에게는 컴퓨터 아키텍처에 대해 알 필요가 없습니다. 언어만 중요하고 다른 모든 것은 부차적입니다. 1950년대에는 상황이 달랐습니다. 인두로 프로그래밍하는 것과 거의 같은 기본 기계 코드로 작업해야 했습니다.

또 다른 문제는 컴퓨터 생성에 직접 관련된 사람들이 주로 엔지니어와 강제 프로그래머 인 언어 개발을 담당했다는 것입니다. 따라서 그들은 언어를 일련의 연산과 메모리 셀로 표현했습니다. 대충 이렇게 생겼습니다.

01 x y - 메모리 셀 y의 내용을 x 셀에 추가합니다.

02 x y는 빼기와 동일한 절차입니다.

결과적으로 프로그램 코드는 끝없는 일련의 숫자로 바뀌었습니다.

01 10 15 02 11 29 01 10 11…

오늘날에는 그러한 코드가 끔찍해 보일 수 있지만 1950년대 초반에는 이것이 표준이었습니다.


1940년대 컴퓨터

프로그래머는 오랜 시간 기계어를 배워야 하고 코드를 꼼꼼히 작성해야 하고 완성 후에는 몇 번 더 다시 확인해야 하므로 오류의 위험이 높습니다. 프로그램을 작성할 인력이 부족하여 기계의 개발이 방해를 받기 시작하면서 문제가 발생했습니다. 긴급한 결정이 필요했습니다.

첫 번째 수도꼭지

솔루션은 표면에 있습니다. 작업의 디지털 지정을 문자로 번역해야 합니다. 즉, "01 10 15" 대신 "ADD 10 15"를 사용합니다. 이를 위해서는 문자를 기계 명령으로 추가 번역해야 했지만 문제를 감안할 때 희생은 최소화되었습니다.

그 해결책은 너무나 명백해서 누가 처음으로 어셈블리 언어를 발명했는지 확실하지 않습니다. 아마도 그는 한 번에 여러 장소에 동시에 나타났습니다. "디지털 컴퓨터를 위한 프로그램 준비"라는 책의 저자 Wilks, Wheeler 및 Gill은 이름과 대중화에 책임이 있는 것으로 간주됩니다. 어셈블러라는 이름이 영어 단어 assemble - to assemble, assemble에서 유래했다고 추측하기 쉽습니다. 이는 프로세스를 아주 정확하게 설명합니다. 나중에 기호는 가장 단순한 작업뿐만 아니라 코드의 가독성을 크게 단순화한 주소 지정에도 관련되기 시작했습니다.

지금은 기본 솔루션처럼 보이지만 구현은 각 메모리 셀에 레이블을 할당하고 조회 테이블을 생성해야 하는 복잡한 프로세스였습니다. 이는 세 가지 근본적인 문제로 이어졌습니다.

  • 기호 변수 또는 변수 개념의 출현.
  • 문자, 작업 및 메모리 셀을 일치시킬 수 있는 테이블 생성.
  • 프로그래밍이 예술이 될 수 있음을 이해합니다.

이것은 언어 혁신의 촉매제였습니다.

컴파일러와 편향

어셈블러를 사용하면 간단한 변환을 만들 수 있습니다. 예를 들어, 01을 ADD로 번역합니다. 매크로 어셈블러는 이 아이디어를 확장하고 프로그래머에게 여러 명령을 하나로 접을 수 있는 기능을 제공했습니다. 예를 들어, 프로그램에서 메모리 셀에 지속적으로 값을 추가하고 꽉 찼는지 확인했다면 이 모든 것을 INCRT 매크로에 쓰고 변수만 변경하여 사용할 수 있습니다. 사실 매크로 어셈블러는 최초의 고급 언어가 되었습니다.

그러나 이 접근 방식에는 중요한 문제가 있었습니다. 코드를 생성하기 전에 매번 기본 작업을 매크로로 축소해야 했습니다. 프로그래머가 끊임없는 복사에서 벗어날 수 있는 도구가 필요했습니다. 이것이 컴파일러가 탄생한 방법입니다.

이제 우리는 컴파일러 덕분에 모든 구문으로 프로그래밍 언어를 만들 수 있다는 것을 압니다. 가장 중요한 것은 코드를 기계 명령어로 올바르게 번역한다는 것입니다. 그리고 당시 전문가들은 고급 언어에 대해 회의적이었습니다. 이것은 부분적으로 컴퓨터의 성능 때문이었습니다. 복잡한 변환으로 구문을 단순화하는 것은 비용이 많이 들고 기술 발전을 몇 년 전으로 되돌릴 수 있습니다. 그 이유 중 일부는 감정이었습니다. 기계 명령의 형식에서 벗어나 프로세스에 대한 통제력을 잃는 것이 어려웠습니다. 프로그래머는 컴파일 후에 실행 가능한 명령을 이해할 수 없을까봐 심각하게 두려워했습니다. 오늘날 우리는 기계 코드가 어떻게 생겼는지 신경 쓰지 않지만 그 당시에는 중요한 문제처럼 보였습니다.

그럼에도 불구하고 컴파일러는 상황에서 벗어날 수있는 유일한 방법 이었지만 여기에는 산술 표현식이라는 또 다른 어려움이 나타났습니다. 실행은 기계가 코드를 읽는 방식과 일치하지 않습니다. 학교 수업에서 우리는 "2 + 3 * 5"라는 표현의 계산 순서를 알고 있지만 기계는 코드를 한 방향으로 읽기 때문에 답은 틀릴 것입니다. 예, 이 예제는 매크로를 생성하여 해결할 수 있지만 "(2 + 3 * 5 + 4/6) * 10 + 16- (14 + 15) * 8" 수준의 복잡한 표현식은 근본적으로 다른 접근 방식이 필요했습니다.

새로운 형성의 시대

Fortran의 창시자인 John Backus는 스택 분석 알고리즘을 찾아냈습니다. 그는 1954년에 작업을 시작했고 고급 언어가 존재할 권리를 증명하는 데 거의 5년이 걸렸습니다. Fortran의 전체 이름은 The IBM Formula Translating System 또는 FORmula TRANslator입니다. 60년이 넘었지만 여전히 가장 인기 있는 프로그래밍 언어 중 하나이며 데이터 과학에서 엄청나게 수요가 많습니다. 그동안 Fortran 1, II, 66, 77, 90, 95, 2008 등 많은 버전을 보았고 내년에 또 다른 버전이 출시될 예정입니다(Fortran 2015는 계획되었지만 지연으로 인해 이름이 2018로 변경될 수 있음 ). Fortran에서 처음으로 다음을 포함하여 고급 언어의 많은 속성이 동시에 구현되었습니다.

  • 산술 및 논리 표현식;
  • DO 루프(초기 형태의 FOR 루프);
  • 조건부 IF 문;
  • 서브루틴;
  • 배열.

현대 프로그래머도 인식하지 못하는 Fortran의 또 다른 중요한 유산은 정수에 대한 변수에 대한 제한을 사용하는 것입니다. 그것들은 모두 6개의 문자 I, J, K, L, M, N(I-Nteger에서 파생됨) 중 하나로 시작해야 했습니다. 여기에서 열거형이 변수 i, j 등을 취하는 습관이 생겼습니다.


IBM 704 - Fortran이 작성된 시스템

동시에 Fortran은 기계에 가까운 언어로 남아 있었습니다. 예를 들어 다음과 같은 내용이 있었습니다.

If (표현) doneg, dozero, dopos

그 이유는 올바른 레지스터(음수, 0 또는 양수)를 사용하기 위한 명령이 필요한 IBM 컴퓨터의 아키텍처 때문이었습니다. 기계와의 근접성은 잘 알려진 GOTO 명령(나중에 Basic에서 상속됨)에서도 나타났습니다. 이는 하나 또는 다른 명령으로의 직접적인 전환을 의미했습니다.

산술 표현식의 문제로 돌아가서 스택 반복 알고리즘(즉, 전체 문자열을 구문 분석하는 것)은 효율적인 솔루션이 아니었지만 구현이 얼마나 간단하고 논리적일 수 있는지를 증명했습니다.

모두를 위한 언어

Fortran 1은 복잡하고 부동 소수점 연산을 기반으로 하는 과학 언어였습니다. 그는 텍스트를 처리하는 방법조차 몰랐기 때문에 특수 코드로 변환해야 했습니다. 따라서 Fortran은 Cobol 언어가 특별히 만들어진 비즈니스에 적합하지 않은 것으로 판명되었습니다.

문법은 근본적으로 다르며 가능한 한 자연스러운 영어에 가깝습니다. 산술은 거의 없었고 다음과 같은 형식의 표현만 있었습니다.

지출을 뺀 총 소득으로 이동

코볼은 이전의 기계-산술적 사고에서 보편적인 사고로의 최대 거리의 의인화가 되었습니다. 그리고 가장 중요한 것은 이제 텍스트와 메모로 작업할 수 있다는 것입니다.

다음 기본 언어는 과학 보고서 및 출판물을 위해 설계된 Algol(ALGOrithmic Language)이었습니다. 처음으로 우리에게 자연스러운 것들이 나타났습니다.

  • 대입:=과 논리적 동등성의 차이점 =;
  • 세 개의 인수와 함께 for 루프 사용: 초기 값, 한계, 단계;
  • 프로그램의 블록 구조는 시작과 끝 사이에 있으므로 GOTO가 필요하지 않습니다.

오늘날 C, C++, C#, Java 및 기타 많은 인기 있는 언어가 탄생한 것은 Algol에서 나온 것입니다.

1950년대의 네 번째 고래는 인공 지능을 제공하도록 특별히 설계된 Lisp(LIST 처리 언어)였습니다. 주요 특징은 명령형 데이터가 아닌 기능으로 작업하는 것입니다. 이를 위해 John McCarthy는 동적 유형 지정, 자동 메모리 할당, 가비지 수집기 등 정상적인 작동을 위한 많은 메커니즘을 제공해야 했습니다. 궁극적으로 Python, Ruby와 같은 언어의 조상이 된 것은 Lisp였으며 그 자체는 여전히 AI에서 활발히 사용되고 있습니다.

따라서 1950년대는 프로그래머가 생각하는 방식을 바꾸고 4가지 기본 언어를 제시했으며 세상을 컴퓨터 혁명의 궤도에 올려 놓았습니다.
다음 시간에는 1960년대에 언어와 프로그래밍 세계가 어떻게 발전했는지 이야기해 봅시다.

그들은 컴퓨팅 장치의 전면 패널에 키 스위치를 설치하는 것으로 구성되었습니다. 분명히 작은 프로그램만 이런 방식으로 작성할 수 있습니다.

컴퓨터 기술의 발달과 함께 기계어가 등장하여 프로그래머가 기계의 기능을 최대한 활용하여 메모리 셀을 조작하여 명령을 설정할 수 있었습니다. 그러나 대부분의 컴퓨터를 기계어 수준에서 사용하는 것은 특히 I/O와 관련하여 어렵습니다. 따라서 그 사용을 포기해야 했습니다.

예를 들어, 플로피 디스크에서 데이터 블록을 읽기 위해 프로그래머는 16개의 다른 명령을 사용할 수 있으며 각 명령에는 디스크의 블록 번호, 트랙의 섹터 번호 등과 같은 13개의 매개변수가 필요합니다. 작업이 완료되면 컨트롤러는 분석할 오류의 존재 및 유형을 반영하는 23개의 값을 반환합니다.

기계어로 "단어"라고 합니다. 지침,각각은 메모리 셀에서 정보를 읽는 것과 같은 중앙 프로세서에 대한 하나의 기본 동작을 나타냅니다.

각 프로세서 모델에는 고유한 기계 명령어 세트가 있지만 대부분은 동일합니다. 프로세서 A가 프로세서 B의 언어를 완전히 이해하는 경우 프로세서 A는 프로세서 B와 호환된다고 합니다. 프로세서 A에 프로세서 B가 인식하지 못하는 명령이 있는 경우 프로세서 B는 프로세서 A와 호환되지 않는다고 합니다.

1960년대에는 소프트웨어 개발에 대한 수요가 증가하고 프로그램이 매우 방대해졌습니다. 사람들은 소프트웨어를 만드는 것이 생각보다 훨씬 어려운 작업이라는 것을 깨닫기 시작했습니다. 이것은 구조적 프로그래밍의 개발로 이어졌습니다. 구조화된 프로그래밍의 발전과 함께 절차와 기능이 다음 개발이었습니다. 예를 들어 여러 번 수행되는 작업이 있으면 함수나 프로시저로 선언하고 프로그램 실행 시 호출하면 됩니다. 이 경우 전체 프로그램 코드는 작아집니다. 함수를 사용하면 모듈식 프로그램을 만들 수 있습니다.

다음 개발은 구조의 사용으로 클래스로의 전환으로 이어졌습니다. 구조체는 다른 유형을 사용하여 빌드된 복합 데이터 유형입니다. 예를 들어, 시간의 구조. 여기에는 시간, 분, 초가 포함됩니다. 프로그래머는 시간 구조를 만들고 별도의 구조로 작업할 수 있습니다. 클래스는 고유한 변수와 해당 변수에 대해 작동하는 함수가 있는 구조입니다. 그것은 프로그래밍 분야에서 매우 큰 성과였습니다. 이제 프로그래밍은 10,000줄의 코드로 구성된 전체 프로그램이 아니라 클래스로 나눌 수 있지만 프로그램을 100개의 클래스로 나누어 각 클래스를 테스트할 수 있습니다. 이것은 소프트웨어 제품의 작성을 크게 용이하게 했습니다.

어셈블리어

효과적인 프로그램이 필요한 경우 기계어 대신 가까운 기계 지향 언어인 어셈블러가 사용됩니다. 사람들은 기계 명령 대신 니모닉 명령을 사용합니다.

그러나 어셈블러로 작업하는 것조차 상당히 복잡하고 특별한 훈련이 필요합니다.

구조적 프로그래밍에는 잘 정의된 제어 구조, 프로그램 블록, 무조건 점프 없음(GOTO) 명령어, 자체 포함된 서브루틴, 재귀 및 지역 변수 지원이 포함됩니다.

이 접근 방식의 본질은 프로그램을 구성 요소로 분할할 수 있는 가능성에 있습니다.

또한 생성됨 기능의(적용) 언어 (예: Lisp - 영어. 목록 처리, 1958) 및 두뇌 티저언어(예: Prolog - 영어. 로직 프로그래밍, 1972).

구조화 프로그래밍을 사용하면 뛰어난 결과를 얻었지만 프로그램이 일정 길이에 도달하면 실패했습니다. 더 복잡하고 더 긴 프로그램을 작성하려면 프로그래밍에 대한 새로운 접근 방식이 필요했습니다.

그 결과 1970년대 후반과 1980년대 초반에 객체지향 프로그래밍의 원리가 개발되었다. OOP는 구조화된 프로그래밍의 최상의 원칙과 강력한 새 개념을 결합하며, 그 핵심을 캡슐화, 다형성 및 상속이라고 합니다.

객체 지향 언어의 예로는 Object Pascal, C++, Java 등이 있습니다.

OOP를 사용하면 문제를 구성 요소로 나누고 각각을 개별적으로 작업하여 프로그램을 최적으로 구성할 수 있습니다. 특정 문제를 해결하는 객체 지향 언어의 프로그램은 실제로 이 문제와 관련된 세계의 일부를 설명합니다.

다른 언어로 프로그램을 작성하는 예

고급 언어(델파이)

X : = sin (y * Pi) + 1;

x86 어셈블러(코프로세서)

Fldpi fmul qword ptr [ Y] fsin fld1 fadd p st (1 ) , st (0 ) fstp qword ptr [ X]

기계어 코드(16진수 표현, 각 명령은 새 줄에서 시작)

D9 EB DC 0D D0 97 40 00 D9 FE D9 E8 DE C1 DD 1D 98 97 40 00

기계어 코드(이진 표현)

11011001 11101011 11011100 00001101 11010000 10010111 01000000 00000000 11011001 11111110 11011001 11101000 11011110 11000001 11011101 00011101 10011000 10010111 01000000 00000000

연결


위키미디어 재단. 2010년 .

  • 에이-에이
  • 카바노프, 니콜라이 알렉산드로비치

다른 사전에 "프로그래밍 언어의 역사"가 무엇인지 확인하십시오.

    파이썬 프로그래밍 언어의 역사- Python은 1980년대에 고안되어 네덜란드의 Center for Mathematics and Computer Science에서 Guido van Rossum에 의해 1989년 12월에 시작되었습니다. Python 언어는 처리가 가능한 ABC 프로그래밍 언어의 후손으로 생각되었습니다 ... ... Wikipedia

    프로그래밍 언어의 타임라인- 프로그래밍 언어 목록 범주별 프로그래밍 언어의 연대기 계보 타임라인은 프로그래밍 언어의 시간순으로 정렬된 목록입니다. 목차 ... 위키피디아

    프로그래밍 언어 비교- 이 기사는 위키화되어야 합니다. 기사 서식 규칙에 따라 서식을 지정해 주세요. 규약 ... 위키피디아

    프로그래밍 언어 개발의 간략한 역사- 컴퓨터 기술의 발달과 함께 다양한 프로그래밍 방법이 생겨났습니다. 각 단계에서 프로그램의 복잡성이 증가하는 프로그래머를 돕는 새로운 접근 방식이 만들어졌습니다. 목차 1 개발 시작 2 어셈블리 언어 3 구조 ... Wikipedia

    논리의 역사- 올바른 사고(논리)의 형태와 법칙에 대한 과학의 발전을 연구합니다. 추론 원리에 대한 개발된 분석으로서의 논리의 출현은 중국, 인도 및 고대의 세 가지 지역 문명과 독점적으로 관련되어 있습니다 ... ... Wikipedia

    리눅스의 역사- 이 글이나 섹션은 수정이 필요합니다. 기사 작성 규칙에 따라 기사를 개선해 주세요... Wikipedia

    자유 소프트웨어의 역사- "자유 소프트웨어" 또는 오픈 소스 소프트웨어라는 문구는 사용자에게 기존 소프트웨어 라이선스보다 더 많은 옵션을 제공하는 자유 라이선스 조건에 따라 배포되는 제품을 말합니다... ... 위키피디아

창조를 이끈 가장 혁명적인 아이디어 중 하나는 19세기 20년대에 Ch. Babbage가 기계의 동작 순서를 미리 기록한다는 개념으로 표현된 아이디어였습니다. 이 순간부터 시작된다 프로그래밍 언어의 역사.

프로그래밍 언어의 역사에서 혁명적인 순간은 펜실베니아 대학의 직원인 John Mauchly가 제안한 특수 문자를 사용하여 기계 명령을 인코딩하는 시스템의 출현이었습니다. Mauchly가 제안한 코딩 시스템은 컴퓨터와 프로그래밍에 평생을 바친 그의 회사 직원 중 한 명인 Grace Murray Hopper의 마음을 사로잡았습니다.

Mark-1 컴퓨터에서 작업할 때 G. Hopper와 그녀의 그룹은 많은 문제에 직면해야 했습니다. 특히, 그들은 서브루틴을 생각해 냈습니다.

프로그래밍 언어 역사의 여명기에 기계 코드는 사람과 컴퓨터 사이의 유일한 통신 수단이었습니다. 프로그래밍 언어 제작자의 위대한 업적은 컴퓨터 자체를 이러한 언어에서 기계어로 번역하는 역할을 할 수 있다는 것입니다.

1940년대 후반, G. Hopper가 John Mauchley의 회사에 합류하기 전, 후자는 원시적 고급 프로그래밍 언어인 "Short Code"라는 시스템을 만들었습니다. 그 안에 프로그래머는 풀어야 할 문제를 수학 공식의 형태로 적은 다음 특수 테이블을 사용하여 문자별로 번역하여 이러한 공식을 두 글자 코드로 변환했습니다. 그 후 특수 컴퓨터 프로그램이 이러한 코드를 이진 기계 코드로 변환했습니다. J. Mauchly가 개발한 시스템은 본질적으로 최초의 원시적 해석기 중 하나였습니다.

이미 1951년에 Hopper는 세계 최초의 컴파일러를 만들었고 그녀는 이 용어 자체를 도입했습니다. Hopper 컴파일러는 명령을 결합하는 기능을 수행하고 번역 중에 상위 수준 명령(당시 의사 코드)을 기계 명령으로 조직화된 서브루틴, 할당 및 변환하는 기능을 수행했습니다.

1950년대 중반은 프로그래밍 언어의 역사에서 급속한 발전이 특징입니다. 기계 명령어에서 프로그래밍의 역할이 줄어들기 시작했습니다. 기계와 프로그래머 사이의 중개자 역할을 하는 새로운 유형의 프로그래밍 언어가 등장하기 시작했습니다. 첫 번째이자 가장 일반적인 것 중 하나는 1954년 IBM 프로그래머 그룹이 개발한 Fortran(첫 번째 버전)입니다.

1960년대 중반, Dartmouth College 수학 부서의 Thomas Kurtz와 John Kemeny는 간단한 영어 단어로 구성된 특수 프로그래밍 언어를 만들었습니다. 새로운 언어는 BASIC이라고 불렸습니다.

60년대 초반에는 기존의 모든 고급 프로그래밍 언어를 손가락으로 셀 수 있었지만 이후에는 그 수가 3천 개에 이르렀습니다. 물론 대다수의 언어는 프로그래밍 언어의 역사에서 널리 사용되지 않았습니다. 실제로는 24개 이상이 사용되지 않습니다. 개발자 지향 프로그래밍 언어는 다른 클래스의 작업에 대해 어느 정도 특정 컴퓨터 아키텍처에 연결하고 개인 취향과 아이디어를 구현했습니다. 프로그래밍 언어 역사의 60년대에는 범용 프로그래밍 언어를 만들어 이러한 "다양성"을 극복하려는 시도가 있었습니다. 이 방향의 첫 번째 아이디어는 1967년 PL / I(Programm Language One)이었습니다. 그런 다음 ALGOL-68(1968)이 이 역할을 주장했습니다. 그러한 언어는 다른 모든 언어를 개발하고 개선하고 대체할 것이라고 가정했습니다. 그러나 현재까지 이러한 시도 중 어느 것도 성공하지 못했습니다. 언어의 포용성은 프로그래머의 관점에서 볼 때 부당한 구성, 구성의 복잡성, 컴파일러의 비효율로 이어졌습니다.

50년대 말, 프로그래밍 언어의 역사에 Algol(ALGOL, ALGOrithmic Language - 알고리즘 언어)이 등장했습니다. Algol은 작업을 해결하는 데 사용되는 일련의 절차로 작성된 녹음을 위한 것입니다.

알고리즘 개발을 구조화한다는 Algol의 아이디어 개발은 ​​70년대 초 스위스 과학자 Niklaus Wirth가 Pascal 언어를 만들 때 프로그래밍 언어 역사상 가장 높은 반영을 찾았습니다. Pascal은 원래 교육용 언어로 개발되었으며 실제로 이제는 학교와 대학에서 프로그래밍을 가르치는 주요 언어 중 하나입니다.

60년대 후반에서 80년대 초반까지의 기간은 역설적으로 소프트웨어 위기를 동반한 다양한 언어의 수의 급속한 성장으로 프로그래밍 언어의 역사에서 특징지어집니다. 이 위기는 특히 미군에 심각했습니다. 1975년 1월 펜타곤은 혼란스러운 번역가를 정리하고 하나의 보편적 언어를 개발하는 위원회를 구성하기로 결정했습니다. 우승 언어는 ADA라고 불렸습니다.

프로그래밍 언어의 역사에서 큰 흔적은 소프트웨어 시스템 개발자 (포함) 사이에서 매우 인기있는 C 언어 (첫 번째 버전 - 1972)에 의해 남겨졌습니다. C는 고급 언어와 기계 지향 언어의 기능을 결합하여 프로그래머가 BASIC 및 Pascal과 같은 언어가 제공하지 않는 방식으로 모든 기계 리소스에 액세스할 수 있도록 합니다.

수년 동안 소프트웨어는 Fortran, BASIC, Pascal, Ada, C와 같은 운영 및 절차 언어를 기반으로 구축되었습니다. 고전적인 운영 및/또는 절차적 프로그래밍에서는 프로그래머가 문제를 해결하는 방법을 자세히 설명해야 합니다. 알고리즘의 공식화 및 특수 표기법. 이 경우 결과의 예상 속성은 일반적으로 지정되지 않습니다. 이 그룹의 언어의 기본 개념은 연산자와 데이터입니다. 절차 적 접근 방식에서 운영자는 그룹 - 절차로 결합됩니다. 구조적 프로그래밍은 전체적으로 이 방향을 벗어나지 않으며 프로그래밍 기술의 몇 가지 유용한 기술만 추가로 수정합니다.

프로그래밍 언어의 역사에서 근본적으로 다른 방향은 비절차적 프로그래밍의 방법론(때로는 "패러다임"이라고도 함)과 관련이 있습니다. 여기에는 객체 지향 및 선언적 프로그래밍이 포함됩니다. 객체 지향 언어는 많은 독립 객체의 형태로 환경을 만듭니다. 각 개체는 별도의 컴퓨터처럼 작동하며 기능의 내부 메커니즘을 조사하지 않고 "블랙 박스"와 같은 문제를 해결하는 데 사용할 수 있습니다. 전문가들 사이에서 인기 있는 객체 프로그래밍 언어 중 C++를 가장 먼저 언급해야 하며, 광범위한 프로그래머에게는 Delphi, Visual Basic과 같은 환경이 선호됩니다.

코딩 학습을 고려하고 있다면 가장 먼저 선택하기로 결정한 프로그래밍 언어가 매우 중요하며 미래에 하고 싶은 것과 관련이 있어야 합니다. 일반적으로 프로그래밍은 게으른 사람을 위한 것이 아니지만 일부 언어는 다른 언어보다 배우기 쉽고 학습에 전념하고 다른 프로그래밍 언어를 배우는 데 유용한 기술을 제공하는 커뮤니티가 있습니다.

선발 방식

너무 자주 묻는 질문이 있어서 답변을 위한 전체 계획을 작성합니다. 예를 들어, 여기에는 첫 번째 프로그래밍 언어 선택에 전념하는 그 중 하나가 있습니다.

첫 번째 프로그래밍 언어를 선택할 때 다음 요소를 냉정하게 평가할 가치가 있습니다.

  • 노동 시장.
  • 언어의 장기적인 관점.
  • 언어 학습의 어려움.
  • 공부하는 과정에서 정확히 무엇을 만들 수 있고, 남에게 보여줌으로써 의욕을 유지할 수 있습니다.

인기와 수요

자바스크립트

JavaScript는 Java와 혼동하지 말아야 하며 이전에는 Netscape Communications에서 지금은 Mozilla Foundation에서 근무하는 Brendan Eich가 90년대에 개발한 프로그래밍 언어입니다. JavaScript는 우리가 알고 있는 웹 커뮤니티의 기반이 되는 기본 기술 중 하나입니다. JavaScript가 브라우저 외부에 있지만 대부분 연결된 응용 프로그램 및 서비스의 컨텍스트에 있지만 속지 마십시오.

언어 자체는 동적이며 프로그래머에게 객체 지향 프로그래밍 스타일(언어 자체가 대부분 객체 지향이기 때문에)과 기능 및 명령 스타일을 사용할 수 있는 유연성을 제공합니다. 대부분의 구문은 C에서 파생되며 어떤 방법으로든 웹 개발을 계획하는 경우 JavaScript 학습이 목록에 있어야 합니다.

운 좋게도 JavaScript는 이미 브라우저에 있어 비교적 배우기 쉬우며, 사용된 지 얼마 되지 않았지만 빠르게 인기를 얻고 있습니다. 이를 할당한 많은 사람들은 JavaScript를 배울 때 막대한 비용 절감 효과를 얻을 수 있다고 언급했습니다. 왜냐하면 많은 사람들이 코딩을 배우는 데 바로 사용할 수 있기 때문입니다.

파이썬

파이썬도 추천할 수 있습니다.

역사적으로 파이썬에 내재된 많은 문제에도 불구하고, 파이썬은 여러 틈새 시장에서 계속해서 선도적인 도구입니다.

인상적이지 않나요? Python으로 작성된 크고 인기 있는 프로젝트의 경우 다음과 같은 괴물입니다.

또한 우리 웹 사이트에서 찾을 수 있습니다.

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

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

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

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



관련 기사: