에이다 리소스 협회
에이다 개요
에이다는 신뢰성과 효율성이 필수적인 대규모,수명이 긴 응용 프로그램 및 특히 임베디드 시스템을 위해 설계된 최신 프로그래밍 언어입니다. 그것은 원래 1980 년대 초에 개발되었다(이 버전은 일반적으로 에이다 83 로 알려져있다)박사가 이끄는 팀에 의해. 이 언어는 1990 년대 초에 미국의 인터 메트릭스 출신의 터커 태프트 씨의 지도력하에 상향 호환 방식으로 수정되고 향상되었습니다. 그 결과 언어,에이다 95,최초의 국제적으로 표준화 된(이소)객체 지향 언어였다. 2005 년 11 월 15 일에 확인함. 더 중요한 개정(프로그램 주석에 대한 지원을 포함)완료 및 에이다 2012 로 알려져있다. 또 다른 중요한 개정은 2022 년에 완료 될 것으로 예상됩니다.
이름”에이다”는 약어가 아닙니다.; 그것은 오거스타 에이다 러브 레이스(1,815 에서 1,852 사이),때때로 때문에 찰스 배비지와 그녀의 작품의 세계 최초의 프로그래머로 간주되는 수학자의 명예에 선정되었다. 그녀는 또한 시인 바이런 경의 딸이었습니다.
에이다는 상업 및 군용 항공기 항공 전자 공학,항공 교통 관제,철도 시스템 및 의료 기기를 포함하여 높은 무결성/안전 중요/높은 보안 영역에서 전 세계적으로 상당한 사용을보고있다. 현대 소프트웨어 공학 원리의 구현으로 에이다는 입문 및 고급 컴퓨터 과학 과정 모두를위한 훌륭한 교육 언어이며,특히 실시간 기술의 영역에서 중요한 대학 연구의 대상이되고있다.
언어 개요
에이다는 다각적입니다. 한 관점에서는 특정 개발 방법론에 묶여 있지 않은 고전적인 스택 기반 범용 언어입니다. 간단한 구문,구조화 된 제어문,유연한 데이터 구성 기능,강력한 유형 검사,코드 모듈화(“하위 프로그램”)를위한 기존 기능 및 예외적 인 런타임 조건(“예외 처리”)을 감지하고 응답하는 메커니즘이 있습니다.
그러나 그것은 또한 매우 더 많은 것을 포함합니다:스칼라 범위
프로그래머는 스칼라 형식의 변수(정수,부동 소수점,고정 소수점 또는 열거형 형식)에 허용되는 값의 범위를 간단하고 명시적으로 지정할 수 있습니다. 범위를 벗어난 값을 할당하려고 하면 런타임 오류가 발생합니다. 범위 콘트라스트를 지정하는 기능은 프로그래머의 의도를 명시 적으로 만들고 코딩 및 사용자 입력 오류의 주요 원인을 쉽게 감지 할 수있게합니다. 이 기능은 캡슐화(“정보 숨기기”)와 모듈화 기능을 지원하며 개발자가 지정된 컴파일 단위 내에서 액세스할 수 있는 네임스페이스를 제어할 수 있도록 합니다. 에이다 95 의 개념을 도입”자식 단위,”상당히 유연성을 추가하고 매우 큰 시스템의 설계를 완화. 에이다 2005 따라서 쉽게 자바와 같은 언어와 인터페이스 할 수있게,패키지 사양 사이의 상호 참조를 허용하여 언어의 모듈화 기능을 확장.
제네릭 템플릿
재사용 가능한 구성 요소의 핵심은 데이터 유형 및 기타 프로그램 엔터티와 관련하여 모듈을 매개 변수화하는 메커니즘입니다(예:임의의 요소 유형에 대한 스택 패키지). 컴파일 타임에 매개 변수화가 수행되므로 런타임 성능이 저하되지 않습니다.
객체 지향 프로그래밍
그러나 대형 실시간 시스템에는 종종 실시간 제약이 없는 기기와 같은 구성 요소가 있으며,이를 통해 가장 효과적으로 개발될 수 있다. 이러한 이유로 부분적으로 에이다 95 는 클래스,다형성,상속 및 동적 바인딩과 같은”태그 유형”기능을 통해 포괄적 인 지원을 제공합니다. 에이다(95)는 자동 가비지 수집을 필요로하지 않고,오히려 개발자가 타입-특정 스토리지 교정 작업(“종료”)을 제공 할 수 있도록 정의 기능을 제공한다. 2005 년에는 자바와 같은 인터페이스와 전통적인 동작 호출 표기법을 포함한 추가 기능을 제공했습니다.
Ada methologically 중립을 부과하지 않는”분산 오버헤드를 위해”OOP. 응용 프로그램이 웁을 필요로하지 않는 경우,웁 기능을 사용할 필요가 없습니다,더 런타임 페널티가 없습니다.
동시 프로그래밍
동시성을 위한 구조화된 고급 기능을 제공합니다. 동시성 단위는”작업”이라고 하는 프로그램 엔터티입니다.”작업은 공유 데이터를 통해 암시 적으로 또는 랑데부로 알려진 동기 제어 메커니즘을 통해 명시 적으로 통신 할 수 있습니다. 공유 데이터 항목은 추상적으로”보호된 객체”(에이다 95 에서 소개된 특징)로 정의될 수 있으며,여러 태스크로부터 호출될 때 상호 배제하에 실행되는 동작들이 있다. 비동기 작업 상호 작용,특히 시간 초과 및 작업 종료도 지원됩니다. 이러한 비동기 동작은 공유 데이터를 일관되지 않은 상태로 둘 가능성을 방지하기 위해 특정 작업 중에 지연됩니다. 에이다의 최신 버전은 이식성을 보존하고 안전하고 잘 정의 된 에이다 동시성 모델 내에서 유지하면서,매우 효율적인 병렬 컴퓨팅을 허용,멀티 코어 아키텍처를 활용하는 경량 메커니즘을 포함한다.
시스템 프로그래밍
“핵심”언어와 시스템 프로그래밍 부록 모두에서,에이다는 프로그래머가 하드웨어에 근접할 수 있도록 필요한 기능을 제공한다. 예를 들어 레코드의 필드에 대한 비트 레이아웃을 지정하고,정렬 및 크기를 정의하고,특정 컴퓨터 주소에 데이터를 배치하고,특수 또는 시간이 중요한 코드 시퀀스를 어셈블리 언어로 표현할 수 있습니다. 또한 보호된 형식 기능을 사용하여 인터럽트 처리기를 에이다에 작성할 수도 있습니다.
실시간 프로그래밍
에이다의 태스킹 기능을 사용하면 일반적인 실시간 숙어(주기적 작업,이벤트 중심 작업)를 표현할 수 있으며,실시간 부록은 제한없는 우선 순위 반전을 방지 할 수있는 몇 가지 기능을 제공합니다. 보호된 개체 잠금 정책은 우선 순위 제한을 사용하는 것으로 정의됩니다. 에이다 95 기본적으로 차단 또는 선점 될 때까지 실행하는 작업을 필요로하는 작업 디스패치 정책을 정의하고,에이다 2005 먼저 가장 빠른 기한을 포함하여 몇 가지 다른 사람을 소개했다.1326>
사운드 소프트웨어 엔지니어링 원칙에 중점을두고 에이다는 높은 무결성 응용 프로그램의 개발을 지원합니다. 예를 들어 강력한 타이핑은 한 가지 목적을 위해 의도 된 데이터가 부적절한 작업을 통해 액세스되지 않음을 의미하며 포인터를 정수로 처리하거나 그 반대로 처리하는 등의 오류는 방지됩니다. 그리고 에이다의 배열 경계 검사는 씨와 씨++에서 흔히 발생하는 버퍼 오버런 취약점을 방지합니다.
그러나 일반성과 유연성이 추적성/인증 요구 사항을 방해할 수 있으므로 안전에 중요한 응용 프로그램에서는 전체 언어가 부적절합니다. 따라서 언어 기능을 잘 정의된 하위 집합으로 제한할 수 있습니다(예:동적 기능 제외).
에이다의 진화는 안전에 중요한 높은 보안 응용 프로그램에 대한 지원의 지속적인 증가를 보았다. 이 기능은 실시간 프로그래밍을 위해 충분히 강력하지만 인증을 실용화할 수 있을 만큼 단순합니다. 에이다 2012 프로그램에 사전 조건,사후 조건 및 불변량을 추가하기위한 주석 기능을 도입했습니다. 에이다 2022 는 기본 초기 조건,안정적인 속성,비 차단 및 전역 개체 사용에 대한 추가 주석으로 이러한 내용을 확장합니다. 런타임 검사 및 정적 분석 도구에 대한 입력으로 사용할 수 있습니다.
에이다 혜택 요약
- 안전하고 신뢰할 수 있는 코드 설계 지원
- 개발 비용 절감
- 새롭고 변화하는 기술 지원
- 복잡한 프로그램 개발 촉진
- 코드를 읽기 쉽고 이식할 수 있도록 지원
- 안전을 위한 인증 비용 절감 중요 소프트웨어
에이다 기능 요약
- 객체 지향 프로그래밍
- 강력한 타이핑
- 프로그램 도메인에 맞게 추상화
- 일반 프로그래밍/템플릿
- 예외 처리
- 모듈식 코드 구성을 위한 시설
- 입출력,문자열 처리,숫자 컴퓨팅,컨테이너를 위한 표준 라이브러리
- 시스템 프로그래밍
- 동시 프로그래밍
- 실시간 프로그래밍
- 분산 시스템 프로그래밍
- 숫자 처리
- 다른 언어에 대한 인터페이스(씨,코볼,포트란)
간단히 말해서,에이다는 객체 지향 프로그래밍 기능,잘 설계된 동시성 기능,실시간 지원 및 내장 기능을 결합한 국제적으로 표준화 된 언어입니다 신뢰성. 오늘날 소프트웨어 개발자가 직면한 실제 문제를 해결하기 위한 적절한 도구인 에이다는 기업과 생명을 보호하는 소프트웨어를 설계하기 위해 여러 주요 산업 분야에서 사용되고 있습니다.
Leave a Reply