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

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

В каких?

Допустим typescript. Быстрее, нормальные лямбды, нормальные классы, проверка типов. Да что уж там, даже пых лучше питона по этим же причинам.

Я уж не говорю про жабку или то что сейчас можно пилить на C++/Rust и компилять в js.

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

чёт не согласен

был лапшевидный перл

perl был изкоропки в каждой системе, мощный + быстрый старт = лучший инструмент админа, но сложен для новичка, да

марсианский тикль

что там марсианского? Tcl/Tk простой же как две копейки!

1. любая строка программы парсится примитивно просто:

* CAR - "голова" - команда
* CDR - "хвост" - аргументы к ней
2. три типа работы со строкой:
* [ ... ] - немедленное исполнение в строке с подстановками
* " ... " - строка с подстановками
* { ... } - строка без подстановок, "как есть"
3. качественная, правильная, точная и логичная работа с типами вложенных строк при подстановке

ФСЁ!

и убогий на тот момент пых

его использовали только в WEB, зачем было его использовать для скриптов в консоли, кода есть perl и CPAN ?

anonymous ()

энтерпрайз - C#, Java

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

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

лучший инструмент админа, но сложен для новичка, да

Да я и не спорю.

что там марсианского

Весьма необычный подход. Простой, но требует перестройки мышления.

Надо понимать, что речь идёт о языке для скриптов, т.е. том, чем будут пользоваться простые Васяны, а не гуру хаскеля и лиспа со степенью доктора математики. И не админы которые привыкли к $#@ Детский питон тут зашёл как нельзя лучше.

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

А какие специфические задачи решает Python?

Скрипты и прототипирование.

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

typescript сырой. Да и интертоп с js убивает всю типизацию. В итоге получаем монстра из двух языков. Ещё и ноду нужно ставить.

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

Когда звучит слово «прототипирование», - в голове звучит: «perfect! ship it today!».

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

typescript сырой

А питон гнилой, ага. Технические аргументы будут?

Да и интертоп с js убивает всю типизацию

Ты ts видел только на картинках да? Это решаемо и для всего что хоть как-то шевелится есть тайпдефы.

Ещё и ноду нужно ставить

Питон тоже, да ещё несколько.

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

Технические аргументы будут?

Он молодой. Этого достаточно.

Ты ts видел только на картинках да?

Хелоуворды пытался писать.

Питон тоже

На лине - нет.

Пример кода:

import Sqlite = require('sqlite');

class User {
  constructor(public id: number, public name: string) { }
}

