'D programming language'에 해당되는 글 8

  1. 2010/01/05 My Recent Tweets 20100104
  2. 2009/12/18 차세대 게임개발 언어로 D에 주목하는 이유 - 마지막
  3. 2009/11/06 My Recent Tweets 20091104
  4. 2009/10/20 차세대 게임개발 언어로 D에 주목하는 이유 - 2 (6)
  5. 2009/09/19 차세대 게임개발 언어로 D에 주목하는 이유 - 1 (10)
  6. 2009/09/10 My Recent Tweets 20090909
  7. 2009/05/15 Iterators Must Go! (in favor of ranges) (2)
  8. 2008/01/09 The D Programming Language (1)

My Recent Tweets 20100104


프로그래밍
programming

  • RT KageKirin: Visual Studio - Lua Language Support http://tinyurl.com/ydwth7n #programming #
    • 간단한 문법 체크를 지원하는 비주얼 스튜디오 루아 애드인
  • RT WalterBright: #d_lang D programming language dmd 1.055 and 2.039 updates http://bit.ly/8lR5Es #programming #
    • 최신 D 컴파일러 릴리즈
  • RT sigfpe: Working on another monad tutorial: http://bit.ly/4Od0H3 #programming #
    • 모나드에 대한 튜토리얼 문서. 하지만 여전히 감이 안오는...;
  • code2009: http://su.pr/3wF1s1 #programming #
    • 트위터를 통해 이루어지는 간단한 프로그래밍 언어 통계
  • RT KnowFree: Knowfree.net update: Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd… http://bit.ly/8Rsofy #programming #
    • Art of Computer Programming 1권 공짜 이북
  • Functional Programming Doesn't Work (and what to do about it) http://su.pr/1jdoEr http://su.pr/2fcet7 #programming #
    • 순수 함수형 프로그래밍만으로는 한계가 있다는 견해
  • RT mfeathers: Barbara Liskov's ACM Turing Award Lecture http://bit.ly/7pInEd (from bob_koss) #programming #
  • Announcement: ‘libcpu’ Binary Translator http://su.pr/2YlAY3 #programming #
    • 여러 CPU 아키텍처를 에뮬레이션 하는 오픈소스 라이브러리
  • RT aycangulez: Test Smarter, Not Harder http://bit.ly/6bUe2f #programming #
    • 효율적인 테스팅 전략을 설명
  • RT aycangulez: The Master, The Expert, The Programmer http://bit.ly/7HHFG4 (via taylodl) #programming #
    • 달인, 전문가, 프로그래머에 대한 통찰력 있는 견해
  • RT aycangulez: The Art in Computer Programming http://bit.ly/4WHt1Y #programming #
    • 프로그래밍에서의 예술적 요소
  • The Year In Haskell: http://su.pr/2dO5JZ #programming #
    • 해스켈계의 일년 회고
  • Hg-Git - a plugin 4 Mercurial, adding the ability to push to & pull from a Git server repos from Mercurial: http://su.pr/8811wa #programming #
    • Git 저장소를 Mercurial 도구로 접근할 수 있게 해주는 머큐리얼 플러그인
  • RT pudidic: 영어를 할 줄 아는 모든 소프트웨어 개발자들은 당장 이 사이트의 팟캐스트를 구독하세요. 의무입니다. http://bit.ly/5qWTHa #programming #
  • The Expression Problem: http://su.pr/2togPN #programming #
    • 프로그래밍에서의 확장성과 관련한 유명한 문제
  • "The Next Mainstream Programming Languages: A Game Developer's Perspective" http://su.pr/1Q7Z41 an old one, but interesting #programming #
    • 팀 스위니차세대 주류 프로그래밍 언어에 대한 2006년도 예언
  • The Nice programming language: http://su.pr/2nvX5H #programming #
    • 학계의 최신 연구 결과를 적극 도입했다는 흥미로운 프로그래밍 언어. 이름 좋네요;
  • RT DeliciousHot: CoffeeScript http://is.gd/5ACQS #programming #
    • 자바스크립트로 최종 컴파일되지만 훨씬 간결한 구문을 제공하는 언어
  • RT ch9: C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 13 of 13 http://bit.ly/5YsOKa #programming #
    • 에릭 마이어의 Channel9 함수형 언어 강좌가 드디어 끝났습니다. 저도 연휴 기간 동안 다 보았습니다! 
  • RT ascarb: .Net friendly OpenCL, http://bit.ly/4NjfnI #programming #
    • 닷넷 플랫폼용 OpenCL
  • RT alvinashcraft: Run Code Online [40+ Languages] http://ff.im/-dkhbY #programming #
    • 40개 이상의 언어를 지원하는 온라인 코드 실행기
  • RT tatsuma_mu: Why A + B != A - (-B) http://bit.ly/6myoPP #programming #
    • 64비트 환경에서는 A + B가 A - (-B)와 다를 수 있습니다!
  • RT aycangulez: Why programmers are not paid in proportion to their productivity http://bit.ly/4Muwsn #programming #
    • 왜 프로그래머는 각자의 생산성에 비례하여 연봉을 받지 못하는가에 관한 통찰력 있는 글
  • RT DeliciousHot: Invent with Python http://is.gd/5ynYj #programming #
    • "파이썬으로 컴퓨터 게임 만들기" 2판

방법론methodology

