Знакомство с языком D
This commit is contained in:
parent
5b83f89224
commit
ea3d7c4485
|
@ -69,5 +69,5 @@ D – это язык, который последовательно стара
|
|||
*Андрей Александреску*<br>
|
||||
Воскресенье 2 мая 2010 г.
|
||||
|
||||
[^1]: Афоризм американского комика Граучо Маркса. – Прим. ред.
|
||||
[^2]: Название компилятора языка D dmd расшифровывается как Digital Mars D. Digital Mars – организация, которая занимается разработкой этого компилятора. – Прим. пер.
|
||||
[^1]: Афоризм американского комика Граучо Маркса. – *Прим. ред.*
|
||||
[^2]: Название компилятора языка D `dmd` расшифровывается как Digital Mars D. Digital Mars – организация, которая занимается разработкой этого компилятора. – *Прим. пер.*
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
# Знакомство с языком D
|
||||
|
||||
- [1. Знакомство с языком D]()
|
||||
- [1.1. Числа и выражения]()
|
||||
- [1.2. Инструкции]()
|
||||
- [1.3. Основы работы с функциями]()
|
||||
|
@ -12,3 +11,58 @@
|
|||
- [1.6. Интерфейсы и классы]()
|
||||
- [1.6.1. Больше статистики. Наследование]()
|
||||
- [1.7. Значения против ссылок]()
|
||||
|
||||
Вы ведь знаете, с чего обычно начинают, так что без лишних слов:
|
||||
|
||||
```d
|
||||
import std.stdio;
|
||||
|
||||
void main()
|
||||
{
|
||||
writeln("Hello, world!");
|
||||
}
|
||||
```
|
||||
|
||||
В зависимости от того, какие еще языки вы знаете, у вас может возникнуть ощущение дежавю, чувство легкой благодарности за простоту, а может, и легкого разочарования из-за того, что D не пошел по стопам скриптовых языков, разрешающих использовать «корневые» (top-level) инструкции. (Такие инструкции побуждают вводить глобальные переменные, которые по мере роста программы превращаются в головную боль; на самом деле, D позволяет исполнять код не только внутри, но и вне функции `main`, хотя и более организованно.) Самые въедливые будут рады узнать, что `void main` – это эквивалент функции `int main`, возвращающей операционной системе «успех» (код 0) при успешном окончании ее выполнения.
|
||||
|
||||
Но не будем забегать вперед. Традиционная программа типа «Hello, world!» («Здравствуй, мир!») – вовсе не повод для обсуждения возможностей языка. Она здесь для того, чтобы помочь вам начать писать и запускать программы на этом языке. Если у вас нет никакой IDE, которая выполнит за вас сборку программы, то самый простой способ – это командная строка. Напечатав приведенный код и сохранив его в файле с именем, скажем, `hello.d`, запустите консоль и введите следующие команды:
|
||||
|
||||
```sh
|
||||
$ dmd hello.d
|
||||
$ ./hello
|
||||
Hello, world!
|
||||
$ _
|
||||
```
|
||||
|
||||
Знаком `$` обозначено приглашение консоли вашей ОС (это может быть `c:\Путь\К\Папке>` в Windows или `/путь/к/каталогу%` в системах семейства UNIX, таких как OSX, Linux, Cygwin). Применив пару известных вам приемов систем-фу, вы сможете добиться автоматической компиляции программы при ее запуске. Пользователи Windows, вероятно, захотят привязать программу `rdmd.exe` (которая устанавливается вместе с компилятором D) к команде Выполнить. UNIX-подобные системы поддерживают запуск скриптов в нотации «shebang»[^1]. D понимает такой синтаксис: добавление строки
|
||||
|
||||
```sh
|
||||
#!/usr/bin/rdmd
|
||||
```
|
||||
|
||||
в самое начало программы в файле `hello.d` позволяет компилировать ее автоматически перед исполнением. Внеся это изменение, просто введите в командной строке:
|
||||
|
||||
```sh
|
||||
$ chmod u+x hello.d
|
||||
$ ./hello.d
|
||||
Hello, world!
|
||||
$ _
|
||||
```
|
||||
|
||||
(`chmod` нужно ввести только один раз).
|
||||
|
||||
Для всех операционных систем справедливо следующее: программа `rdmd` достаточно «умна», для того чтобы кэшировать сгенерированное приложение. Так что фактически компиляция выполняется только после изменения исходного кода программы, а не при каждом запуске. Эта особенность в сочетании с высокой скоростью самого компилятора позволяет экономить время на запусках программы между внесением в нее изменений, что одинаково полезно как при разработке больших систем, так и при написании маленьких скриптов.
|
||||
|
||||
Программа `hello.d` начинается с инструкции
|
||||
|
||||
```sh
|
||||
import std.stdio;
|
||||
```
|
||||
|
||||
которая предписывает компилятору найти модуль с именем `std.stdio` и сделать его символы доступными для использования. Инструкция `import` напоминает препроцессорную директиву `#include`, которую можно встретить в синтаксисе C и С++, но семантически она ближе команде `import` языка Python: никакой вставки текста подключаемого модуля в текст основной программы не происходит – выполняется только простое расширение таблицы символов. Если повторно применить инструкцию `import` к тому же файлу, ничего не произойдет.
|
||||
|
||||
По давней традиции C программа на D представляет собой набор определений, рассредоточенный по множеству файлов. В числе прочего эти определения могут обозначать типы, функции, данные. В нашей первой программе определена функция `main`. Она не принимает никаких аргументов и ничего не возвращает, что, по сути, и означает слово void. При выполнении `main` программа вызывает функцию `writeln` (разумеется, предусмотрительно определенную в модуле `std.stdio`), передавая ей строковую константу в качестве аргумента. Суффикс `ln` указывает на то, что `writeln` добавляет к выводимому тексту знак перевода строки.
|
||||
|
||||
Следующие разделы – это стремительная поездка по Дибургу. Небольшие показательные программы дают общее представление о языке. Основная цель повествования на данном этапе – обрисовать общую картину, а не дать ряд педантичных определений. Позже все аспекты языка будут рассмотрены с должным вниманием – в деталях.
|
||||
|
||||
[^1]: «Shebang» (от shell bang: shell – консоль, bang – восклицательный знак), или «shabang» (# – sharp) – обозначение пути к компилятору или интерпретатору в виде `#!/путь/к/программе`. – *Прим. пер.*
|
||||
|
|
Loading…
Reference in New Issue