ТотКтоХужеПидораса: "Навальный в своем последнем заточение решил изучить Python."
Подробнее
уникальная методика
г Ш Курсы , фо РуЫтоп й Иг* и./ * США ' • /•■.
политика,политические новости, шутки и мемы,Навальный,программирование,python
Но все таки изучать по книге программирование без наличия рядом компьютера чтобы все на практике испытать это почти бессмысленное занятие, с таким же успехом можно взять и прочитать книгу по алгебре не решая задач.
Про память - нехуй писать глюкавый код, она и в плюсах течь будет.
Тормозной - относительно. В целом, конечно, он медленнее компилируемых, но с ними и сравнивать не надо (кроме явы, ява тоже интерпретируемый язык по сути).
Про умолчания - поясни пожалуйста, не совсем понял...
А, да, еще забыл про зоопарк несовместимых версий из-за которых в системе приходится держать три питона.
Он тормозной и прожорливый по сравнению с интепретируемыми языками, причем в разы.
Можно много бухтеть про "нехуй писать глюкавый код", но в мире что есть - то есть, и проекты на Питоне отличаются особой прожорливостью и неторопливостью, будь то системная утилита, десктопное приложение или фреймворк для веба.
Про несовместимость - согласен, хотя мажорные версии и не обязаны (но Ява например сразу закладывалась как обратно-совместимая, из-за этого есть вполне прикольные лулзы до сих пор, например Cloneable).
Я сам последние семь лет на питоне пишу, и поэтому могу сказать что дескать да, в питоне много всякой несусветной ереси, которая реально бесит. Но про глюкавость и прожорливость (особенно после появления "ленивых" map/filter/генераторов) - очень устаревший стереотип. К Яве, к слову, это тоже относится - у них уже давно все намного лучше.
И все же мне интересно что имелось ввиду под "умолчаниями" :) Расскажешь?
В java хорошо то, что со стороны платформы исполнения это байткод. Поэтому есть те же scala и kotlin(да и та же компилируемая в этот же байткод версия питона), причем вся эта радость может уживаться в одном проекте. Поэтому кто не хочет возиться с атавизмами java, просто пишет на той же скалке.
В Perl есть переменные $_ (строка, число, ссылка) и @_ (массив) являющиеся переменными по умолчанию с локальной областью видимости. Если функции требуется параметр, но он не указан - будет использоваться $_, если в foreach не указана переменная - будет использоваться $_. Результаты любого регулярного выражения всегда доступны через $1 ... $9:
Это позволяет писать конструкции типа
print while (); # вывести содержимое stdin на экран
for (@data) {
...(какой-то код)...
print "$1\n" if (/(\d{3,})/; # Если текущий элемент массива содержит не менее трех цифр подряд - вывести эти цифры
}
Я даю упрощенные примеры, потому что в чистом виде последний пример бы решался так:
print join("\n", grep(/^(\d{3,})$/) @data );
Функции могут возвращать как одно значение, так и несколько в зависимости от контекста вызова:
sub somename {
...
return ('result' => 666, 'error' => $error, 'data' => $data) if wantarray;
return 666;
}
нужен просто результат, пишешь: $res = somename();
нужны подробности: %res = somename; - получаешь типа словарь с ключами и значениями
Еще есть автоматическое создание ключей и вложенных ключей в словарях. К примеру, конструкция $dict{'somename'}++ не выдаст ошибки, если ключа 'somename' не существовало - она автоматически его создаст, присвоит ему undef, который опять же в силу умолчаний в численном контексте будет трактоваться как 0 (в строковом - как пустая строка). В Питоне тебе придется или проверить наличие ключа, или ловить через try/catch, или использовать костыль в виде defaultdict, который ограничен одним типом/значением. С вложенным словарями это тоже работает - $dict{'somename'}{'someothername'} = 5; автоматически создаст ключ 'somename' (в случае его отсутствия) и сделает его ссылкой на новый словарь в котором будет ключ 'someothername'.
Умолчания в функциях - название функции как бы помечается символом & (&name(param)), но это не обязательно.
И скобки не обязательны. Поэтому можно просто написать name param; Входящие переменные не ограничиваются (если это не указать специально) и складываются в массив-для-действий-по-умолчанию - @_
sub a {
return (shift) + 5;
}
print a 3; # полная форма print ( &a( 3 ) );
Результат: 8.
Как я уже написал ранее, умолчания - это и плюс, и минус. Опытному программисту они серьезно облегчают работу, сокращая и упрощая код - не надо обмазываться ифами, декларациями и вложенными функциями на каждом шагу, неопытного программиста озалупливают по полной и дают возможность запутать код до полной нечитаемости.
Сравнение операционной системы и государства.,Education,политика,Алексей Навальный,операционная система,государство,Требую освободить Алексея Навального!!! Граждане, не верьте пропаганде, не смотрите телевизор и не читайте "новостей". У нас в стране почти не осталось "не зачищенных" СМИ — везде яд
® Alexey Navalny О @navalny -14 ч. Я понял эту шутку! Не зря я занимаюсь Питоном. Я - юный программист! ,Ц? Ночь и Мщение @pianodrum... -19 ч. ошибки от ошибки от Python C++ • Q 171 11 159 ф 3 278 <
Физкек шсйу аг ооп9 Как мы и обещали разгромное расследование про 1Т-ШНИКОВ в России. С первых же дней проведения спецоперации так называемые "айтишники" щиманулись из страны, как тараканы в общаге, когда ночью включаешь свет. Мы разобрались в чем причина такого предательского поведения. Как ок
Минусы: тормозной, жрет памяти столько, что даже JAVA кодеры в ахуе, мало умолчаний, "оригинальный" (ну ладно, у Фортрана похожий) синтаксис.
Тормозной - относительно. В целом, конечно, он медленнее компилируемых, но с ними и сравнивать не надо (кроме явы, ява тоже интерпретируемый язык по сути).
Про умолчания - поясни пожалуйста, не совсем понял...
Он тормозной и прожорливый по сравнению с интепретируемыми языками, причем в разы.
Можно много бухтеть про "нехуй писать глюкавый код", но в мире что есть - то есть, и проекты на Питоне отличаются особой прожорливостью и неторопливостью, будь то системная утилита, десктопное приложение или фреймворк для веба.
Я сам последние семь лет на питоне пишу, и поэтому могу сказать что дескать да, в питоне много всякой несусветной ереси, которая реально бесит. Но про глюкавость и прожорливость (особенно после появления "ленивых" map/filter/генераторов) - очень устаревший стереотип. К Яве, к слову, это тоже относится - у них уже давно все намного лучше.
И все же мне интересно что имелось ввиду под "умолчаниями" :) Расскажешь?
Это позволяет писать конструкции типа
print while (); # вывести содержимое stdin на экран
for (@data) {
...(какой-то код)...
print "$1\n" if (/(\d{3,})/; # Если текущий элемент массива содержит не менее трех цифр подряд - вывести эти цифры
}
Я даю упрощенные примеры, потому что в чистом виде последний пример бы решался так:
print join("\n", grep(/^(\d{3,})$/) @data );
Функции могут возвращать как одно значение, так и несколько в зависимости от контекста вызова:
sub somename {
...
return ('result' => 666, 'error' => $error, 'data' => $data) if wantarray;
return 666;
}
нужен просто результат, пишешь: $res = somename();
нужны подробности: %res = somename; - получаешь типа словарь с ключами и значениями
Еще есть автоматическое создание ключей и вложенных ключей в словарях. К примеру, конструкция $dict{'somename'}++ не выдаст ошибки, если ключа 'somename' не существовало - она автоматически его создаст, присвоит ему undef, который опять же в силу умолчаний в численном контексте будет трактоваться как 0 (в строковом - как пустая строка). В Питоне тебе придется или проверить наличие ключа, или ловить через try/catch, или использовать костыль в виде defaultdict, который ограничен одним типом/значением. С вложенным словарями это тоже работает - $dict{'somename'}{'someothername'} = 5; автоматически создаст ключ 'somename' (в случае его отсутствия) и сделает его ссылкой на новый словарь в котором будет ключ 'someothername'.
Умолчания в функциях - название функции как бы помечается символом & (&name(param)), но это не обязательно.
И скобки не обязательны. Поэтому можно просто написать name param; Входящие переменные не ограничиваются (если это не указать специально) и складываются в массив-для-действий-по-умолчанию - @_
sub a {
return (shift) + 5;
}
print a 3; # полная форма print ( &a( 3 ) );
Результат: 8.
Как я уже написал ранее, умолчания - это и плюс, и минус. Опытному программисту они серьезно облегчают работу, сокращая и упрощая код - не надо обмазываться ифами, декларациями и вложенными функциями на каждом шагу, неопытного программиста озалупливают по полной и дают возможность запутать код до полной нечитаемости.