LINUX.ORG.RU
ФорумTalks

Претензии хейтеров к Питону

 ,


1

2

По результатам чтения ЛОР.

1) Отступы «легко ломаются при копипасте и редактировании». Этот пункт выглядит как форма фобии, все хейтеры ее упоминают, но нет ни одного воспроизводимого практического примера, когда что-то сломалось с отступами, и поэтому не понятно, есть проблема или нет. Может просто настроить редактор или взять правильный?

2) GIL. Для некоторых применений (numpy) это не проблема.

3) Нет многострочных лямбд. Но есть локальные функции и list comprehensions.

Что еще?

Я не говорю, что Питон надо толкать во все ниши, но просто некоторые высказывания ЛОРовских аналитиков звучат в таком стиле: «что, Питон? Посмотрел. Не_как_в_моêм любимом_языке. Закрыл. Нинужно.» А чего стоят однострочные комментарии экспертов типа «в 21м веке язык без фичи Х - не язык»...

★★★★★

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

Ты должен это в коде предусмотреть. Если у тебя функция возвращает что-то или null, ты это явно объявляешь и потом обязан обработать вариант null, иначе компилятор надает по рукам.

И есть 2 фирмы A и B. Пока фирма А делает продукт где отсекают все случаи, вирма В уже продала свой продукт и поделила бабло....

Наверно половина всех ошибок в динамических язычках например связана с null-нежданчиком.

По последней инфе не больше 15% ошибок.

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

Впервые я с тобой почти полностью согласен (про тз и реалии разработки).

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

У тебя есть таск в джира. И там считают ТВОЕ среднее время.
твою эффективность будут считать по количеству строк которые ты написал

Я не на галере работаю.

Кто там про рынок рассказывал?

На рынке не только стартапы-однодневки.

ТЕКСТОВЫЕ протоколы
все хвалят за бинарные

Всё равно без препроцесинга не прочески, так что без разницы.

О чём последние два абзаца - не понял.

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

https://happi.github.io/theBeamBook/#_concurrency_parallelism_and_preemptive_...

Кластер ПОСТОЯННО контролирует свою консистентность и с достижением определенного числа акторов он уже начинает тратить кучу времени на это вместо вычислений.

А что там - я могу в 1 акторе открыть порт и если кто то к нему присоеденился - передать его другому и чтоб он работал? А могу я открыть 1млн портов?

Все что делается АВТОМАТИЧЕСКИ имеет свои пределы.

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

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

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

Я не на галере работаю

Это на счёт времени, но суть-то не в этом. Хреновые ТЗ, miscommunication и свободные радикалы бывают везде. Тут он прав.

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

Учитывая средний уровень веба - я даже не сомневаюсь.

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

По последней инфе не больше 15% ошибок.

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

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

А я сам удивляюсь. У нас государство жалуется на недостаток ИТ кадров. А тут можно пол ЛОРА забрать в трудовые лагеря. Тот же @RazrFalcon в одиночку на Хорошем ЯП может обеспечить 10% потребностей страны ))

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

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

Нет ибо заставить НЕЛЬЗЯ.

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

А какое отношение это имеет к GIL? GIL - глобальная блокировка интерпретатора. Ключевое слово «глобальная». Зачем это надо в питончике? А он гарантирует каждому потоку исключительный доступ к ресурсам интерпретатора. Поток держит блокировку и выполняется, а все другие тихо ждут. Отдал, поехал выполняться другой поток. А в erlange никто никого не ждет, там сотни тыс. потоков работают без глобальной блокировки, а иначе это нахрен все не надо.

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

Не передергивай. 1) Сотни тысяч потоков не могут работать на 1-й машине параллельно это раз. 2) Что конкретно блокирует поток не играет роли Или GIL Или сборка данных для VM когда шэдулер остановит бим.

Хочешь обвалить Эрланг? Сделай NIF в котором будет цикл на 20 минут (хоть пустой).

