* 프로그램이란, 컴퓨터가 인식할 수 있는 `명령어의 나열(집합)`이다. * 구체적으로는 모바일의 카카오톡 같은 `애플리케이션`이라고 볼 수 있다. * 이는 명령대로(순차적으로) 실행을 진행한다.
* 프로그래밍이란 프로그램을 작성하는 과정을 의미한다. `코딩(개발)`이라고도 한다. * 프로그래머란 프로그램을 작성하는 사람을 의미한다. 다른 말로는 `개발자`라고 한다.
* 프로그램을 작성하기 위한 언어체계로, 사람이 컴퓨터와 소통하게 하는 요소이다. * 사람들이 보통 쓰는 언어(한국어, 영어 등)을 `자연어`라고한다. * 기계가 쓰는 언어는 `기계어`라고 한다. * 이 사이의 중재를 하는 것이 `프로그래밍 언어`이다. * 가장 많이 쓰인 프로그래밍 언어의 순서는 Python > Java > JavaScript > C# > C/C++ 순서이다. * 가장 많이 연구된 프로그래밍 언어의 순서는 C > Java > Python > C++ > C# 순서이다. * 이 중 Java가 가장 대중적인 것을 볼 수 있다.
* 컴퓨터를 효율적으로 운영하기 위해 개발된 프로그램을 모두 소프트웨어라고 한다 * 컴퓨터를 관리하는 `시스템 소프트웨어`와, 문제 해결에 이용되는 다양한 형태의 `응용소프트웨어`가 있다.
프로그래밍 언어를 사용하는, 개발자 측면에서 보는 관점에서 분류한다
특징 | 저급언어 Low Level Language | 고급언어 High Level Language |
---|---|---|
주체 | 기계중심의 언어 | 사용자 중심의 언어(컴파일 언어) |
호환성 | 타 기계와 호환성 낮음 | 호환성 높음 |
에러수정 | 어려움 | 비교적 쉬움 |
프로그래밍 용이성 | 어려움 | 비교적 쉬움 |
수행속도 | 기계 자체 언어이므로 번역의 필요성 없어서 빠름 | 실행하기 위해 기계어로 번역해야 하므로 느림 |
대표언어 | 기계어, 어셈블리어 | C, C++, Java, Visual C++, C# |
* 컴파일러 언어 : 완성된 소스 코드 자체로는 실행될 수 없고, 컴파일러(번역기)를 통해 컴파일이 되어야 소스코드가 실행프로그램이 된다. * 장점 : 한번 컴파일하면 파일된 프로그램을 그대로 사용 가능하며, 처리시간이 매우 빠르다. * 단점 : 한 줄의 소스코드가 많은 기계어로 번역되기 때문에, 상대적으로 큰 기억용량(Stack)이 필요하다. * 종류 : C, C++, Java, C#
* 인터프리터 언어 : 컴퓨터에 상주하고 있는 `인터프리터(실행기)`가 소스코드를 한 문장씩 읽어서 실행한다. 인터프리터를 이용한 개발 언어를 인터프리터 언어라고 한다. * 장점 : 한줄씩 해석하여 실행하기 때문에, 메모리가 많이 필요하지 않는다. 플랫폼에 비의존적이고, 자료형과 범위가 동적이어서 유연하다. * 단점 : 인터프리터에 의해 해석되면서 실행되기 때문에, 처리에 많은 시간이 소요되어 컴파일러 언어에 비해 비효율적이다. * 종류 : Basic, Lisp, 포스트스크립트
* 스크립트 언어 : 초창기에는 `배지언어(batch langauge)` 또는 `작업제어언어(job control langauge) 응용프로그램과 분리하여 작성하며, 프로그램 사용자가 `응용프로그램의 동작을 요구에 맞게 작동`될 수 있도록 해주는 스크립트 파일 작성용 언어이다. * 장점 : 특정 실행환경상에서 실행되기 때문에, 플랫폼에 독립적이다. 고수준 언어로, 프로그램 작성이 직관적으로 이루어진다. * 단점 : 단독으로 실행될 수 없기때문에, 별도의 런타임 환경을 구축해야 한다. 경우에 따라서는 많은 리소스가 필요할 수 있다. * 종류 : JavaScript, ActionScript, AutoHotKey,Perl,Python,Ruby,VBS