본문 바로가기
정보처리 기능사

프로그래밍 언어 활용

by 승환파크 2023. 10. 27.

프로그래밍 언어 활용

프로그래밍 언어 활용의 개요

프로그래밍 언어란 컴퓨터 시스템을 동작시키기 위한 프로그램 작성 언어를 말한다.

프로그램은 다소 단순해 보이는 명령어들의 조합으로 구성되는데, 이러한 조합들을 비트(Bit)라고 불리는 0과 1 의 값으로 작성되거나 변환되어 컴퓨터가 이해할 수 있도록 한다.

 

1) 비트(Bit)

비트는 컴퓨털르 이해하기 위한 가장 기본적인 용어로, Binary Digit의 약칭이다.

0과 1로만 구성된 이진법(ex : 100101)을 이용하며, 컴퓨터 이용시 흔히 접할 수 있는 1바이트(Byte)는 8비트(Bit)를 의미한다.

  • 바이트 : 1Byte(B) = 8Bit, 1Bit = 0.125B
  • 킬로바이트 : 1Kilobyte(KB) = 8,192bit, 2¹⁰(1024)byte
  • 메가바이트 : 1Megabyte(MB) = 8,388,608bit = 2²⁰byte
  • 기가바이트 : 1Gigabyte(GB) = 8,5899e+9bit = 2³⁰byte
  • 테라바이트 : Terabyte(TB) = 8,7961e+12bit = 2⁴⁰byte
  • 페타바이트: Petabyte(PB) = 9,0072e+15bit = 2⁵⁰byte
  • 엑시바이트 : Exabyte(EB) = 9,2234e+18bit = 2⁶⁰byte

 

2)컴퓨터 시스템의 구조

컴퓨터는 전달받은 0과 1의값들을 정해진 순서대로 실행하며 그 과정에서 처리(Processing), 저장(Store) 등을 수행한다.

프로그램 실행 및 데이터 처리는 중앙저장장치(CPU)에서 수행하고, 저장은 기억장치(Memory)에서 수행하며, 중앙처리장치(CPU)로부터 명령을 받아 데이터를 입력 또는 출력하는 일은 입출력장치(I/O Device)에서 수행한다.

중앙처리장치에서는 목적에 따라 연산 등을 수행하는데, 연산을 위한 명령어를 실행하고 기록하기 위해서는 일반적으로 '인출, 해석, 실행, 기록' 의 단계를 거쳐야 한다.

 

프로그래밍 언어의 기본 문법 및 용어

1) 프로그래밍 기본 용어

변수 : 어떤 값을 주기억장치에 기억하기 위해서 사용하는 공간을 의미한다.

 

식별자 : 프로그램의 구성요소를 구별하기 위한 기준으로, 변수명이 식별자에 속한다.

 

바인딩 : 변수와 변수에 관련도니 속성을 연결하는 과정으로, 정적 바인딩과 동적 바인딩으로 구분된다.

- 정적 바인딩 : 프로그램 실행 시간 전에 속성을 연결하는 방식

- 동적 바인딩 : 프로글매 실행 시간에 속성을 연결하는 방식

 

선언 : 변수에 이름, 데이터 타입 등의 속성을 부여하는 작업으로, 명시적 선언과 묵시적 선언으로 구분된다.

- 명시적 선언 : 선언문을 이용하며 변수 이름을 나열하고 속성을 부여하는 방식

- 묵시적 선언 : 별도의 선언문 없이 디폴트 규칙에 의해 속성을 부여하는 방식

 

영역 : 이름이 사용되는 범위를 의미하며, 정적 영역과 동적 영역으로 구분된다.

- 정적 영역 : 변수를 찾을 때 구조에 기반하는 방식

- 동적 영역 : 변수를 찾을 때 구조보다는 순서에 기반하는 방식

 

할당 : 변수에 메모리 공간을 바인딩하는 작업을 의미한다.

 

