저수준 기계 프로그래밍 언어. 프로그래밍 수준. 기계어와 저수준 언어

프로그래밍 언어 디자인

프로그래밍 언어의 목적

프로그래밍 언어들

프로그래밍 언어는 사람을 마이크로 프로세서 시스템과 연결하도록 설계되었습니다. 이 연결은 실행해야 하는 일련의 명령(명령)을 사람에서 시스템으로 전송하는 것으로 구성됩니다. 이러한 명령의 순서 집합을 호출합니다. 프로그램.

저것. 프로그래밍 언어는 작성을 의미합니다 컴퓨터 프로그램, 특정 프로세스를 수행하고 장치 관리를 구성하기 위한 지침이 포함되어 있습니다.

프로그래밍 언어는 사용하도록 설계되었습니다. 아스키, 즉 모든 그래픽 ASCII 문자의 가용성은 모든 언어 구성을 작성하기 위한 필요 충분 조건입니다.

언어 프로그램은 텍스트 에디터. 왜냐하면 프로세서는 디지털 이진 코드만 이해하고 작성된 명령은 프로그램을 사용하여 기계어로 변환됩니다. 번역가에는 두 가지 유형이 있습니다.

1) 인터프리터 - 프로그램을 작성하는 동안 텍스트를 직접 처리합니다. 각 라인을 별도로;

2) 컴파일러 - 프로그램의 전체 텍스트를 동시에 변환합니다.

프로그램의 작업은 데이터 처리상수그리고 변수. 상수 및 변수에 대한 작업은 연산자를 정의합니다. 운영자언어 교육이다.

프로그램은 차례로 작성된 명령문의 시퀀스입니다. 구조에 따라 프로그램은 선형, 순환 및 분기가 될 수 있습니다.

프로그래밍 언어에는 다음과 같은 수준(자연적, 인간적)이 있습니다.

저수준 - 기계어;

어셈블리 언어는 기계어에 가깝습니다.

언어 높은 레벨- 사람과 가깝다.

사용 기계어, 유일하게 이해할 수 있는 마이크로프로세서는 복잡하고 기억하기 어려운 이진 코드 조합을 기록할 필요성과 관련된 어려움을 일으키며, 디지털 코드 시퀀스인 컴파일된 프로그램에서 오류를 찾기 어렵고 변경을 하기 어려움 컴파일된 프로그램에

표시된 단점과 함께 코드 조합 언어에도 장점이 있습니다. 이 언어의 프로그램은 가장 효율적이며 최소한의 메모리를 사용하고 더 빠르게 실행됩니다.

예시:기계어를 나타내기 위해 우리는 DOS 프로그램 DEBUG를 사용합니다. 기계어또는 어셈블러 명령을 사용합니다(그림 3.16).

그림 3.16 - DEBUG 프로그램 창에서 메모리 셀의 내용 보기

프로그래밍 언어의 개념

컴퓨터는 기계어(기계어)로 표시된 프로그램만 받아들입니다. 스스로 기계어로 프로그램을 작성하는 것은 매우 어려우며, 이러한 복잡성은 프로그램의 크기가 증가하고 원하는 문제를 해결하는 복잡성이 증가함에 따라 급격히 증가합니다. 프로그램 크기가 수십 바이트를 초과하지 않고 수동 데이터 입출력 작업이 필요하지 않은 경우 조건부로 기계어 코드가 허용되는 것으로 간주할 수 있습니다.

따라서 오늘날 거의 모든 프로그램은 프로그래밍 언어를 사용하여 만들어집니다. 이론적으로 프로그램은 일반 인간(자연) 언어를 사용하여 작성할 수 있습니다. 이를 메타 언어 프로그래밍(일반적으로 알고리즘을 컴파일하는 단계에서 유사한 접근 방식이 사용됨)이라고 하지만 이러한 프로그램을 기계로 자동 번역하는 것은 아직 불가능합니다. 자연어의 높은 모호성으로 인한 코드.

프로그래밍 언어 ​- 인공 언어. 그것들은 번역자에게 그 의미가 명확하고 제한된 수의 "단어"에서 자연적인 것과 다릅니다. 엄격한 규칙명령 레코드(연산자). 이러한 요구 사항의 전체는 프로그래밍 언어의 구문을 형성하고 각 명령 및 기타 언어 구성의 의미는 의미 체계를 형성합니다. 프로그램 표기법 위반은 번역가가 운영자의 의도를 이해하지 못하고 이에 대한 메시지를 발행한다는 사실로 이어집니다. 구문 오류. 올바른 쓰기알고리즘에 해당하지 않는 언어 명령은 의미론적 오류(논리적 오류 또는 런타임 오류라고도 함)를 발생시킵니다.

프로그램에서 오류를 찾는 과정을 테스팅이라고 하고, 오류를 제거하는 과정을 디버깅이라고 합니다.

프로그래밍 언어 수준

프로세서 다른 유형다른 명령 집합이 있습니다. 프로그래밍 언어가 특정 유형의 프로세서에 중점을 두고 그 기능을 고려한다면 저수준 프로그래밍 언어라고 합니다. 에 이 경우"낮다"는 "나쁨"을 의미하지 않습니다. 이는 언어 연산자가 기계어에 가깝고 특정 명령프로세서.

가장 낮은 수준의 언어는 언어입니다. 어셈블러 , 단순히 숫자가 아닌 니모닉이라는 기호 규칙을 사용하여 각 기계어 명령어를 나타냅니다. 하나의 기계 명령어를 하나의 어셈블리 명령어로 명확하게 변환하는 것을 음역이라고 합니다. 에 대한 지침이 설정되기 때문에 다른 모델프로세서가 다르고 특정 컴퓨터 아키텍처에는 자체 어셈블리 언어가 있으며 그 안에 작성된 프로그램은 이 환경에서만 사용할 수 있습니다.

