Pull to refresh

Comments 109

офф Если бы еще питонщикам платили так, как они пожирают мир.
Data Science, который практически весь на питоне, полне неплохо получают.
Питон — это инструмент. Платят не за знания языка, а за умение его применять в нужной сфере.

Если походить по собеседования, то 90% интересно не умение его применять, а именно знание языка...

Мы явно разные собеседования проходили. У меня прямо противоположный опыт.
Видимо, зависит от места или даже скорее от проводящего собеседование.
UFO just landed and posted this here
Об этом и был сарказм. Это просто умение работать вспомогательным инструментом.
исключительно имхо — это вопрос времени
Тогда лучше уж сразу «Python».
Но если по-русски, то «Питон» как-то ближе.
> имя позаимствовал у любимой комедийной труппы «Летающий цирк Монти Пайтона»
Так транслителируется уже правильно в русском как Пайтон, есть прецедент уже.
… наверно потому что змея (а не комик-группа, как было ранее)
А когда он стал змеёй? Изначально же в честь Monty Python's Flying Circus, причём «Monty Python» тут имя, а не змея.
Но на логотипе языка таки два питончика.
А эти Монти Пайтоны они точно просто так пайтоны, без всякой связи со змеями? :-)
Ну, если только когда то давно, когда произошло это имя.
Нет, так не бывает. Имя или связано, или не связано. И попробуйте представить, как вообще читали python греки. В контексте античности это слово русском языке читается Пифон, вообще-то. :-)
Разочаровавшись в недостатках существовавших языков программирования


Простите, но точно ли он разочаровался в недостатках языков, а не в самих языках?
UFO just landed and posted this here
Если Python поедает мир, то это только от безысходности. Поедать ему позволяем мы, используя его где надо и где не надо.
Согласен. Но велик соблазн использовать удобный инструмент там, где удобных альтернатив нет.

Это тот же BASIC
Это мощный язык с простотой бейсика. Об этом пишется в статье.

Нет нормальной IDE с отладчиком.
В смысле, нет? Поясните.

Отступ в 4 пробела
Вы хвалите или осуждаете?
UFO just landed and posted this here
Это где их нет?

Да после питона, что-то почти любой язык мне кажется неудобным. В браузерах вообще кроме JS и трансляторов в JS ничего нет.

Что делает его мощным?

Семантика и синтаксис.
PyCharm же есть!
А насчёт второй версии — вроде же её вот-вот прекратят поддерживать
По поводу второй версии можно уже сказать, что её прибили давно. Просто некоторые по разным причинам всё ещё пинают труп (признаюсь, но я в том числе).

PyCharm community Вам уже не годится на роль нормальной ide?

даже плагин в Eclipse сносно работает. Правда там так и не убрали пару странностей. Язык вообще то не привязан в IDE и дело совсем не в этом.
UFO just landed and posted this here
В Фортране отступ таки был один, служил он совсем для других целей и был наследием перфокарт.
Не компилятор — это фигня вопрос. Профилируешь и в ботлнеках jit вставляешь.

Всегда было любопытно — как может язык повернуться назвать ПРОСТЫМ объектно-ориентированный ЯП в котором для получения размера коллекции используется ФУНКЦИЯ len.

Если действительно любопытно, то почитайте про dunder methods. По-моему, всё просто и len вполне себе метод.
class A:
    def __len__(self):
        return 42

