Если ты не гей заходи в етот тред об лучшем языке современности) Когда появился Дэ - страуструп, одерски, гвида, мац, джо, андерс заплакали, когда ричи сообшчили про Дэ он умир. Уолтер Брайт великий человек нашего времени запилил Дэ, и тем самым уничтожил с++, няшную, а заодно и гопарашку, и растодаунов) Сразу же FAQ про Дэ1. Впрс: как читатца D ??? Отвт: - как дэ2. Впрс: чем он лучше чем Отвт:дэ в отличии от с, досточно высокоуровневный чтобы в каждой либе непереизобретать ооп, эрленк и хачкельдэ в отличии от с++ учитца навсигда, а не на 3 года до выхода нового стандарта, когда ты старый ешчё читаеш на 150й странице, и только вот выучил все андефинит бихавир связаные с операндом "+"дэ в отличии от джавы компилитца сразу же в нативный код, поэтому ненадо устанавливать джре и прочую вендор лок хуйню чтобы твои 30кб кода запустилисядэ в отличии от хачкеля широко используем в промышленном програмированиидэ в отличии от лиспа работает на большинстве целевых архитектур а не токо на лис-машинахпро другие языки даже смысла нету упоминать3. Впрс: где скачать такую годноту????Отвт: http://dlang.org/4. Впрс: мне в гейских третах сказали что Дэ ненужен!!!!Отвт: ты гей если видёшся на вскудахты даунов)
>>623030 (OP)>)>Дэ>эрленк>ешчё>компилитца>умирМамку ебал)
>>623030 (OP)Мамку твою ебал. Сажи.
ну ты мудак!гей-программист на D (похоже, единственный в Рашке)
>>625200Может быть покажем друг-другу лямбды?Мимо-гей-программист-на-хаксе
Тред 10/10
>>623036>>623085>>625200>>625515сьебали нахуй отсюдава пидоры))
Тоже гей, как ни странно, на гейОСе
>>623030 (OP)D - это неудачный рефакторинг крестов и фейл во всём.Скрыл говнотред про мёртвый недоязык.
мамку ебал))скрыл)))))
>>625728Харкачую мудреца. Сажи говнотреду. Скрыл.
>>625751>>625728Просто за этим языком не стоит корпораций. Вот вы и беситесь. Го форсят из-за того что его придумал гугл, ангуляр форсят из-за того что его придумал гугл, свифт форсят потому что его придумал эпл. Между тем, корпорации придумывают себе инструмент для конкретной задачи, либо простой vendor lock-in. А быдло жрёт и просит ещё.
>>626577Просто его разрабатывают вроде умные и опытные люди, а действуют как ебанашки.Раньше он был более нахайпован, только хули толку если его авторы на какой-то хуй занимались разработкой своего компилятора, вместо разработки 1 стандартной библиотеки и помощи какому нибудь GDC.
>>626580>авторы на какой-то хуй занимались разработкой своего компилятораИ почему, интересно, авторам языка нельзя разрабатывать эталонный компилятор для их собственного языка? По-твоему, спецификации было бы достаточно? Почему бы Ораклу тогда просто не заняться поддержской gcj, вместо того, чтобы на кой-то хуй пилить собственный комлятор жабы?>вместо разработки 1 стандартной библиотекиА сейчас их сколько?>помощи какому нибудь GDCКоторый использует фронтэнд DMD? Это чтобы на какой-то хуй пилить собственный компилятор, пока пилишь собственный компилятор? Или они должны вместо команды GCC пилить их бекэнд?
>>626790> А сейчас их сколько?Две, сплюснутые в одну, которая как полторы.
>>626790Ресурсы были проебаны на 2 компилятора и библиотеки. А потом С++11 подкатил и уже стало не особо интересно.
>>626790>По-твоему, спецификации было бы достаточно?По моему, можно было сразу делаеть решение на нормальном бэкэнде с человеческой оптимизацией и прочими плюшками, а не писать своего монстра. Суть компилируемых нативных языков - производительность.>Который использует фронтэнд DMD?Дык я и имел в виду допись фронтэнда к gcc. А сейчас там какая-то помойка, которую один компилятор - компилирует, второй - крашится, третий - компилирует с уб. Зато есть один эталонный конпелятор, который конпелирует всё моментально за счёт отсутствия оптимизаций.>Почему бы Ораклу тогда просто не заняться поддержской gcjВ оракле работают не 2,5 человека, и у них были средства чтобы продвинуть своё говно для кофемолок в массы.Итог страдания студентотой и "йа сам!": интересный язык так и не взлетел, а говно для кофемолок и холодильников на всех серверах мира.
>>626820>интересный языкТа же помойка, что и кресты. И nim. Гумно и нинужно.
>>626868у тибя иде загрузилась) иди останавливай мир)
>>623030 (OP)>работает на большинстве целевых архитектур а не токо на лис-машинахПод pxa270 компилится?
>>623030 (OP)Алсо, язык уже вышел из состояния вечной бета-версии?
>>626804>А потом С++11хех ебанашка))) твой си подплас никаму ненужен, у тебя в канторке ешчё пишут на с++ 91го года))
>>626820>По моему, можно было сразу делаеть решение на нормальном бэкэнде у тебя петуха забылися спросить))> человеческой оптимизацией и прочими плюшкамипокпок оптимизация)) ну давай роскажы мне за оптимизации)) лалка>Суть компилируемых нативных языков - производительность.лел што????
>>627354он там и небыл))
>>627366Так он ещё и из альфы не вышел что ли?
>>627365>у тебя петуха забылися спросить))и абасралися))>покпок оптимизация)) ну давай роскажы мне за оптимизации)) лалканиет)) соси>лел што????зачим мне начанать прожэкът на дэ, а не на перле???
>>627407>ниет)) сосислив защитан) что и требовалось доказать
>>627417>слив защитан) что и требовалось доказатьзачим мне разказевать что-та дауничу???)хош аргументации - вытащи хуйок изо рта)))
>>627425достал свой хуй у тебя из рта)))
>>627464покпок хуй))) чо ты там сувал, если он у тибя меньше клитора лольки, как и твой аекью?)))
dlang.org обновился
>>628295Охуенно стало, но, блядь…
>>6273644 года прошло с выхода, уже везде С++11.
>>628295Доброе утро, он в 12 по мск уже такой был.
>>628318И не говори, четыре часа разницы, ну что за слоупочный анон пошел.
если попросить авторов компиляторов Ди добавить обработку в начале файлов крыжика типа @immutable то не получится ли лёгким движениям у нас аналог Rust, где все переменные - immutable?
>>628295>dlang.orgServer: Apache/2.4.17 (FreeBSD) OpenSSL/1.0.2d PHP/5.6.16а чего они свой vibe.d туда не прикрутили?
>>629854Иммутабельность по умолчанию - фишка функциональных языков а не раста, и нинужна.>>629855Наверно потому, что он: а) сделан задолго до вибе.ди;б) им нужна простая онлайн справка на бесплатной цмс, а не технодемка.
>>629882>Иммутабельность по умолчанию - фишка функциональных языков а не раста, и нинужна.pure в D есть тоже ведьи раст не функциональный, вроде как
>>629897Есть, но это не фишка по умолчанию.Раст просто нахватал всех безопасных паттернов из фп и чем то похожую систему типов.
>>629882> Иммутабельность по умолчанию - фишка функциональных языков а не раста, и нинужна.Нужна, нужна. А вот как раз мутабельность нужна далеко не всегда.>>629897> и раст не функциональный, вроде какНе функциональный. Но так как функции могут не только брать замыкания, но и быть параметризованными ими, замыкания в расте дёшевы и используются повсеместно.
Решил упороться сабжем - охуеваю, на кресты без слез смотреть не могу. Никогда не мог в шаблоны на крестах, а тут они пишутся будто их и нету.Увы, сабжу дико не хватает std.gui и нормальной ide. Пока юзаю эклипс, а плагин к идее виснет при попытке поредактировать код и нихуя не автодополняет, хотя dcd-server нашел и запустил.
Дишники, хелп.Вот, есть строка. Которая на самом деле immutable(char)[];То есть изменяемый массив неизменяемых по одтельности символов.Как описать такую же хуйню, только фиксированного размера?immutable(byte)[3] = [1,2,3] это нихуя не то, что нужно.
>>629899>Есть, но это не фишка по умолчанию.ну значит запилить поддержку @immutable и @pure для всего исходника. И сразу раст соснёт!
>>631301immutable(immutable char)[] ?
Дишники, а вас в ди замыкания как диспатчатся: статически или динамически? А захватченное окружение где хранится: на стеке или таки в куче?
>>631644Хуй там был. Так нельзя менять ни массив целиком, ни отдельно по частям.А надо, чтобы можно было поменять целиком, но нельзя по частям. Как со строками, только фиксированного размера.вот так:(immutable int)[5] fff = [1,2,3,4,5];не компилится
Дишники, ответьте мне на такой вопрос:Какого хуя функции для Range не работают с фиксированными массивами? То есть я могу следать map! для byte[], но для byte[40] - хуя с два, мне обязательно надо это говно кастовать.
>>632808А ты не думал, что byte[40] - обычный c-like массив? Схуяли ему итерируемым быть?>>631662Окружение по умолчанию все в куче.Про замыкания и их диспатч где почитать можно?
>>631679Видимо, Александерску с Брайтом пытались воссоздать шутку с сишным const, когда он может иметь по 4-6 значений.immutable(char)[] arr = [1,2,3];arr = [3,2,8]; // okarr[0] = 1; // error: sosi hui
>immutableЗачем это нужно? В чем отличие от const?
>>633041>А ты не думал, что byte[40] - обычный c-like массив? Схуяли ему итерируемым быть?Хуя с 2. byte[40] - точно такой же массив, как и byte[]. Только в его типе уже зашита длина, уже в компилетайме. Сишные массивы там делаются как и в си, малоком и дрочкой с указателем.И он блять, итерируемый. И через форич. В книжке Александреску написано, что если функция требует T[] - то T[n] автоматом к нему кастуется. Но вот блять, для всяких функций из Range - ничего нихуя не кастуется, везде надо вручную кастовать.Оно конечно можно и везде T[] ебашить (то есть просто auto), но хочется доп проверки в компилетайме чтобы не проебаться.
>>633054>immutable(char)[] arr = [1,2,3];>arr = [3,2,8]; // ok>arr[0] = 1; // error: sosi huiЭто все понятно. Но как сделать так же, но с массивом фиксированного размера?
>>633105Если ты про плюсовый/сишный const - то immutable это он и есть.А const тут - для того, чтобы ставить его в параметрах функции, если ты в функции обещаешь нихера его не менять, но передать тебе туда можно и не immutable.
>>631301нихуя не понял тогда что ты хочешь
>>629992>А вот как раз мутабельность нужна далеко не всегда.Без мутабельности язык выродится в хачкель со всей вытекающей из этого трагедией.
>>633160Функции из range работают над rangами: выкусывают из него элементы, обрабатывают их и оставляют в range то, что осталось. Такое пройдёт с T[], но не с T[n] – его длину нельзя изменить.
>>631679>А надо, чтобы можно было поменятьНоркоман, immutable нельзя поменять.>>631662>Дишники, а вас в ди замыкания как диспатчатся: статически или динамически?што>А захватченное окружение где хранится: на стеке или таки в куче?Замыкания бывают двух типов: вниз и вверх. У первых в стеке, у вторых в куче.
>>626820>По моему, можно было сразу делаеть решение на нормальном бэкэндеГнусный бакенд ненормальный, а в llvm плюшки завезут в этом году кроме дебага, а некоторые плюшки они сами отказывались брать.>Суть компилируемых нативных языков - производительность.Производительность – это алгоритмы. Нативная конпеляция просто позволяет не страдать хуйнёй типа доконпеляции кода во время старта программы.
>>633238Очевидно же, он посувать руку себе в анус хочет как с const указателями в си:const char* arr = "qwe";arr = "vqy"; // okarr[1] = 's'; // hui>>633160>Хуя с 2. byte[40] - точно такой же массив, как и byte[]https://dlang.org/spec/arrays.html#static-arrays>These are analogous to C arrays.>>633327>Производительность – это алгоритмы. Нативная конпеляция просто позволяет не страдать хуйнёй типа доконпеляции кода во время старта программы. Вась, одно из другого напрямую вытекает.
>>633322Ты какой то наркоман - функции с Range никогда входные данные не меняют, их вход с выходом никогда не пересекаются.Их суть - ебошить код в функциональном стиле, где иммутабельно все. Они никогда не меняют входной параметр, менять длину им незачем. И вообще - я же говорю, дело решается обычным кастом.
>>633323>Норкоман, immutable нельзя поменять.Но строку (string) ты же можешь поменять? Но поменять только целиком - это блять изменяемый массив неизменяемых символов.Я хочу изменяемый массив неизменяемых переменных фиксированного размера.
>>631160Попробуй monodevelop/xamarin studio с плугом -- как по мне самая годня ide из тех, что есть сейчас для D
>>633386Пробовал как то - под линупсом не завелось.
>>633392Ты чо.Заскринить автокомплит не могу - сбивается от принтскрина.
>>633392Вот как раз под линуксом и сижу. Давно пробовал?
>>633400Ну год назад наверное.
>>633330>Вась, одно из другого напрямую вытекает.Что из чего?
>>633337Строка – ссылочный тип, и ссылка там мутабельная её и можно поменять, а содержимое строка остаётся неизменной. А статический массив – нессылочный тип, с ним такой трюк не пройдёт. Можешь конечно запердолить ссылку на этот массив.
>>633420То есть T[] и T[n] это не одно и то же, они по разному хранятся?Я думал что вся разница - это длина уже прошита в типе, а @length - иммутабельна
>>633414Производительность из нативной конпеляции, а скорость любого, даже самого крутого йобаалгоритма из скорости сгенерированного кода. Если нет уверенности, что все заёбы разработки на нативном языке окупятся как следует - нахуй такое средство.
>>633421Да как в сях.
>>633429Скорость алгоритма происходит из алгоритмической сложности этого алгоритма. Если у тебя экспоненциальный алгоритм, то хоть упердолься с конпеляцией.
>>633434Если у тебя один и тот же алгоритм вообще любой сложности будет выполнятся с одинаковой скоростью на грамотных реализациях на си и яве - удачи.
>>633429Но на ди нет заебов - охуенный же язык.Прям вот как я хотел зделоли.
>>633442Разве что зависть, что нет возврата нескольких аргументов, как в питоне. А так - похож на питон малость, только ошибки при компиляции выдаёт.
>>633446Кортежи есть жи (человеческие, не такие крутые как в расте конеш, но не то уродство из C++).
>>633449И можно в функцию, которая принимает три аргумента, подсунуть тульпу из этих трех типов?
>>633552Можно её развернуть.
>>633571А можно примерчик?
>>633585>auto hoy = tuple(1, 0.1f, "sosach)");Можно развернуть по-колхозному простенько:>myYobaFunction(hoy[0], hoy[2], hoy[1]);Или вот так, красиво но менее понятно:>myYobaFunction(hoy.expand);Или еще вот так можно красоту хуярить:>auto hoy = tuple!("lenght", "radius", "name")(1, 0.1f, "sosach)");>myYobaFunction(hoy.lenght, hoy.name, hoy.radius);
>>633668Меня походу интересует вариант с expand.Мне надо что то вроде hoy.expand.myYobaFunctionЩас проверю, позволяет ли.
Хабар покушать вам принёс:https://habrahabr.ru/post/275801/
>>631160IDE ненужны - достаточно редактора типа нотепад++, кодеблокс или geanyпотому что сейчас всякие continous integration, coverage и прочее - всё это делается сторонними программами для которых так и так надо консольный способ сборки иметь.ебашь конпеляцию в консоли, базарю - ещё захочешь
>>633934Rust разрабатывается с конкретной целью - переписать Фаерфокс. Так что вскукерик Александреску, выпустившего говно без задач, веса не имеют.
>>633951> Rust разрабатывается с конкретной целью - переписать ФаерфоксНикто не переписывает Firefox, успокойся.
>>633934Эта тема - неспособность видеть высокоуровневую реализацию низкоуровневых шаблонов в коде - в Rust-треде в самом начале обсуждалась.
>>633966так поясни - раст лучше ди или нет в этом контексте?(посматриваю на раст, но пугают меня все эти уёбищные мусорные "fn" и "->". ди от этого избавился и слава богу)
>>633984Я выбираю ди, ибо похож на кресты.А раст - какая то неведомая ебаная хуйня с наркоманским синтаксисом.
Прочитал статью и не понял почему автор в предисловии наезжает на D, а потом все примеры у него построены на противопоставлении C++Отдельно обзмеился с предлагаемой там обработкой исключений. В го такое же говно предлагают?Вброс какой-то
тут >>633996 речь об >>633934
>>633984Вот этот пост: >>572830>Если на С++ ты пишешь средствами языка, то на С пишешь то же самое, но паттернами. Нужен тебе специализированный вектор? `#define YOBA_VECTOR_T int/#include "yoba_vector.h/#undef YOBA_VECTOR_T/yoba_int yoba;` вместо `yoba_vector<int> yoba`. Исключения - if(!...) goto cleanup; в больших количествах, HRESULT и прочая ебота. И так далее.>В С++ появилась куча своих паттернов и Rust сделал то же, что и С++ с векторами на дефайнах - оформил это в виде средств языка. На С++ уже давно есть разделение на "библиотечный" код, в котором new и delete разрешены, и код "пользовательский", в котором вместо них нужно использовать умные указатели или векторы. Вот тебе и концепция safe/unsafe, которая вполне рабочая, нужно было ее только оформить в виде части языка. А далее - счастье, ты запретил джуниорам и новичкам в проекте писать unsafe код, и избавлен от кучи проблем. С правилами использования умных указателей все то же самое - они уже давно были на уровне соглашений.Я D не знаю, но так понимаю, что D - это шаг вперёд в сравнении с С++, а Rust - несколько шагов вперёд. Ни в одном системном языке не было столько статических проверок.>пугают меня все эти уёбищные мусорные "fn" и "->"Вообще непонятная придирка. У Раста синтаксис компактный, но читаемый.
>>633998в чём суть отказа в расте от исключений? теперь кодер ОБЯЗАН их все обработать, иначе не соберётся или чо?потому что возврат union из функций, где может быть как результат так и исключение это то же самое что система исключений крестов с разверткой стека и этим вот всем остальным с технической точки хрения
>>633998>Вообще непонятная придирка.В D специально отказались от требующих нажатий шифта стрелок и скобок. Отдельно об этом у них там где-то (на сайте или в книгах) написано. И это реально упрощает (на мой вкус) как написание так и понимание.
>>633998>D - это шаг вперёд в сравнении с С++, а Rust - несколько шагов вперёд. ты сравнить рас т и ди в состоянии? без фанбойствая заебался уже читать этих хаброёбов, которые дрочат на го, раст и пердуину - никто не может трезво рассуждать там.
>>634006>в чём суть отказа в расте от исключений? теперь кодер ОБЯЗАН их все обработать, иначе не соберётся или чо?Суть в том, что мы готовы написать лишний раз try! ради гарантии обработки исключения, непередачи его выше, чем нужно, за счёт указания в типах.>это то же самое что система исключений крестов с разверткой стека и этим вот всем остальным с технической точки зренияНе знаю точно, как исключения в крестах работают. По крайней мере в расте overhead не больший, а может даже меньший, потому что исключения не могут передаваться бесконечо вверх как в крестах.>В D специально отказались от требующих нажатий шифта стрелок и скобок.Это хорошо. Я поклонник хорошего синтаксиса в ЯП. Но синтаксис Раста не считаю хуже, он просто другой.>ты сравнить рас т и ди в состоянии? без фанбойстваНет. Я сейчас глянул D, последий раз смотрел 4 года назад - вижу, язык неплохо продвинулся вперёд, так что мои старые данные неактуальны.
>>634006> в чём суть отказа в расте от исключений?1. Да, ты должен обработать ошибку. Правда, unwrap — тоже обработка.2. Тип функции прямо указывает на то, что что функция может вернуть ошибку (как это и должно быть)3. Нет развёртки стека на каждый чих.4. Из-за отсутствия HKT в языке нельзя провозгласить Option и Result монадами и использовать do-блоки. Зато есть какой-никакой чейнинг и костыль `try!`.
>>634014>Не знаю точно, как исключения в крестах работаютВи таки будете смеялъсо, но это всего лишь синтаксический сахарок над операторами возврата. Из нескольких функций сразу.И оверхед там и правда нулевой (почти).
>>633998>У Раста синтаксис компактный, но читаемый. Нихуя не читаемый. Почему окамловский не оставили? Вообще, не понимаю, что всех так к фигурным скобкам тянет. Что один, что второй нахуярили говна какого-то и радуются, но у первого хоть читабельно вышло.
>>634025>Вообще, не понимаю, что всех так к фигурным скобкам тянет.Вы серьёзно? Поебать вообще, скобочки, do..end или ещё какая параша, одих хер ориентируешься по отступам.
>>633998>а Rust - несколько шагов вперёдОт C. Не от C++ (если говорить не о C++98).Позиция "замены плюсов" занята пиара ради, как префикс "java" у "javascript".Какбе сразу выражу позицию: C++ говорит - вот тебе супер синтаксис, реализуй чо хош и как хош, полная швабода, хоть роняй конпелятор с аут-оф-мемори бустом кек, только убери C подальше из пользовательского кода и заныкай его в свои недры.Rust говорит - вот тебе с ссылки-хуесылки, и глобальные переменные, и модель ооп которая покажет все преимущества процедурного подхода, и всё сразу, продолжай писать как на С везде. Только ты будешь это писать как я тебе скажу, потому что ты ОБЯЗАН обрабатывать ошибки и тд.
>>634093>Только ты будешь это писать как я тебе скажу, потому что ты ОБЯЗАН обрабатывать ошибки и тд.Есть unsafe, так что мимо.
>>634096Хуёво меткость меряешь, и в D он есть, и в C++ можно писать как в C. Только это не значит, что так надо писать.Кстати, если я правильно знаю, в расте обработка ошибок построена на системе типов. В unsafe можно на неё просто насрать, используя например, стандартную библиотеку.
>>634105>В unsafe можно на неё просто насрать, используя например, стандартную библиотеку?Это вопрос, если чо.
>>634108> В unsafe можно на неё просто насрать, используя например, стандартную библиотеку?Очевидно, что нет. Хотя, ты можешь сделать transmute и получить UB.
Обычно просто используется метод unwrap, который или разворачивает значение, или же паникует.
>>634200Значится, я таки прав - unsafe это костыль, и легитимными средствами в расте делать что хочешь нельзя.
>>634207У unsafe довольно-таки скромная функциональность: https://doc.rust-lang.org/book/unsafe.html#unsafe-superpowers> и легитимными средствами в расте делать что хочешь нельзяМожно, но с UB. Прям как в С, лол.
>>634018> 1. Да, ты должен обработать ошибку. Правда, unwrap — тоже обработка.А "снаружи" функции видно какого типа эта ошибка может быть? Как я понимаю, нет.А значит рано или поздно произойдёт необрабатываемое никем исключение и всё точно как исключениями некрасиво упадёт>2. Тип функции прямо указывает на то, что что функция может вернуть ошибку (как это и должно быть)nothrow указывает, что функция не может вернуть ошибку, как это и должно быть
>>634432Прежде чем писать фигню иди посмотри вначале как ошибки в расте обрабатываются.
>>634432Паника существует не для того, чтобы обрабатывать ошибки. Она лишь раскручивает стек, вызывает деструкторы и убивает тред.В стабильном расте ты даже не можешь отловить панику.Используя unwrap, ты как бы говоришь «значение или смерть!».> А "снаружи" функции видно какого типа эта ошибка может быть?Функция возвращает Result<T, E> же.> nothrow указывает, что функция не может вернуть ошибку, как это и должно бытьДа, но по-умолчанию функция не должна возвращать ошибку.В той же Java есть checked exceptions, но это малость костыльное решение.А вообще, читай http://rurust.github.io/rust_book_ru/src/error-handling.html
>>634634>Используя unwrap, ты как бы говоришь «значение или смерть!».Nonnullable система типов синтаксически реализованная через анус, в отличие от такой же хуитки в свифте и котлине. ухади
>>634642Напротив же, всё максимум прямолинейно.Можешь глянуть ещё https://wiki.haskell.org/Error_vs._Exception
>>634018>4. Из-за отсутствия HKT в языке нельзя провозгласить Option и Result монадами и использовать do-блоки. Зато есть какой-никакой чейнинг и костыль `try!`.Для do-блоков HKT необязательны, как например в C# или Скале - там достаточно чтобы тип имел методы Select/map и SelectMany/flatMap. В Скале HKT есть, но Option, Try и другие монады не принадлежат этому тайпклассу, его вообще нет в стандартной библиотеке. мимокрокодил
>>634634>Функция возвращает Result<T, E> же.а если функция вызывала функцию, которая вернула исключение?в обычных языках с исключениями этих самых типов исключений может быть хоть сколько вложено же
>>634455>Прежде чем писать фигню иди посмотри вначале как ошибки в расте обрабатываются.Так я посмотрел же. Видимо, понял неверно и теперь вот проясняю
>>634650Нету в расте исключений.
>>634650Функция `f1` обрабатывает результат функции `f2` типа `Result<T2, E2>` стандартными способами (в которые входит и макрос `try!`).Вот тебе совсем на примерах, если книгу не осилил: http://rustbyexample.com/error.html
>>634657ну то есть, строго говоря, мы можем не обрабатывать ВСЕ варианты возможных исключений?тогда опять вопрос: ну и в чём принципиальная разница между обычными эксепшенами (которым 30 лет и они проверены вдоль и поперёк) и этой хуергой?
>>633934Из растаманского треда протекли растаманы.
>>635175В смысле? Есть Result<T, E>, для которого тебе так или иначе придётся делать match с обработкой и результата, и ошибки.Есть паника, которая убивает тред и не ловится.Есть unwrap, который делает следующее:[CODE]match znachenie { Ok(z) => z, Err(o) => panic!("SOSNOOLEY: {}", o)}[/CODE]Есть `try!`, который «значение или возврат!».
>>634654патаму шта раст сосёт у Дэшачки)где в вашим расте исключения? где у вас темплайты? где вот ето всё? у вас хотябы static if есь? нету??? ахаха уёбывайте отсюдава из трета белых господ
>>635595>Есть паника, которая убивает тред и не ловится.>убивает тредахахахаАХАХАХАХААХАХАХАХАХАХлол>match znachenie {Ok(z) => z,Err(o) => panic!("SOSNOOLEY: {}", o)}худший кот который я видил)
О, оп даун приперся.Запили ахуенную историю чтоле, где пропадал.
Так есть ли у раста хоть один профит перед дишечкой?
>>636317Только скорость, вытекающая из C-подхода.
>>636323Разве у дишечки есть проблемы со скоростью?
>>636317нету, растик сосёт по всем фронтам)
>>636373У D есть GC, но нет аффинных типов.
>>636552что за афинные типы?
>>636559http://mitpress.mit.edu/sites/default/files/titles/content/9780262162289_sch_0001.pdf
>>636561И при чём тут скорость?
>>636581В том что он лалка.Раст - изначально сейф сишечка, которая в некоторых местах даже быстрее её например, с правилом "одна ссылка на одни данные" по дефолту обходится алиасинг и в которой ты все делаешь руками.Ди делался более высокоуровенной сипиптшечкой с gc и пр.
>>636581Потому что без них у тебя есть два стула: или ГЦ, или код с memory safety уровня С.>>636593> и в которой ты все делаешь рукамиЧего же тебе нужно делать ручками в расте?
>>636999Хотя, если стандартная библиотека D полагается на GC, то стул на самом деле только один.
Когда заходишь в Rust-тред, там обсуждают C++ и Go, когда заходишь в D тред обсуждают С++ и Rust.Может сделаете отдельный срачетред?
>>637044Всё познаётся в сравнении, а ты можешь идти сосать член со своей мамашей если что-то не нравится.
>>636999Ну в расте ты ж не всё время сидишь на стуле с дилдой (хоть и прямо сидишь). Есть ещё unsafe.
Кто-то ковырял аллокаторы уже? Пилите прохладные, как вы пилите хайлод и риалтайм на этом вашем дэ
>>637820Я свои аллокаторы пилил. Андрейка как-то заоверинжинирил всё. Мне видится только две стратегии управления памятью: либо ровная сишная куча и индивидуально управляем каждым выделенным куском – но в этом случае не надо ничего абстрагировать, куча так куча, в неё и лезем. Вторая стратегия – выделяем на сцене, а в конце освобождаем всю сцену разом – тут хватит простого делегата, а никакой логики по освобождению не надо. Хайлоад не пишу, пишу маленькие программки, например, хешировалка файлов компиляется в 13кб.
dmd 2.070 вышелнихуя не понял про новый алиас для литералов
>>639908Ого, алиасы к лямбдам, а я как раз пару недель назад хотел такую штуку.
>>639978поясни зачем это?
>>640116Просто сахарок синтаксический. Например, когда тебе нужно сделать кучу проверок перебрав кучу данных по шаблону удобнее делать это с новой фишкой:alias isMyHui = (weight, height) => weight >= 100 && height == 25;..search_results += 2ch_cocks.filter!isMyHui;...search_results += 2ch_vaginas.filter!isMyHui;...search_results += 2ch_cocks.filter!isMyHui;
>>640158>alias isMyHui = (weight, height) =>испортили божественный синтаксис D добавив эту => хуергу
>>640158>alias isMyHui = (weight, height) => weight >= 100 && height == 25;нет, серьёзно, а чем им не подошла обычная функция-делегат с именем? делегаты же есть 100 лет уже
>>640158У вас лямбда — НЕ ГРАЖДАНИН что-ли?
>>640219Да гражданин полноценных, со своей жилплощдью по документам, хули.Это фишка - просто защищённое подобие на препроцессор си.>>640211Такой синтаксис куда удобнее и компактнее.>>640207Отличная хуитка в математическом стиле, которую даже 6-тиклассник поймёт.
>>640230> Это фишка - просто защищённое подобие на препроцессор си.Как-то печально. Могли бы и нормальные лямбды завести, как в расте.
>>640257Блядь, а здесь по твоему что?http://ideone.com/hmUlEJЕсли ты не понял - под "препроцессорной фишкой" я имел ввиду подставку через alias.
>>640207Наоборот, эта штука божественна.
>>640267блджад, ну и чем это лучше этого?http://ideone.com/kavnon
>>640575С функциональным стилем выглядит куда чище и аккуратнее.
>>640628нетнет вообще никакого "функционального стиля"
>>640637Твой вариант выглядит как говно из C++03 где лямбды не завезли.И таки да - лямбды изначально пришли из функциональщины (с "чистыми" однострочниками и прочим), т.е. нельзя сказать что его нету - код написанный по паттернам фп ты всегда отделишь от обычной императивщины.
>>640649> Твой вариант выглядит как говно из C++03 где лямбды не завезли.> код написанный по паттернам фп ты всегда отделишь от обычной императивщины.ты лямбды ради лямбд хуячишь? (впрочем, я же знал куда заходил)
>>640754Я хуячу лямбды ради удобства. А у тебя психическое расстройство манямирка либо неумение держать смысловую нагрузку более 3-х слов, если ты так мои слава интерпретируешь.
>>640754Почему лямбды ради лямбд?С лямбдами тупо короче.
>>640754>>640637>>640575>>640257>>637044Ахуеть, почему в мой тред заходит такой жывотный скам?
>>640766> С лямбдами тупо короче.подсчитай строки-то
>>640779хаскелисты из своего илитария протекли?
>>640782Где подсчитать?Давай пример то.
>>640785>Где подсчитать?и>> А у тебя психическое расстройство манямирка либо неумение держать смысловую нагрузку более 3-х слов, если ты так мои слава интерпретируешь.ну да ладно, вот ссылки:http://ideone.com/hmUlEJhttp://ideone.com/kavnon
>>640795Ты дурак что ли? В треде больше двух анонимов.>> А у тебя психическое расстройство манямирка либо неумение держать смысловую нагрузку более 3-х слов, если ты так мои слава интерпретируешь.И сабж писал не я.По ссылкам прошел, и тут лямбда нахер не нужна.Лямбды нужны для обработки списков. Короче - подсовывать их во всякие там map! и filter!.
>>640800К примеру, как их применять: (пишу без IDE по памяти, может и не компильнуться)bool[] data = [1,0,1,0,1,1,0,1];//вывести эту ебань как "1010 1101" - группами по 4 цифрыdata.map!(x => x ? '1' : '0').chunks(4).join(' ').writeln;
Вышла книга "D Web Development", на английскомскачать pdf без регистрации и СМС:http://vk.com/doc-471951_437245037Обмазываюсь не торопясь, разжёвано хорошо, для тупых. Начинают аж с установки конпелятора и описания работы с dub
>>640812Отлично, то что надо.Хочу упороться Vibe.d и написать свой двач.
>>640814та же фигняэто годный шанс для (бывших) плюсоёбов вкатиться в веб. ништяки обещаются знатные - сайт, написанный на компилируемом аналоге С++ должен быть быстрым
>>640828Если только для себя.Вакансий по сабжу в лучшем случае не будет еще лет 10, в худшем - никогда.
>>640829в Рашке - дано и да, я сам себе начальникпойдёшь ко мне крудошлёпить веб на D?
>>633386На этот раз поставил таки MonoDevelop, все срослось.Как сделать, чтобы блядский консольный вывод не шел в отдельное окно? Галочку в настройках проекта поставил - ему на нее поебать похоже.
>>640803Фурычит.http://ideone.com/Gbij27При одном очевидном плюсе UFCS (и в цепочку логичнее писать, и короче - одна точка вместо двух скобок) - есть и жирный минус.Гребаный автокомплит не понимает, что функцию можно вызвать как метод и нихуя не подсказывает.
>>640803ну и зачем тут "именованная" лямбда?
>>640908По хорошему его надо ещё настроить - http://lhs-blog.info/programming/dlang/osvaivaem-monodevelop-monod-chast-i-ustanovka-i-bazovoe-znakomstvo-s-nastroykami/
>>640923Очевидно, подставлять её, если она используется больше, чем один раз.
>>640970Ну, полазил я по этим галочкам.Только вот вывода в нижнюю панель вместо консольного окна там все равно нет.
>>641219тогда обычная функция бы подошлатут скорее экономия в отсутствии необходимости многократно писать одинаковые аргументы
>>623030 (OP)>дэ в отличии от хачкеля широко используем в промышленном програмированиилал, д конечно интересная затея, но ни о каком широком использовании речи не идет. Сам александреску говорил что используется с ФБ экспериментально, да еще в паре проектов.
>>641880Если анон хочет профессионально (то есть, за деньги) кодить на D то он мог бы тут или где-то ещё оставить свои контакты.Месяца через полтора-два мы будем начинать с проект на D и нам нужны будут удалённые кодеры. Единственный минус - зарплата на уровне (Планируем 40к, а может и ниже, доживём - увидим) нищерашкинского рынка питонокодеров.Проект будет про b2b, базы, формочки, vibed
>>642006Скилл то какой требуется?
>>641804Ну и типы параметрам можно не указывать.
>>641804Нет, фича очень хорошая.string str = "429(69-37)+(8-6)/2";alias isDigit = (x) => (x >= '0') && (x <= '9');auto tokens = str.chunkBy!((a,b) => isDigit(a) && isDigit(b));*А теперь попробуй написать это без алиаса к лямбдам.На ideonone кстати хер зальешь, там старый dmd и в них не умеет
>>642376звезды сожрало.string str = "429*(69-37)+(8-6)/2";alias isDigit = (x) => (x >= '0') && (x <= '9');auto tokens = str.chunkBy!((a,b) => isDigit(a) && isDigit(b));
>>642376Знаешь, я д не знаю, и не писал на нём никогда, но думаю, это будет как-то так.string str = "429*(69-37)+(8-6)/2";bool isDigit(char x) { return (x >= '0') && (x <= '9'); };auto tokens = str.chunkBy!((a,b) => isDigit(a) && isDigit(b));
>>642428Только вот сабж не работает.
>>642454Почему? http://ideone.com/tdMnC0
>>642470>Почему?Потому что то, что не работает - ты почему-то закомментировал, лол
>>642091> Скилл то какой требуется?Наш хитрый план состоит в том, что в настоящее время те, кто считает себя D-кодером, имеют скилл выше среднего по больнице (ведь к D приходят не из-под палки, это - осознанное решение)
>>642377попахивает говнокодом, слегка
>>642472Потому что писало, что у строки нет этого метода. Ты бы разъяснил, ибо я не вижу никакой связи между сахарком для лямбд и левой функцией. Пока это выглядит, как одна из штук, которые принято гринтекстом вбрасывать в треды.
>>642513Разъясняю за того анона:1) Твоё говно не работает, шаблонное питушение для итерации говорит что "predicate is not reflexive";2) У строки такого метода и нету - это всё метопетушение из std.algorithm и сахар в виде UFCS.Проверенный на последнем dmd вариант - http://ideone.com/lqiuDc
>>642500А что тут говнокодом попахивает?Вроде все коротко и ясно.
>>642544на не-ASCII может сломаться
>>643432не-ASCII в арифметическом выражении не может быть по определению.Если "сломается" - вылетит эксепшн, который трактуется как "ввели какую-то хуйню"
Дишники, есть сабж.http://dpaste.dzfl.pl/c29970b821beНа DPaste не работает, компилятор там последний dmd.У меня та же херня, если собирать Debug.Но когда я собираю Release - все ништяк и работает.В чем проблема? Это я где то срукожопил, или баг компилятора?
>>643459>или баг компилятора?запросто может быть. я вчера напоролся на баг с enum, у которого тип был структурой - ldc на такое заругался почему-то, мол ожидается float вместо структуры. Так что багов там - внукам ещё останется.Покажи бажный вывод, лень компилировать
>>643661>Покажи бажный вывод, лень компилироватьи всё, вижу. говорил же вам - нахуй вы лямбды эти ебёте, пишите как люди декларативно
>>643459> рефлексивный предикатЗнаешь, что это? Predicate(a,a) должен быть true для любого a. У тебя, если a - не цифры, то предикат false.ChunkBy требует, чтобы предикат был рефлексивным, транзитивным и симметричным.Так что здесь и ты накосячил, и компилятор в Release сглючил.
>>643688Хотя нет, в документации возможность и потенциальность глюков тоже обозначена. Скосячил только программист.> This predicate must be an equivalence relation, that is, it must be reflexive (pred(x,x) is always true), symmetric (pred(x,y) == pred(y,x)), and transitive (pred(x,y) && pred(y,z) implies pred(x,z)). If this is not the case, the range returned by chunkBy may assert at runtime or behave erratically.В debug режиме возможно проверяется выход предиката на эти свойства.
>>643707Ясно.Тогда я вообще нихера не понимаю, как работает этот хренов chunkBy.Надо его выбрасывать.
>>643716Я не вчитывался в код, но мне кажется, нужен унарный предикат, который на вход будет принимать только одно выражение. Почитай примеры в вики.
>>643744Либо бинарный, если отношение эквивалентности нельзя описать обычным равенством.
Поясните такой вопрос: у меня есть некий класс или структура.Я реализовал для них методы .length() и .opIndex(size_t)Какой мне теперь шаблон вызвать для неё (и как) чтобы автоматически добавить счётчик и методы типа .popFront(), .empty() и т.п.?Мануал говорит, что .length() и .opIndex(size_t) достаточно, чтобы сделать finite range из чего угодно, но не говорит как.
>>648617Ругается оно так:Error: no property 'opCall' for type 'std.range.interfaces.BidirectionalRange!(MyOwnClass)'
>>648621Алсо, уже прогрепал весь std.range* на предмет наличия opCall этого - нету там такого совсем!Чего ей от меня надо?
— Одну минуту, — громко произнес Александреску, — прежде чем продемонстрировать вам способ распития портвешка, о котором все вы, как будто, позабыли, я должен опорожнить свой кишечник.Вот каким образом развратник приступил к омерзительной операции. Его окружили четверо Dбилов: один держал наготове большой ночной горшок, второй взял зажженную свечу и подставил ее поближе к анусу, чтобы было лучше видно происходящее, третий сосал ему член, четвертый, перекинув через руку белоснежное полотенце, целовал главпетуха в губы. Тот, опершись еще на двоих педерастов, поднатужился, и как только появилось невероятное количество дерьма, которое обыкновенно и регулярно выдавал хозяин параши, учитывая страшное количество поглощаемого им борща, тот Dбил, что держал горшок, принялся восхвалять экскременты. «Какое прекрасное Dерьмо! — восклицал он. — Ах, господин мой, какое превосходное говно! Как красиво вы испражняетесь». Когда дифирамбы закончились, педераст, вооруженный салфеткой, языком очистил преддверие ануса, а горшечник подставил содержимое горшка под нос Александреску и опять громогласно восхвалял его. После этого мощная струя мочи ударила в рот сосателю, который тут же проглотил всю жидкость, полотенце завершило то, что не мог сделать язык, и четверо петухов, оставшись без дела, долго сосали поочередно язык, фаллос и задний проход распутника.
Есть какой-то http клиент с поддержкой https?
>>653422std.net.curl разве не поддерживает?
>>648633соус вебмки
>>653441он какой-то унылый, хотет что-то вроде requests для python
>>654343Так блядь, у нас теперь самая лучшая хэтэтэпэ библиотека уже унылая.
>>653422http://vibed.org/api/vibe.http.client/
А есть штука типа Travis CI, но для Windows и с поддержкой среды D?
>>655738>типа Travis CIhttps://ru.m.wikipedia.org/wiki/Travis_CI>множестве языков, включая C, C++, D, JavaScript, Java, PHP, Python и RubyКакой анон ленивый-то пошёл.>но для WindowОй, всё.
>>655738AppVeyor?
>>655400Уж лучше std.net.curl чем это наркоманство с делегатами.
>>655854Он какой-то непонятный Зашел на их сайт, там просят выбрать язык проекта и ди там в выборе нет
Ух ты.Ковыряюсь в языке, захотелось одну фишку - switch по диапазонам (типо как 0-9 или a-z в регекспах).И после гуглинга и пробы выяснилось, что таки сабж есть.switch (c) { case '0': .. case '9': c.writeln; break; default: break;}К моему приятному удивлению, сабж компилится и работает.Так, к слову - вдруг кто не знал.
Почему все так не любят вибе.д?
>>658656А кто не любит то?Я еще не пробовал сабж, только почитал - но есть планы им обмазаться.
>>658656Все – это кто? Пхп-петушки?
>>658664>>658665Ну вот:>>656267>>629882>технодемка.
Есть ли на дишке операционки?Типо танненбаумовского миникса, но на сабже? Т.е. академического интереса, а не практического.
>>658671Первому петушку не нравится делегаты (хз что именно), второй я не хэйтил ("технодемка" не к вбд относится).
>>658675Даhttps://github.com/xomboverlord/xomb
>>658684>второй я не хэйтилНу ладн.
>>658684Сам ты петушок. Ничего не имею против делегатов, но вот так вот:requestHTTP("http://www.example.org/", (scope req) { req.method = HTTPMethod.POST; //req.writeJsonBody(["name": "My Name"]); }, (scope res) { logInfo("Response: %s", res.bodyReader.readAllUTF8()); });кверять уеб, это наркоманство
>>658734парсер лохrequestHTTP("http://www.example.org/", (scope req) { req.method = HTTPMethod.POST; //req.writeJsonBody(["name": "My Name"]); }, (scope res) { logInfo("Response: %s", res.bodyReader.readAllUTF8()); });
>>658735Так это стандартная хуитка с колбэками, в curl и прочих асинхронных библиотеках то же самое.
>>658752Это да, но когда тебе нужно просто запостить пару байт в уеб, вот это вот намного проще:import std.net.curl;auto content = post("d-lang.appspot.com/testUrl2", [1,2,3,4]);
>>658757Ну так и юзай это, когда тебе пяру байт нужно.Чего на говно исходить?
>>658759ебать ты упорот, где я на говно исходил? просил же говно уровня request из python
>>658760Нету ничего такого - ни гугл, ни регистр dub-а ничего не дают можешь сделать хорошее дело и написать, если очень нужно. Видимо, D в REPL-е не используют, и не ебут мозги чтобы не писать 2 лишние строки кода.
Помогите наркоману. Есть json такого вида:{"errors": {"size": 3,"error": [{"message": "spam"},{"message": "eggs"},{"message": "fubu"}],"start-index": 0,"max-result": 3}Хочу с помощью Json от vibe.d сделать что-то вроде с помощью each и join из phobos:test["errors"]["error"].each!(x => x["message"]).join;но эта сука ругается:source/app.d(28,75): Error: template std.array.join cannot deduce function from argument types !()(void), candidates are:/usr/local/Cellar/dmd/2.070.0_1/include/dlang/dmd/std/array.d(1550,41): std.array.join(RoR, R)(RoR ror, R sep) if (isInputRange!RoR && isInputRange!(Unqual!(ElementType!RoR)) && isInputRange!R && is(Unqual!(ElementType!(ElementType!RoR)) == Unqual!(ElementType!R)))/usr/local/Cellar/dmd/2.070.0_1/include/dlang/dmd/std/array.d(1627,41): std.array.join(RoR, E)(RoR ror, E sep) if (isInputRange!RoR && isInputRange!(Unqual!(ElementType!RoR)) && is(E : ElementType!(ElementType!RoR)))/usr/local/Cellar/dmd/2.070.0_1/include/dlang/dmd/std/array.d(1713,41): std.array.join(RoR)(RoR ror) if (isInputRange!RoR && isInputRange!(Unqual!(ElementType!RoR)))
>>658789each же нихуя не возвращает, тебе разве не map нужен?
>>658796Другая хуйня:/usr/local/Cellar/dmd/2.070.0_1/include/dlang/dmd/std/algorithm/iteration.d(552,20): Error: cannot implicitly convert expression (this._input.opDispatch()) of type Json to bool/usr/local/Cellar/dmd/2.070.0_1/include/dlang/dmd/std/algorithm/iteration.d(473,16): Error: template instance app.get_bamboo.__foreachbody2.MapResult!(__lambda2, Json) error instantiatingsource/app.d(28,50): instantiated from here: map!(Json)
>>658802Вот для такого:test["errors"]["error"].map!(x => x["message"]).join;
>>658804Можно кусок кода целиком?Как этот test воссоздать? И желательно без vibe d, он у меня не установлен.
>>658807Вот json строка:`{"errors": {"size": 3,"error": [{"message": "spam"},{"message": "eggs"},{"message": "fubu"}],"start-index": 0,"max-result": 3}`можешь ее использовать, но подозреваю, что тут с vibe.d связано
>>658813Я никогда не юзал json.Напили минимально-работоспособный main.d. Или минимально-неработоспособный.Пока я ставлю этот хренов вайбер
>>658822Уже нашел, спасибо. Вот работающий код:test["errors"]["error"].get!(Json[]).map!(x => x["message"].get!string).join("\n\n");В IRC #d помогли если что.
>>658831Круто. А я вот не втыкаю: dub мне сгенерил демку, а в app.d нету main, я пытаюсь его добавить - пишет, что второй main низзя.Где первый? Как это все пашет?
>>658834все ок, там вместо mailshared static this()он нужен для того, что-бы vibe.d встроил твой говнокод в event-loop
>>658842>mailmainбыстрофикс
>>658842Я уже нашел, в дабфайле нужно VibeDefaultMain заменить на VibeCustomMainМне то евентлуп этот хренов не нужен сейчас, мне жсон обработать и отвалиться.
Кстати а это нормально, что его хелловорлд браузерный так долго компилится?
>>658847можно просто к хуям удалит строку"versions": ["VibeDefaultMain"]из dub.jsonпо дефолту он работает с VibeCustomMain
>>658850Пусть лучше будет явно, чем неявно.
>>658822чтобы юзать Json весь Vibe целиком не надо в зависимости, достаточно добавить "vibe-d:core"
>>660224по моему vibe-d:data все таки
>>660720точно, затупилэто относительно недавно всё появилось в нём
>>658831>В IRC #d помогли если что.Спасибо за намек.Зашел сегодня сам туда по одному вопросу - охренел. В момент накидали советов по делу, я аж не ожидал.Мда, двач развращает. Просто поразительно, что где то можно вести нормальный диалог.
Любопытное открытие: есть эквивалентные проги на D и на джаве. И они подают в консоль выхлоп - примерно 400к строк.Так вот - если запустить time, а выхлопу заткнуть рот через tail -n 0 - то дишная прога станет в 2 раза быстрее, а жабная - в 2 раза медленнее.Интересно, почему...
>>662746>Любопытное открытие:А еще, как выяснилось, обработка исключений - пиздец дорогое удовольствие.Если прицепить ifThrown к функции, которая может дропнуть исключение, и выполняется 1 миллион раз - прога замедлится в 10 раз.
>>662747Свежесть уральских гор, лол. Они даже в больших C++ проектах не используются, посмотри тот же Google style guide.Алсо, это зависит ещё от компилятора – тот же ldc может в Itanium ABI с его "zero cost" исключениями. Правда, таковые они разве что по сравнению с обычными.
>>662747>Если прицепить ifThrown к функции, которая может дропнуть исключение, и выполняется 1 миллион раз - прога замедлится в 10 раз.Не должно быть такого. Попробуй без ifThrown отлавливатьДело в том, что обработка исключения удовольствие дорогое, но исключение - штука редкая так-то если.
>>663648>Не должно быть такого. Попробуй без ifThrown отлавливатьhttps://github.com/D-Programming-Language/phobos/blob/master/std/exception.d#L1572Это просто шаблон для однострочной отловки исключения, дело тут именно в исключениях, которые к каждому вызову довешивают ещё по 5 инструкций.
>>663692>Это просто шаблон для однострочной отловки исключения, дело тут именно в исключениях, которые к каждому вызову довешивают ещё по 5 инструкций.ровно столько довешивают, сколько бы инструкций было бы потрачено на ручную проверку кода возврата
>>663946если бы код возврата приходил в тупле, а не в той же переменной, что и результат, конечно
Пытаюсь на vibe.d небольшой сервисок для дела наковырять. В общем нужно:1. Получить post запрос2. Ответить, что получил3. Дернуть другой сервис на основании данных из запроса4. Запулить данные из предыдущего сервиса в третийПоследние 2 хотелось бы делать в отдельном потоке, но как это лучше сделать на vibe.d учитывая, что результат меня мало волнует, его можно просто залогать. То есть отработку завершения сборки и отправки данных Я делать не буду. Короче, накидайте как правильно это делать, можно на пальцах, бес практис и вот это вот все.
>>664002Я другой чувак, и у меня животрепещущий вопрос: Vibe.d могет в Diet шаблон с жабаскриптом? Нужно вернуть html с canvas'ом, который отображает точки на холсте, а вот сами точки должны быть динамическими и получены от проги на D.
И еще вопросец - тут есть set(контейнер множества), или придется искать как накостылить его на библиотечной RedBlackTree! ?
>>664104http://vibed.org/templates/diet> The main difference is that you write D expressions and statements instead of JavaScript.
>>664137Круто, че. А как мне без джаваскрипта в html5 канваси вообще любой графон кроме текста?
>>664151Хотя нет, средства для него таки естьhttps://github.com/rejectedsoftware/vibe.d/issues/9
>>664161Надеюсь, выгорит.У Дэ с графоном все печально? Нет никаких еще попыток создать "import gui.*"?
>>664166>Надеюсь, выгорит.Всмысле?>У Дэ с графоном все печально? Нет никаких еще попыток создать "import gui.*"? 1) Где взаимосвязь графона с гуем?2) http://code.dlang.org/packages/tkdhttp://code.dlang.org/packages/gtk-d%и ещё куча обвязок для Qt и проч.% - есть, в основном порты, ибо всё давно написано и переписано.
>>664183Алсо, ещё есть десяток говняшек для шинды онли.
>>664183>>У Дэ с графоном все печально?вчера попадались биндинги аж для Вулкана новомодного
>>664104>Я другой чувак, и у меня животрепещущий вопрос: Vibe.d могет в Diet шаблон с жабаскриптом?дакнижку про vibe новую погрепай - там есть
>>664271Ого! Ссылочку можно?Как раз хотел дождаться свежей LTS убунту и попробовать в пуканвулкан.
>>664281https://github.com/Rikarin/VulkanizeDПервая ссылка в гугле.
>>623030 (OP)Что пишут на D? Бот к онлайн игре, парсер твитера, веб сервер или ддос можно на нем написать?
>>664314Всё можно.>ддосТолько ты ёбнутое животное, иди в пхп или питон тред.
>>664319Угадал, я и так с питоном и жабой работаю.
Решил я знатно упороться, и попробовать пописать на сабже для своего планшета. Накатил на него бубунту, поставил ldc. И тут такая непонятная хрень.Что сие значит?
ИЧСХ - хелловорлд на крестах собрался, хоть и не без бубна - из домашней директории запускать мне его не давало, пока не скопировал в /usr/bin
>>664798В топку ldc, поставил gdc и заработало.Эхх, к нему бы графоний...
>>664798Вопрос только один – нахуя? %тут пикча про автобус который можно сделать из хлеба%
>>664837А почему бы и нет?
>>664810>Эхх, к нему бы графоний...Dlangui юзает для отрисовки SDL, судя по вики - вяленый и мир добавили в него в версии 2.0.2, а по дефолту - 2.0.4. А в репах 2.0.0.Жалко...
>>664838Можнт потому, что это сувание руки в анус, и дальше хэловорда ты с планшета м всё равно не уедешь?>>664846Зачем вообще кому-то может пригодится это убогое поделие, когда для D есть полноценные качественные биндинги под всё – от Tcl до Qt?
>>664853>когда для D есть полноценные качественные биндинги под всё – от Tcl до Qt?Я не хочу биндинги блять, я хочу нативную библиотеку - я хочу import gui.qml; import gui.widgets и т.д.Qt - это набор костылей к крестам, попытка сделать из говна сладкую сгущенку. Но как в говно не сыпь сахар - такая сгущенка все равно будет отдавать говном.К примеру - нахуя нужен QThread и ему подобные, если тут есть нативные потоки? Нахуя нужен QString, когда тут нормальные строки? Нахуя нужен QtNetwork, когда есть нормальная сеть + Vibe.d? И так далее.А по поводу "нормальных биндингов" - насколько я помню, QtD протухла, и вроде аж на 4й ветке, а я без qml уже жить не хочу.>Можнт потому, что это сувание руки в анус, и дальше хэловорда ты с планшета м всё равно не уедешь?А вдруг? Я напишу для убунты двач.браузер, учитывая ее пустой тухлый маркет - это даст огромный толчок к появлению новых пользователей у мобильной убунты, Шаттлврот восхитится, позовет в Британию работать на него и в моем личном кабинете лично мне отсосет.Я так устал, что даже когда обосрусь на лекции - это меня не разбудит
>>664856>Я не хочу биндинги блять, я хочу нативную библиотеку - я хочу import gui.qml; import gui.widgets и т.д.Для тебя добавить одну строчку в dependecies dub-файла, видимо, представляется невозможным.>К примеру - нахуя нужен QThread и ему подобные, если тут есть нативные потоки? Нахуя нужен QString, когда тут нормальные строки? Нахуя нужен QtNetwork, когда есть нормальная сеть + Vibe.d? И так далее.Потому что это легаси из начала 2000-х. Тебя никто не заставляет их использовать, код прекрасно разделятся.>А по поводу "нормальных биндингов" - насколько я помню, QtD протухла, и вроде аж на 4й ветке, а я без qml уже жить не хочу.Для 5-ф ветки есть DOtherSide, тоже протухший похоже.Суть в том, что если ты хочешь сделать нормальный кроссплатформенный софт, который выглядит не как инопланетное говнище даже на своей единственной платформе, то выхода тащем-та и нету ни на каком языке – везде всё на биндингах Qt/Tk и иногда Gtk.
>>664871>Тебя никто не заставляет их использоватьДа ну? Разве Qt не на них целиком завязан? Тот же qml завязан на QVariant, который завязан на всякие QString/QList/QObject и прочую парашу.На 90% Qt - это попытка завернуть говно в красивую обертку. Нахер все это нужно, если в phobos все это нормально уложено и без костылей? Я мечтаю, чтобы из Qt выдрали язык Qml и его API (т.е все до единого элементы, Text-Rectangle-Layout-whatever...) и перетащили в D, а все остальное выкинули КЕМ.А биндинги - это костыли в квадрате, сперва костыли к крестам - так теперь еще и вызываются из другого языка, костыльно и устарели к хренам. Проще тогда уж просто на крестах налабать.
>>664875>А биндинги - это костыли в квадрате, сперва костыли к крестам - так теперь еще и вызываются из другого языка, костыльно и устарели к хренам.Так и напиши – я не смотрел не одного биндинга, кроме Qt, но считаю всё костылями.
>>664877>Так и напиши – я не смотрел не одного биндинга, кроме Qt, но считаю всё костылями.Я писал на Qt - я его знаю, все его гребаные QSomeShit-классы. Я таки считаю, что Qt - лучший для гуя из всего, что только создавалось, и вообще образец планирования API.А что, кроме Qt, ты предлагаешь? Какой-нить биндинг к SWT, который и в жабе то послали на хуй и заменили javaFX? Только Qt предлагает декларативное описание интерфейса и логики и динамическое вот это все, а от говна уровня 90х Widget button = new Button("якнопко") - блевать тянет.P.S: смотрю, в списке биндингов появился dqml, и судя по examle'ам они именно сделали как я хотел = спиздили qml подчистую. Надо посмотреть, если не протухло и актуально - будет великолепно
>>664885Хотя, тоже говно и костыли.Взять хотя быauto app = new QApplication();scope(exit) destroy(app);После каждой строчки писать этот scope(exit) - пиздос же. Сборщик мусора есть, а все как негры вручную.
>>664885>Какой-нить биндинг к SWT, который и в жабе то послали на хуй и заменили javaFXЕсли у тебя всё заканчивается на этом - используй это.>Widget button = new Button("якнопко")Есть Gtk, обладающий и нормальной обёрткой (без костылей), и даже формошлёпством. Есть Tkl если кажется что всё - монструозное говно.>После каждой строчки писать этот scope(exit) - пиздос же. Сборщик мусора есть, а все как негры вручную. Так ты не только память очищаешь. Сборщик мусора не дошёл до того, чтобы за тобой например открытые файлы закрывать.
В D есть GC? Язык месты в таком случае: нет виртуальной машины и нет ебли с памятью. Очень жаль, что не взлетит уже никогда.
>Язык мечтыСука.
>>664899>Сборщик мусора не дошёл до того, чтобы за тобой например открытые файлы закрывать.Лол, схрена ли? Взять тот же Qt-шный QFile - как только он будет удален - файл будет закрыт.>>664905Да, есть GC. Впрочем, ебля с памятью не запрещена, она опциональна. Есть и malloc, и счетчик сцылок в стандартной библиотеке.
>>664905>Очень жаль, что не взлетит уже никогда.Ящитаю, что оно уже взлетело. Хотя, что понимать под "взлетит" - если вакансии, то да, нескоро. Это штука с большой инертностью.
>>664909Обидно, а всякие дристоязычки типа руста и скалки уже взлетели.
>>664910Скалка еще бы не взлетела, она же как преемница жабы позиционируется.А насчет раста не смеши - он то в каком месте взлетел? Он, КМК, еще куда поглубже чем D закопан.У дишки симпатичный синтаксис и отличная стандартная либа, на ней просто берешь и пишешь приложение, не ебя себе мозги. А на расте сейчас на ЛОРе в очередной раз пишут список.
>>664002А вот по этому поводу ни у кого мыслей нет?
>>664927D Web Wevelopment возьми (есть pdf на главной dlang.ru висит) и прочитай главу про fibers.
>>664913Вокруг Руста такая шумиха и движуха, так что как эффект снежного кома, полагаю, взлетит.
>>664935Спасибо анон
>>664948В чем шумиха и движуха? И чем раст лучше чем D?Раст это вроде как замена сишечки в его нише, а D - замена крестов.
>>664952В общем-то ничем. По мне так дрисня полная, сам не рад.
>>664952Принциально новые нескучные обои с вырвиглазным синтаксисом и возможностью вынести себе мозг вместо отстрела ноги.
>>664954Лично я читал книжку по расту, но так и не понял в чем его плюсы. Наркоманский упоротый синтаксис который кружит голову. Единственное что я там заметил, чего нет в D - паттерн матчинг. И то - в дишке в switch можно передавать группы через запятую и диапазоны, что довольно удобно, по сравнению с крестами, где нельзя в свитч для строк (да и строк нет по сути) - уже как паттернматчинг.
>>664958Тем более, насколько я понял - раст не может в ООП.
>>664948Вокруг раста нагнанный моззилой недопиар, вроде статей на медиуме "как я с похапе перешёл на руст и щаслив".По факту - это язык для 1 проекта.
>>664963ЧСХ - фраерфокс как тормозил, так и тормозит дальше.
Кстати, огромный минус D - ебанутое название, по которому хуй чего загуглишь. Рака яиц тем, кто придумывал названия для c и d. с++ и c# хотя бы уникальная по напиманию хуйня.
>>664967По "d lang" всё прекрасно гуглится.Алсо, такая же хуйня с goвном.
>>664967Dlang же.
>>664970>>664971Блядский гугл всегда норовит на golang исправить.
>>664973пидорасы сер -- продвигают свое поделие
Ящитаю, дишке для пробивного развития нужна ОС написаная на себе (без сраного артефакта 80-х ака posix), чтобы блять в системе был dub вместо dpkg/rpm, dmd вместо gcc и phobos вместо libc. И чтоб терминал, на котором можно прямо на каком-нить диалекте DScript ебашить вместо баша.И гуй.
ребят, как написать прогу, которая находит смысл жизни?
>>664977int main(){ return 42;}
>>664885https://www.linux.org.ru/people/greatperson/profile это ты?
>>664935> как_нарисовать_сову.pngнету там особо нихуя, в документации не намного меньше. мне бы больше как это правильно сделать. Отдельный класс который хендлит тред и посылает туда данные через send или просто запуливать функцию в отдельный тред и все делов, не городя класс для обработки. И да, как это все создавать и освобождать во время работы. И если загонять функцию в тред, то отомрет ли тред сам, или его надо прибивать. Вот такое вот меня больше интересует.
>>665176>мне бы больше как это правильно сделать.Да блять нету такого. И быть не может по определению - всё реализовывается под конкретные нужды для конкретной цели. Всякие паттерны-хуяттерны-бестпрактикс которыми ты ебёшь себе мозги сделаны для возможности создавать круговорот дешёвых мартышек компаниями. Просто реализовывай как удобно - если нужно быстро накидать и забить делай просто функцию, если в дальнейшем планируешь расширять и т.д. это говно - создавай класс и ебись с архитектурой и прочим.>И если загонять функцию в тред, то отомрет ли тред сам, или его надо прибиватьКакой тред? Созданный мануально средствами стандартной библиотеки/вибе.д или чем-то ещё? Короче, смотри документацию конкретной реализации.
>>665181vibe.d тред, через runWorkerTask() или что-то вроде
>>665083Нет.А в чем логика? Я у того чувака в избранных тегах про qt ничего не увидел.
гребанное дерьмо, пытаюсь вытащить данные с https сайта с помощью vibe.http.client -- так это говно зависло с ошибкой да потом еще и сегфолтнулось:[0EDEC001:0EDECE01 dbg] SSL cert initial error: unable to get local issuer certificateProgram exited with code -11
>>665185http://pastebin.com/eRnp2SViДвощик где-то в этом посте нашёл слово из спам листа, посему копипастнул ответ на пастебин.
>>665207Неужели "без задач"?Кстати, надо бы пастебин в спамлист занести.мимоабу
>>665207ок, буду ковырять, спасибо анон
>>665185>runWorkerTaskПиздец магия какая-то, сколько нужно учить программирование, чтобы понимать, что там в доке написано?мимокрок
>>665226Не быть похапешником достаточно.
>>665176>нету там особо нихуя, в документации не намного меньше. мне бы больше как это правильно сделать.Есть ближе к концу (в последней или предпоследней главе)
>>665181>Всякие паттерны-хуяттерны-бестпрактикс которыми ты ебёшь себе мозги сделаны для возможности создавать круговорот дешёвых мартышек компаниями. Просто реализовывай как удобно - если нужно быстро накидать и забить делай просто функцию, если в дальнейшем планируешь расширять и т.д. это говно - создавай класс и ебись с архитектурой и прочим.удваиваю это>И если загонять функцию в тред, то отомрет ли тред сам, или его надо прибиватьобрати внимание - треды Fiber в vibed это такие треды, которые "олдскул" - когда ещё процессоры были однопоточными то использовались именно такие треды внутри программ чтобы синхронно гуй рисовать и прочее. Кооперативная многопоточность.
Почитал про Котлин, ранее про сишарп и яву, знаю С++ - D уделывает всех их. Почему же оно не взлетает блеать?!
>>664891зачем ты пишешь этот destroy? тебе жизненно важно грохнуть app на момент выхода что-ли?
>>664976>Ящитаю, дишке для пробивного развития нужна ОС написаная на себе (без сраного артефакта 80-х ака posix),никто не мешает начать переписывать ядро на Ди оставив интерфейс С + дописав свои хотелки.> чтобы блять в системе был dub вместо dpkg/rpm, dmd вместо gcc и phobos вместо libc. И чтоб терминал, на котором можно прямо на каком-нить диалекте DScript ебашить вместо баша.Это всё ты можешь и сейчас поставить и настроить. И даже ди в качестве шелла, наверно (но это нахуй не надо - спектрумист штоле?)
>>668656>никто не мешает начать переписывать ядро на ДиКроме монструозности и того факта, что сейчас в ядре линупса может разобраться только тот, кто его пишет сейчас.>Это всё ты можешь и сейчас поставить и настроить. И даже ди в качестве шелла, наверноНо с линупсовым ядром. Где man будет показывать инфу по сишным вызовам, где главной будет glibc и так далее.Кресты взлетели потому, что были быстрыми и фичастыми, а кучу кодеров на сишке не пришлось переучивать. А сишка взлетела потому, что на ней линупс написан.
>>668630D яву не уделывает. Потому что инфраструктура. Под яву есть самая лучшая IDE, на яве можно писать под что угодно. Хоть для МК, хоть для ведроида, хоть для чего угодно. И библиотек дохерища, и готовых ява-кодерков, и гуй можно лабать, и сервер-шмермер.Честно говоря, котлин дишка не уделывает - по удобству написания они сопоставимы, но котлин полностью вписывается в нишу джавы.
>>668630потому, что пеар, за java стоит огромная корпорация, которая ее и протолкнула, а за d по большому счету никого
>>669434Ты с фанатиком общаешься. У фанатика пуребейсика из соседнго треда бейсик тоже всех уделывает.
>>669434>Хоть для МК,это ложь
>>670019https://en.wikipedia.org/wiki/Embedded_Java Просвещайся, дремучий
>>670115реальные примеры дай, а не это говно теоретическоесанки промахнулись, когда сделали ставку на переносимые бинарники. никому не надо запускать софт от микроволновки на компе и наоборот
>>670227>реальные примеры дай, а не это говно теоретическоеТы там в глаза ебешься что-ли?>In January 2013, STMicroelectronics announced full Java support for STM32 F3/F4-series microcontrollers STM32 and stm32java.У меня кстати платка STM32 F4 DISCOVERY завалялась, надо будет попробовать.На работке компилили скрипты на сишке в байткод, и коллега все мечтал байткод от джавы вместо своего прикрутить.
>>670430на эту плату и на D можно конпелировать> Ты там в глаза ебешься что-ли?Да
Чорт. Походу, сишечка быстрее дишечки в 5 с половиной раз (.
>>672112откуда дровишки, какой компилятор, и это про c или про c++?
>>672115Дровишки - переписал свой хелловорлд с дишечки на си - скорость замерять. Собсно, в цикле происходит полтора миллиарда операций. Дишечка справляется за 73 секунды, сишечка - за 13.Скорее всего, дело в этом блядском безопасном доступе к массиву. Щас попробую foreach заюзать - он то по идее без проверок должен работать.У сишечки gcc 5.2.1, дишечка dmd 2.070.1
>>672118и попробуй gdc или ldc
>>672120Заменил for на foreach - но это выиграло лишь пару секунд.А вот заменил класс со свойствами на приватные члены на обычные структуры - и теперь дишная прога всего лишь на 2.5 секунды дольше выполняется, 15 против 13.Пиздец короче, я и не знал, что эти сраные свойства/методы такие жирные.
>>672163Во-первых, если сравниваешь с dmd компилируй сишный код без оптимизаций (флаг -O). Иначе сопоставляй результаты с gdc/ldc.Во-вторых, вкинь код, интересно что именно и насколько правильно ты там тестировал.
>сишный код без оптимизацийТак и было. По крайней мере явное -o0 время не изменилоhttps://ideone.com/7xxrTYhttps://ideone.com/jx0Hk5Сабж считает ближайшую пару точек. Аргумент командной строки - число точек, запускать с 50000 - это даст 1249975000 итераций.
>>672163Сборщик мусора жирный.
>>672313Но в цикле не было создания объектов - собирать было нечего.
>>6722091) В сишном коде ты не проверяешь входной аргумент, и уж тем более не кидаешь исключений;2) p1 и p2 у тебя на си int, т.е. по 4 байта. На D - оба структуры с 2мя double, т.е. 16 байт. Хз зачем ты в сишном коде брал другие значения.Кстати, без лишних проверок твой код (со слайсами и foreach) отрабатывает у меня за 18.8, сишный - за 17.7.Учитывая, что другие компиляторы какого-то хуя не осиливают этот код (ldc говорит что не умеет в итерацию, а gdc валится со странной ошибкой о каком-то static) вполне нормальный результат.
>>672323>1) В сишном коде ты не проверяешь входной аргумент, и уж тем более не кидаешь исключений;Хуйня, а не аргумент - это просто валидация аргументов командной строки. Нужно целое число, больше 1 (для пары нужно как минимум 2). В цикле, который выполняется миллиард раз - нет никаких исключений.>2)p1 и p2 у тебя на си intХерню городишь. sizeof(struct points) почему то 16>Учитывая, что другие компиляторы какого-то хуя не осиливают этот код (ldc говорит что не умеет в итерацию, а gdc валится со странной ошибкой о каком-то static) вполне нормальный результат.У меня 15 секунд дишный и 13 сишный. После того, как я class Point заменил на struct point, ага.Какого хуя получить поле структуры - вместо получить его значение через свойство-геттер - тормозит прогу в 6 раз?Я думал, оно вообще инлайниться должно, в крестах по крайней мере всем подобным методам в хидере inline пишут.
>>672337>Хуйня, а не аргументХуйня - это делать тесты с разной логикой.>Херню городишь. sizeof(struct points) почему то 16А ты читать не умеешь.С - int p1,p2;D - Points p1,p2;Ходя один хуй, кроме 5-10 мс это ничего не даст.>тормозит прогу в 6 раз?Этож dmd, он не особо то что-то умеет оптимизировать. Алсо, попробуй прогнать через него с флагом -O (там он один всего для оптимизаций, лол).Даже в сях они инлайнятся только на усмотрение комплятора (даже расширениями компилятора вроде __forceinline в msvc не фиксится). Поэтому кстати qsort из C++ рвёт классический сишный, там гарантированно все инлайнится шаблонами.
>>672362>Хуйня - это делать тесты с разной логикой.Закомментируй лишние строки в дишке, делов то.На логику работы проги они никак не влияют.>А ты читать не умеешь.>С - int p1,p2;>D - Points p1,p2;Самый первый вариант вообще был на функциональных выебонах, с map'ом, генератором и лямбдами. Я охуел от его "быстродействия", и выкинул нахуй, с обычным for-циклом стало работать в 1000 раз быстрее.
>>672362>D - Points p1,p2;Присваивание произойдет только тогда, когда сработает ifТ.е максимум 50 тысяч раз из полутора миллиардов. А значит, никакой погоды тут не делает.
Можно ли как то расширить слайс, а не только сузить?к примеру:auto a = [1,2,3,4,5,6];auto b = a[1..$-2]; //[2,3,4]auto c = b[0..$+1] // вроде должно быть [2,3,4,5] - авотхуй, RangeError
Вечер в хату.Есть сабж в крестах:typedef struct GLFWwindow GLFWwindow;Как сие конвертировать на дишный?
>>674062Просто перепиши структуру и всё. Это какой-то очередной костыль из си89.Асло, typedef в D - alias.
>>674073Нету у меня структуры, не определена она.Пока сделал alias GLFWwindow = void, но чет мне кажется это костыль и делается как то иначе.
>>674075Макаба тебе в том посте звёздочку ни где не убрала?Посмотри https://dlang.org/spec/interfaceToC.html
>>673249присвой слайсу желаемую длину
>>674075просто struct GLFWwindow; не работает?
>>674078А что, можно вот так написать, а содержимое не расписывать?
>>674078Хм, работает.
>>674077Как? Мне надо расширить слайс, но это не приводит к выходу за границы, т.к расширяемый слайс был сужен.
>>674079>А что, можно вот так написать, а содержимое не расписывать?всегда можно было, и в крестах тоже (или чистом си - забыл)часто бывают бинарные библиотеки, которые не раскрывают внутреннего устройства структур, но позволяют этими структурами оперировать (создавать, сохранять, применять к ним функции и т.д.)
>>674081>Как? arrayName.length = 100500;
>>674196Херню какую-то ты городишь. Если увеличить длинну слайса вот так - он тупо создаст новый массив, и скопирует туда старый + нулем инициализирует новые значения. Короче - слайс перестанет указывать на старый массив. А тут нужен именно сабж.
>>674357ну ты ведь понимаешь что просто так на ровном месте без своего хитрого аллокатора и своей реализации слайсов невозможно взять и увеличить кусок уже выделенной памяти?или ты хочешь хапнуть побольше памяти слайсом, и не важно будет там мусор или память там будет занята другими совсем данными или нет?ты поехавший, в общем
>>675646Ты дурак. Еще раз - заранее известно, что там есть данные. Выделять нихуя не надо - оно уже выделено.auto a = [1,2,3,4,5,6];auto b = a[1..$-2]; //[2,3,4]auto c = b[0..$+1] // вроде должно быть [2,3,4,5] - авотхуй, RangeError
>>675651>// вроде должно быть [2,3,4,5] - авотхуй, RangeErrorДебил блядь, у тебя 6 элементов в слайсе, ты требуешь 7. Что там блядь расширятся должно?
>>675697Что ты несешь?если b[0..$] дает 3 элемента, схуяли b[0..$+1] должно требовать 7 вместо 4?
>>675706Тем более, слайс оно сука расширить не дает, но значение за его пределами все равно можно выдрать адресной арифметикой>auto a = [1,2,3,4,5,6];>auto b = a[1..$-2]; //[2,3,4]>(*(b.ptr + 3)).writeln; //выдаст 5
>>675651>Еще раз - заранее известно, что там есть данные.Такой эвристикой реализация слайсов явно не обладает, особенно в релизном коде (без проверки границ).Тебе придётся написать свою реализацию, и она будет более медленной.
>>675651>Еще раз - заранее известно, что там есть данные. Выделять нихуя не надо - оно уже выделено.Проверяй это с помощью .capacity, а потом, если всё ок, в наглую небезопасно расширяй себе свой анус
>>675714а завести багу в багзиллу совесть не позволяет? в крайнем там растолкуют почем фунт лиха
>>679200это не баг а unsafety фича
Ну как у вас дела, Даноны?
>>685965Плохо - работы нет
>>685994Зато можно побрататься с челиками из хачкельтоеда.
>4. Впрс: мне в гейских третах сказали что Дэ ненужен!!!!Отвт: ты гей если видёшся на вскудахты даунов)> Если ты не гей заходи в етот тред об лучшем языке современности) Тебя ебал огромный педераст, и от резких движений ты, случайно, ебанулся ебалом об быльце кровати, ломанув себе несколько зубов, правда?
>>686095Нахуй ты сюда зашёл, жывотный даун???)))
Сап, двач, мур-мур-мур-мурЕсть сабжевый код.https://ideone.com/Yt345XПроблема в том, что он выдает результатом 3026331761191340503770893373029273844677591368122716618704642247067326254159330908652193057324457123166746681628950720.Реализации на других языках - груви, лишпике, етц - выдают малость другой результат - 3026331761191340503770893372888058869422738484032331390788387569021838371831280294822254761283098828539404148603710720.Например, http://pastebin.com/ZmKktwua.Где проеб? Это я где то проебался, или баг? Если баг - где? В мемоизации? В реализации BigInt?
>>688096>uint x>(x-1 >= 0) ? ...
>>688096Это код из продакшена или лаба2?Написано красиво но что оно делает понять невозможно
>>688423Точняк, слона то я и не приметил. Тханкс а лот!>>688444Очевидно, лаба. Какой к хуям продакшен, на дишечке то? На нем вакансий нет, и в лучшем случае не будет еще лет 10.Это из "олимпиадных задач треда" - грубо говоря, сколькими способами можно на доске 100 на 100 клеток пройти из точки (50,50) до (60,60) за ровно 200 ходов. Какому-то анону ее дали на собеседовании на жуниора.
>>688667>На нем вакансий нет, и в лучшем случае не будет еще лет 10.жути не нагоняй!взлетать начнёт за год, примерно. хуяк и уже ди это не гейство, а мейнстрим.мы делаем на ди небольшие тулзы для продакшена, но не основные, а такие, которые можно если что переписать хоть на чём
>>689632> взлетать начнёт за годПроиграл
>>689648как всякие докеры-гитхабы - однажды просыпаешься, а все уже там
>>691318Когда появился докер и как быстро он взлетел? Это не сравнимо с D.
>>691664Goвну тоже уже 7 лет (если не учитывать что его ключевые концепции копипаста с limbo, которому уже 20+ лет).Говоря про докер, он имел ввиду его эффект – из нихуя появляется крутой проект с никому нахуй не нужным язычком, и язычок уже царь горы. О Go ещё 1,5 года назад знало 1,5 человек, а теперь это говно на каждом шагу, как после резкого оттаивания снега.
>>691691Ну так Go действительно предлагает что-то новое, а D нет.
>>691692Нихуя нового он не предлагает, кроме крутой команды челиков из гугла, которые налижут рантайм до блеска.Просто были явисты которых можно было выучить за 3 недели классами, посадить писать экзамен и принять парочку, а теперь будут гоферы, которым будут объяснять чо такое ссылочки. Тащемта, даже в круговороте мартышек ничего нового не принесло оно.
>>691700>Нихуя нового он не предлагает, кроме крутой команды челиков из гугла, которые налижут рантайм до блеска.А это мало по-твоему? Нет блядь, лучше гениальные имплементации D, одна хуже другой.
>>691716Да, это по-моему вообще нихуя. Выпустили хуйню, которая по убогости превосходит яву 6 и радуются. Завтра гугл начнёт пеареть пхп и ты напишешь так же, что больше нихуя и не нужно? Ну ты совсем кек?
Кто в чём пишет?Я пока остановился на xamarin, но там почему-то плохо работает автодополнение.Например >auto http = HTTP("www.zaloopa.huy");методы http уже не видит.Пытался ставить всКоде, но он вообще никакое автодополнение не видит(dcd, dfmt и т.д. ставил, пути прописывал, но всё равно не пашет).
>>692151Monodevelop с ди-плагином.Да, по сравнению с идеей жабной сосет конечно, но жить можно.
>>692183Так он на нём и сидит.И да: это лучший автокомплит из имеющихся.
>>692197Вот реально, чем хуйней страдать - взяли бы дишники и запилили на дишке - ИДЕ, и чтобы не тормозило как блядская идея.
>>692200три часа назад полную поддержку MSVC только запилили, а тебе уже иде подавай
>>692200Coedit / DlangIDEОбе на ди, и обе говно без задач
>>692695>Coedit>lazarus (кросплатформенный дэльфи)>обе на диТы кек чтоле?>DlangIDEЭто техдемка их UI библиотеки, а не IDE. Вся работа с кодом там делается DCD, который к любому атому/саблайму/виму прикручивается в 6 строчек.Раньше ещё какую-то пилили, но забросили лет 6-7 назад.
>>692698Вот то-то и оно.А ведь реально могло продвинуть язык далеко вперед.Вон, как QtCreator для Qt - кутя своим взрывным ростом во многом ему обязана.
>>692151tamarin из коробки хуёво автодополняет. Попробуй вот это - http://lhs-blog.info/programming/dlang/osvaivaem-monodevelop-monod-chast-i-ustanovka-i-bazovoe-znakomstvo-s-nastroykami/
>>698685Хуйня на самом деле это руководство, его писал "капитан очевидность".Короче я его читал - и ничего нового там не написано.
>>699066поясняю, всё просто: для ди есть 2 вида автодополнений. одно встроенная "эврестическая" фигнюха в твой редактор (типа как в geany и codeblocks - понимает все языки потому что они все примерно одинаково выглядят), другая - отдельная софтина (выше писали название), которая умеет по-настоящему парсить код ди и понимать что там надо показать для того чтобы это было дополнениемтак что, в любой редактор добавь эту софтину и пользуйся(сам не пользуюсь - обычной "эвристики" хватает за глаза)
>>699285>(сам не пользуюсь - обычной "эвристики" хватает за глаза)"Обычной" эвристики там нету - XS даже не подсвечивает код, какое там автодополнение фантазёр.В ксамарине работает только с плагином, DCD тоже ещё паршивенько работает. Обе не справляются с выводом типов из auto, но в ксамарине хоть с ufcs нормально работает (хотя часто не видит импортов вообще).Вообще, dcd ещё даже до релизной версии не дошёл, а уже на уровне ctags работает, так что не плохо.
>>699295>>(сам не пользуюсь - обычной "эвристики" хватает за глаза)>"Обычной" эвристики там нету - XS даже не подсвечивает код, какое там автодополнение фантазёр.А я пользуюсь не этим редактором, а geany - там есть.
Новый dmd вышел - старый код поломался
>>709865Из синтаксических изменений там только приват по умолчанию для функций/классов/тд без явного паблика.
>>709869изменилось понимание импортируемого из других модулей - все проекты стали светиться надписями про deprecated
>>709869>Из синтаксических изменений там только приват по умолчанию для функций/классов/тд без явного паблика.пруфы? не вижу в чейнджлоге
Ну же аноны хватит хуйной страдать пишите на Rust!
>>710042нет
>>710042Руст сосет у дишки взаглот. Что там такого есть?Если ты про ГЦ - то он меня не напрягает.
>>710045Разве что паттернматчинг. Но в дишке нормальный свитч в отличие от крестов, так что все норм.
Кстати, а у D есть возможность сделать реализацию конкурентности и каналов подобно Go?
>>710051А как в го? Приведи кусок кода, который ты хочешь заделать.
>>710045в ди не система типов - а говно,по сути ди - это просто рефакторинг крестов, на деле такое же блевотное говно
>>710053Не, Я в плане планировщика, прозрачности для погроммиста и вот этого вот всего. Не конкретный кусок кода, а именно подобную реализацию.
>>710055> в ди не система типов - а говно,Пруфы в студию.Чем говно? Почему? Пока похоже на кукареканье.
>>710055А по существу, с примерами как правильно и годно?
>>710057Ну, я например не понимаю, что ты имеешь под конкуррентностью.Запустить функцию в потоке? Создаешь таск task!func и выполняешь в новом потоке как executeInNewThread. Я так чекаю прокси на пригодность чтобы макакину мочу в ротеш ебать. Есть вроде и многопоточный foreach. Да дохуя чего есть, я не понимаю, чего именно ты хочешь.Про каналы я не понял. В дишке в библиотеке есть сигналы/слоты - это оно?Есть вроде и "кооперативные потоки", кажись - с yield.
>>710061Планировщик Go умеет перекидывать таски между тредами, если в треде работает долго таска другая. Можно такое сделать?
>>710067Хуй знает. Это же потоки операционной системы - разве не она этим занимается, лол? Ты просто ставишь потоку приоритет. Ну, по крайней мере я в Qt так делал, тут я еще нге смотрел про приоритеты.Или в Go юзаются не потоки ОС, и они переизобрели ее планировщик?
>>710042Нахуя в треде о высокоуровневом языке писать про эту сишку с хачкелеподобной системой типов?>>710051Возможность – есть, такой же крутой рантайм – нету.
>>710061Каналы подобны дишным send/receive но тебе нет нужды знать tid тасков, просто создаешь канал и передаешь его в в две таски -- одна пишет, другая читает. Когда писать закончила, закрыла канал и слушатель завершился отработав все данные. Удобно достаточно.
>>710071Таски это fiber, кооперативная многозадачность, не вытесняющая -- ОС о них нихера не в курсе.
>>710071Системные потоки достаточно тяжелы, поэтому в Goвне "горутины" – это корутины которые шедулятся между системными потоками (созданными при старте), посему их там можно спамить тысячами как в эрланге.
>>710076Хуй знает короче - на практике я такие таски юзал только в скиптах на сишке в микроконтроллере, в дишке нужды не было - юзал потоки ОС. Я не понимаю, как можно к примеру распараллелить загрузку файла не потоками ОС.
>>710077Тогда вроде есть - но конкретно за них я не распишу, бо никогда ими не пользовался.
>>710079Потому что ->>>710077
>>710079Это IO оно охуенно асинхронно распаралеливается и не нужно плодить тяжелые треды (хоть в линухе они таки дешевые) а просто заюзать фибры и aio.
>>710083И на какой задаче это нужно и станет критическим?
>>710110Сетевые сервисы?
>>710162Нет, я просто пытаюсь представить - что такого неблокирующего можно делать в куче потоков одновременно, да так, чтобы не подходили потоки ОС и нужно было обязательно городить гринтреды.Вопрос в том - может ли это понадобиться лично мне, или область применимости этой штуки только если я захочу написать не менее чем свой фейсбук и ворочать огромными датацентрами?
>>710169Если захочешь свой фейсбук — тебе нужно писать что-то уровня эрланга, лел,
>>710179Короче насколько я понял, суть этих "гороутин" - обычная кооперативная многозадачность, где на месте ожидания какой-то хуйни будет yield и переход с следующей задаче. Да, так можно.На работке у нас для такой хуйни был свой диалект сишечки с "wait", который компилился в байткод.
>>710169банальных микросервисов с головой хватит, а гринтреды в любом случае не лишни, особенно если их не надо городить и они есть годные в рантайме, ну и удобные, со скедулером и aio
>>710180именно, легковерсная кооперативная многозадачность, там где io а не числодробилка это очень удобно
>>710184Тот самый случай, когда мы навелосипедили эту хуйню на работе и пользовались, вообще не слышав про гринтреды, го и yield, лол.В качестве "io" было ожидание ответа от датчика - когда едет какой-то механизм и шлет координаты, и нужно дождаться пока он доедет до конца.
>>710051оно есть в фобосе и в vibe.d слегка отличающийся вариант ужеработет норм, юзаю - брат жив
>>710456а как с каналами там?
>>710530Я честно говоря, так и не понял, что это и нахуя оно нужно.Можно популярно объяснить?
>>623030 (OP)Поясните следующие вопросы по D.1. Работал ли кто-нибудь с Fibers? Верно ли что это что-то вроде гринтредов? Можно ли их плодить тысячами как в Эрланге?2. Когда выпустят std незавиящую от сборщика мусора?3. Почему люди до сих пор начинают новые проекты на С++ и др языках, когда есть D?
>>711543> 1. Работал ли кто-нибудь с Fibers? Верно ли что это что-то вроде гринтредов? Можно ли их плодить тысячами как в Эрланге?Не работал. Мог бф попробовать, но не могу придумать задачу для теста, для которой они были бы нужны.2. А чем std зависит от сборщика мусора? Например, стандартные динамические массивы зависят от ГЦ - так есть std.container.array.Array.3. А хрен их знает. Не знаю, кто будет начинать реально новые проекты на с++, это мазохизм какой-то.
>>7115431. Весь vibe.d на этом постороен, так что все кто использует vibe.d используют Fibers или явно (async, runTask) или неявно.2. Сроков точных нет конечно, но сейчас Phobos активно ренжифицируется, что позволяет отказаться от GC для него.3. Язык это не только синтаксис, набор фичей и компилятор для него. Это еще и инфраструктура и экосистема. Ну и реклама да. Язык развивается, но отсутсвие корпорации за спиной сильно заметно.
>>711592> А чем std зависит от сборщика мусораВсё вплоть до контексации строк, в офф. справке описано. Даже делегаты без него запускать — мазохизм с ёблей в виде арифметики указателей на 10 строк.
>>711694> Всё вплоть до контексации строк,Можно же делать Array!char = "Eroha", не? В Array ГЦ нет, и его конкатенация от ГЦ не зависит.
>>711697Где-то была полная статья на эту тему, но её я найти не смог, посему вот так:https://dlang.org/spec/garbage.html#op_involving_gcКак видишь, если массив не зарардкожен — есть, причём при любой операции.
>>711726> Как видишь, если массив не зарардкожен — есть, причём при любой операции.Это для встроенных массивов же. А есть и std.container.array
>>623030 (OP)хочу реализовать небольшое приложение, которое будет отправлять мне емейлы в нужное время.реально ли вообще такое сделать на дэ?
>>711877Дэ не для таких тупых задач, возьми питон для такой ерунды.
>>711877Да, вполне реально: https://code.dlang.org/packages/smtp
>>711884D для любых задач, в том числе и для таких
>>711877Я сделал приложение, которое перебирает прокси и ищет на сосаче рабочие и незабаненные.На дишке вышло в 50 строк, включая пустые строки и штук 12 импортов.Так что да, в нео оче хорошая стандартная библиотека, бери его.
>>711884Из профитов питона пожалуй - отсутствие необходимости писать "auto" и умение возвращать несколько переменных - красиво присваиваются, черт возьми.А в основном, дишка ничуть не хуже, но куда лучше.
>>711923> умение возвращать несколько переменныхда, этого часто не хватает, и еще else у циклов в python тоже годный, да
>>712219Черт, забыл про сравнение вроде (10 => x > 1) - тоже мне оче нравилось.
>>712245Ну тут это тяжелое наследие C, и без вариантов. Остальное в принципе можно вкрутить.
>>712255В смысле? В сишке никогда так сравнивать было нельзя.Еще вспомнил именованные параметры. В питоне они точно были нужны, но пока не могу придумать, нужны ли они здесь.
>>712290Если использовать дефолтные значения, то было бы неплохо их иметь.
>>712290> В сишке никогда так сравнивать было нельзяИменно, в Python не было необходимости тащить это и они сделали лучше, а когда в D принимали решение посчитали, что C подобный язык с отличной семантикой будет создавать больше проблем, чем решать. Поэтому оставили подход из C хотя голосов за Python подход было немало.> Еще вспомнил именованные параметрыНе хватает, и притом достаточно сильно. Дефолты есть а именнованных нет, это расстраивает.
>>712290>>712309Тут вот есть: http://wiki.dlang.org/DIP88 -- возможно вкрутят.
>>712399и вот такое по мотивам: http://forum.dlang.org/thread/n8024o$dlj$1@digitalmars.com
>>712399Сильнее всего не хватает std.gui (или gui.*)Вроде бы дишка идеально подходила бы для гуйниаппликух, но увы.
>>712399Нахуй просто, у меня до сих пор кровь из глаз от этой хуйни в свифте и обж-с. Если пишешь в каком нибудь блокноте на питоне — ок, но когда у тебя есть иде — это уже совсем избыточное говно получается.>>713010Ты много языков с гуем в стандартной библиотеке видел?Боженька тебе итак дал биндинги ко всему от tk до qt.
>>713025> Боженька тебе итак дал биндинги ко всему от tk до qt.Все это спроектировано не под D.Это как выкинуть фобос и юзать core.stdc.*
>>713025> Нахуй просто, у меня до сих пор кровь из глаз от этой хуйни в свифте и обж-сэто оче юзабельно, когда у тебя 100500 параметров с дефолтами и один из них надо переопределить, а прописывать половину так как они позиционные посути из-за одного переопределения ну вообще не комильфо
>>713029Чувак прав, неча тянуть гуй в батарейки, лучше выбора поболе дать
>>713277Пфф, необязательно в std тянуть. Очень бы хотелось шоб было зделано как vibe.dИ спроектировано под дишку как вайбеди, а не "ну эта, иди сокеты юзай, тут же сишные вызовы никто не отбирал"
>>713286Наслаждайся, все твои хотелки:http://code.dlang.org/packages/dlangui
>>713291Спрошу тут, хуле:В MonoDevelop можно как-то добавить плагин с хотя бы базовой поддержкой синтаксиса qml? Или есть где то руководство, как его самому написать?Пробую зафигачить dqml.
Кстати, вот еще вопрос дишникам, або знает вдруг кто:Что за фигня такая, что у даба два синтаксиса проектов? Причем сам dub создает dub.sdl, а в большинстве страниц в интернетах обычно расписывают в dub.json
>>713276Так берёшь и меняешь нужный, в чём проблема?Алсо, есть куча способов структурирования кода, и если у тебя много аргументов в функции – твой код дефакто говно уровня битрикса (где-то на хабре было его засирание, как там по 24 аргумента передают, кек).>>713298https://developer.xamarin.com/guides/cross-platform/getting_started/extending_xamarin_studio_with_addins/Вся инфа гуглится по стандартному "xamarin studio plugin development".Алсо, можешь не ебаться – я где-то видел плаги для QtCreator.
>>713305Создавай проект с --format=json
>>713307> Создавай проект с --format=jsonО, спс! Не знал.Этот sdl - смотрится как то странноОсобенно его эти массивы с arg1 [arg2 [arg3]]
>>713306> Алсо, можешь не ебаться – я где-то видел плаги для QtCreator.В смысле, он как-то встраивается вместо редактора в монодевелопе?Потому что просто писать код и переключаться между двумя IDE - сомнительное удовольствие. Я уже это оценил, когда писал на Qt с жаба-вставками для ведроида (а у креатора поддержка жабы нулевая)
>>713313Всмысле можно писать на Д в QtCreator (хотя хз что там на текущий момент, когда я прбовал собрать месяц назад нихуя не работало).
Кстати, аноны, как правильно сделать структуру конфига в vibe.d? Делать глобальной переменной или таскать ее постоянно во все функции и объекты?
>>713350А что за конфиг то?
>>713357эм, всякие там api endpoint и тому подобные credentials
Как ди для геймдева?
>>713362А пес его знает, явно разнообразием движков не похвастается.Ибо большинство гейдева было запилено до его появления.Что именно хотел то?
>>713362Вот какой-то игровой движок на дишке.http://dash.circularstudios.com/
>>713375>>713362Говорят, что у Unity есть только одно преимещество перед этим двигом -- редактор, во всем остальном сосет. Но это конечно одна бабка сказала.
Кто то сталкивался: https://issues.dlang.org/show_bug.cgi?id=15625 ?
>>713384Это видимо для тех, кто сам компилятор и окружение собирает.Пользуюсь сбилженным из реп, проблем не имею.
>>713362Судя по расписанию докладов на dconf 2016, ди использовали в quantum break (хотя и сомневаюсь что для рендера). Если кто не в курсе – это одна из самых захайпованных ААА игрулек в этом сезоне.
>>713388Апну пруфчанмким:http://dconf.org/2016/talks/watson.html
Что можно поделать с херней по имени:>&"warning: GDB: Failed to set controlling terminal: Operation not permitted\n"Запускает внешний терминал, а я хочу шоб весь консольный вывод шел в MonoDevelop, как в креаторе в ту нижнюю фигню.Что можно с этим поделать?
>>713657AFAIK ничего
Есть ли способ сделать что-то вроде filter!, но чтобы вернуть не отфильтрованный список, а отфильтрованный элемент?Например - есть жсон, сейчас это делается как json.filter!(x => x['field'].str() == "value").array[0]Но array[0] бессмысленен, поскольку мне надо просто выдрать результат с конкретным 'field' и он там один, и это избыточно.Типо какой-нить filterFirst или что-то в этом роде?
>>713692take? они все равно ленивые, так как ренжифицированные
>>713693разве .array не заставит там чего-то выделять? А в чистом range нельзя по индексу обратитьсяЩа take попробую.
>>713657Пойти и модифицировать плагин к ксамаринстудии, можешь даже создать форк или пулл реквест– он опенсорсный.
>>713696Так take же не возвращает из рейнжа по индексу, а просто обрезает его до указанной длины?
>>713692http://dlang.org/phobos/std_algorithm_searching.html#find
>>713698Не обрезает, а берет несколько элементов. Фактически вычисления будут идти до момента, пока take не получит необходимого колличества элементов, в твоем случае одного. И не будет лишнего выделения памяти и лишнего потребления процессора.
>>713702Я нагуглил какой-то popFront. Только вот проблема в том, что он выбрасывает из рейнжа нужный элемент в никуда, а сам - void.>>713701это малость не то. У меня уже есть рейнж с результатом на выходе. Я думал, есть что-то вроде "вытолкнуть первый элемент", и оно таки есть, но void
>>713703Все, вопрос закрыт.Это обычный .front
>>713703Попробуй front.
>>713703front это часть интерфейса протокола range и не рекомендую ее использовать напрямаю. Тот же take и его варианты используют этот протокол.
>>713706Да, уже нашел - сабж именно то что я искал.Алсо - 500 постов, перекатывать будем?
>>713707А что плохого будет, если дернуть front?Я попробовал - вроде все работает, и коротко.
>>713708Да, только шапку нормальную запилить надо, без "отосов" и "смиртей))".
>>713709для начала дерни empty, а вообще http://www.tutorialspoint.com/d_programming/d_programming_ranges.htm
Мда. Попробовал я dqml и остался разочарован.В практических целях использовать это практически нельзя. QQmlComponent - нету, QQuickWindow - нету.Только хелловорлды рисовать походу.Еще есть мертвый DQuick, и два мертвых биндинга к Qt.Видно придется попробовать кушать говно по имени GTK.
>>713783ПЕРЕКАТ: https://2ch.hk/pr/res/713798.html
>>711923>Из профитов питона пожалуй - отсутствие необходимости писать "auto"Это не баг а фича. Если ты никогда не ебался с типами то тебе не понять
>>713305sdl это надмножество json, вродеюзаю оба варианта - в старых проектах json в новых sdl - sdl удобнее