2012년 3월 17일 토요일

1.4.1 컴퓨터 구조

폰 노이만 구조(von nuemann architecture) 기반으로 설계
명령형 언어 - 데이터와 프로그램 모두 동일한 기억장소에 저장한다.
명령형 언어의 주요 특징은 변수, 배정문, 반복문

폰노이만 컴퓨터  구조상에서 기계 코드 프로그램의 실행은     실행-반입 주기(fetch-execute cycle) 과정


1.4.2 프로그래밍 방법론 (Programming Methodologies)
객체지향 방법론은 처리과정을 데이터 객체로 캡휼화 하고
데이터 추상화
상속 - 기존 소프트웨어의 재사용 가능성을 크게 향상시키는 강력 , 개발 생선성을 크게 향상 가능성
동적 타입 바인딩 - 보다 유연한 상속 사용을 허용


1.5 언어 부류
프로그래밍 언어는 보통 다음 네가지로 나뉜다
명령형 언어
함수 언어
논리 언어 - 규칙-기반 언어(rule-based language)
객체 지향 언어

마크업/프로그래밍 하이브리드 언어

JSTL, XSLT


1.6 언어 설계 절충

신뢰성과 실행비용 ex 자바와 C
작성력과 판독성 ex APL
작성력과 신뢰성 ex 자바와c++ - 포인터


1.7 구현방법




1.7.1. 컴파일

명령어는 흔히 실행을 프로세서로 이동되는 데 걸리는 시간보다 더 빠르게 실행 될 수 있기 때문에, 컴퓨터의 기억장소와 프로세서를 연결하는 속도는 보통 컴퓨터의 속도를 결정 한다. 이런한 연결을 폰 노이만 병목 이라 부른다. 폰 노이만 병목은 폰 노이만 구조 컴퓨터의 속도를 제한 하는 주요 요소다. 폰 노이만 병목은 병렬 컴퓨터의 연구와 개발을 위한 주요 동기 중의 하나 였다.


1.7.2 순수 해석
순수 해석(pure interpretation)은 구현 방법에 있어서(컴파일과는)정반대에 위치한다. 이방법을 통해서, 프로그램은 어떠한 번역 과정 없이 인터프리터라 불리는 또 다른 프로그램에 의해서 해석된다.

1.7.3 혼합 구현 시스템












Algol58  블록구조의 개념이 도입.

어떤 면에서 보면 ALGOL60은 상당히 성공적이었지만, 이 언어는 슬픈 실패작이었다. 20년 이상 알고리즘을 기술하는 유일한 언어 유지해왔다.  60년대 이후 많은 언어들이 이 언어의 영향을 받았다. PL/L, SUMULA67, ALGOL68, Pascal, Ada, c++, Java가 그예이다.
언어의 구문이 형식적으로 기술된 첫 번째 언어이다. BNF의 성공적 사용 -> 형식언어, 파싱이론, BNF 기반 컴파일러 설계가 그것이다.  마지막으로 ALGOL 60 구조는 기계 구조에 영향을 끼침.

미국에서 주목 받지 못하고 유럽에서 사용됬지만 주요언어는 아니였음.
그 이유 : 1. 너무 큰 유연성 2. 입출력문의 결여 3.IBM의 지원 결여(FOTLAN과는 달리)


COBOL
사무형 언어로 LISP과 정반대의 길은 걷는 언어다.
자체적으로 오래동안 살아남았지만 다른 언어에는 영향을 주지않은 언어(PL/1에만 영향).
PLANKALKUL에서 처음 제시된 계층적 데이터 구조(레코드)가 COBOL에서 처음으로 구현되었다.

2.7 시분할의 발단 : BASIC

1970후반-1980초에 마이크로 컴퓨터상에서 매우 널리 쓰였다.
두기지 특성의 직접적인 결과이다.
1. 초보자 특히, 과학에 관련되지 않은 사람들이 쉽게 배울 수 있었다.
2. 이 언어의 더 작은 버전들이 매우 작은 기억 용량을 가진 컴퓨터상에 구현될수 있었다.

마이크로컴퓨터의 성능 향상과 함께 쇠퇴되었다가
1990년대 초반에 visual BASIC(Microsoft)의 출현으로 부흥
2

vb.net 객체지향 프로그래밍 완전 /// 대신하여 C#을 쓰기도함

2.8 모든 사람을 위한 모든 것:PL/1
IBM의 생상품으로 야심차게 개발(like Fortran)
과학과 사무처리로 양분된 상황에서 과학에서는 Fortran이 독점하다시피하고
사무 응용 분야 사람들이 어셈블러에서 COBOL로 넘어가는 과도에서
IBM이 두 분야를 두루 아울를 수 있는 단일의 보편적 컴퓨터 IBM System/360 계열의 개념을 탄생시켰다.


30. 오늘날 객체지향 언어의 중요한 일부가 된 SIMULA67의 특징은 무
엇인가?
실행 재개를 허용하는 부프로그램은 호출자와 피호출 부프로그램이 명
령형 언어세ㅓ 갖는 엄격한 주인과 노인(mster/slave)의 관계가 아니
라 , 서로 간의 다소 동등한 관계를 갖기 때문에 코루틴(coroutin)으
로 알려져있다.코루틴을 지원하기 위해서 클래스 구조가 개발되었다.
이는 데이터 추상화의 개념이 클래스로부터 비롯되었기 때문에 중요한
개발이었다.
객체지향의 3요소
추상화, 상속, 동적할당
그 중의 추상화를 simula67가 호출과 피호출프로그램에 대한
(master/slave) 관계가 아닌 coroutine으로 동등한 관계에서 시작한
객체에 대한 개념으로써 많은 영향을 미쳤다.