그래픽스graphics
  • RT aras_p: http://bit.ly/7v9LcI - Reality vs. Game Industry vs. Demoscene (via pouet.net) #graphics #
    • 실제와 게임, 데모신에서의 비주얼 차이를 센스있게 보여줍니다.
  • RT aras_p: Hmm... MojoShader seems like a solution to some of our problems! http://icculus.org/mojoshader/ #graphics #
    • D3D 셰이더를 OGL 셰이더로 변환해주는 도구
  • RT ChristerEricson: meshula Note that Saboteur PS3 seemingly doesn't seem to be MLAA (but somewhat similar) http://bit.ly/6HiRxA #graphics #
    • 안티알리아싱 기법에 관한 글
  • Historically Significant Papers for Computer Graphics: http://su.pr/2QSFNv #graphics #
    • 역사적으로 중요한 컴퓨터 그래픽스 논문들
  • glslDevil is a tool for debugging the OpenGL shader pipeline. http://su.pr/9SuAFK #graphics #
    • OpenGL GLSL 디버깅 도구
  • RT repi: Awesome! RT Reg__: http://bit.ly/6HNqQo photos of real phenomena that resemble computer graphics artifacts :) #graphics #
    • 그래픽 버그 같은 실제 장면 사진들. ㅎㅎ;
  • RT Wolfire: Close-up and distant terrain lighting http://bit.ly/6vwtfz #graphics #
    • 지형 조명 계산에 관한 글 (인디 개발자의 블로그인듯한데 유용한 정보가 많습니다.)


게임개발gamedev

  • recastnavigation - Navigation-mesh Construction Toolset for Games: http://su.pr/2vb6Bw #gamedev #
    • 게임을 위한 네비게이션 메쉬 오픈소스 툴셋
  • RT repi: OnLive 50 min talk/demo at Columbia University: http://bit.ly/5pAthx I'm a bit less skeptical, could fit a certain low... #gamedev #
    • 논란이 되었든 OnLive의 데모가 살짝 공개되었다는군요.
  • RT onechu: 2010년과 함께 게임 개발자 메타 싸이트 하나 공개합니다. 블로그와 트위터로 구분해두었습니다. http://kgdn.tk 많은 홍보 부탁 드립니다. (이제 막 도메인 세팅 되서 가입은 저 밖에 안 되어있지만;;) #gamedev #
  • RT tatsuma_mu: Gamasutra's Best Of 2009 http://bit.ly/7aVJDA #gamedev #
    • 가마수트라 선정 2009 베스트
  • RT tatsuma_mu: Epic Demonstrates Unreal Engine 3 for the iPod Touch/iPhone 3GS http://bit.ly/7God0j #gamedev #
    • 에픽게임즈가 아이폰용 언리얼엔진도 준비 중이라는군요. ㅎㄷㄷ

기타etc
  • RT ItStartsWithUs: RT mistygirlph: Stunning Black and White Photos (With A Touch Of Color) http://ow.ly/SrFy #
  • RT DeliciousHot: 25 Best Sites for Free Educational Videos http://is.gd/5KVW6 #
  • RT ChrisDeLeon: We are all Don Quixote. Civilization is frequently a matter of finding others that tilt the same windmills as you. #
  • RT istoriae: 블리자드의 조직 설명에서 가장 인상깊은 직무는 '자료실(archive)를 관리하는 사서(librarian)'였습니다. 블리자드의 모든 기록들을 보관하고, 유지적으로 정리하고, 필요로 하는 사람에게 적시에 제공해주는 일을... #
  • RT johnreuben: 2010!! 5 yrs away from back to the future 2. #
  • RT estima7: 데이빗카는 그가 팔로우하는 사람들을 그를 대신해 웹을 서핑해주는 대리인으로 묘사. 덕분에 직접 웹을 서핑하는 시간이 크게 줄어들었다는 것. 동감. #
  • RT DeliciousHot: Search and sort available domain names - Score Tool http://is.gd/5JdqF #
  • RT Twitter_Tips: How to add text to your Twitter avatar, just by tweeting! http://j.mp/4ADSLe /via askaaronlee Jason_Pollock #
  • RT RatRaceTrap: "Only put off until tomorrow what you are willing to die having left undone." -- Picasso #rq #
  • RT crabbykang: 인터넷서점 알라딘, ActiveX 폐기 선언! http://bit.ly/5rWCnO 이제부터 알라딘 고고~ #
    • 알리딘 쵝오!
  • RT aycangulez: Clean code is like a powerful scene from a foreign movie. You don't need subtitles to understand what's going on. #
  • RT eHub: stemming http://bit.ly/4stPJv #
    • 여성 공학도,과학자에게 유용할 사이트
  • RT SpreeTree: Excellent reply from the author of "The Magic of Unity Builds" to my post "The Evils of Unity Builds" http://bit.ly/6KY1EP #
    • 빌드 속도를 높이기 위한 편법인 유니티 빌드에 관한 의견
  • RT gamearchitect: Free Computer Science Ebooks and Resources: http://bit.ly/7lCUWU #
  • RT ajlopez: cwbowron Problems with TDD http://bit.ly/8BcCWl - I would agree with "TDD freezes the API too early" for OO langs only. #
    • TDD의 test-first 전략이 장점보다 단점이 크다는 견해
  • RT aycangulez: Applied Philosophy, a.k.a. "Hacking" http://bit.ly/7VaXr4 (via fad) #
    • 생활철학으로서의 해킹
  • RT webappstorm: Task Management on the Web in 2010 - http://bit.ly/7BIWPQ #
  • RT birdkr: 프로젝트에서 유닛테스트 프레임워크로 UnitTest++만 쓰고 있었는데 Mock 프레임워크인 GoogleMock을 붙였습니다. 이걸 왜 여태까지 안썼는지 후회됩니다. 추천! http://bit.ly/uiGWI #
  • RT beatshon: Active X를 안깔아도 최대 6기가까지 메일 전송이 가능한 서비스 “piczza” 정말 쓸만함. http://bit.ly/6tRNxH 무료버전은 파일을 3일동안만 내려 받을 수 있지만 잠깐 파일 보내기에는 충분한듯. #
  • RT eHub: Twilitics http://bit.ly/5VMajM #
    • su.pr과 같이 클릭 추적 기능을 가진 url 단축기
  • RT DeliciousHot: 0x1fff: 35 Google open-source projects that you probably don't know http://is.gd/5DrcJ #
    • 35개의 구글 오픈소스 프로젝트들. 유용한 것들이 많습니다.
  • RT xiles: 아이폰용 모바일 사이트 모음 http://m.xiles.net모바일 사이트를 모아놓은 사이트들도 몇 가지 있으니 아이폰에서 인터넷 어디 들어가볼까 싶으면 이곳에서부터 시작해보세요. #
  • RT estima7: 예전에 개발을 시도하다가 내부적으로 중단한 것으로 알았는데... 너무 기쁜 소식! RT MinsikYoon: 맥용 곰플레이어가 곧 출시된다는 소식. 3년전에 비해 맥 환경이 정말 좋아진듯. http://bit.ly/5r1dAt #
  • RT MrSnowLeopard: Enable NTFS Write Support on Snow Leopard | technoNix http://bit.ly/62vpC9 #
  • An impressive mock-up tool! RT go2web20: inPreso - Design, Experience, Present and Discuss Mock-ups: http://bit.ly/6NiliP #
    • 매우 훌륭해보이는 UI 목업 도구
  • RT iwisenet: In Awe Watching:"YouTube - The Known Universe by AMNH", http://bit.ly/4NdJ9Q. Posted via #friendbar #
  • RT morgan3d: Goodbye Adobe Acrobat, hello Skim for PDF markup and LaTeX editing on OS X: http://bit.ly/4nfURx #
  • RT zappos: "Do not go where the path may lead, go instead where there is no path and leave a trail." -Ralph Waldo Emerson #
  • RT DeliciousHot: Installing Etherpad | Pauleira! http://is.gd/5AaJx #
    • 얼마전 구글에 인수되면서 공개로 풀린 협업 편집툴 Etherpad 설치법
  • RT tatsuma_mu: Google Image Swirl http://bit.ly/3UKvY5 #
  • RT petershine: 35 Expressive Examples of Stunning HDR Photography http://bit.ly/7gg8rM #
  • RT morgan3d: Pronunciation guide for mathematics: http://bit.ly/72Dsh9 #
    • 수학도를 위한 발음 가이드
  • RT cjunekim: 올해의 xper 기년회 http://bit.ly/5zUrRm #
  • RT googletoolbar: Download the latest Toolbar for Firefox, which enables sharing with short goo.gl URLs: http://goo.gl/w7B8 #
    • 파폭용 구글 url 단축기 툴바
  • I just started using Droplr, the coolest new app for Mac. Check it out at http://droplr.com #
  • RT TimBrownson: Are any phobias or intense fears holding you back? Then get rid of them like this http://bit.ly/5iqXBt #

 


* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License

'Tweets' 카테고리의 다른 글

My Recent Tweets 20100208  (0) 2010/02/10
My Recent Tweets 20100118  (0) 2010/01/19
My Recent Tweets 20100104  (0) 2010/01/05
My Recent Tweets 20091207  (2) 2009/12/10
My Recent Tweets 20091120  (0) 2009/11/24
My Recent Tweets 20091104  (0) 2009/11/06
Trackback 0 Comment 0

차세대 게임개발 언어로 D에 주목하는 이유 - 마지막

2009/09/19 - [Game Development] - 차세대 게임개발 언어로 D에 주목하는 이유 - 1
2009/10/20 - [Game Development] - 차세대 게임개발 언어로 D에 주목하는 이유 - 2

~ The Sunny Side ~
~ The Sunny Side ~ by ViaMoi 저작자 표시비영리변경 금지

드디어 마지막입니다. 마지막인 만큼 강력한 놈들이 많이 나옵니다. 그 사이 시스템 프로그래밍 언어라는 같은 분야를 노리는 Go라는 강력한 경쟁자가 나타났습니다만... 여전히 D 언어만의 장점이 있습니다.


병렬 프로그래밍concurrent programming

제가 이전 글 2009/06/03 - [Game Development] - Double-checked locking 이디엄의 함정 에서 설명한 것처럼 아래와 같은 double checked lockingdata race라는 문제가 있습니다. 메모리 배리어가 필요하지만 사용도 까다롭고 포터블하게 제공하기도 어렵죠. 그래서 C++0x에서 이를 위한 별도의 라이브리러 함수 std::call_once()를 제공하는 것이죠. 이렇듯 병렬 프로그래밍에서의 race 문제는 저수준에서 접근하기에는 문제가 너무 많습니다. 그래서 언어 차원에서의 지원이 중요한 것이죠.

D에서는 모든 변수가 기본으로 thread local 입니다. 여러 스레드 간 공유를 위해서는 변수 선언 시 따로 shared로 명시해주어야 합니다. 공유 가능하나 불변하는 값을 가지는 변수를 위한 immutable이라는 형 수식 키워드도 제공합니다. 이런 접근을 통해서 컴파일러는 shared로 지정된 변수들에 대해서는 읽기/쓰기 재정렬을 방지하고 해당 변수 접근에 대해 자동으로 메모리 배리어을 삽입할 수 있습니다. 위 DCL 문제는 다음과 같이 하면 해결되는 것이죠. (아래 코드에서는  scope(exit) 라는 D 언어의 RAII 지원도 확인하실 수 있습니다.)


또한 함수형 언어의 기반인 순수 함수도 지원합니다. 순수 함수란 수학 함수에서와 같이 결과값이 입력인 함수 인자에만 의존하고 부수 효과(side effect, 전역 변수나 멤버 변수를 수정하는 것과 같은 상태의 변화)가 없는 함수를 말합니다. 따라서 같은 인자를 주면 언제나 같은 값을 리턴합니다. 이러한 순수 함수의 장점은 그 본성으로 인해 동기화가 필요 없다는 것입니다. 병렬화가 아주 쉽다는 것이지요. D에서는 다음과 같이 순수 함수를  선언하면 컴파일러 순수 함수로 동작하도록 보장해줍니다. 보장이 안될 경우 컴파일 에러가 난다는 뜻이지요.


