저는 프로그래밍 언어중에 c#이 가장 어렵네요.

학부때는 C++을 주로 사용해왔고 영상처리를 주로 공부했습니다.

웹개발한다고 Java Spring, TypeScript와 React도 해보고

연구실 인턴하느라 Python도 써보다가 이번에 입사하게된 회사에서

C#과 Python을 사용해서 처음 c#을 공부해보는데 왜 C 계열 언어인지 모를 정도로

전혀 다른 언어인데, 왜 C가 붙었는지 모르겠네요 ㅋㅋㅋ

무엇보다 왜 이렇게 문법이 어려운건지… 배웠던 언어중에 기본에서 막히는 언어는 처음이네요.

언어가 어려운 것과 별개로 언어 자체는 굉장히 아름답고 매력있는 언어 같습니다.

파이썬, 코틀린, 자바스크립트에서 지원하는 문법도 많이 지원해주고 무엇보다 Linq가… ㄷㄷ

엄청난 것 같습니다. 인지도가 낮은 이유를 잘 모르겠네요?

6개의 좋아요

듣기 좋은 표현이네요!

Python과 같은 언어가 전 세계 여러 분야에서 곳곳에 활용되고, 표면적으로도 쉽게 접할 수 있는 것에 C#은 상대적으로 인지도가 낮아 보일 수 있을 것 같습니다. 하지만 대표적으로 거론되는 언어 중 하나임에는 틀림 없어 보입니다. 실제로도 수십년간 사라지지 않고 꾸준히 성장하고 있는 몇 안되는 언어이기도 하고요. 그리고 .NET Core 오픈소스화를 통해 더욱 발전 속도도 트렌디하고 빠르게 변화하고 있죠, 말씀해주신 것처럼 아름답고 매력 있는 언어이기 때문에 앞으로도 더 경쟁력 있게 성장하고 사랑 받는 언어로 거듭날 거라 생각합니다.

1개의 좋아요

맞습니다. 언어가 굉장히 트렌디 한 것 같아요.

2개의 좋아요

C 계열의 익숙한 문법이라는 파란약과 async/await 이라는 빨간 약이 동시에 존재하는…

2개의 좋아요

개인적으로 c cpp cs 를 하고 있는 입장에서
어느정도는 공감 합니다.

cpp 는 c의 슈퍼셋이죠.

기존 c 코드 그대로 (조금은 안되는 거도 있긴 한데)
cpp 컴파일러에서 빌드가 되죠.

그리고 어찌보면 결과물도 비슷 합니다. 둘다 네이티브로 나오죠.

닷넷의 경우 완전 새로운 프레임워크가 도입 되고
그러다 보니 개념이 완전 다른 녀석들이 들어 오게 됩니다.
벨류타입 레퍼런스타입, 박싱 언박싱 등등 있긴 하죠.

그런데 요정도만 익혀 주시면 나머지는 진짜 기존 c계열을 상속해서 좀 더 쉽게 문법화 했다는걸 느낄수 있습니다.

cpp 에서 함수포인터가
이벤트와 델리게이트화 되고

cpp의 가상함수테이블은 그대로 적용 되어 있습니다.

c#에서 프로퍼티의 경우는 실제 il코드를 보면 cpp 의 getter setter에 를 편하게 쓸수 있게 해준 겁니다.

인덱서의 경우 cpp 의 연산자 오버로딩과 같다고 보시면 됩니다.

요즘 닷넷에서 화끈하게 밀고 있는 switch의 경우 예전c꺼 써도 되는데 더 편하게 지원해줘 정도구여

마지막 linq. 이건 진짜 편의 기능이고요. 안써도 코딩하는데 아무 문제 없고, 잘 배우면 500줄 짜리 코드가 10줄이 되는 기적을 볼 수 있습니다.

정리하면 프레임워크에 대한 학습은 필요 하나
문법은 기존 cpp에서 약간만 하면 배울수 있다.
거기에 좀만 공부하면 코드를 거의 압축파일 수준으로 줄일수 있다

로 설명 드릴게여

4개의 좋아요

@code c/cpp 지식 없이 C#으로 시작한 개발자 입장에서, 글 흥미롭게 잘 읽었습니다!

