ИзданиС Π½Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΎΡ‚ Π½Π° D јазик 2.100

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° програмскиот јазик Π” Π³ΠΎ ΠΏΡ€Π΅Ρ‚ΡΡ‚Π°Π²ΠΈΡ˜Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π³Π»Π°Π²Π½ΠΈΠΎΡ‚ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π΅Π½ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ DMD 2.100.0, кој ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° GNU/Linux, Windows, macOS ΠΈ FreeBSD систСми. ΠšΠΎΠ΄ΠΎΡ‚ Π½Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΎΡ‚ сС дистрибуира ΠΏΠΎΠ΄ бСсплатната BSL (Boost Software License).

D Π΅ статички напишан, ΠΈΠΌΠ° синтакса слична Π½Π° C/C++ ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° пСрформанси Π½Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Π½ΠΈ Ρ˜Π°Π·ΠΈΡ†ΠΈ, ΠΏΡ€ΠΈΡ‚ΠΎΠ° ΠΏΠΎΠ·Π°Ρ˜ΠΌΡƒΠ²Π°Ρ˜ΡœΠΈ Π΄Π΅Π» ΠΎΠ΄ Ρ€Π°Π·Π²ΠΎΡ˜Π½Π°Ρ‚Π° Сфикасност ΠΈ бСзбСдносни ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈΡ‚Π΅ Ρ˜Π°Π·ΠΈΡ†ΠΈ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Π°ΡΠΎΡ†ΠΈΡ˜Π°Ρ‚ΠΈΠ²Π½ΠΈ Π½ΠΈΠ·ΠΈ, Π·Π°ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ, автоматско ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°, ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅, ΠΈΠ·Π±ΠΎΡ€Π΅Π½ собирач Π½Π° Ρ“ΡƒΠ±Ρ€Π΅, систСм Π½Π° шаблони, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅, моТност Π·Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π½Π΅ΠΊΠΎΠΈ C++ ΠΈ Objective-C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

ΠœΠ΅Ρ“Ρƒ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:

  • Π‘Ρ‚Π°Ρ€ΠΈΠΎΡ‚ стил Π½Π° ΠΏΡ€Π΅ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚ ΡˆΡ‚ΠΎ сС ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡˆΠ΅ Π²ΠΎ Π³Ρ€Π°Π½ΠΊΠ°Ρ‚Π° D1 Π΅ ΠΏΡ€Π΅ΠΊΠΈΠ½Π°Ρ‚. Π—Π°ΠΌΠ΅Π½Π΅Ρ‚ΠΈ opNeg, opAdd_r, opAddAssign, ΠΈΡ‚Π½. дојдоа opUnary, opBinary, opBinaryRight ΠΈ opOpAssign. Π‘Ρ‚Π°Ρ€ΠΈΠΎΡ‚ стил Π½Π° ΠΏΡ€Π΅ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚ бСшС застарСн Π²ΠΎ 2019 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ќС ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΎΠ΄ ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ 2.100.
  • ΠšΠ»ΡƒΡ‡Π½ΠΈΠΎΡ‚ Π·Π±ΠΎΡ€ Π·Π° Π±Ρ€ΠΈΡˆΠ΅ΡšΠ΅ Π΅ застарСн ΠΎΠ΄ 2018 Π³ΠΎΠ΄ΠΈΠ½Π°. НамСсто Π±Ρ€ΠΈΡˆΠ΅ΡšΠ΅, Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја користитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° ΡƒΠ½ΠΈΡˆΡ‚ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ»ΠΈ core.memory.__delete.
  • Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ Π΅ Π½ΠΎΠ² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ @mustuse кој ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π½Π° структура ΠΈ ΡƒΠ½ΠΈΡ˜Π° ΠΊΠ°ΠΊΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° ΡΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΊΠΎΠ³Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС справи со исклучоци (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎ Π±Π»ΠΎΠΊΠΎΠ²ΠΈΡ‚Π΅ @nogc). Ако ΠΈΠ·Ρ€Π°Π·ΠΎΡ‚ ΠΎΠ·Π½Π°Ρ‡Π΅Π½ со Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΡ‚ @mustuse Π½Π΅ сС користи Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚, ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΎΡ‚ ќС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π³Ρ€Π΅ΡˆΠΊΠ°.
  • Π—Π° статични Π½ΠΈΠ·ΠΈ, Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π΅ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΡΠ²ΠΎΡ˜ΡΡ‚Π²ΠΎΡ‚ΠΎ β€ž.tupleofβ€œ Π·Π° Π΄Π° сС Π΄ΠΎΠ±ΠΈΠ΅ Π½ΠΈΠ·Π°Ρ‚Π° врСдности (lvalue) Π½Π° сСкој Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΎΠ΄ Π½ΠΈΠ·Π°Ρ‚Π°. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // Π°Π½Π°Π»ΠΎΠ³Π΅Π½ foo(1, 2, 3); ΠΏΠ»ΠΎΠ²ΠΈ[3] Ρ„Π°; fa.tupleof = ΠΈΠ°.tuppleof; // Сдноставното Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΡšΠ΅ fa = ia Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π° со ΠΏΠΎΡ‚Π²Ρ€Π΄Π° Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ° (fa == [1F, 2F, 3F]);

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€