실무와 관련이 큰 프로그래밍 언어 파트라서 정리도 좀 더 꼼꼼하게 했다.
토대와 같은 프로그래밍 지식이라 확실하게 알고가자
실제 코드보다는 대략적인 개요와 정보가 많았다.
정보처리기사 실기
VI. 프로그래밍 언어 활용
Chapter 02. 언어 특성 활용하기
[1] 프로그래밍 언어의 언어별 특성
(1) 프로그래밍 언어의 유형 분류
① 개발 편의성에 따른 분류
- 저급 언어 : 기계가 이해할 수 있도록 만들어진 언어 (기계어, 어셈블리어)
- 고급 언어 : 개발자가 소스 코드를 작성할 때 쉽게 이해할 수 있도록 작성된 언어 (C, C++, 자바, 파이썬)
② 실행하는 방식에 따른 분류
- 명령형 언어 : 컴퓨터에 저장된 명령어들이 순차적으로 실행되는 프로그래밍 방식, 절차형 언어 (FORTRAN, COBOL, PASCAL, C)
- 객체 지향 언어 : 객체 간의 메시지 통신을 이용하여 프로그래밍하는 방식 (JAVA, C++)
- 함수형 언어 : 수학적 수식과 같은 함수들로 프로그램을 구성하여 호출하는 방식 (LISP)
- 논리형 언어 : 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행하는 개념에 기반한 프로그래밍 방식 (프롤로그)
③ 구현 기법에 따른 분류
- 컴파일 방식 : 고급 언어를 기계어로 번역하는 방식의 언어, 컴파일러에 의해 실행에 필요한 정보가 미리 계산되어 실행 속도가 높음 (FORTRAN, PASCAL, C, C++)
- 인터프리터 방식 : 고급 언어 명령문을 하나씩 번역하고 실행하는 방식의 언어, 프로그램 실행과 동시에 동작 (BASIC, 프롤로그, LISP)
- 혼합형 방식 : 고급 언어를 컴파일하여 중간 언어로 변환한 후, 인터프리터에 의해 번역을 실행하는 방식의 언어 (자바)
(2) 프로그래밍 언어별 특성
① 절차적 프로그래밍 언어 종류
- 알골(ALGOL) : 알고리즘의 연구개발에 이용하기 위한 목적으로 생성, 절차형 언어로는 최초로 재귀 호출 가능, 이후 언어 발전에 큰 영향을 미침
- C 언어 : 유닉스 운영 체제에서 사용하기 위해 개발한 프로그래밍 언어, 모든 컴퓨터 시스템에서 사용할 수 있도록 설계된 프로그래밍 언어
- 베이직(BASIC) : 교육용으로 개발되어 언어의 문법이 쉬움, 다양한 종류의 베이직이 존재, 서로 다른 종류 사이의 소스 코드는 호환되지 않음
- 포트란(FORTRAN) : 과학계산에서 필수적인 벡터, 행렬 계산 기능 등이 내장된 과학 기술 전문 언어. 산술 기호, 삼각함수, 지수함수, 대수 함수 등과 같은 수학 함수들 사용 가능
② 객체 지향 프로그래밍 언어 종류
- C++ : C 문법에 객체 지향 프로그래밍 개념과 일반화 프로그래밍을 위한 템플릿 기능이 추가되었다. C++ 개발자는 원하는 많은 작업을 성능 하락이 없는 형태로 개발이 가능하나, 직접 신경 써야 하는 것들(메모리 관리)이 많은 언어이기 때문에 개발이 어렵다.
- C# : 마이크로소프트에서 개발한 객체 지향 프로그래밍 언어. C++과 자바의 문법과 비슷한 문법을 가지고 있다. C# 은 자바와 달리 불안전 코드(Unsafe Code)와 같은 기술을 통하여 플랫폼 간 상호 운용성 확보
- 자바(JAVA) : 썬 마이크로 시스템즈(Oracle 합병됨)가 개발한 객체 지향적 프로그래밍 언어, 현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트 코드라는 특수한 바이너리 형태로 변환
- 델파이(Delphi) : 기본적인 문법은 파스칼 문법에 여러 기능이 추가되어 존재. 델파이는 윈도즈(Windows) 아래에서 모든 부분을 프로그래밍할 수 있는 언어, 높은 생산성과 간결한 코드가 대표적인 장점이고, C++과 비슷한 수준의 저수준 시스템 프로그래밍도 가능
③ 스크립트 언어 종류
- PHP : 동적 웹 페이지를 만들기 위해 설계됨. PHP로 작성된 코드를 HTML에 입력 시 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성. 인터페이스 방식의 자체 인터프리터를 제공.
- 펄(Perl) : 인터프리터 방식의 프로그래밍 언어. 실용성을 모토로 하고 있어 C, 쉘 스크립트 (sh) 등 다른 프로그래밍 언어에서 뛰어난 기능을 많이 도입. 불특정한 데이터 길이의 제약 없이 강력한 문자열 처리 기능을 제공.
- 파이썬(Python) : 다양한 플랫폼에서 쓸 수 있고, 라이브러리(모듈)가 풍부. 유니코드 문자열을 지원하여 다양한 언어의 문자 처리. 들여쓰기를 사용하여 블록을 구분하는 문법 채용. 다른 언어로 쓰인 모듈들을 연결하는 언어.
- 자바스크립트(Javascript) : 객체 기반의 스크립트 프로그래밍 언어. 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능이 존재. 자바스크립트는 브라우저마다 지원되는 버전이 상이하다.
④ 선언형 언어 종류
- 함수형 언어 - 하스켈(Haskell) : 패턴 맞춤, 커링, 조건제시법, 가드, 연산자 정의 등의 기능이 존재한다. 재귀 함수나 대수적 자료형도 지원한다.
- 함수형 언어 - 리스프(LISP) : 수학적 표기법을 나타내기 위한 목적으로 생성. 트리 자료구조, 가비지 컬렉션, 동적 자료형과 인터프리터와 같은 개념 제시. 함수 호출 시 함수 이름 혹은 연산자가 첫 번째로 위치하여 피연산자가 이어 위치 (ex. 함수 이름 f는 덧셈 연산을 하는 기능. f(+ a b))
- 논리형 언어 - 프롤로그(Prolog) : 논리식을 기반으로 객체 간의 관계에 관한 문제를 해결하기 위해 사용. 인공지능이나 계산 언어학 분야, 자연언어 처리 분야에서 사용.
- 특수 분야 언어 - SQL : 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어. 데이터베이스 관련 프로그램들이 SQL을 표준으로 채택.
(3) 객체 지향 프로그래밍
- 객체와 객체간의 통신을 통해 프로그램이 구현된다. 객체와 속성, 메서드로 구성되는데, 절차 지향에서의 모듈은 객체에 대응되고, 변수는 속성에 대응되며, 함수는 메서드에 대응된다.
➀ 객체 지향 프로그래밍의 구성요소
- 객체(Object) : 객체, 속성, 메서드로 구성된 클래스의 인스턴스를 의미.
- 클래스(Class) : 객체 지향 프로그래밍에서 객체를 표현하는 추상 데이터 타입으로 객체를 생성하는 틀이다. 클래스를 통해 추상화된 자료형을 제공.
- 메시지(Message) : 객체 간의 통신
② 객체의 구성요소
- 객체는 현실 세계에서 개체를 데이터 속성과 메서드를 결합한 형태로 표현한 것을 의미한다.
- 객체(Entity) : 현실 세계에 보이는 본질을 의미
- 속성(Attribute) : 자료 저장소 역할을 하며, 절차 지향 프로그래밍의 변수와 대응
- 메서드(Method) : 호출 단위를 의미하며, 절차 지향 프로그래밍 함수와 대응
[2] 라이브러리 활용
(1) 라이브러리
① 라이버러리(Library) 개념
- 필요할 때 찾아서 쓸 수 있도록 모듈화되어 제공되는 프로그램이다.
- 효율적인 프로그램 개발을 위해 필요한 프로그램을 모아 놓은 집합체로서, 프로그래밍 언어에 따라 일반적으로 도움말, 설치 파일, 샘플 코드 등을 제공한다.
② 라이버러리의 구성
- 도움말 : 라이브러리를 사용하는 데 이해하기 쉽도록 설명해 놓은 문서
- 설치 파일 : 라이브러리를 적용하기 위해 제공되는 파일
- 샘플 코드 : 개발자가 라이브러리를 이해하고 손쉽게 적용하기 위해 제공되는 소스 코드
➂ 라이브러리의 종류
- 표준 라이브러리 : 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리를 의미한다. 각 프로그래밍 언어의 표준 라이브러리는 여러 종류의 모듈과 패키지를 가지며, 표준 라이브러리를 이용하면 별도의 파일 설치 없이 날짜와 시간등의 기능을 이용할 수 있다.
- 외부 라이브러리 : 표준 라이브러리와 달리 별도의 파일을 설치. 외부 라이브러리는 누구나 개발하여 설치할 수 있으며, 인터넷 등을 이용하여 공유할 수 있다.
➃ 표준 라이브러리 상세
❶ 문자열 라이브러리 함수
- 문자열 함수를 사용하기 위해서는 string.h 헤더 파일을 include 하여 사용한다.
- strcat : 문자열끼리 연결하는 함수(String Concatenate)
- strcat(dest, src); // src의 문자열을 dest 문자열 뒤에 붙임
- strcpy : 문자열을 복사하는 함수(String Copy)
- strcpy(dest, src); // src의 문자열을 dest 문자열에 복사
- strcmp : 문자열을 비교하는 함수(string Compare)
- ctrcmp(s1, s2); // s1, s2가 대소를 비교, 앞글자의 아스키코드 비교
- strlen : 문자열의 길이를 알려주는 함수(String Length)
- strlen(s); // s의 길이에 해당하는 숫자 출력
❷ 표준 라이브러리 함수
- 표준 라이브러리 함수를 사용하기 위해서는 stdlib.h 헤더 파일을 include 하여 사용한다.
- atoi : 문자열(str)을 정수(int)형으로 변환하는 함수
- atoi(str); // 문자열(str)을 정수(int)형으로 변환, a to int 로 이해하자.
- atof : 문자열(str)을 실수형(float, double)으로 변환하는 함수
- atof(str); // 문자열(str)을 실수형(float, double)으로 변환, a to float 로 이해하자.
- itoa : 정수(int)형을 문자열(str)로 변환하는 라이브러리 함수
- itoa(value, str, radix) // value를 변환하여 str에 radix 진수로 저장, int to a 로 이해하자.
❸ 수학 라이브러리 함수
- 수학 라이브러리 함수를 사용하기 위해서는 math.h 헤더 파일을 include하여 사용한다.
- ceil : 소수점 올림 함수
- ceil(n); // 소수점 올림, 천장이라는 뜻임
- floor : 소수점 내림 함수
- floor(n); // 소수점 내림, 바닥이라는 뜻
⑤ 라이브러리 기능
- 문자열 연산 기능, 문자열 탐색/치환 기능, 수치 계산 기능, 난수 생성 기능, 파일 경로 조작 기능, 디렉터리 생성 기능, 날짜 조작 기능, 로그 출력 기능.
(2) 모듈과 패키지
- 라이브러리는 모듈과 패키지를 총칭한다.
- 모듈이 개별 파일이라면 패키지는 파일들을 모아 놓은 폴더라고 볼 수 있다.
- 모듈(Module) : 전역변수, 함수 등을 모아둔 파일. ex) import 모듈명
- 패키지(Package) : 모듈을 디렉터리 형식으로 구조화한 라이브러리. ex) import 패키지명.모듈명
'스터디 > 웹개발' 카테고리의 다른 글
| 221005 TIL - 정보처리기사 - 응용 SQL 활용 (집계성 SQL, 집계 함수, 그룹 함수, 윈도 함수) (0) | 2022.10.09 |
|---|---|
| 221003(2) TIL 정보처리기사 실기 - SQL 응용 (2) | 2022.10.07 |
| 221002TIL - 정보처리기사 실기 - 프로그래밍 언어 활용(3) 명령문, 사용자 정의 자료형/함수, 재귀 함수, 클래스 (1) | 2022.10.05 |
| 2022년10월1일 TIL - 정보처리기사 실기 - 프로그래밍 언어 활용(2) (0) | 2022.10.04 |
| 2022년9월28일 TIL - 정보처리기사 실기 - 프로그래밍 언어 활용(1) (0) | 2022.10.04 |