.net framework 에 대한 근본적인 질문

.net이 나오면서 .net framework는 이제 개발이 중단되었으니 끝난 얘기일수도 있는데요.
처음 .net framework와 c#을 접할때부터 항상 가지고 있던 의문이 있어서요.

데스크탑 개발자인데 처음 c#/윈폼을 접했을때 너무 재밌고 좋았습니다. 데스크탑 프로그램을 이렇게 쉽게 개발할 수 있다니 하는 느낌도 들었구요.

그런데 개발을 하면서도 계속 의문이 들더라구요. .net framwork는 자바를 상대하기 위해 만든 기술인데 왜 WORA(Write Once Run Anywhere)가 아니라 WORW(Write Once Run Windows), 왜 윈도우만 지원하는가 하는겁니다.

당시에 윈도우 프로그램은 c++/c#, 리눅스는 c++로 개발했었는데(당시에 스마트폰이 없을때라 iOS/안드로이드는 없었습니다) 왜 .net framework는 리눅스를 지원하지 않는가하는 의문이 있었고요.

CLR 이라는 VM 위에서도 동작함으로해서 얻는 이득(메모리 관리, 안정성 등)도 있지만 c++이나 델파이로 만든 프로그램보다 느린데 왜 굳이? 라는 의문도 있었습니다.

이럴거면 차라리 이왕 헤이즐버그 스카웃했으면 mfc 버리고 델파이급 c++ RAD 툴 만들면 되지않나? 하는 생각도 들었구요.

계속 의문이 들어서 c# 고수였던 아는 형에게도 물어봤는데 그 형은 대략 2가지 이유를 들더군요.

  1. CLR 위에서 동작하면서 얻는 이득(메모리 관리 등)
  2. 윈도우 환경문제로 인한 오류 해결(대표적으로 dll지옥)

나중에 WPF가 나오면서 이거는 진짜 대단하다는 생각은 들었습니다.(MS의 빅픽쳐였나?)
WPF 이후에는 그런 의문들이 좀 사그라지긴 했는데 다시 생각이 나서 의견을 여쭙습니다.

여담으로 .net의 등장은 늦었지만 필연적이었던것 같구요. 진작에 이렇게 했으면 참 좋았을텐데 하는 생각도 드는데 이거는 욕심인거같습니다.

2개의 좋아요

첫 번째 질문 - “왜 닷넷은 크로스 플랫폼이 아니었던가?” - 에 힌트는 아래 영상에서 얻을 수 있을 것 같습니다.

두 번째 질문 - “왜 더 느린 c#인가?” - 에 대한 답은 포인터의 폐해가 크기 때문이지 않을까요?

그 당시에는 OOP의 캡슐레이션이 포인터의 대안으로 각광 받았으나, 지금은 러스트가 소개한 소유권이 선호되는 추세인 것 같습니다.

그럼에도, 엔터프라이즈 급 솔루션의 개발은 여전히 OOP 가 우세한 분위기인 것 같습니다.

4개의 좋아요

저의 사견입니다.

자바는 옛날부터 멀티 플랫폼이었었던걸로 알고 있었고, 비주얼 자바 만들다 터진 마소는 닷넷을 빨리 만들수 밖에 없었겠지만.
문제는 그놈의 스윙으로 대변되는 UI가 문제였죠. 윈도가 그 상황을 받아들이수는 없었으므로(어쨋든 mfc, win32 api등을 통해 스윙보다는 나은 ui를 가지고는 있었으니)
아마도 닷넷프레임워크로는 윈폼에 wpf까지 가게 됐으나, 말씀하신 멀티 플랫폼을 위해서는 닷넷 3.1까지 진행됐던 쪽에서는 그나마 리눅스쪽에 올라타기위해 노력하긴 했었던걸로 알고있었습니다.

그나마 어느정도 기술적 기반(+ 사업적 기반)이 확립된 수준이라고 생각했는지 .Net 5 부터 시작해서 대부분의 플랫폼에서 닷넷을 지원하는 수준에 이르렀으니 괜찮아진거죠.

나름 저희도 존버한게 승리라고 볼 수 있습니다.

3개의 좋아요

마지막 한 줄 승리라는 표현에 기분이 묘하게 좋네요.

4개의 좋아요

마소가 오픈소스 정책을 펼치기 이전의 닷넷은 플랫폼의 시장의 파이를 빼앗기 위한 도구였다고 봅니다. (이후도 마찬가지겠지만 :sweat_smile:)
자바보다 한 발 늦은 시작으로 Windows라는 보급를 높은 운영체제를 등에 업고 시장에 빠르게 안착하는 것, 또한 보급률을 바탕으로 자바에 대항하여 서버 시장에서 Windows Server와 ASP.NET의 파이를 넓히는 복합적인 전략이 깔려있었다고 추측할 수 있겠지요.
출시 당시만 해도 데스크탑 시장에서는 Windows의 점유율이 압도적이어서 굳이 리눅스를 지원 할 필요가 없었고 Windows Server를 팔려면 리눅스 기반에서 돌아가는 ASP.NET을 출시할 필요가 없지 않았을까 하는 것이 보편적인 시각일 것 같습니다ㅎ

이 부분에 대해서는 2000년대 초반 Windows XP라는 차세대 운영체제를 뒷받침할 새로운 개념의 무언가가 필요해서 높으신 분들이 막 밀어주신게 아닐까 하는 생각도 듭니다ㅋ

5개의 좋아요

사티아나델라가 MS 수장이 되기 전까지 MS의 전략은 윈도우폰이었죠

사티아나델라가 수장이 된후 Azure로 전략이 바뀌었고 덕분에 C#도 리눅스로 옮겨갈 수 있게 되었죠.

기술 문제가 아닌 비즈니스 전략 문제인거 같네요.

3개의 좋아요