프로그래밍 언어의 변천사
- 폰 노이만에 의해 세계 최초로 프로그램 내장 방식 컴퓨터 등장
- 일반적으로 말하는 프로그래밍 언어는 이 때부터 시작한다
프로그래밍 언어 살펴보기
포틀란
- 과학 응용 분야를 위한 효율성을 강초한 최초의 고급 언어
- 설계 목표 : 매우 빠르게 실행 되는 코드 생성
- 미리 메모리를 시스템에 넣어둬서 메모리 체크 필요 x
- 하드웨어 처음으로 부동 소수점 연산 가능
- 주요 기능 : 배열, For 반복문, 분기 if 문 등
코볼
- 사무용으로 설계된, 영어와 비슷한 구문을 갖는 명령형 언어
- 변수를 지정할 때 출력 포맷까지 정해져서 나온다
- 주요 기능 : 레코드 구조, 프로그램의 실행부와 분리된 자료 구조
- 다양한 출력 기능 등
LISP (List Processor)
- 리스트 자료 구조와 함수 적용을 기반으로 한다
- 인공지능 관련 언어가 빠르게 발전하며, 수학 분야에서 인공지능을 하고 싶어했음
- 이들의 공통적 요구 사항은 리스트 처리가 가능한 언어였다
- 재귀 호출이 매우 일반적이다
- 함수형 언어 중 최초로 지원
- Lisp의 후속 언어인 Scheme 인공지능 분야에 많이 사용 된다
Algol60/68
- 알고리즘을 기술하기 위한 강력한 범용 언어
- 파스칼, C , Ada 같은 현대의 명령형 언어에 영향을 줌
- 주요 특징
- 구조적 문장, begin, end 블록
- 자유 양식(스페이스 바)
- 스페이스 바를 몇 칸을 둬도 문제 없이 동작
- 공백을 잘 알아먹는 언어
- 변수의 타입 선언
- 재귀 호출, 값 전달 매개 변수
- 명령형 언어 중 최초로 재귀 사용
- BNF (Backus-Naur Form) 을 처음으로 도입
- 범용성이 좀 낮아서 상용이 어렵다
PL/I
- 일반적이고 보편적인 언어, 모든 언어를 통합하는 언어
- 포틀란, 코볼 등의 가장 좋은 특징을 모두 결합하고 병행성과 예외 처리 기능 등을 추가
- 배우기도 어렵고, 사용하는데 오류가 많이 발생
- 너무 복잡함
- 잔기능이 많아 서로 상호 작용을 어떻게 하는지도 모름
- 당시 하드웨어 용량이 많지 않았는데 기능이 많아 컴파일러가 고생했다는,
시뮬라 67
- 최초의 객체지향 언어
- 객체와 클래스 개념을 소개함으로써 공헌함
- 추후 smalltalk에 의해 구체적으로 구현 되었음
Basic
- 단순한 언어로 PC로 이전 되어 교육용 언어로 많이 사용 된다
- 이후 마이크로소프트 사에 의해 visual basic 형태로 발전됨
PASCAL
- 교육용 언어로 Algol의 아이디어를 작고, 단순하고, 효율적이고, 구조화된 언어로 세련 되게 만듬
- 대표적인 블록 구조 언어
- 애플 초기 제품들이 파스칼 언어로 만들어진 것들이 있다
C 언어
- 유닉스 운영체제 개발을 위해 개발된 시스템 프로그래밍 언어
- 기계에 대해 많은 접근을 제공하는 중급 언어(middle-level)
- 모든 컴퓨터 시스템에서 사용할 수 있도록 설계된 언어
Prolog
- 술어 논리를 사용하는 대표적인 논리 프로그래밍 언어
- 규칙에 맞는 정보를 뽑아 오는 일을 할 때 사용함
- 증명하는 것을 계산하는 것으로 간주함
- 인공지능, 자연어 처리 등의 분야에서 많이 사용됨
Scheme
- 더 형식적이고 람다 계산에 더 가깝게 설계된 향상 된 LISP 버전
- 언어 자체는 최대한 간단하게 만들고, 라이브러리를 통해 확장하는 방식 추구
- 2010 년 즈음에는 MIT 신입생들의 프로그래밍 입문 언어였다고 함
ADA
-
미 국방성(DoD)의 후원으로 개발된 영향력 있고 포괄적인 언어
-
주요 기능
- 패키지 (추상자료)
- 태스크 (병행프로그래밍기능)
- 예외처리 등과 같은 새로운기능을 포함
-
임베디드 시스템 간 다른 CPU 등을 포괄하는 프로그래밍을 만들고 싶어서 생겼다
- 유지 보수 비용이 감당이 안되었다
- 굉장히 크고 복잡함
- 하지만 전투기 등 요즘도 사용하고 있음
스몰토크
- 시뮬라 67의 객체지향 개념을 실제로 만들었음
- 다른 객체 지향 언어에 영향을 주었다
- 순수한 객체지향 언어
- 최초로 윈도우즈 gui 환경을 제공한 언어
C++
- C 언어를 확장
- 포인터와 같은 C 언어의 중요한 특징을 그대로 포함하고 있음
- C 언어의 효율성을 유지하면서도 객체지향 프로그래밍 가능
- 속도가 중요한 곳에서 많이 사용 되고 잇음
Python
- 대화형 인터프리터 방식의 프로그래밍 언어
- 플랫폼 독립성, 객체지향, 동적 타입(dynamic type)
- 교육용 및 빅데이터를 비롯한 다양한 분야에서 응용되고 있음
Java
- 인터넷 환경을 위한 객체지향 언어
- 웹 애플리케이션, 모바일 앱 개발 등에 가장 많이 사용하는 언어
- 플랫폼 독립성
- 컴파일된 바이트코드가JVM이 설치된 어느 플랫폼에서도 실행가능
JavaScript
- 웹 브라우저 내에서 실행되는 클라이언트 프로그램에 주로 사용
- Node.js와 같은 런타임 환경과 같이 서버 프로그래밍에도 사용
C#
- JAVA를 모방한 마이크로소프트 버전
- 닷넷 프레임워크를 기반으로 한다
스칼라
- 객체 지향과 함수형 언어의 요소가 결합된 다중 패러다임 언어
- 자바 바이트 코드를 사용하기 때문에 JVM에서 실행 가능
- JAVA 언어와 호환 : 대부분 JAVA API를 그대로 사용 가능
Objective-C와 Swift
- Swift는 기존의 Mac 용 언어인 Objective-C와 함께 공존
- Objective-C처럼 LLVM으로 빌드되고 같은 런타임 시스템을 공유
- 특징: 클로저, 다중 리턴 타입, 네임스페이스, 제네릭, 타입 유추
728x90
'Computer Science > 프로그래밍 언어론' 카테고리의 다른 글
람다 대수(Lamda calcuus)란 무엇인가 (0) | 2023.03.29 |
---|---|
함수형 프로그래밍 (0) | 2023.03.29 |
명령형 언어 (0) | 2023.03.26 |
하이브리드 기법이란? (0) | 2023.03.26 |
해석 기법이란? (0) | 2023.03.26 |