데이터 타입 : 변수가 가질 수 있는 속성값의 길이 및 성질을 의미한다.

 

연산자 : 데이터 처리를 위해 연산을 표현하는 기호로, +, - 등과 같은 연산자를 포함한다.

 

명령문 : 프로그램을 구성하는 문장으로, 지시 사항을 처리하는 단위를 의미한다.

 

2) 변수와 데이터 타입

① 변수

변수는 저장하고자 하는 어떠한 값이 있을 때, 그 값을 주기억장치에 기억하기 위한 공간을 의미한다.

 

② 변수 선언 규칙

변수는 프로그램 소스코드의 공유, 유지 관리, 표준화 등을 위해 일정한 규칙에 따라 작성된다.

변수 선언의 대표적인 규칙

  • 영문 대문자/소문자(대소문자 구분), 숫자, 밑줄(_),이 사용이 가능하다.
  • 첫 번째 자리는 숫자로 시작할 수 없다.
  • 변수 이름의 중간에는 공백을 사용할 수 없다.
  • 이미 사용되고 있는 예약어(키워드)는 변수로 사용할 수 없다.

 

③ 데이터 타입

변수에 들어갈 값의 특성을 구분하여 그 특성에 맞게 저장할 수 있도록 하는 데이터 속성값의 길이 및 성질을 의미한다.

 

④ 데이터 타입 유형

프로그래밍 언어에 따라 데이터 타입의 유형을 구분하는 기준에 차이가 있다.

일반적으로 아래와 같은 유형으로 나눈다.

1) 불린타입

참과 거짓을 의미하는 데이터 타입으로 bool 이라고도 한다.

참을 의미하는 True와 거짓을 의미하는 False, 두 가지의 값을 가지고 있다.

 

2) 문자 타입

문자 하나를 저장할 때 사용한다.

char a = 'A';

3) 문자열 타입

문자열을 저장할 때 사용한다.

String a = "welcome";

C++, Java 에서 사용한다.

C언어에서는 지원하지 않는다.(C언어에서는 배열을 사용한다.)

 

4) 정수 타입

정수 값을 저장하고자 할 때 사용한다.

Java 와 C/C++ 의 정수 타입

구분 타입 크기 범위
Java byte 1byte -128 ~ 127
short 2byte -32,768 ~ 32,767
int 4byte -2,147,483,648 ~ 2,147,483,647
long 8byte -9,223,372,036,854,775,808
~ 9,223,372,036,854,775,807
C/C++ short 2byte -32,768 ~ 32,767
unsigned short 2byte 0 ~ 65,535
int 2byte(or 4byte) -32,768 ~ 32,767
(or -2,147,483,648 ~ 2,147,483,647)
unsigned int 2byte(or 4byte) 0 ~ 65,535
(or 0 ~ 4,294,967,295)
long 4byte -2,147,483,648 ~ 2,147,483,647
unsigned long 4byte 0 ~ 4,294,967,295

5) 부동 소수점 타입

소수점을 포함하는 실숫값을 저장하고자 할 때 사용한다.

 

6) 배열 타입

여러 데이터를 하나로 묶어서 저장하고자 할 때 사용한다.

C언어에서는 배열의 공간(크기)를 선언하고, Java는 비워둔다.

- C언어 정수형 배열 선언

Array[5] = {1, 2, 3, 4, 5};

- Java 정수형 배열 선언

Array[] = {1, 2, 3, 4, 5}

# 값을 바로 할당하는 경우에는 위처럼 선언하지만 공간만 할당 받고싶은 경우 아래와 같이 선언한다.
Array[] = new Array[5]; <- 5칸을 할당 받겠다는 의미이다.

 

⑤ 서식 지정자

변수 혹은 값을 출력문을 통해 출력하기 위해 사용한다.

printf는 문자열만 출력하며, 이스케이프(탈출)문과 같이 문자열 선언을 탈출하여 변수를 인식시키는 것을 서식 지정자라고 한다.