이를 이용하면 최근 manycore의 대두와 함께 각광을 받고 있는 함수형 프로그래밍 방식으로 개발하는 것도 가능합니다. 물론 메모리 배리어는 성능 손실을 가져오므로, shared 변수를 남용하면 느려질 수 있습니다. 따라서 shared 변수는 최소화하고, immutable 변수와 순수 함수의 사용을 극대화하는 것이 좋습니다.

어쨌든 결론은 D는 언어 차원에서 병렬성에 대한 해법을 어느 정도 제시해준다는 것입니다. D에서의 병렬 프로그래밍에 관해 더 알고 싶으시면 http://su.pr/1h5Anx의 문서를 참고하세요.


계약 프로그래밍contract programming

D 언어는 계약에 의한 설계(DbC, Design by Contract) 개념을 지원합니다. 단순한 assertion에 차원을 넘어 precondition, postcondition, invariant의 개념에서 스펙을 명시할 수 있습니다. 아래의 제곱근 함수에서 precondition, postcondition, 함수 바디가 각각 in, out, body 키워드를 통해 어떻게 사용되는지 확인하실 수 있습니다.


불변식invariant도 다음과 같이 invariant 키워드를 통해 지정할 수 있습니다. 다음의 Date 클래스에서는 제대로 된 날짜라면 갖춰야 할 조건이 항상 만족되도록 불변식을 지정하고 있습니다.


이러한 계약에 의한 프로그래밍은 상속 개념과도 어울려 동작하도록 되어 있습니다. 더 자세한 사항은 곧 출간 될 The D Programming Language를 참고해주세요.


다중 서브타이핑multiple subtyping

마지막은 개체 지향 프로그래밍 관련 기능입니다.  많은 개체 지향 언어들어 서브타이핑의 방편으로 상속을 제공합니다. 하지만 상속은 워낙 결합도가 강해 의외로 단점이 많습니다. 또한 다중 상속은 구현상의 어려움도 많고 사용상의 주의점도 많아 C++ 이후의 대부분의 언어들이 지원하지 않고 있습니다. 보통 인터페이스 다중 상속만을 지원하지요. D도 마찬가지입니다. 인터페이스의 다중 상속만 가능합니다. 한편, 상속이 가지는 이러안 너무 강한 결합도라는 단점 때문에, 상속 보다는 composition을 통합 기능 결합을 추천하기도 합니다.

상속 이외에도, D 언어는 composition 기반 하에 상속과 같은 편의성을 제공하는 매우 유용한 서브타이핑 기능을 제공합니다. 예를 들어 Shape에서 상속 받아야 하는 구체 클래스가 있는데, DB와의 연동 기능(DBObject 클래스가 제공)도 필요하다고 가정해봅시다. D에서는 다중 상속 없이도 다음과 같이 할 수 있습니다.


alias this가 핵심인데요. 그렇게 해주면 unittest 섹션에서 볼 수 있는 것처럼 DBObject의 기능을 마치 상속 받은 것처럼 활용할 수 있습니다! (this()는 짐작대로 생성자입니다.) 더욱 놀라운 것은 다음과 같이 DBObject를 오버라이드하여 사용할 수도 있다는 것입니다. 이때는 D 언어의 또다른 강력한 기능인 nested class가 활용됩니다. (C++에서의 inner class 처럼 단순히 scope만 제한되는 기능이 아닙니다. 실제 outer 클래스 인스턴스에 멤버에 접근이 가능한 형태로 기능합니다. 더 자세한 설명은 역시 서적을 참고해주세요...;)


개인적으로 정말 깔끔하고 참신한 해법이라 생각합니다.

참고자료

D (programming language) - Wikipedia


이상으로 3회에 걸쳐 D 언어의 장점에 대해 살펴보았습니다. 역시나 본인의 이해력, 필력 부족으로 제가 느꼈든 참신함과 강력함이 제대로 전달되었을지 걱정입니다. 조금이나마 D 언어에 관심이 생기도록 일조했다면 다행이고요, 그런 분들은 필히 서적을 구입하여 일독하시기를 권합니다. ^^

잘 살펴보세요... 오묘합니다;;;

* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.


크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0

