프로그래밍 언어의 간략한 역사. 프로그래밍 언어 생성의 역사 최초의 프로그래밍 언어




자동 디지털 컴퓨터의 생성으로 이어진 가장 혁신적인 아이디어 중 하나는 19세기 20년대 Charles Babidge가 계산의 후속 자동 구현을 위해 기계 작동 순서를 사전 기록하는 것에 대해 표현한 아이디어였습니다. . 그리고 프랑스 발명가 Joseph Marie Jacquard가 이러한 기계를 제어하기 위해 발명한 Babyge가 사용하는 천공 카드에 프로그램을 기록하는 것은 기술적으로 PC에 프로그램을 저장하는 현대적인 방법과 공통점이 없지만 여기서의 원리는 본질적으로 동일합니다. 이 순간부터 프로그래밍의 역사가 시작됩니다.
Babidge와 동시대 사람인 Ada Levellace는 세계 최초의 프로그래머로 불립니다. 그녀는 오늘날 프로그래밍에 여전히 사용되는 계산 순서를 제어하기 위한 몇 가지 기술을 이론적으로 개발했습니다. 그녀는 또한 거의 모든 현대 프로그래밍 언어의 가장 중요한 구성 중 하나인 루프에 대해 설명했습니다.

프로그래밍 언어 역사상 혁명적인 순간은 John Mauchly가 제안한 특수 문자를 사용하여 기계 명령을 인코딩하는 시스템의 출현이었습니다. 그가 제안한 코딩 시스템은 그의 협력자 중 한 명인 Grace Murray Hopper에게 영감을 주었습니다. Mark-1 컴퓨터로 작업하는 동안 그녀와 그녀의 그룹은 많은 문제에 직면해야 했고 그들이 생각해낸 모든 것은 처음이었습니다. 특히 그들은 서브루틴을 생각해 냈습니다. 그리고 프로그래밍 기술의 또 다른 기본 개념은 Hopper와 그녀의 그룹에 의해 처음으로 소개되었습니다: "디버깅".
40년대 후반에 J. Mauchly는 원시적인 고급 프로그래밍 언어인 "Short Code"라는 시스템을 만들었습니다. 그 안에 프로그래머는 해결해야 할 문제를 수학 공식의 형태로 기록한 다음 특수 테이블을 사용하여 문자별로 번역하고 이러한 공식을 두 글자 코드로 변환했습니다. 그 후 특수 컴퓨터 프로그램이 이러한 코드를 이진 기계어 코드로 변환했습니다. J. Mauchly가 개발한 시스템은 최초의 원시 해석기 중 하나로 간주됩니다.

이미 1951년에 호퍼는 세계 최초의 컴파일러를 만들었고 이 용어도 도입했습니다. 호퍼 컴파일러는 명령을 결합하는 기능을 수행하고, 번역 중에 서브루틴을 구성하고, 컴퓨터 메모리를 할당하고, 고급 명령(당시 의사 코드)을 기계 명령으로 변환하는 기능을 수행했습니다. “서브루틴은 (컴퓨터의) 라이브러리에 있고, 라이브러리에서 자료를 선택하는 것을 컴파일이라고 합니다.”라고 그녀는 자신이 만든 용어의 유래를 설명했습니다.

1954년에 G. Hopper가 이끄는 그룹은 나중에 Math-Matic이라고 불리는 프로그래밍 언어와 컴파일러를 포함하는 시스템을 개발했습니다. Math-Matic이 성공적으로 완료되자 Hopper와 그녀의 팀은 사용자가 일반 영어와 유사한 언어로 프로그래밍할 수 있는 새로운 언어와 컴파일러를 개발하기 시작했습니다. 1958년에는 Flow-Matic 컴파일러가 등장했습니다. Flow-Matic 컴파일러는 상용 데이터 처리 작업을 위한 최초의 언어였습니다.
이러한 방향의 발전으로 인해 COBOL 언어(Common Business Oriented Language)가 탄생하게 되었습니다. 1960년에 만들어졌습니다. 이 언어에서는 Fortran 및 Algol에 비해 수학적 도구는 덜 개발되었지만 텍스트 처리 도구와 필요한 문서 형식의 데이터 출력 구성은 잘 개발되었습니다. 관리 및 비즈니스 영역에서 대량 데이터 처리를 위한 기본 언어로 사용되었습니다.

50년대 중반은 프로그래밍 분야의 급속한 발전이 특징입니다. 기계 명령에서 프로그래밍의 역할이 줄어들기 시작했습니다. 기계와 프로그래머 사이의 중개자 역할을 하는 새로운 유형의 프로그래밍 언어가 등장하기 시작했습니다. 첫 번째이자 가장 널리 퍼진 것 중 하나는 1954년 IBM 프로그래머 그룹이 개발한 Fortran(FORTRAN, FORmula TRANslator - 공식 번역기)이었습니다(첫 번째 버전). 이 언어는 수학적 성격의 과학적이고 기술적인 계산에 중점을 두고 있으며 PC에서 수학적, 공학적 문제를 해결하기 위한 고전적인 프로그래밍 언어입니다.
최초의 고급 프로그래밍 언어의 경우 언어의 주제 지향이 특징이었습니다.
Algol은 1958년에 첫 번째 버전이 등장한 프로그래밍 언어 중에서 특별한 위치를 차지합니다. Algol의 개발자 중 한 명은 Fortran의 "아버지"인 John Backus였습니다. ALGOrithmic Language라는 이름은 알고리즘 작성을 위해 만들어졌다는 사실을 강조합니다. 명확한 논리 구조 덕분에 Algol은 과학 및 기술 문헌에서 알고리즘을 작성하는 표준 수단이 되었습니다.

60년대 중반에 Thomas Kurtz와 John Kameny(다트머스 대학 수학과 직원)는 간단한 영어 단어로 구성된 특수 프로그래밍 언어를 만들었습니다. 새로운 언어는 "Beginner All-Purpose Symbolic Instruction Code, 줄여서 BASIC"이라고 불렸습니다. 새로운 언어가 탄생한 연도는 1964년으로 간주할 수 있습니다. 오늘날 범용 BASIC 언어(여러 버전이 있음)는 큰 인기를 얻었으며 전 세계 다양한 범주의 PC 사용자들 사이에서 널리 퍼져 있습니다. 이는 BASIC이 70년대 후반부터 널리 사용되기 시작한 개인용 컴퓨터의 내장 언어로 사용되기 시작했다는 사실로 인해 크게 촉진되었습니다. 그러나 BASIC은 구조화되지 않은 언어이므로 고품질 프로그래밍을 가르치는 데 적합하지 않습니다. 공평하게 말하면 PC용 BASIC의 최신 버전(예: QBasic)은 더욱 구조화되었으며 시각적 기능 측면에서 Pascal과 같은 언어에 접근하고 있다는 점에 유의해야 합니다.

개발자는 다양한 작업 클래스에 언어를 집중시키고 특정 PC 아키텍처에 어느 정도 연결하고 개인적인 취향과 아이디어를 구현했습니다. 60년대에는 범용 프로그래밍 언어를 만들어 이러한 '불화'를 극복하려는 시도가 있었습니다. 이 방향의 첫 번째 아이디어는 1967년 IBM이 개발한 PL/1(Programm Language One)이었습니다. 이 언어는 컴퓨팅, 텍스트 처리, 정보 축적 및 검색 등 모든 문제를 해결할 수 있다고 주장했습니다. 그러나 번역기가 너무 복잡해서 번역기가 최적이 아니었고 감지되지 않은 오류가 많이 포함되어 있었습니다.
그러나 언어의 보편화를 향한 노선은 지지되었다. 오래된 언어는 범용 버전인 ALGOL-68(1968), Fortran-77로 현대화되었습니다. 그러한 언어가 발전하고 개선되어 다른 모든 언어를 대체하기 시작할 것이라고 가정했습니다. 그러나 이러한 시도 중 어느 것도 성공하지 못했습니다.

LISP 언어는 1965년에 등장했습니다. 그 주요 개념은 재귀적으로 정의된 함수의 개념입니다. 특정 재귀 함수 세트를 사용하여 모든 알고리즘을 설명할 수 있다는 것이 입증되었으므로 LISP는 본질적으로 범용 언어입니다. 이를 통해 PC는 매우 복잡한 프로세스, 특히 사람들의 지적 활동을 시뮬레이션할 수 있습니다.
프롤로그는 '인공지능'의 문제를 해결하기 위해 1972년 프랑스에서 개발됐다. 프롤로그를 사용하면 다양한 진술, 추론 논리를 공식적으로 설명하고 PC가 질문에 대한 답변을 제공하도록 할 수 있습니다.
프로그래밍 언어의 역사에서 중요한 사건은 1971년 파스칼 언어의 탄생이었습니다. 저자는 스위스 과학자 Niklaus Wirth입니다. Wirth는 최초의 덧셈 장치를 발명한 위대한 17세기 프랑스 수학자이자 종교 철학자 Blaise Pascal의 이름을 따서 명명되었으며, 이것이 새로운 언어가 그의 이름을 따서 명명된 이유입니다. 이 언어는 원래 구조화된 프로그래밍을 위한 교육용 언어로 개발되었으며 실제로 현재는 학교와 대학에서 프로그래밍을 가르치는 주요 언어 중 하나입니다.

