А как ещё макак принуждать стиль хоть какой-то соблюдать? Если бы не это требование, питономакаки там такое бы изображали в коде. Так их хоть язык воспитывает немного.
Это слишком сложные слова для уровня питоноскриптов и тех кто их пишет. Да и какой ещё кодревью для наколенного питоноскрипта на гитхабе? Или если математик пишет для расчета функцию? Ты видел код от математиков?(не программистов которые)
А как ещё макак принуждать стиль хоть какой-то соблюдать?
Можно начать с того, чтобы прямо с компилятором/интерпретотором распространять встроенный форматтер. Решение явно не для Гвидо, он решил пойти альтернативным путем и просто сделать дерьмовый синтаксис без нормальных блоков.
Можно начать с того, чтобы прямо с компилятором/интерпретотором распространять встроенный форматтер
Так он(Гвидо) так и сделал, что язык бьет по рукам. А уж с помощью синтаксиса блоков или он(интерпретатор) бы просто писал, что стиль-говно и выдавал ошибку, разве это так важно?
Кстати, возможно не помешало бы некоторые PEP-ы, их нарушения, тоже ошибками сделать.
нуда все сложно, а восстанавливать логику в сломанных отступах нет и даже оно, может быть, полезно для математиков, у которых годы до релиза и выход с «работы» только ногами вперед
важно потому что пипон ломается в проде и не сразу, а только когда интерпретатор заедет на ошибку, а логическая может вообще не порождать сообщений интерпретатора. Годами будет втихушку работать неправильно пока не обнаружат по дата корапшин.
а логическая может вообще не порождать сообщений интерпретатора. Годами будет втихушку работать неправильно пока не обнаружат по дата корапшин.
Ну это в любом языке так. Она на то и логическая. А вот синтаксическая, разве нет какого способа, чтобы питон пробежал по всему коду и проверил на ошибки до выполнения? Что-то типа компиляции без создания бинарника.
PS: Я сам не питонист, питон видел только в кино когда чинил чужие скрипты
ни в одном нормальном языке программирования не может быть такого, что кусок кода незаметно для глаз отъехал к родительскому блоку
А вот синтаксическая, разве нет какого способа, чтобы питон пробежал по всему коду и проверил на ошибки до выполнения?
прекомпиляция есть, но она далеко не всегда помогает вылавливать ошибки. Только 100% покрытие юнит-тестами, но какой же математик их будет так хорошо и непредвзято клепать?
Революция будет с шустрым jit, хотя бы раз в 5-7 ускорить на большинстве тупняковых тест кейсах. А nogil это скорее развязать руки малоиспользуемому мультитредингу.
гвидона стоило бы мочкануть хотя бы за тупорогость с отступами
Да, столкнувшись с необходимостью правки исходников на питоне тоже
сильно удивился возвращению в 21 веке к идеологии ЕС ЭВМ где требовалось
соблюдение позиций на перфокартах. Думал что идея значащих пробелов давно
ушла в прошлое,оказывается нет,кому-то это нравится.
А еще не понравилось в Питоне слишком уж нестрогое обращение с типами.
Так-то идея простого интерпретируемого языка на замену всяким диалектам бейсика - вполне здравая. Если бы не эти два неприятных момента.
Полезнее было бы если бы бил по рукам при вольном обращении с типами данных.
А форматтер можно было бы прямо в интерпретатор встроить. Нашел ошибку форматирования - не отказываться исполнять код,а форматирование исправлять,
показывая условному «математику-непрограммисту» как оно должно быть.
А потом приносят программисту этот код и говорят сделать его в продакшен. И лучше если он будет структурирован хотя бы.
Программист первым дело напускает на этот код какой-нибудь форматтер,который легко сделает правильные отступы.
А вот именно что структурированности отступы коду не добавят потому
что структурированность это не про них,а про правильное деление кода
на структурные единицы (процедуры,модули). Если математик написал
всё в одну портянку в стиле старого бейсика - то отступы не особо помогут.
Понимаю, что пример про логическую ошибку, но в жс запуск конструктора вместо вызова метода - типичная ошибка на том уровне, когда в питоне без линтера/ide пишут. И последствия ещё веселее.
А вот синтаксическая, разве нет какого способа, чтобы питон пробежал по всему коду и проверил на ошибки до выполнения
Так оно во время импорта автоматом это делает же. То есть синтаксические ошибки стреляют сразу если не творить дичь типа динамической загрузки непонятно чего. Хотя иногда, конечно, это (динамическая загрузка) надо, но это не самый частый случай
mypy позволяет достаточно строго еще на этапе сборки пакета проверить всё. Но статическая типизация напрочь отбивает возможность делать херак-херак-и-в-продакшн, за возможность которой многие так любят питон
Если код этой программы невозможно подправить (а в случае большого проекта и говнокодинга уровня «50 вложенных if’ов» это так), ее ценность обнуляется.
почему человек написавший рабочую программу должен быть уволен?
Безусловно, «write only» программы имеют место быть.
На том же питоне иногда пишут какой-нибудь расчетный код,который
живет ровно до того момента когда отработает без ошибок и выдаст
нужные данные,после чего отправляется в мусорку так как эта
задача решена,а для следующей потребуется другой код.
Достаточно частая ситуация например в науке.
Но! Если программа должна работать сколько-нибудь длительное время
и соответственно нуждается в техподдержке и возможно некоторой
адаптации к изменению условий эксплуатации - то она должна быть
написана так чтобы другой программист, пришедший через год-два-три
на место писавшего, мог её легко прочитать и понять. И вот 50 вложенных
if этому никак не способствуют. Как и прочие грубые отклонения от
«хорошего тона» классического структурного программирования.
О, вот ты подошел совсем близко. Наука - состоит сплошь и рядом из такого.
Кроме науки, кучу вложенных if'ов содержат некоторые эвристические анализаторы чего угодно, например антивирей, без этого там не обойтись.
Обработчики большого количества датчиков и исполняемых узлов тоже содержат подобные участки.
Более того, подобное сплошь и рядом используется в программном обеспечении кое-какого НАТОвского высокоточного вооружения. Там 90% программы состоит из массива, цикла его перебирающего, и сотни вложенных if\elseif формирующих в свою очередь набор переменных для команд, дергающих исполнительные механизмы. Бедный Lockheed Martin должен был уже лишиться погромистов, если бы действовал согласно советам экспертов с ЛОРа.
В твоем понимании. Но не тех кто платит большие деньги.
Ну, возможно в ООО «Рога и Копыта» твои 50 вложенных if’ов прокатят, но в серьезных организациях тебя за такое погонят этими с-с-самыми тряпками. И будут правы.
Ну, возможно в ООО «Рога и Копыта» твои 50 вложенных if’ов прокатят, но в серьезных организациях тебя за такое погонят этими с-с-самыми тряпками. И будут правы.
В серьезных организациях - это в тех где выход в туалет по карточке? Не, спасибо.
man Декомпозиция.
Ты прикалываешься что ли?
Если у тебя функция воспринимает на входе 50 переменных - тебе их надо будет все равно заполнить в зависимости от других исходных данных, только это будут условия в разноуровневых блоках.
И на кой с этим задрачиваться, если if/then/else - интуитивно понятны и читаемы ?
Там 90% программы состоит из массива, цикла его перебирающего, и сотни вложенных if\elseif формирующих в свою очередь набор переменных для команд, дергающих исполнительные механизмы.
А точно ли это лучший способ реализации? Или может так сделали по каким-то другим причинам,например надо было побыстрее сляпать и сдать заказчику?
Сдаточные испытания прошло согласно требованиям согласованного ТЗ - и хорошо. А что там внутри - такому заказчику всё равно не интересно в большинстве случаев.