var database = new Sqlite<User>('CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT NOT NULL)',
  (row) => {
    return new User(row.id, row.name);
  }, function(error: Error) {
    if (error === null) {
      database.get('SELECT * FROM user WHERE name = ?', ['karl'], function(error: Error, user: User) {
        if (error === null) {
          console.log(user);
        } else {
          console.log(error);
        }
      }
    } else {
      console.log(error);
    }
  });

Это же ппц чистой воды.

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

ппц чистой воды

Во-первых вкусовщина, а во-вторых, повтори это на пистоне. И чтобы с типами.

Он молодой. Этого достаточно

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

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

Во-первых вкусовщина

Нет.

И чтобы с типами.

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

Смотрю ещё есть TypeORM, тут уже получше. Но всё равно как-то лапша:

createConnection(/*...*/).then(connection => {

    let photo = new Photo();
    photo.name = "Me and Bears";

    return connection.manager
            .save(photo)
            .then(photo => {
                console.log("Photo has been saved. Photo id is", photo.id);
            });

}).catch(error => console.log(error));
RazrFalcon ★★★★★ ()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от oldstable

Если CLI-скрипты на JS я видел, то на Lua и PHP их могут писать только очень странные люди.

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

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

then

Пример-то для нормальных людей, которые в курсе как это заменить на async/await.

Нет

Да. Не вижу твоего примера на питоне.

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

И да, а какой интепретатор использовать для js в cli?

nodejs же. Да, асинхронная лапша в скриптах. Я первый раз в жизни увидел 20 уровней вложенности.

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

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

Откуда у админов желание использовать питон вместо перла? А так-то скрипты пишутся и для «внутри проекта». Автоматизация и т.п. Предлагаешь в проект на ноде тянуть питон?

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

говорят, что Python - это классная штука, так как на нём можно всё (и в web, и в смартфон), мол универсальный. Но, имхо, это скорее минус, чем плюс. Это как швейцарский нож - может многое, но всё не очень качественно

Это ты сейчас лихо так обосрал все ЯП общего назначения

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

На лине - нет

Хоть где - да, потому что питонисты очень любят все 100500 супернужных фич. Так что приходится кроме питона из реп ставить самый распоследний.

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

объясните какие это задачи, какова целевая сфера применения Python'а, каков его смысл, цель???

Такие же точно, как у любого другого скриптового ЯП общего назначения: веб, cli-скрипты, быстрое прототипирование, высокоуровневое скриптование приложений на других языках (напр., гейдев, плагины к Kodi и т.д.), обучение программированию, разработка just for fun и т.д.

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

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

pawnhearts ★★★★ ()

то объясните какие это задачи, какова целевая сфера применения Python'а, каков его смысл, цель???

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

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

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

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

А... ещё эти милая долботня с отступами.

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

Предлагаешь в проект на ноде тянуть питон?

На ноде хз, а вот в проектах на с или с++ легко. А еще там где используется постгрес.

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

Это ты сейчас лихо так обосрал все ЯП общего назначения

Не так. Точно не все. Есть ЯП общего назначения, которые при всей их "всеобщности" имеют сильную специфику. Си и Rust - это низкоуровневое. И это сильная сторона ЯП, которая определяет его назначение. Хотя никто не мешает строить сайты на них (cgi). Кстати, так и делал, некогда - чисто, в образовательных рамках.

А вот специфики назначения Python'a, кроме необходимости разбираться в уже написанном legacy коде (будь-то админ-скрипты, или либы ML) - не нахожу.

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

nodejs же.

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

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

Си и Rust - это низкоуровневое.

Что значит низкоуровневое? А асм что тогда? А с++ или го это тогда что? Да, на асме тоже можно саты писать )))

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

Что значит низкоуровневое?

то и значит.

А асм что тогда? А с++ или го это тогда что?

тоже (почти).
у Go основная специфика - сервер (при всей общности)

Да, на асме тоже можно саты писать )))

можно. и?

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

то и значит.

То что?

у Go основная специфика - сервер (при всей общности)

Какой сервер? Веб сервер мб или что? Может почтовый?

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

Такие же точно, как у любого другого скриптового ЯП общего назначения:

веб

есть инструменты лучше: php, go

обучение программированию

есть инструменты лучше: basic, pascal

cli-скрипты

на чем угодно (из скриптовых).

быстрое прототипирование

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

высокоуровневое скриптование приложений на других языках (напр., гейдев, плагины к Kodi и т.д.)

lua, lisp, etc.

разработка just for fun и т.д.

на чем угодно. лучше на том, что хорошо знаешь, чем легко владеешь.

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

есть инструменты лучше

Аргументы?

Я так и не понял, что мешает применить те же придирки к любому другому языку. Типа go нинужен - есть php, php нинужен - есть go. Си нинужен - есть Раст, Раст нинужен... Нувыпонели.

Reineke ()

Зачем Python?

Чтобы писать код, блджад.

anonymous ()

Знатный срачик, знатный.

От себя лишь скажу, что есть языки общего назначения, не заточенные ни под что, как C++. У разработчиков питона была цель сделать простой язык, с синтаксисом, близким к английскому языку. Но это мое ИМХО, как оно там было спросите у них.

ArkaDOSik ()

Имхо как минимум для веба питон подходит идеально. Лет 20 назад ещё имело смысл в выборе языка так как это сильно сказывалось на быстродействии, но в современном вебе, когда одна ссаная страница может весить 10мб выбор языка уже не имеет значение. Тот же пхп уже доисторический рудимент, который как пятое колесо нафиг не нужен. Гораздо логичнее изучить более универсальный питон, чем тратить время на пхп у которого отпали все преимущества.

anonymous ()

