1 / 37

2 주 : 프로그래밍 언어의 기초

프로그래밍언어론 담당교수 : 박 양 하. 2 주 : 프로그래밍 언어의 기초. 프로그래밍 언어의 개념 학습이유. 생각을 표현할 수 있는 능력이 향상된다 . 프로그래밍 언어의 특징에 대해 폭넓고 다양하게 알고 있으면 소프트웨어 개발에 있어서 제어구조 , 데이터구조 , 추상화의 종류에 대한 제약을 줄 일 수 있음 따라서 프로그래머는 새로운 언어 구조를 배워서 소프트웨어 개발에 대한 사고를 향상 시킬 수 있음 프로그래밍 언어의 개념을 배움으로써 프로그래머는 언어의 좋은 특징들을 잘 이해하고 사용할 수 있음

bernie
Download Presentation

2 주 : 프로그래밍 언어의 기초

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 프로그래밍언어론 담당교수 : 박 양 하 2주 : 프로그래밍 언어의 기초

  2. 프로그래밍 언어의 개념 학습이유 • 생각을 표현할 수 있는 능력이 향상된다. • 프로그래밍 언어의 특징에 대해 폭넓고 다양하게 알고 있으면 소프트웨어 개발에 있어서 제어구조, 데이터구조, 추상화의 종류에 대한 제약을 줄 일 수 있음 • 따라서 프로그래머는 새로운 언어 구조를 배워서 소프트웨어 개발에 대한 사고를 향상 시킬 수 있음 • 프로그래밍 언어의 개념을 배움으로써 프로그래머는 언어의 좋은 특징들을 잘 이해하고 사용할 수 있음 • 다른 언어로 모의 실험을 하여 가장 좋은 특징들을 포함하는 새로운 언어를 설계할 수 있음

  3. 프로그래밍 언어의 개념 학습이유(Cont’d) • 적합한 언어를 선택할 수 있는 배경이 향상된다 • 많은 프로그래머들이 새로운 프로젝트에 사용될 언어를 선택하게 될 경우에 자신이 가장 잘 알고 있는 언어가 그 프로젝트에 적합하지 않을지라도 그 언어를 계속 선택하려고 함 • 다양한 언어의 특별한 특징을 잘 알고 있다면 언어를 선택하는데 있어서 더 나은 배경을 갖게 됨 • 새로운 언어를 배울 수 있는 능력이 향상된다. • 컴퓨터 프로그래밍은 매우 성장하고 있는 분야로 설계 방법론, 소프트웨어 개발도구, 프로그래밍 언어 등은 계속 발전 중 • 언어의 기본적인 개념을 이해하고 나면 배우고 있는 언어의 설계에 개념들이 어떻게 수용되어 있는지 쉽게 알 수 있음

  4. 프로그래밍 언어의 개념 학습이유(Cont’d) • 구현의 중요성에 대해 보다 많이 이해한다. • 구현상의 고려 사항을 이해함으로 해당 언어가 왜 이렇게 설계되었는지를 이해하고 보다 지능적으로 그 언어를 사용할 수 있는 능력을 갖추게 됨 • 컴퓨터가 다양한 언어구조를 어떻게 실행시키는지 이해하여 선택할 수 있는 다른 구조와의 상대적인 효율성을 잘 이해할 수 있음 • 전반적으로 전자계산 분야의 이해가 향상된다. • 정보조직, 검색 및 이용자중심 디지털도서관 서비스(예 : CWA기반 디지털도서관) 기획에 도움이 된다.

  5. 프로그래밍 영역 • 과학응용분야 • 1940년대 발표된 첫 디지털 컴퓨터가 사용 • 전형적으로 간단한 데이터 구조를 가지나 상당한 양의 부동소수점에 대한 산술 연산을 필요 • 가장 일반적인 데이터 구조는 배열과 행렬, 제어구조는 계수 루프 선택문 • 첫 번째 사용 언어는 Fortran • 사무응용분야 • 1950년대부터 사용 • 상세한 보고서를 생성할 수 있는 특징, 십진수와 문자 데이터를 세밀하게 표현하고 저장할 수 있는 방법, 십진수의 산술 연산을 표현할 수 있는 능력 포함 • 스프레드 시스템, 데이터베이스 시스템 • 첫 번째 사용언어 COBOL(아직도 많이 사용)

  6. 프로그래밍 영역(cont’d) • 인공지능(Artificial Intelligence) 분야 • 수치 계산보다 기호의 계산(이름으로 구성된 기호 조작)으로 사용으로 특징 • 다른 분야보다 더 많은 융통성 요구 • 첫 번째 사용언어 LISP(이후 Prolog, Scheme) • 문헌정보학 분야 • 정보조직 • 색인, 시소러스 처리 등을 할 때는 사무 응용분야의 기술 필요 • 자동분류 등을 처리할 때는 인공지능 분야의 기호 계산 방식 필요 • 정보검색 • 가중치, 결합법칙 등을 적용하기 위해서는 과학응용분야의 산술연산 방식 필요

  7. 프로그래밍 영역(cont’d) • 시스템 프로그래밍 • 시스템소프트웨어 : 운영체제와 컴퓨터 시스템에 속한 모든 프로그래밍 지원 도구 총괄 • 계속적으로 사용되는 실행 효율성 필요 • 외부장치와의 소프트웨어 인터페이스를 작성할 수 있는 저급 수준의 특징 제공 • UNIX 운영체제는 거의 C로 작성(실행효율적)

  8. 프로그래밍 영역(cont’d) • 스크립트 언어 • 초기 스크립트 언어는 명령들의 리스트를 한 개의 실행될 파일로 작성함으로 사용 • 첫번째 스크립트 언어는 sh(shell) : 파일 관리나 간단한 파일 필터링같은 부프로그램의 호출로 해석되는 명령들의 작은 집합으로 시작 • 이 후 변수, 제어문, 함수, 다양한 다른 특징들을 추가하여 하나의 완벽한 프로그래밍 언어가 됨 • www의 사용으로 CGI(Common Gateway Interface) 프로그래밍에 거의 이상적인 언어로 Perl의 사용이 급격하게 상승 • JavaScript : 웹 서버와 브라우저에 사용하기 위해 Netscape사에서 개발(대부분 클라이언트 측 스크립트 언어로 사용), HTML문서에 포함

  9. 프로그래밍 영역(cont’d) • PHP(Hypertext Preprocessor) • 웹 서버 시스템에서 사용목적으로 설계 • HTML 문서에 포함 • 문서가 요청한 브라우저에 전달되기 전에 서버상에서 해석 • 특정 목적 언어 • RPG : 사무보고서를 생성하는 데 사용 • APT : 프로그래밍 가능한 기계 도구에 명령어를 입력하는데 사용 • GPSS : 시스템 시뮬레이션을 위해 사용 • 특정 목적 언어는 적용 범위가 좁고 다른 언어와 비교하기 어려움

  10. 언어 평가 기준 • 판독성 • 프로그램을 얼마나 쉽게 읽고 이해할 수 있는가? • 효율성과 기계 판독성(컴퓨터 관점)-유지보수의 용이성을 위한 인간 중심의 판독성으로 전환 • 판독성에 기여하는 특성 • 전반적 단순성(overall simplicity) : • 작성자와 독자의 언어 요소의 불일치, • 다중성(특정 연산을 한 가지 이상의 방법으로 수행), 중복(한 연산자 기호가 하나 이상의 의미를 가질때)에 의해 복잡성의 문제 대두 • 직교성(orthogonality) : • 언어의 기본 요소간 관계의 대칭성으로 정의, • 직교성이 결여되면 언어 규칙에 예외 사항을 초래, • 단순성과 관련, 언어 설계가 직교적일수록 언어의 규칙은 더 적은 예외사항을 요구하며, 언어를 배우고 읽고 이해하기 쉽게 함

  11. 언어 평가 기준(Cont’d) • 데이터 타입과 구조 : 언어가 데이터 타입과 데이터 구조를 정의할 수 있는 충분한 장치를 제공하면 판독성에 상당히 도움이 됨 • 구문고려사항 : 식별자 형태, 특수어, 형태와 의미 등을 표시하면 판독성을 높일 수 있음 • 작성력 • 선택한 문제 영역에 대해서 프로그램을 생성하기 위해 언어가 얼마나 쉽게 사용될 수 있는가? • 판독성과 밀접한 관계 • 작성력에 영향을 미치는 요소 • 단순성과 직교성 : • 알고 있지 않은 요소를 우연히 사용하여 이상한 결과를 초래, 적은 수의 기본 구조와 이들을 조합하기 위한 일관된 규칙(직교성)을 갖는 것이 좋음 • 지나친 직교성은 작성력에 해가 되기도 함 : 오류 탐지의 어려움으로 불합리성 초래 가능성

  12. 언어 평가 기준(Cont’d) • 추상화(abstraction)의 지원 : • 복잡한 데이터 구조나 연산을 정의하고 사용할 수 있는 능력 • 오늘날 프로그래밍 언어 설계방법론에서 중요한 개념 • 프로세스 추상화, 데이터 추상화 • 프로세스 추상화 : 부프로그램 사용(여러 번 사용되는 정렬 알고리즘을 구현) • 데이터 추상화 : 정수 데이터를 포함하는 간단한 클래스 형태 구현 • 표현력(expressivity) : • 계산 표현을 위해 편리한 방법을 가지고 있음 • 예 : count++ vs count=count+1

  13. 언어 평가 기준(Cont’d) • 신뢰성 • 모든 조건 하에서 주어진 명세 수행의 척도 • 신뢰성에 영향을 미치는 요소 • 타입 검사(type checking) • 컴파일러나 프로그램 실행 중에 주어진 프로그램에 대해서 타입 오류를 검사하는 것(컴파일러 검사가 저비용) • 초기에 오류를 탐지할수록, 수정에 소요되는 비용과 시간이 적음 • 예 : float 타입을 예상하는 함수의 호출에서 int 타입 변수가 실매개변수로 사용될 수 있음 • 예외처리(exception handling) • 실행 시간 오류를 가로채서 올바르게 수정, 계속 실행할 수 있는 능력 • C++, Java는 예외 처리에 뛰어남

  14. 언어 평가 기준(Cont’d) • 별칭(aliasing) • 동일 기억장소에 대해 두 개 또는 그 시앙의 다른 참조방법(혹은 이름)을 갖는 것 • 언어에서 결여된 데이터 추상화 특징을 지원 • 그러나 프로그래밍 언어에서의 위험한 특징, 신뢰성 향상을 위해 제약시킴 • 판독력과 작성력 • 프로그램이 쉽게 작성될수록, 그 프로그램이 올바를 가능성이 높음 • 판독성은 소프트웨어 생명주기에서 코딩과 유지보수의 두 단계에서 신뢰성에 영향을 줌 • 읽기 어려운 프로그램은 작성하거나 수정하기가 어려워짐

  15. 언어 평가 기준(Cont’d) • 비용 • 최종적 비용 합계에 영향을 미치는 특성 • 프로그래머를 교육시키는 비용(언어의 단순성, 직교성, 프로그래머의 경험에 의해 결정) • 프로그램 개발 비용 : 작성력에 의해 결정, 그 언어가 특정 응용분야에 얼마나 적합한가에 의존 • 프로그램을 컴파일하는 비용 • 프로그램 실행비용 : 언어 설계에 영향 받음, • 최적화는 컴파일러가 생성하는 코드의 크기를 줄이고 실행 속도를 향상시키기 위해 사용되는 기법들의 집합 • 언어 구현 시스템을 위한 비용 • 신뢰성 부족에 다른 비용 • 프로그램 유지보수 비용 : 판독성에 영향받음 • 기타기준 • 이식성, 일반성, 분명성

  16. 언어 설계에 미친 영향 설계의가장 중요한 요소는컴퓨터 구조와프로그램 설계 방법론 • 컴퓨터 구조 • 명령형(imperative) 언어와함수형언어 • 명령형언어 : • 데이터와 프로그램 모두 동일한 기억장소에 저장, 실제 명령어 실행을 담당하는 중앙처리장치(CPU)는 기억장소로부터 분리 명령어와 데이터는 기억장소로부터 CPU에 파이프(전달)되어야 하고 CPU 연산결과는 다시 기억 장소에 전달 • 명령형 언어의 중심 특징은 변수, 배정문, 반복문 • 변수 : 기억장소 셀을 모델 • 배정문 : CPU와 기억장소간에 데이터 이동 연산 기반 • 반복문 : 구조상 반복연산 표현에 재귀 함수보다 효과적 • 함수형언어 : 모든 계산을 함수 인자에 적용함으로 이뤄짐, 배경문, 변수가 필요 없음, 반복을 재귀 호출로 표현하여 루프가 필요하지 않음

  17. 언어 설계에 미친 영향 • 논리 프로그래밍과 객체 지향 프로그래밍 • 논리 프로그래밍 • 계산 프로세스를 컴퓨터에 전달하기 위해 형식적인 논리표기 사용 • 술어 해석학(predicate calculus)는 논리 프로그래밍에서 사용되는 표기 • 비절차적 프로그래밍으로 결과의 형태를 서술 • 논리 프로그래밍이 널리 사용되지 않는 이유 • 비효율적, 매우 제한된 분야(특정 DBMS나 AI의 일부영역)에서 효과적 • 객체지향 프로그래밍 • 세가지 기본적 개념 : 데이터 타입, 상속, 동적 바인딩 • 실세계 객채들과 객체에 필요한 프로세스를 식별후 객체, 프로세스, 객체들 간 통신에 대한 실험을 생성함으로 문제를 해결

  18. 언어 설계에 미친 영향(Cont’d) • 명령형 프로그래밍 언어 구조는 보다 기계 구조 관점에서 모델링 되었지만 함수언어 보다 더 많이 사용되고 있는 것이 현실임 • 설계 방법론 • 1970년대 초기 • S/W 개발 과정과 프로그래밍 언어 설계에 대해 분석이 이뤄졌음 • H/W 비용 대비 프로그래머 비용 증가에 대한 문제에서 비롯 • 결과 : 하향식 설계와 단계적 세분화(타입 검사의 불완전성과 제어문의 불충분을 야기 : goto문 남발) • 1970년대 후반 • 프로세스 지향 프로그램 설계에서 데이터 지향 프로그램 설계 방법론으로 이동 • 데이터 추상화과 시스템 설계에 효과적(시스템에 사용된 언어에 의해 지원)

  19. 언어 설계에 미친 영향(Cont’d) • 1980년대 초반 • 객체지향 설계 방법론 : 데이터 추상화로 시작 • 연산과 데이터 객체를 캡슐화(encapsulation)하고 데이터에 대한 접근을 은폐 시키고 상속(inheritance : 기존 소프트웨어의 가능한 재사용 향상 가능성)과 동적 타입 바인딩(dynamic type binding : 유연한 상속 사용 허용)을 추가 • 최근 • 동시성(concurrency)분야에서 프로세스지향 프로그래밍에 대한 연구가 이어지고 있음 • 동시에 수행되는 프로그램 단위를 생성하고 제어하기 위한 언어 특징의 필요성 제기

  20. 언어 설계 절충 Hoare : “중요하지만 상충되는 평가 기준들이 있으므로 상당히 많은 이들을 타협하고 만족시키는 것은 중요한 공학적 작업” • 신뢰성과 실행비용의 상충 • 예 : 의미적으로 동등한 Java와 C • Java 언어 정의는 배열 원소에 대한 모든 참조에 대해 검사를 요구하지만 이는 실행 비용을 크게 증가시킴, C보다 신뢰성이 높음 • C는 첨자범위 검사를 요구하지 않아 Java보다 빠른 실행을 제공 • 작성력과 판독성의 상충 • 예 : APL은 배열 피연산자를 위한 강력한 연산자 집합을 포함하고 있어서 표현력이 높아 작성력이 좋음, 그러나 함축되고 간결하고 명확한 식은 작성한 사람 외에 알아보기 어려워 판독력이 떨어진다고 할 수 있음

  21. 언어 설계 절충(Cont’d) • 유연성과 안정성의 상충 • 예 : Pascal의 가변 레코드(한 메모리 셀이 다른 시간에 다른 타입의 값을 포함하는 것을 허용함으로 유연성이 강조되나 타입검사에서 프로그램에게 포인터의 산술연산을 허용하는 허점(loophole)을 제공) • 타협과 절충(trade-off) • 많은상충의 예들이 있음 • 상충의 정도가 어떤 것은 미세하고 어떤 것은 명확함 • 따라서 프로그래밍 언어를 설계할 때 언어 구조와 특징을 선택하는 작업에 타협과 절충이 필요

  22. 프로그램언어의 구현방법 • 컴파일 • 가장 극단적인 방법으로 프로그램은 컴퓨터에서 직접 실행될 수 있는 기계 언어로 번역 • 장점 : 일단 번역과정이 완료되면 매우 빠르게 프로그램을 실행시킬 수 있음(C, COBOL, Ada)

  23. 프로그램언어의 구현방법(cont’d) • 순수해석 • 순수해석(pure interpretation) 은 구현방법에서 컴파일과 정 반대, 번역 없이 인터프리터라 는 다른 프로그램에 의해 해석 • 장점 : 많은 원시 프로그램 수준의 디버깅 연산을 쉽게 구현 (오류발견용이), JavaScript, PHP와 같은 웹 스크립트 언어에 의해 다시 사용 • 단점 : 실행 속도 저하, 많은 기억공간 요구 원시프로그램 입력데이터 인터프리터 결과

  24. 프로그램언어의 구현방법(cont’d) • 혼합형 구현 시스템 • 혼합형 구현 시스템(hybrid implementation system)컴파일러와 인터프리터의 절충형, 고급 언어 프로그램을 쉽게 해석하기 위해 설계된 중간언어로 번역 • 원시 언어 문장이 한번만 해석

  25. 프로그래밍 언어의 발전사 • 의사코드 : 최초의 하드웨어 프로그래밍 • 1940년대 후반~1950년대 초반 컴퓨터 성능이 높지 못한 시절 기계 언어가 가지는 단점인 잦은 오류와 판독력을 높이기 위해 고안 • 특정 프로그래밍 언어의 문법을 따라 씌여진 것이 아니라, 일반적인 언어로 코드를 흉내내어 알고리즘을 써놓은 코드. 의사(疑似)코드는 말그대로 흉내만 내는 코드이기 때문에, 실제적인 프로그래밍 언어로 작성된 코드처럼 컴퓨터에서 실행할 수 없으며, 특정 언어로 프로그램을 작성하기 전에 알고리즘의 모델을 대략적으로 모델링하는 데에 사용 • 일종의 인덱스 기법을 요구하여 사용되었으나 활성화 되지 못하고 보다 높은 수준의 언어 개발을 초래

  26. 프로그래밍 언어의 발전사(cont’d) • Fortran • 일반적으로 첫 컴파일 된 고급 언어로 인정 • 여전히 처리능력은 작고, 느리고, 상대적으로 신뢰성이 없음 • 컴퓨터는 주로 과학 계산 분야에서 이뤄짐 • 프로그래머의 비용보다 컴퓨터 비용이 높아서 생성된 목적 코드의 속도가 포트란 컴파일러의 주 목적 • 평가 : 많은 부족함에도 불구하고 컴퓨터가 사용되는 방식을 영원히 극적으로 변화시킨 언어 • LISP • 첫 번째 함수 프로그래밍 언어로 리스트 처리를 위한 언어 특징 제공 • 인공지능 분야의 첫 번째 응용 프로그램 • 관련언어 : Scheme, ML(메타언어), Miranda, Haskell 등

  27. 프로그래밍 언어의 발전사(cont’d) • ALGOL 60 • 정교화를 향한 첫 단계, 범용 언어 설계 노력의 결과 • 국제적인 프로그래밍 설계 그룹이 결성되는 등 알고리즘을 기술하는 유일한 언어로 남았으나 자체적으로는 크게 성공하지 못함 • 계보 : Fortran I(1957), ALGOL 58(1958), ALGOL 60(1960) • 직간접적 후손 : PL/I, SIMULA 67, ALGOL 68, C, Pascal, Ada, C++, Java 등 • COBOL • 사무 기록의 전산화를 위한 시스템 • 매크로를 위해 처음으로 사용된 고급 언어 구조, 계층적 데이터 구조가 COBOL에서 처음 구현(모든 명령형 언어에 사용) • 데이터 영역에 강하고 프로시저 영역이 상대적으로 약함 • 회계분야의 전산화를 가져오게 됨 • 계보 : FLOW_MATIC(1957), COBOL(1960)

  28. 프로그래밍 언어의 발전사(cont’d) • BASIC • 시분할의 발단을 가져옴 • 원격 컴퓨터에 연결된 터미널을 통해 사용된 최초 언어 • 개발 목적 : 쉽게 배울 수 있으며 소형 컴퓨터에서 쉽게 구현 • 비 과학 전공학생들이 배우고 사용하기 쉬워야 함 • 사용자에게 즐거움을 주고 친숙해야 함 • 숙제를 원활히 할 수 있도록 빠른 작업 처리 시간 제공 • 자유롭고 개인적인 접근 허용 • 사용자 시간을 컴퓨터 시간보다 더 중요하게 생각 • 발달과정 • 1970년대 후반~1980년대 초반 널리 사용 • 1990년대 Visual BASIC(1991)의등장으로 사용 증가 • 계보 : ALGOL 60(1960) & Fortran IV(1962), BASIC(1964), QuickBASIC(1988), Visual BASIC(1990), Visual BASIC.NET(2002)

  29. 프로그래밍 언어의 발전사(cont’d) • PL/I • 광범위한응용 분야에 사용될 수 있는 언어를 설계하려는 첫 번째 대규모 시도 • 이전, 이후 대부분의 언어는 과학, 인공지능, 사무분야 등 특정 한가지 응용 분야에 초점을 둠 • 계보 : COBOL(1960) & ALGOL(1960) & Fortran IV(1962), PL/I(1965) • APL과 SNOBOL • 초기동적 언어 • 동적 타입과 동적 기억장소 할당 • 다른 기존 언어에 기반 주지 않고 다른 언어에도 많은 영향을 미치지 못함

  30. 프로그래밍 언어의 발전사(cont’d) • SIMULA 67 • 데이터추상화의 발단 • 클래스 구조 개발 : 데이터 구조와 데이터 구조를 조작하는 루틴들을 함께 묶는 것 • 계보 : ALGOL(1960), SIMULA I(1964), SIMULA 67(1967) • ALGOL 68 • 최초의직교적 설계 • 사용자-정의 데이터 타입의 포함(몇 개의 기본적인 타입과 구조체를 제공하고 사용자가 이러한 구조 타입들을 다양하고 많은 구조체로 결합하는 것을 허용) • ALGOL의 후손들 • Pascal(1971) : 설계의단순성 • 프로그래밍 교육 목적으로 가장 널리 사용된 언어 • 1990년대 중반 이후로 인기가 감소 추세

  31. 프로그래밍 언어의 발전사(cont’d) • C(1971) : 이식성 • 폭 넓고 다양한 응용 분야에 매우 적합 • 충분한 제어문과 데이터 구조할 수 있는 특징 제공, 높은 표현력 허용을 위한 연산자 제공(그러나 완벽한 타입 검사를 제공하지 않음) • 계보 : CPL(1963), ALGOL(1968), BCLP(1969), B(1970), C(1971), C++(1985) & ANSI C(1989), C99 • Prolog • 논리기반 프로그램 • 계산 프로세스를 컴퓨터에 전달하기 위해 형식적인 논리 표기인 술어 해석학(Predicate calculus)을 사용 • 프로그래밍은 비절차적, 결과의 형태를 서술 • 간결하고 명확함

  32. 프로그래밍 언어의 발전사(cont’d) • Ada • 가장 광범위하고 가장 많은 비용이 투여된 언어 • 규모가 크고 복잡한 반면 신뢰성이 필요한 응용분야를 위해 설계 • 계보 : Pascal(1971), Ada 83(1983), Ada 95(1995) • Smalltalk • 객체지향프로그래밍 • 단순한 언어가 아니라 완벽한 소프트웨어 개발환경 • 인터페이스의 사용에 있어서 상당히 그래픽적임 • C++ • 명령형 특징과 객체지향 특징의 결합 • Smalltalk의 것을 지원하기 위해 C에 특징을 추가

  33. 프로그래밍 언어의 발전사(cont’d) • Java • 명령형 + 객체지향 언어 • C++의강력함과 유연성을 제공하면서 규모는 작아지고 더욱 단순하고 더욱 안전한 언어로 설계(1994) • 웹을 위한 스크립트 언어 • 1990년대 중반 이 후 웹 사용이 폭발적으로 증가, HTML과 관련된 계산에 대한 필요성이 급격하게 요구 • 서버 측 스크립트 언어와 클라이언트 측 스크립트 언어의 등장이 요구 됨 • 클라이언트 측 언어 : 클라이언트측에서 직접 처리하는 언어이며 때문에 서버에 부하를 주지 않음, JavaScript 등 • 서버 측 언어 : 서버는 웹서비스를 하면서 웹브라우저를 통해 정보를 뿌려주게 되어 있음, 웹브라우저가 인식할 수 있는 HTML코드로 변환, PHP, ASP, JSP 등

  34. 웹프로그래밍 언어 • 웹프로그램은 정적인 것과 동적인 것이 존재 • 정적 : HTML처럼 변하지 않고 프로그래머가 짜놓은 그대로 화면에 나타내어 지는 것 • 동적 :ASP,PHP,JSP,PERL(CGI)처럼 프로그램을 해 놓은 상태에서 각 웹사이트를 돌아 다니시다 보면 화면이 매번 바뀌는 것을 볼 수 있을겁니다. • 웹프로그램은 그 어느 것을 말하는 것이 아닌 HTML과 ASP,PHP,JSP,PERL(CGI)등이 같이 쓰여져 웹페이지에서 글도 쓰고 회원가입도 하는 인터넷으로 할수 있는 모든 서비스 • HTML은 화면에 보여지는 자체가 HTML이고 ASP,PHP,JSP,PERL(CGI)등은 HTML에 생명을 불어 넣는 프로그램 ASP,PHP,JSP,PERL(CGI)는 HTML이 없이는 화면에 보여질 수 없음

  35. 웹프로그래밍 언어 • ASP(Active Server Page) • MicroSoft의 IIS(Internet Information Server)에서 사용 • Visual Basic의 스크립트 버전인 Visual Basic Script 사용 • Windows 서버의 여러 기능 활용을 통한 높은 생산성, 강력한 기능의 쉬운 구현 • WINDOW NT계열, IIS서버, MSSQL데이타베이스, 중소형쇼핑몰 • PHP(Hypertext Preprocessor) • 1994년 rasmus lerdorf라는 사람에 의해 처음으로 고안이 되었으며 자신의 개인홈페이지를 만들기 위해 사용 • 웹서버인 아파치웹서버에 모듈형태로 장착되어 쓰임, 유닉스뿐만 아니라 윈도우에서도 사용이 가능 • ASP의 ODBC나 JSP의 JDBC와 같이 보조적인 메커니즘이 필요하지 않고 바로 함수를 통한 처리방식을 채택, 즉 데이터베이스에 대한 공통 인터페이스를 가지고 있지 않고 모든 DB에 대해 자체 라이브러리를 지원

  36. 웹프로그래밍 언어(cont’d) • php의 최대 장점은 사이트에서 다운받아 무료로 사용 • 대부분의 운영체제를 지원하며 데이타베이스를 다양하게 지원 • 함수가 많아 작업이 편리 • 리눅스계열, APACHE서버, MYSQL데이타베이스, 개인 혹은 중소형소핑몰사용 • JSP(Java Server Page) • JAVA를 기반으로 하는 SUN사에서 개발한 언어 • 주로 은행이나 중요회사에 많이 쓰이며 보완성이 뛰어남 • 하지만 코딩이 어렵고 ASP에 비해 코드량이 1.5배 가량 됨 • 동작 가능한 곳은 리눅스와 윈도우즈 모두 가능하며 데이타베이스도 다양하게 지원 • JVM(Java Visual Machine)이라는 프로그램이 운영체제 위에 설치되면 기종을 가리지 않고 사용할 수 있기 때문에 코딩이 어려워도 요즘 많이 쓰이는 추세 • WINDOW혹은 리눅스 계열, TOMCAT혹은 RESIN서버, ORACLE데이타베이스, 은행 및 보안중요성회사, 대형쇼핑몰에 사용

  37. 참고 : 자바스크립트와 자바의 차이

More Related