AI/컴퓨터C프로그래밍

컴퓨터C프로그래밍 01 C 언어 개요와 개발환경 설치

Ayel 2025. 10. 5. 17:05

 

 

프로그래밍 언어 개요

 

 

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언어는 많은 프로그래밍 언어에 영향을 미친 언어이며, 현재에도 다양한 분야에 사용되는 범용적인 언어이다. 절차적 언어, 간결하고 효율적인 언어, 이식성이 좋은 언어이다.