Коллега на python`е и tftp сервер написал и опросник управляемых маршрутизаторов через telnet для сбора таблиц MAK адресов и код для копирования данных с повреждённой файловой системы NTFS на сыпящемся диске, при чём разобрался по документации в структуре NTFS и вычитывал с диска файлы кластер за кластером.

Так же написал на python код для печати этикетов на термопринтере, мы на нём инвентариные номера печатаем и маркируем провода.

В общем, могу сказать что python действительно может многое.

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

anonymous ()

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

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

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

На чем писать вебсайт без разницы, главное удобство и качество кода. Сравните Django и Yii2

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

Веб + обучение программированию + cli-скрипты + высокоуровневое скриптование + jff = 4-5 различных языков. Тратить на это кучу времени не очень умно, при том, что преимуществ при выборе этого зоопарка вместо одного питона я не вижу.

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

Си и Rust - это низкоуровневое.

Тогда змея - «это высокоуровневое»

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

есть инструменты лучше: php, go

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

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

есть инструменты лучше: basic, pascal

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

на чем угодно (из скриптовых)

лучше на том, что хорошо знаешь, чем легко владеешь.

lua, lisp, etc.

Ну вот многие знают/любят питон. Это же вкусовщина в чистом виде. Из этого не следует, что Lua или Scheme нужнее (или что, например, Perl не нужен)

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

питонисты очень любят все 100500 супернужных фич

это не совсем так, но в своих проектах очеень долго пытался тянуть совместимость 2.7/3.2 потом 3.4 — батарейки конечно все совместимые были, но терялись производительность и моё удобство.

потом подумал, что шли бы все нахер — буду использовать супернужные фичи из последнего питона потому что мне так надо. теперь в скриптах адок из 2.7/3.4 и 3.7 намешанного поверх легаси кода, в следующий раз возьму 3.8 и это самый норм вариант как оказалось.

anonymous ()

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

Что может быть лучше?

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

По-моему в 2015 студии только 3.5 поддерживается, а вот эта шляпа вообще только 2.7 бывает https://www.microsoft.com/en-us/download/details.aspx?id=44266

Как с питоном в 2017, вроде получше? Впрочем мы уже перешли с msvc на gcc и венда по остаточному принципу. В общем не всё так радужно, взял и пишешь на версии какая тебе нужна, как минимум необходима поддержка IDE (ну не все будут писать руками в vim).

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

Поскольку в питоне сильная типизация, проблем с этим быть не может. Если так уж небходимот пихать случайное рандомное дерьмо (нет), то обмазывают валидаторами. Твои аргументы 0/10, попробуй лучше накинуть.

anonymous ()

Я смотрю на Python как на замену sh скриптам. Стандартные bash/zsh стают неудобными сразу же когда код превышает одну строку, а все остальные известные альтернативы либо являют собой предельное убожество, либо наоборот позволяют писать такое что сам потом будешь читать и плакать. Так вот, Python занимает нишу где-то между ними.

Сам я его нигде не использую, а програм на нём стараюсь избегать

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

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

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

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

Может Я сам буду решать, как должен быть отформатирован МОЙ код? Если не нравится открой для себя astyle или автоформатирование в этом твоём ide. Изобрели проблему из ничего и героически её решили.

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

Это же ппц чистой воды.

Да, ты не знаешь, как писать на js. Это ппц чистый воды, т.к. любая макака это умеет.
1. man Promise

import Sqlite = require('sqlite');

class User {
  constructor(public id: number, public name: string) { }
}

function newUser(row) {return new User(row.id, row.name);}
function getUser(database) {
    database.get('SELECT * FROM user WHERE name = ?', 'karl'])
        .then(newUser)
        .catch(err);}
function error(err) {console.log(err);}

var database = new Sqlite<User>('CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT NOT NULL)')
    .then(getUser)
    .catch(err);
//как-то так. Не проверял, но походу твой код не рабочий.
Да, асинхронный код выглядит как говно. Но он хоть на чём будет так выглядеть. Поэтому:
2. Async костыли
import Sqlite = require('sqlite');

class User {
  constructor(public id: number, public name: string) { }
}
var loadUser = async function() {
   try {
       let database = await (new Sqlite<User>('CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT NOT NULL)'));
       let row = await database.get('SELECT * FROM user WHERE name = ?', 'karl']);
       return new User(row.id, row.name)
   } catch (err) {
       console.log(err);
   }
   return false;
}

User u = loadUser();
...
Что уже больше похоже на правду, хоть и на костылях.

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