LINUX.ORG.RU

Опубликована система команд Эльбрус

 


1

4

http://elbrus.ru/efficient_elbrus_programming_book_2020-05

Кто хочет написать свой компилятор или доработать gcc/clang/whatever — велкам!

ЗЫ Кто хочет написать новость - тоже велкам.

Перемещено Zhbert из linux-hardware

★★★★★

Последнее исправление: Aceler (всего исправлений: 1)
Ответ на: комментарий от Aceler

Ты почему у меня спрашиваешь? У меня нет этих исходников.

А бинарники есть?

SZT ★★★★★
()

Отличная техническая дискуссия с дипломированными внедренцами-впаривателями. Они-то точно объяснят, что такое компилятор и как его писать.

anonymous
()
Ответ на: комментарий от ox55ff

Компилятор на этом не написать.

Конечно. Без девборды не напишешь.

До свидания.

Ага. На самом деле результат не нужен. Совсем. Вообще. Нужды РВСН обеспечиваются и всё. Хомякам – писюки.

anonymous
()
Ответ на: комментарий от seiken

Тогда транслятор с С в Паскаль тоже компилятор. Исходный язык C, целевой - Паскаль.

По определению - да. Другой вопрос что принято такие вещи называть трансляторами, но там грань довольно размытая и не очень формальная. Рекомендую всё-таки в учебнике ознакомиться с терминами

alexanius ★★
()
Ответ на: комментарий от alexanius

Тогда транслятор с С в Паскаль тоже компилятор.

По определению - да.

Компилятор - это «траслятор» из языка программирования в машинные коды реальной или виртуальной самодостаточной вычислительной машины.

anonymous
()
Ответ на: комментарий от alexanius

Рекомендую всё-таки в учебнике ознакомиться с терминами

ЕМНИП разница как раз в том, что компилятор - по определению из учебника - на выходе выдает объектный код, непосредственно исполняемый на машине (реальной или виртуальной).

seiken ★★★★★
()
Ответ на: комментарий от alexanius

Вики несогласна со всеми вами.

A translator or programming language processor is a generic term that can refer to anything that converts code from one computer language into another.

A compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language). The name compiler is primarily used for programs that translate source code from a high-level programming language to a lower level language (e.g., assembly language, object code, or machine code) to create an executable program.

Vala is an object-oriented programming language with a self-hosting compiler that generates C code and uses the GObject system.

anonymous
()
Ответ на: комментарий от seiken

по определению из учебника

Осталось назвать этот учебник

Впрочем, в некоторых книгах встречается такое сужение. В других – нет.

anonymous
()
Ответ на: комментарий от anonymous

Vala

Да можно и поизвестнее примеры привести: javac, Haskell в старых версиях (-> C–).

anonymous
()

Опубликована система команд Эльбрус

Описание типа - «вокруг да около».

anonymous
()
Ответ на: комментарий от anonymous

Vala … compiler that generates C code …

И это нам рассказал кто? Сам автор Vala? Тогда, как я и писал выше, транслятор из С в Паскаль тоже компилятор, и сам термин не имеет практического смысла.

seiken ★★★★★
()
Ответ на: комментарий от anonymous

Вики несогласна со всеми вами.

Не то что бы вики была авторитетным источником, но даже она как раз таки согласна:

A compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language).

Написано ровно то что я и сказал. Дальше уже идёт уточнение семантики чтобы можно было отличить от транслятора.

Ещё раз, можно открыть любой учебник по компиляторам и прочитать определение:

Компилятор - это программа, которая считывает текст программы написанной на одном языке - исходном и транслирует (переводит) его в эквивалентный текст на другом языке (целевом)

(Ахо, Лам, Сети, Ульман: Компиляторы. Принцыпы, технологии, инструментарий.)

In its most general form, a compiler is a program that accepts as input a program text in a certain language and produces as output a program text in another language, while preserving the meaning of that text.

(Grune, Reeuwijk, Bal, Jacobs, Langendoen: Modern Compiler Design)

The compiler takes as input a program written in some language and produces as its output an equivalent program.

(Cooper, Torczon: Engineering a Compiler)

alexanius ★★
()
Ответ на: комментарий от anonymous

Осталось назвать этот учебник

Загуглил щас учебник, разрешенный MO, и таки да, там на выходе либо объектный код, либо ассемблерный выхлоп. Хорошо. Но трансляция из С в Паскаль по прежнему трансляция. Любой компилятор также есть транслятор, но не наоборот.

seiken ★★★★★
()
Ответ на: комментарий от alexanius

можно открыть любой учебник по компиляторам

Справедливости ради, я тоже пробежался по учебникам и нашел два несогласных:

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

(Вирт – Построение компиляторов)

Задача компилятора состоит в преобразовании ориентированного на пользователя представления программного обеспечения в машинно-ориентированное (в котором происходит непосредственное выполнение программы компьютером).