2.11 직교적 설계 : ALGOL68
ALGOL68 은 직교성
PL/1은 상당히 많은 고정된 구조를 제공함으로써 작성력을 취하였다.
PL/1은 컴파일러를 생성하는데 IBM의 후원, ALGOL68은 X

2.12.1
설계의 단순성

Pascal
1970년대 후반부터 컴퓨터 교육목적으로  널리 사용되었지만 여러 응용분야에서 필수적인 여러 가지 특징들이 결여되어있다. 그래서 Turbo Pascal과 같은 비표준화된 여러 변형들이 출현.


2.12.2 이식성을 갖는 시스템 언어 : C

C는 어떤 특징은 BCPL을 통해서, 어떤 특징을 직접적으로 ALGOL68로부터 영향을 받았다.
이러한 특징은 for, switch문, 배정 연산자 그리고 포인터의 취급 등에서 볼 수 있다.


script 언어 종류
sh
awk
Tcl
perl : 초창기 sh과 awk의 결합형태 였으나 상당한 발전. 스크립터 언어로 불리지만 명령형 언어에 가깝다.  왜냐면 이 언어는 실행 전에 항상 적어도 중간 언어로 번역되기 때문에
 . 더욱이 매우 다양한 계산 문제에 대해서 적용 가능한 모든 구조를 지원한다.



2.13 논리 기반 프로그래밍 : Prolog

비절차적언어 - 결과가 계산되는 방법을 서술하기보다는 단지 결과의 형태를 서술한다.

prolog 프로그램의 데이터베이스는 두 가지 종류의 문장으로 구성된다. 사실(fact)와 규칙(rule)이 그것이다.

-사실(fact)
mother(joanne, jake); //joanne는 jake의 엄마
father(vern, joanne); // vern은 joanne의 아빠
-규칙(rule)
grandparent(X,Z) :- parent(X, Y), parent(Y,Z); //X가 Y, Y가 X의 부모면 X는
Z의 조부모다.

널리 사용되지 않은 2가지 이유  : 1.동등한 명령형 언어와 비교 결과 , 비효율적임. 2.매우 제한된 분야 (데이터베이스 관리 시스템, AI의 일부 영역)에서 효과적.

2.14역사상 최대 설계 노력 : Ada

Ada 언어의 네 가지 주요 특징

1. 패키지 -> 데이터 추상화의 사용지원
2. 많은 예외처리 장치  -
3. 프로그램 단위는 포괄적(generic)일 수 있다.
4. 동시실행(concurancy execution) 제공 - 랑데부(rendezvous)메커니즘을 사용하여 task라 불리는 들을 특정프로그램 단위들에 대한 동시실행 제공



c++이 급격히 널리 사용되는 언어가 되었다 그 인기 요인중 하나는 성능이 좋고 가격이 저렴한 컴파일러가 존재.
그리고 C와 거의 완벽하게 호환가능.
하지만 C의 안전하지 못한 특징을 대부분 이어 받았고, 따라서 Ada, Java언어 보다 덜 안전하다.

관련언어
 Eiffel  : 혼합형 언어. C++ 보다는 더 작고, 더 단순하고, 더 안전하나 표현력과 작성력은 거의 동일하다.
Delphi: 혼합형 언어. 차이점은 C++은 C기반, Dephi는 pascal기반이므로 해당 특징들을 따라감. ex )안정성

명령형 언어 기반 객체지향 언어 : Java

가전제품의 내장 장치를 위한 프로그래밍이었다. 신뢰성 중심의...
가전제품에서 중요한 요소중에 하나가 신뢰성이기에. 아니면 모두 회수해야되니까

하지만 초창기에는 웹에서 자바애플릿으로 빠르게 매우 널리 사용되었다.

자바에서 동시성 프로세스를 생성하는 것이 상대적으로 쉽다. 이러한 프로세스를 자바에서 스레드(thread)라 부른다.
자바는 객체에 대해서 묵시적인 기억장소 회수를 사용하는데, 이를 흔히 쓰레드 수집(garbage collection)이라 한다.

자바는 확장될 경우에만 배정 타입 강제 변환을 허용한다.
int -> float는 가능 하지만 그 반대는 안된다.



스크립트 언어 : JavaScript, PHP, Python, Ruby
+perl


2.19 새 천년을 위한 C-기반 언어 : C#

C#의 다른 특징 가운데는 대부분의 프로그래밍 언어에서 지원하지 않는 장방형 배열(rectangular array)과 배열과 객체 집합체를 위한 반복자(iterator)인 foreach문이 있다.
C#의 의도된 주요 응용은 .NET 환경에서 주요 언어로서이다. C#이 많은 사용자들을 끌어들이는 데 성공할 것이라고 확신하여 말하기에는 아직 이르다. 그러나 마이크로 서프트사가. NET을 판매하는 데 막대한 노력을 투여하면, C#은 널리 사용될 아주 좋은 기회를 가질 것으로 본다. 더욱이, C#의 어떤 특징은 분명히 가까운 미래에 프로그래밍 언어에서 채용될 것이다.



2.20 마크업/프로그래밍의 하이브리드 언어

2.20.1 XSLT

XML문서가 디스플레이 되기 위해서 변환되는 방법중의 하나는 다른 마크업 언어, XSLT를 사용한다.

2.20.2 JSP
JSTL의 핵심부분은 또 다른 마크업/프로그래밍 하이브리드 언어다. 그러나 그 형태와 목적이 XSLT와 다르다. JSTL을 논의하기 전에, 서브릿과 JSP(Java Server Pages)의 개념을 소개하는 것이 필요하다.
서브릿은 웹 서버 시스템 상에 상주하여 실행되는 자바 클래스다.

댓글 없음:

댓글 쓰기