Компания Coverity, развивающая инструментарий для автоматического анализа кода на предмет наличия проблем безопасности и ошибок, опубликовала (http://www.coverity.com/company/press-releases/read/coverity...) (PDF (http://wpcme.coverity.com/wp-content/uploads/2013-Coverity-S...), 470 Кб) результаты оценки качества интерпретатора языка Python 3.3.2. Исследование показало, что реализация Python демонстрируют наименьший уровень дефектов по сравнению с другими проприетарными и открытыми проектами, что позволяет рассматривать Python как новый эталон качества.
Если для ранее проанализированных открытых проектов зафиксирован (http://www.opennet.me/opennews/art.shtml?num=36877) средний уровень дефектов в 0.69 ошибок на 1000 строк кода, то для кода Python уровень дефектов составил всего 0.005. Если учесть, что требования промышленных стандартов качества допускают наличие 1 ошибки на 1000 строк кода, то качество кода Python в 200 раз выше данных требований.
В процессе проведения исследования было проанализировано около 396 тысяч строк кода Python 3.3.2. В итоге было выявлено 278 новых дефектов, из которых 181 уже исправлен разработчиками Python (в сумме, с 2006 года в Python выявлено 996 ошибок, исправлено - 860). При рассмотрении других проектов размером от 100 до 500 тысяч строк кода, средний показатель дефектов для открытых разработок составляет 0.60, а для проприетарных - 0.66.
Система Coverity Scan была создана в 2006 году по инициативе Министерства национальной безопасности США для обеспечения и усиления безопасности информационной инфраструктуры Соединённых Штатов, в которой используются различные Open Source проекты. В настоящее время программа тестирования Coverity Scan (http://scan.coverity.com/) охватывает около 300 (http://scan.coverity.com/all-projects.html) открытых проектов, суммарный размер кода которых превышает 68 млн строк. При автоматическом анализе данного кода было выявлено 47 тысяч дефектов из которых уже исправлено 21 тысяча.URL: http://www.coverity.com/company/press-releases/read/coverity...
Новость: http://www.opennet.me/opennews/art.shtml?num=37822
Porsche Cayenne тоже хорошая машина, только водят дебилы! :)---
Вы вот мне другое скажите, кто нить пытался зарегать свой проект у этих Коверити,
и они присылали свой сканер, и вообще отвечали? Мне только выслали их сканер для
подсчёта строк. Результаты им отправил и всё, на этом тишина.
Сходи сюда и посмотри как оно правильно пишется по-немецки:
http://de.wikipedia.org/wiki/PorscheГде вас только берут знатоков ?
Самое время про Си вспомнить)))
Интерпретатор языка Python написан на Си! =)
Если только это не PyPy.
Ты кого Пупу назвал?!! :-Ж
> Ты кого Пупу назвал?!! :-ЖЕщё один интерпретатор языка Питон же. -_-
Написанный не на Си.
> Ещё один интерпретатор языка Питон же. -_-
> Написанный не на Си.Это круто, но coverity не про него...
> Это круто, но coverity не про него...Ну просто интерпретаторов питона более одного, а он сказал так, будто существует лишь один.
Да, мне делать больше нечего было, кроме как придраться к формулировке. -_-
> Если только это не PyPy.А про него и его качество кода coverity ничего не говорили, btw.
Вспомнить, на чем написан интепретатор языка си?!// ну если упомянуть, во что превращается Си после компиляции, то на машинном коде написан, причем впилен прямо в процессор. Впечатляет?
> белки, жиры, углеводы, вода и там и там есть! Впечатляет?"А бывает так, что даже целый дяденька - г@вно!"
> Самое время про Си вспомнить)))Неправильно ! Эдаким-то инструментом теперь самое время "Жабку" пощупать, хотя бы открытую её ипостась - OpenJDK. Кстати, где Изя...
Отправлял им на тестирование игру Supertuxkart, причем первый раз с их утилитой не до конца разобрался, поэтому помимо самой игры были также проверены irrlicht и libbullet, которые лежат у stk в транке. :)Один раз была проблема с доступом к своему проекту на сайте, написал им на почту, ответили довольно быстро.
Пойду еще раз попробую.
> Porsche Cayenne тоже хорошая машина, только водят дeбилы! :)Ну вот, пришел Павлин и одной фразой отразил всю суть...
Вы явно не ездили на нём)
от того что он не ездил машина хуже не стала
Что за бред. Судя по описанию, это исследование, разве что, показывает что их софт в питоне ошибки плохо ловит (в 200 раз хуже чем в других языках)
> Что за бред. Судя по описанию, это исследованиеПрочти двадцать раз, на девятнадцатый должен дойти смысл новости. :)
А, пардон, речь шла о качестве исходника интерпретатора питона. Спс.
> А, пардон, речь шла о качестве исходника интерпретатора питона. Спс.:)
Кто ему тут минусов наставил, ну ошибся, ну бывает. Чо сразу минусовать?!
> Кто ему тут минусов наставил, ну ошибся, ну бывает. Чо сразу минусовать?!Для активации головного мозга :).
К интерпретатору и требования другие, т к любой баг в нем множится тысячи раз и может проявиться во всех проектах на питоне, даже если сам питонокод идеален.
по количеству кода - питон лидирует, это да )
с пыхпы и жабоскриптом напару -)
но врятли это - можно записать в плюс.
даже единственный.
увы и ах.
nginx тоже пользуется их услугами: http://hg.nginx.org/nginx/log?rev=coverity
Проверьте лучше вот этот "язык":http://www.opennet.me/opennews/art.shtml?num=33619
с его киллер-фичами, указанными в вышеупомянутой статье.
я проверил. всё в порядке
> я проверил. всё в порядкеСпасибо.
> я проверил. всё в порядкеЖалко что вы не Coverity :).
А чем код сканера тестировали, в нем сколько ошибок?
Питоном тестировали, питон себя не сдаст
занятно - це, выходит, язык ошибки делает или не делает, а программист для компа - просто генератор сигналов с клавы и манипулятора типа "мышь"?
> занятно - це, выходит, язык ошибки делает или не делает, а программист
> для компа - просто генератор сигналов с клавы и манипулятора типа
> "мышь"?Да не переживайте Вы так, когда нибудь напишут и программку для проверки кода программиста ;)
А новость Вы невнимательно читали - речь идет об "интертрепаторе", а не об языке как таковом.
Кроме того, не забывайте, что программа проверяет только формальное соответствие кода некоему набору правил и никак не может проверить правильность логики работы программы - это уже на совести программистов. Так что не переживайте, для "просто генератора сигналов с клавы и манипулятора типа «мышь»" работа тоже найдется ;)
> Кроме того, не забывайте, что программа проверяет только формальное соответствие кода некоему
> набору правил и никак не может проверить правильность логики работы программыМежду прочим, программы для проверки правильности логики работы таки существуют. Интересно, насколько дольше профессия кодера переживёт профессию того же шофёра. (Нет, я не собираюсь поднимать здесь срач на тему strong AI vs. weak AI.)
> Между прочим, программы для проверки правильности логики работы таки существуют.скайнет, ты?
> скайнет, ты?Я не призываю к стерилизации планеты.
>> скайнет, ты?
> Я не призываю к стерилизации планеты.а жаль.
Жалеть бесполезно, лучше в средства выведения вкладываться. Космоса на всех хватит.
> Жалеть бесполезно, лучше в средства выведения вкладываться. Космоса на всех хватит.а может лучше потратить средства на поднятие IQ?
Новость конечно не может не радовать, но я бы обрадовался куда больше, если бы в новости было написано "Python-сообщество лидирует по уровню качества кода"!
Могу еще сильнее омрачить радость. На самом деле новость о том, что создатели интерпретатора Python плотно сотрудничают с создателями сканера и фиксят или пишут подсказки сканеру для почти всех указанных ошибок. Ну или по-другому, не о том, что в интерпретаторе нашли мало ошибок, а о том, что найденные ошибки были оперативно пофиксены или описаны как фичи.
А вот например те, кто делают perl, этим сканером не особо заинтересовались, ибо с одной стороны слишком много было ложных срабатываний, с другой он не видит большинства реальных ошибок.Ну и для сравнения. На 2006 год, когда с этим сканером подкатили к perl, в нем было найдено всего 89 ошибок на 485,001 строк кода. А вот только в 2012 году в python было найдено 213 новых ошибок на 392,773 строк кода. Но зато можно аккуратно об этом промолчать(не все же заглянут в pdf), а посчитать только соотношение после фиксов. Кстати, в том же 2006 году лидером по этому замечательному показателю была samba, там пофиксили вообще все(216 на 314,971) найденные ошибки, то есть получили абсолютный результат в 0 дефектов на 1000 строк кода.
В целом это похоже на правду. Хотя сам интерпретатор Python и правда достаточно надёжен, делать выводы о том, что он лидер в области качества кода, я бы по статистике Coverity не стал. Python мне друг, но истина дороже. :-)Правда, надо понимать, что в 2006 году и сейчас Coverity -- два совершенно разных инструмента, так что впрямую сравнивать число ошибок на 1000 строк семь лет назад и сейчас тоже не очень корректно. Они развиваются и находят со временем гораздо больше проблем.
С Coverity я плотно экспериментировал на коде нескольких больших проектов нашей фирмы (правда, на C++, а не на C), в итоге нашёл его довольно полезным, но не стоящим своих денег. В тех командах, где пишут прилично, он мало что дал, а в тех, где пишут неприлично, последующий опыт показал, что хорошо бы для начала исчерпать возможности бесплатного cppcheck и внедрить кодревью (потому что когда молодые сотрудники начинают жечь в коде, они часто жгут таким образом, что анализатор доволен, а вот по смыслу...). При этом по общению с представителями Coverity было достаточно очевидно, что дела у них в финансовом отношении были неважные: очень уж цеплялись.
> если бы в новости было написано «Python-сообщество лидирует по уровню качества
> кода"!фантастика на другом этаже.
Ага, код порос бесполезными "фиксим вот здесь, чтобы ковёрити не ругалось". Плавали — знаем.
Ага. Судя по этому треду http://www.nntp.perl.org/group/perl.perl5.porters/2013/04/ms... , Perl разработчики пытались скормить исходник Coverity, но остановились, когда поняли что большую часть времени тратят на "исправление" исходников чтобы "исправить" ложные срабатывания coverity.
Это как раз нормально, как ни странно. Для того, чтобы начать получать серьёзные плюсы от анализаторов кода, нередко надо очень сильно пройтись по коду, чтобы убрать ложные срабатывания, за которыми плохо видно реальные проблемы. Издержки инструмента.Тем не менее, некоторая польза от Coverity-подобных вещей бывает. Другой вопрос, что она сильно преувеличивается рекламой. И зачастую подобные инструменты слишком дороги для того, чтобы, перелопатив гору кода ради ложных срабатываний и потратив кучу времени, обнаружить единичные реальные проблемы.
на питон успело подсесть гораздо больше разработчиков, чем например на тот же перл или еще какой другой скриптовый язык
> на питон успело подсесть гораздо больше разработчиков, чем например на тот же
> перл или еще какой другой скриптовый языкесть мнение, что бидонеры просто кричат громче всех. как будто им бидоном тестикулы прищемило.
>> на питон успело подсесть гораздо больше разработчиков, чем например на тот же
>> перл или еще какой другой скриптовый язык
> есть мнение, что бидонеры просто кричат громче всех. как будто им бидоном
> тестикулы прищемило.Кричат пыхеры. И не будто, а именно поэтому. С пыхом без мата и нервных эмоций нельзя.
> Кричат пыхеры. И не будто, а именно поэтому. С пыхом без мата
> и нервных эмоций нельзя.заметь: в новости про пых с воплями прибегают бидонеры. и даже в новости не про пых всё равно с воплями прибегают бидонеры. а пыхеры не прибегают, им оно не надо.
> заметь: в новости про пых с воплями прибегают бидонеры. и даже в
> новости не про пых всё равно с воплями прибегают бидонеры. а
> пыхеры не прибегают, им оно не надо.Тут, как и везде, пыхер первый начал. Только его уже удалили.
У пыхеров нет ничего, кроме провокаций: ни аргументов, ни фактов, ни языка. :)
А питон будет "первым языком для начинающего в вебе". Потому что это самый разумный выбор. Вот только у пыхеров истерики кончатся, да материалу будет больше написано (в том числе мною), и будет постепенно двигаться в этом направлении... а там - пусть пыхеры хоть с утра до вечера плачут.
> А питон будет «первым языком для начинающего в вебе».именно потому, что по качеству он такой же, как и пых. на гвидобейсик переходят пыхеры, которым стало стыдно заниматься пыхом на людях. но тут дело такое: человека можно вывести из пыха, но пых из человека — нет. поэтому выбор очевиден, да. хотя руби — выбор намного более разумный.
>> А питон будет «первым языком для начинающего в вебе».
> именно потому, что по качеству он такой же, как и пых. на
> гвидобейсик переходят пыхеры, которым стало стыдно заниматься пыхом на людях.На гвидобейсик пыхеры не переходят. Ибо он мешает им заниматься любимым делом - лабать. Я пишу 4 строчки, а потом думаю, как это сократить до одной, чтобы было понятнее, логичнее и читаемее. Пыхер за это время напишет 500. И адаптирует ещё 300, чтобы работало с теми 500. При этом ни разу не задумываясь. Он не будет СОЗЕРЦАТЬ или что-то хотеть сделать правильно - это не имеет никакого смысла и никакой ценности.
> но тут дело такое: человека можно вывести из пыха, но пых из
> человека — нет. поэтому выбор очевиден, да. хотя руби — выбор
> намного более разумный.В ruby есть три достоинства и 17 недостатков. Для начинающих и любителей. Да и говорят, что рельсы уже в решето пыхерское превратились, там не осталось логичности, нет того духа pep-20...
> Я пишу 4 строчки, а потом думаюа обычно принято делать наоборот.
>> Я пишу 4 строчки, а потом думаю
> а обычно принято делать наоборот.Это если можно представить всё. Но когда непонятно, как работает - проще проверить. Я не обязательно прямо в код пишу. Я могу в python или ipython писать, наимпортировав перед этим модулей.
Чтобы двигаться итерациями от какого-то решения к идеальному решению, сначала нужно какое-то решение.
Но у пыхеров и этого нет. :)
>Но когда непонятно, как работает…обычно читают документацию. то ли у вас там документация на санскрите, то ли просто очень хреновая.
>>Но когда непонятно, как работает
> …обычно читают документацию. то ли у вас там документация на санскрите, то
> ли просто очень хреновая.В документации есть алгоритмы? :)
Если бы логика составлялась сама - её не нужно было бы писать. А раз нужно писать - значит нужно и смотреть, что ты написал, как работает, почему, самый ли это эффективный путь.
Нет, я не спорю, конечно круто склониться над пустой шахматной доской и в голове прокрутить все 52 хода, со всеми вариантами. Но гораздо проще двигать фигуры.
>>>Но когда непонятно, как работает
>> …обычно читают документацию. то ли у вас там документация на санскрите, то
>> ли просто очень хреновая.
> В документации есть алгоритмы? :)Алгоритмы - это нечто вечное, о чём узнают не из документации. И кроме того, большинство алгоритмов уже есть в готовых библиотеках. Или вы думаете, что уметь программировать двухсвязные списки и хэш-массивы - это до сих пор очень нужный для программиста навык? А вот документация в питоне действительно очень куцая.
> Если бы логика составлялась сама - её не нужно было бы писать.
Очень много логики есть в готовых библиотеках. Её уже не нужно писать. Нужно уметь читать документацию. А документация в питоне куцая.
> А раз нужно писать - значит нужно и смотреть, что ты
> написал, как работает, почему, самый ли это эффективный путь.Нужно не писать и смотреть, нужно знать порядки сложности алгоритмов. И уметь выбирать нужный алгоритм в уме, ещё до написания программы. А ещё лучше - выбирать готовую библиотеку, почитав документацию.
> Нет, я не спорю, конечно круто склониться над пустой шахматной доской и
> в голове прокрутить все 52 хода, со всеми вариантами. Но гораздо
> проще двигать фигуры.Не нужно ни в голове крутить, ни на доске двигать. За вас уже подумали такие умы, что вам остаётся только познакомиться с их наработками. Новые алгоритмы нынче появляются ооооочень редко, не думайте что вы делаете нечто такое, что ещё никто до вас не делал. Сейчас больше усилий программистов уходит на погоню за новыми технологиями. Питонисты - одни из таких людей, которые эту гонку создают, заставляя при каждом выходе новой версии питона переписывать людей тонны уже готового отлаженного работающего кода. Нет, спасибо, уж лучше Perl.
> Очень много логики есть в готовых библиотеках. Её уже не нужно писать.
> Нужно уметь читать документацию. А документация в питоне куцая.Очень смешно.
ps. Кроме dir() и help(), которая, особенно в том же ipython-notebook, помогает, в python есть и другая документация. Нет, не pydoc, хотя он тоже реально может помочь. :) Имя ей - /usr/share/doc/python-X.X/html , ну или в вебе.
Вот в пыхе документация - всем документациям документация. Когда делал обзор, пытался достучаться до примеров функций - хрен там, три строки текста и меню на 20 глав, по названиям из которых хрен до чего догадаешься.
А в python документация самодостаточна. Можно смело брать её на необитаемый остров, и там писать что-то нужное.
> Нужно не писать и смотреть, нужно знать порядки сложности алгоритмов. И уметь
> выбирать нужный алгоритм в уме, ещё до написания программы. А ещё
> лучше - выбирать готовую библиотеку, почитав документацию.Напыщенный бред. Алгоритмы - это хорошо, потому что они алгоритмы... Пустая глубокая мысль.
Для веба, да и для другого юзерского ПО главное - это людские алгоритмы. СДЕЛАТЬ ЛЮДЯМ УДОБНО. У меня 90% времени уходит на то, чтобы тасовать кнопочки, элементы интерфейса и прочее, чтобы прежде всего было понятно, что это вообще, и впервые увидевший понял, как этим пользоваться, и во-вторых, чтобы это было логично, чтобы человек, пользуясь вещью, не задумывался каждый раз, где искать то и то, а оно у него было под рукой.
(пошла телекартинка) "раньше, когда я был пыхером, я не задумывался о логичности, но поняв python, я понял проблемы простых людей, стал приветливее, добрее, И ПЕРЕСТАЛ ПЕРЕГРУЖАТЬ ИХ НАХРЕН ИМ НЕ НУЖНОЙ ИНФОРМАЦИЕЙ, КОТОРАЯ ВЫГЛЯДИТ КРУТО НО МЕШАЕТ ПОГОЛОВНО ВСЕМ"
И для удобства разработчика нужно планировать так, чтобы оперативные изменения и вглубь и вширь давались лёгким потком и кровькой. Не "это не так удобно, но я это уже написал, и переписывать эту хрень - лень", а "это был не самый удачный вариант, но ЛЁЁЁ-ЁГКИМ ДВИЖЕЕЕ-ЕНИЕМ руки мы превращаем его в другой".
Код - это набор компромиссов. И иногда в python коде возникает кусок, который выглядит неэлегантно. И мешает. И будет мешать. И лучше подумать, как его превратить из куска, решающего проблему, в элегантный и логичный кусок, решающий проблему, чем думать - работает и ладно, и так сойдёт. Сойдёт до поры до времени.
Но это не значит, что нужно заниматься идеальностю. Заниматься нужно не кодом, заниматься нужно не понятностью, заниматься нужно развитием. Время должно использоваться и на то, и на другое, а не на выбор "или то, или другое". И время не бесконечное, оттуда и ошибки, оттуда и проблемные места. Некоторые можно спрятать с глаз долой в модуль до тех пор, пока руки не дойдут. А некоторые, особенно для паблик-кода, по которому дети будут учиться, лучше переписать. Если этот код никто, кроме тебя не увидит - тут другое дело, но для открытого кода такого допускать нельзя. Лучше подумать над написанным.
> Не нужно ни в голове крутить, ни на доске двигать. За вас
> уже подумали такие умы, что вам остаётся только познакомиться с их
> наработками. Новые алгоритмы нынче появляются ооооочень редко, не думайте что вы
> делаете нечто такое, что ещё никто до вас не делал. Сейчас
> больше усилий программистов уходит на погоню за новыми технологиями. Питонисты -
> одни из таких людей, которые эту гонку создают, заставляя при каждом
> выходе новой версии питона переписывать людей тонны уже готового отлаженного работающего
> кода. Нет, спасибо, уж лучше Perl.Поздравляю тебя, Шарик. Ты балбес. Эти слова не связаны ни смыслом, ни реальностью, ни фактами.
>> Очень много логики есть в готовых библиотеках. Её уже не нужно писать.
>> Нужно уметь читать документацию. А документация в питоне куцая.
> Очень смешно.А вот я вам ради смеха подкину: http://blog.vnaum.com/2010/01/python-perl.html
ЧСХ, до сих пор ничего не изменилось.
> ps. Кроме dir() и help(), которая, особенно в том же ipython-notebook, помогает,
> в python есть и другая документация. Нет, не pydoc, хотя он
> тоже реально может помочь. :) Имя ей - /usr/share/doc/python-X.X/html , ну
> или в вебе.Почему не pydoc? Вы мне эти ваши локальные html файлы бросьте, некогда мне в них ковыряться, когда нужно найти как пользоваться тем же os.stat. Документация должна быть простой в использовании и полной, чтобы одной командой можно было открыть страницу по интересующему модулю/функции и найти исчерпывающую информацию.
> А в python документация самодостаточна. Можно смело брать её на необитаемый остров,
> и там писать что-то нужное.Хотел бы я посмотреть на вас на необитаемом острове с острой необходимостью найти документацию на os.stst.
>> Нужно не писать и смотреть, нужно знать порядки сложности алгоритмов. И уметь
>> выбирать нужный алгоритм в уме, ещё до написания программы. А ещё
>> лучше - выбирать готовую библиотеку, почитав документацию.
> Напыщенный бред. Алгоритмы - это хорошо, потому что они алгоритмы... Пустая глубокая
> мысль.Мысль вот о чём: алгоритмы - это хорошо, но не часто нужно. Библиотеки и документация - вот что действительно нужно. Можно уметь писать из головы сортировку методом деления пополам, но кому это нужно, если есть qsort?
Часто ли вы задумываетесь о том, какой алгоритм используется при проверке 'x' in a в Python? Нужно ли вам знать детали этого алгоритма на уровне "этот алгоритм обладает сложностью порядка" или детали этого алгоритма на уровне его реализации? Мне лично достаточно знать, что 'x' in a отработает значительно быстрее, если a - это dict, чем в том случае, если а - это list (O(ln n) против O(n)). Надеюсь это для вас не сюрприз, если вы действительно знаете алгоритмы.
> Для веба, да и для другого юзерского ПО главное - это людские
> алгоритмы."Людские алгоритмы" - это какое-то никому не известное словосочетание. О чём речь?
> СДЕЛАТЬ ЛЮДЯМ УДОБНО. У меня 90% времени уходит на то,
> чтобы тасовать кнопочки, элементы интерфейса и прочее, чтобы прежде всего было
> понятно, что это вообще, и впервые увидевший понял, как этим пользоваться,
> и во-вторых, чтобы это было логично, чтобы человек, пользуясь вещью, не
> задумывался каждый раз, где искать то и то, а оно у
> него было под рукой.Ага, значит это вы называете программированием? По-моему - это проектирование интерфейса, что к программированию имеет весьма отдалённое отношение.
> (пошла телекартинка) "раньше, когда я был пыхером, я не задумывался о логичности,
> но поняв python, я понял проблемы простых людей, стал приветливее, добрее,
> И ПЕРЕСТАЛ ПЕРЕГРУЖАТЬ ИХ НАХРЕН ИМ НЕ НУЖНОЙ ИНФОРМАЦИЕЙ, КОТОРАЯ ВЫГЛЯДИТ
> КРУТО НО МЕШАЕТ ПОГОЛОВНО ВСЕМ"Ага, и тогда вы записались в клуб анонимных пыхеров и там из вас сделали сектанта-питониста. Нет, вы просто себя почитайте - легко угадываются шаблонные фразы клубов анонимной взаимопомощи и фразы хаббардистов.
>[оверквотинг удален]
> сойдёт. Сойдёт до поры до времени.
> Но это не значит, что нужно заниматься идеальностю. Заниматься нужно не кодом,
> заниматься нужно не понятностью, заниматься нужно развитием. Время должно использоваться
> и на то, и на другое, а не на выбор "или
> то, или другое". И время не бесконечное, оттуда и ошибки, оттуда
> и проблемные места. Некоторые можно спрятать с глаз долой в модуль
> до тех пор, пока руки не дойдут. А некоторые, особенно для
> паблик-кода, по которому дети будут учиться, лучше переписать. Если этот код
> никто, кроме тебя не увидит - тут другое дело, но для
> открытого кода такого допускать нельзя. Лучше подумать над написанным.Капитан очевидность в ударе? Что, лекция хаббарда так подействовала?
>> Не нужно ни в голове крутить, ни на доске двигать. За вас
>> уже подумали такие умы, что вам остаётся только познакомиться с их
>> наработками. Новые алгоритмы нынче появляются ооооочень редко, не думайте что вы
>> делаете нечто такое, что ещё никто до вас не делал. Сейчас
>> больше усилий программистов уходит на погоню за новыми технологиями. Питонисты -
>> одни из таких людей, которые эту гонку создают, заставляя при каждом
>> выходе новой версии питона переписывать людей тонны уже готового отлаженного работающего
>> кода. Нет, спасибо, уж лучше Perl.
> Поздравляю тебя, Шарик. Ты балбес. Эти слова не связаны ни смыслом, ни
> реальностью, ни фактами.В опровержение моего утверждения можете привести какой-то новый уникальный алгоритм, который до вас не существовал?
Я в подтверждение своих слов могу сказать, что Perl 5 вышел уже ооочень давно и то, что валяется на CPAN'е так или иначе продолжает работать. Тот же модуль CGI и всё, что на нём было написано начиная с 90-х годов. А у Python'а каждые несколько лет - новая версия, так что каждый раз нужно ждать: "когда же выйдет новая Django под новый модный Python? А мой любимый Flask уже есть под Python 3?" Что, до этого что-то не работало? Какого хера ломают то, что и так уже работало? Много ли преимуществ дадут новые версии Python? Они стоят вообще того, чтобы из-за этого всё переделывать?
Это ты - Шарик и балбес. Это тебе сектанты-питонисты промыли мозги. Это ты не знаешь, за что пользователи платят деньги программистам. Это, похоже, что ты ничего кроме PHP и Python'а в жизни не видел и думаешь, что Perl - это такой PHP, только хуже.
>На гвидобейсик пыхеры не переходят. Ибо он мешает им заниматься любимым делом - лабать.
>Я пишу 4 строчки, а потом думаю, как это сократить до одной, чтобы было понятнее, логичнее и читаемее.А теперь скажите об этом вашему работодателю, пусть удивится, чем это вы на работе занимаетесь.
>Пыхер за это время напишет 500. И адаптирует ещё 300, чтобы работало с теми 500. При этом ни разу не задумываясь.
По такому принципу пишется ядро Linux. Сначала фичи, реально работающие фичи, а затем - рефакторинг и чистые идеи. Об успехах созерцателей от BSD, которые, пока думают над красивым кодом, просирают все полимеры, мы наслышаны.
>Он не будет СОЗЕРЦАТЬ или что-то хотеть сделать правильно - это не имеет никакого смысла и никакой ценности.
Зачастую с самого начала бывает не понятно, как правильно. Можно долго думать, но так и не прийти к результату. Проще подумать, но "думанием" сильно не увлекаться, а всё-таки переходить к "деланию". Когда будет сделано, можно остановиться, осмыслить сделанное, провести перепроектирование архитектуры и рефакторинг. Это очень распространённая ныне практика: Agile, XP, SCRUM.
Кстати часто оказываются фреймворки и готовые библиотеки. Большинство проблем уже давно решены, нужно только уметь использовать готовые решения. Ориентироваться в идеальном чужом коде сложнее, чем в неидеальном, но хорошо задокументированном и общепринятом.
Качественный код, на самом деле, заключается не в количестве строк, а в грамотно сделанной архитектуре. Если нет архитектуры - программа похожа на лужу с непонятной субстанцией, если есть архитектура - программа похожа на губку с непонятной субстанцией. Пахнет так же, но по крайней мере сохраняет форму. При желании субстанцию можно выжать, но форма останется. Если выжать субстанцию из лужи, не останется ни субстанции, ни формы.
>>На гвидобейсик пыхеры не переходят. Ибо он мешает им заниматься любимым делом - лабать.
>>Я пишу 4 строчки, а потом думаю, как это сократить до одной, чтобы было понятнее, логичнее и читаемее.
> А теперь скажите об этом вашему работодателю, пусть удивится, чем это вы
> на работе занимаетесь.Воооот. По такому принципу пых пишется. Увидели клёвую функцию, написали, придумали непохожее на другие название и непохожий на других формат аргументов, и пошли дальше, к новой версии, с новыми фичами из python/ruby/javascript. :)
А есть ещё такие вещи, как общая логика (применение должно быть очевидным и не создавать неудобств с подводными камнями), как совместимость с уже существующими данными, как совместимость с уже написанными данными.
Вот показательный пример: http://bolknote.ru/2012/11/21/~3796#04
И именно эти вещи нужно учитывать при разработке. И когда нужно приделать то, что логично приделать, пыхер пишет сравнимую по размеру вещь, и пытается скрестить обе, а тот, кто всё продумал - пишет одну строку, которая решает проблему.Вот пример: реальный дифф, когда нужно добавить неучтённую функцию - ввод в raw html. Это не "ключевые изменения", это ВООБЩЕ ВСЕ изменения, которые произошли с проектом, и он был перезапулен.
- j.ndb[eid].update(title=rq.title,text=rq.text)
+ j.ndb[eid].update(title=rq.title,text=rq.text,raw=rq.raw)
+ <p><input type="checkbox" name="raw" {{! 'checked="checked"' if frm.raw else ''}} /> raw html</p>
+%if n.raw:
+ {{! n.text }}
+%else:
<p>{{! rend(n.text) }}</p>
+%end
И такому методу предшествовала целая цепочка решений, каждое из которых не нарушало общей логики и целостности. Если бы в своё время было сделано иначе, пришлось бы делать гораздо больше изменений и получать гораздо больше проблем для будущего. Есть некий порог, после которого все изменения делаются небольшими мазками, и отлично вписываются в общую логику. А есть пыхеры, где изменения - это мучение, где изменение в одном месте может сломать что-то в другом, где поддержка - страшное слово, и где используют sql-базы-данных для того, для чего они вообще не предназначены. :)
а теперь покажи, как добавить вывод задом наперёд в EBCDIC. тоже одной строчкой?
>[оверквотинг удален]
> + j.ndb[eid].update(title=rq.title,text=rq.text,raw=rq.raw)
> + <p><input type="checkbox"
> name="raw" {{! 'checked="checked"' if frm.raw else ''}} /> raw html</p>
> +%if n.raw:
> + {{! n.text }}
> +%else:
> <p>{{! rend(n.text) }}</p>
> +%end
> И такому методу предшествовала целая цепочка решений, каждое из которых не нарушало
> общей логики и целостности.Я тут увидел одну тривиальщину а-ля "добавим в функцию (или метод) ещё один параметр" и спагетти-шаблон, в котором дизайн смешан с бизнес-логикой.
> Если бы в своё время было сделано
> иначе, пришлось бы делать гораздо больше изменений и получать гораздо больше
> проблем для будущего. Есть некий порог, после которого все изменения делаются
> небольшими мазками, и отлично вписываются в общую логику. А есть пыхеры,
> где изменения - это мучение, где изменение в одном месте может
> сломать что-то в другом, где поддержка - страшное слово, и где
> используют sql-базы-данных для того, для чего они вообще не предназначены. :)Ололо, девелоперы в ударе, спасайтесь кто может!
Пока из шаблона логику не уберёте, не дистанцируйте себя от пыхеров. Попробуйте с вашим божественным программерским дизайном просто добавить в приложение поддержку тем. Чувствую, что заебётесь в каждом шаблоне из каждой темы ручками править свои "{{! 'checked="checked"' if frm.raw else ''}}".
>> А питон будет «первым языком для начинающего в вебе».
> именно потому, что по качеству он такой же, как и пых. на
> гвидобейсик переходят пыхеры, которым стало стыдно заниматься пыхом на людях.я всегда поражаюсь, откуда люди берут основания для своих утверждений. Ты кто такой, чтобы за всех говорить?
> тут дело такое: человека можно вывести из пыха, но пых из
> человека — нет.Пых - это очень хороший показатель того, как программист может справляться с экстремальными задачами. Поддержка (и написание качественного) пыхокода - это задача явно не для школоты, а для высококвалифицированного человека, который может держать в памяти сотни глюков и "фич", ориентироваться в абсолютно нелогичном АПИ и проявлять нестандартное мышление. Зачастую человек, сумевший самостоятельно освоить это убожество, сможет гораздо эффективнее решать любые задачи, чем окончивший какой-нибудь спецфакультет по специальности Си.
> хотя руби — выбор
> намного более разумный."Разумность" в данном случае - твоя необоснованная субъективная точка зрения.
Вообще, ты ещё ни разу не предоставил аргументов своим высказываниям. В связи с чем вывод такой: твой батхёрт - явно не от больших познаний.
>Кричат пыхеры. И не будто, а именно поэтому. С пыхом без мата и нервных эмоций нельзя.Судя по статистике из моего реального окружения, пыхеры очень стесняются того, что они пыхеры и потому молчат. Но делают очень много сложного и оно реально используется.
Питонистов знакомых больше всего, поэтому могу перечислить категории:
1. Неизвестно, что он там делает на питоне, но его и не слышно.
2. Неизвестно что делает, но много понтуется.
3. В прошлом пыхер, ныне питонист - делает один большой проект уже два года постоянно в стадии "уже почти готово, через месяц внедряем".
4. В прошлом пыхер, перловик и ныне питонист. В своё время много сделал как на пыхе, так и на перле. Ныне перманентно находится в стадии "созерцания", постоянно делает какую-то библиотеку, которая постоянно не готова.
5. В прошлом перловик, ныне питонист. На самом деле - отличный сетевой админ, который иногда подкостыливает на питоне. Реально работающего на питоне сделал больше, чем все предыдущие.Выводы. Больше всего делают скромные пыхеры. На втором месте - питонисты с опытом программирования на пыхе или перле. Почти ничего полезного не делают те, у кого питон - первый язык и те, которые ударились в питонячье "созерцательство".
Особенно необратимо, на мой взгляд, калечит мозги ранний опыт с Django.
> Судя по статистике из моего реального окружения, пыхеры очень стесняются того, что
> они пыхеры и потому молчат. Но делают очень много сложного и оно реально используется.Сложным его делают пыхеры. :) А что не понтуются - ну так in-place я могу и по шее заехать пыхеру, они при мне как мыши сидят. А вот в интернете - все свои комплексы начинают в народ пускать.
> Выводы. Больше всего делают скромные пыхеры.Поправка. Больше всего неподдерживаемого кода делают пыхеры. А потом другие пыхеры переписывают с нуля. У пыхеров - много иллюзии занятости, а для народного хозяйства - мало пользы.
> Почти ничего полезного не делают те, у кого питон - первый язык и те, которые ударились
> в питонячье "созерцательство".А вот это уже те люди, которые предали идеалы любительского программирования. Я не отрицаю, что знающие только python могут быть профессионалами (как и пыхеры), но, в отличие от пыхеров, запрещаю таким людям называться программистами. :) Сам я себя тоже программистом не считаю, несмотря на 9 лет на пыхе, почти 3 на python, и некоторые знания ещё на ворохе языков.
> Особенно необратимо, на мой взгляд, калечит мозги ранний опыт с Django.Терпеть не могу Django. Столько многословия.
>> Судя по статистике из моего реального окружения, пыхеры очень стесняются того, что
>> они пыхеры и потому молчат. Но делают очень много сложного и оно реально используется.
> Сложным его делают пыхеры. :) А что не понтуются - ну так
> in-place я могу и по шее заехать пыхеру, они при мне
> как мыши сидят.Да уж, зачем с дураком связываться.
> А вот в интернете - все свои комплексы
> начинают в народ пускать.
>> Выводы. Больше всего делают скромные пыхеры.
> Поправка. Больше всего неподдерживаемого кода делают пыхеры. А потом другие пыхеры переписывают
> с нуля. У пыхеров - много иллюзии занятости, а для народного
> хозяйства - мало пользы.Если используют фреймворки и ORM, то очень неплохо поддерживается и переписывать ничего не нужно. CodeIgniter, Doctrine.
Они молча делают что-то работающее, пока питонисты гнут пальцы. В крайнем случае и переписать за ними можно, но лишь из-за страсти к сферической чистоте кода и "православным" языкам и технологиям - нужно ли? Оно уже работает и приносит пользу. Не на питоне, может быть не очень красиво, но работает и поддерживается.
>> Почти ничего полезного не делают те, у кого питон - первый язык и те, которые ударились
>> в питонячье "созерцательство".
> А вот это уже те люди, которые предали идеалы любительского программирования. Я
> не отрицаю, что знающие только python могут быть профессионалами (как и
> пыхеры), но, в отличие от пыхеров, запрещаю таким людям называться программистами.
> :) Сам я себя тоже программистом не считаю, несмотря на 9
> лет на пыхе, почти 3 на python, и некоторые знания ещё
> на ворохе языков.Ну вот. По-моему это уже диагноз. 12 лет общего стажа на одних лишь PHP и Python при практически полном отсутствии опыта в других языках - это один из двух пунктов моего списка. 2 или 3.
>> Особенно необратимо, на мой взгляд, калечит мозги ранний опыт с Django.
> Терпеть не могу Django. Столько многословия.Не в многословии дело, а в том что люди получив инструмент лучше привычных считают его и вовсе лучшим, при том что таковым он на самом деле не является. Проще говоря - Django зашоривает. Как и Python, пожалуй.
> Кричат пыхеры. И не будто, а именно поэтому. С пыхом без мата
> и нервных эмоций нельзя.Пока что я вижу тут твои вопли в основном. Пыхеры выгодно отличаются от тебя хотя-бы тем что знают свое место и молчат в тряпочку, не корча из себя суперпро и не предлагая панацею которая спасает от поноса и золотухи одновременно. В результате поделки данных граждан даже как-то эксплуатировать возможно временами. А такие как ты - обычно генерят какой-то ушибленный кусок скриптошита, при взгляде на который возникает ощущение что это писалось дрессированным бабуином, который научился ставить пробелы правильно. На чем его познания и закончились.
>> Кричат пыхеры. И не будто, а именно поэтому. С пыхом без мата
>> и нервных эмоций нельзя.
> Пока что я вижу тут твои вопли в основном. Пыхеры выгодно отличаются
> от тебя хотя-бы тем что знают свое место и молчат в
> тряпочку, не корча из себя суперпро и не предлагая панацею которая
> спасает от поноса и золотухи одновременно. В результате поделки данных граждан
> даже как-то эксплуатировать возможно временами. А такие как ты - обычно
> генерят какой-то ушибленный кусок скриптошита, при взгляде на который возникает ощущение
> что это писалось дрессированным бабуином, который научился ставить пробелы правильно.
> На чем его познания и закончились.Пыхеры как раз кричат о себе. И понтов выше крыши. В отличие от меня.
Я вообще не говорю, что python панацея. python - это быстрый старт. у меня в заголовке большими буквами написано "любительское программирование". python - это прежде всего, старт для непрограммистов. а проблема прежде всего в том, что таких умных, как я, мало, а таких визгливых, как пыхеры, много, и они всунут ему свой пых. и в других случаях всунут ему свой пых. они все проблемы решают пыхом, потому что даже не представляют, что их можно решить намного проще и элегантнее.
От того, что научился ставить пробелы правильно, ничего не изменится, пыхер всё равно не начнёт писать по-питоновски. И от того, чтобы прочитать pep-20. pep-20 нужно проникнуться, а это довольно сложно, особенно, если голова забита пыхом или чем-то подобным - всё время тянет сделать по-старому, по привычке. И это самая большая ошибка и самая большая ловушка. Зато те, кто "проникнулся", легко понимают друг друга... в отличие от пыхеров, у которых каждый пишет, как пых на душу положит.
> а проблема прежде всего в
> том, что таких умных, как я, мало,Таких как ты - действительно мало. В скудоумии с тобой трудно соревноваться. А всё "минимализм, минимализм". Того гляди последние мозги потеряешь.
> а таких визгливых, как
> пыхеры, много,Один ты со своими 9 годами стажа на PHP чего стоишь. Уже вроде открещиваешься от PHP, а всё от старых привычек избавиться не можешь.
> и они всунут ему свой пых. и в других
> случаях всунут ему свой пых. они все проблемы решают пыхом, потому
> что даже не представляют, что их можно решить намного проще и
> элегантнее.Не надо проще и элегантнее. Надо дёшево и сердито. PHP как раз для таких случаев. Проще и элегантнее - это на Scheme или Smalltalk, только уж слишком далеко от суровой действительности.
> От того, что научился ставить пробелы правильно, ничего не изменится, пыхер всё
> равно не начнёт писать по-питоновски.Достаточно посмотреть на твой образец высокого стиля, где ты смешиваешь представление и логику в шаблоне.
> И от того, чтобы прочитать pep-20.
> pep-20 нужно проникнуться, а это довольно сложно, особенно, если голова забита
> пыхом или чем-то подобным - всё время тянет сделать по-старому, по
> привычке.Оно по тебе видно.
> И это самая большая ошибка и самая большая ловушка. Зато
> те, кто "проникнулся", легко понимают друг друга... в отличие от пыхеров,
> у которых каждый пишет, как пых на душу положит.Пусть расцветают сто цветов. Может быть они научатся чему-то большему, чем PHP и не остановятся на Python. Лучше постоянно подвергать сомнению, сравнивать и находить лучшее, не зашоривая себя никакими технологиями и инструментами. "Просветлился" Python'ом - можешь ставить на себе крест как на программисте.
активно использую в своей работе Valgrind, clang-checker, cppcheck, PVS-Studio...
> активно использую в своей работе Valgrind, clang-checker, cppcheck, PVS-Studio...маладец
>> В целом это похоже на правду. Хотя сам интерпретатор Python и правда достаточно надёжен, делать выводы о том, что он лидер в области качества кода, я бы по статистике Coverity не стал.сделать такой вывод можно легко и самому, без всяких авторитетов
у питона уникальная синтаксическая структура, которая еще на этапе написания бьет по рукам в случае ошибок
> у питона уникальная синтаксическая структура, которая еще на этапе написания бьет по
> рукам в случае ошибокСмотрю, в последнее время много битых развелось.
Может быть, уже пора табличку вешать? :)
> Смотрю, в последнее время много битых развелось.По тебе заметно. При том бьет оно судя по всему не только по рукам, но и мозги отшибает напрочь.
Может, стоит новость перечитать? Ну причём тут сам язык Python и его синтаксическая структура?
Этот язык - разумный компромисс между скоростью исполнения и лёгкостью восприятия чужого кода.
Он не без недостатков (могу судить только по версии 2.7.х, на тройку пока рановато ещё), но и плюсы перекрывают все мыслимые желания клиентов...
То что по сабжу - так это само собой разумеещееся, вытекаюжщее из идеологии - писать так (http://www.python.org/dev/peps/pep-0020/), чтобы было легко всему соприкасающемуся (живому и неживому).