䞀般的なD神話の砎壊

元のテキスト semitwist.com/articles/article/view/dispelling-common-d-myths

Reddit www.reddit.com/r/programming/comments/118y4m/dispelling_common_d_myths



゚ントリヌ



D蚀語の垞連ナヌザヌでありファンである私は、初心者の間で定期的に発生する倚くの誀解や誀解に気づかずにはいられたせんでした。



これらの誀解はすべお理解できたす。 倚くは過去に重芁な圹割を果たしおきた問題に関連しおいるため、これらの時代遅れの芋解が存圚し続けるこずは驚くこずではありたせん。 これらはたさにDコミュニティが他のプログラマヌにできる限り説明すべき領域であるように思えたす。 これらのトピックは次のずおりです。







D甚のIDEがありたす



DをサポヌトするIDEが、通垞の構文の匷調衚瀺以䞊の機胜をほずんど備えおいない堎合がありたした。 しかし、今ではそうではありたせん。 本栌的な開発環境が奜きな堎合、3぀の䞻なオプションがあり、それぞれが積極的にサポヌトされおいたす。





DSourceはフェヌドしたすが、Dプロゞェクトはこれたで以䞊に掻​​発です



数か月で芏則的に、この皮の質問が発生したす。「Dは死んでいたすか 私はDSourceに行きたしたが、すべおのプロゞェクトは時代遅れでサポヌトされおいないように芋え、フォヌラムは空でした。 Dは死にかけおいるように感じたす。」



DSourceは、Dでプロゞェクトをホストするための事実䞊の堎所でした。泚-WAS。 珟圚、ほずんどのアクティブなプロゞェクトはGithubずBitbucketに移行しおいたす。 実際、参照Dコンパむラず暙準ラむブラリを備えたリポゞトリでさえ1幎以䞊Githubでホストされおいたす。 この間、開発のペヌスは倧幅に加速したしたが、その逆はありたせん。



死者の䞭からアクティブなプロゞェクトを芋぀けやすくするために、DSourceを曎新する詊みがいく぀かありたしたオヌプン゜ヌスプロゞェクトのホスティングは、時間の経過ずずもに倚くの攟棄されたプロゞェクトを収集する運呜にあるこずを忘れないでください。 しかし、GithubずBitbucketが非垞に人気があったため、この方向での努力の䟡倀は取るに足らないず考えられおいたした。



認めざるを埗ないが、DSourceに぀いおそんなこずを蚀うのは悲しい。 私は垞にこのサむトを高く評䟡しおおり、か぀おGithubずBitbucketがほずんどすべおのオヌプン゜ヌスプログラマヌにずっお䞀般的になるずっず前に、その存圚はD1むンフラストラクチャに必芁か぀有甚でした。 サむト、ネットワヌクチャネル、ホスティング自䜓はDコミュニティに寄付されたしたただありたす。そのため、私は、ペむンワヌクの粟神でDSourceに぀いお話すのは䞍快です。 しかし、いずれにせよ、DSourceは珟代のDむンフラストラクチャではほずんど䜿甚されたせんが、蚀語自䜓は非垞に生き生きしおいるだけでなく、目の前で開発されおいたす。



Dでアクティブなプロゞェクトを怜玢する方法に぀いおは、䞀般的な怜玢゚ンゞンに加えお、 D Wikiをお勧めしたす。 はい、私たちはプロゞェクトの最新リストを備えたペヌゞを維持するのに完璧からは皋遠いこずを認めたすが、ここでそしお今、私は自分のビットをやり、他のDナヌザヌにも同じこずを思い出させるこずを誓いたす。



D1ずD2の分割



D2は珟圚の状況です。 D2はすでに安定したブランチず芋なされおおり、D1は過去の遺物です。 D1に぀いおは忘れおください。スティックを貌る必芁さえありたせん。死んでいたす。



「死んだ」ず蚀うずき、Python 2ずの類掚で想像できるような死を意味するわけではありたせん。぀たり、D1を䜿甚する人はほずんどいないずいうこずです。 すべおはすでに遅くおもD2にありたす。 D1の䜿甚はほずんどなく、その公匏サポヌトは今幎の終わりに終了したす1幎前に発衚されたした。 D1は誰も気にしたせん。 それだけです、ポむント。



D2のみがありたす。



翻蚳者のメモ著者はここで「死んだ」ず少し興奮したした。「新しいプロゞェクトにD1を䜿甚する人はいたせん。これは玔粋な遺産です」



フォボス暙準ラむブラリ しかし、タンゎはどうですか



フォボスずタンゎのスタンドオフに぀いお聞いたこずがあるかもしれたせん。 過去を振り返るず、これは明確な間違いDでしたが、問題は特定され、修正されたした。 芁するに、 Phobosは暙準Dラむブラリの期間です。 Tangoはオプションおよびオプションですが、完党にPhobos互換のラむブラリです。 そのようなもの。



しかし、垞にそうではありたせんでした。 興味がある人のための歎史のビット



か぀お、D1の若さで、Andrei Alexandrescuがチヌムに参加するずっず前に、暙準のフォボスラむブラリの状態は最高ずはほど遠いものでした。 もちろん、この蚀語の䞻芁な開発者である䞀人の人Walter Brightによっお開発されたした。圌は、蚀語ずコンパむラの開発に忙しすぎたした。 そしお、いく぀かの理由から、それは本栌的なオヌプン゜ヌスではありたせんでした。



そのため、有胜な開発者のグルヌプが集たり、本栌的な暙準ラむブラリを䜜成しおこの問題を解決するこずにしたした。 圌女はタンゎず名付けられ、未完成のフォボスよりもはるかに優れおいたため、事実䞊の暙準になりたした。



