LINUX.ORG.RU

Питонячьи радости

 ,


0

4

Отступы, блин

Был у меня код вида:

for blah-blah-blah :
    # какой-то код
    if что-то :
         # код
    else:
        # ещё код

Код скопипастил из одного места программы в другой. При этом не заметил как отступы нарушились. Ну вы поняли, да? Стало:

for blah-blah-blah :
    # какой-то код
    if что-то :
         # какой-то код
else:
      # ещё код

И вот это мне стоило довольно большого количества потеряного времени. Условие else: стало относиться не к if, а к циклу for. Учитывая, что тело цикла было достаточно длинным, как-то не бросалось в глаза, что else уехал не туда. Мать-перемать, но код после этого даже почти нормально работал.

Еще уже мелочь относительная, но все же, чего-то не подумав захотел поработать с гугл драйвом прямо из своего кода и недолго думая сделал pip install --upgrade google-api-python-client - и это разрушило всё. Благо, что от юзера, а не рута, вылечилось сносом .local и повторной накаткой некоторых модулей

★★★★★

Последнее исправление: anonymous_incognito (всего исправлений: 3)
Ответ на: комментарий от ugoday

Ну хоть кто-нибудь пусть их объективно сравнит по состоянию на 2023 год.

Ведь и JVM и .NET способны генерить бинарники весом, сравнимым с тем, что генерит Golang. Они точно также отвязаны от внешнего рантайма. Для многозадачности JVM добавляют greenthreads, в .NET отличный async/await.

IMHO Golang - это какой-то нишевый ЯП сектантов типа 1Це. Оба этих недоязыка «программирования» искусственно пытаются удержать кодеров в своей палате тем, что они нетакусиковые.

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

Ведь и JVM и .NET способны генерить бинарники весом,

Зашёл в корпоративный репозиторий. Проверил размер образов, а там чуть-чуть до 2ГБ не дотягивают. Расстроился.

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

Могу согласиться, что PHP хуже популярных .NET и JVM языков программирования. Но я сравнивал PHP с Python и Golang, а это совсем другая история, по сравнению с ними он IMHO божественный.

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

Им можно программировать под 1С, а .net и jvm языки так не умеют.

Сомневаюсь, что 1C нет интеграций хотя бы с Java. Раньше была с .NET через COM.

Но какое отношение имеет наличие интеграций с той или иной системой к синтаксису ЯП?

Шах и мат.

ERP уровня SAP поддерживают интеграции с JVM и .NET языками?

1С - это как отдельно взятая Северная Корея в мире ЯП?

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

Проверил размер образов, а там чуть-чуть до 2ГБ не дотягивают.

Это образы контейнеров со включенными в них полновесными рантаймами и кучей других зависимостей? Какая связь с размером executable, которые могут генерить современные JVM и .NET в 2023 году?

GraalVM и .NET Native

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

Вы задаёте глупые вопросы

Чем именно они глупые с вашей точки зрения?

непонятно зачем.

Мне интересно.

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

Есть экосистема, есть какая-то накопленная популярность у Golang и Python. Но реальных преимуществ на сегодняшний день у них нет, ни по сравнению с JVM, ни по сравнению с .NET языками для более менее крупных проектов.

Python бывает полезен, чтобы накалякать короткую портянку вместо Bash. Golang - свой загончик, аналогично 1Цешнутым.

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

Чем именно они глупые с вашей точки зрения?

