Первым комментарием к замечательной статье Субъективное видение идеального языка программирования оказалась ссылка на язык программирования Zig. Естественно, стало интересно, что же это такое за язык, который претендует на шину C++, D и Rust. Посмотрел — язык показался симпатичным и в чем-то интересным. Приятный си-подобный синтаксис, оригинальный подход к обработке ошибок, встроенные сопрограммы. Данная статья является кратким обзором официальной документации с вкраплениями собственных мыслей и впечатлений от запуска примеров кода.
Читать полностью »
Рубрика «Компиляторы» - 20
Язык программирования Zig
2019-01-14 в 14:21, admin, рубрики: zig, Компиляторы, Программирование, системное программирование, языки программированияКак работает Zig?
2019-01-14 в 3:14, admin, рубрики: Brainfuck, LLVM, zig, Компиляторы, Программирование, системное программирование, языки программированияОт переводчика: этот пост был опубликован в блоге автора 15 марта 2018 года. Так как язык развивается, в настоящее время его синтаксис может отличаться. Всё описанное относится к Zig 0.2.0, текущая версия языка — Zig 0.3.0.
Я связался с автором поста, и он любезно предоставил ссылку на репозиторий с актуальной версией исходников проекта на Zig 0.3.0: https://github.com/jfo/zigf/commit/7b1c563a9bd20e084243bfa0c7435e3cb468ccf2
Здравствуйте! Давайте напишем интерпретатор Brainfuck! «Зачем?» — можете спросить вы, но вы не найдёте здесь ответа.
Я сделаю это на Zig.
Zig — это….
…новый язык программирования. Он пока в бета-версии, и быстро развивается. Если вы видели код на Zig раньше, код в этом посте может показаться вам немного другим. Он действительно другой! Zig 0.2.0 только что вышел, совпав с релизом LLVM 6 несколько недель назад, и включает в себя множество изменений синтаксиса и общие усовершенствования языка. Главным образом, многие «заклинания» были заменены ключевыми словами. Смотрите здесь для более глубокого объяснения всех изменений!
Zig разработан, чтобы быть читаемым, и относительно интуитивным для тех, кто знаком с компилируемыми и типизированными языками, такими, как C, C++, и, в некоторых моментах, Rust.
Код был скомпилирован и протестирован с Zig 0.2.0, который доступен прямо сейчас, по различным каналам, включая homebrew, если вы на OSX: brew install zig.
Читать полностью »
Байт-машина для форта (и не только) по-индейски (часть 3)
2019-01-06 в 15:59, admin, рубрики: forth, ассемблер, байт-код, виртуализация, интерпретатор, компилятор, Компиляторы, Программирование, системное программирование, форт
Наступил год 2019. Новогодние праздники подходят к концу. Самое время начать вспоминать байты, команды, переменные, циклы…
Что-то я все уже забыл с этими праздниками. Придется вспоминать вместе!
Сегодня сделаем интерпретатор для нашей байт-машины. Это третья статья, первые части тут: часть 1, часть 2.
Всех с новым годом, и добро пожаловать под кат!
Читать полностью »
Немного о лексическом анализе
2019-01-03 в 22:38, admin, рубрики: lexer, php, regex, Компиляторы, никто не читает теги
Давным-давно, когда небо было голубым, трава зеленее и по Земле бродили динозавры… Нет, забудьте про динозавров. Ну, в общем, когда-то тогда пришла в голову мысль отвлечься от стандартного web-программирования и заняться чем-то более безумным. Можно было, конечно, чем угодно, но выбор пал на написание своего интерпретатора. Что я могу сказать… Никогда не пишите свои языки программирования. Но некоторый опыт из всего этого я извлёк, так что вот и решил поделиться. Начнём с самой основы — лексера.
Читать полностью »
Перспектива: MultiClet S1
2019-01-02 в 10:59, admin, рубрики: LLVM, multiclet, высокая производительность, Компиляторы, Криптовалюты, мультиклет, Процессоры, суперкомпьютеры
Итак, пришло время поговорить о следующем поколении мультиклеточных процессоров: MultiClet S1. Если вы впервые слышите о них, то обязательно ознакомьтесь с историей и идеологией архитектуры в этих статьях:
- «Мультиклеточный процессор — это что?»
- «Мультиклет R1 — первые тесты»
- «Компилятор С/С++ на базе LLVM для мультиклеточных процессоров: быть или не быть?»
На данный момент новый процессор находится в разработке, но уже появились первые результаты и можно оценить, на что он будет способен.
Читать полностью »
Новый язык программирования Mash
2019-01-02 в 8:30, admin, рубрики: Mash lang, виртуализация, Компиляторы, ооп, Совершенный код, транслятор, язык программированияНа протяжении нескольких лет я пробовал свои силы в разработке своего языка программирования. Мне хотелось создать на мой взгляд максимально простой, функциональный и удобный язык.
В этой статье я хочу осветить основные этапы своей работы и для начала описать созданный концепт языка и его первую реализацию над которой сейчас работаю.
Читать полностью »
Мысли о Rust 2019
2018-12-21 в 13:18, admin, рубрики: c++, Rust, Блог компании Издательский дом «Питер», Компиляторы, Программирование, системное программирование, языки программированияКоллеги, доброго вечера всем!
Мы с радостью предлагаем вам перевод по-настоящему программной статьи от Рафа Левина, чей титанический труд над развитием языка Rust вызывает уважение и пиетет:
Без ложной скромности и без шапкозакидательства, предметно и увлеченно уважаемый автор откликнулся на призыв сообщества Rust, опубликованный по ссылке в начале этой статьи. Надеемся, получилось интересно и жизнеутверждающе.
Читать полностью »
Как Clang компилирует функцию
2018-12-19 в 3:36, admin, рубрики: C, c++, clang, LLVM, Компиляторы, компиляция, ПрограммированиеЯ планировал написать статью о том, как LLVM оптимизирует функцию, но сначала необходимо написать, как Clang транслирует C или C++ в LLVM.
Профилирование кода с LLVM
2018-12-17 в 3:03, admin, рубрики: C, c++, LLVM, open source, КомпиляторыПроклятие недетерминизма
Моя первая попытка написать проход LLVM — люблю эти сегфолты
Недавно я столкнулся с интересной задачей — мне понадобился детерминированный и кросплатформенный способ определения времени выполнения кода С++. Под словом «детерминированный» я подразумеваю, что один и тот же код будет выполняться за одно и то же количество единиц времени. Под кроссплатформенностью я понимаю, что один и тот же код под Windows и под Ubuntu будет выполняться за одно и то же количество единиц времени.
Естественно, измерение времени на CPU не удовлетворяет этим условиям. Машинный код меняется в зависимости от архитектуры и операционной системы, и один и тот же код займёт различное количество времени при выполнении. Даже на одной и той же машине, такие факторы, как промахи кэша, будут играть большую роль — достаточную для того, чтобы исказить результаты измерения времени выполнения одного и того же кода. Мне нужно было что-либо более умное…
Читать полностью »
Компилируем Kotlin: JetBrains VS ANTLR VS JavaCC
2018-12-15 в 8:23, admin, рубрики: antlr, java, javacc, jetbrains, kotlin, parser, Компиляторы
Насколько быстро парсится Kotlin и какое это имеет значение? JavaCC или ANTLR? Годятся ли исходники от JetBrains?
Сравниваем, фантазируем и удивляемся.
Читать полностью »