1975년에는 프로그래밍 역사에서 두 가지 사건이 이정표가 되었습니다. Bill Gates와 Paul Allen은 BASIC 버전을 개발하여 스스로를 발표했고 Wirth와 Jensen은 "Pascal 사용자 설명서 및 보고서"라는 언어에 대한 고전적인 설명을 발표했습니다.

1983년 터보파스칼 시스템을 개발한 프랑스인 필립 칸(Philip Kahn)은 재정적 측면을 포함하여 그다지 인상적이지 않은 성공을 거두었습니다. 그의 아이디어의 핵심은 프로그램 처리의 연속 단계(컴파일, 링크 편집, 디버깅 및 오류 진단)를 단일 인터페이스에 결합하는 것이었습니다. Turbo Pascal은 언어이자 번역기일 뿐만 아니라 사용자가 Pascal에서 편리하게 작업할 수 있게 해주는 운영 셸이기도 합니다. 이 언어는 교육적인 목적을 넘어 보편적인 능력을 갖춘 전문 프로그래밍 언어가 되었습니다. 이러한 장점으로 인해 Pascal은 많은 현대 프로그래밍 언어의 소스가 되었습니다. 그 이후로 여러 버전의 Turbo Pascal이 출시되었으며 최신 버전은 7번째 버전입니다.
Borland/Inprise는 Turbo Pascal 제품 라인을 완성하고 Windows용 시각적 개발 시스템인 Delphi를 출시했습니다.

소프트웨어 시스템(운영 체제 포함) 개발자들 사이에서 매우 인기가 있었던 C 언어(첫 번째 버전 – 1972)는 현대 프로그래밍에 큰 흔적을 남겼습니다. 이 언어는 운영 체제, 번역기, 데이터베이스, 기타 시스템 및 응용 프로그램을 개발하기 위한 도구 언어로 만들어졌습니다. C는 고급 언어와 기계 지향 언어의 기능을 결합하여 프로그래머가 BASIC, Pascal과 같은 언어에서 제공하지 않는 모든 기계 리소스에 액세스할 수 있도록 합니다.
60년대 후반부터 80년대 초반까지의 기간은 소프트웨어 위기를 동반한 다양한 프로그래밍 언어의 급격한 증가가 특징이었습니다. 1975년 1월 미 국방부는 번역가들의 혼란을 정리하기로 결정하고 하나의 보편적 언어를 개발하라는 명령을 받은 위원회를 설립했습니다. 1979년 5월 Jean Ikhbia가 이끄는 과학자 그룹의 우승자가 발표되었습니다. 우승한 언어는 Augusta Ada Levellace를 기리기 위해 Ada로 명명되었습니다. 이 언어는 대규모 소프트웨어 시스템의 생성 및 장기 유지 관리를 위해 만들어졌으며 병렬 처리 및 실시간 프로세스 제어가 가능합니다.

수년 동안 소프트웨어는 Fortran, BASIC, Pascal, Ada, C와 같은 운영 및 절차 언어를 기반으로 구축되었습니다. 프로그래밍 언어가 발전함에 따라 프로그램 작성에 대한 근본적으로 다른 접근 방식이 널리 보급되었습니다.
다양한 기준에 따라 프로그래밍 언어의 분류가 많이 있습니다. 가장 일반적인 분류는 다음과 같습니다.
 고급 프로그래밍 언어(Pascal, BASIC) 및 저급 프로그래밍 언어(어셈블러);
 엄격한 유형(Pascal)과 느슨한 유형(BASIC);
 객체 지향 프로그래밍(C++) 등을 지원하거나 지원하지 않음

또 다른 분류를 고려해 봅시다. 프로그래밍 언어는 다음과 같이 나뉩니다.
1) 기계 지향 언어:
- 기계어;
- 기호 코딩 언어;
 자동 코드;
- 매크로.
2) 기계 독립적인 언어:
- 문제 지향 언어;
- 보편적인 언어;
- 대화형 언어;
- 비절차적 언어.

기계 지향 언어

기계 지향 언어는 연산자 세트와 그래픽 수단이 PC의 특성(내부 언어, 메모리 구조 등)에 크게 좌우되는 언어입니다. 기계 지향 언어에는 다음과 같은 특징이 있습니다.
 생성된 프로그램의 높은 품질(컴팩트함 및 실행 속도)
 특정 하드웨어 자원을 사용하는 능력;
 객체 코드 및 메모리 순서의 예측 가능성;
 효과적인 프로그램을 작성하려면 이 PC의 명령 시스템과 작동 기능을 알아야 합니다.
 노동집약적인 프로그램 작성 프로세스(특히 기계어 및 JSC)는 오류로부터 제대로 보호되지 않습니다.
 낮은 프로그래밍 속도;
 이러한 언어로 컴파일된 프로그램을 다른 유형의 컴퓨터에서 직접 사용할 수 없습니다.
기계 지향 언어는 자동 프로그래밍 정도에 따라 클래스로 구분됩니다.

기계어

개별 컴퓨터에는 고유한 특정 기계 언어(이하 ML이라고 함)가 있으며, 정의된 피연산자에 대해 지정된 작업을 수행하도록 규정되므로 ML은 명령 언어입니다. 이 명령은 피연산자의 위치와 수행 중인 작업 유형에 대한 정보를 보고합니다.
새로운 PC 모델에서는 하드웨어의 내부 언어를 개선하여 기능적 동작이 알고리즘 프로그래밍 언어 운영자에게 더 가까운 더 복잡한 명령을 구현하는 경향이 있습니다.

기호 코딩 언어

ML과 마찬가지로 기호 코딩 언어(이하 SKL)도 명령 언어입니다. 그러나 2진수(내부 코드에서) 또는 8진수(종종 프로그램을 작성할 때 사용됨) 숫자의 시퀀스인 기계 명령어의 연산 코드와 주소는 YSC에서 프로그래머에게 도움이 되는 쓰기 형식인 기호(식별자)로 대체됩니다. 작업의 의미론적 내용을 더 쉽게 기억할 수 있습니다. 이렇게 하면 프로그램을 컴파일할 때 오류 수가 크게 줄어듭니다.
기호 주소를 사용하는 것은 YASK를 생성하는 첫 번째 단계입니다. PC 명령에는 실제(물리적) 주소 대신 기호 주소가 포함됩니다. 컴파일된 프로그램의 결과에 따라 초기 중간 및 결과 값을 저장하는 데 필요한 셀 수가 결정됩니다. 기호 주소로 프로그램을 컴파일하는 것과 별도로 수행되는 주소 할당은 자격이 부족한 프로그래머나 특수 프로그램에 의해 수행될 수 있으며 이는 프로그래머의 작업을 크게 촉진합니다.

자동코드

매크로 명령의 확장된 도입을 통해 YSC의 모든 기능을 포함하는 언어가 있습니다. 이를 자동 코드라고 합니다.

다양한 프로그램에는 정보 변환을 위한 특정 절차에 해당하는 매우 자주 사용되는 명령 시퀀스가 ​​있습니다. 이러한 절차의 효과적인 구현은 특수 매크로 명령 형태의 설계와 후자를 프로그래머가 액세스할 수 있는 프로그래밍 언어에 포함함으로써 보장됩니다. 매크로 명령은 배열과 생성이라는 두 가지 방식으로 기계 명령으로 변환됩니다. 스테이징 시스템에는 매크로 명령으로 표시되는 필수 기능을 구현하는 일련의 명령인 "골격"이 포함되어 있습니다. 매크로 명령어는 변환 프로세스 중에 프로그램의 "골격"에 삽입되어 실제 기계 프로그램으로 전환되는 실제 매개변수의 전송을 제공합니다.
생성 시스템에는 매크로 명령을 분석하고, 어떤 기능을 실행해야 하는지 결정하고, 이 기능을 구현하는 데 필요한 명령 시퀀스를 형성하는 특수 프로그램이 있습니다.
이 두 시스템 모두 JSC 변환기와 자동 코드 연산자이기도 한 매크로 명령 세트를 사용합니다.
개발된 자동코드를 어셈블러라고 합니다. 서비스 프로그램 등은 원칙적으로 어셈블리 언어로 작성됩니다.

매크로

필요한 컴퓨터 작업의 실행을 설명하는 일련의 문자를 보다 압축된 형태로 바꾸는 도구인 언어를 매크로(대체 도구)라고 합니다.
기본적으로 매크로는 원본 프로그램의 녹화 시간을 단축하도록 설계되었습니다. 매크로가 작동할 수 있도록 하는 소프트웨어 구성 요소를 매크로 프로세서라고 합니다. 매크로프로세서는 매크로 정의 및 소스 텍스트를 수신합니다. 호출에 대한 매크로프로세서의 응답은 출력 텍스트를 발행하는 것입니다.
매크로는 프로그램과 데이터 모두에서 동일하게 작동할 수 있습니다.

기계 독립적인 언어