x = A()
print(len(x)) # 42
print(x.__len__()) # 42
UFO just landed and posted this here
Функции тут тоже являются объектами, всё нормально.
не то подметил
как может язык повернуться назвать ПРОСТЫМ объектно-ориентированный ЯП
где програмист должен держать в уме тип переменной, или тип хешируемый или нет, а если произошла ошибка то причина может быть в чёрт знает каком месте но не в том где бросается эксепшн.
А Питон действительно подходит для любой задачи… только с некоторыми корректировками.
У меня даж идея о неком P-- с точным универсальным синтаксисом для любых скриптов и компиляции.
Эта мода __вот_так_называть__, писать [x for y in z for x in y], и многое другое
Вот как особенности тараканов одного человека могут загадить весь мир.
1. График интересный, конечно. На нем бы лидировал язык мумбу-юмбу, у которого 10 пользователей, но рост 300% в год. Надо бы аудитории все-таки сравнивать.
2. Сейчас мир стремительно движется в сторону строгой типизации (с дженериками), JIT и лямбд: TypeScript, PHP и т.д. Вот бы Питону тут поднажать. Хотя он и старается (async-await вон добавили одновременно с JS, хотя и сильно позже C# и Hack). Тайп-хинты без дженериков и без энфорсящих их линтера, встроенного в экосистему по умолчанию, — совсем слабы. И многострочные лямбды отсутствуют by design, приходится «настоящие» именованные функции объявлять. Ну а про JIT и совсем печально (при всех обилиях разных ЫPython-ов).

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

Дженерики есть в тайп хинтах! Дженерик классы наследуются от Generic из модуля typing, а параметры типов создаются при помощи TypeVar оттуда же.

Ооо, здорово, не знал! docs.python.org/3/library/typing.html — синтаксис, правда, чуть странноват. Многословный. Интересно, можно ли сделать, как в TypeScript, добавление-вычитание свойств, мэтчинг по набору свойств, типы-альтернативы и т.д. Возможно, кстати, что в питоне это и не нужно — другая применимость.

Типы альтернативы это объединения? Тогда они есть. И есть тайп-алиасинг. Матчинга по свойствам и прочей структурной типизации вроде нет, но у нас всё же не js действительно, нет даже синтаксиса для создания объектов "в воздухе".

C JIT не так, чтобы печально. Numba очень хорошо работает.
Сейчас мир стремительно движется в сторону строгой типизации (с дженериками), JIT и лямбд: TypeScript, PHP и т.д. Вот бы Питону тут поднажать.

Это уже будет другой язык.


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

Чем поражает? Есть другие языки на уровне.

Например? Только, пожалуйста, не Хаскель — нет, я люблю Хаскель и он тоже красив и даже научен, но он слиииишком переусложнен, барьер на вход громаднейший, особенно с IO перемудрили в угоду научности.
Чем поражает? Есть другие языки на уровне.

самый ближайший по уровню это имхо JS но там такое вытворяют что все несуразности Питона это детский лепет
Ой ну ради бога, нет в JS изящества и строгости, это мешанина всякой всячины еще почище PHP. Даже TypeScript — и тот совершенно не строг и не изящен.
просто близкий по уровню, или я за уровень понял не то.
Не только
изящества и строгости, это мешанина всякой всячины
а я ж писал
такое вытворяют что все несуразности Питона это детский лепет

Единственное поповоду стат. типизации. Типа нельзя по желанию включить в Питон неявную стат. типизацию. Тогда изменения будут у компилятора/ интерпретатора и минимум у языка. В этом кроме прочего и изъящество
UFO just landed and posted this here
UFO just landed and posted this here
и как раз вот позавчера тыкал в питон

хеллоу ворлд написали? что там натыкать за день можно
Изящества и четкости не заметил, а вот неприятные ощущения — почти сразу.

Неоднократно видел случаи, когда программисты Це/ППХ садятся за питон и продолжают писать на питоне в сишном стиле.

«Девушка может уехать из деревни, а вот деревня из девушки — никогда» (с)
UFO just landed and posted this here
Я как бы не только на плюсах-то пишу, и к другим языкам претензий нет

Да, но при этом в другом коменте у вас была тяга сотворить какой-то многоэтажный if. Что уже говорит о том, что вы что-то делаете не так, раз у вас в одно условие лезет куча безымянных выражений, что появляется тяга их раскладывать на строки.

Понимаете, это как с юниттестами — если у вас плохая архитектура, нет SRP, нет DI, то и юниттесты вы не напишите к проекту, а будете ругаться, какой плохой инструмент эти ваши юниттесты.
UFO just landed and posted this here
А где вы там многоэтажный if и кучу безымянных выражений увидели, если не секрет?
Два условия — для питона уже куча?

В том то и дело, когда это два простых условия, двухэтажный if не требуется. И я подозреваю, что у вас там либо дофига условий, либо безымянные нечитаемые условия вида
if len(str(count(map(max(min(sort(filter(please(sudo(10)))))) >= len(str(count(map(max(min(sort(filter(20))))))
UFO just landed and posted this here
программисты Це/ППХ садятся за питон и продолжают писать на питоне в сишном стиле

Ну это нормально. Я когда двадцать с лишним лет назад перл пробовал, тоже на нём по-сишному писал. Ничего, потом научился.

Кто-нибудь может объяснить корреляцию между java и javascript на графике? Очень уж она меня заинтересовала.
Скорее всего, это можно интерпретировать так: вопросы по java — более-менее со стабильной частотой поступают, а всплески по вопросам javascript возникали при выходе фреймворков и новых версий стандарта языка: 2013 — React, 2014 — Vue.js, 2015 — ES6, 2016 — Angular 2+, в эти моменты javascript на графиках растет вверх, пока хайп не спадёт.

И это немного жаль, что он такой распространенный. У Python динамическая типизация и медленная скорость, а значит на нем проблематично писать большие или высокопроизводительные проекты. Это, на мой взгляд, является фундаментальными недостатками, которые никак не исправить на уровне языка.

Немного жаль, что не существует ни одного языка позволяющего писать одновременно большие и высокопроизводительные проекты. Так же очень жаль что в мире есть лишь 1 способ написать реально высокопроизводительный проект — использовать ассемблер с ручными оптимизациями под конкретную модель процессора.

Существует — как минимум C#, Java, которые побыстрей Python будут.

Существуют C и Rust которые будут побыстрее C# и Java. С логикой «побыстрей» в плане времени выполнения программы мы в любом случае прийдем к самому низкому уровню где ни шарп ни джава даже не приблизятся по производительности. У меня нет опыта написания ни больших ни высокопроизводительных проектов, но на сколько я понимаю ни Java ни С# ни Go не гарантируют что проект легко можно будет сделать большим или что он будет высокопроизводительным.
Мне не кажется что Python стал таким распространенным по какой-то случайности, что тысячи инженеров и энтузиастов по всему миру просто ошиблись не выбрав какой то другой язык, по-моему python попал в тренд и занял свою нишу и сожалеть об этом, это как сожалеть о том, что люди ездят на обычных легковушках, а не на машинах Формулы 1, они ведь побыстрее будут.
принцип разделения на операции низкого уровня — какой нибудь ассемблер, и декларация их использования — какой нибудь питон, неизвестен в 2019 году.
У Python динамическая типизация и медленная скорость,

это фейл современного подхода интерпретации питона. На самом деле с рядом твиком там синтаксиса и т.п. можно сделать полным аналогом С не говоря уже о C#/жаба А вот наоборот вряд ли.
Как мне кажется из приведенного Вами тезиса о скорости и типизации не следует наличие проблем с написанием больших проектов. YouTube по-вашему достаточно большой проект?

За 3 года программирования на Python ни разу не столкнулся с тем, что в какой-то момент времени в процессе долгой работы программы получаю объект не того типа, который функция ожидала принять. Это ещё связано и с тем, что в нём нет приведения типов и, соответственно, граблей этим обусловленных. ИМХО больше проблем доставляют слабо типизированные языки вроде Си или Js совершающие не очевидные преобразования при подаче разнотиповых операндов, лишь бы получить хоть какой-нибудь результат даже, если он бесполезен.
UFO just landed and posted this here
матстат тут не причём, а великий могучий С++ так выворачивает руки и мозги, что пусть на нём и остаются, нечего ими портить комьюнити питона.
это не выправишь.
в професиональных проэктах 1000 строк ТОЛЬКО ПОХОЖИХ ДРУГ НА ДРУГА темплейтов
< че то там < че то там>> и язык настолько крут что темплейтами можно написать машину тьюринга и ввести её в бесконечный цикл (котоорый будет исполнять компилятор)
и они такие профи, что кодят и никак не поймут, что это всё не нужно.
UFO just landed and posted this here
а в питон вот тоже не получается?

незнаю, по моему питон совсем рядышком со стандартными языками по сравнению с
в хаскель, что в идрис

в чём именно проблема вхождения в Питон? Надо привыкнуть, и это основной плюс питона, что многие вещи которые надо знать подразумеваются имплицитно ( то есть явно не прописываются) и это делает код лаконичным но во многих языках так.

Прям вот похожих?

да, просто количество переменных в функции менялось, наверное поэтому, если можно одним темплейтом прописать то фиг значет почему так делали
UFO just landed and posted this here
Без типов сложно на больших масштабах,

да кста у меня идейка небольших утилит которые это правят
  1. проверка типов переменных функции например декоратором и прочие ассерты которые часто нужны
  2. инспекция неизвестного обьекта с выводом подробной инфы о нём (поможет в п.1)
  3. 2.да не только загрузка а разного рода юзанье модулей паршивое. Надо было сделать чтобы модуль был обычным обьектом внутри которого доступ к нему по self а снаружи по имени.
  4. ты должно быть не заметил недоделанный, точнее странный интерфейс трейсбека, я там лазил пытаясь сделать утилиту коррекции ошибок (чтобы правильно указывала место где ошибка, а не там где брошен эксепшн, нужен трейсбек вверх по тому что исполнено ) но опять же не я это всё придумывал и постепенно пришёл к выводу что не подойдут те инструменты что в питоне в данный момент
  5. 3. а что кидать в случае ошибки рантайма, как раз эксепшн. Более того. В питоне кидают эксепшн в конце ИТЕРАЦИИ. Почему-то...
  6. 4. не понял
  7. instanceof с NewType не работает. приведи пример, сколько работаю у меня всё нормально работало.
  8. 6. а надо привыкнуть к такому концепту. По мне так
    if foo == bar or foo == baz: лучше читаемо, а большие операции следует выность отдельно или использовать\.


ты правильно обозначил некоторые ошибки (я ещё добавил), их при возможности следует выправить, и тогда это будет лучший язык. Другие языки так не выправишь ибо там неулучшаемая хрень в самой идейной базе. Но не я же пишу версию питона 4.
UFO just landed and posted this here
В рантайме, что ли? В рантайме уже поздно проверять.

как раз единственная возможность в языке с только дин. типизацией потому что тип, карл, может зависеть от ввода и конструироваться на лету.
import typing

никогда не использовал этот typing и он не нужен, так как чудес никакая либа чисто Питона не делает. Кстати да некоторые либы Питона паршивые и то что ты напишешь просто так в 10 строк будет лучше. Тот же партиал или инспекшн -> ещё тот вырвиглаз.
Всегда создаю новый тип так:
o2 = type('Y', (test,), dict(a='Foo', b=12))

www.programiz.com/python-programming/methods/built-in/type
UFO just landed and posted this here
потому что тип, карл, может зависеть от ввода и конструироваться на лету.

Зачем?

для какой то задачи со стиранием типов. Простейший пример. пусть есть GUI, в которой пользователь может графически сконструировать любой обьект с полями со значениями, поля могут быть сложными поэтому GUI отображает иерархию. Я такое даже в JS делал. Составив обьект, он идёт дальше в программу с заранее неизвестным своим типом.
UFO just landed and posted this here
а экзистенциальные типы.

приведи их пример на обычном языке типа C, java или питоне. Может там в ручную надо будет проверять вещи которые не будут бросать эксепшн, а это хуже
UFO just landed and posted this here
не, приведи пример что именно ты имеешь ввиду под «экзистенциальным типом» в виде кода на каком нить обычном языке.
UFO just landed and posted this here
Сначала набирал ответ по каждому пункту, но закрались подозрения, что вы пытаетесь в питон принести какой-то другой ЯП. Могу ли я попросить посмотреть код? Может я смогу чем-то помочь. И образец лога. И решение на хаскеле.

И вообще, мне кажется логи на хаскеле должно быть проще парсить, чем на питоне, но могу ошибаться.
UFO just landed and posted this here
Если вам правда будет не лень с нуля писать это на питоне

Ну гимнастики для, я бы поковырял ваш лог. Если скинете настоящий кусочек побольше. Но все 20 гигов не надо))
UFO just landed and posted this here
Блин, слишком синтетически и скучнее)) Опишите какие аргументы на входе. Может поковыряюсь для себя.
UFO just landed and posted this here

Если забить на возможные ошибки(допустим, у нас точно безошибочный лог), то код-то очень быстро напишется, за несколько минут буквально (если я правильно понял задачу). И по памяти О(1). Рабоатет, правда, небыстро (у меня ~1гб/минута), да и не особо эстетично (обычный императивный C-подобный код).


Заголовок спойлера
import json
from collections import defaultdict

with open('log.txt', 'r') as f:
    db = defaultdict(lambda: { 'n': 0, 'sum': 0, 'uniq': set(), "max": -1})
    for line in f:
        record = json.loads(line)
        db_record = db[record['eventType']]
        db_record['n'] += 1
        field_1 = record['field1']
        db_record['sum'] += field_1
        max_value = db_record['max']
        if max_value < field_1:
            db_record['max'] = field_1
        db_record['uniq'].add(record['field2'])

for event_type,record  in db.items():
    avg = record['sum'] / record['n']
    print(f'eventType:{event_type}, avg: {avg},max: {record["max"]}, uniq: {record["uniq"]}')
UFO just landed and posted this here
Ну вот как можно находить проблемы там где их нет?
Берём некое количество строк из файла
text = """{ "eventType": "Bar", "field1": 15, "field2": "meh"}
{ "eventType": "Bar", "field1": 12, "field2": "meh"}
{ "eventType": "Baz", "field1": 15, "field2": "meh"}
{ "eventType": "Baz", "field1": 13, "field2": "meh"}

"""

for line in text.split('\n'):
sline = line.strip()
if sline:
e = eval(sline)
print(e)


не подключая мои утилиты которые напоминают стримс, то я для себя наварганил и не выкладывал ещё.
Это JSON, там какое-то поле может быть null, eval вывалится. Но даже если предположить, что его там не будет, ваш код просто парсит JSON, а задача другая.
просто заверни в try тогда. Это самый легкий способ достать переменные а потом делай с ними что хочешь. Немного нужно будет повозиться если переменная растянута на несколько строк, и всё.
Питон лучший для всякой фигни с текстами.
можно даже вывод обьектов e генератором записать.
Скинь пример лога на пару страниц, напишу базовым питоном, там задача на десять строк максимум
UFO just landed and posted this here
Ну и вишенкой не ожидаемая ни в одном другом языке, включая whitespace-sensitive, ошибка тута:

if foo == bar or
   foo == baz:
    continue

Вообще конечно можно вот так, если вам очень хочется:
if (foo == bar or
   foo == baz):
    continue

Но за всю карьеру питона мне ни разу не требовалось делать многострочные условия. Когда появлялась такая нужда, я старался устранить саму нужду. Это то же самое, что многострочные объявления функций, когда у вас сотня аргументов: может в каких то языках это считается нормальным, но много где это признак плохого кода/архитектуры.
UFO just landed and posted this here
А питон на них ругается? ;)

Представляете, из-за моей привычки не допускать жирных сигнатур пришлось попробовать, чтоб убедиться, что не ругается))
В те времена уже существовал Lisp, который мог решать все те же задачи не хуже, а то и лучше.
В чем преимущество питона, кроме простоты перехода с C и sh?
Почему-то для многих Perl является синонимом бренйфака. Хотя, этот язык ничем не хуже новомодного питона.
Я все же не могу понять, почему питон захватил мир.