My Recent Tweets 20091104

 프로그래밍programming
  • RT repi: Metalscroll VS plugin looks good, need to try it, thx RT jburnett: repi re: rockscroll - see http://bit.ly/RLAWc #programming #
    • 유용했지만 개발이 중단되어 아쉬웠던 VS addin, rockscroll의 향상된 대안이 나왔습니다.
  • Stack Overflow Careers - an online CV service which is a spin-off of Stack Overflow: http://su.pr/2BVM13 #programming #
    • 스택오버플로의 또다른 서비스, 온라인 이력서 서비스가 생겼군요. 해외취업 고려 중이신 프로그래머라면 한번 이용해볼만할듯.
  • RT spolsky: Transcript & slides of amazing talk by jonskeet at London #DevDays http://is.gd/4LQTV #programming #
    • 왜 프로그래머들이 실패하는지 보여주는 귀여운(?) 슬라이드
  • RT programmingjoy: Recursion Using Trampoline Functions #programming http://bit.ly/1KWyoS #
    • 재귀를 구현하는 흥미로운 기법
  • RT programmingjoy: Innovating Cron: Announcing Norc #programming http://bit.ly/1Vwcbs #
    • 유닉스 계열에서의 잡 스케쥴링 도구인 cron을 대체하는 유틸 norc
  • RT programmingjoy: A customizable dynamic code colorizer for programming blogs #programming http://bit.ly/1n0GdP #
    • 또다른 프로그래밍 블로그를 위한 문법구문강조기
  • RT programmingjoy: Functional Programming with a Mainstream Language #programming http://bit.ly/311kB7 #
    • 요즘 대세인 함수형 프로그래밍에 대한 강연. 영어 필수.
  • RT programmingjoy: Power and complexity in a programming language #programming http://bit.ly/1BKNYL #
    • 프로그래밍 언어의 강력함과 복잡도의 상관관계에 관한 짧은 글
  • "Why expression templates matter ?" - A nice introduction to 'expression templates' : http://su.pr/6ydIaU #C++ #programming #
    • C++에서의 expression templates이 무엇인지 궁금하셨던 분들에게 강추
  • RT programmingjoy: Structural Regular Expressions , created by Rob Pike #programming http://bit.ly/1qqWNu #
  • RT programmingjoy: LuaJIT 2 beta released #programming http://bit.ly/PQyUj #
    • 루아Just-in-time 컴파일러의 최신 베타 버전
  • RT programmingjoy: Product Review: Das Keyboard Model "S" #programming http://bit.ly/dJ4vX #
    • 키보드 리뷰
  • RT spolsky: Grady Booch: "You may be surprised to hear that I'm firmly in Joel's camp." http://is.gd/4JxqS #programming #
  • Kiln - a complete source control management sytem based on Mercurial with tightly integrated code review: http://su.pr/3tv2NG #programming #
  • How to Write a Spelling Corrector (Compare implementations in several languages): http://su.pr/2kJ7DN #programming #
    • 스펠교정기에 대한 설명과 그의 다양한 프로그래밍 언어를 이용한 구현들
  • RT programmingjoy: The state of D programming. Is this situation accurate?! #programming http://bit.ly/4G1K4n #
    • D 언어를 5년 동안 사용해온 사람의 D 언어의 현 상황에 대한 다소 우울한 보고
  • RT gamearchitect: 15 Websites To Find Code Snippets With Ease: http://bit.ly/XMPXb #programming #
    • 코드 조각 찾는데 유용한 웹사이트 모음
  • RT programmingjoy: Git and Microsoft Development: A Success Story #programming http://bit.ly/4t0YzZ #
    • Git비주얼스튜디오와 같이 사용하는 것에 관한 간단한 소개글
  • RT programmingjoy: "Frames per second" is just not relevant | Rachels Lab Notes #programming http://bit.ly/3P73nP #gamedev #
    • 게임에서 프레임레이트가 생각만큼 중요하지 않다라는 논지의 글
  • RT mike_acton: Insomniac Games - Blog "How much does framerate matter?" http://bit.ly/RndVz #gamedev #
    • 윗글의 소재가 된 Insomniac Games 개발자의 글
  • RT programmingjoy: A new great programming language #programming http://bit.ly/XgGwT #
    • 리스프의 강력함과 파이썬의 가독성, C의 성능을 조합했다는 새로운 프로그래밍 언어
  • CLI 1.0.0 released - It is a DSL for defining command line interfaces of C++ programs: http://su.pr/2x2WG4 #C++ #programming #
  • RT programmingjoy: Subbuilds: build avoidance done right #programming http://bit.ly/uNKfF #
    • 최적화 분산 빌드 도구. 증분빌드에도 강하다고 하는데, 아쉽게도 VS 미지원
  • RT programmingjoy: Reddit: tells us hidden Features and Dark Corners of STL? #programming http://bit.ly/2nks7l #C++ #
    • STL의 잘 알려지지 않은 활용 기법들
  • RT programmingjoy: On the PIL -- a Platform Independent Language #programming http://bit.ly/3WX3KJ #
    • 플랫폼 독립을 위한 새로운 접근
  • RT programmingjoy: celebrate the 15th anniversary of the original Design Patterns from the Gang of Four #programming http://bit.ly/3kJVYM #
  • Why MIT switched from Scheme to Python: http://su.pr/1kcp2a #programming #
    • MIT가 프로그래밍 강좌 언어를 스킴에서 파이썬으로 바꾼 이유
  • Structure Padding Analysis Tools: http://su.pr/1hQ7Eq #C++ #programming #
    • PDB 파일을 분석해 C++ 구조체 패딩 정보를 알려주는 도구
  • RT programmingjoy: First issue of the left fold, a weekly digest of interesting articles about programming #programming http://bit.ly/Kt3Jd #
    • 주간 프로그래밍 관련 글들을 정리해 알려주는 서비스
  • RT unclebobmartin: RT nashjain: Object Orientation left me vulnerable to adding extra complexity http://bit.ly/29z4OZ #programming #
    • 개체지향에서 오는 쓸데없는 복잡성에 관한 경고
  • RT programmingjoy: Why good programmers are lazy and dumb #programming http://bit.ly/3UeCv8 #
    • 귀차니즘좋은 프로그래머의 자질이 될 수 있는지 설명하는 글
  • RT programmingjoy: Ars reviews Windows 7 #programming http://bit.ly/1b2okc Too long to read... T^T #
  • RT programmingjoy: langref.org: cookbook/programming examples: 12 languages: groovy, PHP, python, erlang, #programming http://bit.ly/3qnO3 #
    • 여러 프로그래밍 문제들에 대한 해법다양한 프로그래밍 언어로 제시해 보여주는 사이트
  • RT codemonkeyism: "Minimalism in Computing" http://bit.ly/4d4oVC #programming #
    • 컴퓨팅에서의 미니멀리즘에 관한 엣지있는 슬라이드
  • RT mike_acton: Thanks for the bug reports everyone! Just fixed the broken links. Insomniac R&D: http://bit.ly/nfJ6v #programming #gamedev #
    • 대인배 게임 회사 Insomniac의 새로운 R&D 사이트
  • RT programmingjoy: Tranform ASCII diagrams into beautiful figures #programming http://bit.ly/ShOHP #
    • 아스키 다이어그램을 이쁜 다이어그램 이미지로 변환해주는 도구

개발방법론methodology

