Click here to load reader

PROGRAM · PDF file • 프로그래밍과개발도구, 프로그램개발과정 7.4 전통적프로그래밍개념 • 변수와자료형, 자료구조, 상수와리터럴, 배정문과연산자우선순위,

  • View
    1

  • Download
    0

Embed Size (px)

Text of PROGRAM · PDF file • 프로그래밍과개발도구, 프로그램개발과정 7.4...

  • PROGRAM LANGUAGE

    Jo, Heeseung

  • 2

    이번 시간에 배우는 것들

    7.1 프로그래밍 언어의 역사

    • 초창기 언어, 3세대 언어, 4세대 언어

    7.2 주요 프로그래밍 언어

    7.3 프로그램의 구현

    • 프로그래밍과 개발도구, 프로그램 개발 과정

    7.4 전통적 프로그래밍 개념

    • 변수와 자료형, 자료구조, 상수와 리터럴, 배정문과 연산자 우선순위, 제어문, 주석

    7.5 프로시저 단위

    • 프로시저의 구성, 지역변수와 전역변수, 매개변수의 전달

    7.6 객체지향프로그래밍

    • 객체지향과 절차지향, 클래스와 객체, 생성자를 갖는 클래스, 클래스의 3가지 특성

  • 7.1 프로그래밍 언어의 역사

  • 4

    1-세대 프로그래밍 언어

    기계어(machine language)

    • 이진수들로 인코딩된 일련의 명령들로 이루어짐

    • 디버깅(debugging) 작업 = 2진수와의 전쟁

    - 디버깅 : 오류 찾아서 고치는 과정

    156C 166D 5056 306E C000

  • 5

    2-세대 프로그래밍 언어

    어셈블리어(Assembly language) : 기계 명령을 표현하기 위한 기호 체계

    • 명령 코드는 기호식 이름으로 표현

    • 어셈블러(assembler)라고 불리는 번역 프로그램에 의해 기계어로 변환됨

    - 프로그래머는 기계처럼 사고해야 함

    - 기계 명령과 어셈블리 명령 사이에는 일대일 대응관계가 존재

    • 기계어 대비 획기적인 발전

    • 문제점 : 기계 종속적

    - 어셈블리어는 컴퓨터마다 다름

    - 컴퓨터가 바뀌면 새로 배워야 함

    LD R5, Price

    LD R6, ShippingCharge

    ADDI R0, R5, R6

    ST R0, TotalCost

    HLT

    식별자(identifier): 메모리 주소를 나타내는 의미 있는 이름이며, 프로그래머가 정한다

  • 6

    기계어를 16진수로 보여줌 어셈블리어로 보여줌

    명령어 주소

  • 7

    3-세대 프로그래밍 언어

    절차지향 언어

    • 고급 수준의 프리미티브 집합을 가짐

    - 하나의 고급 수준 프리미티브가 요청하는 활동을 수행하기 위해 여러 개의 기계어 명령을 조합(compile)

    - TotalCost = Price + ShippingCharge

    • 특징 : 기계 종속성(machine dependency) 일부 해소

    - 그래도 기계마다 조금씩 틀림 (예: C의 int) -> 보완책: 표준의 제정 (예: ANSI C)

    • 번역기(translator) : high-level P/L -> machine language

    - 컴파일러(compiler), 인터프리터(interpreter)

    • 가장 널리 알려진 3세대 언어

    - FORTRAN(FORmula TRANslator)

    - COBOL(COmmon Businsess-Oriented Language)

    - C

    - ... ...

  • 8

    4-세대 프로그래밍 언어

    4세대 언어 : 절차지향 언어 이후의 프로그래밍 언어

    객체지향 언어(Object oriented language)

    • 프로그래밍을 함에 있어서 데이터와 그 데이터를 처리할 메소드를 묶어 객체화

    • 객체들을 조립하여 목표를 해결

    • C++, C#, Java 등

    스프레드시트 프로그램

    • 표 계산 관련 프로그램을 작성할 수 있음

    스크립트 언어

    • 웹과 데이터베이스를 쉽게 연결하여 프로그램을 개발할 수 있는 언어

    데이터베이스 질의 언어(query language)

    • 비절차적 중심 언어 : 프로그래머가 원하는 결과를 얻기 위해서 절차를 따를 필요가 없음

    • 대용량 데이터를 처리하기 위한 데이터베이스 관련 프로그램을 개발할 수 있는 언어

  • 9

    4-세대 프로그래밍 언어

    비주얼 프로그래밍 언어(Visual Programming Language)

    • 비주얼 베이직, 델파이

  • 10

    4-세대 프로그래밍 언어

    스크래치

    • 코드 없는 정해진 블록으로 코딩

    • 진보된 비주얼 프로그래밍 언어

  • 7.2 주요 프로그래밍 언어

  • 12

    FORTRAN

    FORmula TRANslator

    • 최초의 high-level P/L

    • 수학 계산에 아주 강함

    • 언어 구조가 단순해 지금도 기술 계산 분야 등에서는 사용

    • FORTRAN IV, FORTRAN 77, FORTRAN 90으로 발달

    • 특징: 위치에 따라 명령을 구분

  • 13

    FORTRAN

    배열의 합을 구하는 FORTRAN 예제

  • 14

    Basic

    Beginner's All-purpose Symbolic Instruction Code

    • 1963년에 개발

    • 대화형의 영어 단어를 바탕으로 약 200여 개의 명령어들로 구성

    • 가장 쉬운 대화형 프로그래밍 언어

    • 1980년대에 개인용 컴퓨터의 출현과 함께 기본 개발 언어로 탑재

    - 범용적인 언어로 널리 사용

    • 마이크로소프트는 베이직을 기본으로 비주얼베이직(Visual Basic)이라는 프로그램 언어를 개발

  • 15

    Pascal

    Blaise Pascal의 이름에서 유래

    1971년 Wirth 교수가 개발 (전산학자)

    • 잘 정의된 문법 -> 교육용으로 최적

    이후, 수많은 language들에 지대한 영향

    • C : Pascal의 사투리

    C 언어에 비해 엄격한 구조를 요구

    현재는 도태되는 분위기

  • 16

    Pascal

    배열의 합을 구하는 Pascal 예제

  • 17

    C

    이름의 유래: BCPL(Basic Combined Programming Language) → B → C

    • 개발자: 벨 연구소의 Dennis Ritchie

    개발 이유

    • O/S 개발용: UNIX system

    • compiler 개발용: 이후의 대부분의 compiler

    특징

    • 하드웨어에 대한 통제가 가능

    • 프로그램의 이식성(portability)이 높음 (대부분의 고급 언어들 특징)

    • 풍부한 연산자와 데이터 형(data type)을 갖고 있기 때문에 범용 프로그래밍 언어로서 널리 보급

    • 운영체제, 컴파일러, 통합개발환경 등이 대부분 C 언어로 개발

    근황

    • C언어는 등장 이후 언어의 역사에 큰 영향을 줌

    • UNIX 등의 운영체제의 기능을 사용하는데 편리한 방법을 제공함

    • C++의 등장으로 계속 발전

  • 18

    C

    배열의 합을 구하는 C예제

  • 19

    C++

    이름의 유래: C -> C++

    • C+, D 모두 있었음

    Bjarne Stroustrup이 OOP를 쓰기 위해 개발

    특징: object, class의 도입

    • C의 유연성에 객체지향의 편리성을 접목시킴

    • 기존의 C언어로 개발된 모든 프로그램을 수정 없이 사용 가능

    • C언어에 익숙해지면 C++도 빠른 적응 가능

    • 대부분의 운영체제에서 C++를 지원

    OOP의 대중화에 기여

    근황

    • Java와 같은 새로운 객체지향 언어의 기틀이 됨

    • 현재 수많은 사용자들을 보유

  • 20

    C++

    “Hello World”를 출력하 는 C++예제

  • 21

    Java vs. C#

    Java

    • 이름의 유래: 커피 이름

    • C++와 비슷하면서, 불필요한 기능 제거

    • Sun이 Internet이나, embedded system 용으로 설계

    • 운영 체제나 중앙처리 장치에 관계없이 모든 플랫폼에서 사용 가능

    • 자바와 플랫폼 사이에 자바 가상 머신이 인터페이스 역할을 수행

    C#

    • MS가 Java에 대항해서 만든 언어

    - 거의 Java 비슷, 몇가지 첨가

    • .NET의 중심 (.NET : MS의 XML 기반 웹서비스플랫폼)

  • 22

    Python

    Python

    • 1989년, 크리스마스 주에 연구실이 닫혀 있어서 심심한 김에 만들었다 - Guido van Rossum

    • 현재 미국의 대학에서 컴퓨터 기초과목으로 가장 많이 가르치는 프로그래밍 중 하나

    • 인터프리터 언어

    • 간단한 문법구조를 가진 대화형 언어

    • 동적 자료형(dynamic typing)을 제공

    • 변수를 선언하지 않고 사용

    • 여러 플랫폼에서 사용되는 다양한 영역에 활용

    • 프로그램을 쉽고 빠르게 개발

  • 23

    Python

    문자열 "Hello World!" 를 출력하는 파이썬 소스

    공식 사이트

    • https://www.python.org/

    • 튜토리얼 https://docs.python.org/3/tutorial

    https://www.python.org/ https://docs.python.org/3/tutorial

  • 24

    UNIX 기반의 언어

    ProC

    • C언어의 UNIX 확장판

    • C언어를 사용한 UNIX의 데이터베이스 관리에 많이 사용함

    C

    • UNIX의 가장 중심적 언어

    • UNIX 자체를 C 언어로 제작하여 UNIX 프로그래밍에 필수임

    Shell 프로그래밍

    • 여러 가지 Shell 명령어를 순차적으로 수행함

    • Shell : UNIX에서 대화형 사용자 인터페이스를 부르는 용어로, 사용자가 입력하는 명령어를 이해하고, 실행하는 역할을 수행

  • 2