LINUX.ORG.RU

Ответ на: комментарий от anonymous

Слава петону тогда уж. Вроде больше ни в одном языке такой наркомании нет

Гвидо грит «езык нужен для реализации DSL, как лисп и круче лиспа, он не нужен для того, чтобы его писать, не нужен для того, чтобы его исполнять — на него нужно смотреть и восхищаться». В итоге фичи, которые по хорошему кроме отладчика не должны быть нигде, протекают в язык повсеместно.

Что хотели сделать разрабы записью «DATASETS['AG_NEWS'](root='./.data', ngrams=NGRAMS, vocab=None)»? Ну типа нужно сделать запрос из набора данных по определенным параметрам. В языке для белых людей это делается ЯВНО: «DATASETS['AG_NEWS'].request(root='./.data', ngrams=NGRAMS, vocab=None)». Это сложно? Это нечитаемо? Неа, нужно перехватывать фундаментальные конструкции языка. Я очень сильно сомневаюсь, что «DATASETS['AG_NEWS']» — это именно функция, а не объект с переписанным __call__. То есть, у вас как бы объект-класс, но как бы и функция. А завтра в результате какого-то бага «DATASETS['AG_NEWS']» внезапно станет классом (вместо экземпляра класса), и кодер поедет крышей в процессе отладки, учитывая то, как фривольно питон взаимозаменяет класс и экземпляр — это не баг, это фича питона. Фича, вроде метаклассов, которых на самом деле нет и никогда не будет в питоне.

byko3y ()
Ответ на: комментарий от Sahas

в C++ есть. Но там и похлеще наркомания встречается...

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

byko3y ()
Ответ на: комментарий от anonymous

() -> operator(): норм. () -> call: кал как он есть

Это справедливое замечание. Как бы стронно это не звучало, но я заявлю: питон — это сложный язык. Программы на нем, может быть, и просты, а язык сложен. И наоборот, какой-нибудь лисп прост как три копейки, но разобраться в программе может быть тяжеловато. Причина заключается в том, что схожие вещи реализованы по разному, крупные исторические пласты разрослись горизонтально и вертикально, образуя порой бессмысленные узоры. Например, методы с подчеркиваниями не подчиняются логике, вы можете только запомнить каждый из них, вы можете смотреть в доки, но вы не можете взглянув на малознакомый метод сказать «он нужен для того-то».

Процесс скатывания до такого состояния вы можете воочию увидеть в PEP, типа «какое там у нас слово еще не используется?» Нет, у нас не конкретные свойства-дескрипторы, а мы просто докинем в огромную кучу методов с подчеркиванием еще горстку подобных. В итоге имеем __getattr__, __getattribute__, __get__, __getitem__ — причем, все они служат примерно одной и той же цели, но каждая имеет свои причуды.

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

питон — это сложный язык

какой-нибудь лисп прост как три копейки

Я и говорю, кресты и питон похожи больше, чем отличаются:

  • либо тысячи костылей для частных случаев и клеймо переусложнённое/неочевидное/whatever
  • либо всего несколько базовых правил(из которых все остальные выводятся без неоднозначностей) и невзлетевший язык
anonymous ()
Ответ на: комментарий от anonymous

Причина заключается в том, что схожие вещи реализованы по разному

a = [False, True][b not in c]
a = True if b not in c else False
a = b not in c

Есть разные безумные однострочники на разных языках, но здесь по сути задача выполняется.... функцией «not in». Почему не «not b in c», почему не «b in not c», при том, что «b is not c» — одному аллаху известно. Я понимаю, что так принято в английском языке строить фразы, но также я понимаю, что ты не на английском языке программы писать будешь. И получается, что отдала девственность за коробку конфет.

byko3y ()
Ответ на: комментарий от anonymous

либо тысячи костылей для частных случаев и клеймо переусложнённое/неочевидное/whatever
либо всего несколько базовых правил(из которых все остальные выводятся без неоднозначностей) и невзлетевший язык

Твое правило вполне оправдано в плане того, что интенсивно используемая система неизбежно будет обрастать слоями совместимости, отсюда частные случаи/переусложнонности, но ты упускаешь из виду есть оправданные преусложнения, а есть неоправданные. Можно костылить Криштиану Роналдо под новые профессии, а можно костылить слепого с рождения калеку. И в итоге индустрия выбирает того, что «ну он такой миленький, когда ничего не видит, мне его жалко».

byko3y ()
Ответ на: комментарий от peregrine

Проблема в том, что для Python нет умных IDE из-за динамической типизации. Сейчас они, конечно, пытаются реализовать костыльные тайп-хинты нашлёпкой сбоку языка, чтобы получить хоть какое-то преимущество языков белых людей, но что-то оно у них не заходит толком. IDE как обсирались на авто-дополнении без Type-hint’ов, так и продолжают обсираться уже и с ними.

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

Что хотели сделать разрабы записью «DATASETS['AG_NEWS'](root='./.data', ngrams=NGRAMS, vocab=None)»? Ну типа нужно сделать запрос из набора данных по определенным параметрам.

даже по одной строчке понятно, что это такой обычный и частоприменяемый питонячий фабричный метод

вопрос в другом, почему ТС полез в самые недры на самый низ, вместо того чтобы пользоваться этим через нормальный интерфейс.

n_play ()