Ложные идеалы питона

yroslavasako

Меня всегда удивляли правила "змеиного" программирования.
Есть только один способ сделать это!
Говорят создатели функций map, foreach и прочих, list-comprehension, и цикла for. Простите, а по каким правилам выбирать реализацию? Есть ещё range и xrange, но их легко выбирать в зависимости от цели, но труднее читать. Требование выбора единственного метода вообще как-то ортодоксальное учение о паттернах напоминает, но сопоставление этого требования с функциональностью языка и базовых библиотек может вызывать приступы шизофрении
Или вот это стремление к показательной простоте.
Например дублирование ООП функциональности процедурной считается шиком. Всякие __str__ и str __len__ и len и прочее. Это нормально, а вот использование небуквенных символов для обозначений функций-членов классов - это уже табу.
Многострочные лямбды нельзя, а головоломные метаклассы (обозначаются очевидным образом как первый класс в списке наследования которые переопределяют всё что только можно, генерят наполовину класс и работают с классом (даже не с его экземпляром) как со словарём - это просто и приемлемо. Если кто не понимает, как удобно пользоваться многострочными лямбдами - пример на скале. Нельзя сказать, что подобное совсем не достижимо в питоне - у него есть управляемый with, но это как реализовывать неполный и бажный лисп в своей программе на плюсах.
Я и в самом деле не понимаю, как можно продвигать столь самопротиворечивые правила программирования. Недоброжеталель мог бы сказать, что эти все правила призваны обосновать ленность разрабочтиков питона, но Гвидо со своей машиной времени не создаёт такого впечатления.
Может быть эти правила форсятся не для того, чтобы сделать язык более простым и удобным, а просто для того, чтобы люди поверили, что он простой и удобный? В конце концов, js взлетел не смотря на все свои многочисленные недочёты в дизайне, просто благодаря маркетологам

pilot

просто благодаря маркетологам
:facepalm:

yroslavasako

:facepalm:
назови хоть что-нибудь, что тебе нравится в javascript как специалисту.

pilot

назови хоть что-нибудь, что тебе нравится в javascript как специалисту.
Мне нравится что он работает в любом браузере.

yroslavasako

Мне нравится что он работает в любом браузере.
false. посмотри референсный браузер от W3C Amaya

pilot

false. посмотри референсный браузер от W3C Amaya
false

yroslavasako

И что? Это не браузер? Он не удовлетворяет критерия w3c как браузер? Не поддерживает svg, css, анимацию?

pilot

И что? Это не браузер? Он не удовлетворяет критерия w3c как браузер? Не поддерживает svg, css, анимацию?
Пох на w3c. Ты упоролся?
ЗЫ: Для понимания как распространяются языки программирования надо осознать как распространился js.

yroslavasako

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

pilot

Что возвращает нас опять к теме макретологов, сговоров производителей и прочего.
Что возвращает нас к " :facepalm: "
 
То, что все вынуждены кушать кактус, не добавляет кактусу привлекательности.

Кого волнует привлекательность кактуса? :confused:
Всех волнует как писать работающую программу. Писать работающую надо на js. Пиши красивые на Хаскеле или Лиспе сколько угодно.

yroslavasako

Что возвращает нас к " :facepalm: "
А ну так. Доля вложения в маркетологов и фильтры Петрика заработают и будут приносить деньги создателю. Об ложных обоснования я и говорю. Потому что как бы не был заинтересован Петрик в своих фильтрах, общественность крайне заинтересована в их отсутствии

ppplva

У вас маркетологофобия.
Никто в JS не вкладывался. Одни люди, поспешив, вставили в свой браузер придуманный на вчерашней пьянке язык, браузер приобрел популярность - и все, приехали. Дальше абсолютно все решения вынужденные.
С тех пор сайты для людей пишутся на JS (для эльфов можно хоть на хаскеле).
Язык - говно, никто не спорит.

istran

С тех пор сайты для людей пишутся на JS
И не только сайты. Вон ребята из Gnome решили все десктоп приложения на JS писать ( http://treitter.livejournal.com/14871.html ).

Ivan826

Язык охуенный
Просто надо привыкнуть и понять его прототипно-ориентированность и перестать выстраивать самому себе грабли, где они не нужны, в виде попыток реализации классического ооп и/или замены модели делегирования и колбэков.
Когда ты осознаешь, что "методу" можно передать "объект", в котором находится "метод" его применения, оперерирующий со "свойствами" и другими "методами" этого же "объекта" то открывается третий глаз. Главное понимать что в нём всё является объектами, и к любому можно получить доступ к прототипу

vall

Может быть эти правила форсятся не для того, чтобы сделать язык более простым и удобным, а просто для того, чтобы люди поверили, что он простой и удобный? В конце концов, js взлетел не смотря на все свои многочисленные недочёты в дизайне, просто благодаря маркетологам
да, питон уже стал новой явой и соответственно умер. аминь. пока что я не вижу кто, как и зачем сможет его воскресить. те кому нужна производительность или выразительность его давно бросили.

vall

Никто в JS не вкладывался.
ой да ладно, jit-компилляторов для него больше через для питона. у питона я знаю один, и то не факт то он работает.

6yrop

на что перешли то?

pilot

да, питон уже стал новой явой и соответственно умер. аминь. пока что я не вижу кто, как и зачем сможет его воскресить. те кому нужна производительность или выразительность его давно бросили.
:facepalm:

ppplva

Не вкладывался в плане "продвижения на рынок" и т.д.
А так, конечно, если уж приходится на этом писать, то давайте его хотя бы быстрым сделаем :)

yroslavasako

Если хотелось странной и могучей типизации, всеобъемлющей динамичности и единства данных и кода, то можно было просто забрать уже давно существующий common lisp, а не городить нелепые затычки

bleyman

Есть только один способ сделать это!
Говорят создатели функций map, foreach и прочих, list-comprehension, и цикла for. Простите, а по каким правилам выбирать реализацию?
Ты неправильно цитируешь правило: "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." Смысл в том, что они стараются сделать так, чтобы было сразу понятно как это сделать, и, желательно, как это сделать правильно, но, конечно, это тяжело. Нельзя на уровне языка запретить писать "if not d.has_key(key)" вместо "if key not in d", но с опытом приходит понимание что второе наверное правильней.
Выбирать реализацию следует используя голову.
Алсо, оригинально эта цитата показывает почему нормальные люди должны использовать питон вместо перла. Типа, как "goto considered harmful" оригинально было аргументом против людей, которые честно считали, что "if condition goto label" лучше чем структурные условные операторы. Прикинь, большинство кодеров так считало в какой-то момент! Потом они все вымерли или эволюционировали, аргумент потерял свой контекст и теперь часто понимается неправильно, в, как бы, намного более сильном смысле чем заложенный в нём.
Например дублирование ООП функциональности процедурной считается шиком. Всякие __str__ и str __len__ и len и прочее.

Ооо, чувак. Это на самом деле раскрывает суть Питона.
Питон позволяет писать простые вещи просто, и сложные вещи довольно просто. Однако если ты попытаешься писать очень сложные вещи на нём, и, must needs, начнёшь зырить в код интерпретатора, твои волосы начнут шевелиться и покидать тебя по ночам, ища пропитание, и возвращаясь с рассветом, мерцая неземным светом.
Все эти функции существуют по одной дико сложной причине, которую я проиллюстрирую на простом примере: если бы ты получал текстовое представление объекта вызовом `obj.str`, то это бы не работало для классов, потому что `cls.__str__` является методом, который возвращает строковое представление инстансов класса, и требует чтобы ты передал ей инстанс. Ты не можешь вызвать её прямо у класса, потому что для класса тебе на самом деле нужно вызвать метод `__str__` метакласса, с классом как параметром. Глобальная функция `str` кладёт пенис на стандартный порядок получения атрибута и всегда вызвает атрибут `__str__` класса данного объекта, а не самого объекта.

vall

на что перешли то?
на героин.
а я был всего-лишь пьян.

Ivan826

то можно было просто забрать уже давно существующий common lisp
угумс. А серверный код писать на ассемблере - для скорости

apl13

Ты не знаешь про разницу между Common Lisp и ассемблером?

soroka000

Дайте угадаю: айванго прогал прогал на питоне и понял, что это не совершенный язык.
Ну как говорится so what?

yroslavasako

Айвенго прогал, прогает и будет прогать на питоне. Просто меня раздражает коммьюнити с нимбом непогрешмости, заявляющее "тебе этого не нужно".

tronika

извини, но ты вообще какой-то странненький
если судить по альтлинуксу, то тебя вообще постоянно что-то раздражает, может быть, проблема в чем-то другом?

Ivan826

Я в курсе что такое Common Lisp и он совсем не ассемблер :)
ПРосто предложение юзать на клиенте Common Lisp поскольку он уже есть со своей мультипарадигменностью и не надо выдумывать js по идиотизму стоит где-то там же, что и предложение писать серверный код на асме
Оставить комментарий
Имя или ник:
Комментарий: