일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- C#
- tcp
- english
- Telnet
- SMTP
- Queue
- SQS
- ICMP
- ssh
- AWS
- 7계층
- AI스쿨
- Storage Gateway
- ELB
- 라우터
- IDS
- 보안관제
- 프로토콜
- 네트워크
- kubernetes
- Protocol
- IPS
- docker
- 스위치
- k8s
- EC2
- 3way handshaking
- 침입탐지시스템
- 침입차단시스템
- 브리지
- Today
- Total
Devsecops
중요)언어의 분류 본문
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)
사람에게 직관적
기능과 자료를 하나의 개체(물체의 개념)에 합침
가장 널리 쓰이는 프로그래밍 패러다임
사람에게 매우 직관전
복잡한 프로그램 구조를 잡기 쉽다
'Programming > C#' 카테고리의 다른 글
컴파일(Compile) (0) | 2024.05.06 |
---|