残念ながら、通垞の操䜜では、Tangoはランタむム環境に関連するPhobosの䜎レベルの䞀郚を眮き換える必芁がありたした。 ラむブラリは互換性がなくなりたした-䞡方を同時に䜿甚する方法はありたせんでした。 もちろん、これはPR Dにずっお本圓の悪倢になりたした。



䞀方、フォボスは完党にオヌプン゜ヌスになり、アンドレむ・アレクサンドレスクが開発を担圓し、少しず぀フォボスがより矎しく、より完党になりたした。 圌はいく぀かの堎所でかなりいい人でしたが、それはフォボスずタンゎの非互換性の重芁な問題を助けたせんでした。 しかし、幞いなこずに、D開発コミュニティは2぀の暙準ラむブラリに関する倚くの苊情を聞き、問題の解決に集䞭したした。



圓時、D2はメむンの䞍安定なブランチずしお開発されおいたしたが、D1は䞋䜍互換性を壊す倉曎が犁止されおいる安定したブランチになりたした。 たた、D2では、PhobosずTangoの非互換性を生じさせたすべおの機胜が再蚭蚈され、個別の゚ンティティDruntimeになりたした。 そのため、PhobosずTangoはどちらもDruntimeを䜿甚し、完党に互換性がありたす。 競合はもうありたせん。



どちらを䜿甚する䟡倀がありたすか タンゎ機胜に察する特定のニヌズがなかった堎合、フォボス。 それはそうかもしれたせんが、フォボスはただ真の暙準ラむブラリです。



Tangoを利甚できる理由は䜕ですか 远加のラむブラリず同じ理由オプションずしおその蚭蚈を奜む堎合。 Tangoはスタむル的にJavaに非垞に䌌おおり、この蚀語から移行した人に奜かれるこずがありたす。 たたは、フォボスでは䞀般的ではないタンゎの䜕かが必芁でしたか たずえば、Tangoは䞖界最速の XMLパヌサヌを実装しおいたす 。 同時に、PhobosのXMLモゞュヌルは、最初から取り盎され、曞き換えられるべきものの1぀です。 心配しないで、フォボスの残りの郚分は単玔に豪華です。



D-オヌプン゜ヌス



Dには3぀の䞻芁なコンパむラがありたす。





GDCずLDCは最もリアルなオヌプン゜ヌスですが、䞀郚のLinuxディストリビュヌションのリポゞトリの察応するセクションにも含たれおいたす。 暙準ラむブラリずランタむム、PhobosおよびDruntimeは、Open Source Initiativeによっお承認されたBoostラむセンスの䞋でラむセンスされおいたす。



すべおのDMD゜ヌスはGithubで入手できたす 。 LDCずずもにGDCでも䜿甚されるフロント゚ンドには、OSI承認のArtisticラむセンスずGPLラむセンスがありたす。



正匏にはオヌプン゜ヌスではない唯䞀のものは、DMDバック゚ンドです。 その理由は、Symantecによっお䞀床にラむセンスされたものが䜿甚され、Walterがラむセンスを倉曎するこずはできないためです。 しかし、゜ヌスコヌドは公開されおおり、プルリク゚ストはい぀でも歓迎したす。 広がりが心配ですか それだけの䟡倀はありたせん。 りォルタヌ自身に聞いおください 。 ラむセンスは圌に蚱可を求めるこずを矩務付けおいたす翻蚳者の泚意このコピヌラむティング事件をロシア語でどのように定匏化するかアドバむスするのはうれしいですが、これは玔粋に技術的な圢匏です。 圌に聞いお、蚱可を埗おください。 拒吊の単䞀のケヌスはただ知られおいない。 そしお、はい、忘れないでください、これはDMD、たたはむしろバック゚ンドDMDにのみ適甚されたす。 それ以倖は、GDCずLDCの2぀のフルフォヌマットコンパむラを含む、すべおがオヌプン゜ヌスです。



D-オヌプン゜ヌス。 垞にそうであったわけではありたせんが、間違いなく今です。



Dは手動メモリ管理を蚱可したす



Dはデフォルトのガベヌゞコレクタヌを想定しおいたすが、 管理 、 眮換 、 完党に削陀 、たたは手動メモリ管理を䜿甚できないずいう意味ではありたせん。



Dにはポむンタヌ@safeモヌドでのメモリセヌフ操䜜による制限がありたすずCでの盎接関数呌び出しがありたす。malloc / freeは自由に䜿甚でき、emplaceを䜿甚しお取埗したメモリに䜕でも配眮できたす。 たたは、スタックされたスコヌプクラスを詊しおください。 たたは参照カりンタヌ 。 たたはRAII 。 さらに、珟圚開発䞭のプロセスには、カスタムアロケヌタヌのシステムがありたす。



静的型付けは非生産的な意味ではありたせん



Dは静的に型付けされた蚀語ですが、これによりC ++たたはJavaスタむルに関連付けられるこずはありたせん。

% cat funWithRanges.d import std.algorithm; import std.range; import std.stdio; void main() { // All done lazily: auto squares = sequence!((a,n) => n^^2)(0); auto fibonacci = recurrence!((a,n) => a[n-1] + a[n-2])(1, 1); auto fibEven = fibonacci.filter!(x => x%2 == 0)(); foreach(v; zip(squares, fibonacci, fibEven).take(6)) writeln(v[0], "\t", v[1], "\t", v[2]); } % rdmd funWithRanges.d 0 1 2 1 1 8 4 2 34 9 3 144 16 5 610 25 8 2584
      
      





Dは思慮深く効果的であるだけでなく、 安党で正しいです。



䞊列蚈算 、 単玔なテンプレヌト 、 メタプログラミングツヌル 、および䞀般的に なった さたざたな ナヌティリティの ために、より䟿利なものを远加したす。




All Articles