1장 기본적인 사항(3) 2017. 3. 13 순천향대학교 컴퓨터공학과 하상호.

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

천안천일고등학교 Copyright © by Ryu Bin All rights reserved 프로그래밍 실무.
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
9. 중간언어 9-1. 소개 9-2. Polish표기법 주소 코드 9-4. 트리 구조 코드
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
Ⅰ. 클라이언트 스크립트 Ⅱ. 서버 스크립트 그렇다면 프로그래밍 언어를 수행하는 컴퓨터의 개념적인 구조를 살펴 본다면, 프로그래밍 언어가 무엇인지 이해하는데 도움이 될 것입니다. 현재 컴퓨터 구조의 모태가 되고 있는 폰 노이만 구조는 그림에서 보는 것과 같이, 명령어와.
Power Java 제3장 이클립스 사용하기.
1. 컴파일러 개론 1-1. Compiler 정의 1-2. Language Processing System
최윤정 Java 프로그래밍 클래스 상속 최윤정
C 프로그래밍 I.
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
Part 01 서론 안산1대학 디지털정보통신과 임 성 국.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
Power Java 제2장 자바 개발 도구.
웹 서버 동작 HTTP 클라이언트가 서버와 대화하는 방법과 데이터를 서버에서 클라이언트로 전송 하는 방법을 정의한 프로토콜
1장 기본적인 사항(3) 순천향대학교 컴퓨터공학과 하상호.
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
이것이 C 언어다. IT응용시스템공학과 김 형 진 교수.
Java 기초 (Java JDK 설치 및 환경설정)
디지털시스템설계 과목 담당교수 : 원 충 상 한국교통대학교 컴퓨터공학과
Visual Basic .NET 처음 사용하기.
1. C++ 시작하기.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
26. 매크로와 전처리기.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
Method & library.
Chap 6.Assembler 유건우.
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
27장. 모듈화 프로그래밍.
강의 개요. 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
메모리 관리 & 동적 할당.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
UNIX Unbounded A Beginning Approach
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
CHAPTER 04. 프로그래밍 언어 인간과 컴퓨터의 대화_진화하는 소통. 진화하는 컴퓨터
프로그래밍 언어론 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
제 9장 트랜스레이터.
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
10장 부프로그램 구현 순천향대학교 컴퓨터공학과 하 상 호.
웹디자인
자바 5.0 프로그래밍.
LabVIEW WiznTec 주임 박명대 1.
ARM Development Suite v1.2
Part 1 개요 Chapter 1 : 컴퓨터와 프로그램 그리고 자바 Chapter 2 : 자바의 환경
메모리 타입 분석을 통한 안전하고 효율적인 메모리 재사용
“사람과 컴퓨터” 이 점 숙 컴퓨터와 소프트웨어 “사람과 컴퓨터” 이 점 숙
ATmega128의 특징 아이티즌 기술연구소
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
제2강 : 전자계산기구조-컴퓨터 시스템 구성.
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
9. 중간언어 9-1. 소개 9-2. Polish표기법 주소 코드 9-4. 트리 구조 코드
AT MEGA 128 기초와 응용 I 기본적인 구조.
Chapter 01 자바의 개요 자바는 최초 전자기기의 내장형 소프트웨어를 위해 개발되었으나, 최근 엔터프라이즈 응용에도 폭 넓게 활용됨 자바의 특징과 실행방법, 개발 환경 및 도구에 대해 소개.
공학도를 위한 C언어 프로그래밍실습1 -통합개발환경 사용법-
TVM ver 최종보고서
발표자 : 이지연 Programming Systems Lab.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
LEON3 DBT 엔진을 이용한 ERC32 기반의 하이퍼바이저 프로토 타입 개발
Presentation transcript:

1장 기본적인 사항(3) 2017. 3. 13 순천향대학교 컴퓨터공학과 하상호

목차 언어 설계에 미친 영향 언어 부류 언어 구현 방법

언어 설계에 미친 영향 컴퓨터 구조 프로그래밍 설계 방법론

언어 설계 영향: 컴퓨터 구조 폰 노이만 구조(von Neumann architecture) 명령어/데이터가 메모리에 저장 메모리가 CPU로부터 분리 명령어/데이터는 기억장소로부터 CPU에 전달 명령어의 순차적 실행: CPU의 인출-해석-실행 주기 산술 및 논리장치 제어 장치 명령어 / 데이터 메모리(명령어/데이터) 연산 결과 입출력장치

언어 설계 영향: 컴퓨터 구조 명령형 언어(imperative languages) 폰 노이만 구조에 기반한 언어 언어 특징 변수 배정문 반복문

언어 설계 영향: 컴퓨터 구조 함수형 언어/적용 언어(applicative language) 특정 기계 구조에 독립 계산 표현의 주요 수단이 함수를 주어진 매개변수에 적용하는 언어 변수, 할당, 반복문을 사용하지 않음 비효율적

언어 설계 영향: 프로그래밍 설계 방법론 1950년대, 1960년대 초반 1960년대 후반 기계 효율성이 중요 단순 응용 프로그램 1960년대 후반 컴퓨팅 주요 비용이 하드웨어에서 소프트웨어로 이동 인간 효율성이 중요하게 되고, 판독성, 더 나은 제어 구조 고려 구조화 프로그래밍 하향식 설계 (top-down design), 단계적 세분화(stepwise refinement) 타입 검사, 제어구조 지원(과도한 goto 문 사용 제한)

