D는 Java 및 C ++의 확실한 대안입니까? [닫은]


163

는 IS D 언어는 자바와 C ++에 대한 신뢰할 수있는 대안? 믿을만한 대안이 되려면 무엇이 필요할까요? 나는 그것을 배우고 귀찮게해야합니까? 복음을받을 가치가 있습니까?

내가 묻는 주된 이유는 거의 여기에 새로운 C ++ 표준 (c ++ 0x)이 있기 때문에 언어를 이해하는 사람과 관련하여 언어가 돌아 오지 않는 지점을 넘어 섰다는 것이 분명합니다. C / C ++는 결코 죽지 않을 것이지만 어느 시점에서 우리는 계속 나아가 야한다는 것을 알고 있습니다. COBOL조차도 시대를 맞았으며 Java는 여러면에서 C + +를 취소했습니다. 다음은 무엇입니까? D는 청구서를 채우나요?


23
COBOL이 돌아오고 있지만, 당신의 공상을 간질이면 D를 배우십시오. 찻잎을 읽는 것은 다음 큰 언어를 예측할 때 다른 것만큼이나 중요합니다.
Shog9

5
다음 큰 언어가 무엇인지에 대해 걱정하지 않습니다. 더 많은 고용주에게 다음 프로젝트에서 D를 사용하고 싶다고 말하면 언어가 심각하기 때문에 진지하게 받아들이지 않을 것입니다. 아직.
Mark Kegel

22
디지털 화성에 의한 "D vs. C ++"페이지는 C ++에 대해 매우 차별적입니다. 그들은 "C ++에서 그것을 할 수 없다"라고 여러 번, C + +를 할 수 그것을 할
요하네스 SCHAUB을 - litb

23
@Johannes : 언어가 가능하게하는 것이 아니라 언어를 쉽게 만드는 것입니다.
-Brian

9
@Rahul, 동의했지만 그들은 그렇게 말해야합니다. "이것은 C ++에서하기가 쉽지 않습니다"와 같은 것이 아니며 전혀 불가능하지는 않습니다.
Johannes Schaub-litb

답변:


130

실제 소프트웨어 개발을위한 프로그래밍 언어의 성공과 인기를 결정하는 것은 언어 자체의 품질과 부분적으로 만 관련이 있습니다. 순수한 언어 인 D는 C ++과 Java에 비해 많은 장점을 가지고 있습니다. 최소한 순수한 언어로서 신뢰할 수있는 대안이며 다른 모든 것들은 평등합니다.

그러나 소프트웨어 개발에는 언어 (그 자체가 실행하는 플랫폼 수), 디버거 지원, IDE 지원, 표준 라이브러리 품질, 동적 라이브러리 지원, 공통 API에 대한 바인딩, 문서, 개발자 등 언어 그 이상이 있습니다. 커뮤니티, 운동량 및 상업적 지원 등이 있습니다. 이러한 측면에서 D는 Java, C ++ 및 C #보다 절망적으로 뒤떨어집니다. 사실, 나는 파이썬, 펄, PHP, 루비, 심지어는 JavaScript와 같은 소위 "스크립트"언어의 배후에 있다고 주장합니다.

둔감하게도, 단순히 D를 사용하여 대규모의 크로스 플랫폼 애플리케이션을 구축 할 수 없습니다. 미성숙 표준 라이브러리를 사용하면 최신 IDE (Visual Studio 및 Xamarin Studio / MonoDevelop 모두에 대한 플러그인)가 지원되지 않습니다. 동적 / 공유 라이브러리 지원 및 다른 언어에 대한 바인딩이 거의없는 D는 오늘날 옵션이 아닙니다.

D에 대한 것을 좋아한다면 반드시 배우십시오. 이미 Java와 C ++을 알고 있다면 오래 걸리지 않습니다. 저는 전도가 도움이되지 않을 것이라고 생각합니다.이 시점에서 D가 성공하기 위해서는 더 많은 사람들이 조용히 그것을 사용하고 표준 라이브러리 및 IDE 지원과 같은 주요 단점을 해결해야합니다.

