LINUX.ORG.RU
ФорумTalks

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

 ,


1

3

Ahoi!

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

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

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


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

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

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

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

NorthernBlow
()

Очевидно, что тебе нужен guile.

skiminok1986 ★★★★★
()
Ответ на: комментарий от NorthernBlow
Поддержка различных бэкендов: он компилируется в C, C++
или JavaScript, так что Nim можно использовать для всех внутренних и внешних нужд.

Макросы не могут изменить синтаксис Nim, потому что в этом нет необходимости — синтаксис достаточно гибкий.

Современная система типов с локальным выводом типов, кортежами, дженериками и типами суммы.

Операторы сгруппированы по отступу, но могут занимать несколько строк.
Forum0888
()
Последнее исправление: Forum0888 (всего исправлений: 2)
Ответ на: комментарий от pekmop1024

Ну вообще тут виноваты не питонщики, а юникс старперы, которые не могут делать либы вместо монолитных бинарников.

steemandlinux ★★★★★
()

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

ВНЕЗАПНО, C# подходит.

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

Кстати интересно, каким местом Python, Perl и т.п. являются более открытыми, чем VB.NET или C# ?

Или даже свободными? Вот если кому-то вздумается внести свою инновацию в mainline перла, его сразу там встретят с распростертыми объятиями?

Вероятно, полезные PRs принимают и в репозитории .NET:

https://github.com/dotnet

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

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

Не все еще «места заняты».
Можно создать ЯП: Жираф, Носорог, Слон, ...
Ждем с нетерпением!

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

А вот так из C# можно заюзать 100500 готовых либ вашего любимого пятона:

https://github.com/pythonnet/pythonnet#example

Example:

static void Main(string[] args)
{
    PythonEngine.Initialize();
    using (Py.GIL())
    {
        dynamic np = Py.Import("numpy");
        Console.WriteLine(np.cos(np.pi * 2));

        dynamic sin = np.sin;
        Console.WriteLine(sin(5));

        double c = (double)(np.cos(5) + sin(5));
        Console.WriteLine(c);

        dynamic a = np.array(new List<float> { 1, 2, 3 });
        Console.WriteLine(a.dtype);

        dynamic b = np.array(new List<float> { 6, 5, 4 }, dtype: np.int32);
        Console.WriteLine(b.dtype);

        Console.WriteLine(a * b);
        Console.ReadKey();
    }
}

Output:

1.0
-0.958924274663
-0.6752620892
float64
int32
[  6.  10.  12.]

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

Шас проверим.

Два дня потратил на рефакторинг https://uclibc.org/.
Так как исходники компилировались лишь в gcc.
Заодно из Си перевел в C++ (впрочем их можно и в Си скомпилировать).

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

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

А вот если эту лямбду сразу определить в выражении, то можно вывести тип передаваемого значения и сверить тип возвращаемого значения.

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

no-dashi-v2 ★★★
()

В python откровенно раздражает редактирвоание отступами и что на все удаленные сервера приходится свой vimrc тащить с нормальной длиной табуляции (да, знаю что по стандарту должно быть 4, но дико неудобно).

А так, язык как язык, с кучей готовых модулей под практически любую задачу, можно писать в процедурном стиле и вообще не париться, для парсинга файлов в различных форматах (plain, json, yaml, xml, ...) и работы с rest-api/ssh/mysql (requests, paramiko, pymysql) вполне подходит, а что еще для «административных задачь» нужно? Ну и на большинстве современных дистрибутивов уже из коробки есть (правда не со всеми модулями).

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

Два дня потратил на рефакторинг https://uclibc.org/.
Так как исходники компилировались лишь в gcc.
Заодно из Си перевел в C++ (впрочем их можно и в Си скомпилировать).

Шас проверим (свое API и калькулятор).

cos( 5 ) = 0.99619469809174553229501040247389
sin( 5 ) = 0.087155742747940607

double c = (double)(np.cos(5) + sin(5));

0.99619469809174553229501040247389 + 0.087155742747940607 = 1.08335044084

Не сходится!

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

cos( 5 ) = 0.99619469809174553229501040247389
sin( 5 ) = 0.087155742747940607

Это откуда?

Посчитал в SpeedCrunch:

sin(5)
= -0.95892427466313846889

cos(5)
= 0.28366218546322626447

cos(5)+sin(5)
= -0.67526208919991220443
sanyo1234
()
Ответ на: комментарий от Forum0888

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

В примере вероятно радианы, у меня в калькуляторе тоже по умолчанию радианы.

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

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

Запись sin(5) в любом нормальном ЯП или калькуляторе означает синус от 5-ти радиан.

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

Сейчас в радианах попробую

-0.95892427466313845 + 0.28366218546322625 = -0.6752620892

Сходится.

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

TCL например

TCL - это производитель холодильников . язык программирования - Tcl или tcl (jtootf)

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

Исходники Net в Linux имеются, но тредов с обсуждением почему-то нет.

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

А чем скрипт принципиально отличается от любой другой программы.

Например тем, что вменяемый примат навряд ли захочет тянуть JVM+зависимости ради helloworld.

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

Например тем, что вменяемый примат навряд ли захочет тянуть JVM+зависимости ради helloworld.

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

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

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

sanyo1234
()

Dart еще не советовали? Вот добавят в Dart 3 возврат из функций того что похоже на питоновские тупли, но с именованными позициями - будет даже лучше питона - с компиляцией и без GIL.

Жаль только - от питона никуда не денешься, если только в нём есть нужные библиотеки…

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

Жаль только - от питона никуда не денешься, если только в нём есть нужные библиотеки…

Хотя бы не уподобляться остальным приматам, пишущим на пятоне:

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

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

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

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

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

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

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

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

Ну вообще тут виноваты не питонщики, а юникс старперы, которые не могут делать либы вместо монолитных бинарников.

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

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

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

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

Вот если кому-то вздумается внести свою инновацию в mainline перла

А при чем тут опенсорс? Исходник открытый? Открытый. Больше ничего опенсорс не предоставляет, двери в дома не открывает.

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

А при чем тут опенсорс? Исходник открытый? Открытый.

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

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

numpy.memmap тоже работает?

Вероятно, если написать этот кусок кода на CPython, а потом задействовать такой питонячий фрагмент снаружи без прямых вызовов numpy.memmap из C#?

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

вменяемый примат навряд ли захочет тянуть JVM+зависимости ради helloworld

Вот рептилоид — другое дело!

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

Не пойму, в чем принципиальное отличие от обычного словаря. И то, и то — ассоциативная структура данных, множество пар ключ-значение. Что порядок ключей определен? Так он и в словаре может быть определен. Зачем городить еще один тип?

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

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

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

в таком случае советую использовать «код на регекспах» вот там действительно требуется сильная надрочка читабельности

pfg ★★★★★
()

Мне для скриптов руби нравится

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

⩃ɘઋྒ짮Ⲃ韑颶犀릩⻈?

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

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

да, я тоже так подумал, минимальная работа с коллекциями, рекурсия, имплиситы, даже пара проблем на дизайне (как правильно сериализовать со сдвигом, бигинт вместо инта)

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