LINUX.ORG.RU

Выход новой версии языка программирования D 2.065

 ,


0

2

D — объектно-ориентированный, императивный, мультипарадигмальный язык программирования, созданный Уолтером Брайтом из компании Digital Mars. Изначально был задуман как реинжиниринг языка C++, однако, несмотря на значительное влияние С++, не является его вариантом. В D были заново реализованы некоторые свойства C++, также язык испытал влияние концепций из других языков программирования, таких как Java, Python, Ruby, C# и Eiffel.

Список изменений версии 2.065:

  • Изменения в компиляторе:
    • Исходный файл на языке D может теперь запускаться если стоит параметр "-run"
  • Изменения в самом языке:
    • Команда «Goto» теперь не пропустит объявления переменных.
    • Все экземпляры функции теперь выводят свои атрибуты.
    • Добавлен новый квалификатор типа inout const.
    • Пакеты и имена модулей, сейчас не имеют типа.
    • Константы и неизменяемые поля с инициализаторами считаются устаревшими.
    • Устарели неупорядоченные сравнения с плавающей запятой.
  • Изменения в библиотеках:
    • Множество функций в std.algorithm могут быть использованы в качестве предикатов для других функций.
    • Позволяет std.algorithm.all быть использованым без предиката.
    • Добавлены std.uni.byGrapheme и std.uni.byCodePoint.
    • Добавлена поддержка любого количества аргументов, в std.range.only.

Более подробнее здесь.

Список багфиксов

>>> Сайт

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Shaman007 (всего исправлений: 6)

Ответ на: комментарий от anonymous

Закопать маргинальщину - это про руст, а д - нормальная тема ))

vitalif ★★★★★
()

Выйти то никак не может, зато регулярно что-то устаревает…

anonymous
()
Ответ на: комментарий от Hertz

Другое дело няшная сишечка. Можно снова изобрести ООП и строки вместо работы.

anonymous
()

Facebook опубликовал исходные тексты утилиты flint (https://github.com/facebook/flint), предназначенной для выявления типовых ошибок и проблемных конструкций в коде на языке С++. Представлены два варианта flint: основной, написанный на языке D, и устаревшая реализация на языке C++. Код открыт под свободной лицензией Boost Software License.

Утилита была создана для внутреннего применения в системе рецензирования кода Facebook, для автоматической проверки всех вносимых изменений. Существующие lint-системы для C++ не устроили Facebook из-за низкой производительности и отсутствия поддержки стандарта C++11 (например, Clang во время начала разработки flint не предоставлял должной поддержки C++). Также была необходимость адаптации правил проверки для особенностей стиля разработки в Facebook

via opennet http://www.opennet.ru/opennews/art.shtml?num=39190

Atlant ★★★★★
()
Ответ на: комментарий от Atlant

ок, теперь в 0.0000001% кода написанного в фейсбуке есть D, а писали скорее всего ради развлечения или просто попробовать, учитывая что success story о том, как фейсбук понял крутость D и начал переписывать на нем все -> нету.. выводы плачевные.

umren ★★★★★
()

Кстати на tiobe за февраль D вошел аж в 20-ку самых используемых, неужто фейсбук так повлиял

Vultaron
()
Ответ на: комментарий от umren

учитывая что success story о том, как фейсбук понял крутость D и начал переписывать на нем все -> нету.. выводы плачевные.

Вообще-то Андрей Александреску, один из основных нынче адептов D, работает именно в Facebook.

http://forum.dlang.org/thread/l37h5s$2gd8$1@digitalmars.com

И речь там, по-моему, не про вышеупомянутый flint

yoghurt ★★★★★
()
Последнее исправление: yoghurt (всего исправлений: 1)

Устарели неупорядоченные сравнения с плавающей запятой.

Это deprecated что-ли? Переводится как «объявлены не рекомендуемыми к использованию», человек-гуглтранслейт.

anonymous
()

Более подробнее здесь.

Более подробнее

Давай так, присылай мне черновики для проверки, чтобы не было таких срамных ошибок.

Akamanah ★★★★★
()

Исходный файл на языке D может теперь запускаться если стоит параметр "-run"

а может и не запускаться?

Команда «Goto» теперь не пропустит объявления переменных.

щито?

Пакеты и имена модулей, сейчас не имеют типа.

название модуля и пакеты имели ТИП, посоны!

Константы и неизменяемые поля с инициализаторами считаются устаревшими.

опять, щито?

Позволяет std.algorithm.all быть использованым без предиката.

промт переводил?

unt1tled ★★★★
()
inout(const(int))[] foo(bool condition, inout(int)[] x, immutable(int)[] y)
{
    static assert(is(typeof(condition ? x : y) == inout(const(int))[]));
    return condition ? x : y;
}

и эти люди ругают С++

wota ★★
()
Ответ на: комментарий от wota

эти люди сами его таким и сделали :D а теперь делают D

anonymous
()
Ответ на: комментарий от umren

они поняли, что проверять, правильность кода C++ - лучше на другом языке. Глядишь следующая связанная мысль придет - «нафига его вообще использовать?».

Atlant ★★★★★
()

Новость написана невнятно. Ничего не ясно.

Например

Все экземпляры функции теперь выводят свои атрибуты.

Кто такие экземпляры функции (кто такие экземпляры класса, я, положим знаю) и куда они их выводят?

Или

Множество функций в std.algorithm могут быть использованы в качестве предикатов для других функций.

Всё множество? Или какие-то функции из std.algorithm? Вообще-то на D принято писать шаблонами и классами, хотя функции тоже есть, как это соотносится с принятым стилем оформления кода?

Или вот это

Пакеты и имена модулей, сейчас не имеют типа.

Вас русскому языку кто учил, зачем запятая? Какой тип они имели раньше и могли ли они его иметь, если D классический язык, где не применимо правило «всё есть объект»? Чтобы они заимели осмысленный тип, нужно, чтобы с ними можно было делать какие-то операции. Какие операции можно делать с именами модулей и пакетами, кроме импорта?

И не нужно говорить, что так написано в оригинале. В оригинале есть технический changelog для тех, кто в теме (там ещё и куча поясняющих примеров есть). Вы пишите новость для широкой аудитории, да ещё и переводите с искажением смысла. Вы разберитесь в теме, а потом пишите уже.

Vudod ★★★★★
()
Последнее исправление: Vudod (всего исправлений: 1)
Ответ на: комментарий от Vudod

вообще то есть корректоры и модераторы, если новость не нравится, то пусть удаляют. С вашей стороны если вы хотите чтобы не было таких казусов, прошу тогда помогать в переводе данных вещей.

fallout4all ★★★★★
() автор топика
Ответ на: комментарий от unt1tled

ну так форум та на что? если есть претензии помоги улучшить. Позовём модераторов/корректоров и поправим новость.

fallout4all ★★★★★
() автор топика

Чуть более подробный перевод для тех, кому всё-таки интересно:

* Изменения в компиляторе: - Можно использовать исходные файлы без суффикса .d в случае, если компилятор вызван с флагом -run (для упрощения написания скриптов)

* Изменения в самом языке: - Попытка миновать с помощью goto объявление локальной переменной теперь вызовет ошибку компиляции - Автоматический вывод атрибутов работает теперь для функций, являющихся членом шаблонных структуры/класса, даже если сама функция не имеет шаблонных параметров. - Добавлен новый квалификатор типа inout const.. и вам лучше не знать, зачем он может быть нужен! - Идентификаторы пакетов и модулей более не имеют типа (раньше имели тип void) - Поля структур/классов вида «const member = init» объявлены не рекомендуемыми к использованию. Программистам следует явно указать static или enum. В следующем релизе синтаксис снова будет доступен, но его значение будет изменено. - Не рекомендуются к использованию операторы вида «<>=» для чисел с плавающей точкой (unordered floating point operators) - Поле .min для чисел с плавающей точкой не рекомендуется к использованию. Рекомендуемая альтернатива - .min_normal - Расширена поддержка union при интерпретации функций во время компиляции (CTFE) - Дополнительная возможность для интроспекции - __traits(getAliasThis)

* Изменения в стандартной библиотеке: - Функции any, all, canFind и equal стали шаблонами, что позволяет их использовать в качестве предикатов для других шаблонов без указания точного типа (примеры по ссылке) - all может быть использован без предиката для наборов данных, все элементы которых приводимы к логическому типу (проверяет, что все приводимы к true в таком случае) - std.range.only принимает любое количество аргументов. Использование only без аргументов - самый простой способ получить пустой диапазон данных (range)

Dicebot
()
Ответ на: комментарий от Dicebot

..зато со сломанным форматированием, чтобы жизнь не казалась слишком лёгкой.

Dicebot
()
Ответ на: комментарий от Dicebot

Его стоит изучить хотя бы за то что его делает Пайк, а не неизвестные никому сиплюсплюсники.

loz ★★★★★
()
Ответ на: комментарий от loz

Изучать языки вообще стоит, даже если они не очень. Но речь то про использование :)

