Devsecops

중요)언어의 분류 본문

Programming/C#

중요)언어의 분류

Futurism 2024. 5. 1. 00:19
728x90

C#은 어떤 언어인가

강한 타입 언어

매니지드 언어

OOP

고수준 언어 vs 저수준 언어

저수준 언어

 컴퓨터가 이해하기 쉬운 언어 

 이진법

 기계어

 컴퓨터가 이해하기 위한 변환 과정 필요없음

 

고수준 언어

 인간이 이해하기 쉬운 언어

 인간이 사용하는 언어로 이루어짐

 어셈블러, C, C#, JAVA 등

 컴퓨터가 이해하는 기계어로 변환하는 과정 필요

 

* 저수준, 고수준은 상대적

 

기계어

 네이티브 코드

 2진수

 모든 프로그래밍 언어는 이 기계어로 번역되어야함

 

어셈블리어

 기계어보다 더 읽기 쉬움

 고수준 언어?

 대부분 기계어와 1대1 대응

 

고수준 프로그래밍 언어

 시림이 쓰는 말에 매우 가까움

 기계어와 1:1 대응 불가

 C. C++, JAVA 등

 메모리 관리에 따라 매니지드 언어, 언매니지드 언어로 나뉜다 

컴파일 언어 vs 인터프리터 언어

컴파일 언어

C, C++등

고수준 언어 -> 기계어

최적화(ex) 1시간 컴파일 0.1초 실행)

플랫폼마다 다른 exe 파일 사용

 

인터프리터 언어

Java, C# 등

소스코드를 중간 언어로 컴파일

플랫폼별로 VM 필요(가상머신에서 돌아감)

프로그램 실행 중 VM이 중간 언어를 기계가 이해하는 언어로 바꿔서 실행

VM에 종속적(ex) Java runtime environment)

실행 중 고수준 언어를 네이티브 코드로 바꿔서 실행

실제로 실행하기전 코드 문제를 잡아낼 수 없음(실행 도중에 하기 문제를 잡아내기 때문)

강한 타입 vs 약한 타입

변수 선언과 관련있음

변수형을 선언한 후에 변수형 가능 유무

 

약한 타입

변수형 변경 가능

실제로 코드를 실행하기 전까지 실수를 찾을 수 없음

장시간이 지난 후 의도적인 변화인지 인지 어려울 수 있음

JavaScript

 

강한 타입

변수형 변경 불가능

C, C++, C#

매니지드언어 vs 언매니지드 언어

누가 메모리의 수명을 관리하는가

프로그램에서 큰 데이트를 사용하려면 os로부터 독점적으로 사용할 메모리 확보 필요

반환도 필요

 

매니지드 언어

메모리 반환이 프로그래머 책임

명시적인 표현으로 효율적

성능이 중요한 프로그램을 만들때 사용(ex) 컴퓨터 게임 등)

컴퓨터처럼 생각하는 법을 알아야함

 

언매니지드 언어
메모리 반환이 알아서 이루어짐

실수가 적고 편함

명시적보다 효율적일 수 없음

 

프로그래밍 패러다임에 따른 분류

절차적 언어

가장 단순한 형태의 언어

함수 실행시 바로 반환

결과는 따로 보관해야함

기능과 자료저장의 분리

 

함수형 언어

절차형 언어와 매우 비슷

절차적 언어처럼 함수가 있음

상태의 변화가 없음

여러개의 프로그램이 접근할 때 유용함

특정한 분야에 사용

기존의 언어에 제약을 두고 코드를 짜는 느낌

 

개체지향 언어(OOP)

사람에게 직관적

기능과 자료를 하나의 개체(물체의 개념)에 합침

가장 널리 쓰이는 프로그래밍 패러다임

사람에게 매우 직관전

복잡한 프로그램 구조를 잡기 쉽다

728x90

'Programming > C#' 카테고리의 다른 글

컴파일(Compile)  (0) 2024.05.06