1장 기본적인 사항(2) 2016. 3. 7 순천향대학교 컴퓨터공학부 하 상 호.

Slides:



Advertisements
Similar presentations
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
Advertisements

1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
장. 프로그래밍 언어의 이해 컴퓨터공학과 권기태 프로그래밍언어론프로그래밍 언어.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Entity Relationship Diagram
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
연결리스트(linked list).
제 9 장 구조체와 공용체.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
1장 기본적인 사항(3) 순천향대학교 컴퓨터공학과 하상호.
자료 구조: Chapter 3 (2)구조체, 포인터
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
컴퓨터과학 전공탐색 배상원.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
23장. 구조체와 사용자 정의 자료형 2.
2주차: 변수, 수식, Control Flow.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
C#.
1장 기본적인 사항(3) 순천향대학교 컴퓨터공학과 하상호.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
프로그래밍 개요
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
27장. 모듈화 프로그래밍.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
24장. 파일 입출력.
Lesson 2. 기본 데이터형.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
프로그래밍 언어론 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
6장 데이터 타입(4) 순천향대학교 컴퓨터공학부 하 상 호.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
6.4 타입 검사 (Type Checking).
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
AT MEGA 128 기초와 응용 I 기본적인 구조.
공학도를 위한 C언어 프로그래밍실습1 -통합개발환경 사용법-
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
발표자 : 이지연 Programming Systems Lab.
Numerical Analysis Programming using NRs
Chapter 11 구조체.
실습 UBLAB.
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
제 4 장 Record.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
SNU 컴퓨터의 기초 월 14:00-16:00 43동101호 ropas. snu. ac
13. 포인터와 배열! 함께 이해하기.
6장 데이터 타입(5) 순천향대학교 컴퓨터공학부 하 상 호.
7 생성자 함수.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

1장 기본적인 사항(2) 2016. 3. 7 순천향대학교 컴퓨터공학부 하 상 호

1장 기본적인 사항 프로그래밍 언어론을 왜 배우는가? 프로그래밍 영역 언어 평가기준 언어 설계 절충 언어 설계에 미친 영향 언어 부류 구현 방법 프로그래밍 환경

언어 평가기준 소프트웨어 개발, 유지보수에 언어가 미치는 영향에 기준하여 언어의 특징들을 평가 평가기준 언어의 특징 평가 판독성, 작성력, 신뢰성, 비용 언어의 특징 평가 단순성, 직교성, 데이터 타입, 구문 추상화지원, 표현력 타입 검사, 예외처리, 제한된 별칭 등

언어 평가기준 평가기준 언어특성 판독성 작성력 신뢰성 단순성 * * * 직교성 * * * 데이터의 타입 * * * 언어특성 판독성 작성력 신뢰성 단순성 * * * 직교성 * * * 데이터의 타입 * * * 구문 설계 * * * 추상화 지원 * * 표현력 * * 타입 검사 * 예외 처리 * 제한된 별칭 *

판독성 프로그램을 얼마나 쉽게 이해할 수 있는지의 정도 판독성에 기여하는 언어 특징 프로그램과 프로그래밍 언어의 대한 중요한 척도 소프트웨어 유지보수의 용이성 문제 영역의 문맥 고려 판독성에 기여하는 언어 특징 단순성 직교성 데이터 타입 구문 설계

판독성: 단순성 전반적인 단순성(overall simplicity) 언어 규모가 크면 언어의 일부분만을 배우는 경향 프로그램 작성자와 판독자가 알고 있는 부분이 서로 다르면? 언어의 특징 다중성(feature multiplicity) 특정 연산이 한 가지 이상의 방법으로 수행 가능한 특징 Ex: count = count + 1; count++; 연산자 중복(operator overloading) 연산자 기호가 두 개 이상의 의미를 가질 때 분별력 있게 사용되지 않으면? Ex: A + B = ∑ai + ∑bi (여기서 A, B는 일차원 배열) 언어가 지나치게 단순하면? Ex: 어셈블리어

판독성: 직교성 직교성(orthogonality) 선형대수의 orthogonal vector에서 유래 독립된 기본 구조들이 조합되어 제어나 데이터 구조를 생성할 수 있는 능력 적은 개수의 기본 구조와 적은 개수의 방법으로 조합 Ex. 데이터 타입: 정수, 실수, 배정도 실수, 문자 타입 연산자: 배열, 포인터 타입 연산자를 (타입 연산자, 데이터 타입)에 적용하여 데이터 구조를 정의: 정수 * 배열 => 정수 배열

판독성: 직교성 직교성(orthogonality) 직교성은 언어 기본 요소들간의 관계 대칭성을 의미 직교성이 결여되면 언어 규칙에서 예외사항 초래 => 직교성이 높으면 언어를 배우고, 판독하고, 이해하기 용이 Ex. C 언어는 직교적인가? 모든 구조화 데이터 타입들이 반환 가능한가? 구조체의 멤버 타입은 임의 타입일 수 있는가? struct charList { char data; struct charList next; }

판독성: 직교성 직교성이 너무 지나치게 높으면? Ex: ALGOL 68의 모든 언어 구조는 타입을 가지며, 이런 타입에 대한 제약이 없고, 대부분의 구조는 값을 생성 식이 문장의 문맥에 나타날 수 있고, 문장 구조가 식에 포함될 수 있다. =>극단적인 직교성은 폭발적 조합으로 인한 불필요한 복잡성 초래 begin a := if b < c then d else e; a := begin f(b); g(c) end; g(d); 2 + 3 end

