
Сказал как-то один французский дипломат...
Что же он такого мог сказать в 16 веке ? Разберемся в этой статье.
Пользователь
Сказал как-то один французский дипломат...
Что же он такого мог сказать в 16 веке ? Разберемся в этой статье.
Привет, Хабр!
Работа с матрицами в стандартном C++ — это боль, страдание и масса ненужного кода. Почему? Потому что стандартная библиотека STL вообще не предназначена для линейной алгебры. Например, если вы хотите умножить две матрицы, вам придётся писать кастомный алгоритм, отлаживать его, а затем ещё раз писать его, когда поймёте, что оптимизация не та.
Но есть библиотека Armadillo — и с ней всё иначе.
Приветствую, Хабравчане!
В данной статье я начну реализацию кроссплатформенной библиотеки LDL. Опишу её исходный код, архитектуру. Пока библиотека умеет только рисовать несколько примитивов, но я только в начале реализации. Если интересно заходите.
printf
, пока её не реализуем. Здесь вам потребуется освоить различные техники и приёмы отладки, которые в разработке ПО вы никогда не использовали. В частности, начиная «с нуля», вы будете встречать сложные этапы вроде процесса загрузки и страничной организации памяти. Но не пугайтесь, «отлаживать ОС» мы тоже научимся!Когда-то мне надо было разобраться в этой довольно-таки абстрактной теме, причем с не самой прозрачной математикой. И спустя несколько вечеров с пособиями и интернетом, я наконец то придумала достаточно иллюстративные примеры и ассоциации, которые помогли мне закрепить основные моменты в этой теории. В этой статье будет представлено короткое введение в теорию категорий и в основные понятия, связанные с ней. Она будет интересна людям, которые только начинают свое погружение в теорию категорий. Когда мне самой было тяжело разобраться в этой теме, то придуманные примеры помогли лучше понять, что это за зверь вообще такой.
Надеюсь, они также помогут и всем заинтересованным в этой теме :-)
Привет! Меня зовут Илья Мамай, я инженер-программист в группе разработки операционных систем YADRO. В этой статье я хочу поделиться опытом некромантии сборки советского компьютера по мотивам «Микро-80», схемы которого были опубликованы в журнале «Радио». Но собирать я буду не по этим схемам. Используя их как опору и источник вдохновения, я начну с запуска процессора КР580ВМ80А (советского клона Intel 8080), определения признаков жизни и продолжу постепенным наращиванием функционала и возможностей системы. Здесь мы займемся и радиотехникой, и DIY, и программированием как самого процессора, так и современных микроконтроллеров. Но перед этим поделюсь историей, как я, будучи студентом 4 курса, дошел до этого…
Приветствую, Хабравчане!
Решил сделать цикл статей по написанию на С++, различных небольших программ. Под новые и старые ОС. Мне кажется мы стали забывать как раньше программировали:) Для себя определил несколько важных критериев.
Примеры в параллельном переводе — Что привносится в чтение?— Что и как читать? Отрывки из Шекспира — Попытки чтения на совсем незнакомых языках — Где читать? Печатные и онлайн ресурсы — Заключение
Примеры из Улисса
В первый раз в параллельном переводе я прочел роман Улисс (Ulysses).
Это толстый модернистский роман ирландца Джеймса Джойса, написанный по-английски в начале прошлого века.
Некоторые ругают его за сложный язык. Я думаю, что это печальная заслуга трех первых глав, объединенных в предисловие, где другое действующее лицо — молодой ирландский умник, живущий литературой и историей Ирландии, а это русскому читателю в новинку и может быть скучно. В четвертой главе просыпается главный герой и стиль меняется. Сравните первые строки третьей и четвертой глав, в них разница налицо. Многие так и бросают, не вытерпев долгое предисловие.
Пример 1
Начало третьей главы Улисса, последней в предисловии, самой запутанной:
«Неотменимая модальность зримого. Хотя бы это, если не больше, говорят моей мысли мои глаза. Я здесь, чтобы прочесть отметы сути вещей: всех этих водорослей, мальков, подступающего прилива, того вон ржавого сапога. —»
Оригинал:
«Ineluctable modality of the visible: at least that if no more, thought through my eyes. Signatures of all things I am here to read, seaspawn and seawrack, the nearing tide, that rusty boot.»
Здесь, в отличии от перевода, хотя бы видна какая-то красивость, ради чего затевался этот сырбор: гармоничное «thought through», а еще «seaspawn and seawrack» / «водоросли, мальки» — даже если не знать конкретных значений этих слов, за счет повторения корня «sea» рождается образ моря, и с первого абзаца понятно, где стоит герой. Это такой способ избежать утилитарщины в описании сцены. Хочется сказать, что «видел перед собой море», но как-то иначе, сохранив протяженность фразы. В переводе же пройдет еще четыре абзаца до первого появления корня «мор».
Для сравнения первый абзац четвертой главы:
«Мистер Леопольд Блум с удовольствием ел внутренние органы животных и птиц. Он любил жирный суп из гусиных потрохов, пупки с орехами, жареное фаршированное сердце, печенку, поджаренную ломтиками в сухарях, жареные наважьи молоки. Всего же больше любил он бараньи почки на углях, которые оставляли во рту тонкий привкус с отдаленным ароматом мочи.»
Пример 2
«What sound accompanied the union of their tangent, the disunion of their (respectively) centrifugal and centripetal hand? The sound of the peal of the hour of the night by the chime of the bells in the church of Saint George»
«Какие звуки сопровождали соединение их касательных и разъединение их (соответственно) центробежной и центростремительной рук? Звуки колоколов, отбивавших ночные часы на колокольне церкви Святого Георгия.»
В английском второе предложение звенит, как церковный колокол. В переводе от него остаётся один неуклюжий причастный оборот.
Пример 3. В редакции газеты Моллой декламирует часть из лучшей на его памяти речи в суде.
Это еще одна статья про демосцену, сайзкодинг, ассемблер, MS‑DOS и ретрокодинг. То есть, о том, как ночами напролет добровольно и бесплатно писать бесполезный и очень трудоемкий код, и получать от этого массу удовольствия (и седую бороду). Даже если вы уже пробовали и вам не понравилось, вам все равно стоит почитать. Возможно, вы что‑то делали не так. Например, использовали не те буквы и цифры. А еще тут есть подборка «демок» размером в 256 байт!
Еще одна статья в продолжение темы анализа сходных текстов на С/С++ с помощью Clang. Предыдущие публикации:
Это не перевод довольно подробной публикации Emitting Diagnostics in Clang от Peter Goldsborough про различные нюансы диагностических инструментов у Clang, а преимущественно адаптация старого кода под текущую версию компилятора.
И основная идея, которая меня заинтересовала в исходной публикации, это использование инструмента FixIt из набора диагностики clang для внесения исправлений в исходные файлы.
Жизнь — это антология разрушения. Всё, что вы строите, в конце концов ломается. Все, кого вы любите, умрут. Любое ощущение порядка или стабильности неизбежно рушится. Вся Вселенная движется по мрачному пути к состоянию окончательного хаоса.
Чтобы следить за этим космическим распадом, физики используют понятие, называемое энтропией. Энтропия — это мера беспорядка, и утверждение, что энтропия всегда растёт, известное как второй закон термодинамики, — одна из самых неотвратимых заповедей природы.
Меня давно беспокоит всеобщее стремление к беспорядку. Порядок хрупок. Чтобы создать вазу, требуются месяцы тщательного планирования и мастерства, а чтобы разрушить её футбольным мячом — одно мгновение. Мы проводим жизнь, пытаясь разобраться в хаотичном и непредсказуемом мире, где любая попытка установить контроль, похоже, приводит лишь к обратному результату. Второй закон запрещает механизмам быть идеально эффективными, а это значит, что любая структура, возникающая во Вселенной, в конечном итоге служит лишь для дальнейшего рассеивания энергии — будь то звезда, которая в конце концов взрывается, или живой организм, превращающий пищу в тепло. Мы, несмотря на все наши благие намерения, являемся проводниками энтропии.
Сегодня расскажем о человеке, которого многие называли не иначе, как «Русский Леонардо» и «Второй Тесла». Его проекты будоражили умы современников, а Сергей Королев и Олег Антонов называли его своим учителем и гением авиации. Речь пойдет о Роберте Людвиговиче Бартини: его непростой биографии, достижениях и наследии.
В этой статье описано создание эмулятора 16-битной приставки Sega Mega Drive на C++.
Будет много интересного: эмуляция процессора Motorola 68000, реверсинг игр, графика на OpenGL, шейдеры, и многое другое. И все это на современном C++. В статье много картинок, можно хоть на них посмотреть.
В продолжение темы кастомизации компилятора С++ публикую перевод еще одной интересной статьи от Eli Bendersky AST matchers and Clang refactoring tools.
Инструментарий Clang вызывает большой интерес и внимание к разработке в последние годы. Наконец-то у нас есть удобный, точный, с открытым исходным кодом и хорошо поддерживаемый фреймворк для программного анализа и рефакторинга кода C++ и это я нахожу это очень захватывающим!
Прекрасным результатом этого быстрого темпа разработки является то, что постоянно появляются новые API и инструменты.
Например, некоторое время назад разработчики инструментария Clang выяснили, что людям, выполняющим обходы AST, приходится писать много повторяющегося кода, чтобы найти нужные им узлы AST, поэтому они придумали отличный новый API под названием AST matchers.
Разработка виртуальных машин может быть не только интересным занятием на вечер, но также и полезным приложением при обучении студентов языку ассемблера на предметах ОАиП (основы алгоритмизации и программирования) и ААС (архитектура аппаратных средств). Целью данной статьи станет создание простой стековой виртуальной машины с собственным языком ассемблера, способным выполнять операции условного и безусловного переходов, инкрементирования и декрементирования чисел, загрузки и выгрузки значений в стек. Машина получится минималистичной и будет обладать лишь 10-ью инструкциями, на основе которых можно будет далее вполне корректно создать собственный высокоуровневый язык программирования.
Год назад я публиковал статью о китайской письменности, которая вызвала живое обсуждение. Опрос в статье и некоторые комментарии показали, что есть интерес к изучению языка и вопрос по каким материалам это удобней делать.
Хотя статья посвящена китайскому языку и все учебные и справочные материалы именно по нему, но часть из предложенных программ имеют версии и для японского языка, поэтому для японистов статья тоже может быть частично полезна.
Данная подборка — это материалы и инструменты, которые лично мне кажутся важными и полезными. Часть из них широко известны и рекомендуются на многих ресурсах, а часть — редкие жемчужины, которые легко пропустить в большом многообразии.
Список ни в коем случае не исчерпывающий, однако я постарался подобрать материалы по разным аспектам изучения языка, по возможности дополнив своими комментариями. По многим аспектам изучения языка предложены по несколько разных книг, программ, статей на сайтах — посмотрите разные варианты, выберите то что больше подходит именно вам. В случае справочных материалов часто имеет смысл использовать несколько вариантов, так как они дополняют друг друга.
Привет Сегодня мы рассмотрим, заключительный в цикле материалов, Российский шифр «Кузнечик».
«Кузнечик» — это современный стандарт шифрования в России и за рубежом. Опубликован был в 19 июня 2015 года. В наступающем 2025 году будем отмечать его юбилей.
Это перевод статьи, которая, к сожалению, у меня не доступна без слова из трех букв. А так как тема довольно интересная, то я решил совместить полезное с полезным и не только самому покопаться с примерами из публикации, но и сделать её перевод на Хабре. Вдруг еще кому данный материал будет интересен?
Создание пользовательского расширения компилятора C++ подразумевает понимание базовых механизмов работы компиляторов, изменение или расширение их функциональности и бесшовную интеграцию этих изменений в существующую инфраструктуру компилятора. Это руководство проведет вас через весь процесс, от понимания основ до внедрения и тестирования вашего пользовательского расширения. Целевая аудитория этого руководства — разработчики, которые уже знакомы с C++ и имеют базовое понимание концепций компилятора.