LINUX.ORG.RU
ФорумTalks

Программирование курильщика (python) и нормального человека

 ,


0

1

Рассмотрим влияние языка программирования на мышление. На примере популярной библиотеки - aiohttp.

Допустим Вы программируете http-сервер.

Вам нужна функция добавления роутов в список.

Вы начинаете с универсальной:

def add_route(self, method: str, path: str,
              handler: Union[_WebHandler, AbstractView],
              *, name: Optional[str]=None,
              expect_handler: Optional[_ExpectHandler]=None
             ) -> AbstractRoute:
    resource = self.add_resource(path, name=name)
    return resource.add_route(method, handler,
                              expect_handler=expect_handler)

Чтобы пользователю Вашей библиотеки было хорошо, Вы предоставляете ему возможность определить наследника Вашего класса, работающего с роутером, принимаете аргумент router. Таким образом, если юзеру что-то нужно - он доопределит поведение этой функции и будет радоваться жизни...

Затем Вам требуются частные случаи (есть желание упростить использование Вашей библиотеки). Вы хотите добавить add_post, Вы добавляете его, переиспользуя универсальный метод:

def add_post(self, path: str, handler: _WebHandler,
             **kwargs: Any) -> AbstractRoute:
    """
    Shortcut for add_route with method POST
    """       
    return self.add_route(hdrs.METH_POST, path, handler, **kwargs)

Всё идёт хорошо, Вы продолжаете работу. Добавляем другие методы, например add_delete:

def add_delete(self, path: str, handler: _WebHandler,
               **kwargs: Any) -> AbstractRoute:
    """
    Shortcut for add_route with method DELETE
    """
    return self.add_route(hdrs.METH_DELETE, path, handler, **kwargs)

Некоторое время всё еще идёт хорошо. Вы продолжаете работу. Нужно еще добавить методы add_get и так далее.

В этом месте Вы вспоминаете, что Вы программируете на Python. А язык определяет мышление, поэтому Вы пишете следующий вариант add_get:

def add_get(self, path: str, handler: _WebHandler, *,
            name: Optional[str]=None, allow_head: bool=True,
            **kwargs: Any) -> AbstractRoute:
    """
    Shortcut for add_route with method GET, if allow_head is true another
    route is added allowing head requests to the same endpoint
    """
    resource = self.add_resource(path, name=name)
    if allow_head:
        resource.add_route(hdrs.METH_HEAD, handler, **kwargs)
    return resource.add_route(hdrs.METH_GET, handler, **kwargs)

А и правильно! Если пользователи вдруг не огребут проблемы, почему их наследник не получает вдруг в add_route GET-определения, то их мышление же может вдруг выправиться, а это недопустимо!

PS: Тексты примеров взяты из aiohttp/web_urldispatcher.py Версия 3.5.4.

PPS: понимаю что мне скажут «переопредели еще и add_get». Это предложение как раз покажет нам еще раз в подробностях, что язык определяет мышление.

★★

Шутка требует подробных пояснений, где тут среди двух наркоманов хотя бы курильщик.

ilovewindows ★★★★★ ()
Последнее исправление: ilovewindows (всего исправлений: 1)
Ответ на: комментарий от ilovewindows

наркоманов по моему значительно больше двух.

rsync ★★ ()

Допустим Вы программируете http-сервер.

python

Совсем наркоман?

aiohttp

Теперь понятно к чему ты клонишь. Напейся.

mord0d ★★★ ()
Ответ на: комментарий от mord0d

aiohttp

Теперь понятно к чему ты клонишь

что предлагается взамен, доном метром?

rsync ★★ ()
Последнее исправление: rsync (всего исправлений: 3)

Питон всё никак не задушит горбатого в голове топикстартера? (Символ пёрла 🐫 верблюд)

menangen ★★★★★ ()

Мы все глубоко заинтригованы, продолжайте.

ptarh ★★★★★ ()
Ответ на: комментарий от menangen

по теме сказать нечего - остаётся обсуждать топикпастера.

как всё это банально и предсказуемо

Ты банален, Хоботов!

(ц)

rsync ★★ ()
Ответ на: комментарий от rsync

Зачем ты трогаешь питон, если тебе это противно. Мне как-то предлагали работу связанную с питоном, я его потыкал, подумал, подумал и отказался. И тебе советую

