6. 프로그래밍 언어 활용
표기법
- 카멜 표기법 : 식별자 표기 시 여러 단어가 이어지면 첫 단어 시작만 소문자로 표시하고, 각 단어의 첫 글자는 대문자로 지정하는 표기법 (inputFunc)
- 파스칼 표기법 : 식별자 표기 시 여러 단어가 이어지면 각 단어의 첫 글자는 대문자로 지정하는 표기법 (InputFunc)
- 스네이크 표기법 : 식별자 표기 시 여러 단어가 이어지면 단어 사이에 언더바를 넣는 표기법 (input_func)
- 헝가리안 표기법 : 접두어에 자료형을 붙이는 표기법 (nScore)
프로그래밍 언어의 유형 분류
개발 편의성에 따른 분류
- 저급 언어 : 기계가 이해할 수 있도록 만들어진 언어 (기계어 / 어셈블리어)
- 고급 언어 : 개발자가 소스 코드 작성 시 쉽게 이해할 수 있도록 작성된 언어 (C / C++ / JAVA / PYTHON)
실행하는 방식에 따른 언어 분류
- 명령형 언어 : 컴퓨터에 저장된 명령어들이 순차적으로 실행되는 프로그래밍 방식. 절차형 언어 (FORTRAN / COBOL / PASCAL / C)
- 객체 지향 언어 : 객체 간의 메시지 통신을 이용해 프로그래밍하는 방식 (JAVA / C++)
- 함수형 언어 : 수학적 수식과 같은 함수들로 프로그램을 구성하여 호출하는 방식 (LISP)
- 논리형 언어 : 논리 문장을 이용해 프로그램을 표현하고 계산을 수행하는 개념에 기반한 프로그래밍 방식 (프롤로그)
구현 기법에 따른 분류
- 컴파일 방식의 언어 : 고급 언어를 기계어로 번역하는 방식의 언어. 컴파일러에 의해 실행에 필요한 정보가 미리 계산되어 실행 속도가 높음 (FORTRAN / PASCAL / C / C++)
- 인터프리터 방식의 언어 : 고급 언어 명령문을 하나씩 번역하고 실행하는 방식의 언어. 프로그램 실행과 동시에 동작 (BASIC / 프롤로그 / LISP)
- 혼합형 방식의 언어 : 고급 언어를 컴파일하여 중간 언어로 변환 후, 인터프리터에 의해 번역을 실행하는 방식의 언어 (JAVA)
프로그래밍 언어별 특성
절차적 프로그래밍 언어 종류
- ALGOL : 알고리즘의 연구개발에 이용하기 위한 목적으로 생성. 절차형 언어로는 최초로 재귀 호출 가능.
- C : 유닉스에서 사용하기 위해 개발한 프로그래밍언어. 모든 컴퓨터 시스템에서 사용할 수 있도록 설계된 프로그래밍 언어.
- BASIC : 교육용으로 개발되어 언어의 문법이 쉬움. 다양한 종류. 서로 다른 종류 사이의 소스 코드는 호환되지 않음.
- FORTRAN : 과학 계산에서 필수적인 벡터, 행렬 계산 기능 등이 내장된 과학 기술 전문 언어. 산술기호, 삼각 및 지수, 대수 함수 등 수학 함수 사용 가능.
객체 지향 프로그래밍 언어 종류
- C++ : C문법 + 객체 지향 프로그래밍 개념 + 일반화 프로그래밍을 위한 템플릿 기능. 원하는 많은 작업을 성능 하락이 없는 형태로 개발이 가능. 직접 신경 써야 하는 것들(메모리 관리)이 많은 언어라 개발 어려움.
- C# : MS 개발. C++과 자바와 비슷한 문법. 자바와 달리 불안전 코드와 같은 기술을 통해 플랫폼 간 상호 운용성 확보.
- JAVA : 썬 마이크로 시스템즈가 개발한 객체 지향적 프로그래밍 언어. 자바 컴파일러는 자바로 작성된 프로그램을 바이트 코드라는 특수 바이너리 형태로 변환. 현재 웹 개발에 가장 많이 사용되는 언어.
- Delphi : 파스칼 문법에 여러 기능 추가. 윈도우 아래에서 모든 부분을 프로그래밍 할 수 있는 언어. 높은 생산성. 간결한 코드. C++과 비슷한 수준의 저수준 시스템 프로그래밍 가능.
스크립트 언어 종류
- PHP : 동적 웹 페이지를 만들기 위해 설계. PHP 코드를 HTML에 입력 시 웹 서버에서 해당 코드를 인식해 작성자가 원하는 웹 페이지를 생성할 수 있음. 인터페이스 방식의 자체 인터프리터 제공.
- Perl : 인터프리터 방식의 프로그래밍 언어. 실용성 모토. 불특정한 데이터 길이의 제약 없이 강력한 문자열 처리 기능 제공. C, sh 등 다른 프로그래밍 언어에서 뛰어난 기능을 도입.
- Python : 다양한 플랫폼에서 사용 가능. 라이브러리 풍부. 유니코드 문자열 지원. 다양한 언어의 문자 처리. 들여쓰기 사용하여 블럭 구분 문법. 다른 언어로 쓰인 모듈을 연결하는 언어.
- JavaScript : 객체 기반의 스크립트 프로그래밍 언어. 웹 브라우저 내에서 주로 사용. 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능 존재. 브라우저마다 지원되는 버전 상이.
선언형 언어 종류
- 함수형 언어 (Haskell) : 패턴 맞춤, 커링, 조건제시법, 가드, 연산자 정의 등의 기능 존재. 재귀 함수나 대수적 자료형 지원.
- 함수형 언어 (LISP) : 수학 표기법을 나타내기 위한 목적. 트리 자료구조, GC, 동적 자료형과 인터프리터와 같은 개념 제시. 함수 호출 시 함수 이름 혹은 연산자가 첫 번째로 위치하여 피연산자가 이어 위치.
- 논리형 언어 (Prolog) : 논리식을 기반으로 객체 간의 관계에 관한 문제를 해결하기 위해 사용. 인공지능이나 계산 언어학 분야, 자연언어 처리 분야에서 사용.
- 특수 분야 언어 (SQL) : RDBMS의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어. DB관련 프로그램들이 SQL을 표준으로 채택.
객체 지향 프로그래밍
객체와 객체 간의 통신을 통해 프로그램 구현. 객체, 클래스, 메시지를 이용해 개발하는 방식.
객체 / 클래스 / 메시지로 구성.
객체 : 개체, 속성, 메서드로 구성된 클래스의 인스턴스.
클래스 : 객체를 표현하는 추상 데이터 타입으로 객체를 생성하는 틀. 클래스를 통해 추상화된 자료형 제공.
메시지 : 객체 간의 통신
객체의 구성요소
개체 : 현실 세계에 보이는 본질.
속성 : 자료 저장소 역할. 절차 지향 프로그래밍의 변수와 대응.
메서드 : 호출 단위. 절차 지향 프로그래밍의 함수와 대응.
모듈과 패키지
모듈 : 전역변수, 함수 등을 모아둔 파일
패키지 : 모듈을 디렉토리 형식으로 구조화한 라이브러리