И да, отступы — это адский ад. Ни в одном современном языке нет такого, чтобы логика задавалась разметкой.
И да, отступы — это адский ад.

То есть вам чисто принципиально обидно? Или вы в других языках позволяете себе где-то не писать отступы? Когда я жрал кактус с богомерзкими фигурными скобочками и точками с запятой, я мечтал, чтобы интерпретатор по отступам сам понимал, какие блоки я от него хочу. Спасибо, что мне в свое время показали питон. И как же я обрадовался, когда отступы оказались самым меньшим из благ, которые я познал в питоне.

Но это еще фигня. Я знаю два прекрасных языка, где помимо скобочек и точек с запятой, приходится перед переменными ставить доллар. Чрезвычайно любопытно, как другие языки работают без долларов, магия какая-то.
на самом деле это самый лаконичный и красивый способ разделять блоки и иерархии. Языки прошли эволюцию бритвы окхема когда сначала писали дурные
begin — end для блоков, потом флуд {} а потом увидели что и это не нужно
да, в других языках я пишу все в одну строчку, а тут питон не позволяет.
Скажите, почему нельзя это было сделать опциональным? Т.е. кто хочет, тот юзает отступы, а кто нет — скобки? Есть проекты вида bython , но это так, созданные энтузиастами вещи.
Можно много чего написать, но не хочу начинать холивар. Каждому свое. Мне лично неудобно, но видимо, я в меньшинстве.
потому что ты не юзаешь только скобки.
ты всегда юзаешь скобки И ОТСТУП, иначе это будет НЕЧИТАБЕЛЬНО.
а значит на самом деле скобки не нужны.
и питон позволяет, или мог бы позволять с небольшым твиком писать маленькие блоки в одну строку. что то типа comprehension
Отступы «адский ад» только первую неделю активного писания, потом наступает прозрение. Говорю это вам как (в далеком прошлом) лютый сторонник скобок, и вот это дурацкое заблуждение не давало мне даже посмотреть в сторону питона лет 10 точно. (В этой связи да, с точки зрения успешности языка Гвидо совершил громадную ошибку, когда сделал только отступы, ведь мир невозможно переубедить, получился совершенно искусственный и дурацкий барьер на вход, во многом из-за которого питон проиграл пальму первенства пхп.)

