А если в программе есть цикл, который выполняется uint16_t раз, то ты тоже предлагаешь для каждого из 65536и чисел компилировать свой код? Нет, ты сделаешь один цикл
А в интерпретаторе, как правило, будет произведена интерпретация 65536 раз.
Но процессор ничего кроме машкода не понимает! Там есть генерация--->выполнение--->подстановка_на_вход_результа_выполнения. Т.е. получается 2-х сторонняя трансляция внутри (точней во время) процесса трансляции. Следующий шаг интерпретатора может работать с результатом генерации+выполнения исходной строки, как раз то, чего компилятор не может, или ограничен препроцессором.
ну и eval в нём тоже полнофункциональный. Поэтому сделать компилятор из *.sh в бинарник тоже невозможно
почему «невозможно»-то? Вполне себе возможно: открываешь файл, и парсишь его в рантайме. Да, нужен будет интерпретатор некоторого промежуточного (или даже исходного) ЯП.
А в интерпретаторе, как правило, будет произведена интерпретация 65536 раз.
так было только в 70х годах прошлого века. Даже в ZX Spectrum парсился не текстовый файл с BASIC программой, а нечто промежуточное, вроде LLVM. Каждая команда BASIC'а кодировалась одним байтом.
$ echo "test test test" | sed 's~.*~rm -rf /~e'
rm: опасно рекурсивно обрабатывать «/»
rm: используйте --no-preserve-root, чтобы отменить предупреждение об опасности
Причём после обработки тем интерпретатором можно (нужно) выкинуть всё скомпилириванное, так как могут быть созданы новые переменные, функции, ...
и что? Подумаешь — трагедия.
К слову, считаешь ли ты приведённую программу компилятором?
нет. У тебя просто программа в программе. Т.е. данные для C кода используются как код интерпретатора. Впрочем, если интерпретатор получает неконстантный указатель, то что мешает ему изменить код *data, реализовав полноценный eval? Короче: отсюда не видно реализации interpret();, и ответить на вопрос невозможно.
Да, тут твой компилятор — это и есть интерпретатор. И этот интерпретатор узнает в компилтайме, который ты называешь рантаймом, значение твоего выражения, а потом запишет все в бинарь. Только тонкость в том, что ты из своего ЯП не имееш доступа к этому интерпретатору, а следовательно и к написанному тобой коду.
Откройте уже наконец, что там будет одинаково мощность или количество? Видимо получается, что количество элементов в любом бесконечном счетном множестве одинаковы? В таком случае, логика автора не выглядит такой уж и странной, как некоторые пытаются ее представить тут.
Понятие «количество элементов» для бесконечных множеств не определенно. Существует понятие мощности, которое его расширяет, а для конечных множеств совпадает с ним.
Понятие «количество элементов» для бесконечных множеств не определенно. Любые два множества, между элементами которых может быть установлено взаимно-однозначное соответствие (биекция), содержат одинаковое количество элементов (имеют одинаковую мощность).
А если так, то очевидно, что мощности, а значит и кол-ва эл-в любых счетных множеств равны.
бесконечность по определению больше _любого_ числа. Следовательно число элементов бесконечного множества, если и есть, то это НЕ ЧИСЛО. Какое ты имеешь право сравнивать и вычитать НЕ ЧИСЛА?
число элементов бесконечного множества, если и есть, то это НЕ ЧИСЛО
Число = Не число. Садись пять за блондо-логику. И помни, что пять - это не число.
5 — число. ∞ — не число. Абстракция, над которой некоторые действия можно делать, а некоторые нельзя. IRL ∞ не существует, только в нашем воображении. И это не моя логика. Это математика. Я слишком стар, что-бы спорить с учебником.
над которой некоторые действия можно делать, а некоторые нельзя
Тогда определи барьеры абстракции. Озвучь общее правило, что и когда можно, а что и когда нельзя. И это должен быть не просто высер Васи Пупкина, а обоснованное правило, следующее из...
Я слишком стар, что-бы спорить с учебником.
А я недостаточно глуп, чтобы слепо доверять учебникам.