마지막으로 C ++의 경우 언어가 너무 복잡하다는 데 동의하지만 수천 개의 회사가 언어의 더 작고 명확하게 정의 된 하위 집합 만 허용함으로써 여러 언어를 건강한 언어 조합의 일부로 C ++을 성공적으로 사용하고 있습니다. 원시 성능과 작은 메모리 사용이 모두 필요할 때 C ++을이기는 것은 여전히 ​​어렵습니다.


8
"현대 IDE에서는 지원되지 않는다"고 말하면서 약간 과장된 것입니다. 식에는 지원이 있습니다. 아직 1 등석은 아니지만 거기에 있고 더 나아지고 있습니다.
BCS

46
증거의 부재는 부재의 증거가 아닙니다.
FeepingCreature 14

29
'핑크 유니콘이있다'와 같은 긍정적 인 주장을한다면, 수용하기에 합당한 증거를 제시해야합니다. 물론 이것은 @FeepingCreature가 언급 한 것처럼 핑크색 유니콘이 없다는 것을 의미하지는 않지만 단순히 설득력이 있거나 유효한 주장이 아니라고 말합니다.
JoshD

8
@Feeping : James Randi가 던지는 것을 좋아하는 귀여운 말이지 만 사실이 아닙니다. 귀하의 테스트에는 테스트에서 무언가 찾아야하지만 그렇지 않다는 증거가 있다는 증거가 있다는 증거가 있습니다.
GManNickG

9
D1과 Tango를 사용하여 대규모 응용 프로그램을 빌드한다고 덧붙이고 싶습니다. 자, 우리는 크로스 플랫폼이 아니라 리눅스만이지만 여전히 그렇습니다. 전체 인프라는 D로 작성되었으며 D로 작성된 큰 DHT 백엔드로 시간당 30k 회 이상의 요청을 처리합니다.
Marenz

109

내 경험을 믹스에 추가하기 만하면됩니다.

약 1 년 전에 저는 3 개월 동안 소규모 게임 프로젝트 (3 개의 코더)를 작업했는데 여기서 D를 기본 언어로 사용했습니다. 우리는 SDL과 우리가 사용하고있는 다른 툴에 대한 바인딩을 이미 가지고 있었기 때문에 부분적으로 실험으로 선택했으며, 대부분 C ++보다 이점이있는 것으로 보입니다.

우리는 그것을 사용하는 것을 좋아했습니다. 빨리 배우고 쓰기가 쉬웠습니다. 그것의 많은 기능들이 귀중한 것으로 판명되었고, C ++로 돌아간 것이 그리워졌습니다.

그러나 다음과 같은 점으로 인해 우리의 삶은 더욱 어려워졌습니다.

  1. 당시 주요 문제였던 좋은 IDE는 없었습니다. 우리는 Scite를 커스터마이징함으로써 우리 자신의 것을 만들었습니다. 이것은 정상적으로 작동했지만 이상적이지 않았습니다.
  2. 당시에는 디버거가 없었습니다. 우리는 WINDBG가 적중에 따라 작동하도록 만들었지 만 신뢰할 수 없었습니다. 디버거없이 코드를 디버깅하면 때때로 삶이 어려워졌습니다.
  3. 당시에 선택할 수있는 2 개의 표준 라이브러리 (Tango 및 Phobos)가있었습니다. 우리는 하나에서 시작하여 다른 것으로 전환했으며 실제로 (Tangobos!) 두 기능의 혼합이 필요했습니다. 이로 인해 두통이 발생하고 일부 코드가 다시 작성되었습니다.
  4. 다른 도구에 바인딩 할 수 없습니다. 결국 우리는 DirectX로 전환해야했습니다. DirectX에 대한 바인딩이 없었으므로 C ++로 직접 작성하여 .dll로 빌드하고 바인딩해야했습니다. 이것은 상당히 불쾌한 일이었고 시간이 걸렸습니다.