Что касается перла: я всегда раньше тоже писал разные утилиты на перле. А потом заметил интересное: начинаю писать на перле, пишу строк 100, потом возникает странное ощущение: «что-то тут не так...» — пишу эти же 100 строк на питоне по горячем следам и обнаруживаю, что строк оказалось не 100, а 50. И после того, как это повторилось раз 5, до чукчи наконец дошло.
Да, это сильно отталкивает, так как Сишный синтаксис привычней (лично мне да и многим).
Отступы еще неприятны тем, что некоторые форумные движки «режут» эту питоновскую разметку. Да, конечно копипаст это плохо, но бывают разные ситуации. Впрочем, видимо, вариантов нет, придется учить и питон. В некоторых вещах ему, к сожалению, нет альтернативы (скрипты для Ida,windbg).

Кстати, пользуясь случаем, хочу вас поблагодарить — я начинал изучать программирование именно с вашей книги (и сайта, и конечно же, «денвер»). Именно благодаря тому, что первыми моими материалами по программированию были именно ваши книга и статьи, я не начал изучать какие-то гуанофреймворки, а понял важность знания Си и Ассемблера.
Отступы «адский ад» только первую неделю активного писания, потом наступает прозрение.

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

Какой еще ад? Вот я аргумент про питонячьи отступы никогда не понимал и до сих пор не понимаю: вы ставите отступы (всегда), скобочки и точки с запятой, и тут вам новый язык предлагает оставить только отступы, значительно облегчая вам написание кода, убирая кучу синтаксического шума, и для вас это ад? Вы что, мазохист?

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

