Pull to refresh
  • by relevance
  • by date
  • by rating

Huawei открыла доступ сторонним разработчикам к сайту компилятора Ark Compiler для HarmonyOS

Development of mobile applicationsDevelopment for AndroidCompilersIT-companies


Huawei запустила для всех разработчиков официальный сайт открытой версии компилятора Ark — OpenArkCompiler, с помощью которого компания планирует популяризировать операционную систему собственной разработки HarmonyOS.
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Views5.7K
Comments 5

Премия Тьюринга присуждается создателям строительных блоков для компьютерного программирования

History of IT

Ассоциация вычислительной техники объявила победителей Премии Тьюринга в 2021 году. Ими стали Джеффри Ульман и Альфред Ахо, известные своей работой над компилятором — программой, которая переводит текст, написанный на языке программирования, в набор машинных кодов. Премия Тьюринга, которую часто называют Нобелевской премией в области вычислительной техники, включает в себя приз в миллион долларов, который разделят два академика.

Читать далее
Total votes 16: ↑14 and ↓2 +12
Views3.2K
Comments 8

Увеличиваем производительность Zend Framework'а, собирая его классы в один файл

Zend Framework
Каждый раз когда вы запускаете ссылку, и на сервере ее обрабатывает ZendFramwork, происходят неприятные издержки производительности при сборке исполняющего кода PHP интерпретатором.

PHP конечно умеет кешировать опкод в памяти с помощью APC, Memcached и т.д. Но перед тем как взять опкод из памяти идет обращение на жесткий диск, для того чтобы убедиться обновилась ли дата последнего изменения. Когда файлов мало, это происходит незаметно. Когда их становиться много, начинает становиться заметным уменьшение производительности.