정수형 %d 부호 있는 10진수 정수
%u 부호 없는 10진수 정수
%o 부호 없는 8진수 정수
%x 부호 없는 16진수 정수
실수형 %f 소수점 6번째까지의 실수
%e 0.000000e + 00, 실수 지수 표현
%g 숫자 값의 크기에 따라 %e나 %f 로 표현
문자형 %c 단일 문자 출력
%s 문자열 출력

 

3) 연산자

프로그램 실행을 위해 연산을 표현하는 기호로, 프로그램 내에서는 +, - 와 같은 연산자가 사용된다.

연산자에는 산술 연산자, 시프트 연산자, 관계 연산자, 논리 연산자 등이 있다.

 

1) 산술 연산자

+ 양쪽의 값을 더한다. ex) 10 + 5 결과 : 15
- 왼쪽 값에서 오른쪽 값을 뺀다. ex) 10 - 5 결과 : 5
* 두 개의 값을 곱한다. ex) 10 * 5 결과 : 50
/ 왼쪽 값을 오른쪽 값으로 나눈다. ex) 10 / 2 결과 : 2
% 왼쪽 값을 오른쪽 값으로 나눈 나머지를 계산한다. ex) 10 % 2 결과 : 0

산술 연산자 우선 순위 : 프로그래밍 언어도 수학과 동일한 연산자 우선순위를 따른다.

우선순위 1 2 3
연산자 (괄호) * / % + -

 

2) 시프트 연산자

10 진수의 값을 2진수로 변환하여 비트의 위치를 이동시키는 연산자

<<
(Left)
우측 값만큼 비트의 위치를 좌측으로 이동 ex)
int num = 5;                           // 0000 0101
int result = num << 2           // 0001 0100(20)
printf("%d", result);             // 20 출력
>>
(Right)
우측 값만큼 비트의 위치를 우측으로 이동

 

3) 관계 연산자

두 피연산자 사이의크기를 비교하는 연산자이다.

참(True)과 거짓(False)을 구분한다.

>, <
(초과), (미만)
printf(%d, 10 > 3);    // 결과 : 1(True)
>=, <=
(이상), (이하)
printf(%d, 5 <= 5);   // 결과 : 1(True)
==
(같다)
printf(%d, 10 == 3);  // 결과 : 0(False)
!=
(다르다)
printf(%d, 5 != 3);    // 결과 : 1(True)

 

4) 논리 연산자

두 피연산자 사이의 논리적인 관계를 정의하는 연산자이다.

&&
(and)
두 가지의 논리값이 모두 참일 경우 참(True)을 반환하고, 그렇지 않으면 거짓(False)을 반환한다. ex) 10 > 5 && 5 < 10   // 결과 : True
||
(or)
두 개의 논리값 중 하나라도 참이면 참(True)을 반환하고, 그렇지 않으면 거짓(False)을 반환한다. ex) 10 > 5 || 5 > 10      // 결과 : True

 

5) 비트 연산자

비트 연산자는 0과 1의 각 자리에 대한 연산을 수행하며, 0 또는 1의 결과값을 가진다.

보통 우리가 쓰는 단위를 10진수라고 표현하며, 컴퓨터의 언어를 이진수(비트)로 표현한다.

ex)

- 1₍₁₀₎ -> 0000 0001₍₂₎

- 2₍₁₀₎ -> 0000 0010₍₂₎

- 3₍₁₀₎ -> 0000 0011₍₂₎

- 10₍₁₀₎ -> 0000 1010₍₂₎

&
(and)
 두 값을 비트로 연산하여 모두 참이면 참(True)을 반환하고, 그렇지 않으면 거짓(False)을 반환한다.