(Хантер – Основные концепции компиляторов)

anonymous
()
Ответ на: комментарий от seiken

Любой компилятор также есть транслятор, но не наоборот

Так в цитате с вики жирным выделено различие. C и Паскаль – языки одного уровня. Конечно, граница размыта, про это писали не раз.

anonymous
()
Ответ на: комментарий от seiken

Тогда транслятор с С в Паскаль тоже компилятор. Исходный язык C, целевой - Паскаль.

Компилятор языка Vala компилирует в C.

Компилятор яыка Java компилирует в объектный код, не способный исполняться на процессоре.

Я не понимаю, зачем вы тут спорите.

Aceler ★★★★★
() автор топика
Ответ на: комментарий от alexanius

the target language

Потом идет долгое объяснение, что есть этот целевой язык. Замечу, в более ранних редакциях была целевая программа. Если собрать цельный образ «целевого языка» из этих объяснений, то это - некая программа для некой самодостаточной вычислительной системы (виртуальной) машины и непосредственно выполняется на этой машине.

anonymous
()
Ответ на: комментарий от seiken

сам термин не имеет практического смысла.

Имеет. Компилятор — это не интерпретатор.

А машинный там код или промежуточный или вообще ЯП высокого уровня — не имеет значения.

Aceler ★★★★★
() автор топика
Ответ на: комментарий от seiken

Но трансляция из С в Паскаль по прежнему трансляция

И интерпретатор и компилятор являются трансляторами.

Любой компилятор также есть транслятор, но не наоборот.

Именно.

Aceler ★★★★★
() автор топика
Ответ на: комментарий от anonymous

У Вирта не определение. Он говорит что такая программа называется компилятором. Это не значит что другая не может им называться.

У Хантера - да, определение такое (и он прямо ниже даёт схему трансляции в байткод, не являющийся кодом целевой машины).

Но Хантер тут в меньшинстве, да и в принципе не могу его рекомендовать. У него сильно устаревшая книга.

alexanius ★★
()
Ответ на: комментарий от alexanius

Это не значит что другая не может им называться

Да ты офигел мне меня же копипастить %)

Ну да, но именно определения он вообще не дает (или я не нашел), так что это – первое упоминание – может играть роль условного определения.

не могу его рекомендовать. У него сильно устаревшая книга

Раз зашла речь, что из этого рекомендовал бы? Дракона тоже называют устаревшим и в чем-то неудачным (слишком много про парсинг, слишком мало про кодогенерацию).

anonymous
()
Ответ на: комментарий от SZT

Мне не нужно быть каким-то Официальным Обладателем Особой Железки, чтобы иметь право получить исходные коды, имея на руках бинарники. Это понятно?

Вот у кого взял бинарники, у того и требуй. Это понятно? А ты их взял как кстати? Просто зашёл в незакрытую квартиру?

AS ★★★★★
()
Ответ на: комментарий от AS

А ты их взял как кстати?

Какая разница. Честным гражданам нечего скрывать!

anonymous
()
Ответ на: комментарий от SZT

В суд на МЦСТ-Волга за нарушение GPL может подать автор кода либо уполномоченная организация.

Причём до подачи в суд она должна оформить досудебную претензию по результатам которой нарушение может быть устранено добровольно.

Например, путём удаления всех файлов из публичного доступа. Оно нам надо?

Если надо, пишите в FSF или EFF.

Aceler ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Раз зашла речь, что из этого рекомендовал бы? Дракона тоже называют устаревшим и в чем-то неудачным (слишком много про парсинг, слишком мало про кодогенерацию).

Если общетеоретический план интересует, то мне больше всего Купер нравится. Ещё Грюна книга очень крутая. Я их приводил в том сообщении.

Кроме того мне понравились лекции Свердлова, в сети их конспект есть, он видеозаписи тоже выкладывал.

Есть ещё набор более специализированных книг, но для общего развития этого более чем хватит.

alexanius ★★
()
Ответ на: комментарий от AS

А ты их взял как кстати?

Там ссылка была, по которой выложили тулзу для кросс-компиляции. Говорят, в составе тулзы модифицированные binutils и gdb, я не проверял.

Aceler ★★★★★
() автор топика
Ответ на: комментарий от Aceler

В такой размытой формулировке не имеет смысла. И это проблема, т.к. люди используют слово «компилятор» везде, где попало, и дезинформируют людей. Например, пишут у нас компилятор из нашего DSL в Java. С какого бодуна, если на выходе исходники на Java? Это генератор кода или транслятор, но не компилятор.

И понятие «высокоуровневости» тоже расплывчатое. Когда я учился, нам говорили просто: языки ассемблеров низкоуровневые, C, Pascal высокоуровневые, и есть как бы ещё выше, но там грань размыта.

