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 ★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)