|
(or)
두 값을 비트로 연산하여 하나라도 참이면 참(True)을 반환하고, 그렇지 않으면 거짓(False)을 반환한다.
^
(xor)
두 값을 비트로 연산하여 서로 다르면 참(True)을 반환하고, 그렇지 않으면 거짓(False)을 반환한다.

 

6) 증감 연산자

피연산자를 1씩 증가시키거나 감소시킬 때 사용하는 연산자이다.

부호의 위치에 따라 전위 연산자와 후위 연산자로 구분한다.

- 전위 연산자(++a / --a) : 피연산자 증감 후, 해당 라인 연산 수행

int a = 5;
int b = 5;
printf("%d %d", ++a, --b);    # 결과 : 6 4
printf("%d %d", a, b);        # 결과 : 6 4

- 후위 연산자(a++ / a--) : 해당 라인 연산  수행 후, 피연산자 증감

int a = 5;
int b = 5;
printf("%d %d", a++, b--);    # 결과 : 5 5
printf("%d %d", a, b);        # 결과 : 6 4

 

7) 복합 대입 연산자

산술 연산자와 대입 연산자(=)를 간결하게 사용하는 작업이다.

+= a += 2 --> a = a + 2
-= a -= 2 --> a = a - 2
*= a *= 2 --> a = a * 2
/= a / = 2 --> a = a / 2
%= a %= 2 --> a = a % 2

 

8) 삼항 연산자

조건에 부합할 경우, True와 False에 해당하는 값을 출력하는 연산자이다.

조건 ? True : False
# ? = 조건과 결과 구분
# : = 참과 거짓 구분

 

9) 진법 입력 및 출력 연산자

프로그래밍에서 기본적으로 10진법 형태의 숫자를 사용하지만 다른 진법으로 표현하면 아래와 같다.

구분 C언어 파이썬 Java
입력 2진법 = 0b
8진법 = 0
16진법 = 0x
2진법 = 0b
8진법 = 0o
16진법 = 0x
2진법 = Integer.valueOf(int, 2)
8진법 = Integer.valueOf(int, 8)
16진법 = Integer.valueOf(int, 16)
출력 10진법 = %d
8진법 = %o
16진법 = %x
2진법 = bin()
8진법 = oct()
16진법 = hex()
2진법 = Integer.toBinaryString(int)
8진법 = Integer.toOctalString(int)
16진법 = Integer.toHaxString(int)

 

4) 명령문

프로그램을 구성하는 문장으로, 지시 사항을 처리하는 단위이다.

기본적인 문법들의 종류가 매우 많은 것은 아니며, 각 언어마다 유사한 문법 체계를 사용한다.

 

1) 조건문

조건문은 조건의 참, 거짓 여부에 따라 실행 경로를 달리하는 if 문과 여러 경로 중에 하나를 선택하는 switch case 문으로 구분 된다.

1) if, if-else문

if문은 FORTRAN에서 처음 사용하였으며, 현재 대다수의 프로그래밍 언어에서 기본 명령문으로 사용한다.

if문의 경우 단순 if문, 선택 if문, 중첩 if문 의 유형으로 구분되는데 프로그래밍 언어마다 기본 형태는 아래와 같다.

C언어 / Java

if(조건){
	실행문;
}else if(조건){
	실행문;
}else{
	실행문;
}

# 중괄호의 경우 두 줄 이상 시에 작성한다. <-- 하지만 가독성을 위해 중괄호로 감싸주는것이 좀더 깔끔하다.
# if 구문은 중괄호가 없을 시 하단 1줄까지 인식한다.

파이썬

if 조건:
	명령;
elif 조건:
	명령;
else:
	명령;

 

2) switch case문

if문은 산술 또는 논리적 비교가 가능하나 switch case문은 조건이 동일한지의 여부만 확인한다.

C언어 / Java

switch(변수){
	case 값:
    	실행문;
        break;
   	default:
    	실행문;
}

파이썬은 switch case문이 존재하지 않는다.

 

2) 반복문

