LINUX.ORG.RU
ФорумTalks

Питон здорового человека

 ,


1

3

Ahoi!

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

Есть ли в ассортименте языков что-то подходящее под кейсы использования этого питона, но со строгой типизацией, адекватным синтаксисом и форматированием не как в убогом VB?

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


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

Нет, в стандарте описано, как приводятся типы.

Ну в питоне инты и флоаты приводятся, например. Критерии различия в чем?

wandrien ★★
()

ЯП для системно-админских нужд, когда скрипты на баше уже не спправляются

называется Perl :)

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

Здесь наглядно показано неявное преобразование типов.

>>> 1 == True
True

Это уже неявное преобразование типов или еще нет?

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

«Ехал трекер через трекер» понятно только тем, кто насобачился в питоне. С минимальным знанием перла ваш пример тоже сразу понятен. Хотя конечно так пишут только гольфисты.

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

Да потому что и не было никогда такого формального термина.

Его кто-то когда-то употребил не к месту, как маркетинговый ярлык. Типичное «более лучше одеваться». Зато после этого получилась цела тьма ретрансляторов, которые в душе не понимают сути этого критерия, но как со святой бумажкой бегают и рассказывают, какие языки строгие, а какие нет.

В действительность, строгость/нестргость - это критерия отношения. Не бывает (и никогда не было) строгих или не строгих языков в вакууме. Есть более строгие и менее строгие языки, по отношению другу к другу. Чем больше язык позволяет implicit поведяния (разного), тем он менее строгий. Чем меньше он такого поведения позволяет, тем он более строгий.

А говорить о языке просто - что это язык со строгой типизацией, это тотально расписаться в собственном невежестве.

Ну и вот еще был когда-то очень хороший тред на so на эту же тему. https://stackoverflow.com/a/2351869

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

Ну в питоне инты и флоаты приводятся, например. Критерии различия в чем?

Вот именно в этом случае — только в том, как это внутри организовано. Это перегрузка оператора, а не неявное преобразование, как фундаментальное свойство языка. В языках с нестрогой типизацией это происходит везде.

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

В действительность, строгость/нестргость - это критерия отношения. Не бывает (и никогда не было) строгих или не строгих языков в вакууме. Есть более строгие и менее строгие языки, по отношению другу к другу. Чем больше язык позволяет implicit поведяния (разного), тем он менее строгий. Чем меньше он такого поведения позволяет, тем он более строгий.

Вот с этим можно согласиться.

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

«Ехал трекер через трекер» понятно только тем, кто насобачился в питоне.

И что хуже, это всё говнокод. При попытке переписать это минимально «человеческим» языком, сразу станет понятно, что функцию, написанную в подобном стиле, нужно рефакторить целиком.

Ну и там явно напрашивается лямбда для фильтра, которая будет делать все нужные проверки. Один фильтр и одна лямбда с чёткими условиями. Всё. «Вместо десяти признаний в любви.»

И человек мне пишет «Ну вроде все сразу понятно?». То есть вообще не понимает, что отличает хорошую структуру кода от плохой.

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

Так об этом сразу javascript и писал. Если бы собеседник не лез сразу в бутылку и был боль-мень адекватен, ему оставалось бы только согласиться с этой мыслью.

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

Но зато потом, когда оно начинает падать на специфических кейсах, придётся таки учить язык

Смысл в том, что пайтон «учить» не приходится, он очень логичен. «Внутренняя сложность» в нем отсутствует как таковая. Если ты видишь какую-то проблему, у неё уже есть объяснение.

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

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

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

Так все хардкорные питанисты знают по GIL, и про то какие реализации Python существуют. Это как кодеры на Java и C# которые знают про промежуточное представление в байткоде и про работу GC.

А не хардкорные - не знают, и таких 95%. Когда дело доходит до таких глубин, очень стоит задуматься о том, правильно ли выбран язык под задачу. Ответ в большинстве случаев - отрицательный.

Мне в python не нравится его нарочитая процедурность

После Java и её бастардов типа Groovy, пайтон кажется крайне лаконичной штукой.

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

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

Вероятно это б роса с курсов ? :)

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

нарочитая процедурность

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

no-such-file ★★★★★
()
Ответ на: комментарий от Virtuos86