언어 설계 영향: 프로그래밍 설계 방법론 70년대 후반 80년대 중반 최근 데이터 추상화 지원 => 추상 데이터 타입 프로세스 지향으로부터 데이터-지향 으로 이동 데이터 추상화 지원 => 추상 데이터 타입 Ex. SIMULA 67 80년대 중반 객체지향 프로그래밍(객체지향 설계 지원) 데이터 추상화 + 상속 + 동적 메소드 바인딩(다형성) Ex. Java, C++, C#, F#, Prolog++ 최근 프로세스 지향 프로그래밍에서 동시성(concurrency) 연구 동시적 프로그램 단위를 생성하고 제어하기 위한 언어 기능 제공 Java, C#

언어 부류 명령형 언어 함수형 언어 논리형 언어 객체-지향 언어 마크업/프로그래밍 하이브리드 언어 특정 목적 언어 9

언어 부류 명령형 언어(imperative languages) 폰 노이만 구조에 기반 중심 특징: 변수, 배정문, 반복문 객체-지향 언어, 비쥬얼 언어, 스크립트 언어는 명령형 언어에 속함

언어 부류 함수형 언어(functional languages) 특정 컴퓨터 구조에 독립 수학 함수에 기반 함수를 매개변수에 적용하여 주요 계산 표현 수학에 기반하여 프로그램 의미를 명확하게 정의 가능 언어 특징 변수, 배정문, 반복문을 사용하지 않음 재귀 함수 사용

예제: 명령형 vs. 함수 언어 명령형 프로그램 int gcd(int u, v) { while (u != v) { if (u > v) u = u-v; else v = v-u; } return u; 함수형 프로그램 (define (gcd u v) (if (= v 0) u (gcd v (remainder u v)) ) 12

언어 부류 논리형 언어 (logic languages) 기호 논리에 기반 규칙-기반 언어(rule-based language) ‘how to do’보다는 ‘what to do’를 기술 언어 특징 제어 구조가 없다 규칙이 특정 순서 없이 기술 언어 시스템이 요구된 결과를 생성하기 위해 규칙이 실행 순서를 선택 Ex. Prolog gcd(u, v, u) :- v = 0 gcd(u, v, x) :- v >0, gcd(v, u mod v, x)

언어 부류 마크업 / 프로그래밍 하이브리드 언어 프로그래밍 능력을 갖는 XHTML, XML의 확장 버전 제어 흐름과 계산 명세 가능 Ex. XSLT, JSTL

언어 부류 특정 목적 언어 RPG(report program generator) APT(Automatically programmed tools) GPSS(General purpose simulation system)

구현 방법 컴파일 구현 순수해석 혼합형 구현 시스템

컴파일 구현 컴파일 구현(compiler implementation)은 소스 프로그램을 실행 가능한 기계 언어로 번역하는 방법 링킹(linking) / 적재(loading) 시스템 호출, 라이브러리 함수, 프로그램 모듈들을 통합 적재 모듈(load module) 또는 실행 가능 이미지(executable image)

컴파일 링커 원시 프로그램 어휘 분석기 구문 분석기 심 볼 테이블 중간코드 생성기 (의미 분석기) 최적화 코드 생성기 어휘단위 구문 분석기 파스트리 심 볼 테이블 중간코드 생성기 (의미 분석기) 최적화 (선택 사항) 중간코드 코드 생성기 기계어 링커 입력 데이터 실행 이미지 컴퓨터 결과

컴파일 폰 노이만 병목(von Neumann bottleneck) 컴퓨터의 기억공간과 프로세서간의 연결 이 연결 속도가 프로세서의 속도보다 느림 폰 노이만 컴퓨터의 속도를 제한하는 중요한 요소

순수 해석 순수 해석(pure interpretation)은 프로그램이 번역되지 않고, 인터프리터에 의해서 해석되면서 실행되는 방식 인터프리터는 언어에 대한 가상기계 제공 단순한 구조의 언어에 적합 APL, LISP, JavaScript 등 원시프로그램 장점: - 구현에 용이 - 원시코드 수준 디버깅 연산 구현 용이 단점: - 느린 실행(컴파일 코드에 비해 10~100배) - 더 많은 기억공간 요구 입력데이터 해석기 결과

혼합형 구현 시스템 혼합형 구현 시스템(hybrid implementation system)은 컴파일러와 순수해석의 절충 프로그램을 중간 코드로 번역하고, 이 중간 코드를 해석 - 순수 해석보다 더 빠른 실행 - ex. Perl, 초창기 Java 원시프로그램 어휘 분석기 구문 분석기 중간코드 생성기 입력데이터 해석기 결과

혼합형 구현 시스템 JIT(Just-In-Time) 메쏘드 호출시 중간 코드를 기계 코드로 번역하여 실행 번역된 코드는 보관되어 다음 호출에 이용 Java, .NET 언어

혼합형 구현 시스템 언어에 대해서 컴파일 구현과 인터프리터 구현 모두 제공하는 경우 인터프리터는 프로그램 개발과 디버깅에 사용 프로그램이 완성되면 실행 속도 향상을 위해서 컴파일함

사전처리기(preprocessor) 사전처리기(preprocessor)는 프로그램을 번역하기 직전에 프로그램을 처리하는 프로그램 사전처리기 명령어는 프로그램에 포함 기본적으로 매크로 확장기(macro expander) Ex. #include “myLib.h” #define max(A, B) ((A) > (B) ? (A) : (B)) … x = max(2*y, z/1.73); x = max(2*y++, z/1.73); // 문제점은?

프로그래밍 환경 프로그래밍 환경(programming environment)은 소프트웨어를 개발하는데 사용되는 도구들의 집합 파일시스템, 텍스트 편집기, 링커, 컴파일러, 디버거 등 단일의 사용자인터페이스를 갖는 통합된 도구 소프트웨어 개발/유지보수에 도움 Ex. UNIX + GUI (CDE, GNOME, KDE 등) Borland Jbuilder, MS Visual Studio.NET NetBeans, Eclipse