한편으로는 개발자가 프로세서의 모든 기능에 액세스할 수 있기 때문에 저급 언어의 도움으로 매우 효율적이고 컴팩트한 프로그램이 생성됩니다. 반면에 이것은 컴퓨터 구조에 대한 아주 좋은 이해가 필요하며 디버깅이 어렵습니다. 큰 응용 프로그램, 그리고 결과 프로그램은 다른 유형의 프로세서가 있는 컴퓨터로 전송할 수 없습니다.

이러한 언어는 일반적으로 소형 시스템 응용 프로그램, 장치 드라이버, 비표준 장비가 있는 도킹 모듈을 작성하는 데 사용되며, 하드웨어 리소스에 직접 액세스할 수 있는 능력, 소형, 속도가 가장 중요한 요구 사항이 될 때입니다. 예를 들어 일부 지역에서는

컴퓨터 그래픽에서 라이브러리는 집중적인 계산이 필요한 이미지 처리 알고리즘을 효과적으로 구현하는 어셈블리 언어로 작성됩니다.

컴퓨터보다 사람에게 훨씬 더 가깝고 이해하기 쉽습니다. 특정 컴퓨터 아키텍처의 기능은 고려되지 않으므로 만든 프로그램수준에서 소스 코드이 언어의 번역기가 만들어진 다른 플랫폼으로 쉽게 이식할 수 있습니다. 명확하고 강력한 명령의 도움으로 고급 언어로 프로그램을 개발하는 것이 훨씬 쉽고 프로그램을 만들 때 실수가 훨씬 적습니다.

프로그래밍 언어의 세대

프로그래밍 언어는 일반적으로 5세대로 나뉩니다.

1세대에는 최초의 컴퓨터가 처음 탄생한 1950년대 초에 만들어진 언어가 포함됩니다. "한 명령 - 한 줄"의 원칙에 따라 만들어진 최초의 어셈블리 언어였습니다.

2세대 프로그래밍 언어는 1950년대 후반과 1960년대 초반에 번성했습니다. 그런 다음 변수 개념이 등장한 기호 어셈블러가 개발되었습니다. 최초의 본격적인 프로그래밍 언어가 되었습니다. 외관 덕분에 프로그램의 개발 속도와 신뢰성이 눈에 띄게 향상되었습니다.

3세대 프로그래밍 언어의 출현은 일반적으로 60년대에 기인합니다. 이때 보편적인 고급 언어가 탄생했으며 도움으로 모든 영역의 문제를 해결할 수 있습니다. 상대적 단순성, 특정 컴퓨터로부터의 독립성 및 강력한 구문 구조를 사용할 수 있는 능력과 같은 새로운 언어의 이러한 특성은 프로그래머의 생산성을 극적으로 증가시키는 것을 가능하게 했습니다. 대부분의 사용자가 이해할 수 있는 이러한 언어의 구조는 컴퓨터 이외의 분야에서 소규모 프로그램(일반적으로 엔지니어링 또는 경제적 성격)을 작성하는 전문가의 상당수를 끌어들였습니다. 이 세대의 대다수 언어가 오늘날 성공적으로 사용됩니다.

1970년대 초반부터 현재까지 4세대 언어의 시대는 계속되었다.


이 언어는 대규모 프로젝트를 구현하고 안정성과 생성 속도를 높이도록 설계되었습니다. 그들은 일반적으로 좁은 주제 영역의 특정 개념으로 작동하는 보편적인 언어가 아니라 도메인 특정 언어를 사용하여 좋은 결과를 얻을 수 있는 특수 응용 분야에 중점을 둡니다. 일반적으로 강력한 연산자가 이러한 언어에 내장되어 있어 한 줄로 이러한 기능을 설명할 수 있으며, 이를 위해서는 저세대 언어로 수천 줄의 소스 코드가 필요합니다.

5세대 언어의 탄생은 1990년대 중반에 일어났다. 그들은 또한 시스템을 포함합니다 자동 생성 응용 프로그램프로그래밍 지식 없이 시각적 개발 도구를 사용합니다. 이러한 언어에 포함된 주요 아이디어는 결과 텍스트를 범용 프로그래밍 언어(그런 다음 컴파일해야 함)로 자동 생성하는 기능입니다. 명령어는 프로그래밍에 익숙하지 않은 사람에게 가장 편리한 방법을 사용하여 가장 시각적인 형태로 컴퓨터에 입력됩니다.

고급 프로그래밍 언어

포트란(포트란). 1950년대 Jim Backus가 만든 최초의 컴파일된 언어입니다. 어셈블리에서 독점적으로 프로그램을 개발한 프로그래머는 고성능 가능성에 대해 심각한 의구심을 표했습니다.

따라서 고급 언어인 Fortran 컴파일러 개발의 주요 기준은 효율성이었습니다. 실행 가능한 코드.

Fortran은 여러 가지 중요한 프로그래밍 개념을 최초로 구현했지만 효율적인 기계어 코드를 얻을 수 있는 가능성 때문에 프로그램 작성의 편의성이 희생되었습니다. 그러나 통계적 복합물에서 위성 제어 패키지에 이르기까지 이 언어에 대해 수많은 라이브러리가 만들어졌습니다. 따라서 Fortran은 많은 조직에서 계속 활발히 사용되고 있으며 현재 다음 Fortran 표준 F2k에 대한 작업이 진행 중입니다. 다중 프로세서가 있는 병렬 슈퍼컴퓨터를 위한 표준 버전의 Fortran - HPF(고성능 포트란)가 있습니다.