기계 독립적인 언어는 문제를 해결하기 위한 알고리즘과 처리할 정보를 기술하는 수단입니다. 광범위한 사용자가 사용하기 쉽고 PC 기능 구성의 세부 사항을 알 필요가 없습니다.
이러한 언어를 고급 프로그래밍 언어라고 합니다. 이러한 언어로 컴파일된 프로그램은 언어 보기 규칙(작업, 세그먼트, 블록 등)에 따라 구성된 일련의 명령문입니다. 언어 연산자는 프로그램을 ML로 변환한 후 시스템이 수행해야 하는 작업을 설명합니다.
따라서 기계 프로그램에서 자주 사용되는 명령 시퀀스(프로시저, 서브루틴)는 개별 명령문으로 고급 언어로 표현됩니다. 프로그래머는 기계 명령어 수준에서 계산 과정을 자세히 설명할 수 없었고 알고리즘의 주요 기능에 집중할 수 있었습니다.

문제 지향적 언어

컴퓨터 기술의 적용 영역이 확장됨에 따라 새로운 종류의 문제에 대한 공식화 및 해결 방법을 공식화할 필요성이 생겼습니다. 이 분야의 표기법과 용어를 사용하여 할당된 문제에 필요한 솔루션 알고리즘을 설명할 수 있는 프로그래밍 언어를 만드는 것이 필요했습니다. 이러한 언어는 특정 문제를 해결하는 데 중점을 두고 있으며 프로그래머에게 문제를 간단하고 명확하게 공식화하고 필요한 형식으로 결과를 얻을 수 있는 도구를 제공해야 합니다.
문제가 있는 언어는 많습니다. 예를 들면 다음과 같습니다.
- Fortran, Algol – 수학 문제를 해결하기 위해 만들어진 언어;
- Simula, Slang - 모델링용;
- Lisp, Snoball - 목록 구조 작업에 사용됩니다.

보편적인 언어

범용 언어는 상업, 과학, 모델링 등 광범위한 작업을 위해 만들어졌습니다. 최초의 범용 언어는 IBM에 의해 개발되었으며 언어 순서에 따라 PL/1이 되었습니다. 두 번째로 강력한 범용 언어는 ALGOL-68입니다.

대화 언어

새로운 기술의 출현으로 인해 시스템 프로그래머는 사람과 PC 간의 신속한 상호 작용을 보장하는 소프트웨어 도구를 만드는 과제를 갖게 되었습니다. 이를 대화형 언어라고 합니다.
이번 작업은 두 가지 방향으로 진행되었습니다. 이전에 개발되지 않은 (대화 상자가 아닌) 언어로 컴파일된 작업 완료에 대한 운영 영향을 제공하기 위해 특수 제어 언어가 만들어졌습니다. 관리 목적 외에도 문제 해결을 위한 알고리즘에 대한 설명을 제공하는 언어도 개발되었습니다.
사용자와의 신속한 상호 작용을 보장하려면 기계어 코드로 목적 프로그램을 받은 후에도 소스 프로그램의 복사본을 컴퓨터 메모리에 저장해야 했습니다. 대화형 언어를 사용하여 프로그램을 변경할 때 프로그래밍 시스템은 특수 테이블을 사용하여 소스 프로그램과 목적 프로그램의 구조 간의 관계를 설정합니다. 이를 통해 개체 프로그램에서 필요한 편집 변경을 수행할 수 있습니다.
대화형 언어의 한 가지 예는 BASIC입니다.

비절차적 언어

비절차적 언어는 고정 알고리즘(테이블 형식 언어 및 보고서 생성기)을 사용하여 처리된 데이터의 구성을 설명하는 언어 그룹과 운영 체제와 통신하기 위한 언어를 구성합니다.
작업과 이를 해결하는 데 필요한 작업을 모두 명확하게 설명할 수 있는 의사결정 테이블을 사용하면 작업을 진행하기 전에 충족해야 하는 조건을 명확하게 결정할 수 있습니다. 특정 상황을 설명하는 하나의 의사결정 테이블에는 솔루션 알고리즘 구현에 대한 가능한 모든 블록 다이어그램이 포함되어 있습니다.
표 형식 방법은 모든 직업의 전문가가 쉽게 익힐 수 있습니다. 표 형식으로 작성된 프로그램은 시스템 분석 중에 발생하는 복잡한 상황을 편리하게 설명합니다.
프로그래밍 언어는 다양한 목적으로 사용되며 사용자 친화성, 특정 컴퓨터 및 특정 작업에 대한 적합성에 따라 선택이 결정됩니다. 그리고 컴퓨터의 문제는 계산, 경제, 그래픽, 전문가 등 매우 다양할 수 있습니다. 컴퓨터가 해결하는 이러한 다양한 문제는 프로그래밍 언어의 다양성을 결정합니다. 프로그래밍에서는 문제의 종류, 프로그래머의 수준 및 관심 사항에 따라 개별적인 접근 방식으로 최상의 결과를 얻을 수 있습니다.

Basic 및 Visual Basic 프로그래밍 언어 생성의 역사

기본 프로그래밍 언어는 1964년 두 명의 Dartmouth College 교수인 John Kenemi와 Thomas Kurtz가 학생들에게 프로그래밍 기술을 가르치기 위해 만들어졌습니다. 언어는 매우 간단하고 이해하기 쉬워서 얼마 후 다른 교육 기관에서도 사용되기 시작했습니다. 1975년 최초의 마이크로컴퓨터가 등장하면서 기본 지휘봉은 마이크로소프트의 창업자인 빌 게이츠와 폴 앨런이 차지했습니다. 4KB RAM에서 실행될 수 있는 최초의 Altair 컴퓨터(MITS Altairs)용 Basic의 새 버전을 만든 것은 바로 그들이었습니다. 시간이 지남에 따라 세계에서 가장 인기 있는 프로그래밍 언어 중 하나로 변한 것은 바로 이 버전이었습니다. 영광의 정점에 오르는 과정에서 Basic은 많은 어려움을 겪었지만 항상 명예롭게 극복했으며 최초의 개인용 컴퓨터 IBM PC가 등장했을 때 프로그래밍의 표준이되었지만 GW-Basic의 형태였습니다. 그런 다음 Turbo Basic, QuickBasic, Basic PDS가 있었지만 항상 새 버전의 언어를 개발할 때 이전 버전과의 호환성이 유지되었으며 거의 ​​첫 번째 Basic용으로 작성된 프로그램은 (사소한 변경을 통해) 이 후속 버전에서도 잘 작동할 수 있었습니다. 언어. 그러나 새로운 시대가 도래했고 90년대 초반에 Microsoft Windows 운영 체제는 새로운 그래픽 사용자 인터페이스(GUI)와 함께 등장했습니다.

프로그래머의 삶은 지옥이 되었습니다. 간단한 프로그램을 만들려면 메뉴와 창 만들기, 글꼴 변경, 메모리 지우기, 버튼 "그리기" 등 여러 페이지의 코드를 작성해야 했습니다. 그러나 새로운 인터페이스의 장점은 부인할 수 없을 정도로 강력하여 이미 이 운영 체제의 세 번째 버전이 개인용 컴퓨터의 사실상 표준이 되었습니다. 현재 Microsoft 내에서는 Windows용 새 프로그래밍 언어를 만들기 위한 여러 병렬 프로젝트가 진행 중이었습니다. 그리고 1991년에는 "이제 초보 프로그래머도 Windows용 응용 프로그램을 쉽게 만들 수 있습니다"라는 슬로건 아래 새로운 Microsoft Visual Basic 도구의 첫 번째 버전이 등장했습니다. 그 당시 Microsoft는 주로 초보자와 비전문 프로그래머 범주를 대상으로 이 시스템의 기능을 다소 겸손하게 평가했습니다. 당시 주요 임무는 당시 상당히 새로운 Windows 환경에서 간단하고 편리한 개발 도구를 시장에 출시하는 것이었습니다. 프로그래밍은 숙련된 전문가에게도 문제가 되었습니다. Visual Basic 개발자가 만든 프로그래밍 시스템을 사용하면 Windows의 복잡한 내부 구조에서 "한발 물러나" 어린이용 구성 세트와 같은 "큐브"에서 프로그램을 만들 수 있습니다. 메뉴, 창, 목록, 버튼, 텍스트 입력 필드 및 기타 Windows 인터페이스 요소는 간단한 끌어서 놓기 작업을 사용하여 프로그램에 추가되었습니다.