Вы же понимаете, что тогда вам работа в команде противопоказана? Я как то читал код на питоне, где вместо 4 пробелов ставили 1 пробел. Мне было очень тяжело.

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

Кстати, у меня есть подозрения, что эти ваши случаи, которые в порядке вещей, нужно, и я думаю можно, как то исправить. Давайте вы опишите, а я попробую вам помочь?
Вы же понимаете, что тогда вам работа в команде противопоказана?
Возможно. Я большей частью работаю как фрилансер. Хотя, в команде можно договориться о стиле разработки. Все же, и со скобками тоже люди пишут по разному ( '{' c новой строки или в той же, отступ есть или нет..).
То есть вы в этих случаях без отступов пишете?
Бывает разное, когда не до отступов. Да, это экстремальные случаи, но у меня было такое много раз. Когда где-то не дома (поездка, больница, тюрьма), и есть только планшет без клавиатуры, и нужно срочно что-то исправить, еще и удаленно. Когда нет удобной питоно-студии с автоматическими табами и прочего, а только nano/notepad. Какой-то перл не требует отступов, хоть в 1 строку пиши. Понятно, что это код нечитабельный и кривой, но какая разница, если его никто не увидит и он должен решить задачу здесь и сейчас? Да, проблема надуманная и нереальная для многих, но она бывает, и все же, я не понимаю этой принудиловки.
Может приведу неудачный пример, но вот человек, будучи дома, может одеваться несколько иначе, свободнее, чем уходя на официальный прием или еще куда. А тут как будто говорят «нет, ты должен всегда выглядеть идеально, хоть ты даже и на даче в глуши в лесу».
Давайте вы опишите, а я попробую вам помочь?