반복문의 특정 부분을 조건이 만족할 때 까지 실행하도록 하는 명령문으로 while문과 for문 do-while문이 있다.

FORTRAM의 do문이 시초라고 볼 수 있으며, 최근에는 while문과 for문이 주로 사용된다.

for문 for(기준값; 조건문; 증감문){
    실행문;
}
시작과 종료 조건을 지정하여 참인 동안에는 해당 문장을 반복해서 실행한다.
while문 while(조건문){
    실행문;
}
수식이 거짓이 될 때 까지 해당 문장을 반복해서 실행한다.
do-while문 do{
    실행문;
}while(조건문);
while문과 동일하지만 조건이 부합하지 않더라도 한 번은 반복하게 된다.

 

3) 제어문

1) berak, continue

일반적인 특정 조건에서 빠져 나가기 위해 조건문 구문과 같이 사용하거나, 반복문 내에서 반복된 흐름으 벗어나기 위해 사용한다.

break
(멈추다)
해당 반복문을 멈추고, 탈출하는데 사용한다.
continue
(계속하다)
반복문을 유지하면서, 다음 반복으로 건너뛴다.

break 와 continue 의 차이

for(int i = 5; i >= 0; i--){
	if(i % 2 == 0){
    	① break;    ② continue;
    }
    printf("%d", i);
}
① break ①의 결과는 5
if 조건을 만족했을 때 break문으로 해당 반복문을 탈출하여 반복문 종료
i 가 5일 때 i % 2 == 0 조건을 만족하지 않으므로 아래 printf문 출력
i 가 4일 때 i % 2 == 0 조건을 만족하므로 반복문 탈출
② continue ②의 결과는 531
if 조건을 만족했을 때 continue는 아래 구문을 실행하지 않고 다음 반복문으로 건너뜀
i 가 5일 때 i % 2 == 0 조건을 만족하지 않으므로 아래 printf문 출력
i 가 4일 때 i % 2 == 0 조건을 만족하므로 continue문으로 다음 반복으로 건너뜀(이 때 아래 구문을 실행하지 않고 for문으로 가게 되므로 출력 없음)
i 가 3일 때 i % 2 == 0 조건을 만족하지 않으므로 아래 printf문 출력
i 가 2일 때 i % 2 == 0 조건을 만족하므로 다음 반복문으로 건너뜀
i 가 1일 때 i % 2 == 0 조건을 만족하지 않으므로 아래 printf문을 출력하고 반복문 종료

 

2) 함수(Java : 메소드)

반복적인 코드의 사용을 방지하기 위하여, 하나의 항을 만들어서 필요할 때 마다 해당 값을 호출하여 반환하는 역할을 수행한다.

구문 예시
자료형 함수명(매개변수){
    실행문;
    return 자료형;
}
int sum(int num1, int num2){
    int result = num1 + num2;
    return result;
}

public static void main(Stirng[] args){
    int result = sum(1, 2);
    System.out.println(sum);
}
// 출력결과 : 3

 

5) 사용자 정의 자료형

C/C++, Java 와 같은 프로그래밍 언어에서는 사용자가 직접 자료형을 만드는 것이 가능하다.

이렇게 직접 만드는 자료형을 사용자 정의 자료형이라고 하며, C++의 경우 열거체, 구조체, 공용체로 구분하여 사용자 정의 자료형의 작성이 가능하다.

 

1) 열거체

괄호안에 연속적인 값이 들어가는 자료형이다.

특정 값을 넣어주지 않으면 1씩 늘어나기 때문에 상수 배열이라고도 한다.

구문 예시 해설
enum{
    상수 멤버1
    상수 멤버2
    상수 멤버3
};
enum color{
    black,
    red,
    yellow = 10,
    green
};
열거체에서 아무 값도 지정해 주지 않으면 초기값은 0이 되고 숫자를 지정하게 되면 그 숫자로 초기화된다.
지정한 다음부터는 별도로 지정해 주지 않아도 1씩 증가한다.
따라서
black = 0
red = 1
yellow = 10
green = 11
로 정의된다.

 

