본문 바로가기

학위공부/독학사 요점정리

[독학사/프로그래밍언어론] 1 - 가 : 프로그래밍 언어의 소개

반응형

1.프로그래밍 언어론을 배우는 이유

ㄱ.생각을 표현할 수 있는 능력 향상

 

-'개념적'의 반대말은 물리적

'개념적'은 머리속으로 생각, '물리적'은 실제로 구현하는것

개념적인 것을 물리적인것으로 매핑하는 과정을 알고리즘이라고 한다.

문제를 논리적으로 분석해 알고리즘으로 표현하고, 이를 프로그래밍 언어로 문제를 해결하게 되면,

생각을 표현할 수 있는 능력이 향상된다고 할 수 있다.

 

ㄴ.적합한 언어를 선택할 수 있는 배경 향상

-프로젝트에 적합한 언어를 선택 가능해진다.

 

ㄷ.새로운 언어의 습득 능력 향상

-언어의 기본적 개념을 습득하게 되고, 새로운 언어의 습득 필요성을 알게된다.

-언어는 시간이 지남에 따라 발전하거나 쇠퇴하게 되어 한 언어를 영원히 사용할 수 없다.

-상황에 따라 필요한 프로그래밍 언어가 다르다. 다양한 언어를 전부 공부할 수는 없으나, 언어들의 기본적인 개념을 습득하면 상황에 필요한 언어를 알고, 그 언어를 학습하는데 도움이 된다.

 

ㄹ.구현의 중요성 이해 ( 컴파일러 )

-언어 구현상의 고려사항을 이해하면 언어 설계에 도움이 된다.

-언어 구현에는 컴파일러가 필수적이다. 물리적으로 프로그램이 돌아가려면 이진수로 표현된 기계어가 필요하다. 프로그래밍을 기계어로 구현하는건 컴파일러가 하는 일이다. 이를 이해하는것이 더 효율적인 프로그래밍을 가능하게 한다.

-조건을 판단하는 반복문은 비논리적이지만, 구현이 쉽다

-자기 자신을 호출하는 재귀는 논리적이지만, 구현이 어렵다.

 

 

ㅁ.이미 습득된 언어에 대한 더 나은 사용

-언어를 완벽히 이해하고 있는가? 프로그래밍 언어론을 통해 이미 습득한 언어를 더 효율적이게 사용할 수 있다.

 

ㅂ.전반적인 전자계산분야의 이해도 향상

-가장 좋은 언어가 가장 널리 사용되는가?

-가장 널리 사용되는 언어가 가장 좋은언어라고 할 수없다. 언어는 계속해서 변화하고 새로운 언어가 생기기 때문에, 기존에 널리사용되던 언어보다 좋은 언어가 생기기도 하고, 효율은 가장 좋은 언어가 많은 사람들에게 알려지지 않았을 수도 있다. 그리고 문제에 따라 가장 좋은 언어도 변화하기도 한다.

 

2.프로그래밍 영역

ㄱ.과학응용 분야

-최초 컴퓨터(1940년)의 응용 분야

-간단한 데이터 구조(배열/행렬), 상당한 양의 부동소수점 산술연산

-간단한 제어 구조(루프/선택문)

-효율성이 주요 관심

-Fortran(1956)

 

ㄴ.사무응용 분야

-섬세한 보고서 생성 가능

-십진수 ,문자 데이터와 표현/저장 가능

-십진수 산술연산

-COBOL(1960)

 

ㄷ.인공지능 분야

-수치 계산보다는 기호 위주의 계산(패턴)

-리스트의 데이터 구조, 더 많은 융통성 요구

-기호 조작은 재귀와 조건식으로 표현

-LISP(1959), Scheme(1975), Prolog(1970)

 

ㄹ.시스템 프로그래밍

-시스템 소프트웨어 개발 목적

-실행 효율성, 외부장치와 인터페이스를 위한 저급언어의 특징을 가짐.

-C(1978), 고급언어와 저급언어의 특성을 모두 가진다. ( = 시스템 프로그래밍에 적합 )

 

ㅁ.웹 소프트웨어

ㅁ.1.마크업 언어

-HTML

-XHTML

-XML

 