(В APC конечно можно настроить, чтобы PHP интерпритатор не проверял дату файлов, но при любом изменении файлов необходимо рестартовать Apache, что очень не удобно при developing'е).

В сети уже встречались сборщики классов, но они не всегда корректно собирали то что нужно.

Да это тема уже поднималась неоднократно, но я так и не нашел ни одного скрипта который бы правильно подключил классы Zend_Controller_Router_Route_Abstract и Zend_Controller_Router_Route_Chain.

Поэтому я предлагаю свой вариант такого сборщика
Total votes 9: ↑5 and ↓4 +1
Views1K
Comments 8

Компилятор выражений

Website development
Недавно у меня возникла необходимость в вычислении выражений. Выражение представлено в виде строки и может содержать имена переменных, целые числа, строковые константы и любые операции над ними.

Пример:
   выражение: «x + 10 == 5 * y / (1 + z*2)»;
   требуется уметь вычислять это выражение для любых значений x, y и z.

И конечно при этом надо учитывать приоритеты операторов.

Для решения нужно сделать компилятор, который по строке строит объект «Вычислимое Выражение». У этого объекта будет метод «вычислить для данных значений переменных».

Решение на Java, но может быть легко переведено на другие языки.

Подробнее...
Total votes 55: ↑44 and ↓11 +33
Views17.7K
Comments 66

Новая версия компилятора LDC

ProgrammingD
LDC — компилятор языка программирования D, использующий LLVM для генерации машинного кода. Судя по результатам тестов он совместим с DMD (стандартным компилятором D) и может стать его заменой в подавляющем большинстве случаев.
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Views941
Comments 2

Финальный релиз MonoTouch 1.0

Mono & Moonlight
Компания Novell после полуторамесячного бета-тестирования, которое анонсировалось на Хабре, сегодня опубликовала финальный релиз среды разработки MonoTouch 1.0. Как известно, она позволяет адаптировать Windows-приложения для запуска под iPhone и iPod. То есть можно взять готовые программы и библиотеки, написанные на .NET на языках программирования, таких как C#, и перекомпилировать их под iPhone (см. видео).

По оценке Novell, в мире существует пять миллионов .NET-программистов. Теперь все они смогут писать программы для айфонов. Правда, для использования MonoTouch нужно иметь Mac и купить подписку на iPhone SDK.



В комплект MonoTouch 1.0 входят все необходимые компиляторы, библиотеки и инструменты для интеграции с Apple iPhone SDK, в том числе с XCode IDE для тестирования программ на Apple iPhone Simulator.
Читать дальше →
Total votes 20: ↑13 and ↓7 +6
Views1.2K
Comments 55

Facebook создаёт компилятор PHP?

PHP
От людей, посетивших офис разработчиков Facebook, появилась информация о том, чем сейчас занята большая команда программистов этого проекта. Судя по всему, они переписывают PHP-скрипты заново. Как известно, 90% кода Facebook написано на PHP.

Говорят, что эта работа идёт уже довольно давно, но она уже близка к завершению. Возможно, уже в ближайшие дни некоторые библиотеки будут опубликованы под открытой лицензией. Правда, до сих пор точно неизвестно, что это за проект.

Наиболее вероятна версия, что результатом их работы станет нечто вроде компилятора PHP. С его помощью якобы можно ускорить исполнение программного кода чуть ли не в пять раз и уменьшить загрузку CPU на серверах на 80% Эта же информация подтверждается одним из сотрудников Facebook на условиях анонимности (все они подписали NDA). Он говорит о неком HPHP (Hyper-PHP), что представляет собой практически новую версию языка.
Total votes 106: ↑94 and ↓12 +82
Views1.8K
Comments 139

Компилятор Brainfuck в .NET

Abnormal programming
Sandbox
Здравствуйте.
Смотрю я, что у вас неделя BrainFuck-а и я решил написать компилятор, тем более, что в комментариях к этой статье просили рассказать поподробнее про динамические методы. В этой статье мы рассмотрим этот метод компиляции кода и попробуем сделать компилятор самого нормального простого языка
Читать дальше →
Total votes 72: ↑46 and ↓26 +20
Views6.8K
Comments 35

Помочь компилятору в векторизации? — Лучше просто не мешать

Intel corporate blog
Это — вольный перевод моего недавнего поста на английской версии Intel Software Network. Так что те, кому Victoria Zhislina нравится больше vikky13, кто уже видел этот пост, могут сразу прочесть первый и последний абзацы, отсутствующие в оригинале.

— Всем здрасьте, мне нужен транслятор с русского языка в код программы на C++. Ну то есть, я пишу задачу, а транслятор реализует ее решение на языке С++. Где можно такой найти? Если для Cи нету, может быть, есть для других языков?

— Есть, называется начальник отдела разработки. Пишешь задачу на русском — отдаешь подчиненным и все, код готов! Хоть на Си, хоть на Дельфи, хоть на Яве. Я проверял, работает!


Говорят, что это не анекдот, а реальный вопрос на программистском форуме. Также говорят, что человек гораздо умнее машины, а значит, может ей помочь — поделиться умом. Но есть немало случаев, когда делать этого точно не стоит. Результат будет обратный ожидаемому.

Читать дальше →
Total votes 38: ↑33 and ↓5 +28
Views10.5K
Comments 21

Ошибка в компиляторе? Маловероятно, но…

Programming microcontrollers
Однажды мне понравилось высказывание «Думаете, что ошибка в компиляторе? Проверьте получше свой код!». Действительно, в моей практике такое случалось – когда, казалось бы, все разумные причины ошибки были отброшены и мысль о том, что вот на этот раз уж точно глюк где-то в системе, вдруг находилась какая-нибудь до смешного банальная ошибка в своем коде, сразу объясняющая все предыдущие странности.

Но иногда все же виновным может оказаться и компилятор.

Так что же там было?
Total votes 43: ↑41 and ↓2 +39
Views3.5K
Comments 10

Пишем примитивный и никому не нужный компилятор

Compilers
Я считаю, что каждый программист должен написать свой компилятор.

Я сам долгое время считал, что создание компиляторов — это удел элиты, а простому смертному программисту не постичь этой науки. Попробую доказать, что это не так.

В посте мы рассмотрим, как можно написать свой компилятор C-подобного языка меньше чем за час, исписав всего 300 строчек кода. В качестве бонуса, сюда входит и код виртуальной машины, в байткод которой будет компилироваться исходник.
Читать дальше →
Total votes 247: ↑231 and ↓16 +215
Views137.8K
Comments 67

LLVM 3.0 Release

Compilers
1 декабря состоялся релиз LLVM 3.0 (Low Level Virtual Machine) — «инфраструктуры для компиляторов», которая генерирует платформонезависимый оптимизированный байткод низкого уровня (см. обзор на Хабре). LLVM используется в том числе в официальных средствах разработки для Mac OS X и iOS.

С момента выхода LLVM 2.9 прошло шесть месяцев, новшеств довольно много, в том числе новый «жадный» аллокатор регистров. Он применяет интересные способы оптимизации и способен значительно улучшить производительность кода.
Читать дальше →
Total votes 36: ↑31 and ↓5 +26
Views1.8K
Comments 7

Для чего нужны оптимизирующие компиляторы?

Intel corporate blog
image


Сегодня практически все компиляторы, которые можно найти на рынке, являются оптимизирующими. Т.е. они не просто переводят написанный программистом код на машинный язык, но также могут улучшать его с точки зрения производительности или объема.

Но что конкретно может сделать компилятор для улучшения кода?

Прежде всего, следующие три вещи:
  1. компилятор может эффективно реализовать средства языка программирования
  2. может по максимуму задействовать возможности аппаратуры, на которой будет исполняться программа
  3. а также устранить некоторые недостатки реализованного программистом алгоритма.
Читать дальше →
Total votes 44: ↑34 and ↓10 +24
Views13K
Comments 38

Оптимизация длинной арифметики на C++

High performanceAssembler
Tutorial

С Новым годом! Опишу классический сюжет — оптимизацию длинной арифметики в C++ при помощи ассемблерных вставок. Однако, на Хабре его еще не было, поэтому после некоторых колебаний решил запостить сюда, вы уж простите, если сами когда-то писали то же самое и продвинулись дальше меня :-)

