| Comments: |
Лично меня питон напрягает своим вайт-спейс синтаксисом, ну и все непонятки, которые ты озвучил тоже имеют место быть. Но, как известно, there is no silver bullet. Питону многое можно простить, если нет другого выбора. Если он есть, я бы питону предпочёл ruby, io или CommonLisp.
![[User Picture]](http://lj.rossia.org/userpic/952/915) | | From: | uri |
| Date: | August 13th, 2008 - 10:07 am |
|---|
| | | (Link) |
|
Я как раз тащусь от идеи сделать отступы элементом синтаксиса. На мой взгляд, это одна из причин хорошей читабельности питоновского кода.
При наличии неограниченного выбора я бы тоже, наверное, предпочёл Scheme или Erlang. Но ничего сопоставимого с Qt4 для них нет (на guile-gtk и guile-gnome я смотрел, это АдЪ).
и поддерживаемых (в отличие от того же Перла)
Можно прилично писать на Perl и с тем же успехом неприлично на Python.
![[User Picture]](http://lj.rossia.org/userpic/952/915) | | From: | uri |
| Date: | August 13th, 2008 - 10:34 am |
|---|
| | | (Link) |
|
С этим никто не спорит. Вопрос в усилиях, которые для этого нужно приложить. Обратите внимание: я писал не о том, что на Перле нельзя писать поддерживаемые решения (это неправда, конечно), а о том, что наспех, "на коленке" сделанное на Перле решение обычно трудно поддерживать. Будете спорить? Менее убедительная (и труднее проверяемая) часть моего утверждения — что для Питона это скорее не так. С одной стороны, сам мой пост был как раз попыткой поговорить о границах поддерживаемости наспех сляпанных питоновских программ. С другой, код на Питоне, написанный кое-как в два часа ночи полгода назад, гораздо проще понимать, чем написанный в аналогичных обстоятельствах код на C++, это проверенный факт. Кроме того, у zmey с коллегами есть очень положительный опыт использования "быстро и грязно" написанной на Python/SimPy программы в имитационном моделировании: модель на SimPy собирались использовать как прототип для модели на C++/MPI, но в итоге все нужные результаты получили уже на прототипе, и код на C++ писать не стали вообще.
Ну, что планируется поддерживать, то и наспех не делается.
![[User Picture]](http://lj.rossia.org/userpic/952/915) | | From: | uri |
| Date: | August 14th, 2008 - 12:11 am |
|---|
| | | (Link) |
|
Давайте переформулируем это так: то, что делается наспех, обычно не планируется поддерживать. Но случаи, они, как известно, того… разные бывают.
Ежу понятно, что если у вас есть ТЗ, диаграмма классов в UML, блок-схемы всех нетривиальных алгоритмов и дофига времени, то более или менее пофигу, на чём писать. Из соображений производительности обычно оказывается, что лучше всего на C++. Но часто на разработку по waterfall model нет ни ресурсов, ни времени (не говоря уже о том, что сейчас многие считают, что сама waterfall model — ересь).
Ну, представим себе, что вам нужно работающее решение, с крайним сроком сдачи, как обычно, вчера. Потом вы его пару раз допиливаете в том же режиме. Потом вы забываете об этом коде на полгода-год, а потом он вам нужен ещё раз, причём в виде, пригодном для дописывания и использования другими людьми. В нашей фирме такое происходит постоянно, например.
Так вот, в таких ситуациях, по моим наблюдениям, Питон показывает себя гораздо лучше любого другого известного мне популярного языка.
В свое время мне очень понравилась Java, как «дисциплинирующий язык». В зависимости от ситуации, я бы вместо Qt4 использовал AWT/Swing. Python для меня был уже не первым «новым и замечательным языком, который стоит выучить», в этом плане «страшней» только Ruby :-) Не про Python, но про любителей всё на нем переписывать: http://lj.rossia.org/users/beshenov/35641.html
![[User Picture]](http://lj.rossia.org/userpic/952/915) | | From: | uri |
| Date: | August 14th, 2008 - 09:56 am |
|---|
| | | (Link) |
|
В свое время мне очень понравилась Java, как «дисциплинирующий язык».
Дисциплинирующий — очень правильное слово. Когда надо силами двухсот индусов получить вменяемый код, другого выбора нет (С#, возможно, разве что). Но писать на Java быстро и одному невозможно: когда на каждый чих заводится новый класс, волей-неволей приходится сначала думать над архитектурой и пр. Иногда это раздражает.
В зависимости от ситуации, я бы вместо Qt4 использовал AWT/Swing.
Swing довольно похож на GUI-часть Qt4: тот же MVC, много чего ещё. Даже названия классов похожи. В общем, тоже ничего так библиотечка. Но с Java любая ошибка проектирования отливается в изрядный геморрой. На C++ тоже, но исходный пост как раз и был в том числе про средство обхода этих граблей: Python/PyQt4 для быстрого прототипирования, C++ для окончательной реализации. На удивление удобно.
Не про Python, но про любителей всё на нем переписывать
Ну, с Лиспом, по крайней мере в инкарнации Scheme (CL я не знаю и говорить о нём не возьмусь), Питон как раз сравнивать невыгодно: лисповский синтаксис, на самом деле, более читабельный (потому что более простой и последовательный), и Лисп более гибок, чем Питон. Питоновская lambda выгдядит пародией на схемную, call/cc в Питоне просто нет (есть, правда, yield, позволяющий реализовать часть фокусов с call/cc; кроме того, call/cc, кстати, есть в Ruby).
Но под Лисп нет приличной библиотеки для рисования гуя, например. По крайней мере, я такой не знаю. | |