프로그래밍 언어 개요
1. 프로그램의 개요
프로그램: 컴퓨터, 스마트폰에서 특정 목적의 작업을 수행하기 위한 관련 파일의 모임
- 특정 작업을 수행하기 위해 그 처리 방법과 순서를 기술한 명령어와 자료로 구성
- 컴퓨터에게 지시할 일련의 처리 작업 내용을 저장
- 즉, 사용자의 프로그램 조작에 따라 컴퓨터에게 적절한 명령을 지시
ex.
스마트폰의 카카오톡, 일기예보 등 다양한 앱(app)
컴퓨터의 MS워드나 아래아한글 등
2. 프로그래밍 언어
- 프로그램을 개발하기 위해 사용하는 언어
- 사람과 컴퓨터가 서로 의사 교환을 하기 위한 언어
- 사람이 컴퓨터에게 지시할 명령어를 기술하기 위해 만들어진 언어
1) 다양한 프로그래밍 언어
- C언어: 윈도우 운영체제를 개발한 주력 언어이며 시스템에 들어가는 임베디드 소프트웨어 및 다양한 응용프로그램 개발
- 자바(java): 스마트폰 안드로이드 운영체제와 앱 개발, 다양한 웹/앱 프로그램 개발
- Python: 1990년에 개발되어 2000년 이후 많이 사용되며, 4차산업 이후 인공지능과 빅데이터 분석에 활용
ex. FORTRAN, ALGOL, BASIC, COBOL, PASCAL, C, C++, Visual Basic, Java, Objective-C, JSP, Javascript, Python, C#, Go, Swift, Kotlin
2) C언어의 역사
: 1972년 데니스 리치(Dennis Ritchie)가 개발
- 미국전신 전화국(AT&T)의 벨 연구소(Bell Lab)에 근무
- 시스템 PDP-11에서 운용되는 운영체제인 유닉스(Unix) 개발을 위해 C언어를 개발
- 속도가 빠르고, 좀 더 쉽고, 서로 다른 CPU에서도 작동되는 프로그래밍 언어로 C언어 개발
- 켄 톰슨이 1970년 개발한 B 언어에서 영향을 받아 B언어에서 발전된 언어
3) C언어에 영향을 미친 언어와 C언어의 발전
- ANSI C: 표준 C(Standard C)를 지칭
- 1989년 미국표준화위원회(ANSI: American National Standards Institute)에서 공인
연도 | 1960 | 1967 | 1970 | 1972 | 1989 | 1999 | 2011 |
ALGOL | BCPL | B | Traditional C | ANSI C | ANSI/ISO C | ANSI/ISO C | |
개발 | International Group | Martin Richard | Ken Thompson | Dennis Ritchie | ANSI committee | ISO committee | ISO committee |
4) C언어 발전
- 프로그래밍 언어 C++:
- 1983년 미국전신전화국의 비야네ㅔ 스트롭스트룹(Bjarne Stroustrup) 개발
- C언어에 객체 지향 프로그래밍 개념을 확장
- C와 C++: 90년 유럽에서 개발된 파이썬 언어에 영향
5) 최초의 프로그래밍 언어 포트란(FORTRAN)
- 최초의 프로그래밍 언어
- 1950년 중반 IBM에 근무하는 28세의 젊은 과학자인 존 배커스(John Backus)가 개발
- 수식 변환기(FORmula TRANslator)라는 의미의 약자
- 공학과 과학 분야에서 계산 위주로 사용을 목적으로 개발된 프로그래밍 언어
6) 기계어와 컴파일러
- 기계어(machine language): 컴퓨터가 유일하게 인식할 수 있는 언어
- 즉, 전기의 흐름을 표현하는 1과 흐르지 않음을 의미하는 0으로 표현되는 언어
- 프로그래머와 컴퓨터가 서로 의사를 교환: 프로그래밍 언어를 사용하는 프로그래머<->기계어를 사용하는 컴퓨터
- 컴파일러: 통역사와 같은 번역기 필요(프로그래밍 언어를 기계어로 변환하는 컴파일러compiler가 필요)
7) 고급언어와 저급언어
- 고급언어(High Level Language): 사람이 보다 쉽게 이해할 수 있도록 만들어진 언어
VS
- 저급언어(Low Level Language): 컴퓨터의 CPU에 따라 달라지며, 특정한 CPU를 기반으로 만들어진 언어
고급언어 | 포트란, C, C++, etc. |
저급언어 | 컴퓨터 하드웨어 - 중앙처리장치(CPU) -주기억장치(RAM) - 보조기억장치 - 입출력장치 |
기계어 - 이진코드 - CPU(기계)에 의존적 |
|
어셈블리어 - 이진코드를 영어 단어로 표현 - CPU(기계)에 의존적 |
- 어셈블리어(assembly language): 기계어를 사람이 좀 더 이해하기 쉬운 기호 형태로 만든 프로그래밍 언어
- 어셈블리 언어는 기계어보다는 프로그래밍이 훨씬 용이함
- CPU마다 제각각 다름
ex. LDA(LoaD Address), ADD, STA(STore Address): 명령어를 기호화한 것을 니모닉(mnemonic)이라 함
8) 컴파일러 VS 어셈블러
- 컴파일러(compiler): 고급언어로 작성된 프로그램을 기계어 또는 목적코드(object code)로 바꾸어 주는 프로그램
- 어셈블러(assembler): 어셈블리어로 작성된 프로그램을 기계어로 바꾸어 주는 프로그램
C언어의 특징
1. 절차지향 언어
- 함수 중심으로 구현되는 절차지향 언어(Procedural Language)
- 적어도 하나 이상의 절차인 여러 함수(function)로 구성되는 언어
- 구조적 프로그래밍(structured programming): 복잡한 문제를 잘 정의된 여러 개의 함수와 자료로 나누어 구성하고 해결
- 절차지향 언어(함수중심)의 반대 개념은 객체지향 언어(클래스 중심)이다
2. 간결하고 효율적인 언어
- 다양한 연산과 이미 개발된 다양한 시스테 라이브러리(rich library) 제공
- 비트연산, 증감연산, 축약대입연산 등
- 간결성, 메모리 관리, 빠른 처리
- 구조적 프로그래밍, 풍부한 라이브러리, 확장성, 이식성
- 중간수준 제어, 포인터, 재귀효율
3. 이식성이 좋은 언어
- 다양한 CPU와 플랫폼의 컴파일러를 지원
ex. 맥 컴파일러, 솔라리스 컴파일러, 윈도우 컴파일러 지원
4. C언어를 학습해야 하는 이유
1) 많은 프로그래밍 언어에 영향을 미친 가장 기본이 되는 프로그래밍 언어
- 자바, C++, C#, 파이썬 등 여러 프로그래밍 언어에 많은 영향을 미침
- 향후 다른 프로그래밍 언어 학습이 매우 쉬워짐
- 자료유형/변수, 함수, 배열/구조체, 포인터, 구조체, 메모리 할당
2) 현장에서 다양한 분야에 사용되는 범용적인 프로그래밍 언어
- 프로그래밍 지식과 프로그래밍 방법을 학습
ex.
응용 프로그램 | - 유틸리티 - 워드프로세서 - 게임 - 다양한 응용 |
임베디드 시스템 | - 가전 시스템 - 네비게이션 - 아두이누 - 라즈베리 파이 |
시스템 소프트웨어 | - 윈도우 - OS X - 리눅스 - 프로그래밍 언어 |
C언어에서 파생된 프로그래밍 언어
1. 파이썬(Python)
- 1991년 네덜란드의 귀도 반 로섬(Guido van Rossum)이 개발
- 객체지향 프로그래밍 언어
- 파이썬은 현재 대학에서 컴퓨터 기초 교육에 가장 많이 활용되는 교과목
- C 파이썬(cpython): C언어로 구현된 버전이 사실상의 표준
- 비영리의 파이썬 소프트웨어 재단이 관리(오픈 소스 소프트웨어)
- 베이직과 같은 인터프리터 언어: 한 문장씩 실행되는 대화형 언어, 간단한 문법구조, 쉽고 빠르게 개발, 개발기간이 매우 단축되는 것이 장점
2. 자바(Java)
- 1995년 공식 발표
- C++를 기반으로 한 객체지향 프로그래밍 언어
- 현재 웹/앱 등 다양한 분야에서 사용
- 선 마이크로시스템즈사의 그린 프로젝트(Green Project): 1992년 양방향 TV를 만드는 제어 박스의 개발을 위해 개발
3. 코틀린
- 2011년, 제트브레인스(JetBrains) 사가 개발
- 자바 통합개발환경인 인텔리제이 아이디어(Intelli IDEA) 개발사
- 객체지향 프로그래밍 언어
- 자바 가상기계(JVM)에서 실행
- 안드로이드(android) 환경 개발 언어
- 자바 언어와의 상호 운용 100% 지원
프로그래밍의 기본 개념
1. 프로그래밍의 내부 표현, 0과 1
- 컴퓨터가 이해하는 2진수
- 수의 자릿수에 사용할 수 있는 숫자가 2개(0, 1) 이므로 2진수
2. 비트와 바이트
- 비트(bit): BInary digiT의 합성어
- 가장 작은 기본 정보 단위(basic unit of information)
- 진수인 1과 0으로 비트의 표현이 가능: 전기의 흐름 상태가 on과 off 두 가지이다
- 바이트(byte): 비트가 연속적으로 8개 모인 정보 단위
- 1바이트는 8개의 비트를 조합하므로 총 256가지의 정보 종류를 저장
- byte가 4개면 word라고 한다(32 bits, 4 byte)
C언어는 많은 프로그래밍 언어에 영향을 미친 언어이며, 현재에도 다양한 분야에 사용되는 범용적인 언어이다. 절차적 언어, 간결하고 효율적인 언어, 이식성이 좋은 언어이다.
'AI > 컴퓨터C프로그래밍' 카테고리의 다른 글
컴퓨터C프로그래밍 00 C 언어 개발환경 설치 (0) | 2025.10.05 |
---|