VB 프로그래머는 이 언어를 배우기 시작한 지 몇 분 안에 첫 번째 프로그램을 만들었습니다! 더욱이 Visual Basic을 사용하면 개발자는 표준 개체와 함께 프로그램에서도 사용할 수 있는 새로운 "큐브" 개체를 만들 수 있습니다. 그리고 많은 C 프로그래머들이 Windows 프로그램 개발을 위한 간단하고 이해하기 쉬운 도구를 만들려는 Microsoft의 시도를 조용히 비웃었지만 Visual Basic은 전 세계적으로 승리의 행진을 시작했으며 그 무엇도 이 과정을 막을 수 없었습니다. 마지막 장벽은 1994년에 Visual Basic for Application이 출시되면서 무너졌습니다. 이때 Microsoft Office에 VBA가 포함된 후 Basic이 Windows의 주요 프로그래밍 표준 중 하나로 변하기 시작했습니다. Microsoft의 경우 Basic 언어가 특히 중요합니다. Altair 8800 컴퓨터용 Basic 버전의 개발은 창립자인 Bill Gates와 Paul Allen의 프로그래밍 경력의 시작을 의미합니다. 따라서 한때 1989년에 다양한 프로그래밍 언어로 개발 환경을 만드는 주요 방향을 여러 회사에 배포할 때가 되었을 때 Microsoft는 Basic으로 프로그램을 개발하기 위한 환경인 QuickBasic을 유지했습니다. Pascal 프로그래밍 언어에 대한 작업을 Borland에 맡겼고, 결국 Borland는 Basic 버전에 대한 작업을 중단했습니다(Pascal은 나중에 Delphi 언어가 되었습니다).

원래 장난감으로 의도된 Microsoft의 Visual Basic은 프로그래밍 세계에 돌풍을 일으켰습니다. 인기가 높은 이유는 상대적 단순성과 생산성이라는 두 가지 이유 때문입니다. VB 프로그램은 C/C++ 프로그램보다 느리지만 여전히 많은 비즈니스 목적에 사용할 수 있을 만큼 빠르며 개발 시간도 훨씬 적게 걸립니다. 양식은 VB가 Windows 프로그래머에게 제공한 것과 동일한 노력을 절약해주는 추상화였습니다. VB IDE를 사용하면 도구 모음에서 버튼, 목록 상자 등의 컨트롤을 폼으로 끌어서 창을 그래픽적으로 디자인할 수 있습니다. 양식의 모양이 만족스러우면 코드 측면으로 이동하여 각 양식 컨트롤에 대한 이벤트 핸들러를 작성할 수 있습니다.

따라서 VB에서 응용 프로그램을 개발하는 것은 서로 대화하고 필요한 정보에 대해 데이터베이스를 참조하는 여러 가지 양식을 만드는 것으로 구성되었습니다. 결과 양식은 윈도우 기술을 사용하는 훨씬 더 편리한 방법을 제공하는 윈도우로 밝혀졌습니다. VB에서는 숨겨진 C/C++ 구문을 제거하여 오류를 줄였습니다. 특별한 경우를 제외하고 표현식은 한 줄의 코드로 제한되었으며, 변수는 별도의 코드 줄에서 선언하고 초기화해야 했습니다. 할당 연산자와 비교 연산자는 동일한 기호를 사용했지만 VB 문법에서는 이러한 연산자를 의도를 명확하게 하는 방식으로 사용해야 했습니다.

아마도 가장 중요한 것은 Microsoft BASIC의 첫 번째 버전 이후 Bill Gates의 요구 사항인 포인터가 없다는 것입니다. 포인터는 모든 주소의 메모리에 직접 액세스할 수 있기 때문에 유용하지만, 주의 깊게 사용하지 않으면 오류가 발생하기 쉽습니다. BASIC의 문법적 단순성에 대한 요구 사항은 원래 "초보자용 다목적 기호 교육 코드"라는 명령을 위한 언어로 만들어졌다는 사실에서 비롯됩니다. VB 버전 6은 이미 다음을 사용하여 분산 응용 프로그램을 만드는 데 사용할 수 있는 강력한 언어입니다. COM 구성 요소 및 Microsoft Transaction Server Microsoft는 씬 사용자 인터페이스가 원격 VB 구성 요소와 상호 작용하여 데이터베이스나 다른 시스템에서 데이터를 검색하는 클라이언트-서버 아키텍처에 대한 3계층 접근 방식을 제안했습니다.

VBScript 및 VBA(응용 프로그램용 VB)를 사용하면 웹 브라우저용 스크립트를 작성하고 Microsoft Office 응용 프로그램을 자동화할 수 있습니다. 또한 VB6을 사용하면 Internet Explorer에서 작동하는 Active-X 컨트롤을 만들 수 있지만 인터넷 클라이언트 시스템에 VB 런타임 DLL을 설치해야 하기 때문에 거의 수행되지 않습니다. VB5부터 VB 프로그램은 기계어 코드로 컴파일되었지만 일반적으로 사용되는 기능을 제공하고 VB의 개체 기능을 구현하는 DLL의 사용을 기반으로 했습니다. 흥미로운 점은 VB 컴파일러가 번역을 위해 다중 패스 모드를 사용하고 궁극적으로 중간 언어로 컴파일한 후 기계어 코드 출력을 생성하기 위해 Microsoft C++ 컴파일러에 의존한다는 것입니다. .NET의 씨앗은 VB의 이 기능, 즉 런타임 라이브러리 및 C++ 백엔드 사용에서 볼 수 있습니다.

C# 프로그래밍 언어 생성의 역사

C# 언어는 Anders Hejlsberg가 이끄는 대규모 Microsoft 개발자 그룹의 노력의 결과로 2000년 6월에 탄생했습니다. 이 사람은 IBM 개인용 컴퓨터용으로 최초로 컴파일된 프로그래밍 언어 중 하나인 터보 파스칼(Turbo Pascal)의 저자로 알려져 있습니다. 아마도 구소련 지역에서는 경험이 풍부한 많은 개발자들과 단순히 대학에서 어떤 형태로든 프로그래밍을 공부한 사람들이 이 제품의 매력과 사용 편의성을 경험했을 것입니다. 또한 Anders Hejlsberg는 Borland Corporation에서 근무하면서 Delphi 통합 환경을 만든 것으로 유명해졌습니다(그는 버전 4.0이 출시될 때까지 이 프로젝트를 이끌었습니다).
2000년 초여름에 C# 언어와 .NET 이니셔티브가 등장한 것은 우연이 아닙니다. Microsoft가 메시징 및 데이터 교환 분야에서 새로운 구성 요소 기술과 솔루션의 산업용 버전을 준비한 것은 바로 이 순간이었습니다. 인터넷 애플리케이션(COM+, ASP+, ADO+, SOAP, Biztalk Framework) 생성도 가능합니다. 의심할 바 없이 이러한 새로운 제품을 홍보하는 가장 좋은 방법은 개발자의 전폭적인 지원을 받는 툴킷을 만드는 것입니다. 이는 새로운 C# 언어의 주요 목표 중 하나입니다. 또한 Microsoft는 더 이상 동일한 도구와 개발 언어를 확장할 수 없어 최신 하드웨어를 지원하고 1990년대 초에 만들어진 제품과의 하위 호환성을 유지해야 하는 상충되는 요구 사항을 충족하기 위해 이를 점점 더 복잡하게 만들었습니다. Windows가 처음 등장하는 동안. 개발자가 최신 소프트웨어 제품을 쉽게 만들 수 있도록 하는 간단하지만 복잡한 언어, 환경 및 개발 도구 세트를 만들기 위해 처음부터 시작해야 할 때가 있습니다.

C#과 .NET이 출발점입니다. 간단히 말해서, .NET은 Windows 프로그래밍을 위한 새로운 플랫폼인 새로운 API이며, C#은 해당 플랫폼과 함께 작동하고 개발 환경의 발전과 우리의 기술을 최대한 활용하기 위해 처음부터 만들어진 새로운 언어입니다. 지난 20년간 객체 지향 프로그래밍의 원리를 이해합니다.
이전 버전과의 호환성은 손실되지 않습니다. 기존 프로그램이 실행되며 .NET 플랫폼은 기존 소프트웨어와 함께 작동하도록 설계되었습니다. Windows의 구성 요소 간 통신은 이제 거의 전적으로 COM을 사용하여 수행됩니다. 이를 염두에 두고 .NET에는 (a) .NET 구성 요소가 통신할 수 있도록 기존 COM 구성 요소 주위에 래퍼를 만들고 (b) 일반 COM 구성 요소처럼 보이도록 .NET 구성 요소 주위에 래퍼를 만드는 기능이 있습니다.

C#의 저자는 현대 객체 지향 언어(예: Java)의 단순성과 표현력을 C++의 풍부함과 강력함과 결합한 언어를 만들고자 했습니다. Anders Hejlsberg에 따르면 C#은 대부분의 구문을 C++에서 차용했습니다. 특히 여기에는 구조 및 열거형과 같은 편리한 데이터 유형이 포함되어 있습니다(C++의 또 다른 자손인 Java에는 이러한 요소가 부족하여 프로그래밍할 때 특정 불편함을 야기함). C# 구문 구조는 C++뿐만 아니라 Visual Basic에서도 상속됩니다. 예를 들어 C#은 Visual Basic과 마찬가지로 클래스 속성을 사용합니다. C++와 마찬가지로 C#에서는 생성한 유형에 대한 연산자 오버로드를 허용합니다(Java는 두 기능을 모두 지원하지 않습니다). C#은 실제로 다양한 언어의 혼합체입니다. 동시에 C#은 구문적으로 Java보다 깨끗하고 Visual Basic만큼 단순하며 C++와 거의 동일한 성능과 유연성을 갖습니다.

C#의 특징:

