Download presentation
Presentation is loading. Please wait.
1
강의교안 이용 안내 *이 책에 딸린 강의자료는 교수님의 효율적인 수업진행을 돕기 위해 만들어졌습니다.
*제공해드리는 강의자료는 책의 고유한 내용과 그림을 바탕으로 만들어졌으므로 저작권법에 의해 보호를 받고 있습니다. *강의를 보조하기 위한 자료를 학생들이 소유하게 되면 책을 구입하지 않게 되어 수업참여도가 현저히 떨어질 수 있습니다. 또한 해당 출판사도 불황에 많은 손해를 입게 되며 이로 인해 양질의 교재를 만들어 낼 수가 없게 됩니다. *교수님의 원활한 수업 진행과 학생들의 학습 증진을 위해 만들어진 강의자료가 정당하게 사용되어 대학의 학문 발전에 도움이 되었으면 좋겠습니다. *교수님께서는 본 강의자료가 불법적인 복사에 이용되지 않도록 간곡히 부탁 드립니다.
2
제05장 프로그래밍 언어 한국대학교 컴퓨터정보공학과
3
단원 목표 프로그래밍 언어의 필요성과 저급 언어와 고급 언어를 이해한다. 프로그램을 개발하기 위한 개발환경을 이해한다.
소스 작성에서 프로그램 실행까지의 프로그램 구현과정을 이해한다. 컴파일러와 인터프리터의 역할과 특징을 알아본다. 포트란, 코볼, 베이직, 파스칼, C, C++ 등 고급 언어의 특징을 알아본다. 프로그래밍 언어의 주요 구성 요소를 알아본다. 프로그램의 실행 흐름을 제어하는 제어구조의 종류를 알아본다. 객체지향의 개념과 객체지향 언어의 특징을 알아본다. 객체지향 언어인 자바와 C#의 특징을 이해한다. 객체지향 언어인 파이썬과 알(R), 고(Go), 코틀린(Kotlin), 스위프트(Swift)를 이해한다.
4
01. 프로그래밍 언어 개요
5
프로그래밍 언어 개요 프로그래밍 언어의 필요성 저급 언어 사람과 컴퓨터가 서로 의사교환을 하기 위한 것이 프로그래밍 언어
사람이 컴퓨터에게 지시할 명령어를 기술하기 위함. 저급 언어 기계어 기계어란 0과 1로 표현 컴퓨터가 직접 이해할 수 있는 유일한 언어 연산 코드(Operation Code)와 피연산자(Operand)로 구성 프로그래밍하기가 상당히 어려움. 어셈블리어 복잡한 기계어를 간략하게 기호화(symbolize)함 기계어의 연산코드와 피연산자를 프로그래머가 이해하기 쉬운 기호형태로 일대일 대응시킨 언어 연산 코드를 기호화한 것을 니모닉(mnemonic)이라고 부르며, 연산 코드의 예로 LDA(LoaD Address), ADD(ADD), STA(STore Address) 등이 사용 하드웨어 장치에 대한 강력한 통제 가능
6
저급언어와 고급언어 Low, high level language
프로그래밍 언어를 분류하는 기준의 하나로서 컴퓨터와 인간의 친밀성에 따른 분류 Low, high level language 컴퓨터가 이해하는 언어를 저급 언어, 인간이 이해하기 쉽고 친근한 언어를 고급 언어 저급 언어(Low Level Language) 컴퓨터의 주기억장치, 레지스터, 마이크로프로세서, 입출력 포트 등의 하드웨어를 직접 통제 가능 저급 언어를 사용하기 위해서는 하드웨어에 대한 충분한 지식이 요구됨. 고급 언어(High Level Language)에 비하여 언어 자체가 어렵기 때문에 전문가라 하더라도 프로그램의 생산성이 낮음. 1950년 중반부터 인간의 자연 언어와 비슷한 포트란, 코볼, 베이직 등의 고급 언어가 개발되어 프로그램 개발에 사용
7
프로그래밍 언어의 세대별 분류 프로그래밍 언어의 세대별 분류
1945년경에 기계어가 만들어진 이후 어셈블리어를 거쳐 고급 언어에 이르기까지 프로그래밍 언어의 발달을 세대별로 구분 프로그래밍 언어의 세대별 분류
8
4세대 5세대의 주요 언어 데이터베이스 질의 언어(query language)
3세대 언어가 절차적 중심의 언어라면 4세대 언어는 비절차적 중심의 언어 데이터베이스 질의 언어(query language) 비절차적 중심 언어 프로그래머가 원하는 결과를 얻기 위해서 하나 하나의 절차를 따를 필요가 없다는 의미 비주얼 프로그래밍 언어(Visual Programming Language) 비주얼 에비직 델파이 블록 프로그래밍 코드 없는 정해진 블록으로 코딩 진보된 비주얼 프로그래밍 언어 MIT에서 개발한 스크래치
9
02. 프로그램 구현
10
프로그래밍 개요 프로그램 프로그래머 개발 도구(development tools)
계산기, 아래한글과 같은 다양한 프로그램이 존재 프로그램 컴퓨터에서 특정 목적의 작업을 수행하기 위해 관련된 명령어와 자료를 모아 놓은 것이 프로그램(program) 컴퓨터에게 지시할 일련의 처리 작업 내용을 담고 있음 프로그래머 프로그램을 만드는 사람을 프로그래머(Programmer)라고 함 넓은 의미로 개발에 참여하는 사람을 개발자라 할 수 있음 개발 도구(development tools) 선정한 언어를 이용하여 프로그램을 개발하기 위한 환경이 필요
11
프로그램 개발 환경 프로그램을 개발하기 위해서는 기본적으로 에디터, 컴파일러, 링커, 로더(loader), 디버거 등이 필요 개발 도구가 필요 프로그램을 개발하려면 프로그램 언어로 만들어진 프로그램 소스를 실행 파일로 생성 개발 도구 편집기(Editor) 프로그램 명령어인 프로그래밍 언어의 내용을 편집 컴파일러 개발 도구에서 가장 중요한 것은 작성한 고급 프로그래밍 언어를 컴퓨터가 이해할 수 있는 기계어로 변환 디버거 작성된 프로그램에서 발생하는 프로그램 오류를 쉽게 찾아 수정할 수 있도록 도와주는 프로그램 링커 여러 목적 파일을 하나의 실행 파일로 만들어 주는 기능
12
통합개발환경 IDE 통합개발환경: Integrated Development Environments
프로그램을 개발하는데 필요한 컴파일러, 디버거, 링커, 에디터 등을 통합적으로 제공하는 개발 환경을 통합개발환경 통합개발환경: Integrated Development Environments 프로그램을 개발하는데 필요한 컴파일러, 디버거, 링커, 에디터 등을 통합적으로 제공하는 개발 환경을 통합개발환경 마이크로소프트 사의 ‘비주얼 C++’(Visual C++) 비주얼 스튜디오 익스프레스(Microsoft Visual Studio Express) 버전 무료 배포( 제품
13
프로그램 구현과정: 소스 작성과 컴파일 소스 작성 컴파일
프로그램을 구현하기 위해서 가장 먼저 할 일은 선정한 고급 언어를 이용하여 프로그램을 작성 소스 작성 프로그램 언어를 이용하여 원하는 작업을 기술한 내용을 소스 코드(source code) 또는 간단히 코드(code)라 함. 컴파일 소스(source) 파일(원시 파일)을 목적 파일(Object file)로 변환 과정 컴파일러 컴파일을 해주는 프로그램
14
프로그램 구현과정: 링크와 실행 컴파일러와 어셈블러 링크와 링커 실행 파일
작성된 소스는 컴파일, 링크 과정을 통해 실행 파일을 만들어 실행 컴파일러와 어셈블러 어셈블러 어셈블리 언어의 프로그램을 기계어로 변환 링크와 링커 목적 파일을 실행 가능한 실행 파일(Eexecute File)로 만들어 주는 프로그램: 링커 과정을 링크, 또는 링킹 과정 링커는 이러한 여러 개의 목적 파일들을 라이브러리 함수와 연결해서 하나의 파일로 합치는 작업을 수행 실행 파일 링킹 작업 결과 생성되는 프로그램을 실행 프로그램 (executable program) .exe나 .com의 확장자 파일
15
프로그램 구현과정: 디버깅 디버깅(debugging)과 디버거 에러 또는 오류
디버깅이란 ‘버그를 잡는다’는 의미로 여기서 버그란 바로 에러를 의미 디버깅(debugging)과 디버거 컴파일 에러나 실행 에러를 수정하는 과정 프로그램의 명령을 수행함에 있어 컴퓨터의 상태를 보여주거나 오류(또는 에러) 발생시 오류를 쉽게 찾을 수 있도록 도와주는 프로그램 처음부터 에러가 없는 프로그램을 작성하기란 거의 불가능 디버깅 과정에서는 많은 경험으로 에러를 쉽게 찾아 수정 에러 또는 오류 컴파일 (시간) 오류 링크 오류 실행 (시간) 오류
16
ITStory 디버깅의 유래 호퍼 중위 ‘디버그’란 용어의 유래 호퍼가 나방을 붙여 작성한 노트
“08:00, 작동시작, 10:00, 작동 멈춤, 릴레이를 교환하다. 11:00, 코사인테이프 시작. 15:25, 멀티 덧셈기 테스트하다. 15:45, 70번 패널 릴레이에서 실제 벌레(버그)가 낀 것을 처음 발견하다.” 호퍼 중위 릴레이 사이에서 벌레가 발견된 전후 정황을 컴퓨터 로그기록 노트 ‘디버그’란 용어의 유래 원래 버그는 나방 벌레 버그에 의해 컴퓨터가 오작동 된 이유에서 유래 버그를 없애는 일 ‘디버그한다 (debug, 벌레 잡는 일)’라고 하기 시작 호퍼가 나방을 붙여 작성한 노트 미 해군에 여러 해 동안 보관되다가 스미스소니언 박물관에 보관
17
컴파일러와 인터프리터 인터프리터(Interpreter) 컴파일러(Compiler)
컴파일 방식과 다르게 프로그램을 구현하는 방식을 인터프리터 방식 인터프리터(Interpreter) 고급 언어를 기계어로 번역해주는 역할을 수행 원시 코드를 한 줄씩 읽어 들여 실행 컴파일러에 비해 번역 속도가 느릴 수 밖에 없지만, 프로그램 을 작성할 때 보다 융통성을 가질 수 있음. 컴파일러(Compiler) 원시 코드 전체를 읽은 다음 이를 기계어로 번역 컴파일러는 한 번 컴파일한 후에는 수정이 없다면 매번 컴파일 할 필요 없이 빠른 시간 내에 프로그램 실행이 가능
18
컴파일러와 인터프리터 중간 방식 컴파일러와 인터프리터의 특징을 모두 갖는 방식
최근에 개발되는 언어는 컴파일러와 인터프리터의 특징을 모두 갖는 방식의 언어 컴파일러와 인터프리터의 특징을 모두 갖는 방식 자바 언어와 C# 언어 이들 언어는 컴파일러가 존재하여 컴파일 과정이 필요 컴파일된 실행 파일을 실행할 때는 인터프리터 방식과 같이 인터프리터가 필요 모든 시스템에서 독립적인 프로그램 언어를 개발하기 위해서
19
03. 고급 프로그래밍 언어의 종류
20
포트란(FORTRAN) FORTRAN: FORmula TRANslating system
최초의 대중화된 고급 프로그래밍 언어이자 현재도 사용되고 있는 언어 FORTRAN: FORmula TRANslating system 과학과 공학 및 수학적 문제들을 해결하기 위해 1950년대 중반에 IBM 704 컴퓨터 시스템에 이용할 목적으로 IBM의 존 배커스(John Backus)에 의해 고안된 제 3세대 프로그래밍 언어 포트란은 가장 오래된 언어 중의 하나 언어 구조가 단순해 지금도 기술 계산 분야 등에서는 사용
21
코볼(COBOL) COmmon Business Oriented Language
미국 국방부를 중심으로 결성된 그룹 CODASYL(Conference on DAta SYstem Language)에 의해 1960년 처음으로 개발 COmmon Business Oriented Language 코볼은 포트란에 이어 두 번째로 개발된 고급언어임 기업의 사무처리에 적합한 프로그래밍 언어로 개발됨 다른 프로그래밍 언어에 비하여 파일의 순차적인 처리 등이 효율적 영어 구문과 비슷한 문장구조를 갖고 있으므로 쉽게 이해할 수 있도록 프로그램 작성이 가능
22
베이직(BASIC) Beginner’s All-purpose Symbolic Instruction Code
초보자도 쉽게 배울 수 있도록 만들어진 대화형 프로그래밍 언어로 1963년에 개발 Beginner’s All-purpose Symbolic Instruction Code 대화형의 영어 단어를 바탕으로 약 200여 개의 명령어들로 구성된 가장 쉬운 대화형 프로그래밍 언어 1980년대에 개인용 컴퓨터의 출현과 함께 베이직은 기본 개발 언어로 탑재되어 범용적인 언어로 널리 사용 마이크로소프트는 이 베이직을 기본으로 비주얼베이직(Visual Basic)이라는 프로그램 언어를 개발
23
파스칼(PASCAL) 1971년 스위스의 나클라우스 워스(Nicholas Wirth) 교수에 의해 개발된 프로그래밍 언어
교육용으로 제작된 프로그래밍 언어이나 범용적 개발용으로도 성공 1971년 스위스의 나클라우스 워스(Nicholas Wirth) 교수에 의해 개발된 프로그래밍 언어 파스칼은 교육용으로 제작된 프로그래밍 언어 구조적인 프로그래밍 (structured programming)이 가능하도록 설계 1980년에서 1990년대까지 대부분의 대학에서 프로그래밍 언어의 교과과정으로 파스칼을 채택 1980년대에는 볼랜드 사에서 파스칼을 발전시켜 터보 파스칼(Turbo Pascal) 이라는 제품으로 상용화 델파이(Delphi) 볼랜드 사는 1990년 중반에 파스칼를 기반으로 하는 그래픽 사용자 인터페이스 윈도우 환경의 RAD(Rapid Application Development) 통합개발환경을 출시 마이크로소프트 사의 비주얼 베이직과 유사 현재까지도 널리 사용
24
C 미국전신전화국인 AT&T의 벨 연구소의 데니스 리치(Dennis Ritchie)가 개발 ANSI C 특징
1972년경, 시스템 PDP-11에서 운용되는 운영체제 유닉스(Unix)를 개발하기 위한 시스템 프로그래밍 언어 미국전신전화국인 AT&T의 벨 연구소의 데니스 리치(Dennis Ritchie)가 개발 켄 톰슨(Ken Tompson)이 개발한 B 언어에서 발전된 언어 ANSI C 미표준화위원회(American National Standards Institute)에서 공인한 표준 C를 지칭 특징 하드웨어에 대한 보다 확실한 통제가 가능 특정 컴퓨터 기종에 의존하지 않으므로 프로그램의 이식성(portability)이 높음 풍부한 연산자와 데이터 형(data type)을 갖고 있기 때문에 범용 프로그래밍 언어로서 널리 보급 응용 소프트웨어의 개발에 널리 이용 현재 이용되고 있는 운영체제, 컴파일러, 통합개발환경 등이 대부분 C 언어로 개발
25
C++ C 언어의 객체지향 버전 1972년에 개발된 C 언어는 그 이후 1983년 프로그램 언어 C++로 발전
C++은 객체지향 프로그래밍(OOP Object-Oriented Programming)을 지원 C언어가 가지는 장점을 그대로 계승 객체의 상속성(inheritance) 등의 개념을 추가한 효과적인 언어
26
스크래치 교육용 프로그래밍 언어(educational programming language)
2007년 MIT 대학의 미디어랩(Media Lab)에서 개발한 비주얼 프로그래밍 개발 도구 교육용 프로그래밍 언어(educational programming language) 일반인, 프로그래밍에 입문한 학생들을 대상으로 한 프로그래밍 언어 직관적으로 누구나 쉽게 이해할 수 있는 블록을 끼워 맞춰 프로그램을 작성 브라우저에서 직접 개발하는 환경 다양한 이미지나 사운드를 제공하여 쉽게 사용 커뮤니티 기반 웹 인터페이스로 구성 스크래치 웹사이트(scratch.mit.edu) 개발 환경은 한국어로도 서비스 초등학생을 중심으로 스크래치를 활용한 교육과정을 발굴 창의성 계발에 관한 연구가 활발 초등학교부터 프로그래밍 교육을 강화 스크래치와 같은 비주얼 프로그래밍 언어를 활용하면 좋은 성과가 기대
27
04. 프로그래밍 언어의 구성 요소
28
주석 주석은 프로그램을 설명하는 내용이나 기타 프로그래머가 기술하고 싶은 내용을 담음.
프로그램 언어의 문법에 관련 없이 프로그램 내부에 기술되는 부분 주석은 프로그램을 설명하는 내용이나 기타 프로그래머가 기술하고 싶은 내용을 담음. 주석을 표현하는 방법으로는 행(라인) 주석 또는 여러 줄에 주석을 표현할 수 있는 블록 주석 등이 있음. 행 주석 // 블록 주석 /* */
29
문장과 블록 문장 문장 구분 블록 문장과 여러 기호의 블록이 모여 프로그램 구성
프로그램 언어에서 일을 수행하는 문법상의 최소 단위인 문장 문장이 모여서 하나의 프로그램이 만들어짐 문장 구분 C나 자바는 문장의 끝을 ;(세미콜론)으로 표시 베이직 언어에서는 한 줄에 하나의 문장을 기술 블록 여러 문장의 모임
30
예약어와 식별자 예약어 식별자 프로그래밍 언어에 이미 정의된 단어가 예약어이며, 프로그래머가 직접 만드는 단어는 식별자
프로그램 언어에서 미리 정의하여 사용하는 단어 자바 언어의 48개 예약어 C 언어의 예약어 식별자 프로그램에서 프로그래머가 직접 이름을 정의하여 사용하는 단어 C 언어에서 식별자를 만드는 규칙
31
변수와 대입문 변수 대입문 컴퓨터는 물리적인 하드웨어와 컴퓨터의 행동을 지시하는 프로그램인 소프트웨어로 구성
프로그램에서 임시로 자료 값을 저장할 수 있는 저장 장소 대부분의 언어는 이러한 변수는 반드시 사용하기 이전에 먼저 선언 변수의 선언(declaration) 시스템에게 적당한 공간을 메모리에 확보하라는 의미 대입문 C 언어에서 선언된 변수에 저장 값을 수정하려면 “=” 기호의 대입 연산자(assignment operator)를 이용
32
자료 유형 자료 유형 종류 자바에서 제공하는 기본 자료 유형 C가 제공하는 자료 유형
변수의 자료 유형으로 변수의 값의 범위나 연산의 방법을 규정 자료 유형 저장공간에 저장되는 자료 값의 종류를 나타내는 것 자료 유형에 따라 저장공간인 메모리의 크기와 저장되는 값의 종류가 다름 종류 정수형(integer type) 부동소수형(floating-point type) 논리형(boolean type) 문자형(character type) 자바에서 제공하는 기본 자료 유형 byte, short, int, long, float, double, boolean, char C가 제공하는 자료 유형
33
제어 구조 제어 구조의 종류 프로그램 언어에서 프로그램의 실행 순서를 결정하는 주요 구문의 구조를 제어 구조 순차 구조
위에서 아래 순서로 문장을 실행하는 구조 선택 구조 if switch 반복 구조 for, while, do while
34
05. 객체지향 프로그래밍
35
객체지향 개요 OO(Object Oriented) 객체
객체지향은 70, 80년대를 거치면서 프로그램 언어 분야뿐만 아니라 소프트웨어 개발 방법론 분야, 데이터베이스 분야 등 많은 분야에서 발전 OO(Object Oriented) 1960년대 말에 시뮬라(SIMUAL)라는 프로그램 언어에서 처음 소개됨 객체 현실 세계의 사물이나 개념을 시스템에서 이용하기 위해 현실 세계를 자연스럽게 표현하여 손쉽게 이용할 수 있도록 만든 소프트웨어 모델 이 모델링 과정에서 객체지향의 특징 추상화(Abstraction) 상속성(Inheritance) 캡슐화(Encapsulation) 다형성(Polymorphism)
36
속성과 행동 객체의 구성 객체의 속성과 행동은 실제 세계의 사물에서 유추한 성질
속성(attributes, properties) 객체의 특성을 표현하는 정적인 성질 행동(messages, behaviors) 행동은 객체 내부의 일을 처리하거나 객체들간의 서로 영향을 주고 받는 동적인 일을 처리하는 단위
37
객체지향과 절차지향 절차지향(Procedural) 언어 객체지향(Object oriented) 언어
절차지향에서 전체 과정을 나누어 처리하는 단위를 함수(function)라 함 절차지향 언어는 문제를 여러 개의 작은 함수로 나누어 그 문제를 해결 절차지향이 동사 중심의 프로그래밍 방식 객체지향(Object oriented) 언어 객체지향은 명사 중심의 프로그래밍 방식 객체지향 언어는 문제를 구성하는 객체를 만들어 이 객체들 간의 메시지 교환으로 그 문제를 해결 객체는 자료와 일련의 처리 명령을 하나로 묶어 놓은 메소드로 구성되는 프로그램 단위로 함수보다 높은 수준의 모듈화 방법
38
객체지향과 절차지향: 자판기 설계 고객과 자판기: 객체 함수
고객의 자동판매기 사용을 모의 실험하는 프로그램을 절차지향과 객체지향으로 생각 고객과 자판기: 객체 자동 판매기에서 가장 중요한 자료 구매 과정에서 필요한 내용을 속성과 행동으로 나눔 고객 객체 돈과 제품이라는 2개의 속성과 3개의 행동으로 구성 자판기 객체 2개의 속성과 4개의 행동으로 구성 함수 일련의 명령을 모아 놓은, 해야 할 업무를 처리하는 동사 중심의 프로그램 단위
39
객체지향 언어 순수 객체지향 언어 일반 객체지향 언어 프로그래밍 언어 분야에서 객체지향 언어는 시뮬라에서 시작
범용적인 언어로는 널리 활용되고 있지 않음 스몰토크, 이펠 일반 객체지향 언어 C 언어를 기반으로 객체지향 개념을 도입하여 개발된 C++ 언어 객체지향 언어는 범용적으로 이용 자바 언어 비주얼 베이직 델파이
40
자바 자바(JAVA)의 시초 자바 역사 자바 가상 기계
자바는 1995년에 공식 발표되었으며 프로그래밍 언어 C++를 기반으로 한 객체지향 프로그래밍 언어 자바(JAVA)의 시초 1992년 미국의 SUN 사에서 가전제품들을 제어하기 위한 언어에서부터 비롯됨 자바 역사 1990년 양방향 TV를 만드는 제어박스의 개발을 위한 그린 프로젝트(Green Project)를 시작 책임자인 James Gosling은 이 Oak 라는 언어를 발전시켜 자바를 개발 90년 초부터 세계적으로 그 이용 범위가 폭발적으로 늘어나는 월드 와이드 웹(World Wide Web) 이용에도 적합하도록 자바를 발전시키게 됨. 1995년 5월에 SunWorld 95에서 자바를 공식 발표 자바 가상 기계 바이트코드가 실행될 수 있도록 하는 역할 바이트코드 다양한 하드웨어 및 소프트웨어 플랫폼에서 효율적으로 실행하기 위해 설계된 아키텍처 중립적인(architecture neutral) 중간 형태의 이진 파일
41
마이크로소프트의 닷넷 닷넷 플랫폼(Platform) 닷넷 프레임
2002년 3월 마이크로소프트 사는 차세대 인터넷 인프라 구조인 닷넷 플랫폼을 정식으로 발표 닷넷 플랫폼(Platform) ‘언제 어디서나 컴퓨터나 핸드폰과 같은 다양한 기기를 통해서 XML 웹 서비스를 요청하고 응답’하려는 목적 XML 기반의 웹 서비스를 위한 마이크로소프트의 새로운 플랫폼 기존의 개발 기술을 이용 가능 주력 언어인 C# 언어를 이용 가능 닷넷 프레임
42
c# 특징 C#(시샵)은 2000년 마이크로소프트의 차세대 플랫폼인 닷넷 프레임워크에서 주력 프로그래밍 방법으로 개발
모든 것을 객체로 취급하는 컴포넌트 프로그래밍 언어 자바와 C++에 기본을 둔 언어로 자바(Java)와 매우 비슷함 웹을 통해 정보와 서비스를 교환하고, 개발자들이 이식성(portability) 높은 응용프로그램들을 만들어 낼 수 있게 고안됨 코드가 컴파일되면 중간 언어인 MSIL(Microsoft Intermediate Language)이 됨 인터프리터인 CLR(Common Language Runtime)에 의해 실행 C#은 시스템에 독립적인 프로그램 개발이 가능
43
인공지능과 빅데이터 분석에 알맞은 언어 파이썬
제4차 산업혁명 시대의 핵심기술인 인공지능의 구현과 빅데이터 분석 처리에 뛰어나기 때문에 각광을 받고 있음 파이썬(python) 언어 현재 미국의 대학에서 컴퓨터 기초과목으로 가장 많이 가르치는 프로그래밍 중 하나 분석 및 데이터 과학 분야와 머신러닝 분야에서 최고의 플랫폼 인공지능의 머신러닝과 딥러닝 빅데이터 처리를 위한 통계 및 분석 방법의 라이브러리를 풍부히 제공 2017년 분석 및 데이터 과학 분야와 머신러닝 분야에서 41% 사용
44
파이썬 개요와 특징 파이썬(python) 버전 종류 대학의 컴퓨터기초 교육에 많이 활용 인터프리터 언어
파이썬은 1991년 네덜란드의 귀도 반 로섬(Guido van Rossum)이 개발한 객체지향 프로그래밍 언어 파이썬(python) 버전 파이썬 3.7까지 사용, C 언어로 구현된 파이썬 비 영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델 종류 C#으로 구현된 닷넷프레임워크 위에서 동작하는 아이언파이썬(IronPython) 자바로 구현되어 자바가상기계(JVM)에서 돌아가는 Jython 파이썬 자체로 구현된 PyPy C 언어로 구현된 C파이썬 (cpython) 구현이 사실상의 표준 대학의 컴퓨터기초 교육에 많이 활용 간단하면서 효과적으로 객체지향을 적용할 수 있는 강력한 프로그래밍 언어 매우 간결하고 읽기 쉽게 프로그램을 작성 인터프리터 언어 간단한 문법구조를 가진 대화형 언어 동적 자료형(dynamic typing)을 제공 변수를 선언하지 않고 사용 여러 플랫폼에서 사용되는 다양한 영역에 활용 프로그램을 쉽고 빠르게 개발
45
파이썬 설치와 실행 파이썬 재단 페이지(www.python.org) 프롬프트(prompt)인 >>>
파이썬은 무료이므로 간단히 파이썬 홈페이지에 접속, 인터프리터를 내려 받아 설치 가능 파이썬 재단 페이지( 내려 받기( 연결 인터프리터를 내려 받아 설치 가능 프롬프트(prompt)인 >>> 명령어를 입력 간단히 print(a)와 같이 저장된 내용을 출력
46
파이썬 프로그램과 학습 문자열 “Hello World!”를 출력하는 파이썬 소스 공식 튜토리얼
공식 튜토리얼과 한글 튜토리얼 사이트에 접속하여 학습 가능 문자열 “Hello World!”를 출력하는 파이썬 소스 공식 튜토리얼 한글 사이트 파이썬 자습서로 검색
47
GO 언어 구글 3인에 의해 고안된 컴파일 언어, 2009년 발표 홈페이지 통합 개발환경(IDE) 소스 모습
키워드가 25개밖에 되지 않아 언어가 매우 간결하며 실용성을 지향 구글 3인에 의해 고안된 컴파일 언어, 2009년 발표 로버트 그리즈머(Robert Griesemer), 롭 파이크(Rob Pike), 켄 톰슨(Ken Thompson) 간결하고, 안전하고, 효율적인 언어 멀티쓰레딩, 병렬 컴퓨팅에 적합한 동시성(concurrency) 프로그램을 쉽게 제작 홈페이지 golang.org 통합 개발환경(IDE) 제트브레인스(JetBrains)사의 Go랜드(GoLand) 이클립스 (eclipse) 또는 라이트 IDE(LiteIDE) 소스 모습 C 언어와 자바, 그리고 파스칼 언어의 모습
48
코틀린 언어 안드로이드 앱 개발 공식 언어 코틀린의 문법
제트브레인스(JetBrains)에서 자바가상기계(JVM)와 안드로이드(android)를 위해 2011년에 공개한 객체지향 프로그래밍 언어 안드로이드 앱 개발 공식 언어 구글은 2017년, 코틀린을 채택 오라클과의 자바 언어에 대한 분쟁의 결과 코틀린의 문법 코딩하거나 읽기 쉽도록 매우 간결하고 간편 문장의 세미콜론은 옵션이며, 간단한 메소드는 한 줄 구현이 가능 자바 언어와의 상호 운용이 100% 지원 자바가상기계(JVM) 기반에서 자바 바이트코드를 생성해 실행되는 것이 기본 자체 컴파일러를 사용하여 기계어로 컴파일해 직접 실행도 가능
49
스위프트 언어 오브젝티브C(Objective-C) 언어의 단점을 개선 특징 애플이 직접 2014년에 개발한 언어
애플의 iOS, 맥OS, 애플 TV(Apple TV), 애플 워치(Apple Watch) 앱 개발용 제네릭스(generics), 타입 인터페이스 등 현대 프로그래밍 언어의 기능을 포함 특징 Swift, 이름 그대로 매우 빠르고 민첩하며, 안전하고, 주어진 문제가 쉽던 어렵던 관계없이 매우 쉽게 코딩이 가능한 언어를 추구 자바·C#와 C/ C++·오브젝티브C(Objective-C)의 장점을 결합한 언어라는 평가 아직은 애플을 위한 언어, 윈도우 플랫폼 개발 환경이 없는 상태
50
R 언어 1993년 뉴질랜드의 오클랜드 대학교에서 개발 제4차 산업혁명 시대의 핵심 프로그래밍 언어로 각광
통계 소프트웨어 개발과 자료 분석에 널리 사용 SPSS(Statistical Package for the Social Science) STATA(Software for Statistics and Data Science) SAS(Statistical Analysis Software) 등의 통계 전문 소프트웨어와 같이 통계 처리를 위한 라이브러리를 활용 제4차 산업혁명 시대의 핵심 프로그래밍 언어로 각광 데이터 마이닝, 빅데이터 처리, 머신러닝 분야에 매우 적합 시각화 장점 풍부한 통계분석 패키지 제공과 함께 분석한 데이터를 완성도 높은 그래프 4천 개가 넘는 통계분석 패키지 공개 소프트웨어로 세계 여러 개발 기여자들이 최신의 분석기법을 위한 패키지를 계속 공급
51
Thank you
Similar presentations