모든 언어가 비슷하지 않을까요? 다 차치하고, 익숙해지는게 어려운거 같아요.
공식문서를 보면 MS만큼 잘되어 있는게 없는거 같긴한데 저한테는 MS 문서가 …머랄까…늪같습니다. 허우적 허우적…
치고 빠져나오는 걸 잘해야 할 거 같은데, 다른데로 너무 잘빠져서 처음 보고자 했던 건 까맣게 잊어버립니다.
한글번역은 자주 어순이 이상한게 많아서, 이해가 아닌 어순맞추기로 빠지기도 합니다. ㅎㅎㅎ
가끔 예전 개발방식과 개선된 방식의 코드를 비교해 주는 걸 보면 와…엄청 좋아졌네 하는것도 많았습니다. 그게 좋은거 같습니다.
일단 자바나 자바스크립트 쪽은 새로운 것의 적용을 잘 안 하는 것이지 안 나오는 게 아니죠.
물론 언어 자체가 그리 많이 바뀌지 않는 것은 맞습니다.
다만 프레임웍이나 기타 외부적인건 확확 바뀌고 있죠.
이제 C#, .Net을 보면요. 새로운 것이 많이 나오는게 분명한 사실입니다만…
꼭 써야 하는 것은 아니죠.
실제 과거에 만든것들 빌드 해보면 프레임웍만 교체하는것으로 대부분 빌드가 됩니다.
드믈게 안되는것들이 있는데. 라이브러리 가 바뀐 것이고 그것도
네임스페이스만 바꾸면 거의 빌드 됩니다.
제가 생각하기에는 그냥 새로운것을 빨리 적용하는것을 좋아하는 사람이 닷넷쪽에 많은 것 뿐이지
뭐 엄청 차이나는건 없다 입니다.
좋은 토론이 오고 가는 것 같습니다. 그런데 원래 주제로 돌아와서, 왜 닷넷이 어려울까? 하는 이야기를 해보면 좋을 것 같습니다.
최신 버전의 문법을 따라해야 한다는 "강박"이 생기면, 말씀하신 1분에 한 번씩 못보던 문법이 나오고, 못보던 자료형이 나오는 일이 생기는 것 같습니다. 개인적으로 C#으로 의미있게 적정선을 지키며 프로그래밍할 수 있는 마지노선은 C# 5.0까지라고 생각합니다. 그 이후의 모든 문법은 사실 모르더라도 큰 지장이 없고요.
의존성 주입 (Dependency Injection)이나 제어 역전 (IoC; Inversion of Control)은 확실히 자바스크립트에서는 생소한 개념이 맞습니다. 그런데 이 개념은 닷넷의 전유물은 아니고, 자바나 다른 개체 지향 언어들 모두가 제공하는 비슷한 패러다임이라 이것이 닷넷을 특별히 어렵게 만드는 이유가 되는지는 잘 모르겠습니다.
함수의 갯수나 클래스의 갯수가 많은 것은 닷넷은 오히려 약과라고 생각합니다. 많이들 사용하시는 자바나 스칼라의 경우는 어떤지 혹시 비교해보셨을까요? ㅎㅎ
프로그래밍 언어의 역사가 깊어질수록 복잡도가 늘어나는 것은 필연적인 문제인 것 같습니다. 그래서 자바의 경우처럼 오리지널 자바는 그대로 두되 새로운 언어 (코틀린, 스칼라 등)가 계속 추가되는 경우도 자주 볼 수 있는데, 새로운 언어를 기존 언어나 시스템 위에 추가하는 것도 장단점이 있고, 이 나름대로 새로운 복잡성이 더해지는 면도 있다고 생각합니다. 아, 자바스크립트의 경우에도 비슷한 일이 있었죠! 지금은 바닐라 자바스크립트보다 타입스크립트가 더 많이 쓰이는데, 타입스크립트도 C# 못지 않게 언어 발전 속도가 빠른 것으로 알고 있습니다. 이 부분에 대해서는 어떻게 생각하시는지 궁금하고요.
조만간 닷넷에서도 이런 복잡함을 밀어낼 새로운 패러다임이 등장할 때가 곧 오지 않을까? 하는 상상을 해봅니다. 닷넷도 어느새 20년이 넘긴 했습니다. ㅎㅎ
여러가지 이유로 C#과 닷넷이 보통 세트로 묶여서 이야기되는 경우가 많긴 한데,
C#이라는 언어 자체는 정적 타입 언어 중에서 제일 다루기 편한 언어라고 생각합니다.
C# 버전이 올라가면서 다른 언어에 있는 기능이나 요소들을 진보적으로 차용하는 경우도 많고, 그게 대체로 코드를 간결하고 안전하게 쓸 수 있게 해주는 것 같습니다.
다만 다른 분들께서 먼저 말씀하셨듯이 핵심적인 언어 사양들은 C# 5.0 정도까지만 공부해도 충분한 편이라 생각합니다. 그 이후에 추가된 사양들은 상황에 따라 필요하면 쓰면 그만 안쓰면 그만인 문법적 요소들이 많다고 생각합니다.
그리고 의존성 주입 같은 경우엔 C#보단 닷넷에서 적극적으로 차용하고 있는 개념이라고 보는게 좋을 것 같습니다. 그리고 이것 역시 알고보면 다른 언어의 프레임워크에서도 이미 적용하고 있는 개념입니다.
아마 동적 타입 언어군(Javascript, Python 등)을 주로 쓰는 분야와 정적 타입 언어군(C#, Java 등)을 주로 쓰는 분야 간의 설계철학이나 개발철학이 다른 것도 한 몫하지 않나 싶습니다. 프로그래밍이라는 같은 분야 안에 속해있지만 언어 철학에 따라 그 위에서 개발되는 프레임워크나 프로그램들도 구현 방향이 상이하니까요.
닷넷 파다보면 그런 느낌이 들기는 해요, 오래 운영된 온라인게임같다고 해야하나
기존시스템 다알고있는 고인물기준으로 컨텐츠가 계속 확장되니까 새로 입문하기 힘들만한게, 구글링 잘못해서 레거시에 표류해버리거나, 일단 모르는건 다 넘기고 운좋게 최신문서로 점핑해도 간결하게 싸그리 추상화된 결과물을 보고 정작 그래서 뭐가 어떻게 굴러가는건지 여전히 이해할수 없거나…
제가 후자에 속하는편인데, 뭐 그래도 일단 믿고 쓰니까 암튼 잘 굴러가고있습니다.