Вышла (http://forum.dlang.org/thread/mq9ohk$1c1r$1@digitalmars.com) версия 2.068 кроссплатформенного компилятора языка программирования D (http://ru.wikipedia.org/wiki/D_%28%D1%8F%...: Digital Mars D (DMD (http://dlang.org/)). D — это компилируемый в машинный код язык из семейства си‐подобных, включающий в себя опциональный сборщик мусора, мощную систему метапрограммирования, удобные шаблоны, исполнение D-кода во время компиляции, систему модулей вместо «include». D позволяет без труда использовать библиотеки на языке C, а также имеет возможность использовать некоторые C++-библиотеки и ObjC-библиотеки. Компилятор DDMD поддерживает системы GNU/Linux, Windows, OS X, FreeBSD, и архитектуры x86, x86_64, x64.Основные изменения и новшества версии 2.068:
- Изменения в компиляторе:
- Новый ключ командной строки "-profile=gc" позволяет профилировать выделение памяти.
- Блоки юниттестов (unittest) больше не парсятся, пока не задан ключ командной строки "-unittest".
- Сгенерированые компилятором деструкторы и постблиттеры (postblitter) теперь доступны по именам «__xdtor» и «__xpostblit».- Изменения в языке:
- Добавлена директива pragma(inline), для указания компилятору на то, что некоторые функции следует инлайнить всегда «pragma(inline, true)» или использовать для них обычные правила «pragma(inline, false)».- Для функций, тип возвращаемого значения у которых указан как auto, компилятор теперь будет автоматически выводить атрибуты pure, @safe, nothrow, @nogc (раньше это делалось только для шаблонов).
- Парcер теперь позволяет использовать индексированные туплы (структура, существующая только во время компиляции и позволяющая хранить типы) как декларации типов: «T[0].S myvar;». Подробнее см. в http://dlang.org/changelog.html#index-type-followed-ident (описании).
- Аргументы шаблонов теперь могут быть выведены на основе аргументов функции:
<font color="#461b7e">
void previously(T=int) (T t=0) {} // раньше необходимо было так
void now(T) (T t=0) {} // а теперь можно и так
</font>
- Некоторые ошибочные приведения типов, которые раньше определялись на стадии генерации кода, теперь определяются на стадии семантического анализа. Это улучшило сообщения об ошибках и работу CTFE-движка, ответственного за исполнение D-кода во время компиляции.- Изменения в стандартной библиотеке:
- Множество функций теперь работают с InputRange и OutputRange (абстракциями для получения входных данных и выдачи выходных данных) вместо массивов.- Модуль std.typetuple был переименован в std.meta. Для обеспечения совместимости std.typetuple сохранён в виде псевдонима std.meta.
- Сущность TypeTuple была переименована в AliasSeq. Для обеспечения совместимости сохранён псевдоним.
- Добавлен CTFE-шаблон hexString, который должен заменить встроенные в язык hex-строки:
<font color="#461b7e">
x"304A314B» // было
hexString!»304A314B» // стало
</font>- Добавлена CTFE-функция hasUDA для проверки наличия у символов UDA (определяемых пользователем атрибутов времени компиляции).
- Вызовы GC API теперь могут быть отдельно профилированы.
- Переписана работа с синхронизированными (synchronized) объектами в druntime. Починена ошибка с гонкой во время инициализации мьютекса.
- Сгенерированный вручную интерфейсный файл object.di больше не нужен, компилятор использует оригинальный object.d.
- Новая реализация AA (ассоциативных массивов), с новой схемой разрешения конфликтов при совпадении хэшей. Чуть быстрее и лучше дружит с кэшем процессоров.
- Улучшена работа встроенного инструмента code coverage.
- Функция executeShell теперь игнорирует переменную среды SHELL и всегда использует sh.
- Функция byLine (чтение текстового файла построчно) была переписана и значительно ускорена (до трёх раз).
- В пакет std.algorithm добавлены предикаты ordered и strictlyOrdered для проверки, отсортирована ли последовательность значений.
- Шаблон RefCounted использует новый атрибут return, чтобы указать компилятору, что внутренний объект шаблона не может быть использован вне лексического блока (espace checking).
Также следует отметить, что в будущем релизе 2.069 используемый сейчас фронтэнд, написанный на подмножестве языка C++, будет заменён фронтэндом, написаным на языке D. Фронтэнд на языке D делается при помощи полуавтоматической трансляции C++ кода, поэтому до версии 2.069 никаких изменений (кроме очевидных исправлений ошибок) во фронтэнде не будет. Кодовая база библиотек druntime и Phobos, тем не менее, не заморожена.
URL: http://forum.dlang.org/thread/mq9ohk$1c1r$1@digitalmars.com
Новость: http://www.opennet.me/opennews/art.shtml?num=42756
Интересно сравнить бы его с Go
Интересно сравнить бы его с Rust
Интересно зачем его сравнивать?
Получилось, что "D" меньше в обоих случаях.:)
$ ghci
GHCi, version 7.10.1: http://www.haskell.org/ghc/ :? for help
Prelude> "D" `compare` "Go"
LT
Prelude> "D" `compare` "Rust"
LT
Prelude>
Спасибо. Я как раз не знаком с Haskell.
О, а вот и матёрые функциональщики продемострировали осмысленность и практическую полезность своей деятельности :-)
Оба жжёте!! :)))А Ди - прекрасен!
В рассылке (веб-морда вот здесь - http://forum.dlang.org/group/general) проскакивали сравнения, но деталей не знаю.А вот с Go его сравнивать смысла не имеет - это примерно как сравнивать, скажем, Markdown и TeX - простота против выразительной мощи. И применения, соответственно, совсем разные.
>В рассылке проскакивали сравнения, но деталей не знаю.там не сравнивали напрямую, а чесали головы и обсуждали, что сделало такой ограниченный язык как Go популярным, и что из этого опыта можно применить в D. Сошлись на том, что точно нужен хороший тулчейн (отладка, форматирование, рефакторинг, и прочий intellisense), и точно нужен информативный сайт, чтобы юзер, желающий изучить D, мог туда зайти и через N минут сказать "ого, я уже знаю как написать это на D!"
сейчас зашел на dlang.org - нетривиальный пример кода на самом видном месте, форум с разделами "Debuggers" и "IDEs" опять же на самом видном месте. В общем, люди работают.
> чесали головы и обсуждали, что сделало такой ограниченный язык как Go популярнымПример Java в расчёсанные головы не пришёл?
На нём хорошо видно что делает языки популярными.
те, кто в курсе — те не обсуждали, а просто смотрели. и продолжали совершенствовать бронепоезд.
Это я помню, там сравнительно недавно были разговоры о Rust, а не о Go
> сейчас зашел на dlang.org - нетривиальный пример кода на самом видном месте,Если вы вообще на чём-то си-подобном писали хотя бы месяц, то пример можно построчно понять. Прелесть примера - в крайней схожести с "обычным Си" и парой приятных плюшек.
> форум с разделами "Debuggers" и "IDEs" опять же на самом видном
Для этого есть очевидный "getting started" - там все ссылки. Пока человек вообще не решил, нужен ему язык или нет, нет смысла тыкать его в инструментарий.
> В общем, люди работают.
:) В меру сил. Не забывай, Ди сообщество - это не для нубов, желающих изучить программинг - он скорее для тех, кто устал от выкрутасов сипипей и готов поднять свой уровень.
> Интересно сравнить бы его с RustDone, https://en.wikipedia.org/wiki/Comparison_of_programming_lang... Next!
Кхм. Это вы называете сравнением?
> Кхм. Это вы называете сравнением?WP это называет Генералом Комраризьоном. Отмотай там же вверх - там _ещё_ по категориям кучка сравнений.
И да, на вопрос в комментарии на опеннет "хотельсь бы сравнений" -- это именно что их есть у WP.
Тоже ерунда. во-первых, там, в общем-то, описаны полторы фичи, являющиеся хоть как-то общими. То есть все частности, которые обычно и дают основную фишку языка, туда не попали. Где там дишные ranges, контракты Eiffel, сишарповский LINQ? А во-вторых фичи - это хорошо, но главное - как они увязаны в языке. И тут тупое сравнение вообще не подходит. Поэтому единственный осмысленный путь, который я вижу - искать соответствующие дискуссии и выделять из них "за" и "против". Из дишных дискуссий - вот что-то подобное: http://forum.dlang.org/thread/ckjukjfkgrguhfhkdhhj@foru...
А кто знает что не так с языком? Раньше (буквально пару лет назад) о нём было слышно чаще, а нынче как-то совсем заглохло. Я вижу два варианта: либо язык практически завершён и добавить особо нечего (про Си новости тоже редко проскакивают), либо язык помер и используется как сейчас Форт или ещё что-то такое в стиле легаси.
Может кто из местных использовал?
Нет спецификации, нет специалистов => никто в серьезном проекте его использовать не будет. Вообще, язык - скорее полигон для обкатки идей, которые потом попадают в другие языки.
А это - http://dlang.org/spec.html - что? Ну и да, понятия "серьёзных проектов" и каждого свои.Как раз "обкатки идей" там практически нет. Там обкатка того, как эти идеи застваить взаимодействовать вменяемым образом - причём не теоретически красиво,а на практике удобно - но это не переносится никуда, так как даже лёгкое измнеение набора фич или их семантики меняет всё картинку.
> А это - http://dlang.org/spec.html - что? Ну и да, понятия "серьёзных проектов"
> и каждого свои.Это техническая документация. Лучше чем ничего, конечно, но это не ISO/IEC-14882, к примеру.
И не надо говорить, что стандарт не нужен. Нужен, и не только как единое описание языка, не зависящее от реализации. При стандартизации многие идеи пересматриваются спецами с самым разным опытом и знаниями и в результате остается лучший вариант. А здесь языком рулит небольшая группа людей - даже во главе с Александреску это не обеспечивает нужного уровня проработки. К примеру, описание ассемблера в спецификации высокоуровневого языка - это вообще нонсенс, т.к. прибивает гвоздями к конкретной архитектуре. Как результат - описания модели памяти попросту нет. Примечания вроде "Note that dmd currently does not comply with left to right evaluation of function arguments and AssignExpression." в _спецификации_языка_ отдельно доставляют.
> Как раз "обкатки идей" там практически нет. Там обкатка того, как эти
> идеи застваить взаимодействовать вменяемым образом - причём не теоретически красиво,а
> на практике удобноЯ это и сказал.
ты ошибся адресом: комитет c++ заседает в другом месте. а нам ваши стандарты вместе с комитетами не нужны. как и твои советы — конечно, «спецов с разными знаниями и опытом» не бывает вне комитетов. гуляй, вася.
Ну вот в принципе всё как бы красиво сказано. А по факту - язык удобен несмотря на "маленькую группку", уже с год как достаточно стабилен и есть пара фирм, которые на нём реально пишут и довольны. Для тех же плюсов ISO-стандарт появился существенно позже распространения самого языка. Не сильно оно им помешало. А сейчас, когда редко для чего есть полноценные сторонние реализации, это и подавно не особенно критично.А по поводу памяти - выравнивания описаны, что ещё вам нужно забивать гвоздями в спеку? Несовершенства, вроде встроенного ассемблера - артефакта x86-only - да, есть. Но на практике оно вообще никак не мешает.
А упомянутый вами пассаж - как по мне, очень хорош. Может, формально это и ужасно, но для программиста отлично, когда о возможных проблемах сообщается не в каком-то тёмном углу, а прямо в спеке.
В общем, перфекционизм это всё, не более.
> Ну вот в принципе всё как бы красиво сказано.чушь там сказана. зато с умным видом и насуплеными бровями. причём сказана человеком, который вообще никогда никакие языки не разрабатывал, зато точно знает, Как Надо. единственное применение таким «знающим» — посылать их на хутор, где бабочек много.
Зато вы-то, я смотрю, прямо светоч языкостроения. ЧСВ не жмет?
нет, не жмёт. ещё идиотские вопросы есть?
С ним всё более чем так. Особенно по сравнению с парой дет назад. Я, правда, так и не собрался в чём-то реальном его использовать, но послеживаю. Нарисовался нормальный процесс разработки, есть несколько книг, все свары в прошлом. Язык стабилен, крупные баги в основном вычищены, там нарисовалось вполне приличное, хоть и небольшое, колмьюнити, в том числе несколько небольших фирм, которые на D пишут. Плюс куча всего сейчас отложена до перехода на D-версию компилятора, но это скорее о разного рода оптимизациях, которые всем лень делать на плюсах.Единственная проблема - за D нет ни гугла, ни мозиллы с самсунгом, тольку кучка заинтересованных программистов. Так что громко кричать о нём особенно некому.
> Единственная проблема - за D нет ни гугла, ни мозиллы с самсунгом, тольку кучка заинтересованных программистов. Так что громко кричать о нём особенно некому.Facebook пару лет назад вроде заявляли, что где-то используют D.
То заявлял Александреску, который этот язычок и пилит. Ему кое-как удалось пропихнуть пять тысяч строчек в продакшн. А вообще, люди в здравом уме и трезвой памяти вряд ли будут его использовать для чего-то серьёзнее пет-проджектов.
> А вообще, люди в здравом уме
> и трезвой памяти вряд ли будут его использовать для чего-то серьёзнее
> пет-проджектов.sociomantic очень удивлены.
> Facebook пару лет назад вроде заявляли, что где-то используют D.пейцбук использует всё подряд: на чём утилита написалась — то и использует. так получилось, что Walter Bright написал для них несколько утилит на D, активно используемых в процессе разработки — теперь пейцбук и D использует. напишет кто‐нибудь что‐нибудь полезное на брэйнфаке — будут брэйнфак использовать. они там прагматики.
А что не заглохло кроме языков, за которыми стоят мегакорпорации (java, c#, go, rust (с натяжкой))
Python.
> А что не заглохло кроме языков, за которыми стоят мегакорпорации (java, c#, go, rustТак, Си не заглох, на котором они все
> (с натяжкой))
и написаны.
Go 1.5 уже написан на Go.
> Go 1.5 уже написан на Go.Пусть теперь попробуют на нем написать себе операционку и системное окружение. Иначе замена сишечке как-то не вырисовывается...
Си, Си++, РНР, ЯваСкрипт... тысячи их. За этими языками нет мегакорпораций. Даже самых завалящих корпорашек нет.
Ога. Особенно за жабоскриптом то ее нет. Хотя назвать Мозиллу мегакорпорацией действительно можно только с натяжкой.
И кто же оказывает основное влияние не развитие ЖС? За кем остаётся последнее слово (пусть не юридическое, а фактическое, но всё же...)?
За гуглом, вестимо
FORTRAN - вечно живой,
FORTRAN - всюду со мной
у Arisu спроси, он на вдвшных^Wдмдшных листах тусуется и даже чего-то на ем сочиняет.
> А кто знает что не так с языком?всё с ним так. потихоньку вошёл в фазу «у нас есть ещё много интересных идей, но пора бы и притормозить».
> Я вижу два варианта: либо язык практически завершён и добавить особо
> нечегодобавить есть чего, но не надо пока. «не время, Фёдор!» (ц)
> либо язык помер и
> используется как сейчас Форт или ещё что-то такое в стиле легаси.живее всех живых. а новости просто писать особо некому, вот и тишина. в NG движуха вполне на месте, в гите тоже. для маковводов, например, objc bridge активно пилят. стандартная библиотека активно переводится на работу с ranges (что в потенциале делает её @nogc, если range сам @nogc), и такое всё. зачем тут об этом писать, кому это надо из тех, кто D не использует? а кто использует — тот в курсе.
> Может кто из местных использовал?я использую. как основной и практически единственный язык для написания всего: от throwaway утилит и до вполне софта на продажу.
а есть такое что на их форумах люди сравнивают его с RUST, при этом приводя аргументы что то-то например там лучше реализовано?
Конечно. Такое вообще всегда есть - на любую фичу найдётся кто-то, считающий, что она должна быть сделана по-другому, и кто-то, вообще сичтающий её антифичей.http://forum.dlang.org/thread/ckjukjfkgrguhfhkdhhj@foru... - только там много
А как у него с производительностью и потреблением памяти в сравнении с C++? Есть какие-нибудь бенчмарки вроде http://benchmarksgame.alioth.debian.org/ ? Ну или личный опыт.
Я не с целью покритиковать, а серьезно интересуюсь.
> А как у него с производительностью и потреблением памяти в сравнении с
> C++?зависит от компилятора, натурально. сейчас их есть три:
• DMD: компилирует быстро, как понос выходит. качество кода примерно такое же.
• GDC: использует бэкэнд gcc, качество кода как у gcc.
• LDC: использует бэкэнд llvm, качество кода как у llvm.GDC и LDC обычно отстают на одну‐две версии от DMD.
насчёт потребления памяти — это уже как напишешь код. phobos (стандартная библиотека) сильно подвязан на gc (хотя работа в направлении отвязывания идёт), прямое сравнение затруднительно.
в общем и целом — микробенчмарки сосут, как обычно. вдобавок, сильно зависят от того, как написан код. в среднем — вполне сравнимо с цпп. встроенные ассоциативные массивы, правда, получались несколько медленней, чем stl-ные хэши.
из личного опыта: даже выхлоп DMD вполне юзабелен. всё равно большинство прикладного софта занимается ожиданием — то пользователя, то i/o, то сети… критичные по скорости места можно писать практически gc-free. если надо ещё скорости выжать — gdc.
в среднем — gdc пока что несколько хуже g++, потому что не умеет агрессивных девиртуализаций, например. с другой стороны — классы с виртуальными методами в D используются намного реже, чем в C++: вместо этого в D обычно используют простые структуры и метапрограммирование, так что классы с наследованием нужны намного реже.
в общем — вполне юзабелен для разных задач, от игр‐платформеров до высоконагруженых сетевых сервисов. в подавляющем большинстве случаев отлично заменяет C++. траблы могут быть разве что в проектах, которые сильно подвязаны на плюсовые библиотеки: взаимодействие с плюсами есть, но достаточно базовое. то есть, ни stl, ни сложных шаблонов (для этого, понятно, вообще нужно полноценный цпп‐компилятор реализовывать). но так как я от крестовых библиотек бегаю изо всех сил, то мне плевать.
Спасибо за обзор.Язык интересный, но лично я, пока там обязателен gc, с ним связываться не хочу. Меня C++ вполне устраивает.
Если у тебя нет каких-то "странных" задач то GC там обычно к месту, особенно учитывая, что выделений памяти в силу архитектуры языка и библиотеки меньше, чем если, скажем, на Java писать. Больше того - GC может дать приличный прирост производительности, так как избавляет от выделения памяти для перестраховки (когда не знаешь, освободят оригинал после копирования или нет). Ну или move-семантику приходится использовать - но с ней всё же мороки больше. Или подсчёт ссылок - но это вообще радость, особенно в многопоточке.
> пока там обязателен gcа этого я не писал, например. и необязателен, и поддаётся контролю — иначе мой платформер фиг бы нормально работал, в том числе по сетке.
язык, в том числе, позиционируется как системный. поэтому gc опционален. достаточно большая часть фобоса таки использует ranges, так что она тоже на gc не подвязана уже.
а с третьей стороны: чем тебе gc-то так не нравится? обычно эта фобия совершенно беспочвенна — в отличие от мемликов, которые очень даже да. обычно это сродни попыткам «помочь компилятору», написав обратный цикл, например: когда‐то имело смысл, а сейчас никакого.
> А кто знает что не так с языком?У языка нет баблоносного спонсора. Сейчас сам язык достаточно хорошо устаканился, поэтому можно смело пилить свои приблуды. Но нужен влив зелени для организации команды, способной создать хорошую среду для разработки - без IDE ни о какой популяризации речи не идёт.
Хоть одна причина использовать его?
Есть смысл попробовать. Если его логика на вашу хорошо ложится - то это, в общем, уже хорошая причина. А одну-две фичи каких-то не выделишь, там именно что их комбинация удачной оказалась.
> Хоть одна причина использовать его?нет. проходи спокойно дальше.
http://dlang.ru/Why-D-is-Better
>http://dlang.ru/Why-D-is-Better$ curl -I http://dlang.ru/Why-D-is-Better
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 23197
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
Set-Cookie: ASP.NET_SessionId=pt5yteoyqebjilnom5hn3vxv; path=/; HttpOnly
X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 10 Aug 2015 20:09:11 GMTБуээ
Нде, сервер у них явно не на D...
> Нде, сервер у них явно не на D...forum.dlang.org на D. можешь поинтересоваться в гугеле впечатлениями людей. (хинт: insanely fast и всё такое). а для статики — какая разница, чем её отдавать?
Но на фоне Rust писать на D так же приятно как на Python после Perl.
> Но на фоне Rust писать на D так же приятно как на
> Python после Perl.Ну дык создатели Java, C# - "дыбилы", а "твapьцы" Rust "гении" - позиционируя как "убиванец С-like" - синтaксис далеко нe си-шный...
Хм, двусмысленно сказано, хотя писать на D и правда очень приятно и подсаживаешься слегка - уж больно неожиданно компактно получается.
> Хм, двусмысленно сказано, хотя писать на D и правда очень приятно и
> подсаживаешься слегка - уж больно неожиданно компактно получается.я тебе скажу, что очень нефигово подсаживаешься. настолько, что потом ц и цпп бесят отстутствием привычных приятных мелочей.
Э... ну, я сейчас на жизнь зарабатываю писанием на сях - так в них по сравнению с чем угодно отсутствие приятных мелочей бесит. А насчёт плюсов... на новых ничего делать не пришлось, так что уверенности особой нет, но на вид они вполне комфортными стали.
> но на вид они вполне комфортными стали.south park напоминает. когда Рэнди изобрёл IT — футуристическую машину с рычагом, вводящимся в задницу. и все ездили, пока кто‐то не спросил, обязательно ли рычаг вводить. вот цпп — это IT, с рычагом в, который обязателен.
собственно, после офигенных шаблонов и метапрограммирования в D на цппшные потуги без слёз смотреть не получается. если кто слаще редьки не едал — тому, может, и нормально. а кто попробовал реализацию by humans for humans…
Да я насчёт превосходства D не спорю. Но вот чтобы прям уж бесило - не сказал бы. Просто в D начинаешь всякую магию чуть ли не на автопилоте применять, а на плюсах - более "классически" пишешь, да и всё.auto, for-foreach, constexpr, более удобная инициализация, лямбды, decltype - всё это, насколько я успел поиграться, избавляет от кучи мусора, который, в общем, больше всего и раздражал. а шаблоны я в плюсах всегда предпочитал оставлять спецам-авторам либ за исключением самых простых случаев - именно по причине чудовищности. Тем более, что все либы давно есть.
> Но вот чтобы прям уж бесило - не сказал бы.лично меня бесят как раз мелочи. точнее, отсутствие удобных мелочей. с отсутствием чего‐нибудь большого мне смириться легче, а вот мелочи неимоверно достают.
> а шаблоны я в плюсах всегда предпочитал
> оставлять спецам-авторам либ за исключением самых простых случаев - именно по
> причине чудовищности.именно. в отличие от D, где шаблоны пишутся… сами как‐то. потому что просто и удобно.
я не то, чтобы тебя убеждаю, что D крутой. я просто всё ещё в восторге от него, хотя уже не первый год использую.
Извини, но python после perl кажется слишком топорным и желание писать на нем не возникает. Может новичку читать чужой код на python и удобней, но писать на perl значительно приятней.
Когда будет QtD биндинги под Qt 5.5? А какая IDE чтоб держала эту связку. Я был бы счастлив появись такое.
А также KDE Frameworks D
> Когда будет QtD биндинги под Qt 5.5?Я бы не стал уповать на байндинги к каким-то поделиям, писаным-переписаным на непонятных идеях. Есть куча нативных Ди-ГУЁв разной степени готовности, лучше что-то с ними ваять.
Какие например? Вообще то гуевых фреймворков а тем более таких развитых как таковых не так уж и дофига. А про таковые изначально на D вообще впервые слышу.
> А про таковые изначально на D вообще впервые слышу.потому как не слушать, а читать надо было. впрочем, хозяин — барин.
Хватит тявканья! Есть кто-нибудь кто использует/использовал? Может поделиться опытом (+ и -)? Для каких задач годится? И для каких не годится?
ни для чего не годится. проходи, there is nothing interesting here.
Туплы? Туплы?? Блять!В русскоязычном коммьюнити уже давно в качестве перевода термина "tuple" используется "кортеж".
"Туплы", епрст.
> В русскоязычном коммьюнити уже давно в качестве перевода термина "tuple" используется "кортеж".так почини. каюсь, виноват, запамятовал слово.
> так почини. каюсь, виноват, запамятовал слово.Ого, ты написал новость на опеннет? :)
> Ого, ты написал новость на опеннет? :)как я уже отвечал — я иногда это делаю. просто принципиально подписываюсь анонимом.
Так сказал, будто ты никогда не дебажил легаси код по загенерейченому темплейту...
но ведь от этого менее кривой фраза не становится.
Да я не спорю, это был сарказм. Меня вообще бесит безумное использование в среде программистов английских слов при наличии адекватных русских аналогов.
Как вам такое, например: "пушнул в девелопмент там квик фикс для паблицайзед колонки"
для профжаргона — вполне нормально. более того, это вполне нормально бы смотрелось на профсайте. но, конечно, не на ресурсе типа опеннета, который хоть и более‐менее технической направленности, но ориентирован, всё‐таки, на более широкую ЦА.
> Меня вообще бесит безумное использование в среде программистов английских слов при наличии адекватных русских аналогов.Бывают и обратные ситуации. Например, отсутствие устоявшихся переводов (хотя это наверное подходит под отсутствие адекватных аналогов? кэш, хеширование, коммит, аплинк, да тот же "пушнул" из вашего примера...), неоднозначность русскоязычных терминов, громоздкость и малая употребимость русскоязычного термина, отсутствие (адекватного) материала на русском языке (освоение во всем колелктиве идет сразу в английских терминах), все вышеперечисленное одновременно.
Примеров масса: канальные интервалы, дизъюнкция, конъюнкция, сложение по модулю 2, среднеквадратичное значение, взаимоисключающая блокировка, исчезновение порядка, динамическое ОЗУ, синхронный последовательный интерфейс (сложно придумать более размытое и неоднозначное), да даже иногда невинное "обновить" (гадай update или upgrade, особенно там где и то и другое может быть)... Либо просто громоздко для повседневной речи, либо нужны постоянные дополнительные пояснения из-за неоднозначности, либо людям еще и словарик понадобится чтоб понять о чем речь. Для научной статьи может и самое оно, но не в разговоре же коллег использовать!
А уж если так или иначе используется сленг (ах, да - жаргон )), то какой принят в коллективе такой и принят - смесь языков обычно, да и русские термины зачастую не вот уж научны)P. S. (немного не в тему уже, наверное) Видел в русскоязычном интерфейсе одной Ынтерпрайзной (вот еще слово-пример) программы как download и upload перевели как "загрузить" и "выгрузить" и сразу же, в отличие от оригинала, стало непонятно в какую сторону в каком случае пойдет поток данных.
Вы оба правы, но общая тенденция должна быть в сторону адекватной русскоязычности. Скажем, НЖМД - нафик такой термин не нужен, "хард" и "винт" вполне подойдут. А "пушить в репу" допустимо только в устной речи команды.
Тенденция должна быть в сторону адекватной англоязычности. Языки рпограммирования, названия программ и параметров - на базе английского, подавляющее большинство информации для разработчика - на английском... Либо на нём и говорить либо неизбежно будет смесь с нижегородским.Ну и да, русскоязычный аналог "пушить в репу" - в студию.
Такое растёт, когда оно думается (и пишется для дела) вообще только на английском. А как на русский переводить - вспоминать приходится исключительно для декору, практического смысла никакого нет.
Я вот давно мечтаю, чтобы английский был официально принят чем-то подобным латыни в средние века - официальным языком инженерии и науки. Уж больно много мороки со всеми этими кальками и попытками перетащить термины в другие языки, причём профита нуль - квалифицированный специалист всё равно должен владеть английским.
Хорошо что язык развивается. А вот на исходники компилятора иногда без слез и желания постучаться головой о стенку смотреть невозможно... Некоторые вещи написаны в таком жестком goto-ориентированном стиле, как будто коду 20 лет и его поддерживали совершенно разные люди.
Я конечно понимаю, иногда это вроде для оптимизации (лексер например так написан), но зачем ловить блох на такой оптимизации??? Много совершеенно бессистемного кода. Парсинг командной строки какой-то дикий, все валят в кучу argc/argv, которые еще подменяют пару раз по ходу инициализации компилятора, все это жестко прикручено к основному коду... жесть. Надеюсь что при переписывании на D это отрефакторят.
На фиг тебе исходники компилятора?
Форк делаю. Точнее совсем другой язык программирования. Исходники D оказались ближе всего к тому что я хочу.
только не забудь, что бэкэнд у DMD проприетарный.
>Форк делаю. Точнее совсем другой язык программирования. Исходники D оказались ближе всего к тому что я хочу.SDC возьми лучше.
Cпасибо, посмотрю. Я штук 15 разных проектов рассматривал, когда выбирал что взять за основу, а этот что-то упустил...
> Cпасибо, посмотрю. Я штук 15 разных проектов рассматривал, когда выбирал что взять
> за основу, а этот что-то упустил...ну, тогда и это посмотри: https://github.com/VoltLang/Volta
А зачем, еси не секрет? Другими словами - чем оно должно отличаться от существующих языков?
> А зачем, еси не секрет? Другими словами - чем оно должно отличаться
> от существующих языков?да хотя бы и просто так, например. я вон тоже постоянно порываюсь D форкнуть.
Ну разве что "просто так", для экспериментов. Хотя какой-нибудь способ надругательства над syntax tree я бы туда добавил, это да. Чтобы синтаксические конструкции можно было добавлять подключением модуля, хотя бы в рамках syntax sugar. А то string templates - больно уж стрёмно. Правда, тогда оно станет слегка write-only, но это ж мелочи :-)
> Правда, тогда оно станет слегка write-only, но это ж мелочи :-)да фигня. read-only и сейчас можно сделать без особых проблем, а вот удобно генерировать код и массажировать деревья — не очень.
это «эволюционировавший» код. многое там тянется чуть ли не с DMC, а Уолтер имеет несколько… своеобразные привычки кодирования.тем не менее пока оно работает, никто не будет лезть «украсивливать»: рефакторингом ради рефакторинга devteam не страдает, чай, не мозилла. если вдруг будут что‐то в том районе чинить — тогда и наведут марафет.
Там многое тянется с Zortech C. Я, помнится. нарывался в рассылке примерно на следующее: "я бы поправил, но на плюсах писать неохота, вот как на D будет - тогда". И даже не раз такое видел.
> Там многое тянется с Zortech C. Я, помнится. нарывался в рассылке примерно
> на следующее: "я бы поправил, но на плюсах писать неохота, вот
> как на D будет - тогда". И даже не раз такое
> видел.да, некоторые улучшения авторами заморожены «до прихода DDMD». в частности, есть проект перетряхивания CTFE-движка, например, который в долгом ящике лежит. вот и созрели, наконец.
CTFE - это вообще отдельная песня с его нынешней прожорливостью. Я небольшой ORM на нём ляпал - оно три гига жрало :-) Ну, то есть я знаю, что там сейчас вообще никакой сборки мусора нет, так что не дёргался, но выглядело забавно.
это да, память оно жрёт гомерически. по‐моему, с новым фронтэндом это как раз целятся починить. в виде «у вас есть выбор: быстро и надо терабайт рам, или медленно, зато с GC». ;-)
Там коду местами и побольше двадцати лет.
> Функция byLine (чтение текстового файла построчно) была переписана и значительно ускорена (до трёх раз).Хоспыдя! Что ж за маразм там был в оригинале?! Там ускорять-то нечего, прочёл до первого newline и отдавай!
Там много всего было. И откровенная тупизна, и неучёт особенностей платформы, и неожиданные тормоза в том, что тормозить не должно. И нет, оно не так просто - это обобщённая функция (шаблон из ranges еа самом деле), она должна корректно работать любыми терминаторами, в том числе уникодными.