Вы, @#$, серьёзно? Теперь ещё и вакансии на главную хабра публиковаться будут? Это не просто «Я пиарюсь», это вообще превращение сайта в рекламную доску.
Выглядит хорошо, но сложно. За каждым решением стоит обоснование, но всё вместе выглядит монструозно. Может быть пример с калькулятором не очень удачный, может быть просто непонятна общая архитектура для которой всё придумано, но я не смог спроецировать что-нибудь на свои задачи. Я видел только гораздо более простые RPC, может быть в этом дело.
Ну и мелкое предложение для повышения читаемости: json лучше писать в сырых(raw) литералах, чтобы не приходилось экранировать кавычки. У вас же всё равно С++11.
Километровые слои льда могут создавать очень большое давление. Например, при появлении замкнутых полостей заполненных водой и приливной деформации льда. Жаль, что узнаем мы не скоро — 6 лет лететь всё-таки, да и не спешит никто с запуском.
Не хотелось бы чтобы это выглядело как понты, но не вижу ничего ужасно сложного в данном коде. При необходимости любой С++ программист интересующийся шаблонами (укушенный Александреску) разберётся.
Тем, кто на этом не пишет, непонятно, но шаблоны это другой язык и его просто надо знать. Если знаете, то ничего сложного, если нет, то китайская грамота.
Писал когда-то подобное для лаб по численным методам. Но у меня было просто обобщённое представление функции и возможности собирать суперфункции (каррирование по сути) и подставлять аргументы (частичное применение). Производные — это очень круто, можно развивать дальше.
Хороший мануал, за vibe.d всегда респект.
На правах пожеланий: было бы очень неплохо добавить хотя бы ссылку на то, что такое UDA и немножко деталей об использовании в vibe.d. Например, до авторизации не мешало бы рассказать об атрибуте before.
Спасибо за статью!
При всём том качестве гифок и объёме проделанной работе, пост про один хоткей? Вы серьёзно? При том что фича весьма известная и обычный мультикрусор по альту умеет множество редакторов. Вимеры вообще тихо хихикают от подобных «фич».
Никак. По крайней мере в продакшн коде. Если надо будет мокнуть для теста, то переопределяются Add и AddRange и складываются. Требует знания о связи этих методов, не зовут ли друг друга, но тут мы возвращаемся к первому ответу: никак.
Возможность наследования — часть интерфейса класса и, внезапно, его тоже надо проектировать. А если вы используете наследование для хаков против воли автора класса, то сами себе злобный Буратино. Вы ещё скажите, что package(или internal, только для этого пакета) область видимости это плохо и нарушает инкапсуляцию.
А вот проектировать под наследование многие действительно не умеют, а потом наезжают на ООП.
под сложностью мы понимает взвешенную сумму всех выполненных над заданным набором данных элементарных операций, сложность которых мы можем указать априори
Вот в определении этих элементарных операций у нас и проблема. Вся статья про квадратный корень была про то, что принято рандомный доступ принято считать элементарной операцией, а он на самом деле гораздо сложнее. Хорошим теоретическим обоснованием было бы формальное представление структуры данных, включающей все уровни кэшей, памяти, свопа и тд. Со всеми подструктурами, алгоритмами, работающими на каждом уровне, пока мы не доберёмся до действительно элементарных операций. И тогда окажется, что мы таки зависим от железа, потому что кэши и алгоритмы выборок разные.
Да, sqrt(N) — совершенно среднепотолочная штука, да O нотация ничего не обещает, особенно когда её так неправильно используют, но пользоваться чем-то надо, а оно берёт и работает, не обещая.
Вы конечно правы, теоретически. Но вот на практике знать об асимптотике без возможности проецировать на задачу бессмысленно. Какие применения O нотации в программировании? Отсечь на ранних этапах совсем невозможное (O(e^n) при заведомо известных n > 100500) и оценить масштабируемость работающего решения. И в большинстве случаев масштабируемость оценивается очень хорошо. Линейный поиск на вдвое большем массиве работает вдвое медленней. А перебор всех пар (O(n^2)) — в 4 раза медленней. И это действительно работает и этим активно пользуются. Предложение считать доступ к памяти как O(sqrt(n)) вместо O(1) — всего лишь способ учесть на практике иерархии кэшей, просто эвристика. В любом инженерном деле таких допущений множество, эврситики проще точной теории. У математиков всегда волосы дыбом встают от того, что вытворяют физики и тем более инженеры. «Так нельзя!», зато работает.
При программировании же не асимптотика нужна, а просто прогноз масштабируемости, и с sqrt он будет ближе к правде.
Эта статистика показывает только одно — абсолютно всё равно, пробелы или табы. Можно юзать и то, и то, и никто от этого не умрёт. Кодстайлы в первую очередь должны быть одинаковыми у всех в проекте и лишь во вторую очередь учитывать мелкие плюсы и минусы пробелов/табов, переноса открывающей фигурной скобки, ширины отступа и тд.
Спасибо за исследование.
Только как-то очень хаотично написан раздел про llvm. Что получилось собрать, а что нет? В графики попала wasm версия полученная через asm.js, а упрощённый тест был просто для проверки, что 64 бита возможны? Тогда можно ожидать, что когда всё заработает wasm версия будет в несколько раз быстрее?
А я вот чего не могу понять: все комментарии негативные, комментаторы не согласны со статьёй. Тогда какого… у неё 24 плюса?
Статья — непоследовательное попоулистское повествование с графиками чтобы выглядеть научным. Не рассмотрены никакие другие факторы, не оценены степени их влияния, а по стилю изложения и аргументации не уступает хрен-тв с инопланетянами.
Это твиттер? Тема важная и интересная, но пост из ссылки и приглашения на конференцию — совсем не формат хабра. Было бы очень здорово почитать подробнее. Хотя бы ввели в тему тех, кто хочет покопаться в исходниках и помочь.
GitHub — новомодное явление для новомодных языков. Под новым я понимаю лет 10. C, C++, asm x86, COBOL, FORTRAN и многие другие там представлены очень слабо. Просто потому, что программисты на этих языках часто не пользуются гитхабом. Да и Full Stack Overflow Developer'ов на этих языках нет — не взлетит. Но это не значит, что на этих языках не пишут. Большинство таких языков постепенно вымирает, в том числе из-за того, что не вписались в современный мир, но вымирать они могут ещё десятилетиями и будут востребованы очень долго.
Мне рейтинг IEEE Spectrum видится более реалистичным, нежели TIOBE. Первая десятка тиоба ещё ничего, но дальше сплошные странности. ActionScript, который живее всех живых, и процветает в социалках, не попал даже в топ50, хотя там есть куча экзотики.
Ну и всё равно все эти рейтинги не несут полезной информации. По ним бессмысленно выбирать язык для изучения, будь то первый или десятый изучаемый язык. С качеством языка, зарплатой или сложностью применения рейтинг никак не коррелирует. Так помериться, у кого длиннее популярнее
Ну и мелкое предложение для повышения читаемости: json лучше писать в сырых(raw) литералах, чтобы не приходилось экранировать кавычки. У вас же всё равно С++11.
Тем, кто на этом не пишет, непонятно, но шаблоны это другой язык и его просто надо знать. Если знаете, то ничего сложного, если нет, то китайская грамота.
На правах пожеланий: было бы очень неплохо добавить хотя бы ссылку на то, что такое UDA и немножко деталей об использовании в vibe.d. Например, до авторизации не мешало бы рассказать об атрибуте before.
Спасибо за статью!
Никак. По крайней мере в продакшн коде. Если надо будет мокнуть для теста, то переопределяются Add и AddRange и складываются. Требует знания о связи этих методов, не зовут ли друг друга, но тут мы возвращаемся к первому ответу: никак.
Возможность наследования — часть интерфейса класса и, внезапно, его тоже надо проектировать. А если вы используете наследование для хаков против воли автора класса, то сами себе злобный Буратино. Вы ещё скажите, что package(или internal, только для этого пакета) область видимости это плохо и нарушает инкапсуляцию.
А вот проектировать под наследование многие действительно не умеют, а потом наезжают на ООП.
Вот в определении этих элементарных операций у нас и проблема. Вся статья про квадратный корень была про то, что принято рандомный доступ принято считать элементарной операцией, а он на самом деле гораздо сложнее. Хорошим теоретическим обоснованием было бы формальное представление структуры данных, включающей все уровни кэшей, памяти, свопа и тд. Со всеми подструктурами, алгоритмами, работающими на каждом уровне, пока мы не доберёмся до действительно элементарных операций. И тогда окажется, что мы таки зависим от железа, потому что кэши и алгоритмы выборок разные.
Да, sqrt(N) — совершенно среднепотолочная штука, да O нотация ничего не обещает, особенно когда её так неправильно используют, но пользоваться чем-то надо, а оно берёт и работает, не обещая.
При программировании же не асимптотика нужна, а просто прогноз масштабируемости, и с sqrt он будет ближе к правде.
Только как-то очень хаотично написан раздел про llvm. Что получилось собрать, а что нет? В графики попала wasm версия полученная через asm.js, а упрощённый тест был просто для проверки, что 64 бита возможны? Тогда можно ожидать, что когда всё заработает wasm версия будет в несколько раз быстрее?
Статья — непоследовательное попоулистское повествование с графиками чтобы выглядеть научным. Не рассмотрены никакие другие факторы, не оценены степени их влияния, а по стилю изложения и аргументации не уступает хрен-тв с инопланетянами.
всякими глупыми вставкамизачёркнутыми фразами. Очень утомляет и отвлекает.Ну и всё равно все эти рейтинги не несут полезной информации. По ним бессмысленно выбирать язык для изучения, будь то первый или десятый изучаемый язык. С качеством языка, зарплатой или сложностью применения рейтинг никак не коррелирует. Так помериться, у кого
длиннеепопулярнее