LINUX.ORG.RU
Форум — Talks  

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

 ,


1

3

Ahoi!

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

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

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

☆

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

Python: https://en.wikipedia.org/wiki/Guido_van_Rossum#Microsoft

и TypeScript (если рассматривать его с точки зрения похожести на очень популярный JavaScript):

https://visualstudiomagazine.com/articles/2023/03/21/typescript-5.aspx

https://visualstudiomagazine.com/articles/2023/02/02/jetbrains-survey.aspx

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

нет, я о том что в питоне можно вернуть тупль если функция имеет доступ к нескольким полезным значениям. В дарте есть словарь и список конечно, можно их вернуть. но список должен иметь тип элементов, а что если функция должна возвращать 2 элемента разных типов? Можно вернуть List<dynamic>, но это как-то криво и не ограничивает количество элементов. Можно класс определить специально для возврата из функции но это еще хуже на мой вкус.

И вот в дарт3 можно писать так:

(int,int,double) f() { return (1,2,3.0); }

развертка вроде тоже есть final (a,b,c) = f();

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

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

Тайпскрипт разве не микрософтовское поделие с самого начала?

Создал на базе одного из самых популярных скриптовых языков (JavaScript), чтобы его опекать ?

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

список должен иметь тип элементов, а что если функция должна возвращать 2 элемента разных типов

Ну понятно. Сначала придумываем себе ограничения, а потом их мужественно обходим.

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

Насекомые?

Ракообразные. Не зря же у них краб на книжке. ЯП для членисторуких.

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

структуры, чтобы не городить класс

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

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

Питон, там кстати type hints завезли

и как они помогут в сисадминских задачах? Он будет писать скрипты в pycharm? Интерпретатор в рантайме их не проверяет

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

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

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

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

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

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

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

А их и до сих пор нет, namedtuple довольно громоздок и нелогичен в определении (надо параметры в строке перечислять и дублировать название в ней же) т.к. это не фича языка а просто стандартная библиотека. Есть еще какая-то библиотека реализованная для этой задачи, но это тоже не фича языка. Можно бэкпортировать в питон2.

Или я что-то пропустил и появились какие-то структуры в питоне? Есть классы которым можно присваивать поля именованные, но это громоздко (попробуйте миллион таких элементов заменить на тупли и сравните потребление памяти), а есть тупли с костылем типа namedtuple, есть словари (по сути то же самое что классы), я больше не знаю. Хотя вроде какой-то новый вид классов есть где поля вне конструктора определяются, это оно?

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

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

https://ironpython.net/

Упс ... опять Microsoft :)

А готовые либы CPython из программы на IronPython можно вызывать аналогично C#:

Питон здорового человека (комментарий)

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

Ведь словари — это для лохов, не тру питон вэй.

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

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

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

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

Нужны ради хотя бы более удобного синтаксиса

Это уже питонопроблемы.

Ну в жаваскрипте более-менее нормально сделано

Вот именно.

Потом эту фичу начинают глушить костылями

Продолжение питонопроблем. Причём питономакаки этому ещё и радуются и всем рассказывают какой питон мощный, фичастый язык. ЛОЛ.

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

VSCode или PyCharm, да, а что? К тому же проверяторы и без редактора запустить можно.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)

Оо, я и не ожидал что ЛОР так подорвётся на моём набросе! Ничего здесь не меняется со временем. Хи-хи…

А по сабжу, буду и дальше юзать в своих кейсах Bash/PowerShell для скриптов, и Java когда нужно спроектировать что-то комплексное. Python - не моё.

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

Мне особо доставляет, что можно активно пользоваться системой «у вообще всего есть методы и свойства, даже у результата метода», не трогая ООП вообще никак, чисто процедурно писать. Лямбды приятно - иногда код экономят, похоже на макросы.

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

Руби это и есть питон здорового человека (и перл, в одном флаконе). Только вот никому не нужен оказался и остался языком одного фреймворка. Потому что питон раньше застолбил тапки, ну и его продвигают масоны (но это между нами, никому не рассказывайте).

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