Не понял глубины ваших глубин. Это к чему?

Почти что JavaScript с опциональной статической типизацией?

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

Если ты видишь какую-то проблему, у неё уже есть объяснение.

У любой проблемы подобного рода (относительно дизайна ЯП) уже есть объяснение. В любом ЯП.

А на ЛОРе так вообще могут объяснить что угодно))

Смысл в том, что пайтон «учить» не приходится, он очень логичен. «Внутренняя сложность» в нем отсутствует как таковая.

Это просто ошибочное утверждение.

Элементарно, нужно, например, знать, что «1 == True» , иначе можно словить какой-нибудь весёлый результат в ходе выполнения программы.

И чем больше возможностей ЯП используешь, тем большее количество деталей и частных случаев нужно знать.

В стандартной библиотеке тоже хватает тёмных мест и последствий когда-то криво принятых решений.

Я бы понял аргумент, что в питоне среда исполнения имеет намного меньше неявного поведения, чем например в JS. Но когда я слышу, что язык вообще не требует себя учить…

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

как на Clojure будет выглядеть эта строчка?

vm_swap = kib_to_mib(int(f_list[i].split(‘\t’)[1][:-3]))

Что-то вроде

(require '[clojure.string :as s])

(let [line     "VmSwap:\t40987 kB"
      kib->mib (fn [x] (Math/round (/ x 1024.0)))]
  (-> line
      (s/split #"\s")
      second
      parse-long
      kib->mib))

;; 40

Согласись, гораздо менее человеконенавистнически выглядит %)

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

Мы с тобой, видимо, разные понятия вкладываем в «учить язык».

Я вкладываю такое, что не всё является очевидным, и документацию таки надо читать и, как минимум желательно, запоминать, что там написано. Читать и запоминать написанное — это на мой взгляд, наиболее, так сказать, хрестоматийный пример понятия «учить». Ясное дело, что не наизусть. Но получать новые знания и записывать их в нейронную сеть своего мозга. Наизусть ни с одним языком не надо. Но как без изучения понять и запомнить особенности работы с GIL, или как пишутся декораторы — я не знаю. Свыше, как данность это никому в голову не вложено.

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

а GPT смог бы так переписать? Или другими словами смог бы человек ему объяснить, что нужно сделать?

Ему нельзя ничего объяснить, он не разумный.

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

Ну тут как раз очень родная для GPT задача - работа с текстом)) Правда рыбы не знают о существовании воды. Но мне кажется, он справится.

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

IMHO если работодатель не против, то нужно выбирать удобный ЯП для себя, а из совсем уж популярных индустриальных, так сказать, ЯП типа пятона использовать только готовые либы через interops.

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

Тут у людей проблемы с отличием строгой типизации от нестрогой

Так строгой особо нигде и нет. Есть слабее/строже. С тру-стронг кодеры задолбаются. Сама терминология тоже неоднозначная. Понимают этот стронг кто во что горазд. Обычно, если компилятор больно бьёт по рукам при каждом неосторожном движении, то это и считается стронг. Питон от такого очень далёк.

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

Ему нельзя ничего объяснить, он не разумный.

Ну образно.

Если точнее, то составить запрос на ессном разговорном языке.

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

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

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

Ему нельзя ничего объяснить, он не разумный.

Тяжело, наверное, жить со столь строгим пониманием разговорного языка. Вы, когда слышите, что программа глючит, тоже каждый раз так реагируете (мол у неё нет сознания, а значит нет и галлюцинаций)? А когда слышите «суд принял решение» (ведь принял его судья, а суд — это вообще процесс)?

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

частных случаев нужно знать

Частных случаев в пайтоне едва ли наберется на две стороны листика А4.

когда я слышу, что язык вообще не требует себя учить…

… тогда тебя бомбит от того, что кто-то твое понимание «учить» считает за сам собой разумеющийся пройденный этап. Но, конечно, это касается тех, у кого это не первый и не второй язык.

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

Частных случаев в пайтоне едва ли наберется на две стороны листика А4.

Шрифтом высотой в миллиметр разве что… Это ж не ассемблер всё же.

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

Но как без изучения понять и запомнить особенности работы с GIL, или как пишутся декораторы — я не знаю

