D (мова програмування): відмінності між версіями
[неперевірена версія] | [перевірена версія] |
Ifgg (обговорення | внесок) Дата і версія останнього релізу змінена на актуальну |
|||
(Не показані 10 проміжних версій 6 користувачів) | |||
Рядок 4: | Рядок 4: | ||
| caption = |
| caption = |
||
| file_ext = <code>.d</code> <!-- DO NOT ADD .di HERE. It is not part of the language, it is part of the implementation. --> |
| file_ext = <code>.d</code> <!-- DO NOT ADD .di HERE. It is not part of the language, it is part of the implementation. --> |
||
| paradigm = [[Мультипарадигмальна мова програмування]]: [[процедурне програмування|процедурна]], [[об'єктно-орієнтоване програмування|об'єктно-орієнтована]], [[функційне програмування|функційна]], [[Узагальнене програмування|узагальнена]] |
|||
| paradigm = [[multi-paradigm programming language|multi-paradigm]]: <!-- |
|||
-->[[процедурне програмування|процедурний]], <!-- |
|||
-->[[об'єктно-орієнтоване програмування|об'єктно-орієнтований]], <!-- |
|||
-->[[функційне програмування|функційний]], <!-- |
|||
-->[[Узагальнене програмування|узагальнений]] |
|||
| released = {{start-date|2001}}<ref name="D1 changelog1" /> |
| released = {{start-date|2001}}<ref name="D1 changelog1" /> |
||
| designer = [[Walter Bright]], [[Andrei Alexandrescu]] (від 2006) |
| designer = [[Walter Bright]], [[Andrei Alexandrescu]] (від 2006) |
||
| developer = [[Digital Mars]], [[Andrei Alexandrescu]] (від 2006) |
| developer = [[Digital Mars]], [[Andrei Alexandrescu]] (від 2006) |
||
| latest_release_version = 2. |
| latest_release_version = 2.100.0 |
||
| latest_release_date = {{Start date and age|df=no| |
| latest_release_date = {{Start date and age|df=no|2022|05|10}}<ref>{{cite web|title=Список змін у Dlang|url=https://dlang.org/changelog/2.100.0.html|accessdate=10 травня 2021|archive-date=16 січня 2021|archive-url=https://web.archive.org/web/20220516141601/https://dlang.org/changelog/2.100.0.html}}</ref> |
||
| typing = [[ |
| typing = [[Строга типізація|строга]], [[Статична типізація|статична]] |
||
| implementations = DMD ([[reference implementation]]), GDC, LDC |
| implementations = DMD ([[reference implementation]]), GDC, LDC |
||
| dialects = |
| dialects = |
||
Рядок 20: | Рядок 16: | ||
| influenced = [[MiniD]], [[DScript]], [[Vala]], [[Qore Language|Qore]] |
| influenced = [[MiniD]], [[DScript]], [[Vala]], [[Qore Language|Qore]] |
||
| operating_system = DMD: [[Unix-подібні]] ([[FreeBSD]], [[Linux]] тощо), [[Microsoft Windows|Windows]], [[MacOS X]] |
| operating_system = DMD: [[Unix-подібні]] ([[FreeBSD]], [[Linux]] тощо), [[Microsoft Windows|Windows]], [[MacOS X]] |
||
| license = [[GNU General Public License|GPL]]/[[Artistic License|Artistic]] (DMD frontend),<br/>[[Boost Software License|Boost]] (стандартна бібліотека та бібліотека часу виконання),<br/>доступні коди (DMD backend),<br/>Повністю відкритий код (LDC та GDC)<ref>{{Cite web |url=http://dlang.org/faq.html |title=FAQ of digitalmars |accessdate=23 серпня 2014 |archive-date=15 вересня 2014 |archive-url=https://web.archive.org/web/20140915235650/http://dlang.org/faq.html }}</ref> |
|||
| license = [[GNU General Public License|GPL]]/[[Artistic License|Artistic]] (DMD frontend),<br/><!-- |
|||
-->[[Boost Software License|Boost]] (стандартна бібліотека та бібліотека часу виконання),<br/><!-- |
|||
-->доступні коди (DMD backend),<br/><!-- |
|||
-->Повністю відкритий код (LDC та GDC)<!-- |
|||
--><ref>[http://dlang.org/faq.html FAQ of digitalmars]</ref> |
|||
| website = {{URL|dlang.org}} |
| website = {{URL|dlang.org}} |
||
| wikibooks = D Programming |
| wikibooks = D Programming |
||
}} |
}} |
||
'''D''' |
'''D''' — [[Об'єктно-орієнтована мова програмування|об'єктно-орієнтована]], імперативна, багатопарадигмова мова програмування. Мова створена [[Волтер Брайт|Волтером Брайтом]] ({{lang-en|Walter Bright}}), засновником компанії [[Digital Mars]]. Хоча D виникла як [[реінжиніринг]] [[C++]], D — це самостійна мова, в якій змінено деякі основні принципи C++; також багато взято із інших мов, зокрема [[Java]], [[Python]], [[Ruby]], [[C Sharp|C#]] і [[Eiffel]]. |
||
В D зроблено спробу поєднати швидкість мов, які використовують компіляцію, із безпекою і потужною виразністю сучасних мов з [[динамічна типізація|динамічною типізацією]]. Особливістю D є те, що код зазвичай такий же швидкий, як еквівалентний на |
В D зроблено спробу поєднати швидкість мов, які використовують компіляцію, із безпекою і потужною [[Виразність (програмування)|виразністю]] сучасних мов з [[динамічна типізація|динамічною типізацією]]. Особливістю D є те, що код зазвичай такий же швидкий, як еквівалентний на C++, при цьому код коротший і в ньому застосовується безпечне виділення пам'яті, у той час, як перевірка меж, розробка за контрактами і типи, безпечні для багатопотоковості, дозволяють зменшити кількість помилок у програмному продукті. |
||
Визначення типу ([[Type inference]]), автоматичне управління пам'яттю, вбудоване [[модульне тестування]] і «[[синтаксичний цукор]]» для основних типів забезпечують можливості |
Визначення типу ([[Type inference]]), автоматичне управління пам'яттю, вбудоване [[модульне тестування]] і «[[синтаксичний цукор]]» для основних типів забезпечують можливості коротшого циклу розробки програм з меншою кількістю помилок. |
||
== Основні можливості == |
== Основні можливості == |
||
Мова програмування D розроблялася одночасно з розвитком компілятора для цієї мови, і після засвоєння уроків, отриманих із практичного використання C++. Хоча мова D використовує багато понять C і C ++, вона також відкидає деякі (невдалі на думку розробників) підходи цих мов, або ж використовує зовсім інший підхід (як і синтаксис) для досягнення певних цілей. |
Мова програмування D розроблялася одночасно з розвитком компілятора для цієї мови, і після засвоєння уроків, отриманих із практичного використання C++. Хоча мова D використовує багато понять C і C ++, вона також відкидає деякі (невдалі на думку розробників) підходи цих мов, або ж використовує зовсім інший підхід (як і синтаксис) для досягнення певних цілей. Початковий код на D не сумісний з C++, однак D була обмежена правилом, що будь-який код для C повинен залишатися сумісним з кодом для D, і повинен виконуватись однаково. |
||
D набагато раніше за C++ отримала засоби для функційного програмування, такі як замикання (closures), анонімні функції, функції виконання часу компіляції, проміжки (ranges) та вбудовані концепції ітерації для контейнерів та автовивід типу для інструкцій. В D також з самого початку додали до функціональності C++ дизайн за контрактом, вбудоване модульне тестування, справжні модулі, збирач сміття, масиви як сутності першого класу, асоціативні масиви, динамічні масиви, слайси масивів, вкладені функції, ліниві обчислення, області (відкладеного) виконання коду та кращий і повністю реконструйований синтаксис шаблонів для динамічного узагальненого програмування. |
|||
D також зберегла здатність C++ створювати програми низького рівня та розуміє вбудовані інструкції-вставки на асемблері. Множинне успадкування з C++ було замінено єдиним успадкуванням у стилі Java з інтерфейсами та домішками (mixins). З іншого боку, синтаксис декларацій, інструкцій та виразів D нагадує C++. D також має вбудовану підтримку коментарів документації, яка дозволяє автоматично створювати документацію з допомогою компілятора. В екосистему мови D також входить стандартна бібліотека phobos та надзвичайно продуманий менеджер пакунків Dub, що дозволяє автоматизувати компіляцію та збирання програми з допомогою простого json-файлу. |
|||
== Hello World! == |
== Hello World! == |
||
Рядок 50: | Рядок 46: | ||
== Див. також == |
== Див. також == |
||
* [[Hello world!]] |
* [[Hello world!]] |
||
* Приклади для вивчення http://www.rosettacode.org/wiki/Category:D |
|||
== Примітки == |
== Примітки == |
||
Рядок 55: | Рядок 52: | ||
== Посилання == |
== Посилання == |
||
* [http://tour.dlang.org/tour/uk Інтерактивний тур з мови програмування D] |
* [http://tour.dlang.org/tour/uk Інтерактивний тур з мови програмування D] {{Webarchive|url=https://web.archive.org/web/20170109183851/http://tour.dlang.org/tour/uk |date=9 січня 2017 }} |
||
== Джерела == |
== Джерела == |
Поточна версія на 07:59, 28 лютого 2024
D programming language | |
---|---|
![]() | |
Парадигма | Мультипарадигмальна мова програмування: процедурна, об'єктно-орієнтована, функційна, узагальнена |
Дата появи | 8 грудня 2001 |
Творці | Walter Bright, Andrei Alexandrescu (від 2006) |
Розробник | Digital Mars, Andrei Alexandrescu (від 2006) |
Останній реліз | 2.100.0 (10 травня 2022[1]) |
Система типізації | строга, статична |
Основні реалізації | DMD (reference implementation), GDC, LDC |
Під впливом від | C, C++, C#, Eiffel, Java, Python, Ruby |
Вплинула на | MiniD, DScript, Vala, Qore |
Операційна система | DMD: Unix-подібні (FreeBSD, Linux тощо), Windows, MacOS X |
Ліцензія | GPL/Artistic (DMD frontend), Boost (стандартна бібліотека та бібліотека часу виконання), доступні коди (DMD backend), Повністю відкритий код (LDC та GDC)[2] |
Звичайні розширення файлів | . |
Вебсайт | dlang.org |
D — об'єктно-орієнтована, імперативна, багатопарадигмова мова програмування. Мова створена Волтером Брайтом (англ. Walter Bright), засновником компанії Digital Mars. Хоча D виникла як реінжиніринг C++, D — це самостійна мова, в якій змінено деякі основні принципи C++; також багато взято із інших мов, зокрема Java, Python, Ruby, C# і Eiffel.
В D зроблено спробу поєднати швидкість мов, які використовують компіляцію, із безпекою і потужною виразністю сучасних мов з динамічною типізацією. Особливістю D є те, що код зазвичай такий же швидкий, як еквівалентний на C++, при цьому код коротший і в ньому застосовується безпечне виділення пам'яті, у той час, як перевірка меж, розробка за контрактами і типи, безпечні для багатопотоковості, дозволяють зменшити кількість помилок у програмному продукті.
Визначення типу (Type inference), автоматичне управління пам'яттю, вбудоване модульне тестування і «синтаксичний цукор» для основних типів забезпечують можливості коротшого циклу розробки програм з меншою кількістю помилок.
Мова програмування D розроблялася одночасно з розвитком компілятора для цієї мови, і після засвоєння уроків, отриманих із практичного використання C++. Хоча мова D використовує багато понять C і C ++, вона також відкидає деякі (невдалі на думку розробників) підходи цих мов, або ж використовує зовсім інший підхід (як і синтаксис) для досягнення певних цілей. Початковий код на D не сумісний з C++, однак D була обмежена правилом, що будь-який код для C повинен залишатися сумісним з кодом для D, і повинен виконуватись однаково.
D набагато раніше за C++ отримала засоби для функційного програмування, такі як замикання (closures), анонімні функції, функції виконання часу компіляції, проміжки (ranges) та вбудовані концепції ітерації для контейнерів та автовивід типу для інструкцій. В D також з самого початку додали до функціональності C++ дизайн за контрактом, вбудоване модульне тестування, справжні модулі, збирач сміття, масиви як сутності першого класу, асоціативні масиви, динамічні масиви, слайси масивів, вкладені функції, ліниві обчислення, області (відкладеного) виконання коду та кращий і повністю реконструйований синтаксис шаблонів для динамічного узагальненого програмування.
D також зберегла здатність C++ створювати програми низького рівня та розуміє вбудовані інструкції-вставки на асемблері. Множинне успадкування з C++ було замінено єдиним успадкуванням у стилі Java з інтерфейсами та домішками (mixins). З іншого боку, синтаксис декларацій, інструкцій та виразів D нагадує C++. D також має вбудовану підтримку коментарів документації, яка дозволяє автоматично створювати документацію з допомогою компілятора. В екосистему мови D також входить стандартна бібліотека phobos та надзвичайно продуманий менеджер пакунків Dub, що дозволяє автоматизувати компіляцію та збирання програми з допомогою простого json-файлу.
import std.stdio;
void main()
{
writeln("Hello world!");
}
- Hello world!
- Приклади для вивчення http://www.rosettacode.org/wiki/Category:D
- ↑ Список змін у Dlang. Архів оригіналу за 16 січня 2021. Процитовано 10 травня 2021.
- ↑ FAQ of digitalmars. Архів оригіналу за 15 вересня 2014. Процитовано 23 серпня 2014.
- Інтерактивний тур з мови програмування D [Архівовано 9 січня 2017 у Wayback Machine.]
- Bright, Walter. D programming Language Specification (in English) (e-book ed.). 7227: Digital Mars (via Amazon). Memory Safety has an entire chapter, with recipes. It's a major theme of the language. Failures to reach this standard are defects.
- Andrei Alexandrescu (August 2, 2010). Three Cool Things About D
- Мови програмування
- Мова програмування C
- Класо-орієнтовані мови програмування
- Статично-типізовані мови програмування
- Сімейство мов програмування C
- Процедурні мови програмування
- Системні мови програмування
- Вільні засоби розробки
- Вільні компілятори та інтерпретатори
- Багатопарадигмові мови програмування
- Статті з прикладами коду