그래픽스graphics
  • RT bjoernknafla: RT aras_p: New blog post: Deferred Cascaded Shadow Maps http://bit.ly/ibbAb #graphics #
  • Radeon HD 5800 Demos: http://su.pr/6OCKzb #graphics #
    • AMD에서 RadeonHD 5800 용 새로운 데모 둘을 발표했군요.
  • NVIDIA OptiX Now Available, but only for Tesla and Quadro: http://su.pr/1t7vYI #graphics #
  • RT nvidiadeveloper: GPU Technology Conference - recordings of sessions and keynotes now available! http://is.gd/4LYwU #graphics #
    • 엔비디아가 주최한 GPU Technology Conference 세션 및 키노트 동영상들이 공개되었습니다.
  • RT repi: RT thekhronosgroup: Full GTC OpenGL presentation available with audio http://tr.im/DsiG #opengl #nvidia #graphics #
    • 바로 위에서 언급한 GTC에서 발표되었던 OpenGL 관련 세션 슬리이드 및 오디오들
  • RT KageKirin: Firtree: A generic image processing framework in Launchpad http://tinyurl.com/yhvvuvb #graphics #
    • 오픈소스 그래프/노드 기반 GPU 가속 이미지 처리 프레임워크

병렬성parallelism

기타etc


크리에이티브 커먼즈 라이선스
Creative Commons License

'Tweets' 카테고리의 다른 글

My Recent Tweets 20091207  (2) 2009/12/10
My Recent Tweets 20091120  (0) 2009/11/24
My Recent Tweets 20091104  (0) 2009/11/06
My Recent Tweets 20091021  (0) 2009/10/22
My Recent Tweets 20090928  (0) 2009/10/01
My Recent Tweets 20090909  (0) 2009/09/10
Trackback 0 Comment 0

차세대 게임개발 언어로 D에 주목하는 이유 - 2

이전글: 차세대 게임개발 언어로 D에 주목하는 이유 - 1



람다

함수형 언어의 대두와 함께 최근 각종 언어에서 람다의 지원이 유행인데요. C++0x에서도 지원 예정입니다. D는 역시 아주 깔끔하고 간소한 문법으로 익명 함수를 지원하고 있습니다.

위에서 다음 줄에 주목해주세요.

기본적으로 다음과 같은 문법으로 정렬 시의 정렬 함수를 지정해 줄 수 있습니다.

!(...) 안의 다음 부분이 실제 람다식입니다.

이와 같이 인자형이나 리턴 타입을 따로 명시해줄 필요도 없습니다. 또한, 전역 변수가 아닌 freqs 변수를 람다 함수 내에서 접근하고 있는데요. 이러한 기능으로 매우 강력한 람다식이 가능해집니다. 보통은 이런 기능을 위해 성능이 희생되는 경우가 많은데, D언어는 "지역 인스턴스화(local instantiation)"이라는 고유의 기능으로 간접 호출 없이 이러한 기능을 제공하고 있습니다.

참고자료
How Nested Functions Work - part1 by Walter Bright
How Nested Functions Work - part2 by Walter Bright


템플릿

C++에서 템플릿은 고급 기법에 속합니다. 대부분의 프로그래머들은 형 매개변수화 정도로만 템플릿을 사용하고, 코드생성엔진으로 템플릿 메타프로그래밍을 활용하는 것은 선택받은(?) 일부를 위한 흑마법의 영역으로 남겨져 있습니다. D는 이러한 템플릿의 강력함을 쉽게 활용할 수 있도록 설계되었습니다.
어떤 언어가 제너릭 프로그래밍을 제대로 지원하는지 평가하는데 일명 STL의 창시자인 Alexander Stepanov가 제시한 "스테파노프의 리트머스 테스트"가 유용합니다. 해당 언어 내에서 다음 세 함수를 구현할 수 있느냐가 바로 그 테스트입니다.
1. n>=2 의 원소들 중에서 최대값을 알려주는 제너릭 함수. 이 함수는 모든 정렬 가능 타입에 적용할 수 있어야 한다.
2. 두 값을 효율적으로(예를 들면, 상수 메모리 소모) 뒤바꾸는(swap) 제너릭 함수
3. 임의의 컬렉션에서 한 아이템을 선형 검색하는 제너릭 함수. 컬렉션은 빌트인 타입일 수도 혹은 언어가 정의한 일련의 프로토콜을 만족하는 사용자정의 타입일 수도 있다.
D로 이러한 것들이 어떻게 가능한지 간단히 결과만 보여드리겠습니다.

1. max 제너릭 함수

함수 정의 중간에 나오는 if가 신기하실 겁니다. 사용자가 크기 비교가 불가능한 타입들을 max 함수의 두 인자로 주었을 때, 깔끔한 에러 메시지를 출력하기 위해 제한을 거는 역할을 합니다. C++0x에 도입될뻔했던 concept의 기능을 어느정도 수행한다 보시면 되겠습니다.
아래와 같이 인자를 세 개 이상 받는 경우도 간단히 처리가능합니다.


2. swap 제너릭 함수


의외로 각 경우에 모두 최적으로 돌아가도록 구현하기 매우 힘든 경우 중 하나입니다. D에서는 위와 같이 구현하면 되는데요, pointsTo 함수를 어떻게 구현하는지는 설명하지 않겠습니다. (궁금하신 분은 책을 구입해주세요. ^^)

3. linearSearch 제너릭 함수


선형검색 제너릭 함수는 위처럼 D가 기본지원하는 range 개념을 이용해 매우 간단하게 구현됩니다.

참고자료
An Interview with A. Stepanov

이번 회는 여기까지입니다. 사실 짧은 내용과 부족한 글솜씨로 D의 강력함과 깔끔함을 충실히 전달하기가 힘들군요; 책을 사보고 싶은 욕구가 생기실 정도로만 동기부여가 되었으면 좋겠습니다. ^^


기타 참고자료
D (programming language) - Wikipedia


* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.


크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 6

차세대 게임개발 언어로 D에 주목하는 이유 - 1


예전 모회사에서 새 게임 프로젝트를 준비할 때, C++ 대신 D 언어를 심각하게 고려한 적이 있습니다. 3년도 더 된 이야기입니다만... 결국 정식 디버거도 없는 열악한 개발 환경 등을 고려할 때 무리다 판단했었습니다.

