반환 지향형 프로그래밍
반환 지향 프로그래밍은 스택 스매싱의 진화된 버전이다. 일반적으로 공격들의 이러한 종류들은 상대방이 프로그램의 버그(주로 버퍼 오버런)를 이용함으로써 콜 스택을 조작할 때 발생한다. 버퍼 오버런 시에 사용자가 제공하는 데이터를 적절한 경계 검사 없이 메모리에 저장하는 함수는 적정한 양보다 더 많은 데이터를 받아들일 수 있다. 데이터가 스택에 겹쳐써지면 초과된 데이터는 함수의 변수에 할당된 공간을 넘치게 되고 반환 주소도 겹쳐쓰게 된다. 이 주소는 이후에 함수에 의해서 제어 흐름을 다시 호출자로 넘겨줄 때 사용된다. 만약 겹쳐써졌다면 제어 흐름은 새로운 반환 주소로 넘겨지게 된다.
객체 지향 프로그래밍
에이다의 큰 특징은 예외 처리 기능의 도입이다. 이는 시스템의 신뢰도를 높이기 위한 중요한 기능이며, 미 국방성 프로젝트가 중요시 하는 신뢰도를 증가시키기 위한 필수적인 기능으로 볼 수 있다. 하지만 에이다는 큰 단점을 가지고 있었는데, 상속의 개념을 언어에 반영하지 않았다. 또한 에이다는 대부분의 객체 지향 언어는 대부분 동적 바인딩 방식을 채택하고 있는 반면 정적 바인딩을 사용하고 있다는 점이다.