Зачем питон масонам?

Масонам низачем, а вот рептилоидам… Питон ведь рептилия, не так ли? То-то и оно!

Nervous ★★★★★
()

Благодаря этому топику я решил вернутся к Ruby как к средству автоматизации сложных вещей. Без использования gems. Посмотрю как пойдет.

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

Руби это и есть питон здорового человека (и перл

Ближе все-таки к перлу, наверное. Если вы понимаете, о чем я.

Nervous ★★★★★
()

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

Лол, можно пример когда баш «не справляется»? По-моему опыту, если баш, как ты говоришь, «не справляется», то ты полез в какую-то лютую жопу. И это проблема не баша, так скажем

permafrost ★★★
()

Рекомендую Tcl, у него только типизация 100% динамическая.

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

javascript – есть стандарт, очень странное неявное приведение типов, порождающее порой просто идиотские результаты… Можно сделать статическую типизацию. Но требует node.js или альтернативы на серваке, в базовой установке ОС обычно этого нет.

Забыл добавить, что значительная часть функций async. Что увеличивает порог входа с нуля.

Norgat ★★★★★
()

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

Если упарываешься с синтаксиса жабы, то наверно зайдёт JavaScript бегающий на божественном QuickJS. Можно будет и скрипты с шебангом, и «скомпилировать» бинарник, и вместо шелла можно qjs использовать, и модули os (таймеры, треды, exec и пр.) и std (libc) искаропки.

Строгой типизации нет, но смысла в ней для скриптятины крайне мало. Если очень надо типизацию, то можно и на сишечке скрипты писать с #!/usr/bin/tcc -run от того же Фабриса.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)

Если задача - скриптота, то лучше питона вообще ничего нет. Понимаю если надо компилировать и без GIL, со строгой типизаций, тогда надо что-то выбирать. А если выбор между write-only перлом, укуренным ruby и питоном то питон - единственное решение. Это доказывает огромное количество библиотек и вообще популярность языка. Отступы, кстати - одно из достоинств языка. Ненавижу эти скобочки дурацкие и особенно мешанину из фигурных и обычных скобочек в дарте и котлине при применении лямбд и кложурей.

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

Отступы хорошо только и только если пишешь сам от начала до конца… страницы. Как только копипастишь код из рецепта, так возможны варианты. Как только текст больше страницы, возможны варианты. Как только используешь не питоно-заточенный т/р, возможны варианты. Как только в любимом т/р нет возможности сворачивать-разворачивать питоновские блоки, возможны варианты.

mister_VA ★★★
()

Эта подделка уровня шелла не должна вообще считаться ЯП так таковым.

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

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

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

и его продвигают масоны

Волан-де-Морт же!

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

Я не считаю ruby укуренным, но там возможно 1.sin как вычисление синуса 1 рад.

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

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

А в чем причина то?

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

Да, причина почему выбешивают. Почитал комментарий, ну что же, я пользуюсь бесплатным PyCharm Community Edition, там автоматически отступы корректируются, и подобных проблем не возникает, заодно он проверяет типы и автоформатирует код.

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

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

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

Намёк: я вообще-то имею дело с кодом, созданным коллективным трудом. Если б я писал код в одну харю, очень может быть, что мне было бы пофиг. Но это не так. И тут я руководствуюсь законом Мэрфи: если какой-нибудь пакости оставили лазейку, она через эту лазейку проберётся.

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

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

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

По-моему unless достаточно укуренный. Может такой оборот выглядит прикольно для американцев, не знаю. Но на самом деле там ничего прикольного нет, и можно некисло запутать читателя. Интересно, что в перле это давно считается плохой практикой, а рубисты любят такое.

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

Тогда не понимаю в чем проблема, переформатировать код придется в любом случае если от копипаста кривое форматирование.

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

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

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

mister_VA ★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.