완전하고 잘 정의된 기본 유형 세트입니다.
- XML ​​문서 자동 생성 지원 기능이 내장되어 있습니다. 동적으로 할당된 메모리를 자동으로 해제합니다.
- 사용자 정의 속성으로 클래스와 메소드를 표시하는 기능. 이는 문서화에 유용할 수 있으며 컴파일 프로세스에 영향을 미칠 수 있습니다(예를 들어 디버그 모드에서만 컴파일해야 하는 메서드를 표시할 수 있음).
- .NET 기본 클래스 라이브러리에 대한 전체 액세스는 물론 Windows API에 대한 쉬운 액세스(정말 필요한 경우).
- 필요한 경우 포인터 및 직접 메모리 액세스. 그러나 언어는 거의 모든 경우 언어 없이도 사용할 수 있도록 설계되었습니다.
- VB 스타일 속성 및 이벤트를 지원합니다.
- 컴파일 키를 쉽게 변경할 수 있습니다. ActiveX 컨트롤(COM 구성 요소)과 동일한 방식으로 다른 코드에서 호출할 수 있는 .NET 구성 요소 실행 파일이나 라이브러리를 얻을 수 있습니다.
- C#을 사용하여 동적 ASP.NET 웹 페이지를 작성하는 능력.

이 언어가 사용되지 않는 영역 중 하나는 시간이 중요하고 처리량이 많은 프로그램입니다. 여기서 루프를 실행하는 데 1000 또는 1050 머신 사이클이 걸리고 리소스를 즉시 해제해야 하는지가 중요합니다. C++는 이 분야에서 최고의 저수준 언어로 남아 있습니다. C#에는 코드의 특정 지점에서 실행이 보장되는 인라인 함수 및 소멸자와 같은 고성능 애플리케이션을 만드는 데 필요한 일부 주요 기능이 부족합니다. 이 언어는 현대 비디오 게임을 만드는 데에도 적극적으로 사용됩니다. 예를 들어 Battlefield 3 게임은 부분적으로 C#으로 작성되고 전체는 .NET 기술로 작성되었습니다.

감옥을 두려워하지 말라, 전갈을 두려워하지 말라,
역병과 기근을 두려워하지 말라.
그리고 당신이 두려워해야 할 유일한 것은
누가 "나는 어떻게 하는지 알아요!"라고 말할 것입니다.
(A. 갈리치)

간단하고 간단하게 설명하자면, "어떤 프로그래밍 언어를 먼저 선택해야 합니까?"라는 질문에 대한 정답입니다. 자연에는 존재하지 않습니다. "이 셋 중 하나"라는 수업의 답변까지. 내가 이 글을 쓰고 있는 특정 순간인 2017년 4월 10일 키예프 시간 21시 38분 현재에도 존재하지 않습니다. 하지만 한 달, 6개월 또는 1년 앞으로.

존재하는 것은 여러 가지이다 올바른 질문스스로에게 물어보는 것이 유용한 질문입니다. 이것은 직업을 시작하기 위한 첫 번째 테스트 과제가 될 것입니다. 결정을 내리기 전에 이러한 질문에 답하고 일반적으로 해당 주제 영역에 대해 생각하고 조사하고 싶습니까?

그렇다면 나를 따라오세요.

몇 가지 경고

첫째로, 하나의 언어로는 충분하지 않습니다.공부 첫해에도. 최소한 몇 가지 "특수" 언어가 여전히 필요합니다(HTML, CSS, SQL, YAML, JSON, XML, Markdown - 최소한 다양한 언어의 예). 구문, 거의 확실하게 읽어야하며 높은 확률로 작성되어야합니다). 하지만 그 뿐만이 아닙니다. JS 프로그래머가 아닌 사람은 JS를 조금 읽어야 할 것이 거의 확실합니다. JS 프로그래머 - Python에 설명된 알고리즘의 구현을 확인하세요. 시스템 프로그래머가 스크립팅 언어로 다른 사람의 형편없는 코드를 처리하는 경우.

그리고 "중간" 레벨로 가는 도중에 여섯 가지 레벨을 마스터해야 합니다. 그리고 진정한 전문가가 되려면 온갖 환상적인 쓰레기의 패러다임을 이해해야 합니다.

둘째, 평생 동안 한 언어로 글을 쓸 가능성은 거의 없습니다.그리고 심지어 충분히 길지도 않습니다. 어쩌면 당신은 여기에 한 달 동안도 없을 수도 있습니다. 2003년 첫 직장에서 저는 C++ 알고리즘 전문가로 채용되었지만 PHP로 웹사이트를 약간 지원하고 Excel VBA로 라이브러리에 인터페이스를 추가했습니다. (전율). 그리고 후배들에게 일어나지 않는 정상적인 일도 없습니다.

그러나 이뿐만 아니라 귀하가 가장 좋아하는 사무실의 "주요" 언어가 바뀌거나 다른 고용주가 귀하가 가장 좋아하는 주제로 귀하를 고용할 것이며 스타트업 또는 기업 문화의 기류가 바뀔 것입니다. 그리고 WHAM은 더 이상 조직의 구조를 기억하지 못합니다. 그래서 신중하게 "제1 언어"를 선택했습니다.

따라서 일반적으로 이 선택을 취급해서는 안 됩니다. 너무 많은진지하게, 아내나 집을 선택하는 것과 같은 것입니다(변경될 수도 있지만 여전히 조금 더 어렵습니다). 시작하고, 모든 것을 시도하고, 자신의 것을 찾는 것이 "어디부터 시작해야 할지" 분석하는 데 몇 주/개월/년을 소비하는 것보다 훨씬 더 의미 있는 전략입니다.

셋째, 가장 중요한 것은 (그리고 처음 두 개부터 이어집니다) – 종종 "언어를 선택하는 것"이 ​​아니라 혀가 당신을 선택합니다. 당신이 하고 있는 일에 진심으로 관심을 갖고 그것을 인생의 중요한 부분으로 선택하는 것은 가치가 있습니다. 저는 "토요일에 시간제 프로그래밍을 하기를" 희망하는 사람들이 아니라 그런 사람들에게 특별히 이야기하고 있습니다. 저장) - 따라서 이 선택을 할 가치가 있으며 "무엇을 선택해야 하는지"에 대한 모든 조언은 관련이 없습니다. 흥미로운 일이나 유망한 고용주가 저절로 나타날 것이고, 멋있게 만들 수 없는 언어는 저절로 떨어지겠지만 또 다른 것은 성장할 것이다. 계속 지켜봐 주시기 바랍니다.

주의, 올바른 질문입니다!

그럼에도 불구하고 어딘가에서 시작하기 위해 소녀/소년은 인생에 대해 생각합니다(즉, 어떤 프로그래밍 언어를 배울 것인지 선택하는 것입니다). 시작한다), 다음과 같이 자문해 볼 수 있습니다.

왜 공부하러 가나요?먼저 자신에게 솔직하게 물어봐야 할 매우 중요한 질문입니다. 주요 직업(예: 미생물학 또는 회계)을 위한 추가 도구를 얻으시겠습니까? 여가 시간에 즐거운 시간을 보내시나요? 학교에서 아이를 도와주나요?.. 음, 좋습니다. mkdev에서는 기본적으로 여러분이 프로그래머로 일할 것이라고 가정합니다. (물론 미생물학자를 기꺼이 가르칠 수도 있지만, 그들에게 Ruby가 정말 인기가 많다는 사실을 알고 계셨나요?) . 그러나 가능한 한 빨리 IT 분야에서 직업을 찾고 싶다고 이미 확고히 확신하고 계십니까? 아니면 방금 시도하기로 결정하셨습니까? 두 번째 경우에는 자신이 좋아하는 것이 무엇인지 이해하기 위해 12가지 언어와 접근 방식을 시도해 볼 가치가 있을 수 있습니다. 그렇지 않으면 아무것도 아닙니다. 그것도 괜찮습니다!

관련 질문: 시간이 얼마나 있나요?"1년 안에 나는 이미 X달러를 벌어야 한다"라는 명확한 기한이 없으면 즉시 "대학 수업" 교육을 계획하는 것이 합리적이고 매우 즐거울 수 있습니다. 즉, 여러 고전 언어 목록을 작성하십시오. Scheme, Haskell, Prolog, 여러 산업용 항목(Java , Ruby, JS), 몇 가지 최신 유행 항목(Rust, Pony, Elixir)... 그리고 "정확히 무엇에 쓸 것인가"에 대한 질문은 저절로 생길 것입니다. . 하지만 "진정한 직업을 빠르게" 원한다면...

당신이 일하고 싶은 분야가 무엇인지 정확히 알고 있나요?“게임 개발만 하고 다른 건 안 맞는다”, “인공지능은 학교 때부터 꿈꿔왔던 것이다”, “하드웨어에 좀 더 가까워지고 각종 로봇과 센서를 프로그래밍하고 싶다”, 심지어 “내 친구들은 빅데이터를 활용해 TV 시리즈 스타트업을 시작하려고 합니다.'가 이 질문에 대한 좋은 답변입니다. 그러나 당신은 그것을 가질 의무가 전혀 없습니다. “전체 범위를 보여주세요”도 좋은 대답입니다. 그리고 “그동안 나는 삼촌 회사의 회계사를 도와주려고 노력할 것이지만 그들은 더 흥미로운 것을 원한다”는 것도 정상이다.