전반적으로, 우리는 D를 작성하는 것을 좋아했습니다. 실제로 코드를 작성하는 것은 쉬워졌고 빨리 배울 수있었습니다. 내가 언급 한 문제는이 질문에 대해 받아 들여진 답변을 반영합니다. D에서 어드레싱해야하는 "추가"비트가 핵심입니다.


4
멋진 입력 ... 이제 디버거가 있습니다! :)
bbqchickenrobot

14
DirectX가 왜 문제인지 이해할 수 없습니다. 저는 D 프로그래머가 아니지만 D가 C를 이해할 수 있다고 생각 했습니까? DirectX에 C API가 있습니까?

DirectX를 네이티브 D 인터페이스와 함께 사용하는 것이
비교적 쉬우므로

@Quonux : 당시의 경험은 08 년으로 거슬러 올라갑니다. 그 이후로 많은 일들이 일어났습니다. 더 이상 gory 세부 사항을 기억할 수 없습니다.
xan

1
2019 년 업데이트 : D 프로그래밍 언어가 크게 확장되었습니다. 이제 Dlang과 함께 GDB를 즉시 사용할 수 있습니다. DPP Dlang에 C 헤더를 직접 포함시켜 보겠습니다. Calypso Qt를 포함하여 Dlang의 모든 C ++ 라이브러리를 사용하도록하겠습니다. 몇 가지 버그가 있지만 크게 작동합니다.
noɥʇʎԀʎzɐɹƆ

60

C ++이 막 다른 언어가되고 있다는 데 동의합니다. 지난 17 년 동안 사용한 후에는 그 말을 아프게합니다.

나는 D가 C ++의 올바른 후계자라고 생각합니다. 언어 관점에서 볼 때 "모든 옳은 일을한다"(매 순간 결정에 동의하지 않더라도). 저는 C와 C ++에서 D를 제외하고는 현대 언어의 세계에서 스스로를 유지하면서 실제로 할 수있는 다른 시스템 수준의 언어가 없다고 생각합니다! D는이 역할을 수행 할뿐만 아니라 뛰어납니다. D1.x를 살펴보면 충분히 확신 할 수있을 것입니다. 그러나 D2.0을 살펴보면 실망하게됩니다. 필연적으로 기능적 프로그래밍 패러다임을 연결하는 데 D2.0뿐만 아니라 작동하는 다른 언어가 없다고 생각합니다. 앞으로 몇 년 만에 더 중요해질 것입니다.

성숙뿐만 아니라 대규모 라이브러리를 - - 또는 가시성 - 주류 수용의 부족 이다 과정의 장애물. 그러나 나는 이것이 당신이 그것을 쓸 수 있다고 생각하지 않습니다. 앞으로 몇 년 안에 D 가장 중요한 언어 중 하나로 성장할 것이라고 확신합니다. 현재 진지하게 받아들이고있는 언어는 그 시대가 오면 리드를 잡을 수있는 좋은 위치에있게 될 것입니다.

저는 Andrei Alexandrescu의 참여로 인해 그 차이가 발생할 것이라고 생각합니다. D를 세상에 데려 오는 데있어 중대한 일을 해낸 월터 브라이트는 어떤 식 으로든 낙담하지 않습니다. 그러나 Alexandrescu는 확실히 C ++ 커뮤니티에서 중요하고 매력적이며, 대부분의 잠재적 인 D 스위처가 나올 곳입니다. 또한 그는 함수형 프로그래밍 지원에서 D2.0에 중요한 기여를했습니다.

D가 시스템 수준 언어의 베타 맥스 인 것으로 판명 된 것으로 판명 될 수 있습니다. 그러나 내 돈은 앞으로 2 년 안에 돌아 서고 있습니다.