Читать дальше →
Total votes 82: ↑80 and ↓2 +78
Views13.1K
Comments 22

Разрабатываем компилятор для учебного языка Cool на языке C# под .NET (Часть 1)

.NETCompilersC#
Sandbox

Введение


Здравствуй, уважаемый хабраюзер.Я хотел бы тебе представить материал о практическом создании компилятора, который будет транслировать код, написанный на языке Cool, в код виртуальной машины CIL (Common Intermediate Language) под платформу .NET.Данный материал я решил разбить на две части из-за лени все сразу это описывать

В первой части будет описан процесс написания грамматики с учетом приоритетов операторов в среде ANTLR, а также генерации лексера и парсера под язык C#. Также в ней будут рассмотрены подводные камни, которые встретились у меня на пути. Таким образом я постараюсь хоть кому-нибудь сэкономить время (может быть для себя в будущем).

Во второй же части будет описан процесс построения семантического анализатора кода, генерации кода и самопальной никому не нужной оптимизации кода. Также будет описано, как сделать красивый интерфейс с блекджеком и шлюхами с подсветкой синтаксиса и сворачиванием блоков, как в современных IDE. В конце второй части я, конечно же, выложу все исходники моего солюшена и расскажу о дальнейшей улучшении архитектуры и кода, во всяком случае как это представляется мне.

Читать дальше →
Total votes 51: ↑46 and ↓5 +41
Views18.1K
Comments 14

Разрабатываем компилятор для учебного языка Cool на языке C# под .NET (Часть 2 + Бонусы)

.NETCompilersC#
Привет, Хабрахабр!

Введение


В данной статье, я, как и обещал, продолжу описание разработки компилятора для языка Cool, начатое в этой статье.

Напомню, что процесс компиляции по фен-шую включает в себя несколько этапов, которые изображены на рисунке ниже слева. Мой же компилятор содержит только три этапа, которые изображены на этом же рисунке справа.

Читать дальше →
Total votes 33: ↑27 and ↓6 +21
Views10.2K
Comments 6

Состоялся релиз LLVM 3.1

Compilers
22 мая состоялся релиз LLVM 3.1, семейства компиляторных инструментов, построенных на модульной основе. Проект активно развивается как альтернатива GCC такими компаниями, как Apple и Google.

Наиболее заметные изменения включают в себя улучшенную поддержку нового стандарта C++'11 Clang'ом (включая лямбды, списки инициализации, константные выражения, пользовательские литералы и атомики); появление AddressSanitizer — инструмента для динамического отлова ошибок работы с памятью; серьёзные улучшения времени компиляции и появление новых фич для ARM архитектуры; заметно улучшенная поддержка архитектуры MIPS (включая MIPS64).
image

Для тех, кому интересны подробности — добро пожаловать под кат.
Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Views4.3K
Comments 45

Язык программирования Gentee

Open sourceProgrammingCompilers
Sandbox
Уважаемое сообщество, я хочу рассказать вам о языке программирования Gentee. Я уверен, что вы о нем ничего не слышали, но это не новинка. Первая рабочая версия компилятора увидела свет в 2008 году, а в конце 2010 была выпущена последняя на данный момент 3-я версия. Gentee является open source проектом и распространяется под MIT лицензией, то есть без всяких условий и ограничений. Кроме меня над компилятором, библиотеками и всей документацией работал еще один человек. В начале я хочу написать об истории возникновения языка. Начиная с 2000 года я работал над инсталляторами, в которых пользователь мог строить сценарии из определенных команд. То есть, каждая команда из параметров на форме должна была конвертироваться в код на каком-то языке, который можно было бы компилировать в байт-код и создавать исполняемый файл. Начинали с примитивного языка, но в конце концов решили сделать язык широкого применения. Основные требования были следующие: быстрый компилятор, легкая работа с Windows API, маленький размер движка виртуальной машины, лаконичный и понятный синтаксис, возможность использования компилятора и виртуальной машины из любого языка программирования. На языке C был написан компилятор в байт-код и виртуальная машина. Gentee.dll (компилятор и ВМ) занимает всего 112 КБ и может быть включена в любой проект, которому требуется встроенный язык программирования. Программа на Gentee может быть выполнена сразу после компиляции или можно создать исполняемый файл с байт-кодом и вшитой виртуальной машиной.
Читать дальше →
Total votes 62: ↑39 and ↓23 +16
Views7K
Comments 56

Doppio — JVM, Компилятор и дизассемблер в JavaScript

JavaScriptJava
Translation
На сегодняшний день мы не испытываем недостатка в прекрасных вещах, которые написаны на JavaScript. Да и реализации JVM в JavaScript мы уже видели. Теме не менее, Doppio представляет собой наиболее полную и активно развивающуюся JVM.


Читать дальше →
Total votes 29: ↑26 and ↓3 +23
Views8.5K
Comments 23