2) 구조체

괄호 안에 멤버 변수를 사용한는 자료형이다.

내부에 멤버 변수 자료형을 마음대로 선언할 수 있으며, 멤버 함수의 작성도 가능하다.

구문 예시 해설
struct{
    자료형 변수명1;
    자료형 변수명2;
    자료형 변수명3;
    반환자료형 함수명(){
        
    };
};
struct Test{
    int kor;
    int eng;
    int mat;
}

main(){
    struct Test t1;
    t1.kor = 90;
    t1.eng = 80;
    t1.mat = 100;
}
구조체 정의 후 메인문에서 구조체 변수를 다시 선언한다.
구조체 변수는 점(.)으로 구조체 멤버에 접근하여 값을 할당한 후 출력한다.

 

3) 공용체

공용체는 구조체와 거이 유사하나 조금 더 범주가 크다고 볼 수 있다.

열거체나 구조체와 달리 공용체명을 작성하여야 하며, 구조체를 멤버로 사용할 수 있다.

구문 예시 해설
union 공용체명{
    자료형 변수명1;
    자료형 변수명2;
    자료형 변수명3;
    struct{

    };
};
union Test{
    int kor;
    int eng;
    int mat;
};

main(){
    union Test t1;
    t1.kor = 90;
    t1.eng = 80;
    t1.mat = 100;
}
구조체와 문법은 거이 비슷하다.
공용체는 구조체와 달리 메모리 공간을 공유하며 크기를 작게 사용하므로 임베디드나 통신 분야에서 많이 쓰인다.

 

4) 추상화와 상속

1) 추상화

복잡한 문제의 본질을 이해하기 위해 세부 사항은 배제하고 중요한 부분을 중심으로 간략화 하는 기법이다.

추상화의 종류

기능 추상화 입력 자료를 출력 자료로 변환하는 과정을 추상화 하는 방법
자료 추상화 자료와 자료에 적용할 수 있는 오퍼레이션(Operation)을 함께 정의한느 방법
제어 추상화 외부 이벤트에 대한 반응을 추상화 하는 방법

 

2) 상속

상위 수준 그룹의 모든 특성을 하위 그룹이 이어받아 재사용 또는 확장하는 특성이다.

상속에는 단일 상속과 다중 상속이 있으며, 상위 수준의 그룹이 하나만 존재할 때 이를 단일 속성이라고 부른다.

 

3) 구체화

하위 수준 그룹이 상위 수준 그룹의 추상적인 부분을 구체화 시키는 것을 의미한다.

 

프로그래밍 언어 특성

1) 프로그래밍 언어의 발전 과정

1960년대 이전 1960년대 1970년대 1980년대 1990년대 이후
ASSEMBLY
(1950년대)
COBOL
(1960년대)
PASCAL
(1971년)
ADA
(1983년)
RUBY
(1993년)
FORTRAN
(1950년대)
PL/I
(1964년)
C
(1972년)
C++
(1983년)
JAVA
(1995년)
LISP
(1959년)
BASIC
(1964년)
SMALLTALK
(1972년)
PYTHON
(1986년)
JAVASCRIPT
(1995년)
    PROLOG
(1973년)
PROLOG
(1989년)
C#
(2000년)

 

2) 프로그래밍 언어별 특성

1)FORTRAN

1954년에 초기 버전이 개발된 언어이다.

시스템에 의존적이고, 프로그램 작성을 위해서는 컴퓨터 시스템 관련 지식이 많이 필요하다.

2)COBOL

1960년에 미국 국방성에 의해 개발되었다.

단순한 입출력 구현 시에도 많은 형식적인 문장이 필요하며, 비교적 프로그램 크기가 크고, 구문이 복잡하다.

