Dmitry_Milk
> Что за статья? Ссылку?
https://gamedev.ru/flame/forum/?id=205936&page=1766&m=5436118#m26477
А, не заметил. Ок, почитаю.
Смешно выглядит репозиторий системы электронного голосования на выборах в МосГорДуму:
https://github.com/moscow-technologies/blockchain-voting_2019
PHP 40.8%
Smarty 25.4%
JavaScript 21.7%
Нашли на чём писать столь важный софт. Так себе и представляю - на выборах победил [object Object], обойдя сопеников null и undefined и набрав NaN процентов голосов изберателей.
Panzerschrek[CN]
> Нашли на чём писать столь важный софт.
PHP уже давно вырос из своих детских проблем.
Да и в сущности даже когда они были прямота рук решала всё.
Некий миф о том, что PHP какой то кривой вызван сейчас исключительно тем, что став бесплатным и доступным стандартом в вебе он просто собрал в своей кодобазе огромное количество говнокода от новичков в программировании.
Ничего более тут уже нет.
=A=L=X=
> PHP уже давно вырос из своих детских проблем.
Я пропустил момент, когда PHP стал компилируемым статически-типизированным языком? Если он таковым не стал, то это недоязык, на котором что-то надёжное писать нельзя.
> прямота рук решала всё
Даже с прямыми руками надо иметь инструмент, который отловит возможные ошибки как можно раньше.
Panzerschrek[CN]
> на выборах победил [object Object]
Дык, это уже было, реально было, вот картинка, короую мне показало перед какими-то предыдущими выборами:
В крестах в этом месте было бы случайным образом либо nan либо -nan.
https://godbolt.org/z/T99x9eYhG
Panzerschrek[CN]
> то это недоязык, на котором что-то надёжное писать нельзя.
Да можно. Википедия на нём написана. Фейсбук и половина интернета вообще.
Ну да, он как Lua - нетипизированный, но это не такая коренная проблема как может показаться. Просто больше отладки и в продакшон.
И, кстати, типы данных и строгую типизацию действительно стали потихоньку протаскивать, но пока только как генератор исключения TypeError.
Но куда ветер дует очевидно.
Мне кажется, или doge2048 специально забрасывает собак именно рядом с максимальной фишкой?
entryway
> В крестах в этом месте было бы случайным образом либо nan либо -nan.
> https://godbolt.org/z/T99x9eYhG
Шланг лох и оптимизнулся в лужу. -ffp-model=strict вроде излечивает это недопонимание.
А плавающий 0/0 - это в любом языке должен быть нан, так и задумано.
Panzerschrek[CN]
> Даже с прямыми руками надо иметь инструмент, который отловит возможные ошибки
> как можно раньше.
JS и PHP ловят off-by-one и use-after-free прежде, чем программа успеет выстрелить по памяти. Ваш ход, господа ометисты.
entryway
> случайным образом либо nan либо -nan
Почему случайным? Ведь у плавающего нуля есть знак, значит знак нана должен быть в соответствии со знаками числителя и знаменателя?
entryway
> В крестах в этом месте было бы случайным образом либо nan либо -nan.
Штудия вообще наглеет, не даёт делить на ноль:
error C2124: divide or mod by zero
Понятно дело, что на целый ноль делить нельзя. Но с чего это нельзя делить на вещественный ноль?
Panzerschrek[CN]
> Понятно дело, что на целый ноль делить нельзя.
Ну я же поделил.
https://godbolt.org/z/6MPqjodb5
Dmitry_Milk
> значит знак нана должен быть в соответствии со знаками числителя и знаменателя?
У нана вообще не должно быть знака.
entryway
> Ну я же поделил.
> https://godbolt.org/z/6MPqjodb5
Ты арифметические ошибки не обрабатываешь просто/
Согласно стандарту целочисленной арифметики, которая используется в популярных процессорах делить на ноль нельзя.
Во всякий высокоуровневых языках это приводит к исключению.
В C++ чутка сложнее. Там деление на ноль при арифметике целых чисел (не вещественных) будет неопределённое поведение. Ваш пример выше это просто случайный частный случай.