В мире C/С++ известность Брайта и Александреску будет побольше, чем у Пайка. А человек, интересующийся историей программирования как таковой должен знать их всех, так что сравнение тут бессмысленно.

Dicebot
()
Ответ на: комментарий от Dicebot

Мир плюсов нужно забыть как страшный сон, и если кто-то в нем прославился это еще вопрос как стоит оценивать этого человека.

loz ★★★★★
()
Ответ на: комментарий от uhbif19

спасибо за поддержку, просто иногда не помешала бы реально помощь со стороны, по переводу, ибо специфичные англоязычные технические термины я не всегда понимаю.

fallout4all ★★★★★
() автор топика
Последнее исправление: fallout4all (всего исправлений: 1)
Ответ на: комментарий от loz

Мир плюсов нужно забыть как страшный сон

Так и забудут, как только будет достойная замена. Go на такую роль и близко не тянет, D и Rust имеют хоть какие-то шансы.

как стоит оценивать этого человека

как человека, умеющего решать практические задачи в очень недружелюбных условиях :)

Dicebot
()

Нужно больше язык, клевых и разных!

Deleted
()
Ответ на: комментарий от fallout4all

просто иногда не помешала бы реально помощь со стороны, по переводу, ибо специфичные англоязычные технические термины я не всегда понимаю

Если мне напоминать почтой (public / dicebot.lv), могу присылать переводы changelog'ов вместе с пояснениями.

Dicebot
()
Ответ на: комментарий от Dicebot

укажите пожалуйста в профиле своем почту, буду периодически поглядывать

fallout4all ★★★★★
() автор топика
Ответ на: комментарий от Dicebot

Так и забудут, как только будет достойная замена. Go на такую роль и близко не тянет, D и Rust имеют хоть какие-то шансы.

Возможно замена вообще не нужна, возможно плюсы пытаются вобрать в себя то, что можно гораздо проще сделать набором других средств.

loz ★★★★★
()

Более подробнее

anonymous
()
Ответ на: комментарий от loz

пытаются вобрать в себя то

Плюсы пытаются вобрать в себя вселенную.

iamweasel
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.