지금까지 운영체제 c로 만들다가 c++로 하니까 너무 복잡해져서

챗지피티
그 얘기는 아마 Windows NT 개발 과정에서 C++ 사용을 시도했던 사례를 말하는 것 같네요.

Windows NT 개발과 C++의 문제

Windows NT 개발 초기에는 기존의 MS-DOS 및 Windows 3.x 운영체제와는 다르게 완전한 32비트 커널을 목표로 했습니다. 이 과정에서 커널 및 저수준 시스템 코드 일부에 C++을 도입하려는 시도가 있었습니다. 하지만 결과적으로 너무 복잡해져서 결국 C 중심으로 돌아갔다는 일화가 유명합니다.

C++ 사용으로 인해 발생한 문제점

커널 코드의 복잡성 증가

C++의 객체지향 개념(상속, 가상 함수, 예외 처리 등)이 커널 개발에는 적합하지 않음.

가상 함수 테이블(vtable) 사용으로 인한 성능 및 메모리 오버헤드 문제 발생.

디버깅과 유지보수 어려움

당시(1990년대 초반)에는 C++을 위한 디버깅 및 최적화 도구가 부족했음.

C++ 예외 처리는 커널 환경에서 비효율적이었음.

바이너리 크기 증가

C++의 기능(예: 템플릿, 가상 함수)이 코드 크기를 늘려 운영체제의 크기가 비대해짐.

결국, Windows NT 커널은 다시 C 기반으로 개발되었고, 현재까지도 Windows 커널은 대부분 C로 작성되어 있습니다. 다만, C++은 유저 모드(user mode) 컴포넌트에서 부분적으로 사용됩니다.

현재 마이크로소프트의 C++ 사용 현황

커널(Kernel) & 드라이버: C 사용

유저 모드 애플리케이션: C++ 및 C# 사용 (예: Windows UI, DirectX, Office 등)

게임 및 그래픽: C++ 사용 (예: Xbox, DirectX)

결론적으로, 당시 운영체제를 C++로 개발하려던 시도는 현실적인 문제로 인해 실패했고, 결국 C가 운영체제 개발의 표준 언어로 남게 되었습니다.


---
"도둑은 집을 떠나며 주인을 욕한다" - 러시아 속담