개발블로그

 

프로그래밍 개요

 

프로그래밍 정의

특정 결과 달성하기 위해 실행 가능한 컴퓨터 프로그램을 설계 및 구축하는 프로세스

분석 - 요구사항에 대한 분석

리소스 소비량

 

간단한 정의

말 그대로 프로그램을 만드는 행위 자체를 의미 (특정 목적을 위해 컴퓨터에 명령을 내림)

컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션

 

코딩 vs 프로그래밍

 

코딩 : 프로그램 안에 포함되어 있는 프로그래밍의 하위 집합

프로그래밍 : 설계 - 구현 - 테스트(유지보수)까지의 단계 총집합

 

백엔드 - 서버쪽

프론트엔드 - 디자인요소 강함

풀스택 = 백엔드 + 프론트엔드

 

프로그래밍 순서

문제 인식 + 프로그램 설계 > 프로그램 구현 > 테스트와 디버깅 > 프로그램 유지보수 > 문제 인식

 

프로그래밍 방법론

소프트웨어 개발 생명주기(SDLC : Software Development Life Cycle)

  • 각 단계에서 작업 방법과 문서 작성 형식 등을 규정
  • 요구 명세화 - 분석 - 설계 - 개발 - 시험 - 유지보수

개발 방법론 종류

  • 구조적 방법론
  • 객체지향 방법론
  • CBD 방법론

 

프로그래밍 언어 개요

 

프로그래밍 언어 역사

  • 1GL(First-generation programming language)
    • 10진이나 이진 형태의 프로그램으로 구성
    • 절대적인 기계어
    • 천공카드나 자기테이프로부터 읽거나 컴퓨터 전면 패널의 스위치를 조작함으로써 읽는 언어
  • 2GL
    • 어셈블리어
    • 기계어와 1:1 대응되기 때문에 변환기가 불필요
      • 기계어에 상응하는 빠른 속도
    • x86 CPU 기계어(10110000 01100001) => 어셈블리어(mov al, 061h)
  • 3GL
    • 고급 언어로서 현재 주로 사용되고 있는 프로그래밍 언어
    • 컴파일러 혹은 인터프리터에 의해 변환(기계 독립적)
    • C/C++, C# Java, BASIC

 

프로그래밍 언어 주요 특성

  • 기능과 목표
  • 추상화
  • 표현력

 

프로그래밍 언어의 요소

  • 구문(Syntax)
    • 프로그램의 모습, 형태, 구조에 대해 정의하는 것 -> 언어의 문법을 확인
    • 단어, 구, 컨텍스트
  • 의미(Semantics)
  • 타입 시스템(Type System)

 

프로그래밍 언어 분류 - 처리 수준

  • 저급 언어(Low-level Language)
    • 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어
    • 처리속도가 빠름
    • 이식성 및 가독성이 낮음
    • Intel x86, Microsoft x86-64, ARM, MIPS 등
  • 고급 언어(High-level programming language)
    • 사람이 알아듣기 쉬운 언어
    • 처리속도가 느림
    • 이식성 및 가독성이 높음
    • 종류
      • 컴파일 언어(Complied Language)
        • 실행파일로 만들어서 실행함
        • C, C++, Go, Rust 등
      • 인터프리터 언어(Interpreted Language)
        • 코드파일에서 1줄씩 실행함 
        • PHP, Java Script 등
      • JIT 컴파일 언어(Just-In-Time complied Language)
        • 컴파일 간단하게 거쳐서 기계어를 1줄씩 읽음(컴파일 + 인터프리터) 
        • C#, JAVA, Python 등

 

절차적 언어(Procedural Language) & 객체 지향 언어(Object Oriented Language)

절차적 언어 객체 지향 언어
프로그램이 프로시저 단위로 나뉜다 프로그램이 객체 단위로 나뉜다
데이터와 함수가 분리되어 있다 데이터와 메서드가 통합되어 있다
순차적으로 처리한다 비순차적으로 처리한다(순차적이긴 함)
개발생산성, 유지보수 및 확장에 용이하지 않다 용이하다
실행 속도가 빠르다  실행 속도가 느리다 

 

C언어 탄생 배경

  • C언어는 최초의 고급언어로 1972년 켄 톰슨과 데니스 리치가 벨 연구소에서 일할 당시 새로 개발된 유닉스 운영체제에서 사용하기 위해 개발한 프로그래밍 언어
  • 과거 독보적 운영체제였던 유닉스에는 CPU 구조에 변화가 생길 때마다 매번 어셈블리어로 새로 작성해야 하는 문제가 있었는데 이를 개선하고자 탄생했다.

 