코볼(코볼). 1960년대 초에 개발된 경제 분야의 비즈니스 문제를 해결하기 위해 컴파일된 언어입니다. 장황한 표현으로 유명합니다. 연산자는 때때로 평범한 것처럼 보입니다. 영어구. Cobol은 작업을 위한 매우 강력한 도구를 구현했습니다. 대용량다른 곳에 저장된 데이터 외부 매체. 이 언어로 많은 응용 프로그램이 만들어졌으며 오늘날 적극적으로 활용되고 있습니다.

알골(알골). 1960년에 만들어진 컴파일 언어. Fortran을 대체할 예정이었지만 복잡한 구조로 인해 널리 사용되지 않았습니다. 1968 년 Algol 68 버전이 만들어졌으며 기능면에서 여전히 많은 프로그래밍 언어보다 앞서 있지만 충분하지 않기 때문에 효율적인 컴퓨터적시에 좋은 컴파일러를 만드는 것은 불가능했습니다.

파스칼(파스칼).많은 현대 프로그래밍 아이디어의 창시자인 Niklaus Wirth가 1970년대 후반에 만든 Pascal 언어는 여러 면에서 Algol을 연상시키지만 프로그램 구조에 대한 여러 요구 사항을 강화하고 성공적으로 사용할 수 있는 기능을 가지고 있습니다. 큰 프로젝트를 만들 때.

기초적인(기초적인).이 언어에는 컴파일러와 인터프리터가 있으며 세계에서 인기도 1위입니다. 1960년대에 교육용 언어로 만들어졌으며 배우기 매우 쉽습니다.

C(C). 주어진 언어벨 연구소에서 만들어졌으며 처음에는 질량으로 간주되지 않았습니다. 동등하게 효율적이고 컴팩트한 프로그램을 만들 수 있고 동시에 특정 유형의 프로세서에 의존하지 않기 위해 어셈블러를 대체할 계획이었습니다.

C는 여러 면에서 파스칼과 유사하며 추가 자금직접적인 메모리 조작을 위해 (포인터). 1970년대에 이 언어로 많은 사람들이 적용되고 시스템 프로그램잘 알려진 여러 운영 체제(Unix).

C++(C++). C++는 1980년 Bjarne Stroustrup이 만든 C 언어의 객체 지향 확장입니다. 프로그래머의 생산성을 비약적으로 높일 수 있었던 새로운 강력한 기능들이 C 언어에서 상속된 특정 하위 수준에 중첩되어 복잡하고 안정적인 프로그램을 만들려면 높은 수준의 개발자의 전문 교육.

자바(자바, 자바).이 언어는 C++를 기반으로 1990년대 초 Sun에서 만들었습니다. 모든 저수준 기능을 제거하여 C++ 기반 응용 프로그램 개발을 단순화하도록 설계되었습니다. 하지만 주요 특징이 언어의 - 컴파일은 기계어 코드가 아니라 플랫폼 독립적인 바이트 코드로 이루어집니다(각 명령은 1바이트를 차지합니다). 이 바이트코드는 오늘날 모든 플랫폼용으로 만들어진 버전인 JVM(Java Virtual Machine)인 인터프리터를 사용하여 실행할 수 있습니다.

많은 Java 머신이 존재하기 때문에 Java 프로그램은 소스 코드 수준에서뿐만 아니라 바이너리 바이트 코드 수준에서도 이식될 수 있습니다. 이것이 오늘날 Java가 BASIC 다음으로 세계에서 인기 있는 2위를 차지하는 이유입니다.

특별한 주의이 언어의 개발에서 두 가지 방향이 제공됩니다. 모든 종류의 지원 모바일 기기가전제품에 내장된 마이크로컴퓨터(지니테크놀로지), 전 세계 서버에서 실행 가능한 플랫폼 독립형 소프트웨어 모듈 제작 로컬 네트워크다른 운영체제 (자바 기술콩). 지금까지 이 언어의 주요 단점은 낮은 성능입니다.

“옛날 옛적에 왕자님이 공주님과 결혼하고 싶어 했어요. 그래서 그는 전 세계를 여행했습니다 ... 예, 모든 곳에 문제가있었습니다. 많은 공주가 있었지만 그들이 진짜인지 여부를 완전히 인식 할 수 없었습니다. 항상 그들에게 문제가있었습니다.

G. H. 안데르센. 완두콩에 공주

찾으려고 숙련된 개발자당신은 비슷한 문제에 직면하고 있습니다. 채용 공고에 대한 답변이 많습니다. 후보자가 요구되는 전문성 수준을 충족하는지 확인하는 방법은 무엇입니까? 프로그래머의 전문 분야는 유망한 것으로 간주됩니다. 봉건 분열 기간 동안 가짜 공주보다 2 개월 과정의 지원자가 더 많습니다.

신청자와의 사전 대화 연습은 시간 비용 때문에 적합하지 않았습니다. 1 차 선택 단계는 인사 서비스 전문가에게 이전되었습니다. 첫째, 지원자는 5점 척도로 프로그래밍 분야의 역량을 독립적으로 평가하는 설문지를 통과합니다. 기술 사용 기간을 나타내며 "완료 된 프로젝트"표를 채 웁니다. 얻은 정보는 지원자의 경험과 전문적인 전망에 대한 일반적인 아이디어를 제공합니다. 초보 개발자는 과대평가하는 경향이 있습니다. 예를 들어, 응시자는 Python 지식 수준을 4로 "어떤 문제라도 해결할 준비가 됨"으로 간주하고 언어 사용 경험은 2주를 나타냅니다.

