LINUX.ORG.RU
ФорумTalks

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

 ,


1

2

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

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

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

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

Что еще?

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

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

Написать библиотеку которая читает из БД данные по запросу и возвращает число записанное в БД.

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

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

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

И что она должна делать если числа нет?

PS: вы точно настоящий сварщик программист? Ибо я не вижу даже зачатков формального мышления.

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

Просто очень крупные компании с огромным штатом.

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

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

Моё последнее апи ещё кидало уведомление в хрень для диагностики, где ничего не терялось.

А ты либу писал для десктопного приложения где нет хрени для диагностики. Или у тебя был statsd а теперь у тебя zabbix

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

О! Кажется кто то начал думать.

fn try_division(dividend: i32, divisor: i32) {
    // `Option` values can be pattern matched, just like other enums
    match checked_division(dividend, divisor) {
        None => println!("{} / {} failed!", dividend, divisor),
        Some(quotient) => {
            println!("{} / {} = {}", dividend, divisor, quotient)
        },
    }
}

А таперь я тебе гарантирую, что 0 не будет и твоя программа без этой проверки стала 1) в 10 раз быстрее. 2) Короче.

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

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

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

Так ты определи или он есть или его нет. Это «пограничное состояние». Оно ВСЕГДА есть. Я предпочту эксепшн. Go продолжит работать. Что будет с раст я не знаю.

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

Так ты определи или он есть или его нет.

Если у нас поле NOT NULL, то проверять нечего.

Я предпочту эксепшн.

Откуда возьмётся исключение, если у нас null не может быть?

Go продолжит работать.

Нет.

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

Точнее сменилось окружение, а код написан ДРУГИМ человеком который уволился 10 лет назад (и исходников нет, это ведь Rust)

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

И тут про эффективность. Вспоминаем паскаль с доступом к массивам и C. Была такая контора HackersDesign Там чувак писал на паскале, потом транспилировал в С и продавал свой код. Зачем он его транспилировал подсказать?

С Го ты уже согласился. Про Раст - ты пишешь БИБЛИОТЕКУ ты не знаешь кто и где будет ее использовать. Может на верхнем уровне если вылетит эксепшн у программиста есть ЗАПАСНОЙ код?

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

И тут про эффективность.

Эффективность чего?

Может на верхнем уровне если вылетит эксепшн у программиста есть ЗАПАСНОЙ код?

Какая мне разница что там наверху. Ошибку я обработал - да. Всё.

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

Или это отправляется на помойку, или увольняешься. Это же ни в какие ворота.

Тю, а где же хакерский дух? Выпросить у начальства повышение ставки и если согласятся – заняться реверс-инжинирингом!

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

Софт незаменим. На разработку потребуется 10 лет. Такого овердохрена в небольших компаниях, а в курпных тоже есть. Примеры вы все знаете.

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

Ну на эксепшн тоже код try: это как if просто в стек кладут эксепшн. Но в некоторых местах ты и это не делаешь никаких try

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

А таперь я тебе гарантирую, что 0 не будет и твоя программа без этой проверки стала 1) в 10 раз быстрее. 2) Короче.

И Rust, наверное, обязательно предупредит тебя о том, что функция, которая никогда не возвращает None, почему-то проверяется на None. Разве нет? Прочитав это предупреждение (или даже ошибку компиляции) ты сможешь избавиться от проверки.

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

Ну как ты ее обработал? У тебя тупо математическая функция которая получает строки и вычисляет их. А где она будет использоваться в клиентском ПО, в Серверном ты не знаешь. Скажем вычисление спрэдов 'USD*SBR+100'... Вот что тебе делать если тут будет неверный символ.

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

Прочитав это предупреждение (или даже ошибку компиляции) ты сможешь избавиться от проверки.

И таких сообщений несколько сотен тысяч. В итоге чуваки «гасят» их в линтере. Это всегда так было. В Java так. Легче сделать try except: pass на момент разработки (и забыть)

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

В итоге чуваки «гасят» их в линтере

В расте их нельзя пропустить.

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

Скажем вычисление спрэдов ‘USD*SBR+100’… Вот что тебе делать если тут будет неверный символ.

Так здесь уже будет нужен кастомный парсер подобных выражений с валидацией, а не тупое преобразование str в int32.

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

Да и там есть свой GIL, но о нем предпочитают умалчивать

А зачем он там, если нет разделяемых ресурсов, а все мессаджи между потоками иммутабельны? И как телеф. станция переживет GIL, когда от нее требуют 99,999% доступность?

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

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

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

На разработку потребуется 10 лет

И нет исходников? Даладна, не бывает такого.

Знаю только по мелочам, и они просто переписываются, если народ не совсем конченый.

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

Чем он вам поможет? Что вы будете делать получив None

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

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

Да никак ты не обработаешь. У тебя есть таск в джира. И там считают ТВОЕ среднее время. На создание типов ты потратишь его и просто используешь ANY. А в компании DBI твою эффективность будут считать по количеству строк которые ты написал.

Это жизнь. Поэтому я хочу видеть КАК ты обратишься с «Дайте нормальное ТЗ». И как 1 раз спроектированная либа начнет использоваться за пределами ТЗ которое давали тому кто ее писал. И тут ты поймешь ПОЧЕМУ все так обрадовались REPL и динамическим типам. Кто там про рынок рассказывал?

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

Преимуществом WEB были ТЕКСТОВЫЕ протоколы, а сейчас Дурова все хвалят за бинарные (жду как вы будете разбираться в witeshark)

В 90-х были изобретены Shared Library и язык который их не умеет использовать объявлен убогим. Их код в памяти занимает 1 сегмент памяти и шарится между ВСЕМИ прогами кто их использует. И появился MSVCRT.DLL и GLIBC.SO. Пришел 2005 год и Роб Пайк объявил, что преимуществом GO является, тот факт что он компилируется в 1 бинарь. Ну собственно на компьютерах (и телефонах) Apple так делали давно и если вы в своей софтине используете SQLITE, то у вас будет ЕЩЕ 1 копия SQLITE.... Прям http://lurklurk.com/Фатальный_недостаток

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

dem ★★
()

1) 2 и 3 версии питона
2) memory leaks. Несмотря на то что дела обстоят там получше чем у php, всё равно они есть
3) свой, «особенный» взляд на ООП
4) иногда на питонах пишут таких жиробасин, что поражаешься как это вообще работает. Почему-то большие проекты на perl (который стар как говно мамонта) не создают впечатление неповоротливых монстров

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