20
C는 시스템 레벨 프로그래밍에 대한 쇠퇴에 있지 않습니다. Linux, Windows 및 OS X는 모두 C로 개발되었습니다. 마찬가지로 많은 마이크로 컨트롤러 및 마이크로 컨트롤러 용 OS는 C를 사용하여 프로그래밍됩니다.
Kevin

12
나는 D가 "올바른 일을한다"고 생각하지 않는다. 올바른 것은 처음부터 다시 시작하고 더 나은 C ++을 만들려고 시도하지 않는 것입니다. C ++에서 대규모 스위치를 멀리 정당화하려면 더 근본적인 변화가 필요하다고 생각합니다.
jalf

9
Kevin : Windows 및 OS X는 C로 개발되지 않았습니다. 물론 커널 덩어리는 C ++ 및 OS X Obj-C 힙을 사용합니다. Linux가 C가 하나의 진정한 언어 상태로 올라간 곳을 알고있는 유일한 OS이며 다른 것은 사용되지 않습니다.
jalf

16
좋은 예측. 이 게시물 이후 2 년이 지났으며 D는 주류 채택에 더 가깝지 않습니다.
mikerobi

18
@mikeobi LOL! 2 년은 당신이 그 문장을 읽을 때마다 시작됩니다 ;-)
philsquared

20

나는 D가 천재의 작품, 주로 Zortech 컴파일러가 당시 환상적 인 월터 브라이트 (Walter Bright)의 작품이라는 것을 좋아합니다.

대조적으로 Bjarne이 영향을 주더라도 C ++은위원회에 의해 너무 많은 디자인입니다. 너무 많은 애드온 기능과 이상한 새로운 구문. 이 차이는 학습의 용이성과 일상적인 사용의 용이성, 버그 수 감소를 반영합니다.

보다 일관된 언어는 더 나은 생산성과 프로그래머의 즐거움으로 이어집니다. (내 답변에 투표해야한다고 생각합니다)


9
안드레이 알렉산드 레스 쿠 (Andrei Alexandrescu)도 지금 천재하고있다. 그가 D2.0으로 한 일은 IMHO입니다. 적어도 Walter가 D1.x로 한 것만 큼 놀랍습니다. 그 둘 사이에서 (많은 다른 기고자들을 할인하지 않음) D는 고려할 언어가되고 있습니다. 이 공간을
보세요

5
메이크업이 3 개 (또는 그 이상)의 이놈의 좋은 프로그래머 : 바르 토스 Milewski
BCS

