What is Programming language, 4th weeks
Study date: 27/Mar/2024 Introduction to Computer sience 4th weeks
Goals: 프로그래밍 언어의 개념을 이해하고 작동원리를 설명할 수 있다. 프로그래밍 언어의 구성요소를 나열할 수 있다. 절차적 프로그래밍 언어와 객체지향 프로그래밍 언어의 특징을 이해하고 장단점을 설명할 수 있다.
프로그램의 언어의 개념과 종류 (Programming language concept and type)
개념: 주어진 문제를 해결하기 위해 인간과 컴퓨터 사이에서 의사소통을 가능하게 하는 인공적인 언어
저급언어(Low-level Language): 컴퓨터가 쉽게 이해할 수 있도록 표현된 언어, 사람이 이해하기 힘듦, 처리 속도는 빠르지만 프로그램 작성과 유지보수가 어려움, 요즘엔 거의 안 쓴다. 예) 기계어, 어셈블리어
고급언어(High-level Language): 사람이 이해하기 쉬운 자연어에 가깝게 만들어진 언어, 가독성 및 생산성이 높음 예)C, C++, Java, 파이썬
프로그램 언어의 작동원리 (Programming language mechanism)

출처: 고려사이버대학교 컴퓨터학개론 5차시 수업자료
컴바일러 방식(Compiler): 프로그램 전체를 번역해서 한번 번역하면 빠른 시간 내에 전체를 실행이 가능하지만 일부를 수정하는 경우에도 전체를 컴파일해야한다. 예를 들면 파스칼, C언어등이 있다. 컴파일러 방식으로 목적 언어로 된 프로그램을 얻을 수 있다.
인터프리터 방식(Interpreter): 실행되는 행 단위로 실시간으로 번역이 되서 큰 기억 장치가 필요하지 않으며 번역 과정이 비교적 간단하지만 반복문이 많은 경우 매 반복 때마다 번역해야 해서 효율성이 떨어질 수 있다. 예를 들면 파이썬이 있다. 인터프리터 방식으로 실행의 결과를 바로 얻을 수 있다.
프로그램 언어의 구성요소 (Programming language components)
변수와 자료형 (Variable and Data type)
변수: 프로그램에서 처리하는 값(values processed by the program)을 저장하기 위한 공간(storage)이다. 전역변수(Global variable), 지역변수(Local variable)로 나뉜다 예) 이름, 주소, 값, 영역등
자료형: 변수가 가질 수 있는 값의 형태(Types of values a variable can have) 예)배열 Arrary, 레코드 Record
프로그램 실행 구조 (Execution structure)와 조건문과 반복문 ( Conditional structure & Iterative structure): 프로그램의 모든 논리(logic)는 순차, 조건, 반복 3개의 구조로 표현한다(expressed).
순차구조(Sequence structure): 조건문이나 반복문을 만나지 않는 경우(no encountered) 한 줄씩 순차적으로(sequentially) 실행(execution is performed)
조건구조(Conditional structure): 특정한 상태(In a specific state)에서 조건을 만족하는 경우와 그렇지 않은 경우에 다른 문장을 실행 예)조건문If, 다중조건문switch
반복구조(Iterative structure): 특정 조건을 만족하는 동안 해당 문장을 반복해서 실행 Executes the statement repeatedly while certain conditions are met 예) 반복문for, while
함수와 서브루틴 (Function and Subroutine): 수행한 값의 변환 여부에 따라 함스와 서브루틴(또는 프로시저)으로 구분하는 경우가 있음
절차적 프로그래밍 언어(Procedural programming)의 개념과 장점, 단점:
프로시저(Procedure)를 이용하여 작성하는 프로그래밍 스타일이다. (프로시저로는 루틴, 서브루틴, 함수, 메소드 등이 있다.) 순차적인 처리를 중요시 여기며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그램밍 기법이다.
장점: 컴퓨터의 처리구조와 유사해 실행 속도가 빠르다
단점: 유지보수가 어렵다. 코드가 길어지면 가독성이 무척 떨어지며 이해하기가 힘들다. 대형 프로젝트에 부적합하다
예) C,COBOL,FORTRAN
객체지향 프로그래밍 언어(Object-Oriented programming)의 개념과 장점, 단점, 특징
소프트웨어의 급격한 발전으로 커진 규모과 복잡성으로 Procedural programming으로는 작업량을 소화할 수 없었고 품질이 낮아졌다. 이에 따라 객체지향 프로그래밍(Object-Oriented programming)이 개발되었다. 프로그래밍에 필요한 속성(attribute)과 메서드(method)를 가진 클라스(class)를 정의하고 정의된 클라스를 통해서 각각의 개체(object)를 생성하여 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 예)JAVA, C++, 파이썬(파이썬은 대화프로그래밍 언어, OOP특성도 제공)
장점: 복잡하고 큰 규모의 소프트웨어의 작성, 관리, 유지 보수가 용이하고 소프트웨어의 재사용을 통해 생산성이 향상된다.
단점: 처리속도가 절차지향보다는 느리다. 설계시 많은 시간과 노력이 필요하다
특징:
캡슐화(Encapsulation): 외부에서 알 필요가 없는 정보(속성)는 감추어(메소드로 감추기 가능) 하나의 캡슐 상태로 유지, 외부에서는 함부로 접근/변경 등 불가능
다형성(Polymorphism) po·lee·maw·fuh·zm: 외부에서는 하나의 작업처럼 보이지만 내부에서는 각기 다른 방법으로 구현 예) '+' 연산을 숫자 계산과 문자 계산에 동시에 적용
상속성(Inheritance): 하나의 클라스가 정의되고, 그 이후에 어떤 클래스라도 이 클래스의 정의 중에서 하나 이상의 정의를 물려받을 수 있는 성질
용어정리
클라스(class): 객체 지향 언어에서 프로그램을 개발하는 단위, 메소드(method)와 속성(attribute)로 표현
메소드(method): 해당 객체를 통해 할 수 있는 행동(함수)
속성(attribute): 해당 객체가 가진 변수 값
개체(object): 클라스(class)라는 틀에서 생겨난 실체, 객체의 현재 상황과 가능한 모든 상태