그 사이 D도 더디지만 발전하여 D 2.0 스펙이 나왔더군요. 그리고 도 출간 예정입니다. 그것도 C++ 구루의 한명인 Andrei Alexandrescu에 의해서 말입니다. 아직 몇개월이 더 지나야 책이 최종 출간될 것 같습니다만... 저는 출간 전 작성 중인 책을 미리 구입해 볼 수 있는 서비스를 통해 미완성본을 읽어보았습니다.

역시 그였습니다. D 1.0에서도 C++의 가려운 점을 많이 긁어주고 있다 생각했었는데, 그의 합류로 탄생한 D 2.0은 한층 더 발전한 느낌입니다. C++도 차기표준 C++0x로 많은 개선이 예정되어 있으나 그에 견주어도 여전히 매력적입니다.

그래서 차세대 게임개발 언어로서의 D의 강점을 앞으로 몇회에 걸쳐 다뤄볼까합니다. 자, 바로 시작해보죠.
  1. C++, Objective-C와 마찬가지로 C와의 하위호환성을 유지합니다.
    • 이를 통해 게임개발에 필수적인 DirectX, OpenGL 등과 운영체제 API의 활용이 가능합니다.
    • 그 밖에도 많은 공개/상용 C 라이브러리들을 D 언어와 조합하여 쓸 수 있습니다.
    • 마지막 한 방울의 성능까지 짜내야할 부분에서 저수준으로 접근하는 것이 가능합니다.
  2. 언어 차원의 단위테스트/연관배열(일명, 사전)/배열쪼개기 지원

    • Type-generic한 이진검색 구현의 예입니다.
    • 8,9줄에서 파이썬에서와 유사한 배열쪼개기(array slicing) 기능을 확인하실 수 있습니다.
    • C++0x에서와 같은 auto를 통한 타입 유추도 확인하실 수 있죠.
    • unittest 키워드로 아주 간편하게 단위테스트를 작성할 수 있습니다. 이러한 단위테스트들은 컴파일 시 -unittest 인자를 주면 main 진입 전에 자동으로 수행됩니다.
벌써 관심이 가지 않으세요!? 맛보기인 이번 회는 이상으로 마무리하겠습니다. 다음 회에 더욱 매력적인 D의 특성들로 찾아뵙겠습니다. ^^

참고자료

* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.  


크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 10

My Recent Tweets 20090909

이번에는 대분류를 좀 더 세분화해보았습니다. ^^

Freedom
Freedom by che colore ha il buio, stanotte 저작자 표시비영리변경 금지

씨뿔뿔C++

  • CppDepend - NDepend for C++ http://su.pr/7mH3lp #programming #
    • NDepend의 C++ 버전으로 강력한 소스코드 정적분석 도구입니다. 상용입니다만, 한번 써볼 가치가 있어보입니다.
  • Want Speed? Pass by Value: http://su.pr/9gxO1q #C++ #programming #
    • 덩치 큰 개체는 const 참조로 넘겨야 한다는 통념이 더이상 통하지 않음을 보여줍니다.
  • Another great C++ blog: http://su.pr/1quwf7 #programming #
    • 이제 시작 단계임에도 위 글을 비롯하여 유용한 글들이 많은 C++ 블로그
  • RT programmingjoy: bithacks.h - bit hack macros #programming http://bit.ly/W1GBy #
    • 비트 조작 매크로 도구 모음 헤더
  • Interesting Rant on C++'s operator new: http://su.pr/2e30QP #programming #
    • C++의 new 연산자의 단점에 대한 상세한 고찰
  • When is a zero-length array okay? http://su.pr/1MXZyN #C++ #programming #
    • "new T[0]"가 오류가 아닌 이유에 대한 Herb Sutter의 설명
  • C++ introspection library and portable industrial graphical components for GPL and commercial use: http://su.pr/2p7Z9J #programming #
    • 유용해보이는 C++ 리플렉션 공개 라이브러리

Zakim Spires
Zakim Spires by ManicMaurice 저작자 표시비영리변경 금지

병행Concurrency

Pac-Man gets all the girls
Pac-Man gets all the girls by Crashworks 저작자 표시비영리

게임개발GameDev
  • RT SnappyTouch: My data-oriented design article (or why OO sucks for high-perf games) is online http://bit.ly/2vGVWd #programming #
    • 고성능 게임을 위해선 개체지향이 아닌 데이터지향 설계가 필요하다는 GDMag Inner Product 칼럼니스트 Noel의 글
  • RT truwater: 최고의 UI 디자인 툴 - 발사믹모컵 http://bit.ly/rnCjF 메일만 잘 보내면 공짜로 준다는... #
    • 게임개발 시에 UI를 시뮬레이션해봐야 할 때가 많은데, 그 때 유용하게 쓸 수 있을듯.
  • An insightful programmer from Insomniac games mike_acton #ff #followingfriday #
    • Insomniac Games의 프로그래머 Mike Acton. 프로그래머에게 유용한 정보를  많이 올리는 트위터

Explode of rainbow wold.(This is my wold)
Explode of rainbow wold.(This is my wold) by Matthew Fang 저작자 표시비영리변경 금지

프로그래밍Programming

santas - from the Animals' Merry Christmas book
santas - from the Animals' Merry Christmas book by pipnstuff 저작자 표시비영리변경 금지

그래픽스Graphics

one sixty one: This is Today
one sixty one: This is Today by Anna Gay 저작자 표시비영리변경 금지

