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)

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

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

Еще один никогда не слышал про astyle.

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

Я на js не видел. И вобще, на пхп или js скрипты писать для cli? Откуда опыт и желание использовать их у админов?

При чём тут админы? Я всякие массивы данных ворочую на repl с js. Куда удобнее, чем тащить это в бд.

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

Ноду же, ну?

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

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

crutch_master ★★★★★
()

А какие специфические задачи решает Python? В чём его смысл?

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

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

Особенно интересно слушать про PHP после 7-ки. Посмотрите бенчи ;)

  • php7 - 3 December 2015
  • go1 (released 2012/03/28)
  • python 2.7 - July 3rd, 2010

    Посиди, подумай, почему используют python.

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

Можно пример?

Я наделал костылей для Array.prototype и делаю тоже самое, что делал бы в бд, но без танцев с бд и таблицами. Выборки (с this.filter внутри), группировки через объект и прочий изврат.

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

корочки пригодились?

Так я ж не про себя. У меня другие корочки. Которые, впрочем, тоже не пригодились :(

Alve ★★★★★
()

Пхытон нужен только вантузоидам, у которых нормального баша с coreutils нет.

Больше он никому не нужен.

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

Живой пример, вот прям сейчас.
Я накосячил с начислением (опять) и начислил по среднему вместо норматива. У меня есть json, который я скармливал микросервису, который в свою очередь заносил нужные объемы по счётчикам. Я чиню своё дерьмо и делаю начисление еще раз, но не заливаю его в базу. Потом беру старый json, новый json, вычитаю объемы из одного у другого по id счётчика с помощью нехитрой функции, которую тут же пишу, типа

var arrayCrutches = {
//...
    groupByKey : function(key) {
        var map = {};
        this.forEach(v=>map[v[key]] = v);
        return map;
    },
    merge : function(arr, groupKey mergecb) {
        var map = arr.groupByKey(groupKey);
        var ret = [];
        arr.forEach(v=>{
            if (v[groupKey] && map[v[groupKey]]) ret.push(mergecb(v, map[v[groupKey]]))
        return ret;
        });
    }
...
//не проверял в работе
И делаю что-то типа
newvols.merge(oldvols,id, 
     (old,new) => {
         old.vol = new.vol - old.vol;
         return old;
     }
feedVolsToDb(old);
Как-то так.

crutch_master ★★★★★
()

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

yvv ★★☆
()

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

1. Одноразовый скрипт, который на баше писать сложнее.

2. Работа с большими данными

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

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

Мало? Нужно ещё?

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

Допустим typescript

нормальные

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

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

Когда у тебя в одном предложении всречаются «Pascal» и «лучше», становится понятно, что твои вкусы немного специфичны.

Как язык питон прекрасен, но убогость CPython сводит это на нет. Фактическая его ниша это «херак, херак и в продакшон» ака перманетное прототипирование, очень широкая ниша, подминающая под себя почти все остальные.

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

нормальный ООП

Это Smalltalk и Self.

ФП

Это Haskell. Но ты ведь не про них, да?

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

И слышал, и пользовался. Только один хрен: в питоне у тебя софт без форматирования отступами не заработает, а astyle чисто опционален и никто его не упоминает во время обучения студентоты. Впрочем, я и после окончания вуза встречал неотформатированный код без отступов на Java, потому что человеку было лень отформатировать перед коммитом. Люди привыкли кастовать без дженериков, игнорировать 80% предупреждений компилятора и лениться без повода. Так лучше бы на питоне и писали, а не на C++/Java в стиле js.

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

Так ты ту щас и словишь «говнеца» от НЕ любителей форматирования. Им нужны {скобочки} и чтобы была анархия, читай - каждый писал бы как хочет, в только ему понятном стиле.

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

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

Пруфы? Что юзают взамен?

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

Может Я сам буду решать, как должен быть отформатирован МОЙ код?

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

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

Зачем они это делают? Это очередная хипсерская подделка или всё серьёзно? Я просто не в курсе.

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

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

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

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

Вместо изучения нового ЯП «со специфичным синтаксисом» проще набросать прототип на Питоне.

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

Грустно быть ими.

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

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

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

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

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

Ну так всё же: хипстота или всё серьёзно?

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

На практике чего?

На практике твоей работы, в чем бы она не состояла.

Выберешь CPython для реализации высоконагруженного сервера, где важна latency?

«Вот уж не придуривайся» (ц). Сервера чего? Для реализации любого I/O-bound сервера - возможно, выберу.

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

Поскольку в питоне сильная типизация

Она сильная на этапе выполнения.

проблем с этим быть не может

На этапе выполнения - вываливаются ошибки, когда дело дойдёт именно до той ветки кода и именно с теми данными, которые некорректно написаны... а пока не дошло - всё работает как ни в чём не бывало.

Если так уж небходимот пихать случайное рандомное дерьмо (нет)

Для того и нужна статическая типизация, чтобы ничего случайного никуда нельзя было запихать.

то обмазывают валидаторами.

Ну это, как я понял, питонисты любят, - обмазываться.

Твои аргументы 0/10, попробуй лучше накинуть.

А что накидывать? Сначала в топе был язык из костылей - JavaScript, теперь ещё хуже...

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

Она сильная на этапе выполнения.

Специально для тебя запилили явные типы. В чём проблема?

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

Имхо, если бы в JavaScript была бы статическая типизация, с выводом типов в рантайме, плюс ООП на основе только классов и интерфейсов, то это был бы язык маст хэв. Наиболее близок к этому идеалу Dart.

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

На этапе выполнения - вываливаются ошибки

У меня не вываливаются. Потому что их там нет. То ли я - гений, сцуко, пишущий без ошибок, то ли у тебя лыжи не едут.

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

это типа рядом со вторым третий поставить

Нет это типа рядом с 3.6 поставить 3.7

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

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

в скриптах адок из 2.7/3.4 и 3.7 намешанного поверх легаси кода

Об том и речь.

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

У любого сколь-нибудь значительного языка программирования есть свои поклонники, а также те, кому не нравится язык. Python, безусловно, относится к таковым. Лично я ближе ко второму лагерю, но так было не всегда)

Зачем существует Python? Видимо, по той причине, что кому-то он очень нравится.

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

Им нужны {скобочки}

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

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

Специально для тебя запилили явные типы. В чём проблема?

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

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

Имхо, если бы в JavaScript была бы статическая типизация, с выводом типов в рантайме, плюс ООП на основе только классов и интерфейсов, то это был бы язык маст хэв. Наиболее близок к этому идеалу Dart.

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

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

У меня не вываливаются. Потому что их там нет. То ли я - гений, сцуко, пишущий без ошибок, то ли у тебя лыжи не едут.

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

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

специфическая ООП и синтаксис, по-моему, делают его не столь интересным для обучения

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

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

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

cpython прекрасно обеспечивает десятки тысяч запросов в секунду. Но на реальной задаче у тебя все упрется в бд/io/etc. Сам cpython практически никогда не будет узким горлышком, разве что ты пишешь на нем какую-то числодробилку, при это не заморочился профилированием и выносом узких мест в код на компилируемом языке.

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

Но ide подсвечивают это даже без type hints. Кроме того у тебя упадут тесты.

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

На этапе выполнения - вываливаются ошибки
У меня не вываливаются. Потому что их там нет. То ли я - гений, сцуко, пишущий без ошибок, то ли у тебя лыжи не едут.

Статическая типизация дает не только ошибки в момент компиляции, но и в IDE появляется адекватная контекстная помощь, которая подскажет объекты какого типа можно передать на вход той или иной функции/методу, а в некоторых языках еще покажет какие константные значения можно использовать, короче можно писать не глядя в доку и код вызываемых методов, потому что контракт использования функции/метода уже явно приписан его сигнатуре.

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

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

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

На практике ошибки, связанные с тем, что тип не тот - самый редкий тип ошибок

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

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