#компилятор — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #компилятор, aggregated by home.social.
-
Проектирование на основе абстрактного синтаксического дерева
Представлен образ проекта, направленного на организацию проектирования программного обеспечения с использованием абстрактного синтаксического дерева и виртуальной машины на его основе с элементами искусственного интеллекта. Редактор АСД
https://habr.com/ru/articles/1028268/
#абстрактное_синтаксическое_дерево #компилятор #интерпретатор #разработка_приложений #большие_языковые_модели #визуализация_информации #транслятор #моделирование_систем
-
TTF-DOOM: как я запустил 3D-рейкастер внутри TrueType-шрифта
Каждый, кто хоть раз заглядывал на Hacker News или r/ItRunsDoom, знает традицию: DOOM должен работать на всём. PDF-файлы, SQL-запросы, кишечные бактерии, тест на беременность - список бесконечен, и каждый новый порт абсурднее предыдущего Но я задался вопросом: а можно ли запустить DOOM внутри шрифта? Оказалось, что можно. И вот как.
https://habr.com/ru/articles/1020668/
#doom #truetype #font #raycasting #hinting #javascript #creative_coding #turingcomplete #байткод #компилятор
-
TTF-DOOM: как я запустил 3D-рейкастер внутри TrueType-шрифта
Каждый, кто хоть раз заглядывал на Hacker News или r/ItRunsDoom, знает традицию: DOOM должен работать на всём. PDF-файлы, SQL-запросы, кишечные бактерии, тест на беременность - список бесконечен, и каждый новый порт абсурднее предыдущего Но я задался вопросом: а можно ли запустить DOOM внутри шрифта? Оказалось, что можно. И вот как.
https://habr.com/ru/articles/1020668/
#doom #truetype #font #raycasting #hinting #javascript #creative_coding #turingcomplete #байткод #компилятор
-
TTF-DOOM: как я запустил 3D-рейкастер внутри TrueType-шрифта
Каждый, кто хоть раз заглядывал на Hacker News или r/ItRunsDoom, знает традицию: DOOM должен работать на всём. PDF-файлы, SQL-запросы, кишечные бактерии, тест на беременность - список бесконечен, и каждый новый порт абсурднее предыдущего Но я задался вопросом: а можно ли запустить DOOM внутри шрифта? Оказалось, что можно. И вот как.
https://habr.com/ru/articles/1020668/
#doom #truetype #font #raycasting #hinting #javascript #creative_coding #turingcomplete #байткод #компилятор
-
TTF-DOOM: как я запустил 3D-рейкастер внутри TrueType-шрифта
Каждый, кто хоть раз заглядывал на Hacker News или r/ItRunsDoom, знает традицию: DOOM должен работать на всём. PDF-файлы, SQL-запросы, кишечные бактерии, тест на беременность - список бесконечен, и каждый новый порт абсурднее предыдущего Но я задался вопросом: а можно ли запустить DOOM внутри шрифта? Оказалось, что можно. И вот как.
https://habr.com/ru/articles/1020668/
#doom #truetype #font #raycasting #hinting #javascript #creative_coding #turingcomplete #байткод #компилятор
-
Zig вместо C: пишем высокопроизводительный CLI-инструмент и заменяем 3000 строк C-кода
Всё началось на второй паре по системному программированию. Нам дали задачу: написать CLI-утилиту для анализа логов - парсить файл, фильтровать записи по уровню ошибок, считать статистику, выводить красиво в консоль. "Ну понятно", - открыл я vim и началось мое долгое приключение... Неделя. Две. Утилита называлась logz , она умела читать логи nginx и apache, фильтровать по уровню (DEBUG, INFO, WARN, ERROR), по дате, по IP, выводила топ адресов с наибольшим числом ошибок, рисовала простенький bar-chart прямо в терминале через unicode-символы. Только вот я сидел как-то вечером, запустил wc -l main.c - 3147 строк . И смотрел на это число минуты три с таким лицом - O_O . Сама утилита работала. Но открывая её осознаешь что - это месиво. Одна функция process_file на 400 строк. Сегфолты раз в неделю. Valgrind как лучший друг. И каждый раз когда надо добавить фичу - сначала полчаса вспоминаешь что вообще происходит в коде. Потом я случайно прочитал пост про Zig на lobste.rs . Заинтересовался и попробовал. Через месяц у меня была та же утилита, но теперь на 1089 строках , которая работала быстрее и не падала. Тут я понял что вот золотая жила и расскажу о том - зачем Zig, как переписывал, где облажался и что вышло в итоге. Смотреть как горит C-код
https://habr.com/ru/articles/1019466/
#zig #c #cli #системное_программирование #производительность #компилятор #низкоуровневое_программирование
-
Flame: Системный язык программирования на C и LLVM с мета-исключениями и Memory Safety без Borrow Checker
Пока индустрия движется в сторону усложнения компиляторов, я задался вопросом: можно ли создать инструмент, который дает безопасность Rust, гибкость C и при этом не весит сотни мегабайт? Так появился Flame — системный язык с компилятором в 226 КБ , который реализует управление памятью через статический анализ AST и предлагает альтернативный взгляд на обработку ошибок через патчинг дерева токенов.
https://habr.com/ru/articles/1007758/
#flame #c #c++ #c# #системное_программирование #компиляторы #компилятор #коддинг #llvm #llvm_ir
-
Я добавил трейты и указатели в свой язык
Язык активно улучшается, осталось недолго до bootstrapping'а! Также уменя есть планы писать LSP и загрузить язык на github linguist. Для последнего нужны репозитории (>200). Для тех, кому нечего делать, или кому просто не лень, попробуйте пописать программки на моем языке. Пока мало что можно будет написать, но, думаю, хотя бы что-то можно.
https://habr.com/ru/articles/996654/
#llvm #llvm_ir #llvm_компилятор_llvm_ir #компиляторы #компилятор #компиляция #c++ #язык_программирования #языки_программирования #как_написать_свой_язык
-
Я написал компилятор на C++ при помощи LLVM (2)
GitHub Из прошлой статьи мы знаем, что я разрабатываю свой компилятор - Onyx . С того момента язык активно развивался, теперь он поддерживает:
https://habr.com/ru/articles/989684/
#llvm #llvm_ir #llvm_компилятор_llvm_ir #c++ #язык_программирования #языки #как_написать_свой_язык #компиляторы #компилятор #как_написать_язык
-
Универсальный компилятор для FPGA, который понимает 42 языка программирования
Универсальный компилятор для FPGA, который понимает 42 языка программирования Пишите код на любимом языке — получайте работающий Verilog для FPGA. Бесплатно, без vendor lock-in.
https://habr.com/ru/articles/989020/
#компиляторы #компиляция #компилятор #компилятор_оптимизация #компиляция_модулей #компилятор_си #компилятор_c #компилятор_сам_соптимизирует #компиляция_в_c #компиляторы_кода
-
Я написал компилятор на C++ при помощи LLVM
GitHub Onyx — язык программирования, нацеленный на базовую безопасность памяти, приятный синтаксис и опыт использования. Onyx написан на C++ с компиляцией на базе LLVM. На момент написания статьи язык поддерживает:
https://habr.com/ru/articles/986218/
#llvm #llvm_компилятор_llvm_ir #c++ #язык_программирования #как_написать_свой_язык #как_написать_язык #компилятор
-
[Перевод] Python без Python: как запускать код где угодно
Команда Python for Devs подготовила перевод статьи о том, как можно компилировать Python в быстрые, кроссплатформенные исполняемые файлы без изменения исходного кода. Автор подробно разбирает архитектуру компилятора, объясняет, зачем «понижать» Python до C++, как типы позволяют «приручить» динамику языка и почему эмпирическая оптимизация даёт лучший результат, чем ручной тюнинг.
https://habr.com/ru/articles/978850/
#с++ #arm64 #компилятор #производительность #интерфейсы #оптимизация #кроссплатформенность
-
Как изучить программирование за 7 дней (до конца новогодних праздников)?
Перфолента.NET — это на удивление профессионально выглядящий язык программирования на платформе .NET, который поддерживает объектно-ориентированное и функциональное программирование, и на котором написан даже написан другой язык, функциональный язык программирования — Перфо.NET (интерпретатор). Мой личный опыт Когда я начал немного программировать на Перфоленте/Перфо, моё понимание языков программирования сильно изменилось. Я почувствовал себя как англоязычный программист, пишущий код на родном языке. Это был очень интересный опыт. Я стал больше внимания уделять смыслу слов и терминов, стал строже относиться к названиям. Раньше сложные понятия функционального программирования давались мне тяжело, но теперь всё стало проще. Лямбда-функции, замыкания, каррирование и т.д. — всё это я теперь понимаю по-другому. Особенно когда объясняю ребёнку. Например, лямбда-функция — это просто формула из задачника по математике. Ребёнок понял это сразу! И мы пошли дальше, не останавливаясь. По-моему, главный эффект даёт отказ от псевдонимов и алиасов. Я долго отучался давать названия, из которых сразу понятно, что это за сущность, а не «имена, которые означают...». Второй эффект — это «сокращение контекста». Контекстное окно человека ограничено 3–5 вещами, которые он в состоянии держать в голове и обдумывать. «Псевдонимы/алиасы» съедают это контекстное окно. Поэтому избавление от прокладок в виде «print — это печать» и замена их на простые «вывести_в_консоль», «вывести_в_файл» и т.п. сильно облегчают понимание логики кода.
https://habr.com/ru/articles/982880/
#Компилятор #sheme #lisp #функциональное_программирование #ПерфолентаNet #net #1c #c# #обучение_программированию #креативность
-
restrict в C: оптимизация на честном слове
Привет, Хабр! Сегодня поговорим про один из самых незаметных, но любопытных моментов языка C. Если вы пишете на C, скорее всего вы никогда не использовали ключевое слово restrict . А зря — этот квалификатор указателя может дать вашему коду неплохой прирост производительности. Правда, для этого придётся дать компилятору честное слово насчёт своих указателей.
https://habr.com/ru/companies/otus/articles/978524/
#C #указатели #память #aliasing #оптимизация_кода #lowlevel_программирование #компилятор
-
restrict в C: оптимизация на честном слове
Привет, Хабр! Сегодня поговорим про один из самых незаметных, но любопытных моментов языка C. Если вы пишете на C, скорее всего вы никогда не использовали ключевое слово restrict . А зря — этот квалификатор указателя может дать вашему коду неплохой прирост производительности. Правда, для этого придётся дать компилятору честное слово насчёт своих указателей.
https://habr.com/ru/companies/otus/articles/978524/
#C #указатели #память #aliasing #оптимизация_кода #lowlevel_программирование #компилятор
-
restrict в C: оптимизация на честном слове
Привет, Хабр! Сегодня поговорим про один из самых незаметных, но любопытных моментов языка C. Если вы пишете на C, скорее всего вы никогда не использовали ключевое слово restrict . А зря — этот квалификатор указателя может дать вашему коду неплохой прирост производительности. Правда, для этого придётся дать компилятору честное слово насчёт своих указателей.
https://habr.com/ru/companies/otus/articles/978524/
#C #указатели #память #aliasing #оптимизация_кода #lowlevel_программирование #компилятор
-
restrict в C: оптимизация на честном слове
Привет, Хабр! Сегодня поговорим про один из самых незаметных, но любопытных моментов языка C. Если вы пишете на C, скорее всего вы никогда не использовали ключевое слово restrict . А зря — этот квалификатор указателя может дать вашему коду неплохой прирост производительности. Правда, для этого придётся дать компилятору честное слово насчёт своих указателей.
https://habr.com/ru/companies/otus/articles/978524/
#C #указатели #память #aliasing #оптимизация_кода #lowlevel_программирование #компилятор
-
[Перевод] Почему Go, Rust и Zig такие разные: ценности, компромиссы и назначение языков
Команда Go for Devs подготовила перевод статьи о трёх языках, которые всё чаще оказываются в одном ряду, но на самом деле решают принципиально разные задачи: Go, Rust и Zig. Автор несколько месяцев изучал каждый из них и попытался понять, какие ценности стоят за их устройством. Go выбирает минимализм и корпоративную предсказуемость, Rust — безопасность и максимальную выразительность, Zig — радикальный контроль и отказ от ООП-мышления. Получился честный и местами провокационный разбор того, зачем нужны эти языки и кому из разработчиков они подходят.
https://habr.com/ru/articles/975822/
#go #rust #zig #система #компилятор #производительность #разработка
-
Что происходит после fn main() в Rust?
Привет! Хочу вместе с вами разобрать, как же код на Rust превращается в готовый исполняемый файл . Мы пишем программу, например, fn main() { println!("Hello, Habr!"); } , компилируем, и на выходе получаем бинарник. Что происходит под капотом компилятора Rust в этот момент? Давайте аккуратненько заглянем внутрь этого таинственного процесса.
-
[Перевод] Компилируем Python так, чтобы он работал везде
Это история о том, как написать компилятор Python, генерирующий оптимизированные ядра и при этом позволяющий сохранить простоту кода.
https://habr.com/ru/articles/971490/
#компилятор #pytorch #компьютерное_зрение #оптимизация #обработка_изображений
-
[Перевод] Fil-C: реализация C с безопасной работой с памятью
В последние годы язык Rust активно продвигается в качестве инструмента для системного программирования. Самый яркий символ этого процесса - официальное добавление Rust в исходный код ядра Linux, одного из ранее неприступных бастионов языка C. Это событие встряхнуло сообщество разработчиков на C, где десятилетиями царила уверенность: «да, C небезопасен, но так всегда было и всегда будет». Но то, что десятилетиями казалось незыблемым, теперь вызывает вопросы. Возможно ли, чтобы сам C стал безопасным, не меняясь ? Проект Fil-C - одна из самых необычных и смелых попыток ответить «да».
-
Препроцессоры на Go: нарушение границ или сила -toolexec
Мы в Смартомато — супер продуктовые ребята. Со временем у нас скопились недовольство по поводу работы с Golang, захотелось залезть в технические дебри. Произошла гиперкомпенсация и мы придумали препроцессинг в Go. Да, несмотря на то, что этот язык официально не поддерживает препроцессоры — мы всё равно сделали. А сейчас делимся результатами этой работы с вами. Эта статья по мотивам моего доклада на Golang Conf X 2025 о болях шаблонного кода и вариантах их решения с помощью препроцессинга на базе стандартного тулчейна Go. В тексте не будет сравнения с препроцессорами в других языках и морально-этической оценки решения.
https://habr.com/ru/companies/oleg-bunin/articles/958946/
#go #golang #golangconf #open_telemetry #разработка #программирование #компилятор #toolexec #open_source #github
-
Java 25: упрощённые исходники
Язык Java развивается. Не так давно вышла очередная версия, в которой, помимо всего прочего , вышло любопытное обновление языка ( JEP-512 ). Изменения, в язык внесенные, делают его более пригодным и удобным для обучения и написания коротких программ. В этой статье хочу рассказать о том, как это сделано. Для этого заглянем в компилятор и немного коснемся теории создания языков.
https://habr.com/ru/companies/axiomjdk/articles/952826/
#java #axiomjdk #компилятор #axiom_jdk #jdk25 #jep #java_25 #lts
-
Java 25: упрощённые исходники
Язык Java развивается. Не так давно вышла очередная версия, в которой, помимо всего прочего , вышло любопытное обновление языка ( JEP-512 ). Изменения, в язык внесенные, делают его более пригодным и удобным для обучения и написания коротких программ. В этой статье хочу рассказать о том, как это сделано. Для этого заглянем в компилятор и немного коснемся теории создания языков.
https://habr.com/ru/companies/axiomjdk/articles/952826/
#java #axiomjdk #компилятор #axiom_jdk #jdk25 #jep #java_25 #lts
-
Java 25: упрощённые исходники
Язык Java развивается. Не так давно вышла очередная версия, в которой, помимо всего прочего , вышло любопытное обновление языка ( JEP-512 ). Изменения, в язык внесенные, делают его более пригодным и удобным для обучения и написания коротких программ. В этой статье хочу рассказать о том, как это сделано. Для этого заглянем в компилятор и немного коснемся теории создания языков.
https://habr.com/ru/companies/axiomjdk/articles/952826/
#java #axiomjdk #компилятор #axiom_jdk #jdk25 #jep #java_25 #lts
-
Java 25: упрощённые исходники
Язык Java развивается. Не так давно вышла очередная версия, в которой, помимо всего прочего , вышло любопытное обновление языка ( JEP-512 ). Изменения, в язык внесенные, делают его более пригодным и удобным для обучения и написания коротких программ. В этой статье хочу рассказать о том, как это сделано. Для этого заглянем в компилятор и немного коснемся теории создания языков.
https://habr.com/ru/companies/axiomjdk/articles/952826/
#java #axiomjdk #компилятор #axiom_jdk #jdk25 #jep #java_25 #lts
-
Как устроена память внутри микропроцессора и при чем тут компиляторы
Помните, как в школе, решая примеры «в столбик», мы бормотали себе под нос: «один пишем, два в уме»? У процессора при вычислениях возникает похожая ситуация — где-то нужно хранить промежуточные результаты. В современных микропроцессорах работает множество различных блоков, обрабатывающих числа, — их называют исполнительными устройствами. Чтобы все они могли временно «складывать» свои «два в уме», требуется достаточно большой объем быстрой вспомогательной памяти. В статье мы разберемся, как устроены запоминающие ячейки внутри процессора, почему из них строят массивы памяти и какие задачи решают компиляторы — от оптимизации по скорости, площади и энергопотреблению до генерации файлов для САПР.
-
Мое видение универсального языка программирования
Язык программирования, даже общего назначения, - это инструмент. Каждый язык хорош в решении задач своей сферы: C++ позволяет писать эффективные программы, Haskell - писать элегантный параллельный и математический код, C# - создавать программы на гибкой масштабируемой архитектуре. Современные языки заставляют нас мириться с их недостатками: отсутствие нужной системы типов, нехватка синтаксического сахара, отсутствие парадигмы X. Все хоть раз мечтали о языке, который удобен для решения любой задачи. Я расскажу о своих идеях по созданию универсального языка программирования. Плавно перейдем к идее языка-конструктора. Вас ждет погружение в модульную архитетуру, лямбда-исчисления, байткод, расширяемое программирование
https://habr.com/ru/articles/942134/
#универсальный #язык_программирования #компилятор #архитектура #dsl #модульность #парадигмы_программирования #байткод #llvm
-
Тёмные закоулки Kotlin Contracts и скрытые пасхалки
Контракты в Kotlin — это «тёмная лошадка» языка — они загадочные и чуть-чуть магические. Но что, если я скажу, что под капотом у них спрятано гораздо больше, чем можно найти в официальной документации? Привет! Меня зовут Виталий. Я работаю Android‑разработчиком в Альфа‑Банке, в этой статье я делюсь пасхалками и неожиданными фичами Kotlin компилятора, связанными с Kotlin Contracts. Всё просто, лампово и с примерами из исходников. Даже если вы никогда не ковырялись в кишках компилятора, гарантирую: после прочтения контракты станут чуть ближе, а компилятор — чуть менее пугающим.
https://habr.com/ru/companies/alfa/articles/917998/
#kotlin #компилятор #compile #compiler #contracts #контракты
-
Тёмные закоулки Kotlin Contracts и скрытые пасхалки
Контракты в Kotlin — это «тёмная лошадка» языка — они загадочные и чуть-чуть магические. Но что, если я скажу, что под капотом у них спрятано гораздо больше, чем можно найти в официальной документации? Привет! Меня зовут Виталий. Я работаю Android‑разработчиком в Альфа‑Банке, в этой статье я делюсь пасхалками и неожиданными фичами Kotlin компилятора, связанными с Kotlin Contracts. Всё просто, лампово и с примерами из исходников. Даже если вы никогда не ковырялись в кишках компилятора, гарантирую: после прочтения контракты станут чуть ближе, а компилятор — чуть менее пугающим.
https://habr.com/ru/companies/alfa/articles/917998/
#kotlin #компилятор #compile #compiler #contracts #контракты
-
Тёмные закоулки Kotlin Contracts и скрытые пасхалки
Контракты в Kotlin — это «тёмная лошадка» языка — они загадочные и чуть-чуть магические. Но что, если я скажу, что под капотом у них спрятано гораздо больше, чем можно найти в официальной документации? Привет! Меня зовут Виталий. Я работаю Android‑разработчиком в Альфа‑Банке, в этой статье я делюсь пасхалками и неожиданными фичами Kotlin компилятора, связанными с Kotlin Contracts. Всё просто, лампово и с примерами из исходников. Даже если вы никогда не ковырялись в кишках компилятора, гарантирую: после прочтения контракты станут чуть ближе, а компилятор — чуть менее пугающим.
https://habr.com/ru/companies/alfa/articles/917998/
#kotlin #компилятор #compile #compiler #contracts #контракты
-
Тёмные закоулки Kotlin Contracts и скрытые пасхалки
Контракты в Kotlin — это «тёмная лошадка» языка — они загадочные и чуть-чуть магические. Но что, если я скажу, что под капотом у них спрятано гораздо больше, чем можно найти в официальной документации? Привет! Меня зовут Виталий. Я работаю Android‑разработчиком в Альфа‑Банке, в этой статье я делюсь пасхалками и неожиданными фичами Kotlin компилятора, связанными с Kotlin Contracts. Всё просто, лампово и с примерами из исходников. Даже если вы никогда не ковырялись в кишках компилятора, гарантирую: после прочтения контракты станут чуть ближе, а компилятор — чуть менее пугающим.
https://habr.com/ru/companies/alfa/articles/917998/
#kotlin #компилятор #compile #compiler #contracts #контракты
-
И как оно? Рассказываем как прошёл второй Java Rock Stars Meetup
Привет, Хабр! Первый Java Rock Stars Meetup прошёл на ура (обзор первого митапа см. тут ) и вы сказали, что хотели бы ещё. Ну, что ж, мы услышали, приняли и сделали. В конце мая мы провели второй Java Rock Star Meetup в Москве на той же площадке Casa Picassa, только в соседнем лофте. В этот раз мы выбрали площадку с большей вместимостью, поскольку кол-во регистраций в этот раз было сильно выше (как и дошедших до локации участников), чему мы были несказанно рады! Под катом — записи докладов, фото, видео и как это было.
https://habr.com/ru/companies/axiomjdk/articles/922702/
#обзор #java #митап #митапы #митапы_в_москве #jvm #обратная_совместимость #компилятор #компиляторы #ide
-
И как оно? Рассказываем как прошёл второй Java Rock Stars Meetup
Привет, Хабр! Первый Java Rock Stars Meetup прошёл на ура (обзор первого митапа см. тут ) и вы сказали, что хотели бы ещё. Ну, что ж, мы услышали, приняли и сделали. В конце мая мы провели второй Java Rock Star Meetup в Москве на той же площадке Casa Picassa, только в соседнем лофте. В этот раз мы выбрали площадку с большей вместимостью, поскольку кол-во регистраций в этот раз было сильно выше (как и дошедших до локации участников), чему мы были несказанно рады! Под катом — записи докладов, фото, видео и как это было.
https://habr.com/ru/companies/axiomjdk/articles/922702/
#обзор #java #митап #митапы #митапы_в_москве #jvm #обратная_совместимость #компилятор #компиляторы #ide
-
И как оно? Рассказываем как прошёл второй Java Rock Stars Meetup
Привет, Хабр! Первый Java Rock Stars Meetup прошёл на ура (обзор первого митапа см. тут ) и вы сказали, что хотели бы ещё. Ну, что ж, мы услышали, приняли и сделали. В конце мая мы провели второй Java Rock Star Meetup в Москве на той же площадке Casa Picassa, только в соседнем лофте. В этот раз мы выбрали площадку с большей вместимостью, поскольку кол-во регистраций в этот раз было сильно выше (как и дошедших до локации участников), чему мы были несказанно рады! Под катом — записи докладов, фото, видео и как это было.
https://habr.com/ru/companies/axiomjdk/articles/922702/
#обзор #java #митап #митапы #митапы_в_москве #jvm #обратная_совместимость #компилятор #компиляторы #ide
-
И как оно? Рассказываем как прошёл второй Java Rock Stars Meetup
Привет, Хабр! Первый Java Rock Stars Meetup прошёл на ура (обзор первого митапа см. тут ) и вы сказали, что хотели бы ещё. Ну, что ж, мы услышали, приняли и сделали. В конце мая мы провели второй Java Rock Star Meetup в Москве на той же площадке Casa Picassa, только в соседнем лофте. В этот раз мы выбрали площадку с большей вместимостью, поскольку кол-во регистраций в этот раз было сильно выше (как и дошедших до локации участников), чему мы были несказанно рады! Под катом — записи докладов, фото, видео и как это было.
https://habr.com/ru/companies/axiomjdk/articles/922702/
#обзор #java #митап #митапы #митапы_в_москве #jvm #обратная_совместимость #компилятор #компиляторы #ide
-
Вспомнил одну штуку, которую мне как-то показал мой друг.
Любой #компилятор можно положить, просто переполнив #AST(Abstract Syntax Tree — конструкцию, которая нужна для представления кода в более удобном для оптимизации и дальнейшей компиляции виде). Чтобы это сделать, не нужны никакие шаблоны на плюсах, достаточно поставить около тысячи открывающих и столько же закрывающих скобок)))
Иронично, что это работает даже на компиляторе LISP — языка, в котором скобки играют чуть ли не главную роль.
Можете потыкать Compiler Explorer (https://godbolt.org), там есть компилятор почти для любого языка
-
Компилятор для Intel-8008
Описание попытки создания компилятора для Intel-8008, который вызывается через консоль, на языке программирования C, используя динамические библиотеки и полиномиальное хеширование
-
Настройка отладки C++ проекта через GDB в VSCode
Если вы работаете над собственными библиотеками на C++, особенно такими, где важна строгая типизация и предсказуемое поведение компилятора, то наверняка сталкивались с ситуацией, когда Microsoft Visual Studio (MSVS) сама "подчищает" за вами типы или подключает лишние зависимости. Иногда это удобно, но при разработке низкоуровневого кода это может мешать. В этой статье я расскажу, как перейти с MSVC на MinGW , правильно настроить CMake и использовать GDB для отладки вашего C++-проекта прямо в Visual Studio Code .
https://habr.com/ru/articles/918878/
#c++ #vscode #mingw #c++_compiler #компилятор #настройка
-
Обратная сторона Babel: как микроскопические языки помогают в изучении больших
В этой статье рассказывается, как крошечные, экспериментальные языки программирования, размером порой меньше 100 строк, могут неожиданным образом углубить понимание сложных промышленных языков. Будет показано, как микроязыки раскрывают суть концепций, скрытых в слоистых абстракциях Java, Rust или C++. Много примеров, кода и немного лирики.
https://habr.com/ru/articles/910864/
#микроязыки #миниязыки #ast #компилятор #парсинг #интерпретатор #обучение #языковая_архитектура
-
Обратная сторона Babel: как микроскопические языки помогают в изучении больших
В этой статье рассказывается, как крошечные, экспериментальные языки программирования, размером порой меньше 100 строк, могут неожиданным образом углубить понимание сложных промышленных языков. Будет показано, как микроязыки раскрывают суть концепций, скрытых в слоистых абстракциях Java, Rust или C++. Много примеров, кода и немного лирики.
https://habr.com/ru/articles/910864/
#микроязыки #миниязыки #ast #компилятор #парсинг #интерпретатор #обучение #языковая_архитектура
-
Обратная сторона Babel: как микроскопические языки помогают в изучении больших
В этой статье рассказывается, как крошечные, экспериментальные языки программирования, размером порой меньше 100 строк, могут неожиданным образом углубить понимание сложных промышленных языков. Будет показано, как микроязыки раскрывают суть концепций, скрытых в слоистых абстракциях Java, Rust или C++. Много примеров, кода и немного лирики.
https://habr.com/ru/articles/910864/
#микроязыки #миниязыки #ast #компилятор #парсинг #интерпретатор #обучение #языковая_архитектура
-
Обратная сторона Babel: как микроскопические языки помогают в изучении больших
В этой статье рассказывается, как крошечные, экспериментальные языки программирования, размером порой меньше 100 строк, могут неожиданным образом углубить понимание сложных промышленных языков. Будет показано, как микроязыки раскрывают суть концепций, скрытых в слоистых абстракциях Java, Rust или C++. Много примеров, кода и немного лирики.
https://habr.com/ru/articles/910864/
#микроязыки #миниязыки #ast #компилятор #парсинг #интерпретатор #обучение #языковая_архитектура
-
Часть 3. Векторизация на Go: CGo, транзакции, компиляторы, поддержка, байтовые инструкции
В первой части статьи мы рассмотрели , как можно вручную ускорить Go-код с помощью векторизации и SIMD-инструкций, реализованных через Go-ассемблер. Написали простую, но показательно быструю реализацию sliceContains и увидели, что даже базовая векторизация может дать ускорение в 10–14 раз по сравнению со стандартной реализацией. Во второй части статьи погрузились в практическое применение SIMD в Go-ассемблере, реализовали функцию SliceContainsV1 и изучили, как с помощью VADD, VDUP и других инструкций можно добиться 10–14-кратного ускорения простых задач. Но возможности оптимизации Go-программ на этом не заканчиваются. В этой части мы пойдём дальше: рассмотрим другие техники низкоуровневой оптимизации — от использования C-кода и альтернативных компиляторов с поддержкой векторизации до работы с аппаратными транзакциями памяти на Intel. Поговорим о том, как внедрять ассемблер в продакшен-код, не боясь за его поддержку, и как обойти ограничения стандартного Go-компилятора. Привет, Хабр! Меня зовут Игорь Панасюк, я работаю в Яндекс, преподаю в ИТМО, а также в свободное время выступаю на конференциях, делюсь опытом в соцсетях и помогаю развитию Go-сообщества, веду телеграм-канал и youtube-канал. Если вы уже знакомы с базовыми техниками векторизации, эта часть поможет глубже понять, как устроены продвинутые способы ускорения Go-кода и на что стоит обратить внимание при работе с архитектурно-зависимыми оптимизациями.
https://habr.com/ru/companies/oleg-bunin/articles/905972/
#golang #optimizations #компилятор #gccgo #gollvm #ассемблер #word #byte #производительность
-
Компилируем компилятор или ускоряем javac вдвое
Ну блин короче :-) Знаете ли вы, куда уходит время и ресурсы при сборке проектов на Java? Сейчас покажем и расскажем, как сберечь время, нервы и кофе. Мы ускорили javac вдвое и теперь можно экономить на сборке.
https://habr.com/ru/companies/axiomjdk/articles/898460/
#javac #java #компилятор #aot #axiom_nik #jdk #gradle #maven #axiom_jdk
-
Компилируем компилятор или ускоряем javac вдвое
Ну блин короче :-) Знаете ли вы, куда уходит время и ресурсы при сборке проектов на Java? Сейчас покажем и расскажем, как сберечь время, нервы и кофе. Мы ускорили javac вдвое и теперь можно экономить на сборке.
https://habr.com/ru/companies/axiomjdk/articles/898460/
#javac #java #компилятор #aot #axiom_nik #jdk #gradle #maven #axiom_jdk
-
Компилируем компилятор или ускоряем javac вдвое
Ну блин короче :-) Знаете ли вы, куда уходит время и ресурсы при сборке проектов на Java? Сейчас покажем и расскажем, как сберечь время, нервы и кофе. Мы ускорили javac вдвое и теперь можно экономить на сборке.
https://habr.com/ru/companies/axiomjdk/articles/898460/
#javac #java #компилятор #aot #axiom_nik #jdk #gradle #maven #axiom_jdk
-
Компилируем компилятор или ускоряем javac вдвое
Ну блин короче :-) Знаете ли вы, куда уходит время и ресурсы при сборке проектов на Java? Сейчас покажем и расскажем, как сберечь время, нервы и кофе. Мы ускорили javac вдвое и теперь можно экономить на сборке.
https://habr.com/ru/companies/axiomjdk/articles/898460/
#javac #java #компилятор #aot #axiom_nik #jdk #gradle #maven #axiom_jdk
-
Как бросить исключение без throws в Java: технический разбор с примерами
В Java существует старое, но всё ещё актуальное ограничение: если метод бросает checked-исключение (например, IOException), он обязан явно объявить это с помощью throws. Это требование — не от JVM, а от компилятора. Компилятор жёстко следит за декларациями, но вот JVM — нет. Что создаёт любопытную лазейку: обойти компилятор, оставаясь при этом в рамках спецификации JVM . Сегодня разберёмся, как это сделать с помощью Unsafe.throwException() , почему это вообще работает, где это может пригодиться, и на что стоит обратить внимание при использовании Java 17, 21 и 24.
-
Как бросить исключение без throws в Java: технический разбор с примерами
В Java существует старое, но всё ещё актуальное ограничение: если метод бросает checked-исключение (например, IOException), он обязан явно объявить это с помощью throws. Это требование — не от JVM, а от компилятора. Компилятор жёстко следит за декларациями, но вот JVM — нет. Что создаёт любопытную лазейку: обойти компилятор, оставаясь при этом в рамках спецификации JVM . Сегодня разберёмся, как это сделать с помощью Unsafe.throwException() , почему это вообще работает, где это может пригодиться, и на что стоит обратить внимание при использовании Java 17, 21 и 24.