Значит, им пофиг на точности формулировок. Вот из-да таких и плодится потом каша, в т.ч. на Вики. У классического Питона интерпретатор только в виртуальной машине, да и там сегодня уже JIT-компиляция используется.
Ты опускаешь тот момент, что сопоставить должен кто-то, твое сопоставление субъективно, например, кто-то может сопоставить 10-ти яблокам слово «10 яблок»
нет, объективно. Если кто-то сопоставит 10и яблокам число 17, то он идиот. Сопоставление однозначное.
И любое яблоко можно разделить на произвольное количество частей, в том числе бесконечное.
нет, нельзя. Если долго делить яблоки, они перестанут быть яблоками. Пюре ≠ часть яблока. А уж тем более, яблоками не является кислород, водород, и углерод.
Поэтому, твои «числа» субъективны, они имеют отношение к реальности не больше и не меньше чем любая другая абстракция, в том числе бесконечность.
нет, объективны, ибо сопоставление чисел однозначно, и НЕ зависит от субъекта(если субъект не идиот).
Пробный камень для понимания — циклы. У компилятора, поскольку трансляция происходит перед запуском, трансляция тела цикла происходит один раз. У интерпретатора трансляция происходит на каждой итерации.
т.е. если в bash'е сделать предпросмолтр циклов, и их выполнепние только после парсинга done, то это сделает из bash компилятор?
ВНЕЗАПНО:
$ bash loop.bash
loop.bash: line 11: ошибка синтаксиса: неожиданный конец файла
#!/bin/bash
(( COUNT = 0 ))
while true; do
(( COUNT++ ))
echo "pass $COUNT"
done_XXX
по твоему выходит, что bash == компилятор, ибо НЕ выполнил ни единой итерации цикла! Хотя интерпретатор просто обязан был начать выполнение, распечатать COUNT, и лишь ПОСЛЕ этого рухнуть с ошибкой.
«Бинарная форма» программы - собранная из исходного кода компилятором форма представления программы в операционной системе. Трудно читаемая человеком однако прекрасно читаемая операционной системой/процессором/машиной...
«Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке»
«Интерпрета́тор — программа (разновидность транслятора), выполняющая интерпретацию
Интерпрета́ция — пооператорный (покомандный, построчный) анализ, обработка и тут же выполнение исходной программы или запроса (в отличие от компиляции, при которой программа транслируется без её выполнения»
числа это конечно абстракция, но любое число можно сопоставить с предметами IRL. Например два яблока соответствуют абстракции 2. А вот абстракции ∞ НЕ соответствует никакое количество яблок.
А какоеколичество яблок соответствуе тчислу Pi+e*i?
никакое. Т.к. это число не принадлежит к ℕ. Также оно не принадлежит к ℤ (если допустить, что яблоки можно брать в долг), и не принадлежит к ℚ (если допустить, что яблоки можно резать).
Если разделить яблоки на Over9000 частей они перестанут быть яблоками, а станут яблочным пюре
А если доказывать неверное утверждение, то доказательство станет софистикой. Не надо крутить жопой - сколько рациональных чисел между 0 и 1? А иррациональных? А на сколько промежутков времени можно разделить 1 секунду?
Если разделить яблоки на Over9000 частей они перестанут быть яблоками, а станут яблочным пюре
А если доказывать неверное утверждение, то доказательство станет софистикой.
я доказываю верное утверждение.
Не надо крутить жопой - сколько рациональных чисел между 0 и 1?
жопой крутишь ты. Между 0 и 1 НЕТ натуральных чисел. А мы про натуральные вообще-то.
Рациональные ты сюда тоже приплёл зря, т.к. в ℚ нет определения «следующего числа». А значит яблоки тут не причём. Их нельзя нумеровать рациональными числами. Мало того, нельзя даже их части нумеровать, т.к. деление яблок — конечная операция. Их невозможно делить до бесконечности(ибо они очень быстро перестают быть яблоками). Т.е. множество частей яблока НЕ является множеством рациональных чисел, а лишь конечным подмножеством ℚ.
Вообще, операция деления над конечными множествами в 95% скатывает множество в непонятное говно (в бесконечных множествах всё прекрасно делится, кроме /0. А в конечном /0 в 95% получается). Разве что в полях Галуа можно что-то делить, в другом говне деление работает только иногда. Но поля Галуа к яблокам не относятся, ибо если ты 5 из 7и яблок поделишь пополам, то получится по 6 яблок в каждой половине (ибо 6*5=2 GF(7)). Бред, да? Потому яблоки вообще делить нельзя, это операция смысла не имеет, и ведёт к противоречию.
Не знаешь, но утверждаешь что бесконечности IRL не существует? Разупорись.
у тебя глупая бинарная логика. Включи мозг, и перестань быть блондинкой.
У меня есть рубль. Я его сейчас подкину. Существует ответ на вопрос «какой стороной упадёт рубль»? Нет, ответа на этот вопрос не существует. Также и «бесконечной вселенной» тоже не существует, есть только конечная часть. А что там за этой частью — мы не знаем. Как ты не знаешь, какой стороной упал мой рубль.
Рациональные ты сюда тоже приплёл зря, т.к. в ℚ нет определения «следующего числа».
Я их «приплёл» как пример реально существующих сущностей.
А значит яблоки тут не причём. Их нельзя нумеровать рациональными числами
Очень даже можно. И наоборот тоже можно - нумеровать рациональные числа натуральными. Мощности-то одинаковые. И что характерно, количество долей яблока может быть произвольным - оно бесконечно, ничем не ограничено.
Их невозможно делить до бесконечности(ибо они очень быстро перестают быть яблоками).
Ну ты дубина. Делить можно или до бесконечности, или вообще нельзя (пол-яблока это уже не яблоко - объект другого множества). Т.е. что комплексные числа деление - незаконно?
операция деления над конечными множествами в 95% скатывает множество в непонятное говно
Рациональные ты сюда тоже приплёл зря, т.к. в ℚ нет определения «следующего числа».
Я их «приплёл» как пример реально существующих сущностей.
ещё раз: рациональных чисел не существует IRL. Существует только конечное подмножество рациональных чисел.
Ну т.е. они _могут_ существовать, там, в невидимой части вселенной, вместе с ответом на вопрос «какой стороной упадёт монетка?». Но здесь их нет. Мы их можем только представить и предположить, что они «есть». Однако, надо всегда помнить, что это не более, чем наша фантазия.
Очень даже можно. И наоборот тоже можно - нумеровать рациональные числа натуральными. Мощности-то одинаковые. И что характерно, количество долей яблока может быть произвольным - оно бесконечно, ничем не ограничено.
нету такой мощности, как у ℕ. Это оторванная от RL абстракция. Нечего нумеровать. И делить бесконечно IRL тоже нельзя. Обычно за <30 делений можно скатить что угодно в говно, из которого целое уже не собрать. Как не собрать яблоко из пюре.
Ну ты дубина. Делить можно или до бесконечности, или вообще нельзя (пол-яблока это уже не яблоко - объект другого множества). Т.е. что комплексные числа деление - незаконно?
это ты дубина. Деление «до бесконечности» не имеет смысла. Не, это законно. УК РФ не запрещает. Можешь и на ноль делить, можешь сравнивать тёплое с мягким, я не против.
Обратные элементы - нет, не знаю.
вот именно. А теперь знай, что эти твои «обратные» в 95% случаев не определены. А если ты их определишь, у тебя получится не поле, а говно с делителями нуля и прочими кошерными вещами.
делить нельзя, это операция смысла не имеет
Ок. Так и запишем.
ага. Запиши.
1. бесконечности не бывает IRL
2. деление в общем случае даёт неопределённый результат, причём в большинстве случаев так.
3. Обычные множества чисел ℕ, ℤ, ℚ, ℝ представляют собой неточную модель того, что существует в реальной жизни.
4. из п3 следует, что применять математику на практике нужно осторожно, помня о том, что это всего лишь приближённая модель.
Существует только конечное подмножество рациональных чисел
Если оно конечно, то тебя не затруднит перечислить все рациональные числа, которые существуют. Так?
Это оторванная от RL абстракция
Ты уже совсем там берега потерял, да?
Деление «до бесконечности» не имеет смысла.
Ты упорно не желаешь понять, что бесконечность это не какие-то действия (деление) до бесконечности. Это возможность производить такие действия. Возможность делить яблоко существует, эта возможность ничем не ограничена = можно получить любое (бесконечное) количество долей.
А если ты их определишь, у тебя получится не поле, а говно с делителями нуля и прочими кошерными вещами
Если оно конечно, то тебя не затруднит перечислить все рациональные числа, которые существуют.
что ты глупости спрашиваешь? Затруднит конечно. Это разве доказывает принципиальную возможность перечисления?
Это оторванная от RL абстракция
Ты уже совсем там берега потерял, да?
не. Я как раз за логику держусь. А вот ты потерялся. Потому что забыл, что эти твои ℚ существуют лишь на страницах учебника и в твоих фантазиях. А в реальном мире их нет, и не было никогда.
И кстати перечитай учебник, там много чего написано, но вот того, что эти ℚ можно сопоставить с RL — не написано. Сопоставление есть только для конечного подмножества ℕ. Ну и некоторые из ℚ тоже можно сопоставлять с реальными объектами, например ¾ или ⅘. На практике и побольше бывают ℚ, например float'ы это что-то типа 12345/8388608. Приближённо это даёт нам представление действительных чисел(которые тоже только в нашей фантазии существуют).
Ты упорно не желаешь понять, что бесконечность это не какие-то действия (деление) до бесконечности. Это возможность производить такие действия. Возможность делить яблоко существует, эта возможность ничем не ограничена = можно получить любое (бесконечное) количество долей.
ты никак не можешь понять, что возможность существует только в нашем воображении. IRL нет у нас «идеально острого ножа» и «бесконечно делимых яблок». Потому поделить яблоко можно только на конечное число частей.
это говно, а не поле. Тут у тебя даже умножения нет. Сколько будет в твоём говне ½*½=? Сначала определи умножение, а потом уже я тебе продемонстрирую, почему твоё множество — говно.
Берём поле вычетов Z(3) 0,1,2. Добавляем обратный 1/2.
а вот не добавлял-бы ½, тогда всё было чудесно. Делителей нуля не было бы, и мы имели-бы поле Галуа с однозначным делением GF(3).
Правда с такой математикой яблоки делить не очень хорошо, ибо 2*2=1, а отсюда следует, что 1/2=2. Т.е. если у нас всего 3 яблока, и мы хотим два яблока оставить себе, а половину из того, что останется отдать, то нам нужно отдать 2 яблока из одного... Причём из этого одного яблока мы два яблока отдадим, и ещё два останется. Бред? Да. За то деление вполне однозначно. А чисел всё равно не существует ☺
«Простой интерпретатор анализирует и тут же выполняет (собственно интерпретация) программу покомандно». И почему ты считаешь, что он является транслятором?
я тебе больше скажу. любой компилятор сначала читает и интерпретирует программу. и почему ты считаешь, что он не является интерпретатором?
Нет, это легко проверить — позволяет ли эта функция interpret транслировать (или интерпретировать) _любые_ программы языка си? Нет, значит она не является транслятором (или интерпретатором) этого языка. Язык это некое множество строк (определённое подмножество всех цепочек над словарём, подмножество замыкания Клини, множество термов порождённое грамматикой), enum Cmd { Con1, Con2, ... }; это простой язык — он даёт нам множество термов {Con1, Con2, ...}, ему соответствует BNF вида Cmd ::= Con1 | Con2 | ..., к языку си он не имеет отношения. Функция interpret не транслирует язык Cmd в какой-либо другой язык (читаем опять определение языка), она его выполняет, то есть обходит AST (в данном случае этот обход — switch) и по мере обхода производит эффекты.
соответствие всегда есть.
Нет, нет терма какого-либо языка который бы соответствовал терму интерпретируемого (если есть то это уже компилятор), сам попробуй найти это соответствие для сколько-нибудь сложного интерпретатора — терму исходного языка не соответствует ни какая-то инструкция, ни их последовательность, ему соответствует конкретный control flow размазанный по всему коду интерпретатора (на языке его реализации, будь то ЯВУ со своей семантикой или сразу машинный код от его трансляции).
Что касается общепринятости определений — я нашёл одну русскоязычную книжку («рекомендовано для ВУЗов», все дела) в которой и интерпретатор и компилятор это трансляторы.
An interpreter is another common kind of language processor. Instead of producing a target program as a translation, an interpreter appears to directly execute the operations specified in the source program on inputs supplied by the user
Как со счётными множествами история — выбирай что хочешь :)
никакое. Т.к. это число не принадлежит к ℕ. Также оно не принадлежит к ℤ (если допустить, что яблоки можно брать в долг), и не принадлежит к ℚ (если допустить, что яблоки можно резать).
То есть по твоей логике это не число, так же как и inf?
то получится по 6 яблок в каждой половине (ибо 6*5=2 GF(7)). Бред, да?
Конечно, бред. В GF(7) 6*5!=2. Там вообще нету ни 6, ни 5, ни 2. А тебе пора бы уже перестать говорить об алгебре, если ты не обладаешь даже знаниями первокурсника.
это говно, а не поле. Тут у тебя даже умножения нет.
Вообще-то есть. Любое кольцо классов вычетов по простому модулю - поле (то есть в нем есть умножение), и оно изоморфно соответствующему полю Галуа. Просто ты - необразованный еблан.