Victor는 프로그래밍의 첫 번째 단계를 시작하는 데 도움을 주고 기본 사항과 Ruby 언어를 가르칩니다!

더 나아가: 무엇을하고 싶으십니까?위와 같은 질문인 것 같은데요? 하지만. 눈을 감고 이상적인 작업 흐름이 어떤 모습일지 상상해 보세요. 얼마나 많은 노력을 쏟았는지도 모른 채 사용자가 만족할 수 있도록 인터페이스를 실험해 보시겠습니까? 게임의 물리 엔진을 위한 새로운 입자 충돌 알고리즘을 개발하고 이를 완성하는 데 3년이 걸리나요? 누군가가 생각해내기 전에 많은 코드를 빠르게 작성하여 수십 개의 알려진 구성 요소를 새로운 시작 아이디어에 결합하시겠습니까? 복잡한 이물질을 처리하여 새로운 환경에서 작동하게 하려고 하시나요? - 엄청난 수의 옵션이 있으며 일부는 "단순한 프로그래머"라는 직업에서 벗어나 DevOps, UI 전문가 또는 데이터 분석가 분야로 이어집니다... 이 명상에 최소 20분을 투자하세요. 결과는 전혀 예상치 못한 결과일 수 있습니다.

예를 들어 (이전 질문과 관련하여) 게임 개발에 참여하고 싶다고 확신하더라도 새로운 레벨을 디버그하고 싶다거나 물리적으로 정확한 충돌 알고리즘을 실행하면 정말 재미있을 것이라는 점을 이해하거나 - 수억 개의 연결을 견딜 수 있는 게임 서버를 만드는 것 - 이것은 여전히 ​​학습과 자기 개발의 방향이 매우 다릅니다.

그리고 위의 모든 질문에 답한 후에(또는 고의로 답을 연기하기로 결정한 후에) 실용적인 질문을 하는 것이 합리적입니다. 현재 어떤 언어가 활발히 사용되고 있나요?- 관심 있는 분야, 주제, 환경. 그리고 가까운 시일 내에 마스터할 세 가지(맞습니다!)를 선택하세요.

정확히 무엇을 선택해야 하는지 - 아래에서 간략한 개요를 제공하지만 그 자리에서 알아내야 합니다. 요즘 인기 있는 것 중 하나언어.

몇 가지 답변

이상하고 조용한 소리가 들리나요?

오래되고 녹슬어가는 것은 아래 나열된 "답변"입니다. 이 기사가 작성된 지 6개월이 지난 후 이 기사를 읽고 있다면 "답변" 섹션이 이미 약간 오래되었을 가능성이 높습니다( 만약에일부 치명적인 사건은 발생하지 않았으며 그 결과 모든 것이 쓸모 없게되었습니다.) 당신은 1년 후에 그것을 읽었습니다. 그것은 완전히 구식입니다. 당신은 5년 후에 그것을 읽었습니다 - ... 하지만 악마는 알고 있습니다. 우리 분야에서는 상황이 매일 바뀌지만 장기적으로 보면 상당히 안정적인 상태를 유지하는 경우가 많습니다.

글쎄, 일반적으로 명확합니다. 주의 깊게 읽으십시오.

다음은 가상의 상위 15개 현재 프로그래밍 언어에 대한 주관적이고 짧으며 불완전한 정보입니다(알파벳순).

저자는 각 항목에 특정 번호를 할당했습니다. 이는 개발자 dou.ua를 위한 주요 우크라이나 웹사이트의 공석 수이며, 여기에는 언어가 최소한 언급되어 있습니다. 이 수치 자체는 아무 의미가 없지만, 소련 붕괴 이후/유럽 국가 중 하나를 예로 들어 일부 불완전한 비교 분석을 할 수 있으며 일부 매우 부정확한 비교 결론을 도출할 수 있습니다.

참고: 이 숫자의 본질은 "숫자가 더 큰 것을 선택해야 한다"는 것이 아닙니다! 요점은 이러한 언어 중 하나의 숫자가 0이 아니라는 것입니다. 그다지 크지 않고 솔직히 말해서 그다지 번영하지 않는 나라에서는 숫자가 0이 아닙니다. 즉, 5개가 쓰여진 언어로 일자리를 찾을 수 있습니다. 하지만 이를 위해서는 정말 좋아해야 하며, 목표가 단순히 "적당한 금액의 돈으로 무언가를 프로그래밍하는 것"이라면 물론, 숫자가 더 높은 곳을 선택해야 합니다. 그들은 그것을 원하는 사람을 고용할 것입니다.

    씨(100?-검색 엔진이 대처할 수없는 것 같습니다.) -프로그래밍의 유일한 살아있는 할아버지이자 모든 살아있는 할아버지 중 가장 살아있는 할아버지입니다. 모든 시스템(아래에 설명된 Rust 및 Go에 대한 수정 사항 포함), 모든 종류의 마이크로 컨트롤러 및 임베디드 장치 프로그래밍, 드론 및 기타 놀라운 것들을 위한 모든 종류의 드라이버는 여전히 C입니다. 다른 언어와 라이브러리를 가속화합니다(예를 들어 원래 Python으로 작성되었다가 속도를 위해 C로 다시 작성된 다음 이 C 구현을 위한 래퍼가 Ruby, Julia 및 Haskell에 나타납니다... 이것이 우리가 하는 방식입니다. 살다). 한마디로 가능성이 낮습니다 첫 번째언어이지만 공부는 필수입니다. 더욱이, 그것은 전혀 가만히 있지 않고, 새로운 기준은 상당히 신선하고 훌륭합니다.

    C++ (144)- C의 조카(어떤 사람들에 따르면) 또는 유쾌하게 복잡한(다른 사람들에 따르면) 객체 지향, 메타 프로그래밍 가능, 엄청나게 복잡하고 컴파일 속도가 느림... 한마디로 C++는 프로그래밍 언어 중 나의 첫사랑입니다. . 이제는 판단할 수 있는 한 게임, 일부 데스크톱 시스템 및 C가 가능한 모든 곳에서 사용되지만 더 복잡한 코드가 필요합니다(gcc 컴파일러는 거의 모든 OS에서 사용할 수 있고 둘 다 컴파일하기 때문입니다). );

    C#(414)- 프로그래머가 자신의 영혼을 악마에게 팔고 Microsoft 생태계와 거의 밀접하게 연결되어 있는 몇 안 되는 언어 중 하나입니다(솔직히 말하자면, 특히 개발자의 경우 상당히 인상적으로 개발되었습니다). 적용 분야 - 게임 또는 복잡하고 값비싼 엔터프라이즈 소프트웨어. 현재로서는 언어 자체가 매우 아름답고 진보적입니다. 그리고 일반적으로 거의 모든 새롭지 않고 실용적인 범용 언어와 마찬가지로 약간의 기능, 많은 OO, 일부 메타 프로그래밍 등이 있습니다.

    클로저 (6)- 프로그래밍 언어의 마법 같은 유니콘은 함수형 언어인 Lisp의 후속인 JVM(아래 Java에 대해 읽어보세요)에서 실행됩니다. ClojureScript 방언은 JS로 컴파일됩니다(이것이 중요한 이유도 아래에서 읽어보세요). "스마트" 스타트업과 매우 진지한 회사의 생산에 사용됩니다. Big Love로만 선택할 수 있습니다 (하지만 그는 멋지네요).

    얼랭+엘릭서(5+10)- Erlang은 통신(이전) 및 일반적으로 고부하 분산(현재) 애플리케이션을 만드는 데 특히 널리 사용되는 언어 및 플랫폼입니다. Elixir는 동일한 플랫폼에서 실행되는 언어이지만 Erlang보다 덜 이질적입니다(그러나 플랫폼의 "기본" 언어는 여전히 최소한 어느 정도 이해되어야 합니다. 아래 Java에 대한 설명을 참조하십시오). 오늘날 이 모든 것은 약간 "엘리트주의"의 느낌을 주지만 일부 영역(예: 은행 시스템)에 확고히 뿌리를 두고 있으며 매우 흥미롭습니다.

    ES(JavaScript, CoffeeScript, TypeScript 등) (788+10+64+...)- 현재 가장 좋아하는 ES/JS/...는 본질적으로 언어가 아니라 언어 계열입니다. 웹 인터페이스와 모바일 인터페이스는 (여러 가지 다른 방식으로), 또한 (여러 가지 다른 방식으로) 서버 및 관리 소프트웨어로 작성되며 악마는 대머리입니다. 오늘날 "JavaScript 언어"라고 불리는 것이 정확히 무엇인지 판단하기는 매우 어렵습니다. 운에 따라 "JavaScript 프로그래머"라는 직업을 고용한 후에는 은행 시스템의 고대 인터페이스를 유지 관리하는 사람이 될 수도 있습니다. 그건 그렇고, 어떤 브라우저에서도 작동해야 합니다. 또는 강력한 형식의 TypeScript로 과학 데이터의 복잡한 시각화를 작성하는 최신 팀의 일원입니다. 또는 갑자기 오래된 Nokia에서 실행되는 무언가로 복잡한 방식으로 컴파일된 언어의 "다음" 버전에서 미래의 인터페이스 개발에 참여하게 됩니다... 하나로 설명할 수 없는 전체 세계 절. 하지만 이 분야에서 "모국어"를 찾는 것은 매우 위험합니다.

