객체 지향 언어의 시초는 ?
객체 지향 언어의 시초는 1960년 노위지안 컴퓨팅 센터의 조한 달과 크리스틴이 발표한 시뮬라67이다. 시뮬라67이 채택하고 있는 가장 중요한 개념은 클래스의 도입으로서 이 아이디어는 스몰토크, C++ 등에도 사용되었다. 하지만 시뮬라 67의 발표 이후 10여년 간 객체 지향 언어는 전혀 주목을 받지 못하였다. 1970년 컴퓨터 산업을 주도한 IBM, AT&T, 미 국방성 등에서 관심을 두지 않았기 때문에 시뮬라 67은 실용적인 언어로 발전하지는 못하였다. 하지만 이의 학문적 가치는 인정받고 있다.
객체 지향 언어의 종류는 ?
15가지 정도의 객체 지향 언어가 있다.
시뮬라 67 : 최초의 객체 지향 언어로 알려져있으며, [오슬로]의 노르웨이 계산 센터의 크리스틴니갈(Kristen Nygaard)과 올 요한 다히(Ole-Johan Dah)가 1962년부터 1967년에 걸쳐, Simula의 원형이 되는 Simula I와 Simula67을 [[ALGOL60|ALGOL 60]] 의 확장판으로써 설계했다. Simula는 당시 시뮬레이션에 사용되었는데, 후에 범용언어가 되었다. Simula라는 이름은 시뮬레이션언어 라는 의미의 영어 「simulation language」 와 간략한 범용언어 를 의미하는 영어 「simple universal language」 의 두곳에서 유래했다. 주로 북유럽권에서 사용되었으며, 언어적으로 완성도가 높지않아 널리 보급되지는 못했지만, 추후 개발된 언어들에 끼친 영향은 컸다. 특히 스몰토크는 Simula의 객체지향개념을 일반화시킨것이라고 할 수 있다. C++ 역시, 처음엔 C언어로 Simula의 클래스 등의 기능을 추가한 형태였다.
스몰토크 : 스몰토크는 제록스 파크(PARC)에서 앨런 케이, 댄 잉갤스, 테드 캘러, 에이들 골드버그가 만들었다. 1970년대의 리스프, 로고, 스케치패드와 시뮬라 등의 영향을 받았으며, 스몰토크-80부터 외부에 공개되어 퍼지기 시작했다. 스몰토크는 Ruby, 오브젝티브-C, Self , 자바 , Dylan , 애플스크립트 , 파이썬, Scala, 펄 6, Common List Object System 등의 프로그래밍 언어에 영향을 주었으며, 그 외에 매킨토시의 그래픽 사용자 인터페이스에도 영향을 주었다. 최초로 GUI를 제공하는 언어였으며, 이는 마우스가 스몰토크와 함께 제록스 파크(PARC)에서 연구되었던 것과도 관련이 있다. 현재 스몰토크를 사용하는 인구는 다른 객체지향 언어의 출현으로 소수에 불과하나, 루비를 비롯한 동적자료형 객체 지향 언어가 관심을 받고 있다. 최근에는 시사이드(Seaside)의 출현으로 HTML을 전혀 쓰지 않는 차세대 웹 프로그래밍의 비전을 보여주고 있기도 하다.
비주얼 베이직 닷넷 : 비주얼 베이직 닷넷 (Visual Basic .NET, VB.NET)은 닷넷 프레임워크에서 구현되고 비주얼 베이직(VB)의 진화된 형태인 객체 지향 컴퓨터 프로그래밍 언어이다. 마이크로소프트는 현재 비주얼 베이직의 두 가지 주요 통합 개발 환경을 제공한다.(상용 소프트웨어인 마이크로소프트 비주얼 스튜디오, 프리웨어인 마이크로소프트 비주얼 스튜디오 익스프레스) 비주얼 베이직 닷넷의 마이크로소프트 구현은 "마이크로소프트 비주얼 베이직"이라고 한다. 명령 줄 컴파일러인 VBC.EXE는 프리웨어인 .NET 프레임워크 SDK의 일부로 설치된다. 또한 모노는 명령줄 VB.NET 컴파일러를 포함한다. 최신 버전은 2013년 11월 18일에 출시된 VB 2013이다.
오브젝티브-C : 오브젝티브-C (Objective-C, 종종 ObjC로 표기) 언어는 C 프로그래밍 언어에 스몰토크 스타일의 메시지 구문을 추가한 객체 지향 언어이다. 현재, 이 언어는 애플의 매킨토시의 운영 체제인 맥 오에스 텐과 아이폰의 운영 체제인 iOS에서 사용되고 있다. 오브젝티브-C는 애플의 코코아를 사용하기 위한 기본 언어이며, 원래는 넥스트의 NeXTSTEP 운영 체제에서 주 언어였다. 일반적인(Generic) 오브젝티브-C는 앞에서 언급한 라이브러리를 사용하지 않는다.
C++ : C++는 AT&T 벨 연구소의 비야네 스트롭스트룹이 1983년 발표하여 발전한 프로그래밍 언어이다. C 언어의 문법을 대부분 사용할 수 있으며, 객체지향성이 더해진 C 언어의 확장형이라고 생각할 수도 있다. 원래 이름은 C with Classes였으나, 증가 연산자를 도입하면서 1984년에 C++로 이름이 변경되었다.
C# : C#(시 샤프)는 마이크로소프트에서 개발한 객체 지향 프로그래밍 언어로, 닷넷 프레임워크의 한 부분으로 만들었으며 나중에 ECMA (ECMA-334)와 ISO (ISO/IEC/23270)의 표준으로 자리잡았다. 또한 C++와 자바와 비슷한 문법을 가지고 있다. C#은 닷넷 프로그램이 동작하는 닷넷 플랫폼을 가장 직접적으로 반영하고, 또한 닷넷 플랫폼에 강하게 의존하는 프로그래밍 언어이다. C#은 그 문법적인 특성이 자바와 상당히 유사하며 C#을 통하여 다룰 수 있는 닷넷 플랫폼의 기술들조차도 자바를 염두에 둔 것이 많아서 자바와 가장 많이 비교되고 있다. 하지만 C#은 자바와 달리 불안전 코드(unsafe code)와 같은 기술을 통하여 플랫폼 간 상호 운용성에 상당히 많은 노력을 기울이고 있다. C#의 기본 자료형은 닷넷의 객체 모델을 따르고 있고, 런타임 차원에서의 쓰레기 수집(garbage collection)이 되며 또한 클래스, 인터페이스, 위임, 예외와 같이 객체 지향 언어로서 가져야 할 모든 요소들이 포함되어 있다.
자바 : 자바(Java, 문화어: 쟈바)는 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이며, 썬 마이크로시스템즈에서 무료로 제공하고 있다. 1991년 그린 프로젝트(Green Project)라는 이름으로 시작해 1995년에 발표했다. 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발했지만 현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어 가운데 하나이고, 모바일 기기용 소프트웨어 개발에도 널리 사용하고 있다. 현재 버전 8까지 출시했다.
자바의 개발자들은 유닉스 기반의 배경을 가지고 있었기 때문에 문법적인 특성은 파스칼이 아닌 C++의 조상인 C 언어와 비슷하다. 자바를 다른 컴파일언어와 구분짓는 가장 큰 특징은 컴파일된 코드가 플랫폼 독립적이라는 점이다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환한다. 바이트코드를 실행하기 위해서는 JVM(자바 가상 머신, Java Virtual Machine)이라는 특수한 가상 머신이 필요한데, 이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킨다. 때문에 자바로 개발된 프로그램은 CPU나 운영 체제의 종류에 관계없이 JVM을 설치할 수 있는 시스템에서는 어디서나 실행할 수 있으며, 이 점이 웹 애플리케이션의 특성과 맞아떨어져 폭발적인 인기를 끌게 되었다.
오브젝트 파스칼 : 오브젝트 파스칼(Object Pascal)은 파스칼에 객체 지향 개념을 포함하여 발전시킨 프로그래밍 언어이다. 주로 델파이 언어로도 잘 알려져 있다. 애플 매킨토시의 전신인 애플 리자용으로 개발한 오브젝트 파스칼 컴파일러가 시초이며, 가장 널리 알려진 오브젝트 파스칼의 변종은 볼랜드/코드기어 사의 델파이에서 사용되는 '델파이 프로그래밍 언어'가 있다. 볼랜드/코드기어 외 제품으로서는 자유 소프트웨어로 개발되는 델파이와 매우 닮은 프리 파스칼도 거의 유사한 문법을 가지고 있다.
델파이 : 엠바카데로 델파이(Embarcadero Delphi Delphi, (이전 이름: 코드기어 델파이, 인프라이즈 델파이, 볼랜드 델파이))는 마이크로소프트 윈도 응용 프로그램을 위한 통합 개발 환경(고속 개발 도구)이며 원래는 볼랜드가 개발하였으나 지금은 엠바카데로사에서 소유하여 개발하고 있다. 오브젝트 파스칼 프로그래밍 언어로부터 파생된 언어인 델파이를 이용한다.[1]
델파이 컴파일러의 최신 버전은 2014년에 발표한 델파이 XE6 이다. 엠바카데로 RAD 스튜디오 XE6 (엠바카데로 RAD 스튜디오 XE6)에 포함되어 있다.
파이썬 : 파이썬(Python)은 1991년 프로그래머인 귀도 반 로섬(Guido van Rossum)이 발표한 고급 프로그래밍 언어로, 플랫폼 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디 〈Monty Python's Flying Circus〉에서 따온 것이다. 파이썬은 비영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델을 가지고 있다. C언어로 구현된 C파이썬 구현이 사실상의 표준이다.
펄 : 펄(Perl)은 래리 월이 만든 인터프리터 방식의 프로그래밍 언어 혹은 그 인터프리터 소프트웨어를 가리킨다. 펄은 고급 언어, 범용 언어, 인터프리터 언어, 동적 언어 범주에 속한다. 이 계열의 언어에는 펄 5와 펄 6가 있다. 래리 월이 1987년 펄을 처음 만든 후, 펄은 많은 변화를 겪고, 펄 5의 최신 버전은 2013년 5월에 발표된 5.18이다. 펄 6은 2000년부터 펄을 다시 설계하면서 개발되기 시작했고, 펄 5와 독립적으로 개발되었고 서로 영향을 미쳤다. 펄 언어는 실용성을 모토로 하고 있어 C나 sed, AWK, 셸 스크립트 등 다른 프로그래밍 언어에서 뛰어난 기능을 많이 도입하여 사용하고 있다. 언어 자체의 자유도가 높고 표현력이 뛰어나 텍스트 데이터 처리, CGI나 웹프로그래밍, 시스템 관리, 그 밖의 간단한 작업을 하는 스크립트를 작성하는 데에 넓게 이용되고 있으며, 또한 생물정보학 쪽에서도 광범위하게 이용되고 있다.
인터프리터 펄은 자유 소프트웨어이며, 아티스틱 라이선스 또는 GPL으로 배포되고 있어 사용자는 둘 가운데 하나의 라이선스를 골라 쓸 수 있다. 유닉스를 비롯해 다양한 플랫폼에서 동작한다.
루비 : 루비(Ruby)는 마츠모토 유키히로(松本行弘 まつもとゆきひろ)가 개발한 동적 객체 지향 스크립트 프로그래밍 언어이다. 루비는 순수 객체 지향 언어이다. 루비에서의 정수나 문자열 등을 포함한 데이터 형식 등 모든 것이 객체이다. 기능에는 클래스 정의, 가비지 컬렉션, 강력한 정규 표현식 처리, 다중 스레드, 예외 처리, 반복, 클로저, Mixin, 연산자 오버로드 등이 있다. 구문은 ALGOL계를 계승하면서 가독성을 중시하고 있다. 오랫동안 언어 사양이 명문화되지 않고 마츠모토의 구현 언어 사양에 준하는 것으로 간주되어 왔지만, 2010년 6월 RubySpec으로 언어 사양을 책정 중이다.
액션스크립트 : 2000년 7월 액션스크립트 1.0이 플래시 5에서 처음 소개되었다. 액션스크립트 2.0에서는 객체 지향을 문법적으로 점차 지원하기 시작했다. (물론 1.0에서도 prototype을 이용한 프로토타입 체인으로 상속 효과를 낼 수 있었다.) 하지만 protected, internal 같은 접근제어자는 지원되지 않고, 패키지 문법은 따로 없어서 클래스 이름에 전부 쓰고, 사용자 정의 네임스페이스를 만들 수 없으며, 한 클래스가 구현 가능한 인터페이스는 하나 밖에 없다. 2007년 액션스크립트 3.0이 나왔으며, ECMA 스크립트 4판을 기반으로 한다.
ASP : 액티브 서버 페이지(Active Server Page, 줄여서 ASP)는 마이크로소프트사에서 동적으로 웹페이지들을 생성하기 위해 개발한 서버 측 스크립트 엔진이다. 최초 버전은 Windows NT 4.0 옵션 팩(1998 상반기)에 포함하여 인터넷 정보 서비스(IIS)에 추가되는 식으로 출시되었고, 나중에 윈도 서버(윈도 2000 서버의 최초 버전 이후로)의 무료 구성 요소로 포함되었다. ASP.NET이 ASP를 대체하고 있다.
ASP 2.0은 6개의 내장 객체들을 제공한다: Application, ASPError, Request, Response, Server, Session. 예를 들어, Session은 페이지 간의 변수의 상태를 유지하는 쿠키 기반의 세션을 나타낸다. 동적 스크립팅 엔진의 컴포넌트 객체 모델(COM) 지원은 ASP 웹사이트들이 DLL들 같은 컴파일 된 라이브러리들을 함수처럼 접근 가능하게 해 준다.
스위프트 : SWIFT는 국제 은행 간 통신 협회(Society for Worldwide Interbank Financial Telecommunication)의 약어이다. Swift는 애플이 iOS8 과 OS X 프로그래밍을 위해 개발한 언어이다.
↓ 공감 을 눌러주시면 블로거에게 큰 힘이 됩니다 !
'공부 이야기' 카테고리의 다른 글
[C언어] 유용한 매크로 함수들 (절대값, 제곱근, 최대값, 최소값 등) (0) | 2014.07.31 |
---|---|
[JavaScript] OnChange 사용하기 (0) | 2014.07.31 |
[Spring] MVC패턴, DAO, Service, VO에 대해서 (0) | 2014.07.21 |
Spring Framework 란? (0) | 2014.07.21 |
오라클(DBMS)이란? (0) | 2014.04.22 |