C언어 특징

  • 하드웨어 제어
  • 확장성
  • 빠른 실행 속도
  • 유연성
  • 표준 라이브러리

 

#include <stdio.h>

int main()
{
	printf("Hello World!\n");
	return 0;
}

 

  • #include
    • #은 전처리기, 컴파일 하기 이전에 미리 처리되는 문구
    • 말 그대로 컴파일 하기 전에 처리해야하는 명령어를 의미
    • 컴파일 하기 전에 우측에 존재하는 것을 추가하라는 의미
  • stdio.h
    • .h 확장자를 가지는 파일은 헤더파일로 C 표준 라이브러리가 제공해주는 함수들 정보가 있는 집합체
    • 표준 입출력 헤더파일(STanDard Input Output)
      • 입력과 출력에 관련된 라이브러리 함수들이 포함
  • return 0;
    • 함수가 종료되었을 때 값을 돌려주는 역할
    • 기술 발달함에 따라 return 0 안해도 암묵적으로 0을 return 함
    • C언어 표준에는 return 0;을 작성하도록 권장
  • 세미콜론(;)
    • 모든 코드 마지막에는 반드시 입력(마침표 역할)
    • 없으면 에러 발생함
  • main 함수
    • C언어로 만든 프로그램 실행시 가장 먼저 실행되는 함수
    • 프로그램 내에서 1개만 존재
      • 반환 값 타임
        • 정수형(int형)으로 반환
      • 인자 값(void는 아무것도 없다는 의미)
        • 아래 값을 인자로 받을 수 있음
          • 인자 개수(Argc, Argument count)
          • 인자 값(Argv, Argument value)
          • 환경 변수 값(Envp, Environment Value)

 

식별자 (Identifiers)

: 변수, 함수, 상수 등을 식별하기 위한 고유 이름

  • 식별자 규칙
    • 알파벳(A-Z, a-z), 숫자(0-9) 및 밑줄("_")만 사용 가능
    • 첫 번째 문자는 숫자(0-9)로 시작 불가
    • 대소문자 구별함
    • 공백이나 띄어쓰기 및 특수문자 사용 불가
    • 키워드(예약어)는 식별자로 사용 불가
  • 표기법
    • Snake
      • 각 단어 언더바로 연결
      • snake_case
    • Camel
      • 시작을 소문자로 하고 각 단어의 시작은 대문자로 함
      • camelCase
    • 헝가리안
      • 변수타입 이름 앞에 축약해서 붙임
      • strName, intNum
    • 파스칼
      • 대문자로 시작해서 각 단어의 첫 글자를 대문자로 표기함
      • PascalCase

 

변수(Variables)

  • 숫자, 문자와 같은 값들 저장하는 공간
  • 데이터 타입, 변수 이름으로 구성
  • 선언 방법
    • 타입 변수이름[, 변수이름];  => 변수의 선언만 하는 방법
    • 타입 변수이름 = 초기값[, 변수이름 = 초기값];  => 변수의 선언과 동시에 초기화하는 방법

 

상수(Constant)

  • 프로그램 실행 중에 변경 불가능한 데이터
  • 상수도 데이터 타입(Data type) 사용 가능
  • 종류
    • 리터럴 상수
      • 이름 정의되지 않은 상수
    • 심볼릭 상수
      • 이름 정의되어 있는 상수
      • const, define 키워드 사용
      • 상수 사용시 초기화가 "반드시" 필요

 

자료형(Data Type)

  • 정수형
    • signed : 부호있는 변수 = 기본형식 | unsigned : 부호없는 변수 키워드 사용 가능 (정수형, 문자형만)
    • short (2 byte)
    • int (4 byte)
    • long (4 byte)
  • 문자형
    • char (1 byte)
  • 실수형
    • float (4 byte)
    • double (8 byte)
    • long double (12 byte)

 

자료형(Data Type)별 크기

운영체제 char short int long pointer
32비트 UNIX 1 byte 2 byte 4 byte 4 byte 4 byte
64비트 UNIX 1 byte 2 byte 4 byte 8 byte 8 byte
64비트 Windows 1 byte 2 byte 4 byte 4 byte 8 byte

 

profile

개발블로그

@ORIONPOINT

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그