지원자의 역량은 실무에서 평가됩니다. 응시자는 테스트 작업을 완료합니다. 분석에 따라 수준이 결정됩니다.

첫 번째 평가 요소는 실행 시간입니다.

주니어 개발자가 동일한 작업을 완료하는 데 일주일이 걸립니다. 시니어는 몇 시간 안에 시험을 마칠 것입니다. 지원자의 테스트 과제 완료 기간에 대한 평가도 지표입니다. 주니어 레벨 개발자는 당면한 작업에 대해 지나치게 낙관적이며 복잡성을 과소평가합니다. 그리고 경험 부족으로 마감 시간에 맞지 않습니다. "중간" 수준의 전문가는 작업에 대해 비관적인 경향이 있습니다. 주니어 개발자로서의 경험. 예상 리드 타임을 과도하게 늘립니다. 선임 개발자는 현실적입니다. 용어를 과도하게 과대평가하지 않고 합리적으로 위험을 부과합니다.

두 번째 요점은 코드의 품질입니다.

몇 년 동안 지원자들은 평가를 위해 간단한 브라우저 게임 "Tic-Tac-Toe"를 작성해 왔습니다. 공석에 따라 특정 언어나 기술을 사용하는 것이 좋습니다. 직원의 상당한 확장이 계획된 경우 후보자는 툴킷을 선택할 자유가 있었습니다.

이제 검증 작업을 완료하기 위한 수십 가지 옵션이 있습니다. EDISON 테스터는 개발자가 PHP로 작성한 3개의 코드 스니펫(웹 애플리케이션 요청 처리)을 선택했습니다. 다른 수준그리고 댓글을 추가했습니다.

소위 "똥 코드"의 예부터 시작하겠습니다.

$user = userRequestWithPassword($_COOKIE ["로그인" ], $_COOKIE ["비밀번호" ]);

쿠키에 사용자 이름과 비밀번호를 저장합니다. 명백한 보안 오류입니다. 쿠키는 요청 시 브라우저에서 서버로 전송됩니다(페이지 열기/새로 고침). 차단 가능성.