Как бы я не хотел начинать холливары, т.к. каждому свое, и кому-то нравится питон, кому-то нет… Большинство моих задач по разработке решаются с помощью других ЯП, и, если бы оно так и оставалось, я бы в жизни не начал обсуждать питон. Но, есть 1 проблема. В своей работе я использую такие программы, как Ida pro (дизассемблер), отладчик WinDbg и подобное ПО для реверса/отладки. Так вот — абсолютно во всех программах стандартом де-факто для встроенного скриптования является тот самый Питон. Альтернативы либо нет вообще, либо куцые встроенные скрипт-системы, не имеющие и 10% мощи Питона. И вот есть иногда задача (вида — автоматически распаковать лежащие на стеке строки), взял, скопировал скрипт для решения с форума, а он ругается. Потому что форум побил форматирование этих самых отступов. Ладно, открываю скрипт в любимом Notepad++, расставляю (визуально) вручную табами отступы, где надо. Запускаю — опять не слава богу. Оказывается, нужно было не табы, а 4 пробела. Может есть Иде, где это просто, но в нотепаде не очень, т.е. мне для 1 языка, который решает 5% моих задач, нужно заводить отдельный IDE и вообще, изучать то, неясно что. И это грустно и вызывает много негатива, какой уж, извините, я тут немного излил в коментариях к статье.
Хотя, в команде можно договориться

