일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 이벤트 함수 실행 순서
- kraftonjungle
- 유니티
- BFS
- 다익스트라
- 크래프톤정글4기
- 크래프톤 정글
- KRAFTON JUNGLE
- 네트워크
- pintos
- 전쟁-전투
- C
- 파이썬
- 알고리즘
- 오블완
- 티스토리챌린지
- 백준
- 추상클래스와인터페이스
- Unity
- User Stack
- 4기
- TiL
- anonymous page
- 크래프톤정글
- 연결리스트
- project3
- 크래프톤 정글 4기
- c#
- 알고리즘수업-너비우선탐색2
- 핀토스
- Today
- Total
말감로그
C# vs C++ 본문
C#과 C++의 차이
" C++은 절자지향과 객체지향을 모두 지원하는 하이브리드 언어이며, 성능과 하드웨어 제어가 강점입니다.
반면, C#은 강한 객체지향 언어로, 자동 메모리 관리와 편리한 개발 환경을 제공하여 생산성이 높습니다.
또한 C++은 네이티브 코드로 실행되지만, C#은 .NET 환경에서 동작하는 관리 코드입니다. "
네이티브 코드랑 관리 코드가 무엇?
네이티브 코드는 OS에서 직접 실행되는 코드이고, 관리 코드는 가상 머신(.NET CLR)에서 실행되어 추가적인 기능(GC,보안)이 제공됩니다.
네이티브 코드 vs 관리 코드 비교
네이티브 코드 (Native Code) | 관리 코드 (Managed Code) | |
실행 방식 | OS에서 직접 실행 | VM(CLR, JVM 등)에서 실행 |
성능 | 빠름 (CPU에서 바로 실행) | 느릴 수 있음 (중간 단계 있음) |
운영체제 의존성 | OS별로 따로 컴파일 필요 | VM이 있으면 OS 상관없이 실행 가능 |
메모리 관리 | 개발자가 직접 해야 함 | 가비지 컬렉터(GC)가 자동 관리 |
보안 | 직접 접근 가능 (보안 취약점 위험) | VM이 보호해줘서 상대적으로 안전 |
*가상머신 : 소프트웨어적으로 하드웨어(컴퓨터)를 흉내 내는 프로그램
C#이 제공하는 편리한 개발 환경 & 생산성 향상 요소
C#은 .NET 프레임워크 및 다양한 개발 도구를 통해 개발자가 쉽고 빠르게 작업할 수 있도록 지원.
특히 C++과 비교하면 코딩이 간편하고 유지보수가 쉬운 환경을 제공
1. 자동 메모리 관리
- C++은 new, delete를 사용하여 메모리를 직접 할당/해제 해야 함 (메모리 누수 발생 가능)
- C#은 가비지 컬렉터가 자동으로 메모리 해제
2. 강력한 라이브러리 지원 (.NET Framework)
- C++ 은 다양한 기능을 사용하려면 외부 라이브러리를 직접 찾아서 추가해야 함.
- 표준 라이브러리(STL)도 있지만 네트워크, 데이터베이스 등은 별도 설치 필요
- C#은 .NET 라이브러리 기본 제공
- 파일 입출력, 네트워크, 데이터베이스 연결, 웹 개발 등 대부분 기능 내장 -> 추가 설치 필요 없음 -> 개발 속도 증가
ex ) 파일 읽기
C++
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream file("test.txt");
string line;
if (file.is_open()) {
while (getline(file, line)) {
cout << line << endl;
}
file.close();
}
}
C#
using System;
using System.IO;
class Program {
static void Main() {
string text = File.ReadAllText("test.txt");
Console.WriteLine(text);
}
}
C++ 과 C#의 컴파일 방식 차이
C++ 은 AOT(Ahead-Of-Time) 방식으로 미리 기계어로 변환되지만, C#은 JLT 컴파일을 사용하여 실행 시점에서 변환됩니다.
🔹 JIT 컴파일 vs AOT 컴파일 비교
방식 | 설명 | 장점 | 단점 |
JIT (Just-In-Time) 컴파일 | 실행 시점에서 바이트코드를 기계어로 변환 | 빠른 실행 속도 (한 번 변환된 코드를 캐싱) | 실행 중에 변환하기 때문에 최초 실행 속도 느릴 수 있음 |
AOT (Ahead-Of-Time) 컴파일 | 프로그램 실행 전에 미리 기계어로 변환 | 실행 속도가 빠름 (이미 기계어로 변환됨) | 플랫폼마다 별도로 컴파일 필요 |
'언어 > C#' 카테고리의 다른 글
Unity C# 기초 4. 제어문 if문 (조건문, 분기문) (0) | 2023.05.10 |
---|---|
Unity C# 기초 3. 멤버변수, 지역변수 (0) | 2023.05.10 |
Unity C# 기초 2. 형변환(casting) (0) | 2023.05.10 |
Unity C# 기초 1. 변수와 데이터형 (0) | 2023.05.09 |