실제 개발에서 프로그래밍 언어의 선택이 무엇을 기반으로 하는지에 대한 세 번째 의견과 이야기도 있습니다.

    이동 (78)- 주로 "빠르고 멍청하며 신뢰할 수 있는 코드 만들기"를 위해 Google에서 만든 간단하고 효율적인 언어입니다. 그에 대한 생각의 비행은 언어의 무례함으로 인해 즉시 차단됩니다. 하지만 효과적입니다. 어떻게 설명할 수는 없습니다.

    자바 (466)- 특별한 경우. Java는 언어이자 플랫폼(JVM)입니다. 이 플랫폼은 예를 들어 재미있고 멋진 Clojure, 과학적으로 난해한 Scala, JRuby(동일한 Ruby이지만 JVM용)를 실행합니다. 그리고 오늘날 Java 자체는 한때 명성을 얻었던 "기업 노예를 위한 제한된 언어"가 아닙니다. 엄청나게 많은 강력한 라이브러리, 이 플랫폼에서 실행되는 언어 선택 및 다양성을 고려하면 자존심이 강한 프로그래머라면 Java에 대한 아이디어가 있어야 합니다. 그리고 Java는 Android용 유일한 개발 언어입니다.

    PHP (431)- 엄청난 평판을 가진 웹의 오래된 점유자입니다. 최신 버전에서는 대부분의 지옥 같은 유산을 제거했으며 일반적으로 꽤 괜찮은 현대 OO 언어입니다. 그러나 오래된 기억에 따르면 이는 인터넷 인프라의 매우 중요한 부분을 차지합니다. PHP 전문가를 고용하면 아키텍처 및 테스트를 갖춘 깔끔한 프로젝트를 마칠 수도 있고, 2000줄에 대해 구조화되지 않은 if/else를 사용하여 정신 나간 선사 시대 시스템을 지원할 수도 있습니다.

    파이썬 (303)- 한때 웹과 스타트업을 위한 유행 언어로서 Ruby의 "경쟁자"였던 이 언어는 이제 주로 Ruby를 기반으로 성장한 복잡하고 성인적인 웹 애플리케이션을 지원하는 데 사용되며 일부에서는 과학/빅 데이터 연구에 더 많이 사용됩니다. R을 막히게 합니다(아래 참조).

    R (16)- 범용 언어이지만 과학자/빅데이터에서만 사용됩니다. 꽤 지옥 같은 구문이지만(오래되었기 때문에), 이에 대한 멋진 패키지가 많이 있고 그에 대한 연구가 작성되어 있습니다. 세계에서 거의 최고의 언어인 것으로 밝혀졌습니다. 호기심을 만족시키다;

    루비 (124)- 불과 몇 년 전만 해도 '패셔너블'하고 '힙스터'했지만 오늘날에는 단순히 주류 언어 중 하나입니다. 매우 표현력이 풍부하고 간결하며 약간 "마법적"이며 다소 느립니다. 주로 웹 개발에 사용됩니다. 오늘날에는 첫눈에 반하거나 미워하기 쉬운 언어이며, 일자리를 찾는 것도 꽤 쉽습니다. Ruby는 오늘날 관리자와 테스터 모두에게 사랑받고 있습니다. 두 가지 모두를 위한 멋진 도구가 있습니다.

    러스트 (3)- 상당히 새로운 선수 중 한 명입니다. 빠르고 도전적입니다. 이는 시스템 프로그래밍 분야에서 C를 대체할 것을 약속하지만 현재로서는 "미래를 위해" 배우는 것이 더 합리적으로 보입니다.

    스칼라 (60)- Java 플랫폼의 "똑똑한 동생": 현대적이고 복잡하며 기능적이며 모든 비즈니스 분석에서 큰 사랑을 받아 빠르게 인기를 얻고 있습니다.

    스위프트/오브젝티브-C(58+15)- iOS 개발을 위한 유일한 선택입니다. 물론 Swift에만 집중해야 합니다(Objective-C는 이미 이전 애플리케이션을 지원하는 데만 사용됩니다). 일반적으로 C# 및 자바. 적용 가능성이 (의도적으로) 제한되어 있기 때문에 Apple에 자신의 운명을 확고히 맡기로 결정한 사람들에게 첫 번째로 권장될 수 있습니다.

어쨌든 일반적으로 이렇습니다.

이 목록에 포함되지 않은 몇 가지 사항이 있습니다. 예를 들어 Perl은 개발자의 수요가 꽤 많지만 언어 자체가 이상한 상태이므로 "첫 번째" 언어로 권장할 수 없습니다. 또는 예를 들어 Lua도 인기가 있지만 다른 시스템(주로 게임)을 위한 작은 스크립트의 언어로서 "단순한 Lua 프로그래머"가 되는 것은 상당히 무의미해 보입니다.

아, 다 이해해요. 무엇을 선택해야 할까요?..

글쎄요. 다 가져 가라. (웃음)

아뇨, 정말요. 실제로 합리적인 전략(물론 "반년 동안 추가 돈을 벌지 않고" 직업에 상당한 시간을 할애할 경우)은 무엇을 알아내는 것입니다. 일부적어도 다음 달에는 관심 있는 언어를 살펴보세요. 디자이너를 위한 지침의 색상처럼 선택할 수 있습니다. "가까운 것에서", "반대에서", "보완에서"...

첫 번째 단계의 목표는 흥미를 유발하고 성공을 시작하는 것입니다. 하지만 오직 당신만이 이 목표를 향한 길을 닦을 수 있으며, 아마도 처음은 아닐 것입니다. 그래서 간다.

간략히 말하자면...

우리 분야에서는 올바른 답을 아는 것보다 질문을 하는 것이 항상 더 중요합니다. 답이 바뀌기 때문이죠. 그리고 매일 질문이 필요합니다. 관심을 갖고, 모든 것을 조금씩 배우고, 세상을 자세히 살펴보세요.

나머지는 저절로 발생합니다.

Kasper Beyer "프로그래밍 언어의 정확하고 간략한 역사".

1800

Joseph Marie Jacquard는 천공 카드를 읽는 방법을 직기에게 가르쳐 최초의 멀티스레드 데이터 처리 장치를 만들었습니다. 그의 발명품은 스카이넷의 탄생을 예견한 실크 직공들의 적대감에 부딪혔습니다.

1842

Ada Lovelace는 고귀한 추구를 추구하는 동안 지루해졌습니다. 그녀는 나중에 최초의 출판된 컴퓨터 프로그램으로 알려진 것을 노트북에 스케치했습니다. 유일한 불편함은 컴퓨터가 아직 발명되지 않았다는 점이었습니다.

1936

Alan Turing은 모든 것을 발명했지만 이것이 그에게 화학적 거세를 선고한 영국 법원의 눈에 그를 정당화하지는 않습니다.

나중에 여왕은 그를 용서했지만, 불행하게도 그 당시 그는 이미 죽은 지 오래되었습니다.

1957

John Backus는 실제 프로그래머가 사용하는 최초의 언어인 FORTRAN을 만듭니다.

1959

Grace Hopper는 최초의 산업 지향 프로그래밍 언어를 발명하고 이를 "공통 비즈니스 지향 언어" 또는 줄여서 COBOL이라고 부릅니다.

1964

John George Kemeny와 Thomas Kurtz는 프로그래밍이 너무 어려워 기본으로 돌아가야 한다고 결정했습니다. 그들은 프로그래밍 언어를 BASIC이라고 부릅니다.

1970

Niklaus Wirth가 파스칼을 개발합니다. 이것은 그가 창작에 참여한 여러 언어 중 하나입니다.이자형 Wirth: 그는 언어를 만드는 것을 좋아했습니다.

그는 또한 무어의 법칙을 무의미하게 만드는 Wirth의 법칙을 공식화했습니다.그리고 너무 커져서 메인프레임도 따라잡을 수 없는 프로그램을 만듭니다. 이는 나중에 Electron.js의 발명을 통해 입증될 것입니다.

1972

Dennis Ritchie는 Bell Labs에서 일하는 것이 지루해졌고 중괄호를 사용하여 C를 만들기로 결정했으며 프로젝트는 큰 성공을 거두었습니다.이후 그는 성능 향상을 위해 분할 오류 및 기타 개발자 친화적인 기능을 추가했습니다.

아직 몇 시간이 남아 있었기 때문에 그와 벨 연구소의 친구들은 C 언어를 시연하기 위한 샘플 프로그램을 만들기로 결정하고 Unix라는 운영 체제를 만들었습니다.

1980

Alan Curtis Kaye는 객체 지향 프로그래밍을 발명하고 이를 Smalltalk라고 부릅니다. 스몰토크에서는 모든 것이 객체이고 심지어 객체도 객체입니다.