2개의 좋아요

전 rust 함께 써야해서 하는데 rust가 젤 어려운거 같아요.ㅜ.ㅜ

5개의 좋아요

실제로 Diffcult 한 언어 맞습니다. 특히나 wpf는 개념 이해 안된다고 원성이 많았죠 처음에 나왔을때
winform 차기 버전 ? 했는데 완전 천지개벽 수준
의 변화라 이제 분리해서 생각하죠

3개의 좋아요

저도 러스트 한표 입니다.
메모리 관리라든가 여러부분에서 기존 언어들하고 근본적으로 다르더라고요.
검토를 좀 하다가 일단은 접었습니다.
C++이 발전하면서 메모리 관리 부분을 충분하고도 넘칠 정도로 안정적으로 쓸 수 있게 돼서요.
다만… C++의 발전에서 문제가 되는 건 대부분을 STL에서 커버를 하는 방식이다 보니
러닝 커브가 급격하게 치솟고 있죠.
거기다 어떠한 기능을 쓸때 타이핑양이 늘어나는 부수적인 부작용도 발생하고 있고요.

예를 들면 이건 이전부터 이긴 한데. 타입 캐스팅을 정규식으로 하면 복잡하고 길어집니다.
타입캐스팅이나 여러부분을 다른언어처럼 컴파일러에서 커버해주면 좋을탠데 말이죠.

4개의 좋아요

개인적 상대적으로 난이도의 차이는 있겠지만 기본에서 막히는 건 기초 공부를 제대로 안 한 것이겠죠
일반적으로 난이도는 rust > c++로 통하고 있으며 C++ 깊이 들어가면 상당히 어려운 언어인데 대부분 c++로 c언어 처럼 코딩하고 하던 방식 대로만 해서 별 어려움은 못 느끼죠
C# 국내에선 입지가 좁지만 인지도가 낮지는 않을텐데요

3개의 좋아요

cpp의 탈을 쓴 c라고 하죠 ㅎㅎ

4개의 좋아요

저희 팀장이랑 제 옆자리 팀원이 그러고 있죠.
new [] 로 생성한 걸 delete로 삭제하는 소스가 있어서 실수했나보다 하면서
delete []로 바꿨더니 이게 뭐냐고 하더군요. 그래서 알려줬더니 팀장은 자기는 그래서 new delete보다
malloc/free를 좋아한다고 하고 옆자리 팀원은 delete [] 안해도 되는 이유를 검색을 해서 찾아오더군요.

사실 new [] 생성한 pointer 변수를 ++/–로 메모리 위치 이동하고 delete하면 삭제가 제대로 안됩니다.
만… 뭐 대부분은 저렇게 안쓰기는 하니 엔간해서 문제는 안생기겠지만
그렇다고 경력이 20년이 넘어가는 사람들이 할 소리는 아니죠.

아~ 물론 vector, deque외의 stl을 쓰는걸 본적도 없습니다.

4개의 좋아요

저는 그게 자바였습니다. 아주 레거시한 c++(MFC)만 하다가 자바스프링부트 프로젝트를 유지보수할 일이 있었는데, 뭐가 뭔지 하나도 모르겠더라구여.
c#도 사실 이제 시작했는데 역시 어려움을 겪게될지 모르겠네요ㅜㅜ 열심히 해야할거 같아요

3개의 좋아요

c#을 처음 접한게 2007년 이었는데요. 그때는 (있었는데 몰랐었을수도 있지만)
linq, 람다 표현식, 제네릭, => 축약표현 등이 없었습니다.
처음 접했을땐 최적화된 자바 or vm에서 동작하는 최적화된 c++ 같다라는 느낌이었습니다.
델러게이트에 코드 넣을때도 일일이 함수코드 다 뚜드리던 시절이었네요.
그때는 문법적으로 어렵다는 느낌은 별로 없었는데 계속 발전해오면서 편리해진 부분도 있지만 복잡한 linq 식이나 제네릭 들어간 코드를 보면 초보자에게 좀 더 어려워진거 같기는합니다.
그만큼 표현이 간결하면서 내용은 풍부해져서 더 좋아진것도 맞는거같고요.

3개의 좋아요