LINQPad를 이용하여 LINQ 편집하기

통합 언어 쿼리라고 불리는 LINQ ('링크'로 발음 합니다. )는 관계형 데이터 모델(RDB)를 객체지향 모델로 매핑하는
(MS의 표현에 따르면) 획기적인 방법을 제공 하는데요..  
이 LINQ 편집을 위한 좋은 툴이 있어 소개합니다.

LINQPad 사이트
물론, VisualStudio 2008에서도 이 언어를 편집할 수 있습니다만 여기서 소개하는 LINQPad 라는 프로그램은
C# 3.0 in a Nutshell의 저자 Joseph Albahari씨가 개발하였으며 설치가 필요없는 약 3MB 용량에 AutoUpdate를
지원합니다. 이 어플리케이션의 소스는 Standard Copyright Laws의 보호아래있지만 프로그램의 사용에는 별다른
라이센스 제약 없이 자유롭게 이용할 수 있습니다.
자동완성 기능을 지원하는 버전은 약간의 금액을 받는다고 합니다.

이 어플리케이션을 사용하기위해서는 .NetFramework 3.5가 필수요건입니다. 이는 어플리케이션보다는
Linq가 .NetFramwork 3.5 이후부터 사용가능하기 때문에 생긴 제약입니다.
현재 LINQPad를 적용할 수 있는 DBMS로는 SQL Express, SQL 2000, SQL 2005이며 약간의 제약이 있지만
SQL 2008에도 사용할 수 있다고 하네요.

LINQPad는 링크 편집에 도움이 될 뿐만 아니라 C# 3.0 in a Nutshell에 수록된 200여개의 예제 내장해 이를 통해
링크 문법을 익히는데도 큰 도움이 될듯합니다.
뿐만 아니라 아래 스크린샷에 있는 Linq to object, Linq to lambda, Linq to sql 같은 유용한 기능도 제공하고 있습니다.

LINQ 쿼리 결과 화면

LINQ 쿼리 결과 화면


LINQ를 lambda로 변환한 결과 화면

LINQ를 lambda로 변환한 결과 화면


LINQ를 SQL로 변환한 결과 화면

LINQ를 SQL로 변환한 결과 화면


2009/02/11 13:17 2009/02/11 13:17
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 정말 괜찮은 프로그램이군요. 한번 써봐야 겠습니다.

객체 지향론자를 위한 함수 프로그래밍(Functional programming)


어제 포스팅한 Java 개발자 입장에서 바라본 .Net의 Delegate란 글에 daybreaker님께서 주신 댓글을 통하여
함수형 프로그래밍을 다시 한번 생각해볼 기회를 가질 수 있었습니다.

자바스크립트, php등이 단순 '스크립트 언어'라는 오명을 떨쳐내기위해 OO적 개념을 받아들이고있는 것과는
대조적으로 기존 OO언어들이 옜 언어들이 가지고 있던 함수형 프로그래밍 기법을 수용하고 있는게 재미있네요.

자바 개발자가 함수형 프로그래밍의 맛을 느껴볼 만 한 aticle이 있어 링크 걸어 봅니다.
함수 프로그래밍 기술을 사용하여 고급 JavaScript 작성하기
객체 지향론자를 위한 함수 프로그래밍 (IBM Developer Works)
자바를 이용한 함수 프로그래밍(Functional programming)

덧. .Net Framework의 클래스 인스턴스에 메소드 붙이기 기능도 참 당황스러웠는데,
이건 다음 기회에 이야기해 보도록 하겠습니다.

2008/11/19 17:32 2008/11/19 17:32
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 2010/07/28 11:58
    [소프트웨어공학] 객체지향이란? 객체지향 정리 (OO - Object Oriented Summary) Tracked from 월풍도원(月風道院) - Delight on the Simple Life.

Java 개발자 입장에서 바라본 .Net의 Delegate


지난 수년간 JAVA로 개발을 해 오다 작년부터 필요에의해 MS의 .Net Framework와 C#으로 프로젝트를 진행하고 있다.

.Net Framework와 C#이란 언어를 다루면서 처음으로 접한 문화 충격이라면 Property와 Delegate일 거다.
MS진영 개발자라면 당연한것으로 받아들이고 있을 두 개념을 처음 접했을때의 신선함이란!

자바 개발자들을 위해 간략하게 첨언하면
.Net에서 이야기하는 Property란 java 세상에서는 쉽게말해 getter와 setter에 해당하는데 요걸 코드로 표현하는 방법이 재미있다.
(물론 이 property란게 코드의 표현이 재미있다의 수준에서 그치는 건 절대 아니다.)
그리고 .Net에서 이야기하는 Delegate는 메소드 레퍼런스의 OOP적인 Wrapper이다.
이 Delegate란게 Java언어에서도 구현은 할 수 있지만 .Net에서와 같은 우아한 코드로 표현되진 않는다.
( Java는 OOP 개념으로 접근하여 교과서스럽게 코드로 표현하기 때문일거다..
여튼 Java에서는 없는 개념이라고 맘편히 생각해도 되겠다. )

뭐? '메소드 레퍼런스의 OOP적인..'이 어쨌다고? 문자로 표현하니 뭘 이야기하는 건지 금방 못알아듣겠지만 개념이 그렇다.
(C의 표현을 빌자면 '함수의 포인터' 정도로 불릴 수 있겠다.) 나 역시 코드를보고서야 위 말의 의미를 알 수 있었으니까..

풀어 말하자면 클래스 인스턴스의 레퍼런스를 다른 클래스 인스턴스의 메소드에 전달하는것과 마찬가지로
메소드의 레퍼런스를 객체 다루듯이 다른 클래스 인스턴스의 메소드에 전달하는것이 가능하다.
놀랍지 않은가? 메소드를 객체처럼 주고 받을 수 있다니!!

이게 사용하다보면 은근히 편하다. Java 세상에선 Callback을 받기위해 자신의 레퍼런스를 넘겨야 가능할 일을
.Net에서는 Callback 메소드를 싼 클래스를 넘겨 버리면 그만이니...

확실히 최근에 나온 언어일수록 개발의 편의성이 높긴하다. Java에도 조금 유연성을 발휘하여 이런 개념을 도입하면 어떨까?
[상업적으로 가장 성공한 OOP언어가 Java가 아니던가. Java에 Generic 개념이 도입되었을때도 자바스럽지
않다며 유난을 떠는 사람들도 많았으니 .net의 delegate 개념을 언어 차원에서 지원한다면 이건 더이상 java가 아니다며
너스레를 떠는 사람이 넘쳐날지도.. ]

2008/11/18 22:42 2008/11/18 22:42
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 결국 그 delegate가 Python 언어의 람다 함수나 Javascript의 익명 함수와 같은 역할을 하죠. 원래 Lisp 같은 함수형 프로그래밍 언어 쪽에서 나온 개념인데 이게 은근 편리(?)하다보니 요즘은 원래 함수형 언어가 아닌 언어에서도 많이 지원하는 추세인 것 같습니다.

  2. Blog Icon
    서비

    예 daybreaker님께서 주신 말씀대로입니다.
    본질을 이해하고나면 표현하는 방법이 무슨 대수겠습니까만은..
    이게 시작을 대중적인 OOP언어로 한 저같은 사람은 생소한 코드
    표기방법과 쓰임에 당황+놀라움을 동시에 경험하기도 한답니다.. ^^

  3. Blog Icon

    자바보다 먼저나온 Delphi 에도 있는기능인데요....

  4. Blog Icon
    김코더

    기능은 앞으로도 나올언어들거 개발되어 배포되는것도 수두룩합니다
    적용시점이 관건이지..