Вашему вниманию предлагается полный список разделов электронной книги (12 из 11 :)), посвящённой неопределённому поведению. Книга не является учебным пособием и рассчитана на тех, кто уже хорошо знаком с программированием на C++. Это своего рода путеводитель C++ программиста по неопределённому поведению, причём по самым его тайным и экзотическим местам. Автор книги — Дмитрий Свиридкин, редактор — Андрей Карпов.
Рубрика «Компиляторы»
Путеводитель C++ программиста по неопределённому поведению
2025-01-28 в 10:58, admin, рубрики: C, c++, undefined behavior, баги, Компиляторы, неопределённое поведение, ошибки в коде, ошибки программистов, Программирование, СиПрактика использования парсер-комбинаторов peco и оператора match для создания простых DSL на языке Python
2024-12-14 в 22:40, admin, рубрики: dsl, peg, python, Компиляторы, лексический разбор, парсер-комбинаторы, предметно-ориентированный язык, синтаксический разбор, формальные языки, функциональное программирование
Задачи разработки компиляторов и интерпретаторов Читать полностью »
Сравнение эффективности компиляторов под Эльбрус на примере решета Эратосфена
2024-12-13 в 15:15, admin, рубрики: бенчмарки, Компиляторы, МЦСТ, Процессоры, решето Эратосфена, тесты производительности, Эльбрус, Эльбрус-8СНа Хабре уже тестирование Эльбрусов на разных языках программирования (например, здесь). И данный обзор стоит рассматривать как дополнение, с ещё одним тестом, новыми версиями компиляторов и новыми участниками (Rust, С++). Так же обзор сделан с упором на тест возможностей именно компиляторов и настройки оптимизации.
Тестовые стенды:
x86:
-
AMD FX-6300@3500 Мгц. (турбобуст отключен).
-
Intel Celeron (Haswell) G1820@2700 Мгц.
Софт:
Ubuntu 22.04.
Java: OpenJDK Runtime Environment (build 11.0.25+9-post-Ubuntu-1ubuntu122.04).
Rust: rustc / cargo v.1.83.0; LLVM version: 19.1.1.
Некоторые малоизвестные фичи, фокусы и причуды языка C
2024-10-03 в 13:23, admin, рубрики: C, c++, clang, Компиляторы, ПрограммированиеВ этом посте разобраны некоторые фокусы, причуды и фичи языка C (некоторые из них – весьма фундаментальные!), которые, казалось бы, могут сбить с толку даже опытного разработчика. Поэтому я потрудился сделать за вас грязную работу и (в произвольном порядке) собрал некоторые из них в этом посте. Примеры сопровождаются ещё более вольными краткими пояснениями и/или листингами (некоторые из них цитируются).
Конечно же, здесь я не берусь перечислять абсолютно всё, так как факты из разряда «функция nan()
не может устанавливать errno
, поскольку в определённых ситуациях поведёт себя как strtod()
»Читать полностью »
Блеск и нищета WebAssembly
2024-09-26 в 9:06, admin, рубрики: c++, dsl, LLVM, SIEM, webassembly, xp, библиотеки, высокая производительность, Компиляторы, языки программирования![Уильям Фрайт Пауэлл. Бедность и богатство [1888]. (модифицированная) Уильям Фрайт Пауэлл. Бедность и богатство [1888]. (модифицированная)](https://www.pvsm.ru/images/2024/09/27/blesk-i-nisheta-WebAssembly.jpg)
Всем привет! Сейчас за окном осенние деньки 2024 года. Вещает Пройдаков Евгений. Сейчас я руковожу группой разработки среды исполнения языка eXtraction and Processing в R&D департаменте Positive Technologies.
Опасность устарела: несколько важных нюансов в новых стандартах C++
2024-06-27 в 14:17, admin, рубрики: C, c++, C++20, cybersecurity, LLVM, qt, stm32, undefined behavior, безопасность, информационная безопасность, кибератаки, кибербезопасность, компилятор, Компиляторы, Программирование, разработка, Си, системное программирование, статический анализ кода, уязвимости, языки программированияВ этой статье я со своих позиций Senior Software Architect и Security Champion в микроядерной операционной системе KasperskyOS рассмотрю кейсы-ловушки, в которые можно попасть практически в любом из стандартов, и покажу, что меняется в С++20/23/26, — уменьшается ли количество кейсов с неопределенным поведением, и становится ли С++ безопаснее.
Творим дичь с помощью инструментов веб-разработки
2024-06-24 в 21:59, admin, рубрики: c++, transpiler, Компиляторы, СиИли что бывает если заставить очень опытного разработчика заниматься не своим делом. Думаю после этой статьи термин «overqualified» заиграет для вас новыми красками.
От авторов, запихнувших веб‑сервер на визитку и локализующих корпоративные приложения на клингонский — держим марку!
Объявляю ошибку вида if (x = 42) вымирающей и заношу её в Красную книгу C и C++ багов
2024-05-30 в 7:53, admin, рубрики: C, c++, pvs-studio, баги, Компиляторы, Красная книга, нотация Йоды, ошибки в коде, Программирование, Си, статический анализ кода
Если спросить программиста, какие баги чаще всего можно встретить в C и C++ коде, он назовёт разыменование нулевого указателя, неопределённое поведение, выход за границу массива и другие, на его взгляд, типовые паттерны ошибок. Скорее всего, он назовёт и случайное присваивание в условии. Но действительно ли эта ошибка распространена в наше время?
Каково это, создавать язык программирования сегодня?
2024-02-04 в 10:00, admin, рубрики: langium, ruvds_перевод, zmodel, Компиляторы, Программирование, разработка языков программирования
«Эта книга – классика. Относитесь к ней бережно».
Такую фразу произнёс архитектор из нашей команды, передавая мне The Dragon Book. Разработкой компиляторов я увлёкся где-то 15 лет назад ещё на заре своей карьеры. Как-то раз, читая эту книгу поздно вечером, я заснул, небрежно уронив её на пол. Надеюсь, владелец не заметил небольшую вмятину на обложке после того, как я ему её вернул.
Вышла эта книжка в 1986 году. В те времена создание компиляторов было крайне сложной задачей, требовавшей обладания различными навыками в области компьютерных наук в целом и программирования в частности. Теперь, почти четыре десятилетия спустя, этой задачей занимаюсь я. Насколько сложна она сегодня? Приглашаю вместе разобрать процесс создания языка и посмотреть, насколько современные инструменты его упростили.Читать полностью »
11lc — инновационный компилятор для нового языка программирования
2023-12-31 в 21:00, admin, рубрики: 11l, двойная статья, КомпиляторыОтсутствие скрытой неэффективности
Это свойство скорее языка программирования 11l, нежели компилятора. Однако оно настолько важно и настолько отличает язык 11l от C++, D или даже Nim, что я решил разобрать его подробно в данной статье.
Уолтер Брайт, создатель языка D, писал:
Templates in C++ have evolved from little more than token substitution into a programming language in itself. Many useful aspects of C++ templates have been discovered rather than designed.
Так вот, как я считаю, нечто похожее произошло и с семантикой перемещения (move semantics). И в C++ и в D она появилась достаточно поздно, и если бы эти языки проектировались с опорой на семантику перемещения изначально, то в них было бы гораздо меньше скрытой неэффективности (hidden inefficiency). О чём идёт речь? Рассмотрю это на примере C++.Читать полностью »