Метка «LLVM» - 2

Я не люблю программировать. Мне нужен результат.

Понятно, что любой «результат» в программировании — промежуточный. За ним следует сопровождение, исправление ошибок, развитие, а, следовательно, работа с уже написанным кодом. Поэтому результат включает в себя не только работающую программу, но и её исходный код, сопровождение которого будет тем дороже, чем меньше он будет к этому пригоден, или, попросту, чем больше в этом коде насвинячили.

Но главное — чтоб заработало. И чем раньше — тем лучше.

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

Так вот. Современные языки программирования мешают излагать мысли, обременяя множеством деталей, не относящихся к решаемой задаче, и требующихся лишь для того, чтобы до транслятора языка «дошло». И речь даже не о синтаксисе, хотя многие, особенно компилируемые, языки чрезмерно многословны. Речь, прежде всего, о языковых сущностях, что и есть те «термины», в которых должно изъясняться. Эти сущности — например функции, переменные, классы, методы, пакеты, пространства имён, обобщения, шаблоны — слишком узкие, специализированные, предназначенные больше для машинного представления, нежели для человеческого понимания. Они заставляют переводить мысли на их язык. Это не сложно, конечно. Но это совершенно не относится к решаемой задаче. Выбор подходящих языковых сущностей и перевод на них отвлекают от задачи, снижают концентрацию и, следовательно, снижают эффективность разработки. И, я подозреваю, существенным образом. Понимание же сути в процессе чтения такого кода ещё более затруднительно, что также не лучшим образом влияет на производительность труда, особенно при командной разработке.

Проблема современных языков программирования в том, что они заставляют программиста приспосабливаться к машине или к теориям, на которых они основаны, вместо того, чтобы самим приспосабливаться под программиста. И то, что математические теории строги, железо — железное, а удобство программиста — субъективно, не означает, что не надо даже пытаться.

Основная идея o42a — автоматизировать труд программиста. И достигается это путём радикального сокращения видов языковых сущностей до одного-единственного, способного непосредственно заменить их все. Задача же эффективного машинного представления такой сущности целиком ложится на компилятор.

Читать полностью »

Недавно мой студент и я пытались понять одну тонкость в стандарте C. Самый простой способ прояснить подобные вопросы — это узнать, учли ли её разработчики компиляторов, то есть написать код и посмотреть, что с ним будут делать разные компиляторы.

Я написал такую функцию:

int foo (char x) {
  char y = x;
  return ++x > y;
}

Так как ++x увеличивает на 1 значение x, очевидно, что функция должна возвращать "1" для большинства значений x. Вопрос состоит в том, что она вернет для значения CHAR_MAX?

Читать полностью »

Неделю назад на конференции AMD Fusion Developer Summit была представлена новая открытая инициатива Heterogeneous System Architecture (HSA) Foundation, в которую вошли компании AMD, ARM, Texas Instruments, MediaTek и Imagination. Цель HSA Foundation — создание единой, открытой промышленной архитектуры для гетерогенных вычислений (CPU+GPU), гетерогенных процессоров, которые будут объединять два или более разных типов процессоров в одном чипе.

В обсуждении этой новости на форумах Phoronix один из сотрудников AMD Джон Бриджман (John Bridgman) указал на презентацию, в которой конкретно перечисляется, что AMD собирается передать в Open Source в рамках HSA.

Оказывается, AMD намерена полностью открыть стек, включая LLVM, ассемблер, библиотеки, runtime-компоненты, финализатор и драйвер ядра для включения в дистрибутивы Linux.
Читать полностью »

Неделю назад на конференции AMD Fusion Developer Summit была представлена новая открытая инициатива Heterogeneous System Architecture (HSA) Foundation, в которую вошли компании AMD, ARM, Texas Instruments, MediaTek и Imagination. Цель HSA Foundation — создание единой, открытой промышленной архитектуры для гетерогенных вычислений (CPU+GPU), гетерогенных процессоров, которые будут объединять два или более разных типов процессоров в одном чипе.

В обсуждении этой новости на форумах Phoronix один из сотрудников AMD Джон Бриджман (John Bridgman) указал на презентацию, в которой конкретно перечисляется, что AMD собирается передать в Open Source в рамках HSA.

Оказывается, AMD намерена полностью открыть стек, включая LLVM, ассемблер, библиотеки, runtime-компоненты, финализатор и драйвер ядра для включения в дистрибутивы Linux.
Читать полностью »

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

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

Для тех, кому интересны подробности — добро пожаловать под кат.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js