Я так понимаю, что тип переменной $this это не строка.
. Если все строготипизированные развиваются из строгой типизации в более слабую
В чем-то вы правы, но скорее развитие идет в направлении более легкой в использовании типизации, но строгой (вывод типов — вместо манифестной типизации, Generics и т.д.).
возьмем более-менее приличную по размеру задачу, и вы ее реализуете на Обероне
Они отказались привести код, который аналогичен двум или трем строчкам на Haskell, вряд ли можно ожидать что они постратят свое врем на приличную по размерам задачу.
С точки зрения «визуальной красоты» — удобнее. С точки зрения практики — однофигственно. Благо достаточно набрать «lowe», что б получить точно такой же список (из 3х функций) для перевода строковых данных в нижний регистр, вместо использования объектного интерфейса.
А он поймет, что какие-то функции нельзя применять к строчкам? Если нет единого стиля наименования я не знаю, будет ли слово полностью, или сокращено типа lcfirst.
две строчки из скриншота сократятся до $number = (int)«42»;, что по-моему ещё удобнее и проще.
Мне кажется, это ускорят первичное написание кода, а не разработку в целом (включая исправление последующих ошибок). Хотя, если проект очень маленький и цена ошибки очень невысока…
семантическая ошибка обращения к несуществующему элементу
Это ошибка того, что не разделяются nullable и не nullable — по умолчанию считается что метод может возвратить null и это никак не контроллируется. Посомтрите например на kotlin и на проект введения не nullable ссылок на объекты в C# 7:
Вы явно декларируете ссылку как не nullable и тогда нельзя присвоить туда nullable без специальных приседаний — компилятор контроллирует.
Сэр Тони Хоар называет введение null ошибкой на миллиард долларов
«a» + 1 = «a1», а «1»+1 = 2 — не?
например str_word_count — есть префикс, слова разделены пробелами, нет сокращений кроме префикса ucfirst — нет префикса, глагол сокращен.
В чем-то вы правы, но скорее развитие идет в направлении более легкой в использовании типизации, но строгой (вывод типов — вместо манифестной типизации, Generics и т.д.).
Они отказались привести код, который аналогичен двум или трем строчкам на Haskell, вряд ли можно ожидать что они постратят свое врем на приличную по размерам задачу.
А он поймет, что какие-то функции нельзя применять к строчкам? Если нет единого стиля наименования я не знаю, будет ли слово полностью, или сокращено типа lcfirst.
Конечно, две строчки необязательно:
Насколько по вашему релевантны претензии изложенные здесь?
eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design
Например строковые функции называются каждая на свой манер. Это не создает неудобства?
Вот так не удобней ли?
Или просто дает ощущение скорости разработки.
В чем простота и оптимизация для веба?
Слабая типизация (не путать со статической и манифестной) это разве преимущество?
Надо отрефакторить математику…
Это ошибка того, что не разделяются nullable и не nullable — по умолчанию считается что метод может возвратить null и это никак не контроллируется. Посомтрите например на kotlin и на проект введения не nullable ссылок на объекты в C# 7:
Вы явно декларируете ссылку как не nullable и тогда нельзя присвоить туда nullable без специальных приседаний — компилятор контроллирует.
Сэр Тони Хоар называет введение null ошибкой на миллиард долларов
www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare
За счет чего?
Какие формализмы есть в Oberon, которых нет в C#?