만약에($사용자 != 널) { 만약에(isset($_POST["submitEdit" ])) (

연속적인 조건부 블록에서 POST 요청 매개변수를 기반으로 사이트 작업을 결정합니다. 코드가 더 복잡해지고 다루기 어렵고 읽을 수 없게 됩니다. 작업의 구현을 용이하게 하기 위해 숙련된 프로그래머는 MVC와 같은 라우팅 및 패턴을 고안했습니다.

$deal = dealRequest($_GET ["dealId" ]); $connect = mysqli_connect(BAZA_SERVER, BAZA_USER, BAZA_PASSWORD, BAZA_MYSQL); $name = mysqli_real_escape_string($connect , $_POST ["이름" ]); $date = mysqli_real_escape_string($connect, $_POST ["날짜" ]); $insured = mysqli_real_escape_string($connect, $_POST ["보험" ]); $obligor = mysqli_real_escape_string($connect, $_POST ["채무자" ]); $countryObligor = mysqli_real_escape_string($connect, $_POST ["countryObligor" ]); $amount = mysqli_real_escape_string($connect, $_POST ["금액" ]); $currency = mysqli_real_escape_string($connect, $_POST ["통화" ]); $percent = mysqli_real_escape_string($connect, $_POST ["퍼센트" ]); $tenor = mysqli_real_escape_string($connect, $_POST ["테너" ]); $type = mysqli_real_escape_string($connect, $_POST ["유형" ]); $responseDate = mysqli_real_escape_string($connect, $_POST ["responseDate" ]); $person = mysqli_real_escape_string($connect, $_POST ["사람" ]);

기본 작업을 위한 성가신 코드. 숙련된 프로그래머는 한 줄로 블록을 작성합니다.

만약에 (!비어 있는($_FILES ["업로드" ]["이름" ])) ( $path_directory = "문서/" ; $filename = $_FILES ["업로드" ]["이름" ]; 만약에(preg_match( "/[.](doc)|(docx)|(pdf)|(xls)|(jpg)$/", $_FILES ["업로드" ]["이름" ])) ( $source = $_FILES ["업로드" ]["tmp_name" ]; $target = $path_directory . $파일명 ; $fileName = $moved = move_uploaded_file ($source , $target ); ) ) 또 다른( $파일명 = $deal["문서"]; ) $query = "업데이트 딜 세트 이름=" $name ", date=" $date ", nameOfTheInsured=" $insured ", nameOfTheObligor=" $obligor ", countryOfTheObligor=" $countryObligor ", amount=" $amount ", CurrencyOfTheDeal=" $currency ", percentToBeInsured=" $percent ", tensorOfTheExposure=" $tenor ", typeOfTheDeal=" $type ", targetResponseDate=" $responseDate ", nameOfTheContactPerson=" $person ", documents=" $filename " 여기서 ID ="" .$_GET ["거래 ID" ].""" ;

GET 요청 매개변수(페이지가 브라우저에서 열릴 때 사용자로부터 오는 문자열)를 SQL 요청(데이터베이스 액세스)에 직접 대체합니다. 잠재적인 보안 취약점(SQL 주입).

mysqli_query($connect, $query); mysqli_close($connect); 헤더(.$_GET["dealId" ]);

하드코드 URL. 응용 프로그램 페이지의 주소는 변경될 수 있습니다. 새 주소를 참조하려면 프로그래머가 이전 URL의 입력 코드에서 데이터를 찾아 변경해야 합니다.

그렇지 않으면(isset ($_POST ["addComment" ])) ( $connect = mysqli_connect (BAZA_SERVER, BAZA_USER, BAZA_PASSWORD, BAZA_MYSQL);

다른 언어의 변수 이름 지정 ​​- 특별한 경우코드에서 음역 사용. 초보 똥코더들의 흔한 실수.

$dealId = mysqli_real_escape_string($connect , $_GET ["dealId" ]); $userId = mysqli_real_escape_string($connect , $user ["id" ]); $comment = mysqli_real_escape_string($connect , $_POST ["설명" ]); $쿼리 = "에 집어 넣다주석(dealRefer, userRefer, comment) 값("$dealId "," $userId "," $comment ")" ; mysqli_query($connect, $query); mysqli_close($connect); 헤더( "위치: http://example.com/view.php?dealId=".$_GET ["거래 ID" ]); )

"주니어" 레벨에 대한 예제 코드입니다.

만약에(isset($_GET["액션"]) && ($_GET ["액션" ] == "온라인"))

연속적인 조건부 블록에서 GET 요청의 매개변수를 기반으로 하는 작업 결정. 이전 예와 유사합니다.

( $문서 = 새로운문서(); $문서 -> SetLanguage($cur_lang); 만약에($스타터 = $db -> GetFByQuery("게임 g에서 u.login 선택 LEFT JOIN 사용자 u ON g.starter=u.id WHERE g.`invited`= $uid " )) ( 에코 " $starter " . $document -> 번역(17) . "
" . $문서 -> 번역(19) . "" ; }

코드의 "Echo"는 최고의 솔루션브라우저에 텍스트 또는 레이아웃을 표시합니다. 변화의 과정을 복잡하게 함 모습대지. 레이아웃은 별도의 템플릿 파일에 있어야 합니다. 유추하여 JS-, CSS-삽입에도 해당됩니다. 필수 분할 기준 다른 파일, 폴더에 분산하는 것이 바람직합니다.

또 다른( $행 = $db -> GetByQuery( "ID 선택, `lastping`> 사용자 WHERE에서 로그인". (시간() - 30 ) . " AND `id`<>$uid "); 만약에(카운트($rows)) 각각($행 ~처럼$행 ) ( 에코 "$row\")">$행
" ; }

하드코딩된 클릭 이벤트 핸들러. 이전 점과 유사합니다. 모든 JS는 별도의 파일에 넣어야 합니다.

또 다른 { 에코$문서 -> 번역(11); ) ) ) 그렇지 않으면(isset($_GET["액션"]) && ($_GET ["action" ] == "creategame" )) ( ... ) 그렇지 않으면(isset($_GET["액션"]) && ($_GET ["액션" ] == "getfields")) ( ... ) ...

중간 개발자의 코드는 이해하기 쉽고 복잡한 섹션을 구문 분석하기 위한 주석이 포함되어 있습니다. 데이터베이스에 기본 쿼리를 작성하는 대신 ORM(객체 관계형 매핑)이 사용됩니다. SQL 주입의 위험을 크게 줄입니다. OOP 및 MVC가 적용됩니다.

공공 기능 actionStatistics () { // 데이터베이스에서 총 게임 수와 플레이어 수를 가져옵니다.$GamesNumber = tableGame::model() -> 세다(); $PlayersNumber = tableUser::model() -> 세다(); $일반통계 = 정렬("GamesNumber" => $GamesNumber , "PlayersNumber" => $PlayersNumber ); $플레이어 = 새로운플레이어(); // 데이터베이스에서 가장 높은 평가를 받은 플레이어 목록을 가져옵니다.$dbModel = tableUser::model() -> findAllByAttributes( 정렬("활성화" => 1 ), 정렬("limit" => self::TOP_PLAYERS_LIST_SIZE , "order" => "Rating DESC" )); // 최고의 선수에 대한 요약 정보 배열의 형성. 각각($db모델 ~처럼$ 플레이어 데이터 ) ( 만약에($Player -> 로드($PlayerData -> ID)) ( $PlayersList = 클론$플레이어; ) ) // 승인된 플레이어의 데이터를 로드합니다.$Player -> 로드(Yii::app() -> 사용자 -> getId()); // 출력 뷰.$this -> render("통계" , 정렬("GeneralStatistics" => $GeneralStatistics , "PlayerData" => $Player , "PlayersList" => $PlayersList )); )

코드 조각 측면에서 중간 개발자와 수석 개발자의 차이점은 약하며 올바른 아키텍처 솔루션을 선택하는 데 있습니다.

일반화된 평가 기준은 표에 요약되어 있습니다. 목록은 주어진 예에 국한되지 않습니다.

개발 방법 컴퓨터 기술멈추지 않고 방법과 프로그래밍 언어가 지속적으로 개선되고 있습니다. 현대 컴퓨터 분야와 그 분류에 어떤 언어가 존재하는지 고려하십시오.

일반 정보

프로그래밍 언어 목록은 너무 광범위하고 다양하여 완전히 배치하는 것은 거의 불가능한 작업입니다. 모든 언어 중에서 세 가지 주요 하위 그룹을 구별할 수 있습니다.

  • 기계(저수준 프로그래밍 언어);
  • 기계 지향(어셈블러);
  • 기계 독립적(고수준);

현대의 개발자들 사이에서 소프트웨어다음과 같은 주요 프로그래밍 언어가 가장 많이 사용됩니다. 목록은 인기도의 내림차순입니다.

  1. 자바.
  2. HTML.
  3. 비주얼 베이직.
  4. 델파이.

이 프로그래밍 언어 목록은 완전하지는 않지만 가장 널리 사용되는 언어로, 직업을 지원할 때 프로그래머에게 지식이 필요할 수 있습니다. 모두 고급 프로그래밍 언어입니다.

프로그래밍의 기초

저수준 프로그래밍 언어는 프로세서의 유형과 기능을 고려해야 하는 언어입니다. 이러한 프로그래밍 언어의 연산자 및 작동 방법은 기계 코드에 충분히 가깝기 때문에 메모리 장치에 대한 지식이 필요합니다. 개인용 컴퓨터프로세서가 액세스하는 방법.

다른 저수준 프로그래밍 언어의 이름을 지정하는 것은 어렵습니다. 목록은 여전히 ​​하나의 지배적인 언어인 어셈블러로 축소됩니다. 어셈블러를 사용하면 기계어에 가까운 표기법으로 프로그램 코드를 작성할 수 있기 때문에 운영 체제, 장치 드라이버와 같은 시스템 소프트웨어를 작성할 때나 미세 회로용 제어 코드를 프로그래밍할 때에만 어셈블러를 사용합니다.

이러한 프로그래밍 언어의 단점은 특정 장치에서 특정 작업을 수행하기 위해 프로그램이 작성되고 다른 프로세서로 전송되면 실행이 불가능하다는 것입니다.

응용 프로그램 개발

만들 프로그래밍 언어 목록 맞춤형 애플리케이션, 맞춤형 소프트웨어의 개발 및 구현뿐만 아니라 수천 개의 직책이 있습니다. 아시다시피 이러한 다양성은 특정 언어가 특정 문제를 해결하는 데 적합하기 때문입니다.

이러한 프로그래밍 언어가 별도의 그룹에 정의되어 있음에도 불구하고 실행은 기계어에서 발생합니다. 실행을 위해 완성된 프로그램한 줄씩 번역하고 사용합니다. 특별 프로그램- 통역사. 한 언어에서 다른 언어로의 프로그램 코드 번역이 명령을 실행하지 않고 수행되면 컴파일러 프로그램이 여기에 포함됩니다. 에 일반적인 경우작성된 프로그램을 하나의 공식 프로그래밍 언어에서 다른 언어로 번역하도록 설계된 프로그램을 번역기라고 합니다.

고급 프로그래밍 언어에 대해 자세히 살펴보겠습니다. 우리는 목록을 컴파일하지 않을 것이며 가장 인기있는 각각에 대해 더 자세히 설명할 것입니다.

SQL

특수 프로그래밍 언어는 주로 데이터베이스 관리 시스템 및 해당 프로그래밍 작업을 위한 것입니다. SQL은 "전문화"로 번역됩니다. 최근 수십 년 동안 DBMS 시장이 기하급수적으로 성장했기 때문에 이 언어의 인기는 놀라운 일이 아닙니다.

이 언어의 미래에 대해 다양한 의견이 있습니다. 관계형 데이터베이스를 생성하는 기술이 최고였다고 해도 과언이 아닐 정도로 시간이 촉박합니다. 처리되는 데이터의 양적 증가와 관련된 개발의 필요성은 전문가들로 하여금 미래에 인류는 단순히 관계형 기술에서 포스트 관계형 기술로 이동해야 하지만 기존 데이터 뱅크와의 호환성 유지를 고려해야 한다는 생각으로 이끕니다.

자바스크립트

고급 프로그래밍 언어 중에서 2위를 차지합니다. 배우기 쉽고 사용하기 쉽습니다. 조상에 비해 프로그래밍에 대한 적응력이 향상되어 전 세계 수백만 명의 사람들이 이 언어로 작업합니다. C++에 기반을 둔 객체 지향 언어는 특수 환경에서 방대한 정보 흐름을 처리할 수 있는 프로그램 및 응용 프로그램을 만들고 완성된 제품의 구현 환경의 특성을 고려하도록 조정되었습니다.

Java 기술은 Wi-Fi를 통해 전화 네트워크에 연결하는 것부터 슈퍼 컴퓨터에 이르기까지 다양한 구경의 시스템을 함께 연결할 수 있는 무제한의 기업 및 기업 인프라를 확장할 수 있는 기반입니다.

XML

HTML의 후손인 이 기술은 확장 가능한 마크업 언어입니다. 문서 해석에 적합합니다. 복잡한 변환 및 문서 변경을 수행합니다. XML 언어인터넷을 통해 다양한 관계형 데이터베이스로 작업할 때 데이터를 전송하고 임시로 저장하는 데 사용됩니다.

XML은 이미 기업 네트워크 구축을 위한 기본 기술이라고 주장할 수 있는 지점에 도달했습니다.

러시아어 프로그래밍

가장 인기있는 프로그래밍 언어는 어휘를 사용합니다 영어의. 그러나 그 외에도 러시아어 프로그래밍 언어도 있습니다. 러시아어로 된 목록은 작으며 사용되는 주제 영역은 매우 전문화되어 있습니다. 몇 가지 예를 들어보겠습니다.

  • 1C: 기업. 모든 활동 영역에서 조직을 관리하도록 설계된 전체 시스템입니다. 종종 구직 광고에서 "1C 프로그래머"를 찾을 수 있습니다.
  • 동사. 영어 파스칼의 유사체.
  • 로빅. 프로그래밍의 기초를 아이들에게 가르치기 위해 설계된 특수 프로그래밍 언어입니다.
  • 레이피어. 절차 기반 언어.

보시다시피 프로그래밍 언어 목록은 너무 광범위하고 다양하여 분류 및 목록으로 다룰 수 없습니다. 아마추어나 전문가 수준에서 프로그래밍을 시작하기로 결정했다면 프로그래머는 지식뿐만 아니라 환상, 상상력, 직관, 그리고 약간의 운도 필요한 창의적인 직업이라는 것을 기억하십시오.

다른 유형의 프로세서에는 다른 명령 세트가 있습니다. 프로그래밍 언어가 특정 유형의 프로세서에 초점을 맞추고 해당 기능을 고려하는 경우 저수준 프로그래밍 언어.이 경우 "낮음"은 "나쁨"을 의미하지 않습니다. 이는 언어 연산자가 기계어에 가깝고 특정 프로세서 명령에 집중한다는 것을 의미합니다. 가장 낮은 수준의 언어는 어셈블리어,이는 단순히 숫자가 아닌 기호 규칙을 사용하여 각 기계 코드 명령을 나타냅니다. 니모닉이라고 합니다.하나의 기계 명령어를 하나의 어셈블리 명령어로 명확하게 변환하는 것을 음역.프로세서 모델마다 명령어 집합이 다르기 때문에 특정 컴퓨터 아키텍처에는 고유한 어셈블리 언어가 있으며 그 안에 작성된 프로그램은 이 환경에서만 사용할 수 있습니다. 저수준 언어의 도움으로 개발자가 프로세서의 모든 기능에 액세스할 수 있기 때문에 매우 효율적이고 컴팩트한 프로그램이 생성됩니다. 반면에, 이것은 컴퓨터 구조에 대한 아주 좋은 이해를 필요로 하고, 큰 응용 프로그램을 디버깅하기 어렵고, 결과 프로그램을 다른 유형의 프로세서가 있는 컴퓨터로 전송할 수 없습니다. 이러한 언어는 일반적으로 작은 쓰기에 사용됩니다. 시스템 응용 프로그램, 장치 드라이버, 비표준 장비가 있는 도킹 모듈, 가장 중요한 요구 사항이 소형, 속도 및 하드웨어 리소스에 직접 액세스하는 기능인 경우. 컴퓨터 그래픽과 같은 일부 영역에서 라이브러리는 연산 집약적 이미지 처리 알고리즘을 효율적으로 구현하는 어셈블리 언어로 작성됩니다. 고급 프로그래밍 언어컴퓨터보다 사람에게 훨씬 더 가깝고 이해하기 쉽습니다. 특정 컴퓨터 아키텍처의 기능은 고려되지 않으므로 소스 코드 수준에서 생성된 프로그램은 이 언어의 번역기가 생성된 다른 플랫폼으로 쉽게 이식할 수 있습니다. 명확하고 강력한 명령의 도움으로 고급 언어로 프로그램을 개발하는 것이 훨씬 쉽고 프로그램을 만들 때 실수가 훨씬 적습니다.

2. 프로그래밍 언어의 세대

프로그래밍 언어는 일반적으로 다섯 가지로 나뉩니다. 세대. 1세대에는 최초의 컴퓨터가 탄생한 50년대 초반에 만들어진 언어가 포함됩니다. "한 명령 - 한 줄"의 원칙에 따라 만들어진 최초의 어셈블리 언어였습니다.

2세대 프로그래밍 언어의 전성기는 50년대 후반에서 60년대 초반이었습니다. 그런 다음 변수 개념이 등장한 기호 어셈블러가 개발되었습니다. 최초의 본격적인 프로그래밍 언어가 되었습니다. 외관 덕분에 프로그램의 개발 속도와 신뢰성이 눈에 띄게 향상되었습니다.

3세대 프로그래밍 언어의 출현은 일반적으로 60년대에 기인합니다. 이때 보편적인 고급 언어가 탄생했으며 도움으로 모든 영역의 문제를 해결할 수 있습니다. 상대적 단순성, 특정 컴퓨터로부터의 독립성 및 강력한 구문 구조를 사용할 수 있는 능력과 같은 새로운 언어의 이러한 특성은 프로그래머의 생산성을 극적으로 증가시키는 것을 가능하게 했습니다. 대부분의 사용자가 이해할 수 있는 이러한 언어의 구조는 컴퓨터 이외의 분야에서 소규모 프로그램(일반적으로 엔지니어링 또는 경제적 성격)을 작성하는 전문가의 상당수를 끌어들였습니다. 이 세대의 대다수 언어가 오늘날 성공적으로 사용됩니다.

70년대 초반부터 현재까지 4세대 언어의 시대는 계속된다. 이 언어는 대규모 프로젝트를 구현하고 안정성과 생성 속도를 높이도록 설계되었습니다. 그들은 일반적으로 좁은 주제 영역의 특정 개념으로 작동하는 보편적인 언어가 아니라 도메인 특정 언어를 사용하여 좋은 결과를 얻을 수 있는 특수 응용 분야에 중점을 둡니다. 일반적으로 강력한 연산자가 이러한 언어에 내장되어 있어 한 줄로 이러한 기능을 설명할 수 있으며, 이를 위해서는 저세대 언어로 수천 줄의 소스 코드가 필요합니다.

5세대 언어의 탄생은 1990년대 중반에 일어났다. 여기에는 프로그래밍 지식 없이도 시각적 개발 도구를 사용하여 응용 프로그램을 자동으로 만드는 시스템이 포함됩니다. 이러한 언어에 포함된 주요 아이디어는 결과 텍스트를 범용 프로그래밍 언어(그런 다음 컴파일해야 함)로 자동 생성하는 기능입니다. 명령어는 프로그래밍에 익숙하지 않은 사람에게 가장 편리한 방법을 사용하여 가장 시각적인 형태로 컴퓨터에 입력됩니다.

3. 고급 프로그래밍 언어 개요

포트란(Fortran). 1950년대 Jim Backus가 만든 최초의 컴파일된 언어입니다. 어셈블러로만 프로그램을 개발한 프로그래머들은 고성능 고수준 언어의 가능성에 대해 심각한 의구심을 드러냈기 때문에 포트란 컴파일러 개발의 주요 기준은 실행 코드의 효율성이었다. Fortran은 여러 가지 중요한 프로그래밍 개념을 최초로 구현했지만 효율적인 기계어 코드를 얻을 수 있는 가능성 때문에 프로그램 작성의 편의성이 희생되었습니다. 그러나 통계 컴플렉스에서 위성 제어 패키지에 이르기까지 이 언어에 대해 수많은 라이브러리가 만들어졌기 때문에 Fortran은 많은 조직에서 계속 활발히 사용되고 있으며 현재 다음 Fortran F2k 표준에 대한 작업이 진행 중입니다. 2000. 다중 프로세서가 있는 병렬 슈퍼컴퓨터용 포트란 HPF(고성능 포트란)의 표준 버전이 있습니다.

코볼(코볼). 60년대 초반에 개발된 경제 분야의 응용 및 비즈니스 문제 해결을 위해 컴파일된 언어입니다. 훌륭한 "장황함"으로 유명합니다. 연산자는 때때로 일반적인 영어 구문처럼 보입니다. Cobol은 다양한 외부 미디어에 저장된 대량의 데이터 작업을 위한 매우 강력한 도구를 구현했습니다. 이 언어로 많은 응용 프로그램이 만들어졌으며 오늘날 적극적으로 활용되고 있습니다. Cobol 프로그래머가 미국에서 가장 높은 급여를 받는다고 해도 과언이 아닙니다.

알골(Algol). 1960년에 만들어진 컴파일 언어. Fortran을 대체할 예정이었지만 복잡한 구조로 인해 널리 사용되지 않았습니다. 1968 년 Algol 68 버전이 만들어졌으며 기능면에서 여전히 많은 프로그래밍 언어보다 앞서 있지만 충분히 효율적인 컴퓨터가 없기 때문에 적시에 좋은 컴파일러를 만들 수 없었습니다. .

파스칼(파스칼).현대 프로그래밍의 많은 아이디어를 창시한 Niklaus Wirth가 70년대 후반에 만든 Pascal 언어는 여러 면에서 Algol과 유사하지만 프로그램 구조에 대한 여러 요구 사항을 강화하고 성공적으로 수행할 수 있도록 하는 기능이 있습니다. 큰 프로젝트를 만들 때 사용합니다.

기본(기본).이 언어에는 컴파일러와 인터프리터가 있으며 세계에서 인기도 1위입니다. 60년대에 교육용 언어로 만들어졌으며 배우기 매우 쉽습니다.

C(C).이 언어는 Bell 연구소에서 만들어졌으며 처음에는 대중 언어로 간주되지 않았습니다. 동등하게 효율적이고 컴팩트한 프로그램을 만들 수 있고 동시에 특정 유형의 프로세서에 의존하지 않기 위해 어셈블러를 대체할 계획이었습니다.

C는 여러 면에서 파스칼과 유사하며 직접 메모리 조작을 위한 추가 기능이 있습니다. (포인터). 70년대에 많은 응용 프로그램 및 시스템 프로그램과 많은 잘 알려진 운영 체제(Unix)가 이 언어로 작성되었습니다.

C++(C++). C++는 1980년 Bjarne Stroustrup이 만든 C 언어의 객체 지향 확장입니다. 프로그래머의 생산성을 비약적으로 높일 수 있었던 새로운 강력한 기능들이 C 언어에서 상속된 특정 하위 수준에 중첩되어 복잡하고 안정적인 프로그램을 만들려면 높은 수준의 개발자의 전문 교육.

자바(자바, 자바).이 언어는 C++를 기반으로 90년대 초반 Sun에 의해 만들어졌습니다. 모든 저수준 기능을 제거하여 C++ 기반 응용 프로그램 개발을 단순화하도록 설계되었습니다. 그러나 이 언어의 주요 기능은 기계어 코드가 아니라 플랫폼 독립적인 바이트 코드로 컴파일된다는 것입니다(각 명령은 1바이트를 차지합니다). 이 바이트코드는 현재 모든 플랫폼용으로 만들어진 JVM(Java Virtual Machine) 버전의 인터프리터를 사용하여 실행할 수 있습니다. 많은 Java 머신이 존재하기 때문에 Java 프로그램은 소스 코드 수준에서뿐만 아니라 바이너리 바이트 코드 수준에서도 이식될 수 있습니다. 이것이 오늘날 Java가 BASIC 다음으로 세계에서 인기 있는 2위를 차지하는 이유입니다.

이 언어의 개발에 특별한 주의를 기울이는 두 가지 영역: 모든 종류의 모바일 장치 지원 및 내장형 마이크로컴퓨터 가전 ​​제품(지니테크놀러지) 플랫폼 독립형 창조 소프트웨어 모듈다양한 운영 체제(Java Beans 기술)가 있는 글로벌 및 로컬 네트워크의 서버에서 실행할 수 있습니다. 지금까지 이 언어의 주요 단점은 Java 언어가 해석되기 때문에 성능이 낮다는 것입니다.