LINUX.ORG.RU
ФорумTalks

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

 ,


1

3

Ahoi!

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

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

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


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

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

Надрочиться можно на что угодно. Кто-то и код на расте легко считывает фасеточными глазищами

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

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

Имхо, не отдалились. Никакой язык задротить не нужно, чтобы результат happened to work. В принципе, с некоторого уровня опыта в разработке, становится пофиг на каком из типичных мейстримовых языков по-быстрому править код.

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

Вроде банальную вещь сказал.

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

Угу, а потом твой кот, написанный за один день, падает на проде, и вместо тебя ставят задрота с опытом в технологии, который пишет кота за тот же самый один день, но только он уже не падает. В общем, ты не в ту сторону своё противопопоставление копаешь.

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

не открывается. но вообще я здоровых людей имел в виду

Надо через прокси.

Это очень удобный скрипт настройки файрвола, где файл настройки сам является Bash скриптом. К сожалению, больше не развивается на данный момент для нового nftables и т.п.

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

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

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

Угу, а потом твой кот, написанный за один день, падает на проде, и вместо тебя ставят задрота с опытом в технологии, который пишет кота за тот же самый один день, но только он уже не падает. В общем, ты не в ту сторону своё противопопоставление копаешь.

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

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

Я как любитель (больше почитать про clojure но не писать) тоже поучаствую:

(def line "VmSwap:\t40987 kB")
(->> line 
    (.split #"\s")
    (second)
    (Integer/parseInt)
    (#(quot % 1024)))

Но честно, научался, не понимал почему операция деления через / возвращает число с типом Ratio а не float :)

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

Ну, по сравнению с js, питон Обалденно типизированный.

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

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

Вот тут непонятно. Предлагаешь мне либу для работы с внешним REST API с малопредсказуемым поведением писать на сишечке? Это такая разновидность job security?

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

На питоне MVP быстрее всего зафигачить - значит, простой

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

«second» это функция или что?

Она, родимая.

Как взять 350 элемент списка, например?

По-разному можно, TIMTOWTDY же. Смотря что за коллекция. Например

(nth xs 350)

(first (drop 349 xs))

Для векторов первый способ однозначно (O(1)), для списков/последовательностей, наверное, без разницы.

Можно еще всяких креативных способов изобрести, типа list comprehension с условиями приспособить или вручную список перебирать, но зачем?

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

С минимальным знанием питона мне тоже понятно что там происходит, тем не менее в Perl виден визуальный шум.

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

Код на JS скатывается в говно быстрее питона, тогда уж TS. Ну и батарейки на C в питоне хороши.

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

Человек даже сказал что он говно из-за динамической типизации и ему нужна статическая. Но это глупо прозвучало. Пусть пишет автоматизацию на Go.
Лично я считаю что помимо питон есть куча других интересных динамических языков, не стоит ограничиваться только python.

Другое дело что Python из коробки есть в любом дистре (кроме каких-нибудь обрубленных контейнеров), а ruby и тем более clojure (с бабушкой) еще нужно ставить, причем последнее либо потянут жабу на сотни метров, либо потребуют ставить не пойми что из интернетов. И если роли в компании распределены четко то какой-нибудь безопастник или даже админ может сказать – «а не пошли бы вы нафиг с вашими заморочками?! Не нравится Python? Используйте Perl или Bash+AWK».

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

Предлагаешь мне либу для работы с внешним REST API с малопредсказуемым поведением писать на сишечке?

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

Потому что потом такой софт править - очень дорого и с неминуемыми багами.

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

Это такая разновидность job security?

xD

А это идея!

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

Пусть пишет автоматизацию на Go

Кстати, вполне себе хороший инструмент. Если бы мне нужен был компилируемый язык, он бы первым в очереди стоял. У нас есть некоторые внутренние вещи для автоматизации на нём.

какой-нибудь безопастник или даже админ может сказать

Да не надо никаких админов и безопасников, тебе твой менеджер должен задать резонный вопрос «а кто это будет саппортить, когда ты в гугель свалишь? Потому не выделывайся и пиши на [вот список того, на чем умеет писать кто-то кроме тебя в команде]».

Bash+AWK

И grep, и sed, и еще охулиард всякого. Кстати, вполне себе используем тоже - особенно там, где надо внешние тулзы дергать, которые проприетарны и не имеют ничего, кроме cli.

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

Потому что потом такой софт править - очень дорого и с неминуемыми багами.

Когда ты понимаешь, что вырос до таких объемов - тебя спасут тесты. Ну а если ты их не писал, понимая, что вот скоро вырастешь - боль и страдания, а потом все равно писать тесты.

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

Тоже нормально, но лично я стараюсь интероп не использовать, если можно этого избежать. Жаба — она такая, дашь ей один палец просунуть, она целиком влезет.

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

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

на статических ЯП бы просто не был бы написан, так как на малых объемах кода это дороже

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

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

неизменно плюясь, когда забываю, что вот тут у нас может поменяться тип

Твои данные никогда внезапно не изменят тип, если твои данные — неизменяемые %)

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

Bash+AWK … И grep, и sed, и еще охулиард всякого.

Мимоходом замечу, что всё-таки это тулзы разного класса. bash и awk - полноценные тьюринг-полные императивные ЯП, а второе - просто утилиты узкого назначения.

Если какой-то специфический кейс и ограниченная среда выполнения кода, то на bash+awk действительно можно имплементировать все недостающие алгоритмы, переложив на awk те вычислительные задачи, с которыми сам bash справляется плохо.

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

Твои данные никогда внезапно не изменят тип, если твои данные — неизменяемые %)

