Чистые функции имеют ряд интересных и полезных свойств. Всё просто. Они зависят только от своих параметров. И возвращают только свой результат. В языке программирования D возможно следующее:
Нельзя писать в глобальную переменную. Или в переменную, которая стала персистентной вне этой функции.
Такие переменные не могут быть прочитаны, пока они не станут инвариантными. Под инвариантностью имеется в виду неизменяемость.
Чистые функции могут вызывать только чистые функции.
Параметры в чистых функциях могут быть неизменяемыми. При этом вызов к такой функции не может быть кеширован или вызван асинхронно, если параметры ссылаются на изменяемые данные.
На хабре уже публиковался перевод статьи The Case For D за авторством Андрея Александреску. Перевод, к сожалению, был сделан на скорую руку, без посторонней помощи и советов, что не могло не отразиться на его качестве. Позднее был коллективно создан более качественный и, главное, верный перевод, который мы и хотим показать. Старый перевод будет удалён, чтобы не создавать путаницы.
В качестве дополнения (чтобы не опускаться до самоповторения и, возможно, заинтересовать людей читавших предыдущий перевод) мы составили небольшой FAQ, основываясь на вопросах, которые часто возникают во время обсуждения D и могут возникнуть после прочтения статьи.
Участники: Volfram, naryl, karbin — перевод; maxter — грамматика и орфография; eldar, digited, Nekuromento, karbin, RISC — технические вопросы. ( Они будут рады ответить на любые вопросы, если им предоставить такую возможность ;) )
Как постоянный пользователь и поклонник языка D, я не мог не заметить ряд заблуждений и недопониманий, которые регулярно встречаются среди новичков.
Все эти заблуждения вполне объяснимы. Многие связаны с проблемами, которые играли важную роль в прошлом, так что не удивительно, что эти устаревшие представления продолжают существовать. Мне кажется, что это как раз те области, которые сообщество D должно как можно лучше объяснить остальным программистам. Вот эти темы:
Для D есть IDE
DSource угасает, но проекты на D активны как никогда ранее
Разделения на D1 и D2 больше нет
Phobos — стандартная библиотека? А как же Tango?
D — open source
D позволяет ручное управление памятью
Статическая типизация НЕ означает непродуктивность
На слуху множество разнообразных проектов, успешно получивших финансирование на Kickstarter. И если обычно они относятся к тематике Habrahabr лишь в том, что тут есть хаб Crowdfunding, то этот случай более примечателен — требуемая сумма была набрано проектом по финансированию конференции по языку программирования D.