Записки реликта - Ещё программистское [entries|archive|friends|userinfo]
Latimeria chalumnae

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Ещё программистское [Aug. 13th, 2008|12:55 am]
Previous Entry Add to Memories Tell A Friend Next Entry
LinkОставить комментарий

Comments:
[User Picture]
From:[info]uri
Date:August 13th, 2008 - 10:34 am
(Link)
С этим никто не спорит. Вопрос в усилиях, которые для этого нужно приложить.

Обратите внимание: я писал не о том, что на Перле нельзя писать поддерживаемые решения (это неправда, конечно), а о том, что наспех, "на коленке" сделанное на Перле решение обычно трудно поддерживать. Будете спорить?

Менее убедительная (и труднее проверяемая) часть моего утверждения — что для Питона это скорее не так. С одной стороны, сам мой пост был как раз попыткой поговорить о границах поддерживаемости наспех сляпанных питоновских программ. С другой, код на Питоне, написанный кое-как в два часа ночи полгода назад, гораздо проще понимать, чем написанный в аналогичных обстоятельствах код на C++, это проверенный факт. Кроме того, у [info]zmey с коллегами есть очень положительный опыт использования "быстро и грязно" написанной на Python/SimPy программы в имитационном моделировании: модель на SimPy собирались использовать как прототип для модели на C++/MPI, но в итоге все нужные результаты получили уже на прототипе, и код на C++ писать не стали вообще.
[User Picture]
From:[info]beshenov
Date:August 13th, 2008 - 10:39 am
(Link)
Ну, что планируется поддерживать, то и наспех не делается.
[User Picture]
From:[info]uri
Date:August 14th, 2008 - 12:11 am
(Link)
Давайте переформулируем это так: то, что делается наспех, обычно не планируется поддерживать. Но случаи, они, как известно, того… разные бывают.

Ежу понятно, что если у вас есть ТЗ, диаграмма классов в UML, блок-схемы всех нетривиальных алгоритмов и дофига времени, то более или менее пофигу, на чём писать. Из соображений производительности обычно оказывается, что лучше всего на C++. Но часто на разработку по waterfall model нет ни ресурсов, ни времени (не говоря уже о том, что сейчас многие считают, что сама waterfall model — ересь).

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

Так вот, в таких ситуациях, по моим наблюдениям, Питон показывает себя гораздо лучше любого другого известного мне популярного языка.
[User Picture]
From:[info]beshenov
Date:August 14th, 2008 - 07:01 am
(Link)
В свое время мне очень понравилась Java, как «дисциплинирующий язык».
В зависимости от ситуации, я бы вместо Qt4 использовал AWT/Swing.

Python для меня был уже не первым «новым и замечательным языком,
который стоит выучить», в этом плане «страшней» только Ruby :-)

Не про Python, но про любителей всё на нем переписывать:
http://lj.rossia.org/users/beshenov/35641.html
[User Picture]
From:[info]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).

Но под Лисп нет приличной библиотеки для рисования гуя, например. По крайней мере, я такой не знаю.