C# (+.NET 기술들) 좋네요..

freezm7의 이미지

MFC 프로그래밍 하다가,
C# 과 WPF 로 프로그래밍 한지 2달 째 되어갑니다. (그전에 셀프 스터디를 좀 많이 하긴 했어요)

정말 깔끔하게 잘 설계된 C# 언어와,
유기적으로 통합된 BCL + 추가적인 WPF 같은 라이브러리들이 정말 좋네요...

특히 Snoop 라는 프로그램으로 WPF 프로그램 디버깅하니 정말 ㅎㄷㄷ 한 느낌이 ㅋㅋ
MS 가 .NET 하나는 제대로 만들어가고 있는 것 같은 느낌이네요.
MS 빠는 절대 아니고,,, 그냥 소감입니다.

ps. WPF 개발에 참고가 되는 좋은 사이트 좀 알려주세요

ifree의 이미지

몇달 C# 으로 개발하다 포기했습니다.
깔끔한 언어 문법은 좋은데, 프로그래밍의 제약이 너무 심하다는...
프로그래머가 마음대로 무엇이든 할 수 있는 C++ 이 진리인 듯.

winner의 이미지

대학에서 C++로 본격적으로 programming 시작해서 가장 많이 다루며 보낸 시간이 11년이지만 아직도 이해가 안 가는 C++인데...
C#의 어떤 제약이 마음에 안드시나요? 궁금합니다.

ifree의 이미지

아직 C# 의 이해가 부족한 탓일지도,

예를 들어

Force f;
Mass m = 10;
Accel a = 9.8;
Time s;
Length l;
...

a = l / ( s * s);
f = m * a;

이런 걸 하려는데 잘 안돼서.

ifree의 이미지

의도했던 작업은 길이, 질량, 시간 이라는 기본적인 단위를 가지고 힘, 속도, 가속도 등의 타입을 정의한 후,
서로 다른 타입의 연산이 물리적으로 올바른 타입으로 변환되는 것,
예를 들어 질량 타입의 양과 가속도 타입의 양을 곱하면 힘 타입의 양으로 변환되는 것이었습니다.

물론 "또 다른 indirect layer 를 도입하면 프로그래밍에서 안되는 일은 없다" 는 법칙에 따라 C# 에서 구현이 가능하리라고 생각하지만, 제 능력으로는 무리였다는.

C# 을 그만두게 된 직접적인 계기는 오픈지엘을 사용하는 프로그램을 제작할 때, managed code 에서는 원하는 기능을 언어 차원에서 지원해 주지 않으면 전혀 손쓸 방도가 없었다는 것.
당시에는 directX 에서도 64비트 프로그래밍이 불가능했었습니다.

jumarion의 이미지

마샬링을 통해서 비관리 코드 영역을 관리코드로 변경한다던지..
관리 코드영역을 비관리 코드영역으로 변경 가능한 것으로 알고 있습니다만..
===================================
Structure I
Public Name As String = "NSH"
Public Age As Integer = 26
Private Wife As Boolean = TRUE
Private Daughter As Integer = 1
Private Son As Integer = 0
END Sturcture

=================================
Structure I
Public Name As String = "RSH"
Public Age As Integer = 29
Private Wife As Boolean = TRUE
Private Daughter As Integer = 1
Private Son As Integer = 0
Private Unknown_Children As Integer = 2
EN

kkb110의 이미지

음... 이경우는 디자인이 잘못된거같군요.

PhysicalValue 같은 클래스를 하나 만들어서 [값] [타입]을 각각 필드로 가지고 있게 하는게 바람직해보입니다.

왜냐하면 Time, Mass, Accel 같은 형식이 기본이라고 해도, 연산과정에서 Time*Time이나 Time/Accel 같은 형식이 반드시 필요할텐데,
그렇다면 어째뜬 그러한 mixed type도 정의를 해줘야겠죠.
그리고 그럴바엔, 차라리 클래스 하나를 모든 타입조합을 다룰 수 있게 만드는게 낫겠네요.

뭐 정
Force f;
Mass m = 10;
Accel a = 9.8;
Time s;
Length l;

이런식으로 정의해서 쓰고싶으면, 모든 타입이 특정 추상클래스/인터페이스를 상속하고, 연산자 오버로딩을 그 추상클래스/인터페이스에 대해서 해주면 되긴 하겠습니다만,
역시나 어째뜬 연산과정에서 mixed type도 필요하게됨으로, 굳이 그렇게 하는건 낭비같아보이네요.

+
//예를 들어 질량 타입의 양과 가속도 타입의 양을 곱하면 힘 타입의 양으로 변환되는 것이었습니다.
이런경우는 mixed type에서 type field가 특정 조건을 만족시킬때 특정한 클래스를 초기화시켜서 반환해주면 될거같군요, 그 함수의 반환형식은 모두가 공유하는 인터페이스/추상클래스로.

pebiman의 이미지

좋긴 좋다만, 웬지 개발자로 하여금 할당되어 버린 메모리에 대한 강박관념이

생기게 하더군요. 해지를 시켜줘야 직성이 풀리는데..쩝..

웬지 어디서 줄줄 메모리가 셀거 같다는 강박관념이...

쓰레기는 쓰레기통에...

jw8704의 이미지

혹시 그러시다면
java 나 php 로 코딩하실때도 같은 그런 뭔가 찝찝함? 그런걸 느끼시나요?
저는 java 나 php 로 할때 그런 기분을 느끼는데;;
저만 그럴거라고 생각하지는않았지만..
이런글을 보니 한번 여쭤보고싶네요..;;
가끔 제가 java나 php 를 잘못이해하고있어서 뭔가 혼란스러운가? 싶었거든요..
할당한건 해지해줘야하는데..하는 그런 강박관념..;;

ifree의 이미지

진짜 강박관념이네요.
알아서 Garbage Collecting 을 잘 해주겠지만,
객체가 어디서 태어나서 어떻게 어떻게 사라지는지,
인수는 레퍼런스로 전달되는 지, 복사되서 이용하고 사라지는 지 알 수 없는 채로 코딩하는 게 괴로웠습니다.

vacancy의 이미지


C++은 언어 자체가 너무 복잡해서
남의 코드 읽으려면 머리가 터질것같고 ;;
( 작성할때는 차라리 낫습니다만 ; )
전 제 코딩보단 JVM이나 CLR이 더 미덥던데 ;;
( 어딘가에서 delete/free 안해줬으면 어쩌지-_-하는 )

윗분들은 대단하시네요. +_+

klyx의 이미지

메모리 누수가 걱정되어서 C++을 안쓰고 자바를 쓴다는건,
Garbage Collector에 의한 오버해드는 감수하겠다는 것이므로,
속도가 좀 느려지더라도 C++에서도 그냥 스마트 포인터 쓰시면 될문제 같습니다...

shyblue의 이미지

전.. 그냥 MFC가 문제인것 같습니다.
VCL과 비교해보면 알수있습니다.

時日也放聲大哭

時日也放聲大哭

magingax의 이미지

C# 깔끔하고 좋은 언어이긴한데..
그넘의 CLR 이 맘에 안듦니다..느려터져서..역시 VM은 안되..
WPF 잠깐본거지만..딱 게임 만들기 좋겠더군요..거기서 끝..

LISP 사용자모임
http://cafe.naver.com/lisper

LISP 사용자모임
http://cafe.naver.com/lisper
방송기술 개발업체
http://playhouseinc.co.kr