ㅁ.2.동적 웹 콘텐츠 자원

-JavaScript, PHP

-JSP, JAVA 등

 

3.언어 평가기준(Criteria)

-판독성, 작성력, 신뢰성, 비용

 

ㄱ.판독성

-얼마나 프로그램을 쉽게 읽을 수 있는가?

-소프트웨어 유지보수와 연관

-단순성, 직교성, 제어문, 데이터 타입과 구조, 구문고려사항을 고려해야한다.

 

ㄱ.1.단순성

-언어 규모가 너무 크면 안된다. ( 너무 많은 기능이 있으면 좋지 못하다 )

 

ㄱ.2.직교성

-orthogonality, 선형대수의 orthogonal vector에서 유래, 독립된 기본 구조들이 조합되어 제어나 데이터 구조를 생성할 수 있는 능력

 예:Int x VS int *x -> 데이터타입 'int'와 타입 연산자로 새로운 데이터 구조를 만들었다. 

-비슷하게 생겨도 서로 다른 표현은 서로 다른 의미를 갖는다.

-직교성이 결여되면 언어 규칙에서 예외사항 초래가 발생할 수 있다.

-직교성이 뛰어나면 단순성도 올라간다.

 

ㄱ.3.제어문

-충분한 제어문이 필요하다. 제어문이 충분히 제공되지 못하면 논리가 복잡해진다.

 

ㄱ.4.데이터 타입과 구조

-충분한 데이터 타입과 구조가 제공되지 않으면 낭비와 오해가 발생한다.

 예:boolean타입이 제공되지 않으면 1,0으로 사용해야 한다.

 

ㄱ.5.구문고려사항

-식별자 길이에 제한이 없다면 변수이름을 저장하는 symbol table을 만들기 힘들다.

-예약어(IF등)를 변수와 혼용해서 사용하면 혼란을 초래한다.

 

ㄴ.작성력

-프로그램 생성에 언어가 쉽게 사용될 수 있는 정도

-판독성과의 연관

 

ㄴ.1.추상화

-많은 세부사항이 무시될 수 있는 방식 -> 구체적(복잡)인 사실을 요약하여 단순하게 표현함

-데이터 추상화: 변수, 배열, 구조체 등

-프로세스(제어) 추상화: subprogram

-추상데이터타입: class 탄생, 데이터 추상화+프로세스 추상화

 

ㄴ.2.표현력

-문제를 표현하는데 있어서 매우 편리한 방법 제공 여부

-'i=i+1;' 을 'i++'로 표현 가능 -> load i -add 1 - store i 작업을 inc i 로 끝냄

-case문이 없다면 if-then-else를 여러번 사용해야 함

 

ㄷ.신뢰성

-프로그램이 모든 조건하에서 주어진 명세를 수행하는 척도

-언어 특징: (데이터)타입검사, 예외처리, 별칭, 판독성과 작성력

-타입검사: 컴파일시나 실행중에 프로그램의 타입 오류 검사 (예: int형 * float형의 계산)

-예외처리: 프로그램의 실행시간 오류를 올바르게 수정하고 계속 실행할 수 있는 능력 (try-catch문)

-별칭(Aliasing): 동일한 기억장소에 대해서 2개 이상의 다른 참조방법을 갖는 것 (신뢰성을 떨어트림, 제한적으로 사용해야 함)

 

ㄹ.비용

-프로그래머 교육 비용

-프로그램 작성 비용 

-프로그램 컴파일 비용(번역하는데 소요되는 비용)

-프로그램 실행 비용

-언어 구현 비용(컴파일러를 만드는데 드는 비용)

-신뢰성 부족에 따른 비용

-프로그램 유지보수 비용

 

ㅁ.그외 평가 기준

ㅁ.1.이식성

-프로그램을 언어의 한 플랫폼으로부터 다른 플랫폼으로 쉽게 이동시킬 수 있는 척도

-언어의 표준화와 연관

 

ㅁ.2.일반성

-광범위한 응용 분야에 대한 적용성

 

ㅁ.3.분명성

-언어의 공식 정의 문서의 완전성과 정밀성

-문법적으로 분명하게 정의할 수 있는 언어인가

 

반응형