Так и вижу ситуацию, как команда разработчиков договаривается: — эй, ребята, а давайте отныне не будем делать отступы в коде, по скобочкам же все равно все понятно?

Какой-то перл не требует отступов, хоть в 1 строку пиши.
А вместо отступов нужно ставить скобочки, точки с запятой и доллары. Так себе замена. Кстати вот вам строчка из питона, которая не вызовет ошибку:
print(1); print(2); print(3)
Выглядит с моей точки зрения чрезвычайно богомерзко, но возможно это поможет вам, когда будете в очередной раз редактировать код с планшета.

я не понимаю этой принудиловки
А принудиловку со скобочками, точками с запятой и долларами вы понимаете? Причем по умолчанию любой более менее не тупой текстовый редактор, и уж тем более IDE, при написании кода автоматически соблюдает отступы блока, что вам даже думать о них не приходится. А много ли вы встречали таких редакторов, которые автоматически ставят точки с запятой? Их приходится ставить руками. В каждой строке, прости господи.

Так вот — абсолютно во всех программах стандартом де-факто для встроенного скриптования является тот самый Питон
Кстати, это повод задуматься. Тот же LUA проще встраивается в любой инструмент, но почему-то профессионалы выбрали именно питон.

И вот есть иногда задача (вида — автоматически распаковать лежащие на стеке строки), взял, скопировал скрипт для решения с форума, а он ругается.
У меня были похожие проблемы с другими языками. Бывает хочешь скопировать листинг кода, а там строки пронумерованы, и нет кнопочки скопировать сырой текст. Или скопировал листинг, а там вместо кавычек апострофы. В обоих случаях интерпретатор ругается, но правильно ли винить языки программирования, что их синтаксис недостаточно опционален?

Оказывается, нужно было не табы, а 4 пробела.

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

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

Согласен, что ваш паттерн использования питона очень далек от разработки, и сложно таким образом оценить все преимущества. Но раз для вас эта проблема такая частая, почему бы все таки не поставить более интеллектуальный инструмент, чем notepad++? Вы же используете профессиональные инструменты типа Ida и WinDbg. Серьезно, откуда такое ограничение?

Надеюсь, я вам чем-то помог в вашем нелегком ремесле.
а если с Джавой сравнить, то в три раза меньше строк
смотря с какой джавой, когда пишут со всеми прибамбасами вроде темплейтов, аннотацией, всех геттеров и сеттеров и такого флуда на 1000 страниц, то в 33+ раза меньше строк
При использовании REPL отступы сильно мешают. В Idris и Elm, которые требуют отступов, это сильно раздражает, особенно после Haskell, который допускает и отступы, и скобки.
Тоже не понимаю а почему то ентон питон такой популярный. Сложность равна С++, низкое быстродействие, нету привычного end'а(мозг ломает(правда, можно использовать псевдооператор #end))… В общем, лично мне он не нужен, лучше вместо его, например Lua. Вообще, не понимаю для чего он нужен. Может кто объяснит?
Зачем? это же субъективный объективизм. Если он Вам объективно не нужен, нельзя объяснить.
Sign up to leave a comment.

Articles