На такие моменты документация читается по мере необходимости. Если бы я тратил свою жизнь на доскональную зубрежку вместо досконального понимания сути… плохо бы я жил, да.

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

Какие «такие»? Вы на питоне только скрипты в 50 строк что ли пишете, что базовые вещи являются какими-то «такими»? Ну для этого да, можно не учить.

А «доскональное понимание сути» с рождения заложено? Или всё же появилось в результате изучения?

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от Virtuos86

Напиши, как версию на питоне в одну строку, потом поговорим про человеконенавистничество.

Да о чем тут говорить, все и так очевидно %)

(-> line (s/split #"\s") second parse-long kib->mib)

Глаз питониста легко читает

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

Nervous ★★★★★
()
Ответ на: комментарий от no-such-file

кое-кто хотел именно к скобочкам и докопаться

Проблема в том, что у него там три пары круглых скобок и три пары квадратных, а тут только две пары круглых %)

И кто тут после этого скобкота.

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

Какие «такие»? Вы на питоне только скрипты в 50 строк что ли пишете, что базовые вещи являются какими-то «такими»? Ну для этого да, можно не учить.

Я разное пишу, многое из того, что большинству местных обитателей недоступно в принципе, и не в пайтоне там дело - он просто инструмент. Про GIL мне потребовалось почитать мягко говоря не сразу. То, что для тебя знания по пайтоновскому GIL являются «базовыми», может говорить о двух вещах: либо ты занимаешься достаточно нагруженными вещами, где без этого знания грустно, либо ты просто задротина, любящая понтоваться. Выбирай любой вариант по вкусу.

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

Вот «second» это функция или что? Как взять 350 элемент списка, например? То есть вопрос, это решение в общем виде или для данного случая нашлась такая компактная конструкция?

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

А «доскональное понимание сути» с рождения заложено? Или всё же появилось в результате изучения?

Доскональное понимание сути проистекает из способности применять прошлый опыт к новым задачам.

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

Есть же сногсшибательная и несравненная кложа

babashka

Так это же интерпретатор кложи.

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

Ну а BASH настолько плох, что это даже становится хорошо, особый способ доставить себе удовольствие, в руках плетка, во рту кляп :)

Bash - это не только ЯП, но и очень тесная интеграция с shell, jobs и т.п., т.е. многое из того, что можно увидеть по встроенной команде help.

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

Частных случаев в пайтоне едва ли наберется на две стороны листика А4.

«Дураков в мире не так уж много, просто они грамотно расставлены».

Какая разница, сколько видов граблей разбросано по полю, если важно их количество в коде, а не перечень их наименований.

Вон выше пример с говнокодом на генераторах списков - и такое повсеместно. Кодеров на питоне не учат адекватному использованию лямб, а учат сувать «правильные хаки» (или как там выше по треду это было названо, лень листать за точной цитатой) в код. Ну они и суют.

Алсо, я натыкался на прямое несоответствие работы функций стандартной либы и документации на неё. И тут даже без претензий к питону, баги как в коде, так и в документации, могут быть в любом проекте. Но только твой «листик А4» со временем грозит превратиться в немаленький конспект. Что вообще-то и хорошо, так как именно наличие этого конспекта в голове и означает «знание технологии» (языка, либы, прикладной программы). А не то, что там себе придумал про альтернативное «учить».

… тогда тебя бомбит от того, что кто-то твое понимание «учить» считает за сам собой разумеющийся пройденный этап. Но, конечно, это касается тех, у кого это не первый и не второй язык.

Телепаты выходят на связь.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 2)
Ответ на: комментарий от pekmop1024

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

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

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

это в перле конченный синтаксис а не в питоне

За это мы его и любим. Такой ска страшный, что даже няшный.

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

Какая разница, сколько видов граблей разбросано по полю, если важно их количество в коде, а не перечень их наименований.

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

Кодеров на питоне не учат адекватному использованию лямб

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

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

это в перле конченный синтаксис

Некоторые сложности есть, пока не поймешь как устроен синтаксис и почему он именно такой.

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

Ну если хайлоад, то с GIL ты не пересекаться не мог и это точно «база». Но для скриптовой прикладухи эти знания - что зайцу стоп-сигнал, там разве что упомянутые выше приколы с пониманием типов пригодятся.

pekmop1024 ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)