Сути это не меняет умрешь ты от Рака легких или от пули - ты все равно умрешь.

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

Где, в таком случае, расстрелы?

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

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

У тебя каша в голове. Где я написал что они параллельно выполняются. Блокировка потока нужна для доступа к разделяемому ресурсу, а такой отсутствует, потому что? Сюрприз! Данные там иммутабельны. Даже при сборке мусора потоки не блокируются.

Сделай NIF в котором будет цикл на 20 минут

Зачем мне так делать, если в документации специально написано так не делать?

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

Блокировка потока нужна для доступа к разделяемому ресурсу, а такой отсутствует, потому что?

От ано что михалыч... А ведь остальные все идиоты. Можно вопрос - а с какими целями другие делают разделяемы ресурсы?

Зачем мне так делать, если в документации специально написано так не делать?

Да много где еще написано проверять входные данные, но не проверяют. Таких примеров мало?

Ну и

Internally Erlang handles the concurrency issue by creating small lightweight executions called processes. Unlike other major languages such as C, these processes are not built on top of the native operating system processes or even thread model, but are created and managed internally by the Erlang virtual machine.

Так почему ты erlang threads называешь потоками - хочешь нас в заблуждение ввести?

https://www.quora.com/How-does-Erlang-avoid-the-GIL-that-plagues-Python-and-Ruby

To come back to the problem there are two reasons why Erlang has no GIL:

GIL stands for Global Interpreter Lock, it is for interpreted languages and the Erlang is a compiled not interpreted languages. The Erlang language is not using a threading model but an actor model. Thus the kind of problems associated to threads do not apply. It is certainly possible to run a multiplicity of Python thread which are communicating by a system of some kind. Others may propose adequate framework.

Что отсюда следует? В Erlang НЕЛЬЗЯ написать тот же алгоритм, что можно в Python.

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

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

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

Скажи это kernel developers.

Kernel developers (как многие другие сишники) переносят только скобку у функций, это ещё куда не шло. Да и я с ними не встречаюсь, чтобы что-то там им говорить.

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

Erlang has no GIL

Что и требовалось доказать. Еще спорить будешь?

Что отсюда следует? В Erlang НЕЛЬЗЯ написать тот же алгоритм, что можно в Python

Какой еше алгоритм? Он же вроде тьюринг-полный, значит можно.

Deleted
()

Питон? Посмотрел. Не_как_в_моêм любимом_языке. Закрыл. Нинужно

Все эти __init__, обязательные self, __конвенции_именования, str(явное_приведение_типа), реализация ООП где-то рядом с JS, все это создает ощущение, что python очень старый язык. Хорошие python программисты появляются только из среды python программистов, перетока программистов из других языков ждать не стоит, например для меня там нет никаких новых абстракций которые позволят писать более выразительный код.

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

Гуёвые приложения.

А какая у гуёвых приложений специфика, что именно Питон не подходит? Я не вообще про десктопный/клиентский софт - в общем случае могут быть самые разные требования - а чисто с т.з. UI, какая разница, на каком языке отображать контролы и обрабатывать IO? Тем более, что общеизвестные либы для Линукса всё равно на C и C++ написаны, а в Питоне только биндинги. Наоборот, плюс в том, что не нужно учить ЯП ещё древнее Питона, только чтобы набросать типовой UI.

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

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

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

Ты понимаешь смысл слова «тьюринг-полный»?

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

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

ЯП ещё древнее Питона, только чтобы набросать типовой UI.

Например. Что то мне не приходит ни одной либы в голову для UI написанной на ЯП моложе Python

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

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

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

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

«Выразительность кода» - понятие субьективное, как и др. претензии к синтаксическим мелочам. А что до того, откуда появляются Питон-программисты, - будь то хорошие или плохие, - не всё ли равно. Задачи свои решает - и это главное.

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

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

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

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

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