Harald ★★★★★ ()

Это какой-то клон den73, только с травмой от перла, а не лиспа.

Трагично.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Нет, это не клон. Это унера, благодаря ему на лоре был запрещен постинг через тор.

imul ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Это давно было. Он скриптами флудил на лоре через тор. В результате выходные ноды тора были забанены.

imul ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Диагноз на лицо.

Там в прошлом треде вбрасывали видео с выступлением сего почтенного оратора - ты даже не знаешь, насколько ты прав :)

ptarh ★★★★★ ()

Ну да, так и есть. Питон убог. Разве это для кого-то новость?

hateyoufeel ★★★★★ ()
Ответ на: комментарий от imul

благодаря ему на лоре был запрещен постинг через тор

a зачем на ЛОР постить через Тор?

seiken ★★★★★ ()
Ответ на: комментарий от seiken

Дрочишь на анонимность - дрочи до конца!

Deleted ()

Язык программирования действительно может оказать влияние на мышление. На меня больше всего повлияло изучения форта. А python и perl не обладают какими-то мозгоизменяющими особенностями, просто бэйсик с наваротами.

Rupricht ★★ ()
Ответ на: комментарий от ptarh

вроде на слушателей не кидается, в одежду одет, очевидный бред не несёт, что не так?

Harald ★★★★★ ()
Ответ на: комментарий от Harald

Втянутая в плечи голова и постоянно засунутая в карман рука производят странное впечатление.

Deleted ()
Ответ на: комментарий от Rupricht

не обладают какими-то мозгоизменяющими особенностями


txt = ‘ ‘.join(stinglist)

re.compile(r”\S”).search(txt)

это именнно мозгоизменяющие закладки

rsync ★★ ()
Ответ на: комментарий от rsync

что предлагается взамен, доном метром?

Ты б строчку-то до конца дочитал хотя бы.

Нажрись до беспамятства.

mord0d ★★★ ()
Ответ на: комментарий от imul

Это унера, благодаря ему на лоре был запрещен постинг через тор.

Нет, через TOR не он был. Он был раньше, из-за него капчу сделали.

question4 ★★★★★ ()
Ответ на: комментарий от seiken

a зачем на ЛОР постить через Тор?

Чтобы флудить скриптами, когда свой белый айпишник забанили. Или это (как здесь очень любят) был обобщённо-риторический вопрос?

imul ★★★★★ ()

Мдя... как у тебя все сложно... Ты к врачу бы сходил...

dem ★★ ()
Ответ на: комментарий от rsync

Ну как тебе сказать. Тебе незачем - ты кажется мартовский кот и начал орать вне зависимости от того на что орать...

dem ★★ ()
Ответ на: комментарий от rsync

Первые несколько тем мы обсуждали высеры. До сих пор находятся бедняги, обсуждающие не глухого ТС. Соси их внимание с достоинством что ли, а «банальное» отношение остальных ты банально заслужил.

t184256 ★★★★★ ()

Так что ты хотел сказать то? 3й тред я пытаюсь понять что не так и не понимаю.

ggrn ★★★★★ ()
Ответ на: комментарий от ggrn

Так что ты хотел сказать то? 3й тред я пытаюсь понять что не так и не понимаю.

У меня такое впечатление, что в Яндекс.Такси на бэкенд ищут грамотного питонщика именно после него.

Mirage1_ ()

Как обезьяна была последним достижением сами знаете кого, так и классы - последнее достижение хомо задротус. Все эти функции с карри и без состояния - это от веганства и девственности.

TooPar ()
Ответ на: комментарий от rsync

по теме сказать нечего - остаётся обсуждать топикпастера.

Ты разве не этого добивался? Пассивная агрессия, напыщенное поведение, вот это вот всё.

i-rinat ★★★★★ ()

Рассмотрим влияние языка программирования на мышление.

Ты личным примером уже не первую тему демонстрируешь терминальную стадию такого влияния.

grem ★★★★★ ()
Ответ на: комментарий от rsync

По теме вы говорить не очень любите, сливаетесь на конкретных примерах и вопросах. Эко же вам Перл (который вы тоже не знаете) сознание то покорежил.

gistart ()
Ответ на: комментарий от torvn77

топикстартер по это вопросу специалист, спросите у него

gistart ()

Простите, вы на c++ ведь программируете?

Shadow ★★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)