판독성: 직교성 함수형 언어는 단순하고 직교적 계산은 주어진 매개변수에 함수를 적용하여 이루어짐 함수 호출의 단일 구조로 모든 것을 표현 그러나 비효율적

판독성: 데이터 타입 데이터 타입 언어가 데이터 타입과 데이터 구조를 정의할 수 있는 충분한 장치를 제공하는가? 불리안 타입이 제공되지 않으면? timeOut = 1 timeOut = true

판독성: 구문 설계 특수어 형식과 의미 복합문을 표현하는 방법 특수어가 변수 이름으로 사용될 수 있는가? 복합문 끝 표시 구문이 그 유형을 나타내는가? Ex: end, } vs. end if, end loop 특수어가 변수 이름으로 사용될 수 있는가? 형식과 의미 문장의 형태가 그 의미를 나타낼 수 있게. 형태는 동일하나 문맥에 따라 그 의미가 다르면? Ex. C의 static

작성력 프로그램 생성에 언어가 쉽게 사용될 수 있는 정도 판독성에 영향을 미치는 언어 특징은 작성력에도 영향을 미침 문제 영역에 종속 GUI를 포함하는 프로그램 작성할 때 Visual Basic vs C 작성력에 영향을 미치는 언어 특징들 단순성과 직교성 추상화의 지원 표현력

작성력: 단순성과 직교성 언어가 복잡하여 모두 알고 있지 않으면? 직교성이 너무 높으면? 알고 있지 않은 특징을 우연히 사용하여 오용 초래 가능 더 우아하거나 더 효율적인 특징들이 사용되지 않을 가능성 직교성이 너무 높으면? 기본구조들에 대한 조합이 거의 적법하여 오류가 탐지되지 않을 수 있다

작성력: 추상화의 지원 추상화(abstraction)란? 컴퓨터의 데이터, 연산, 명령어 등을 추상화 많은 세부사항이 무시될 수 있는 방식으로 복잡한 데이터구조나 연산을 정의하여 사용할 수 있는 능력 오늘날 프로그래밍 언어 설계에서 매우 중요한 개념 컴퓨터의 데이터, 연산, 명령어 등을 추상화 프로세스(제어) 추상화 배정문, if, for, while 함수 등 데이터 추상화 변수, 배열, 구조체, 이진 트리 등 추상 데이터 타입 데이터와 관련 연산들을 통합하여 표현

작성력: 표현력 표현력 언어가 계산을 명세하는데 있어서 상대적으로 편리한 방식을 제공 APL은 상당한 양의 계산을 매우 작은 프로그램으로 표현 가능하게 하는 강력한 연산자를 제공 Ex. C++ vs. count = count + 1 for vs. while

신뢰성 프로그램은 모든 조건하에서 주어진 명세에 따라 수행한다면 신뢰적이라 함 언어 특징 타입 검사 예외 처리 별칭 판독성과 작성력

신뢰성 타입 검사(type checking) 예외 처리(exception handling) 컴파일시나 실행중에 프로그램의 타입 오류 검사 Ex: 원본 C 언어(실매개변수와 형식 매개변수간의 타입 검사를 하지 않음) Java? 예외 처리(exception handling) 프로그램의 실행시간 오류를 올바르게 수정하고 계속 실행할 수 있는 능력 Ex. C, Fortran vs C++, Java, C#

신뢰성 별칭(aliasing) 판독성과 작성력 동일한 기억장소에 대해서 2개 이상의 다른 접근 방법을 갖는 것 프로그래밍 언어에서 위험한 특징 Ex: 동일한 변수를 가리키는 2개의 포인터 존재시 판독성과 작성력 프로그램이 쉽게 작성되면, 올바를 가능성이 많다. 판독하기 어려운 프로그램은 작성하고 수정하기 어렵다.

비용 프로그램 언어 비용은 다음 사항으로 결정 프로그래머 교육 비용 프로그램 작성 비용 프로그램 컴파일 비용 최적화(optimization) 여부 프로그램 실행 비용 컴파일 비용과의 절충 고려 언어 구현 시스템의 비용 신뢰성 부족에 따른 비용 프로그램 유지보수 비용

비용 언어 비용의 가장 중요한 요소는? 프로그램 개발, 유지보수, 신뢰성 연관된 언어 평가기준은?

다른 평가 기준 이식성(protability) 일반성(generality) 분명성(well-definedness) 프로그램을 언어의 한 구현으로부터 다른 구현으로 쉽게 이동시킬 수 있는 척도 언어의 표준화와 연관 일반성(generality) 광범위한 응용 분야에 대한 적용성 분명성(well-definedness) 언어의 공식 정의 문서의 완전성과 정밀성

언어 설계 절충 언어 평가기준은 언어 설계에 대한 프레임워크 제공 이러한 프레임워크는 자체 내부에서 상충 언어 설계시 타협과 절충이 필요

언어 설계 절충 언어 설계 절충 예 신뢰성과 실행비용 판독성과 작성력 작성력과 신뢰성 배열원소 첨자범위 검사 유무 (C vs Java) 판독성과 작성력 APL은 다양한 배열 연산자를 위한 상당히 많은 새로운 기호 제공 작성력이 좋으나 판독성은 매우 낮음 작성력과 신뢰성 C의 포인터는 강력하고 융통적, 그러나 비신뢰적