1987

래리 월(Larry Wall)은 종교 분야에서의 경험을 바탕으로 설교자가 되었고,이자형 번째 교리가 Perl을 만듭니다.

1983

Jean David Ishbia는 Ada Lovelace의 프로그램이 결코 시작되지 않았음을 알아차리고 언어를 만들고 그녀(Ada)의 이름을 따서 명명하기로 결정했습니다. 그러나 언어도 시작되지 않습니다.

1986

Brad Cox와 Tom Love는 Smalltalk를 기반으로 읽을 수 없는 C 버전을 만들기로 결정했습니다. 그들은 그것을 Objective-C라고 불렀지만 누구도 그 구문을 이해할 수 없습니다.

1983

Björn Stroustrup은 미래로 돌아가서 C 언어에 필요한 것을 알아냈습니다.너무 적다 컴파일 시간. 그는 자신이 생각할 수 있는 모든 기능을 언어에 추가하고 이를 C++라고 부릅니다.

전 세계의 프로그래머들은 직장에서 고양이 비디오를 시청하고 xkcd를 읽을 수 있는 훌륭한 변명거리를 제공하면서 이에 동의합니다.

1991

Guido van Rossum은 중괄호를 좋아하지 않아서 . 언어 구문을 선택할 때 저자는 Monty Python과 그의 비행 서커스에서 영감을 받았습니다.

1993

Roberto Ierusalimski와 그의 친구들은 현지 브라질 스크립트 언어가 필요하다고 결정했습니다.안에 현지화 중에 오류가 발생하여 인덱스가 0이 아닌 1부터 계산되기 시작했습니다.언어는 Lua라고도 불렸습니다.

1994

Rasmus Lerdorf는 자신의 CGI 홈페이지 스크립트용 템플릿 엔진을 만들고 해당 도트 파일을 인터넷에 공개합니다.

전 세계는 이러한 도트 파일을 어디에서나 사용하기로 결정하고 Rasmus는 열광하여 여기에 몇 가지 추가 데이터베이스 바인딩을 추가하고 결과를 RHP라고 부릅니다.

1995

Yukihiro Matsumoto는 별로 행복하지 않았고 다른 프로그래머들도 불행하다는 것을 알아차렸습니다. 그는 그들을 행복하게 만들기 위해 Ruby를 만듭니다. Ruby를 만든 후 “Matz”는 행복했고, Ruby 커뮤니티도 행복했고, 모두가 행복했습니다.

1995

Brendan Eich는 전 세계의 모든 웹 브라우저와 궁극적으로 Skynet을 제어할 언어를 개발하기 위해 하루 휴가를 내고 있습니다. 처음에는 넷스케이프에 가서 그 언어가 라이브스크립트(LiveScript)라고 했는데, 코드리뷰를 하면서 자바가 인기를 얻었기 때문에결정됐다 중괄호를 사용하고 언어 이름을 JavaScript로 바꿉니다.

자바는 상표이기 때문에 문제가 발생할 수 있다는 사실이 밝혀져 나중에 자바스크립트를 로 이름을 바꿨으나 여전히 예전 이름으로 불리고 있다.

1996

James Gosling은 디자인 패턴이 실용주의보다 우선하는 최초의 진정한 장황한 객체 지향 프로그래밍 언어인 Java를 발명했습니다.

2001

Anders Hejlsberg는 Java를 재창조하고 C로 프로그래밍하는 것이 Java로 프로그래밍하는 것보다 더 멋있어 보이기 때문에 C#이라는 언어를 사용합니다. 새로운 버전의 Java는 Java와 완전히 다르기 때문에 모두가 좋아합니다.

2005

David Heinemeier Hansson은 나중에 Ruby on Rails라는 웹 프레임워크를 만듭니다. 사람들은 이 두 가지가 서로 다르다는 사실을 잊어버립니다.

2006

John Resig는 JavaScript 도우미 라이브러리를 작성합니다. 모두가 그것이 언어라고 생각하고 인터넷에서 jQuery 코드를 복사하여 붙여넣는 것으로 경력을 쌓습니다.

2009

Ken Thompson과 Rob Pike는 C와 유사하지만 더 많은 보안 도구와 Gophers를 마스코트로 사용하여 더 시장성이 있는 언어를 만들기로 결정했습니다.

그들은 이 언어를 Go라고 부르고 이를 오픈 소스로 결정하고 브랜드 무릎 패드와 Gopher 헬멧을 판매하기 시작합니다.

2010

Graydon Hoare는 또한 C와 유사한 언어를 만들고 싶어합니다. 그는 그것을 Rust라고 부릅니다. 모든 사람은 소프트웨어의 모든 부분을 즉시 Rust로 다시 작성하기를 요구합니다. Graydon은 좀 더 빛나는 것을 원하고 Apple용 Swift 작업을 시작합니다.

2012

Anders Hejlsberg는 웹 브라우저에서 C#을 작성하고 싶어합니다. 그는 기본적으로 더 많은 Java가 포함된 JavaScript인 TypeScript를 만듭니다.

2013

Jeremy Ashkenas는 Ruby 개발자만큼 행복해지고 싶어 JavaScript로 변환되지만 Ruby에 더 가까운 CoffeeScript를 만듭니다. Jeremy는 결코 Matz와 Ruby 개발자만큼 진정으로 행복해지지 않았습니다.

2014

Chris Latner는 Objective-C가 아닌 것이 주요 목표인 Swift를 만듭니다. 궁극적으로 이 언어는 Java와 유사합니다.

개발의 시작

어셈블리어

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

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

예를 들어 Zilog Z80 프로세서의 경우 기계 명령어 00000101은 프로세서에 B 레지스터를 1씩 감소시키라고 지시합니다. 어셈블리 언어에서는 DEC B로도 작성됩니다.

구조화된 프로그래밍

다음 단계는 1954년에 최초의 고급 언어인 Fortran이 만들어졌을 때 이루어졌습니다. FORTRAN - 공식 번역기). 고급 언어는 일부 음성 언어 단어와 일반적인 수학 기호를 사용하여 자연어를 모방합니다. 이러한 언어는 인간에게 더 편리하며, 도움을 받으면 최대 수천 줄의 프로그램을 작성할 수 있습니다. 그러나 짧은 프로그램에서는 쉽게 이해할 수 있었지만 더 큰 프로그램에서는 언어를 읽을 수 없고 관리하기가 어려워졌습니다. 이 문제에 대한 해결책은 구조화된 프로그래밍 언어의 발명과 함께 나왔습니다. 구조화된 프로그래밍 언어 ), ALGOL(1958), Pascal(1970), C(1972) 등이 있습니다.

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

이 접근 방식의 핵심은 프로그램을 구성 요소로 분할하는 기능입니다.

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

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

이런!

그 결과, 객체지향 프로그래밍의 원리가 1970년대 후반과 1980년대 초반에 개발되었습니다. OOP는 구조화된 프로그래밍의 최고의 원칙과 강력하고 새로운 개념을 결합합니다. 캡슐화, 다형성그리고 계승.

객체지향 언어의 예로는 오브젝트 파스칼, C++,

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

연결

  • 프로그래밍과 컴퓨팅의 역사

위키미디어 재단. 2010.

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

    프로그래밍 언어는 프로그램을 작성하도록 설계된 공식적인 기호 시스템입니다. 프로그램은 일반적으로 구현자(예: 컴퓨터)가 이해할 수 있는 형식으로 일부 알고리즘을 나타냅니다. 프로그래밍 언어에 따라 세트가 결정됩니다... ... Wikipedia

    Ruby 의미: 다중 패러다임 실행 유형: 인터프리터 등장: 1995 저자: Yukihiro Matsumoto 최신 버전: 1.9.1 ... Wikipedia

    Ruby 의미: 다중 패러다임 실행 유형: 인터프리터 표시 날짜: 1995 저자: Yukihiro Matsumoto 최신 버전: 1.9.1 ... Wikipedia - (Haykakan Sovetakan Socialistakan Hanrapetutyun) Armenia(아르메니아인의 하야스탄 국가). I. 일반 정보 아르메니아 SSR은 1920년 11월 29일에 결성되었습니다. 1922년 3월 12일부터 1936년 12월 5일까지 이는 트랜스코카서스 연방의 일부였습니다(참조... ...

    -(Lietuvos Taribu 사회주의 공화국) 리투아니아(Lietuvos). I. 일반 정보 리투아니아 SSR은 1940년 7월 21일에 결성되었습니다. 1940년 8월 3일부터 소련의 일부가 되었습니다. 소련의 서유럽 지역에 위치하고 있습니다. 북쪽의 국경은... ... 위대한 소련 백과사전

    대기 테스트용 Buran OK GLI 샘플(BTS 002). 항공 및 우주 살롱 MAKS, 1999 ... Wikipedia

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

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

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

이 글은 “언어 X는 죽어야 한다”고 외치는 사람들에 대한 응답으로 작성되었습니다. 답변이 매우 적절하고 설득력 있기를 바랍니다. 또한 이 기사가 논쟁적인 것 외에도 교육적인 가치도 있기를 바랍니다.