Давайте я опять про программирование.
Для меня часто самые важные вещи про программирование вообще это те которые изначально были про какой-то один язык.
Хороший пример - "Язык программирования С" Кернигана и Ричи. Они умудрились научить сям, показать как работают менеджеры памяти, рассказать как учить программированию, заразить энтузиазмом при виде выразительного кода и показать самую короткую процедуру для копирования строки.
Или вот дзен питона. Технически это даже часть стандартной библиотеки языка. То есть если импортировать модуль this
то тебе распечатает:
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Перевод
Красивое лучше уродливого.
Явное лучше неявного.
Простое лучше сложного.
Сложное лучше запутанного.
Развернутое лучше вложенного.
Разреженное лучше плотного.
Читаемость имеет значение.
Особые случаи не настолько особые, чтобы нарушать правила.
При этом практичность важнее безупречности.
Ошибки не должны замалчиваться.
Если не замалчиваются явно.
Встретив двусмысленность, отбрось искушение угадать.
Должен существовать один - и, желательно, только один – очевидный способ сделать что-то.
Хотя этот способ поначалу может быть и не очевиден, если вы не голландец.
Сейчас лучше, чем никогда.
Хотя никогда часто лучше, чем *прямо* сейчас.
Если реализацию сложно объяснить – идея точно плоха.
Если реализацию легко объяснить – возможно, идея хороша.
Пространства имен – отличная штука! Будем использовать их чаще!
И хотя я всё меньше пользуюсь питоном, этот текст чем дальше тем больше определяет моё отношение к любым технологиям, языкам, библиотекам - you name it.
Я это всё к чему собственно? Кто-нибудь расскажите программистам на Скале, что явное лучше неявного!
Comments (6)
А бывает наоборот - знаменитая книжка про Design Patterns задумывалась как что-то независимое от языка, но оказалась на две трети списком костылей для явы, для которык в более новых языках есть встроенные фичи
А что считать ошибкой? Функция взятия подстроки из строки, если ей передаётся диапазон, выходящий за границы столики, это ошибка или нормальная ситуация?
It must be obvious if you are a Dutch 🙂
ну это всё же текст про философию программирования, а не просто список правил 🙂
и вообще, practicality beats purity.
Но я вижу, что в реальной библиотеке Питона это не так 😉
Скажу нет, скала, не пользуюсь