«Высокий», «низкий» - это термины для учащихся литературных лицеев, но не адекватные технические термины. Я могу такое определение предложить: язык низкого уровня - это язык из класса регулярных языков, предназначенный для генерации двоичного кода для конкретного процессора или виртуальной машины. С таким определением «компилятор», на выходе которого предложения КС языка никакой не компилятор.

seiken ★★★★★
()
Последнее исправление: seiken (всего исправлений: 1)
Ответ на: комментарий от Aceler

И интерпретатор и компилятор являются трансляторами

но процессор - это аппаратный интерпретатор. во что он тогда транслирует?

anonymous
()
Ответ на: комментарий от anonymous

И что делает этот «интепретатор»? Не компилирует ли часом?

JIT-интерпертирует, очевидно же.

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

anonymous
()
Ответ на: комментарий от anonymous

ну вот ты взял и помножил на ноль 90% срачей на лоре…

anonymous
()
Ответ на: комментарий от anonymous

Интерпретатор — интерпретирует. Компилятор в его составе — компилирует.

В чём проблема-то?

Aceler ★★★★★
() автор топика
Ответ на: комментарий от seiken

В такой размытой формулировке не имеет смысла.

Ну не хочешь, не используй.

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

Aceler ★★★★★
() автор топика
Ответ на: комментарий от anonymous

любой человек может дать любому термину любое определение

Никто не запрещает дать любое определение. Но с точки зрения логики эти определения должны быть непротиворечивыми. Иначе этими терминами можно объяснить всё что угодно и не угодно.

Хочешь стандарта – изволь дать на него ссылку.

Осталось выяснить, что «стандарт» непротиворечив.

anonymous
()
Ответ на: комментарий от seiken

И это проблема

Да как-то не видно у людей проблем. Что академисты, что айтишники в массе своей пользуются и радуются. Только на ЛОРе несколько человек страдает, да еще царь.

anonymous
()
Ответ на: комментарий от Aceler

Интерпретатор — интерпретирует. Компилятор в его составе — компилирует.

А дальше продолжить? Что делает интерпретатор после компиляции?

anonymous
()
Ответ на: комментарий от seiken

Я могу такое определение предложить: язык низкого уровня - это язык из класса регулярных языков, предназначенный для генерации двоичного кода для конкретного процессора или виртуальной машины.

Под это определение попадают все языки для которых можно написать интерпретатор.

anonymous
()
Ответ на: комментарий от anonymous

язык из класса регулярных языков

все языки

anonymous
()
Ответ на: комментарий от anonymous

Под это определение попадают все языки для которых можно написать интерпретатор.

Все языки ассемблеров и ВМ (причем, без всяких КС расширений).

seiken ★★★★★
()
Ответ на: комментарий от seiken

Все языки ассемблеров и ВМ (причем, без всяких КС расширений).

Допустим у меня виртуальная машина, языком ассемблера которой будет python.

anonymous
()
Ответ на: комментарий от Aceler

В суд на МЦСТ-Волга за нарушение GPL может подать автор кода либо уполномоченная организация.

В FSF уже письмо отправлено по этому поводу.

Причём до подачи в суд она должна оформить досудебную претензию по результатам которой нарушение может быть устранено добровольно.

Будет отлично, если так всё и будет. Но мне бы хотелось, чтобы не требовалось предпринимать таких мер. Мне бы хотелось, чтобы компания МЦСТ уважала и соблюдала копилефт-лицензии, а не плевала на них, как это происходит в данном случае.

Вот скажите, вы считаете что МЦСТ поступает в данном случае хорошо или плохо? Почему бы просто не начать выкладывать исходники, без всяких урегулирований и судов?

И я так и не получил ответ на свой вопрос Опубликована система команд Эльбрус (комментарий)

SZT ★★★★★
()
Последнее исправление: SZT (всего исправлений: 1)
Ответ на: комментарий от anonymous

Допустим у меня виртуальная машина, языком ассемблера которой будет python.

Регулярные языки, Карл, регулярные!

seiken ★★★★★
()
Ответ на: комментарий от SZT

Вот скажите, вы считаете что МЦСТ поступает в данном случае хорошо или плохо?

Нормально поступает. Мы с тобой еще в том треде выяснели, что твое плевание в сторону МЦСТ безосновательно, потому что тебе никто не давал бинарников.

anonymous
()
Ответ на: комментарий от seiken

Регулярные языки

Языки из мышц. Это даже гуманитарий знает

anonymous
()
Ответ на: комментарий от anonymous

Мы с тобой еще в том треде выяснели, что твое плевание в сторону МЦСТ безосновательно

Нет.

потому что тебе никто не давал бинарников.

Что значит «давал»?

SZT ★★★★★
()
Ответ на: комментарий от seiken

Не очень понятно, почему в определение компилятора могла бы затесаться классификация грамматик.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.