Pull to refresh

Мое видение будущего D

Reading time 3 min
Views 12K
Original author: Atila Neves
Когда Андрей Александреску покинул пост заместителя руководителя отдела языка программирования D, меня попросили взять на себя эту роль в будущем. Нет необходимости говорить об этом, но я все равно скажу, что эта шапка на меня великовата.
Я все еще вхожу в свою новую роль в обществе и выясняю, как я хочу действовать и что это вообще такое. Этот процесс происходит не в вакууме, так как Уолтер тоже с нами.

На форумах D меня попросили написать в блоге о моих «мечтах и дальнейших шагах для D», так вот результат. Что бы я хотел, чтобы стало с D в ближайшем будущем:

Безопасность памяти


«Но D — язык с GC!», слышу я ваши восклицания. Да, но это также системный язык программирования с нессылочными типами и указателями, что означает, что сегодня D не является полностью безопасным по работе с памятью. DIP1000 был шагом в правильном направлении (прим.пер.система заимствования, как в Rust, см.тут), но работа с памятью должна стать безопасной до тех пор, пока программист не откажется через «Я знаю, что я делаю» с помощью @ trusted атрибута блока или функции. Это подразумевает переход на @ safe по умолчанию.

Простая и надежная многопоточность


Мы в большинстве своем уже в нужной точке — использование модели акторов устраняет многие проблемы, обычно возникающие. Осталось закончить работу над атрибутом shared и сделать всё @ safe.

Сделать D языком программирования по умолчанию


Возможности D в плане статической рефлексии и генерации кода делают его идеальным кандидатом для создания кода, который должен вызываться из нескольких различных языков и окружений (например Python, Excel, R и т.д.). Обычно это делается путем спецификации структур данных и вызовов RPC на языке определения интерфейсов (IDL), а затем переводится на поддерживаемые языки с соответствующим протоколом обмена.

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

Непревзойденная рефлексия


Вместо разрозненных способов работы с фрагментированными API (__traits, std.traits, велосипеды), я бы хотел, чтобы была библиотека, которая централизовала бы все потребности в рефлексии с прекрасным API. Я уже работаю над этим.

Упрощение интероперабельности с С++


Как я уже упоминал в своем выступлении на DConf 2019, C++ достиг успеха, сделав переход от языка Си практически бесшовным. Я бы хотел, чтобы нынешние программисты на языке C++ с устаревшей кодовой базой так же легко могли начать писать код на D. Вот почему я написал dpp (прим.пер.транслятор заголовков С++ в D), но это еще не все, и нам, возможно, придется внести изменения в язык, чтобы адаптировать это в будущем.

Быстрота разработки


Я думаю, нам нужен невероятно быстрый интерпретатор, чтобы мы могли отказаться от постоянной машинной генерации кода и компоновки. По-моему, это должен быть стандартный способ запуска unittest блоков (прим.пер.юнит-тесты встроены в язык) для обеспечения быстрой обратной связи, и чтобы программистам приходилось компилировать свой код только для достижения максимальной производительности и/или для развертывания конечным пользователям. Это также позволило бы ввести REPL.

Интерполированные строки


Изначально я был против этого, но чем больше я об этом думал, тем больше это было логично для D. Почему? Строковые миксины. Генерация кода является одной из сильнейших сторон D, а строковые токены позволяют визуально радовать блоками кода, которые на самом деле являются «просто строками». Интерполяция строк значительно упростила бы их использование. Пока что в разработке находится черновой вариант DIP.

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

Обсуждение на D-форуме тут

Переведено с помощью www.DeepL.com/Translator (это не автоматический перевод, если кто не заметил, и в то же время этот переводчик с элементами ИИ весьма помогает)

P.S. Кто пропустил предыдущую статью из блога про планы D для мобильной разработки. Ее заподозрили в рекламе (ах, упоминается донат) и исключили из хаба D.
Tags:
Hubs:
+41
Comments 34
Comments Comments 34

Articles