7
그래서 C ++은 원래 똑똑한 사람에 의해 만들어졌고, 이제는 똑똑한 사람들로 구성된위원회에 의해 통제되는 반면, D는 원래 정말 똑똑한 사람에 의해 만들어졌으며, 이제는 정말 똑똑한 사람들의 그룹에 의해 통제되고 있습니다. 그래, D가 어떻게 우월한 지 알 겠어. ;) (힌트 : C ++의 추악함은위원회와 아무 관련이 없습니다. 이는 언어의 디자인 목표의 결과입니다. (거의) C의 부분 집합이되어야합니다. D는 그렇지 않습니다. , 그것은 그것이 많은 사마귀를 피할 수 있음을 의미합니다 (반드시 인기를 피하는 비용으로)
jalf

4
@jalf C ++의 "추악함"은위원회가 설계 한 것이 아니라는 것이 맞습니다. 그래도 진화 속도가 느립니다.
philsquared

15

D는 좋은 언어 이고인기 가 있지만 모든 언어와 마찬가지로 다른 도구 일뿐입니다. 어떤 도구를 사용할지는 사람의 종류, 생각하는 방식, 작업 환경, 프로그램에 적용되는 언어의 제한 사항, 가장 중요한 것은 프로그램 자체에 따라 다릅니다. 시간이 있다면 D. 최악의 시나리오를 배우는 것이 좋습니다. 절대 사용하지 않을 것입니다. 아마도 당신은 당신이 가장 좋아하는 부분과 그것이 가장 밝게 빛나는 조건을 배우고 새로운 프로그램을 만들 때 그것을 활용할 것입니다.

내가보고 추천 할 것입니다 D 비교 차트 가 바로 당신을위한 소리 경우 기능은 언어이며, 어떻게 볼 수 있습니다.


10

D 언어는 현대적입니다. 완벽한 언어는 없으며 이것에 대해 의심의 여지가 없습니다. 그러나 언어는 인생을 더 쉽게 만들기 위해 태어났습니다. C ++에 비해 D 언어는 복잡성 측면에서 많은 좋은 기능을 가지고 있습니다. 다른 많은 언어 조합 전문이 관련되어있어 다른 언어에 의해 도입 된 TOP 기능을 사용하여 코더가 더 빠르게 코딩 할 수 있습니다. D 및 기타 언어에 대한 자세한 내용은 다음 참조하십시오.

  • D vs C ++는 호환성이 있으며, 거대한 C ++ 언어가 관여하고 D와의 호환성이 필요합니다. D는 이미 C와 100 % 호환성을 허용하므로 여전히 좋은 승리입니다.

  • D 대 C ++, C ++은 제 의견은 매우 좋은 언어이지만 코딩하기가 어렵고 시간이 오래 걸리며 성공하려면 더 많은 경험이 필요하지만 D는 단순성과 동일한 작업을 수행 할 수 있습니다

  • D 대 C ++, C ++이 확실하지 않지만 D는 "auto"를 사용하여 유형 제한 변수 할당을 허용하지 않습니다. 엄격한 유형을 만들 때 변수 동적을 갖는 것이 좋습니다.

  • D vs C ++, 다른 언어 경험이 있다면 바로 시작할 수 있고, 학습 로드맵이 쉽고, 숙련 된 팀 및 회사 지원으로 설계되었습니다.

  • D 대 C ++, D에서 찾은 아주 좋은 점은 코드 스타일이며, C / C ++와 똑같은 모양과 느낌을줍니다.

D 언어에 대한 더 많은 이유가 있습니다. 언어를 과소 평가할 이유가 없으며 항상 사용자 선택입니다.


7

D로 작성 대규모 상업 응용 프로그램 - 정말 귀하의 요구가 무엇인지에 따라 달라 서버 측에 존재를하고, (일반적으로 탱고 / 망고 사용)이 D에 대한 완벽한 적합하고, 당신은 가능성이 더 많은 요청을 제공 할 수 있습니다 다른 언어 / 플랫폼보다.

프로토콜 및 상호 작용 성 (많은 것이 많음) 측면에서보다 전문화 된 솔루션의 경우 필요한 라이브러리를 찾는 데 더 많은 문제가 있으며 도구가 부족하면 더 많은 영향을 줄 수 있습니다.


1
이러한 상용 앱의 예를 제공 할 수 있습니까?
Alexander Malakhov

1
@ Alexander Malakhov : A ... 음 ... 좋은 질문 .... 상용 앱이 있는지 물어 보니 기쁘다 .... 잘 생각 된 질문 ... 확실히 ..... 감탄한다 ... ... 이것은 우리가 물어봐야 할 질문의 종류입니다 ..... 당신의 지성을 보여줍니다 ..... 음 ... 검색 할 수있게 해주세요 ... D.의 상업 앱 ... 음 ... . 그냥 기다려라 ... 알지만 .. 그냥 기억할 수 없다 ... 확실히있다 ... 잠깐만 .. 아직 검색 중이다 ... 잠깐만!
Simple Fellow

7

D는 꽤 인상적이며 Andrei의 책은 잘 쓰여져 있습니다. 그러나 다른 사람들이 말했듯이 도구와 플랫폼 지원이 필요합니다. GDC는 시간이 지남에 따라 두 가지 모두에 대한 해답이 될 수 있습니다.

당신은 이것을 본 적 있습니까?

"GNU 디버거는 D 언어 지원을 추가합니다": http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

또한 digitalmars 사이트에는 C 및 C ++와의 인터페이스에 대해 설명하는 페이지가 있습니다 (라이브러리 없이는 살 수없는 라이브러리에 해당). C 헤더 파일이 주어지면 D 프로토 타입을 작성하는 데 도움이되는 도구가 있는지 궁금합니다.

개인적으로 난 안 D에서 큰 프로젝트를 수행하는이 시점 푸시에서,하지만 난 것이다 그것과 경험을 얻고 그것을 다른 사람을 도입, 사내 툴 D를 사용합니다.

원래의 질문은 D가 Java 및 C ++의 확실한 대안인지 여부였습니다. D와 Java가 실제로 많은 경쟁을 할 것이라고 생각하지 않습니다. D는 C ++과 경쟁하고 이제는 Go. 다른 질문은 D와 Go의 차이점을 다루지 만 Go는 일반적으로 사용하기 쉽다고 간주됩니다. 따라서 D의 미래는 현재 언덕의 왕인 C ++과 Google의 지원을받는 훨씬 쉬운 대안 인 Go 사이에 얼마나 많은 공간이 있을지에 달려 있다고 생각합니다.

업데이트 : 나는 병행 성에 관한 Andrei 's book의 내가 좋아하는 챕터가 온라인에서 무료로 제공 된다는 것을 발견했다 . 확실히 읽을 가치가 있습니다!

그리고 여기 Go와 D의 상대적인 장점 / 목적 / 접근법에 대한 토론이 있습니다.


나는 녹에 대해 많이 모른다. 1.0이 될 때까지 기다리고 있습니다. 그러나 당신은 옳습니다, 그것은 확실히 볼 가치가 있고이 같은 공간에서 노는 것처럼 보입니다.
AmigoNico

1
내가 D에 대해 싫어하는 유일한 것은 타입 시스템입니다. 늙어 보인다. OO 계층은 방해가됩니다. 나는 그것을 시작점으로 좋아하지 않습니다. 녹이 더 좋습니다.
Germán Diago

4

질문에 대한 답변이있는 것 같습니다. D는 C ++에 비해 더 나은 언어입니다.

실용적인 목적을 위해 D가 더 나은 인프라를 가지고 있는지에 대한 질문은 부차적입니다.

요컨대 그들이 둘 다 지원하지 않는 새로운 언어라면 D는 더 나은 언어이고, 더 나은 언어입니다.


4

언어로서 저는 항상 D가 C ++보다 C #에 더 가깝다고 느꼈습니다. 기능과 라이브러리가 아니라 "느낌"에 있습니다. C ++보다 훨씬 깨끗하고 재미 있습니다. 신뢰할 수있는 대안이되기위한 가장 큰 장애물은 도구, IDE 및 디버거입니다. D가 광범위한 사용 / 채택의 장애물을 극복하면 더 많은 도구와 라이브러리가 나타납니다. (사용 가능한 IDE 및 디버거가 있으면 직접 D로 돌아갑니다.)


mono-d 플러그인은 어떻
user1284631

3

내 애완 동물 프로젝트에 적합합니다. 나는 그것을 고용주의 프로젝트에 사용하지만 내가 이동 한 후 누군가가 소스를 인수하는 것이 얼마나 어려운지 알기 위해 사용했습니다. 적어도 지원되는 플랫폼에서는 피해야 할 기술적 이유가 없습니다. (나무에 노크)


3

한 가지 방법은 해당 지역의 구직을 검색하는 것입니다. 당신이하고 싶은 직업을 찾고 그들이 요구하는 기술을보십시오. 그들이 C ++, Ruby, Oracle 또는 D를 요구한다면, 그것은 당신이 원하는 직업을 얻는 데 도움이되는 기술입니다.


3

잘 설계된 언어처럼 보입니다. C-C ++-Objective C보다 훨씬 낫습니다. IDE 또는 디버거없이 잠시 동안 살 수는 있지만 D 2.0에 대한 문서화 된 라이브러리는 없습니다.

6 개월 후에 다시 확인하겠습니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.