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'а, каков его смысл, цель???



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

Ты про что? Я не про переписывание питона, я про переписывания проекта на питоне на что-то другое. Сам питон уже успешно переписали в виде PyPy, жаль только STM как следует не взлетел.

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

Объясни мне как можно тебя воспринимать всерьез если ты пишешь, что

Костыль в сравнении с нативным асинхроном и тасклетами.

И потом ты говоришь, что это есть в Python...

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

Вот тебе и ответ. Про ПЕРЕПИСЫВАНИЕ. А тут играют экономические факторы. 1) Зачем мне оплачивать труд программистов за переписывание?

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

Это не реализация, это патчи для cpython. Даавайте давайте, вспомним что питон это не только cpython, но и десятки альтернативных реализаций.

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

Это не реализация, это патчи для cpython

Я знаю. Это отдельный проект и это никто не принял в мейстрим. Значит альтернативная реализация.

Даавайте давайте, вспомним что питон это не только cpython

Нет смысла, их почти никто не юзает. Я про стеклексс просто к месту вспомнил, так-то это мервячина.

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

Нет смысла, их почти никто не юзает.

Почему?

Я про стеклексс просто к месту вспомнил, так-то это мервячина.

Почему?

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

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

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

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

Не юзают, ибо мейнтейнеры дистров это не особенно активно и охотно завозят.

Это тебе мэйнтейнеры сказали?

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

Ну ты же почти 20 херакаешь на пистоне и даже про него не знаешь.

Почему тогда я должен знать о питоне если я пишу на пистоне?

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

Да нет. Я хочу конкретных обвинений, а не дурочку валять. Пока кажется ты как клоун тут кривляешься и не можешь ответить НИ НА ОДИН вопрос нормально.

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

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

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

Ну сейчас они коечто сперли из 80-х годов (собственно Го и был создан в 80-х)

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

Однопоточная. Это мешает ей быть асинхронной?

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

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

Так что он почти что бесплатный.

Я имел в виду рантаймовую эффективность сгенрированного кода в обоих случаях

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

А это не зависит от компилятора? И еще раз разве case 'ivanoff': func не приводит к сравнении переменной со строкой?

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

Будь мужиком. Откланялся - значит уходи. У - уходи. Ибо толковую беседу ты вести по определению не можешь ибо путаешь языки понятия и вообще...

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

А это не зависит от компилятора?

Более эффективный алгоритм сравнения важнее любых ужимок компилятора, тем более в такой задаче (ничего кроме условных операторов и сравнений char'ов в разных позициях строк) простора для автоматической оптимизации очень мало

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

ибо мейнтейнеры дистров это не особенно активно и охотно завозят.

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

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

Не ну если ты сравниваешь строки в case или ищешь в статическом dict то кто мешает компилятору сгенерировать 1 и тот же код? Потому я не понимаю чем отличается


h={
   'a': func1,
   'b': func2}
h['a']()

от

if x=='a':
   func1()
elif x=='b':
   func2()

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

Потому это все просто гадание на кофейной гуще.... Надо делать бенчмарк и смотреть.

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

Или те кто юзает просто не орет на каждом углу. НО! В самом факте уже заложено доказательство, что Пайтон торт.

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

Ну про твистед даже отвечать не буду, сам всё понимаешь. А «нативные» async/await (ты же это хотел сказать?) — на деле просто костыль очень сбоку. Чтобы это понять, достаточно .send(None).

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

Му ха ха... А еще аватаром себе мужика выставил.Сам «Откланиваюсь» но не ушел...

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

не юзают потому что не нужно

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

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

Это мешает ей быть асинхронной?

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

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

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

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

Вроде понял. Но мне кажется, если «switch по строке» будет «посимвольно» сравнивать, то он тонну кода нагенерирует.

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

Асинхронный, только реализация уг. В плане асинхрона у меня претензия не к потокам. Но лучше если с потоками, разумеется.

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

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

Чтобы с помощью идеальной хэш-функции функции реализовать switch, нужно сделать две операции: 1) вычислить эту функцию; 2) сравнить побайтово строку, соответствующую найденному числу, с исходной, чтобы убедиться, что исходная строка действительно принадлежала заданному набору. Т.е. видно, что а) сложность операции зависит от длины строк в множестве, если они длинные, то strcmp займет намного больше времени, чем вычисление функции; b) если строка не из множества, это заведомо худший случай

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

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

Потому я не понимаю чем отличается

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

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