Это ты мне сейчас предложил писать кот с применением исключительно констант? :-D

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

clojure (с бабушкой) еще нужно ставить, причем последнее либо потянут жабу на сотни метров

Бабушка ничего не потянет, это нативный бинарник, собранный граалем.

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

Это ты мне сейчас предложил писать кот с применением исключительно констант? :-D

Всегда так делаю %)

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

Мимоходом замечу, что всё-таки это тулзы разного класса

Конечно, разного. Но мало кто пишет на чистом bash и/или awk - это уже высший пилотаж задротства, который обусловлен обычно крайне ограниченной средой исполнения, где ничего больше нет. Я когда-то таким страдал, когда мне нужно было асик-майнерами управлять с помощью ансибла. Фу, бля.

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

Бабушка ничего не потянет, это нативный бинарник, собранный граалем.

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

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

хотелось увидеть работу с массивами итд.

Скорее всего, ты не хочешь работать с массивами %)

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

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

а кто это будет саппортить, когда ты в гугель свалишь?

Честно, во многих случаях позволят написать на чем угодно.

Если что-то простое (задача на день) то при любом телодвижении перепишут с нуля, а описание что такая штука должна делать будет в истории на таск-трекере.

Если что-то чуть сложнее (задача на пару дней), то описание рутины будет на Wiki.

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

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

$_->[1] может быть x[1]
$c->(@_[1..$#_]) может быть c(...args) судя по догадкам

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

почему операция деления через / возвращает число с типом Ratio а не float

Потому что ты делишь целое на целое. Как бы логично, что результат это рациональное число.

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

где нет этапа компиляции с проверкой статической правильности типов

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

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Он слишком высокоуровненвый для меня %) Язык не должен быть умнее тупого пользователя.
Мне не хватает в clojure встроенной infix библиотеки, хочу математику писать классически, без этих жутких s-expressions. И при этом не хочу для автоматизации подтягивать зависимости, никаких leiningen ставить не хочу.

Я бы даже сказал что если бы что-то вроде infix было встроено во всех LISP (только для мат операций) я бы к ним по другому относился, не как к забавному экспандеру для мозгов, а как к нормальным языкам :)

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

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

Поздравляю с открытием.

Ты вроде так и не сказал что за язык должен быть?

Вызывающе неверная информация.

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

хочу математику писать классически

Не хочу жыть спокойно, хочу заучивать приоритет и ассоциативность операторов %)

Тем не менее, нет ничего невозможного, это же лисп: https://github.com/rm-hull/infix

никаких leiningen ставить не хочу.

Давно уже не нужно, есть родные CLI tools.

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

А ты можешь её заюзать в babashka? Я однажды пытался и у меня не получилось.

Не хочу жыть спокойно, хочу заучивать приоритет и ассоциативность операторов %)

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

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

можешь её заюзать в babashka?

Вроде работает.

bb.edn:

{:deps {;; a Clojure library for expressing LISP expressions as infix
        ;; rather than prefix notation
        rm-hull/infix {:mvn/version "0.3.3"}}}

infix.clj:

#!/usr/bin/env bb

(ns infix
  (:require
   [infix.macros :as i]))

(println (i/infix (3 + 5) * 8))

bb infix.clj

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

если бы что-то вроде infix было встроено во всех LISP

Смотри что есть для общелиспа https://github.com/y2q-actionman/with-c-syntax

встроено

В контексте классических лиспов это не проблема. Сохраняешь свой образ с нужными библиотеками и вот оно уже «встроено».

no-such-file ★★★★★
()

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

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

adn ★★★★
()

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

C#

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

ну лямбды на самом деле дно. Даже pylint какой забанит очевидную конструкцию типа



def function(number: int, fn: Callable[[int], bool]) -> int | None:
    return number if fn(number) else None


is_even = lambda n: n % 2 == 0
print(function(2, is_even))

скажет Lambda expression assigned to a variable. Define a function using the "def" keyword instead. (unnecessary-lambda-assignment), ну спасибо на добром слове!

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

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

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

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

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

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

ну хотя может быть ты гений.

у меня есть на примере знакомые, у которых за плечами куча лет разработки ПО и которые кинулись сходу писать на питоне что-то. Граблями лоб себе поразбивали и пошли вникать в питон.

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

NorthernBlow
()

Напиши свой. ХЗ что конкретно тебе надо. Баш и питон сильно отличаются друг от друга.

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