기타Etc.
  • RT DeliciousHot: 4 Cool Firefox Tools That Are Not Addons http://is.gd/34HER #
    • 유용한 비애드온 형식의 파이어폭스 유틸
  • RT sioum: RT dalgong: 숫자에 얽힌 재미있는 이야가기 있는 site소개 드립니다. http://www.numbergossip.com/ #
  • RT sioum: KAIST 수리과학과에서 진행하는 "금주의 문제"(KAIST Problem of the Week) 가을학기 첫 문제(2009-14)가 지난 금요일에 나왔습니다. 수요일 정오까지 제출마감입니다. http://bit.ly/13Cxd1 #
    • 이런게 있었네요. 수학 난제에 흥미가 있는 분들에게 추천
  • RT gamearchitect: Scott Hanselman's 2009 Ultimate Developer and Power User Tool List For Windows: http://bit.ly/pymI1 #
    • 보석같은 개발 및 비개발 관련 윈도 유틸들을 많이 소개하고 있습니다.
  • RT DeliciousHot: TEDTalks as of 09.02.09 http://is.gd/2TEfI #
    • 영어 공부에도 좋고 영감을 주는 강연도 많은 TEDTalks 링크 모음
  • RT DeliciousHot: Professional Team Management Tips For Creative Folks | How-To | Smashing Magazine http://is.gd/2S7tG #
    • 팀 관리에 관한 유용한 조언
  • RT programmingjoy: Solace - a multilingual support platform inspired by StackOverflow - the BSD license #programming http://bit.ly/3sJCx8 #
  • TweetMyMac - Remote Controls Your Mac via Twitter: http://su.pr/2RXfpQ #
    • 트위터로 맥 원격 제어하기
  • RT programmingjoy: Ars reviews SnowLeopard: LLVM/Clang, Grand Central Dispatch, and OpenCl #programming http://bit.ly/GMaw5 #
    • 맥의 새 운영체제 SnowLeopard에 관한 매우 상세한 리뷰. 기술적으로도 매우 해박하여 읽어볼만합니다.
  • RT programmingjoy: 7 Awesome Free Syntax Highlighters – To Enhance User Readability #programming http://bit.ly/14o5P3 #
    • 블로깅 등에 유용한 일곱가지 구문강조 도구들
  • RT icehit3: t3 64비트 소프트웨어 및 드라이버를 다운받을 수 있는 곳. http://www.start64.com/ >> 64비트 os 사용자라면 필히 방문! #

* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다. 


크리에이티브 커먼즈 라이선스
Creative Commons License

'Tweets' 카테고리의 다른 글

My Recent Tweets 20091021  (0) 2009/10/22
My Recent Tweets 20090928  (0) 2009/10/01
My Recent Tweets 20090909  (0) 2009/09/10
My Recent Tweets 20090826  (0) 2009/08/26
My Recent Tweets 20090812  (0) 2009/08/13
My Recent Tweets 20090806  (0) 2009/08/06
Trackback 0 Comment 0

Iterators Must Go! (in favor of ranges)

부스트 라이브러리 관련 컨퍼런스가 있더군요. BoostCon 이라는 이름으로 얼마전 열렸습니다. 거기서 C++ 관련 대가 중 한명인 Andrei Alexandrescu가 키노트를 발표하였습니다. 제목은 "Iterators Must Go"였습니다.


결론은 말하자면 iterator는 여러가지 단점이 있으니 대신 range라는 개념을 쓰자였습니다. Range의 개념은 사실 한참 전에 나온 것으로 부스트를 비롯하여 여러 라이브러리에 이미 구현되어 있습니다. 안드레이는 여기서 한발 더 나아가 아예 range로 iterator를 대체할 것을 주장합니다. 안드레이의 결론은 다음과 같습니다.
  • Range가 더 잘 추상화된 개념이다
  • 안정성도 더 높다
  • 쉽게 조합하여 확장할 수 있다
  • 단순히 기존 iterator 버전의 STL 알고리즘들을 range로 포팅하는 수준을 넘어 한단계 업그레이드시킬 수 있다
대가답게 슬라이드 자료도 명료하고 흥미진진합니다. C++에 관심이 많은 분들은 꼭 읽어보십시오. 이곳에도 range 관련 글이 있으니 더불어 읽으시면 좋을듯.

여하튼 C++0x를 중심으로 오랜 정체 끝에 C++도 많은 변화가 기대되는 시기입니다. ^^

p.s. 이러한 range를 비롯하여 STL 라이브러리 제공하는 언어가 하나 더 있으니 D 언어입니다. 저도 한때 관심을 가지고 공부했었는데... 나름 흥미로웠습니다. 게임 개발용으로도 적절한 언어로 보였거든요. 어쨌든 슬라이드나 안드레이의 홈페이지를 보셨다면 아시겠지만 조만간 그가 저술한 책, "The D Programming Language"가 나옵니다. 주류 언어로 자리잡기에는 여전히 갈길이 멀어보이지만 그래도 기대되는 행보입니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 2

The D Programming Language

2006년도 제가 프로토타입 단계에서 안타깝게 접히게 되는 프로젝트의 PD를 맡은 적이 있었습니다. 그 때 그 간 알게 된 여러가지 것들을 시도해보고자 했었죠...

그 중 C++이 아닌 언어로 게임을 개발해볼까 라는 물음도 있었습니다. 후보로 고려된 언어는 평소 관심있게 지켜보던 D 언어였습니다(C와의 바이너리 하위 호환, 세련된 배열 선언, 쉬운 메모리 관리, 상대적으로 빠른 속도 등 나름의 장점들이 많았죠). 결국은 제대로 된 개발툴이 미비한 언어로 상업 프로그램을 개발할 수는 없다 싶어 포기하였지요...(특히 제대로 된 디버거의 부재가 치명적이었습니다.)

그 뒤로 어느덧 2년 가까이 흘렀는데... 우연히 Modern C++ Design의 저자 Andrei의 블로그에서 그가 D 2.0 작업을 D 언어의 원 창조자와 함께 하고 있으며 올 하반기에 출간될 "The D Programming Language"를 집필 중이라는 사실을 알게 되었습니다.

드디어 D도 주류로 부상하는건가요? ^^; 섣부른 판단이겠지만 어쨌든 기대됩니다.

p.s. Andrei 블로그의 "Modern C++ Design"을 읽는 아이 사진이 걸작입니다;
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 1

top