순차적 방식의 언어로, 웹 응용 프로그램과 쉽게 통합할 수 있다.

자료 구조의 선언 부분과 프로그램의 실행 부분을 분리하였다.

FORTRAN과 마찬가지로 대문자로만 작성된다.

3)PASCAL

1971년에 개발되어 1980년대 말까지 많이 쓰인 언어이다.

잘 짜인 구조와 간결성으로 인해 프로그래밍 언어로서 성공하였으나, 분리 컴파일과 문자열의 적절한 처리 등을 제공하지는 못하였다.

사용자 정의 추상화 기능은 제공하나 정보 은닉 기능이 없어 현대의 프로그래밍 기법을 적용하기엔느 다소 부족하다는 단점이 있다.

4) C

1972년에 개발된 언어로, UNIX 운영체제 구현에 사용되는 언어이다.

범용 언어로 개발되었으나 문법의 간결성, 효율적 실행, 효과적인 포인터 타입 제공이라는 특징으로 인해 가장 많이 사용되는 시스템 프로그래밍 언어가 되었다.

5) C++

C언어를 발전시킨 언어로 클래스, 상속 등을 제공하는 객체 지향 프로그래밍 언어이다.

대형 프로젝트 수행 시 모듈별 분리가 가능하여 개발과 유지 관리에 적합하다.

6) JAVA

C++에 비해 단순하고 분산 환경 및 보안성을 지원한다.

JAVA 언어는 컴파일을 거쳐야 하며, 컴파일을 통해 생성된 class 파일을 가상 머신을 통해 실행하여아 한다.

7) JAVASCRIPT

1995년에 개발된 객체 지향 스크립트 언어로 웹 페이지 동작을 구현할 수 있다.

빠른 시간에 코드를 완성할 수 있고 확장성이 좋으며 배우기 쉽다는 장점이 있으나, 보안이나 성능이 다른 언어에 비해 부족하다는 단점이 있다.

8) PERL

텍스트 처리에 주안점을 두고 개발된 인터프리터 언어로 CGI용으로도 많이 사용된다.

변수를 명시적으로 선언할 필요가 없다.

9) PYTHON

배우기 쉽고 이식성이 좋은 언어로 다양한 함수들도 많이 제공되어 스타트업과 글로벌 기업에서도 많이 사용한다.

PERL 언어처럼 인터프리터 언어미녀서 객체 지향 언어, 스크립트 언어이다.

10) C#

2000년에 .NET 환경에 맞춰 설계된 언어이다.

C와 C++의 발전된 형태로, Visual Basic과 같이 사용자 인터페이스를 쉽게 만드는 컴포넌트 기능을 제공하기도 한다.

.NET 환경에서 실행되기 때문에 .NET 환경이 설치되어야 하고, C# 컴파일러를 필요로 한다.

11) GOLANG

2009년에 Google에서 만든 언어로 짧게 GO라고도 부른다.

C언어와 직접적인 연관을 가지며, 내장 라이브러리가 많이 지원된다.

대체로 C언어의 문법과 유사하나 if, for, switch를 포함한 제어 구조를 가지며, 하드웨어 사양이 낮더라도 빠른 컴파일이 가능하다.

12) DART

JAVASCRIPT와 JAVA의 영향을 받아 개발되었으며, 객체 지향적인 언어이다.

백그라운드에서 작동한다는 점에서 JAVASCRIPT와 차이를 가지고 있으며, JAVASCRIPT와 유사하나 단순화하였다.

별도의 라이브러리 설치 없이 HTML 페이지를 수정할 수 있다.

13) CEYLON

JAVA에 기반을 둔 언어로 모듈성을 주요 특징으로 가진다.

코드를 패키지와 모듈로 정리하여 가상 머신에서 컴파일을 수행하며, CEYLON Herd라는 저장소에서 모듈을 발행한다.

 

3) 프로그래밍 언어의 유형 분류

