LINUX.ORG.RU

Зачем Python?

 , ,


5

5

Обычно, ЯП - это инструмент, заточенный для решения задач в какой-то определенной сфере. У создателей ЯП была для него ЦЕЛЬ, которая наполняла смыслом бытие ЯП. Или же ЯП оказался обладателем таких характеристик, которые позволили эффективно решать определенные задачи, даже если изначально на него были другие планы. Это также объясняет необходимость существования ЯП.

Что-то низкоуровневое - Си, Rust, Ada; сервер - PHP, Go (а где-то Java, JS); клиент - JavaScript; энтерпрайз - C#, Java; скрипты для CLI - bash, lua (хотя сойдут PHP или JS); математика - R, Fortran; мобильные приложения - Java, Kotlin, Swift; начальное обучение - Basic, Pascal (можно Lisp, но лучше не стоит). Всё ясно, понятно.

А какие специфические задачи решает Python? В чём его смысл? Вот в (https://youtu.be/KnFrdzG79ak?t=532) МФТИ на информатике говорят, что Python - это классная штука, так как на нём можно всё (и в web, и в смартфон), мол универсальный. Но, имхо, это скорее минус, чем плюс. Это как швейцарский нож - может многое, но всё не очень качественно. В (https://youtu.be/bX3jvD7XFPs) MIT'e перевели обучение с эльфийского (Scheme) на Python. Ну для педагогических целей, для первокурсников, может Python и выглядит лучше. Хотя как аргумент в его пользу - ну так себе.

Пока я вижу, что в реальном мире Python (объективно) нужен для двух задач:

1. Поддержка legacy-кода, уже написанного адептами Python'а. Например, какие-нибудь скрипты для иксов, скрипты для сис.админов и т.п.
2. ML. Просто потому, что под ML были написаны нужные библиотеки (в нужном кол-ве и кач-ве) именно на Python. По неизвестным причинам написаны.

Сфера для (эффективного) применения Python'а очень мала, или мне показалось?

При этом, повсеместно говорят о популярности Python, как это модно-молодежно, его мол и учите. Закрадываются подозрения. А не является ли широкая популярность (или слухи о ней) Python исключительно маркетинговым явлением, когда ЯП, опять же по неясным причинам, проталкивают сверху? Если это так, то для чего это делают? А если не так, и он объективно эффективно решает какие-то задачи (почему его добрые люди и советуют), то объясните какие это задачи, какова целевая сфера применения Python'а, каков его смысл, цель???

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

Прикольно, это вывод типа сработал? Но у автоматического вывода типа обычно бывает множество ограничений. Тут явна математическая операция на числами из которой легко выводится тип. Посмотрел type hints, с ним можно писать и если ide поддерживает то просто отлично.

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

Ага, расскажи мне какой питон быстрый.

Многие используют

Не от хорошей жизни. Либо не от большого ума.

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

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

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

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

Если писать без оглядки на легаси-совместимость, то значительно экономятся ресурсы. Ну и потом async/await прикольные как минимум. Смазываем генераторы в корутинах евент лупами, инстант профит.

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

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

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

Тут скорее более общее, что у объекта нет такого метода. Конечно, это не всегда сработает. С type annotations намного лучше, тем более, их можно нагенерить автоматически https://github.com/Instagram/MonkeyType

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

а потом сбоку прилепить статику, которая не воспринимается интерпретатором

А нафига тебе приспичило статическую проверку кода пихать в интерпретатор? Кому-то легче станет, если её туда запихать и у конечного юзера программа не запустится с ошибкой? Она нужна только один раз после написания кода. Раз компилятора нет, значит нужна отдельная программа.

всё что хочешь тайпхинтами не опишешь

Чего ты такого странного хочешь?

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

Я думаю что программах написанных на статически типизированных языках практически никогда не возникает ошибок неправильного приведения типов в рантайме. По моим догадкам в python такие должны встречаться время от времени. Но это только моя догадка, я ничего сложного на python не писал. За годы программирования на Java я не помню ошибок приведения типов, зато практически всегда возникали NullPointerExcetpion и причину в обилии NPE многие объясняют тем, что в типах нет информации про то может ли ссылка указывать на null или нет. Следовательно нехватка такой информации в момент компиляции порождает ошибки приводящие к NPE в рантайме.

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

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

А чего ноешь тогда?

Я говорю про коммерческие проекты, где до тебя кто-то писал, вместе с тобой кто-то пишет, и после тебя - будут писать.

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

Используй жаву, если припёрло. Ставить свои проблемы в упрёк питону — завышенное чсв.

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

Следовательно нехватка такой информации в момент компиляции порождает ошибки приводящие к NPE в рантайме.

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

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

А чего ноешь тогда?

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

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

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

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

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

У нас есть структуродробилка с производительностью 1 запрос в секунду на процесс и ее скейлить приходится процессами, а не потоками, потому что GIL. И она обязана быть написана на Python, потому что часть ее работы буквально вычислять Python выражения

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

А нафига тебе приспичило статическую проверку кода пихать в интерпретатор? Кому-то легче станет, если её туда запихать и у конечного юзера программа не запустится с ошибкой? Она нужна только один раз после написания кода. Раз компилятора нет, значит нужна отдельная программа.

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

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

Можно пример что именно нельзя описать тайпхинтами?

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

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

Ха. Ха. Ха.

(Может в Ъшных языках вроде окамла и правда этого нет, но в сях это сплошь и рядом)

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

Можно пример что именно нельзя описать тайпхинтами?

List<Dictionary<string, MySomeType>>

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

У нас есть структуродробилка с производительностью 1 запрос в секунду и ее скейлить приходится процессами, а не потоками, потому что GIL

А почему «приходится»? У этого подхода есть какие-то недостатки?

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

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

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

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

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

Да, и занимаются этим часто, и void* по коду передают

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

Ха. Ха. Ха.
(Может в Ъшных языках вроде окамла и правда этого нет, но в сях это сплошь и рядом)

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

Ежели ты про си без плюсов, - то он вообще ни разу не предназначен для разработки прикладного софта.

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

К вопросу почему нужно использовать Gtkmm с ее libsigc++ для сигналов вместо Gtk+

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

Ну память жрет

Там хотя бы тысяча процессов есть?

Вопросы люди задают чойта у вас столько процессов висит.

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

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

Там хотя бы тысяча процессов есть?

О да. Много терабайт памяти из-за того что сраный педон. Я бы даже не обсуждал если бы не было.

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

Я про то и другое

строго придерживаясь типизации

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

Это вам не факториалы на шаблонах считать.

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

Много терабайт памяти из-за того что сраный педон

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

annulen ★★★★★ ()

Где-то прочел такую фразу

Python - это второй лучший язык для любой задачи.

В принципе, согласен, только иногда он может соревноваться за первое место.

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

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

Ты не знаешь что такое стабильность? Зато 5 звёзд на ЛОРе.

Ошибки действительно редкие, но как правило это None там где его не ждали, значит что-то где-то уже сломалось и это другая ошибка. Разве что не предусмотрели что что-то где-то у кого-то будет когда-нибудь отломано. У некрофильских дистров часто такие проблемы с совместимостью всего.

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

Твой код - это если твой личный проект.

Если тебе надо так форматирование сделай astyle, делов то. А быдлокодить можно и на пистоне нормально.

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

Тогда, в моих условиях, мне надо писать на pl/sql + delphi.

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

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

И еще херили бы всё на свете благодаря ДП. Зато с отступами, да.

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

Нет. Потому что ты ТВОЙ код в следующем комментарии, а текут от этого МОИ глаза.

Возьми сделай astyle. Или не читай.

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

Ты не знаешь что такое стабильность? Зато 5 звёзд на ЛОРе.

Не знаешь, до чего доколебаться - доколебись до звезд.

Ошибки действительно редкие, но как правило это None

Оба раза «нет».

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

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

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

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

А что тогда? Я за все эти годы в питоновом софте только с таким сталкивался. Там где неподконтрольный сервер что-то наизменял, или тот же жсон, там ещё бывает, да.

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

а astyle чисто опционален и никто его не упоминает во время обучения студентоты

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

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

В других языках кстати в тех же случаях прилетает assert fault либо сегфолт, в питоне просто трейс вываливается и сразу понятно где проблема.

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

Ну прикрути этот твой astyle в greasemonkey для лора, если в жаваскрипте разбраешься. Или под спойлер код запихай.

anonymous ()

ЯП - это инструмент, заточенный для решения задач в какой-то определенной сфере

а как же языки общего назначения? на сколько такие языки необычны?

Что-то низкоуровневое - Си

с чего вы взяли, что Си задумывался как низкоуровневый?

сервер - PHP

0_o

слишком много расхождений вымысла с реальностью.. не буду дальше читать..

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

То есть оправдание существования реализации операторных скобок отступами

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

Вон как загнул, жаваскриптёр. Оправдание твоего не отформатированного кода - это архаичный костыль из сишного конпелятора?

anonymous ()

на питоне пишут пакетные менеджеры (portage) или установщики, парсеры сайтов, он мощнее и красивее bash.

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

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

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

Си кстати считается высокоуровневым и сегодня, как и раньше.

В те времена, когда цэ считался высокоуровневым, уровней было ровно две штуки: машинные коды с ассемблерами и всё остальное.

Двухэтажные дома тоже когда-то считались высокими. Наверное.

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

А сейчас иначе? Ну получили распространение интерпретаторы и вм, если только по этому признаку разделять. И то фигня какая-то получается, машинные коды то никуда не делись.

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

Поставь себе Pycharm / VSCode и не мучайся

Оно телепатией будет угадывать какой нужен отступ после копипаста из другого места?

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

Чем плохо питоновское ООП?

Примерно тем, чем было плохо ООП в php 4.

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

По-моему даже kwrite в kde телепатией угадывет. У тебя гном небось? Ну и vim опять же есть. Нет, у тебя наверно scintilla, да? Notepad++ какой-нибудь?

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

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

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

Алгоритмами, которые зашиты в IDE и твоей головой, если ты любитель копипасты.

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