Комментарии 27
FizzBuzz на разных языках на сайте Rosettacode
P.S. В том числе и на Forth.
На Питон, тоже несколько вариантов.
Форт решение выигрывает по количеству «буковок» затраченных для описания решения. :)
По-моему, для сравнения будет правильнее привести вот эту нестареющую классику
Остановились на середине. setup.py, requirements.txt, entry points.
ci/cd — это уже delivery pipeline, а setup.py — то, как его ставить. Даже если ci/cd нет, процедура установки всё равно какая-то должна быть. И scp ~developer/git/mywork/foobar.py root@production:/var/www/production/
, это явно не то, что хочется видеть в продакшене. Даже если это пятистрочный питон.
Иными словами несмотря на довольно занимательную идею пример прям активно демонстрирует позицию тех кто сравнил этот метод с «пальбой из пушки по воробьям»
Вот исходный код Python-скрипта, который позволяет решить задачуИ по идее, после кода должен быть конец.
Конечно, в данном контексте эту задачу взяли для наглядности из-за ее компактности и минимального содержания, которое бы хоть как-то оправдывало ее обвязку и расширение.
Переводчику я должен заметить, что у источника в заголовке слово «sustainable», которое я бы в данном контексте перевёл не как «надежный», или «прочный», а скорее — «долговечный». Тогда все вроде становится на свои места. Ведь, если мы увеличили сложность всего решения, а она очевидно возрасла в разы, то надежность будет неминуемо падать. Простое перемножение вероятностей. Так что, нельзя с уверенностью утверждать, что мы увеличили надежность скрипта, несмотря на то, что все описаное и является «хорошим тоном» в программировании. А вот «долговечность» такого кода увеличивается.
если мы увеличили сложность всего решения, а она очевидно возрасла в разы, то надежность будет неминуемо падать. Простое перемножение вероятностей. Так что, нельзя с уверенностью утверждать, что мы увеличили надежность скрипта
Если добавили своего кода, то да, если использовали готовые надежные модули, то сложность растет уже не так катастрофически.
Например
Python 3.7.2 (default, Feb 19 2019, 13:23:50)
Type "help", "copyright", "credits" or "license" for more information.
>>> import click
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'click'
>>>
Вы написали логгер и аргпарс руками хотя могли бы использовать docopt и loguru и код увеличился бы едва ли на десять строк.
Поговорим о том, как его улучшить.
может просто применить решето Эратосфена заместо трёх проверок числа на каждое значение
А зачем вам простые числа?
Вычислять до какого предела? А если чиселка с внешнего пайплайна пришла? Какой-нибудь деревянный вариант балансира, который по облачному id определяет на какой из трех серваков подать нагрузку. Решета нужны когда есть шанс переиспользоваться в одном запуске, и в случае fizzbuzz оно точно не эратосфеново
Разработка надёжных Python-скриптов