1) 개발 변의성에 따른 분류

저급 언어 : 기계가 이해할 수 있도록 만들어진 언어이다. 추상화 수준이 낮고, 프로그램 작성이 어렵다. 기게어, 어셈블리어가 저급 언어에 속한다.

 

고급 언어 : 개발자가 소스코드를 작성할 때 쉽게 이해할 수 있도록 작성된 언어로 C, C++, Java 등이 고급 언어에 속한다.

 

2)실행 방식에 따른 분류

명령형 언어 : 컴퓨터에 저장된 명령어들이 순차적으로 실행되는 프로그래밍 방식으로 절차형 언어라고도 한다. FORTRAM, COBOL, PASCAL, C 등이 명령형 언어에 속한다.

 

함수형 언어 : 수학적 수식과 같은 함수들로 프로그램을 구성하여 호출하는 방식이다. LISP 등의 프로그래밍 언어가 함수형 언어에 속한다.

 

논리형 언어 : 규칙에 대한 활성화 조건이 만족되면 연관된 규칙이 실행되는 구조로, 추론과 관계 규칙에 의해 원하는 결과를 얻어내는 방식이다. PROLOG 등이 논리형 언어에 속한다.

 

객체 지향 언어 : 객체 간의 메시지 통신을 이용하여 프로그래밍 하는 방식이다. Java와 C++ 등이 객체 지향 언어에 속한다.

 

3) 구현 기법에 따른 분류

컴파일 방식의 언어 : 고급 언어를 기계어로 번역하는 방식의 언어를 의미하며, FORTRAN, PASCAL, C, C++ 등이 컴파일 방식의 언어에 속한다. 컴파일 방식은 실행에 필요한 정보가 컴파일 시간에 계산되어 실행 속도가 높다.

 

인터프리터 방식의 언어 : 고급 언어 명령문을 하나씩 번역하고 실행하는 방식의 언어를 의미하며, BASIC, PROLOG, LISP, SNOBOL 등이 인터프리터 방식의 언어에 속한다. 프로그램 실행 시에 계산 된다는 특징이 있다.

 

혼합형 방식의 언어 : 고급 언어를 컴파일하여 중간 언어로 변환한 후 인터프리터에 의해 번역을 실행하는 방식의 언어를 의미하며, Java 가 이에 속한다.

 

라이브러리

1) 라이브러리의 개념

1) 라이브러리 정의

효율적인 프로그램 개발을 위해 필요한 프로그램을 모아 놓는 집합체로서, 필요할 때 찾아서 쓸 수 있도록 모듈화 되어 제공되는 프로그램을 말한다.

프로그래밍 언어에 일반적으로 제공되는 도움말, 설치 파일, 샘플 코드 등을 제공한다.

 

2) 라이브러리 종류

표준 라이브러리

- 표준 라이브러리는 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리를 의미한다.

- 각 프로그래밍 언어의 표준 라이브러리는 여러 종류의 모듈과 패키지를 가진다.

- 표준 라이브러리를 이용하면 별도의 파일 설치 없이 날짜와 시간 등의 기능을 이용할 수 있다.

 

외부 라이브러리

- 외부 라이브러리는 표준 라이브러리와 달리 별도의 파일을 설치하여야 한다.

- 누구나 개발하여 설치할 수 있으며, 인터넷 등을 이용하여 공유할 수도 있다.

 

3) 모듈과 패키지

라이브러리는 모듈과 패키지를 총칭한다.

개별 파일을 모듈이라고 하고, 모아놓은 폴더를 패키지라고 한다.

'정보처리 기능사' 카테고리의 다른 글

운영 체제  (1) 2023.11.16
애플리케이션 결함 조치  (0) 2023.11.01
애플리케이션 테스트 수행  (1) 2023.10.31
알고리즘 구현  (2) 2023.10.27
OSI 7계층 기본개념 및 각 계층 설명  (2) 2023.08.09