Professional Documents
Culture Documents
프로그래밍 언어
단원 목차
8.1 프로그래밍 언어 개요
8.2 프로그램 구현
8.3 고급 프로그래밍 언어 종류
8.4 객체지향 프로그래밍
단원 학습목표
3
08
프로그래밍 언어
단원 목차
8.1 프로그래밍 언어 개요
8.2 프로그램 구현
8.3 고급 프로그래밍 언어 종류
8.4 객체지향 프로그래밍
프로그래밍 언어 개요
사람과 컴퓨터가 서로 의사교환을 하기 위한 언어
5
저급언어와 고급언어
컴퓨터와 인간의 친밀성에 따른 분류
6
프로그래밍 언어의 세대별 분류
1945년경에 기계어가 만들어진 이후 어셈블리어를 거쳐 고급 언어에 이르기까지 프로그래밍 언어의
발달을 세대별로 구분
• 프로그래밍 언어의 세대별 분류
7
4세대 5세대의 주요 언어
3세대 언어가 절차적 중심의 언어라면 4세대 언어는 비절차적 중심의 언어
• 데이터베이스 질의 언어(query
language)
-비절차적 중심 언어
-프로그래머가 원하는 결과를 얻기 위해서 하
나 하나의 절차를 따를 필요가 없다는 의미
• 비주얼 프로그래밍 언어(Visual
Programming Language)
-비주얼 베이직
-델파이
• 블록 프로그래밍
-코드 없는 정해진 블록으로 코딩
• 진보된 비주얼 프로그래밍 언어
-MIT에서 개발한 스크래치
8
08
프로그래밍 언어
단원 목차
8.1 프로그래밍 언어 개요
8.2 프로그램 구현
8.3 고급 프로그래밍 언어 종류
8.4 객체지향 프로그래밍
프로그래밍 개요
계산기, 아래한글과 같은 다양한 프로그램이 존재
• 프로그램(program)
-컴퓨터에서 특정 목적의 작업을 수행하기 위해 관련된 명령어와 자료를 모아 놓은 것
• 컴퓨터에게 지시할 일련의 처리 작업 내용을 담고 있음
• 프로그래머(programmer)
-프로그램을 만드는 사람
-넓은 의미로 개발에 참여하는 사람을 개발자라 할 수 있음
• 개발 도구(development tools)
-선정한 언어를 이용하여 프로그램을
개발하기 위한 환경이 필요
10
프로그램 개발 환경
프로그램을 개발하기 위해서는 기본적으로 에디터, 컴파일러, 링커, 로더(loader), 디버거 등이 필요
• 개발 도구가 필요
-프로그램을 개발하려면 프로그램 언어로 만들어진 프로그램 소스를 실행 파일로 생성
• 개발 도구
-편집기(Editor)
• 프로그램 명령어인 프로그래밍 언어의 내용을 편집
-컴파일러
• 작성한 고급 프로그래밍 언어를 컴퓨터가 이해할 수 있는 기계어로 변환
-디버거
• 작성된 프로그램에서 발생하는 프로그램 오류를 쉽게 찾아 수정할 수 있도록 도와주는 프로그램
-링커
• 여러 목적 파일을 하나의 실행 파일로 만들어 주는 기능
11
통합개발환경 IDE
프로그램을 개발하는데 필요한 컴파일러, 디버거, 링커, 에디터 등을 통합적으로 제공하는 개발 환경
• 통합개발환경 IDE
-Integrated Development Environments
-프로그램 개발에 필요한 컴파일러, 디버거,
링커, 에디터 등을 통합적으로 제공하는 개
발 환경을 통합개발환경
• 마이크로소프트 사의 ‘비주얼 C++’(Visual
C++)
• 비주얼 스튜디오 익스프레스(Microsoft
Visual Studio Express) 버전
-무료 배포(www.microsoft.com/ko-
kr/download)하는 제품
12
프로그램 구현과정: 소스 작성과 컴파일
선정한 고급 언어를 이용하여 프로그램을 작성
• 소스 작성
-소스 코드(source code) 또는 간단히 코드(code)
• 프로그램 언어를 이용하여 원하는 작업을 기술한 내용
• 컴파일
-소스(source) 파일(원시 파일)을 목적 파일(Object file)로 변환 과정
-컴파일러
• 컴파일을 해주는 프로그램
13
프로그램 구현과정: 링크와 실행
작성된 소스는 컴파일, 링크 과정을 통해 실행 파일을 만들어 실행
• 컴파일러와 어셈블러
-어셈블러
• 어셈블리 언어의 프로그램을 기계어로 변환
• 링크와 링커
-링커(linker)
• 목적 파일을 실행 파일(Eexecute File)로 만
들어 주는 프로그램
• 여러 개의 목적 파일들을 라이브러리 함수와
연결해서 하나의 파일로 합치는 작업을 수행
-그 과정을 링크, 또는 링킹 과정
• 실행 파일
-링킹 작업 결과 생성되는 프로그램을 실행
프로그램(executable program)
• .exe나 .com의 확장자 파일
14
프로그램 구현과정: 디버깅
디버깅이란 ‘버그를 잡는다’는 의미로 여기서 버그란 바로 에러를 의미
• 디버깅(debugging)과 디버거
-프로그램의 명령을 수행에서
• 컴퓨터의 상태를 보여주거나
• 오류(또는 에러) 발생시 오류를 쉽게 찾을 수
있도록 도와주는 프로그램
-처음부터 에러가 없는 프로그램을 작성하기
란 거의 불가능
• 디버깅 과정에서는 많은 경험으로 에러를 쉽
게 찾아 수정
• 에러 또는 오류
-컴파일 (시간) 오류
-링크 오류
-실행 (시간) 오류
15
디버깅의 유래
“08:00, 작동시작, 10:00, 작동 멈춤, 릴레이를 교환하다. 11:00, 코사인테이프 시작. 15:25, 멀티 덧셈기
테스트하다. 15:45, 70번 패널 릴레이에서 실제 벌레(버그)가 낀 것을 처음 발견하다.”
• 호퍼 중위
-릴레이 사이에서 벌레가 발견된 전후 정황을
컴퓨터 로그기록 노트
• ‘디버그’란 용어의 유래
-원래 버그는 나방 벌레
• 버그에 의해 컴퓨터가 오작동 된 이유에서 유
래
-버그를 없애는 일
• ‘디버그한다(debug, 벌레 잡는 일)’라고 하기
시작
• 호퍼가 나방을 붙여 작성한 노트
-미 해군에 여러 해 동안 보관되다가 스미스
소니언 박물관에 보관
16
컴파일러와 인터프리터
컴파일 방식과 다르게 프로그램을 구현하는 방식을 인터프리터 방식
• 인터프리터(Interpreter)
-고급 언어를 기계어로 번역
해주는 역할을 수행
-원시 코드를 한 줄씩 읽어
들여 실행
-컴파일러에 비해 번역 속도
가 느림
• 컴파일러(Compiler)
-원시 코드 전체를 읽은 다
음 이를 기계어로 번역
-한 번 컴파일한 후에 수정
이 없다면
• 매번 컴파일 할 필요 없이
빠른 시간 내에 프로그램
실행이 가능
17
컴파일러와 인터프리터 중간 방식
최근에 개발되는 언어는 컴파일러와 인터프리터의 특징을 모두 갖는 방식의 언어
18
08
프로그래밍 언어
단원 목차
8.1 프로그래밍 언어 개요
8.2 프로그램 구현
8.3 고급 프로그래밍 언어 종류
8.4 객체지향 프로그래밍
포트란(FORTRAN)
최초의 대중화된 고급 프로그래밍 언어이자 현재도 사용되고 있는 언어
20
코볼(COBOL)
미국 국방부를 중심으로 결성된 그룹 CODASYL(Conference on DAta SYstem Language)에 의해 개발
21
베이직(BASIC)
초보자도 쉽게 배울 수 있도록 만들어진 대화형 프로그래밍 언어로 1963년에 개발
22
파스칼(PASCAL)
교육용으로 제작된 프로그래밍 언어이나 범용적 개발용으로도 성공
23
C
1972년경, 시스템 PDP-11에서 운용되는 운영체제 유닉스(Unix)를 개발하기 위한
시스템 프로그래밍 언어
• 데니스 리치(Dennis Ritchie)가 개발 -응용 소프트웨어의 개발에 널리 이용
-미국전신전화국인 AT&T의 벨 연구소 • 현재 이용되고 있는 운영체제, 컴파일러, 통
합개발환경 등이 대부분 C 언어로 개발
-B 언어에서 발전된 언어
• B 언어는 켄 톰슨(Ken Tompson)이 개발
• ANSI C
-미표준화위원회(American National
Standards Institute)에서 공인한 표준 C
• 특징
-하드웨어에 대한 보다 확실한 통제가 가능
-이식성(portability)이 높음
• 특정 컴퓨터 기종에 의존하지 않음
-풍부한 연산자와 데이터 형(data type)
• 범용 프로그래밍 언어로서 널리 보급
24
C++
1972년에 개발된 C 언어는 그 이후 1983년 프로그램 언어 C++로 발전
• C 언어의 객체지향 버전
-C++은 객체지향 프로그래밍을 지원
• OOP
-Object-Oriented Programming
• C언어가 가지는 장점을 그대로 계승
• 상속성(inheritance) 등의 개념을 추가한 효
과적인 언어
25
스크래치
2007년 MIT 대학의 미디어랩(Media Lab)에서 개발한 비주얼 프로그래밍 개발 도구
26
08
프로그래밍 언어
단원 목차
8.1 프로그래밍 언어 개요
8.2 프로그램 구현
8.3 고급 프로그래밍 언어 종류
8.4 객체지향 프로그래밍
객체지향 개요
객체지향은 70, 80년대를 거치면서 프로그램 언어 분야 뿐만 아니라
소프트웨어 개발 방법론 분야, 데이터베이스 분야 등 많은 분야에서 발전
• OO(Object Oriented)
-1960년대 말에 시뮬라(SIMUAL)라는 프로그램 언어에서 처음 소개됨
• 객체
-현실 세계의 사물이나 개념을 시스템에서 이용하기 위해 현실 세계를 자연스럽게 표현하여 손
쉽게 이용할 수 있도록 만든 소프트웨어 모델
-이 모델링 과정에서 객체지향의 특징
• 추상화(Abstraction)
• 상속성(Inheritance)
• 캡슐화(Encapsulation)
• 다형성(Polymorphism)
28
속성과 행동
객체의 속성과 행동은 실제 세계의 사물에서 유추한 성질
• 객체의 구성
-속성(attributes, properties)
• 객체의 특성을 표현하는 정적인 성질
-행동(messages, behaviors)
• 동적인 일을 처리하는 단위
-행동은 객체 내부의 일을 처리하거나 객체들간의 서로 영향을 주고 받는 일
29
객체지향과 절차지향
고급 언어 중에서 프로그램 방식으로 언어를 분류하면 주로 절차지향(procedural) 언어와 객체지향
(object oriented) 언어로 나뉨
• 절차지향(Procedural) 언어
-함수(function)
• 절차지향에서 전체 과정을 나누어 처리하는
단위
-문제를 여러 개의 작은 함수로 나누어 그 문
제를 해결
• 동사 중심의 프로그래밍 방식
• 객체지향(Object oriented) 언어
-문제를 구성하는 객체를 만들어 이 객체들
간의 메시지 교환으로 그 문제를 해결
• 명사 중심의 프로그래밍 방식
-메소드
• 객체는 자료와 일련의 처리 명령을 하나로 묶
어 놓은 메소드로 구성되는 프로그램 단위
• 함수보다 높은 수준의 모듈화 방법
30
객체지향과 절차지향: 자판기 설계
고객의 자동판매기 사용을 모의 실험하는 프로그램을 절차지향과 객체지향으로 생각
• 고객과 자판기: 객체
-자동 판매기에서 가장 중요한 자료
• 구매 과정에서 필요한 내용을 속성과 행동으
로 나눔
-고객 객체
• 돈과 제품이라는 2개의 속성
• 3개의 행동으로 구성
-자판기 객체
• 2개의 속성
• 4개의 행동으로 구성
• 함수
-동사 중심의 프로그램 단위
• 일련의 명령을 모아 놓은, 해야 할 업무를 처
리하는 단위
31
객체지향 언어
프로그래밍 언어 분야에서 객체지향 언어는
시뮬라에서 시작
• 순수 객체지향 언어
-범용적인 언어로는 널리 활용되고 있지 않음
-스몰토크, 이펠
• 일반 객체지향 언어
-C++ 언어
• C 언어를 기반으로 객체지향 개념을 도입하
여 개발된
-객체지향 언어는 범용적으로 이용
• 자바 언어
• 비주얼 베이직
• 델파이
32
자바
자바는 1995년에 공식 발표되었으며 프로그래밍 언어 C++를 기반으로 한 객체지향 프로그래밍 언어
• 자바(JAVA)의 시초
-1992년 미국의 SUN 사에서 가전제품들을 제어하기 위한 언어에서부터 비롯됨
• 자바 역사
-1990년 양방향 TV를 만드는 제어박스의 개발을 위한 그린 프로젝트(Green Project)를 시작
-James Gosling
• Oak 라는 언어를 발전시켜 자바를 개발
-월드 와이드 웹(World Wide Web) 이용에도 적합하도록 자바를 발전
• 90년 초부터 세계적으로 그 이용 범위가 폭발적으로 증가
-1995년 5월에 SunWorld 95에서 자바를 공식 발표
• 자바 가상 기계
-바이트코드가 실행될 수 있도록 하는 역할
• 바이트코드
-다양한 하드웨어 및 소프트웨어 플랫폼에서 효율적으로 실행하기 위해 설계된 아키텍처 중립적
인(architecture neutral) 중간 형태의 이진 파일
33
마이크로소프트의 닷넷
2002년 3월 마이크로소프트 사는 차세대 인터넷 인프라 구조인 닷넷 플랫폼을 정식으로 발표
• 닷넷 플랫폼(Platform)
-‘언제 어디서나 컴퓨터나 핸드폰과 같은 다양한 기기를 통해서 XML 웹 서비스를 요청하고 응답’
하려는 목적
• XML 기반의 웹 서비스를 위한 마이크로소프트의 새로운 플랫폼
-기존의 개발 기술을 이용 가능
• 주력 언어인 C# 언어를 이용 가능
• 닷넷 플랫임
34
인공지능과 빅데이터 분석에 알맞은 언어 파이썬
제4차 산업혁명 시대의 핵심기술인 인공지능의 구현과 빅데이터 분석 처리에 뛰어나기 때문에 각광
을 받고 있음
• 파이썬(python) 언어
-현재 미국의 대학에서 컴퓨터 기초과목으로
가장 많이 가르치는 프로그래밍 중 하나
• 분석 및 데이터 과학 분야와 머신러닝
분야에서 최고의 플랫폼
-인공지능의 머신러닝과 딥러닝 빅데이터 처
리를 위한 통계 및 분석 방법의 라이브러리
를 풍부히 제공
-2017년 분석 및 데이터 과학 분야와 머신러
닝 분야에서 41% 사용
35
파이썬 개요와 특징
파이썬은 1991년 네덜란드의 귀도 반 로섬(Guido van Rossum)이 개발한 객체지향 프로그래밍 언어
• 표준 파이썬(python) 버전
-비 영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델
• C 언어로 구현된 파이썬
• 다양한 파이썬 종류
-C 언어로 구현된 C파이썬(cpython) 구현이 사실상의 표준
• C#으로 구현된 닷넷프레임워크 위에서 동작하는 아이언파이썬(IronPython)
• 자바로 구현되어 자바가상기계(JVM)에서 돌아가는 Jython
• 파이썬 자체로 구현된 PyPy
• 대학의 컴퓨터기초 교육에 많이 활용
-간단하면서 효과적으로 객체지향을 적용할 수 있는 강력한 프로그래밍 언어
-매우 간결하고 읽기 쉽게 프로그램을 작성
• 인터프리터 언어
-간단한 문법구조를 가진 대화형 언어
-동적 자료형(dynamic typing)을 제공
• 변수를 선언하지 않고 사용
-여러 플랫폼에서 사용되는 다양한 영역에 활용
-프로그램을 쉽고 빠르게 개발
36
파이썬 설치와 실행
파이썬은 무료이므로 간단히 파이썬 홈페이지에 접속, 인터프리터를 내려 받아 설치 가능
• 파이썬 재단 페이지(www.python.org)
-내려 받기(www.python.org/download)에 연결
-인터프리터를 내려 받아 설치 가능
• 프롬프트(prompt)인 >>>
-프롬프트 이후, 명령어를 입력
-간단히 print(a)와 같이 저장된 내용을 출력
37
파이썬 프로그램과 학습
공식 튜토리얼과 한글 튜토리얼 사이트에 접속하여 학습 가능
• 공식 튜토리얼
-https://docs.python.org/3/tutorial
-한글 사이트
• ‘파이썬 자습서’로 검색
-https://docs.python.org/ko/3/tutorial/index.html
38
GO 언어
키워드가 25개 밖에 되지 않아 언어가 매우 간결하며 실용성을 지향
39
코틀린 언어
제트브레인스(JetBrains)에서 자바가상기계(JVM)와 안드로이드(android)를 위해 2011년에 공개한
객체지향 프로그래밍 언어
• 안드로이드 앱 개발 공식 언어
-구글은 2017년, 코틀린을 채택
• 오라클과의 자바 언어에 대한 분쟁의 결과
• 코틀린의 문법
-코딩하거나 읽기 쉽도록 매우 간결하고 간편
• 문장의 세미콜론은 옵션
• 간단한 메소드는 한 줄 구현이 가능
-자바 언어와의 상호 운용이 100% 지원
• 자바가상기계(JVM) 기반에서 자바 바이트코
드를 생성해 실행되는 것이 기본
• 자체 컴파일러를 사용하여 기계어로 컴파일
해 직접 실행도 가능
40
스위프트 언어
애플이 직접 2014년에 개발한 언어
• 오브젝티브C(Objective-C) 언어의 단점
을 개선
-애플의 iOS, 맥OS, 애플 TV(Apple TV), 애플
워치(Apple Watch) 앱 개발용
-현대 프로그래밍 언어의 기능을 포함
• 제네릭스(generics), 타입 인터페이스 등
• 특징
-매우 빠르고 민첩하며, 안전한 언어
-주어진 문제가 쉽던 어렵던 관계없이 매우
쉽게 코딩이 가능한 언어를 추구
-자바·C#와 C/C++·오브젝티브C(Objective-C)
의 장점을 결합한 언어라는 평가
• 아직은 애플을 위한 언어
41
R 언어
R은 통계 분석 및 그래픽 작업을 위한 인터프리터 프로그래밍 언어이자 무료 소프트웨어 환경