Оторванностью от настоящей жизни. 1С программист за пол дня с перерывами на кофе накатит конфигурацию, которую отдел ява-программистов будет год воспроизводить (и обломается, потому как за то время законодательство успеет смениться (возможно не раз). Такие дела.

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

Очередное обсуждение очень важных вопросов программирования и разработки.

Конечно, ведь современные программисты в основном и заняты расстановкой скобочек и отступов. Все алгоритмы давно реализованы, либы написаны, а теперь уже и клиентский код пишут роботы. Остается только сидеть и выравнивать копипасту. И тут синтаксические особенности становятся очень важны.

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

Оторванностью от настоящей жизни. 1С программист за пол дня с перерывами на кофе накатит конфигурацию, которую отдел ява-программистов будет год воспроизводить (и обломается, потому как за то время законодательство успеет смениться (возможно не раз). Такие дела.

Я не отрицаю наличие готовых учётных либ и готовых конфигураций 1Це. Но это даже близко не ЯП. Вы разницу между ЯП и библиотеками с конфигурациями понимаете вообще?

Быстрота выполнения этих задач в 1Це не связана с преимуществами его ЯП, а только лишь с готовыми наработками на этом ЯП, которые форсит вендор?

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

Это реальность. А ваши теории конечно очень интересные, но размер образа в репозитарии от них не уменьшается.

Так и не объяснили, что внутри образа.

Возможно, можно было сделать иначе?

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

Java это удобный ЯП? Сомневаюсь. Баш удобный сам по себе?

Так-то, да, но их можно скрестить и тогда получится писать так

➜  ~ ls | bb -i '(take 2 (filter fs/directory? *input*))'
("bin" "blah-ca")                     
ugoday ★★★★★
()
Ответ на: комментарий от bread

Так ЯП вообще не шибко важен.

Эстетическая составляющая. Когда есть выбор, заниматься ЯП с отвратительным синтаксисом типа 1С или Golang - это IMHO мазохизм.

Разве что на уровне «где удобней копипастить» (см. коммент выше).

IMHO это заблуждения уровня школьника. Современный AI очень ограничен и недостаточен в своих способностях.

Java это удобный ЯП? Сомневаюсь.

По сравнению с Python и Golang даже Java удобнее.

Баш удобный сам по себе? Ну уже смешно.

Причём тут Bash? Я его с Golang сравнивал в первую очередь по их функциональным возможностям. Синтаксис Bash IMHO ужасен (впрочем как и Golang и 1цЕ).

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

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

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

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

Когда есть выбор, заниматься ЯП с отвратительным синтаксисом типа 1С или Golang - это IMHO мазохизм.

А он есть, этот выбор? Устроится кодер в урюпинской шараге или в гугле, выбора нет в обоих случаях. Если вы с детства жаба-индус, тоже нет выбора.

Причём тут Bash?

Под ним тоже платформа. Если вы юникс-админ, вам недоступна такая опция «не хочу баш».

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

Помню LISP со времен универа, когда изучал Автокад.

С тех пор почти не сталкивался с ним, но несколько лет назад обнаружил его диалект в GUIX. Пока не смог оценить преимущества, кроме собственно функционального подхода. Скобочки утомляют :)

Но в целом функциональный подход IMHO интересный.

Интересно было бы узнать преимущества, например, Iron Sheme по сравнению с F# и фич ФП C#.

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

А он есть, этот выбор? Устроится кодер в урюпинской шараге или в гугле, выбора нет в обоих случаях.

Выбор есть - не устраиваться в урюпинские гуглопомойки.

Если вы с детства жаба-индус, тоже нет выбора.

IMHO уж лучше жабаиндусить, чем 1Це говнокодить.

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

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

Для скриптования Scheme действительно лучше, чем всякие bash и python, о чем говорит старая копипаста про пыхоплеяду

Под Lisp в настоящее время подразумевается Common Lisp, это наиболее развитый, «дефолтный», диалект лиспа, даже стандартизированный ANSI. Хотя есть и другие лиспы - Emacs Lisp, например, но когда речь идет о нем, то так и пишут что «Emacs Lisp» или «elisp». Или автолисп из автокада, да.

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

всегда есть хотя бы вариант «поставить павершелл»

Неудобно и ненужно. Смысла bash в том, чтобы содержимое скрипта было максимально близко к набираемым в терминале командам. Для работы в терминале powershell слишком многословный.

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

Смысла bash в том, чтобы содержимое скрипта было максимально близко к набираемым в терминале командам.

Ты не поверишь! Там тоже

Для работы в терминале powershell слишком многословный.

УМВР

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

https://habr.com/ru/articles/142140/

Только сейчас обратил внимание, что сей высер более 10 летней давности. По состоянию на 2023 год что-нибудь сможешь ответить с критикой PHP по сравнению с Python?

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

Что-то поменялось за 10 лет?

2013 - PHP 5.5 released, included generator functions, finally keyword and password hashing API.
2014 - PHP 5.6 released, featuring constant scalar expressions, variadic functions, argument unpacking etc.
2015 - PHP 7.0 released, major version including significant changes like improved performance, return type declarations, scalar type declarations and more.
2016 - PHP 7.1 released with nullable types, void return type, class constant visibility modifiers and more.
2017 - PHP 7.2 released with object typehint, support for modern cryptography, and more.
2019 - PHP 7.4 released with arrow functions, typed properties, spread operator and other features.
2020 - PHP 8.0 released with JIT compilation, union types, attributes, constructor property promotion and more.
sanyo1234
()
Ответ на: комментарий от bread

Может быть, но ковырять баш все равно потребуется.

Чужие скрипты, если свои писать на Xonsh или C#?

Как и с JVM никак от жабы не отвертеться.

Scala, Groovy?

И даже VB.NET, LOL

везде будет какой-то случайно взлетевший недоязычок.

Чтобы привязать кодеров к своему вендорлочному загончику альтернативно одарённых.

Куда ни приткнись,

А вот тут ты неправ, приличные люди обеспечивают совместимость с JVM и .NET

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

Ты не поверишь, но можно набрать просто ls и оно вызовет ту самую ls там где есть бинарь ls

и даже можно создавать алиасы командам, как в баше.

для Get-ChildItem есть алиас gci, и параметр -Path там указывать по имени не обязательно, он и так первым идет.

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

По состоянию на 2023 год что-нибудь сможешь ответить с критикой PHP по сравнению с Python?

PHP не нуждается в критике, с ним всё ясно и так.

Это всё равно что критиковать Жигули.

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

Это всё равно что критиковать Жигули.

IMHO даже Жигули намного лучше, чем Messerschmitt KR200 (Golang) или его отечественный аналог 1Це. Речь о ЯП, а не о готовых учётных либах (образно прицепе).

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

Ты не поверишь, но можно набрать просто ls и оно вызовет ту самую ls там где есть бинарь ls

У Powershell много возможностей, например им можно не пользоваться. Этот язык нужен для решения задач, слишком больших для shell скриптов, но слишком маленьких, чтобы писать настоящую программу. В винде эта ниша существует из-за убогости cmd.exe. А в линуксе она просто схлопывается.

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

Всё же bash IMHO имеет очень тесную интеграцию с shell, управление jobs и т.п. Синтаксис bash хоть и отпугивающий, но довольно компактный.

IMHO если уж и брать PowerShell, то только в качестве либы и тогда уж пользоваться полноценным .NET ЯП типа C#.

Bash - это некий стандарт для относительно коротких скриптов на *nix like системах. Bash есть почти в любой такой системе (OpenBSD, Hyperbola, etc.)

Во многих из них также легко доступен Perl. Даже если его оттуда выпилило новое поколение смузихлёбов, то Perl легко добавляется снова. IMHO Perl конечно некомфортный по синтаксису, но зато есть почти везде и ставится легко и просто.

sanyo1234
()