суббота, 13 марта 2010 г.

Самый популярный != лучший

Не всегда самый популярная технология есть лучший выбор. Например, в мире Java самый популярный фреймворк для тестов был и есть JUnit. Но до четвертой версии JUnit'а c 2004 по 2006 год лучшим однозначно был другой фреймворк, а именно TestNG. Четвертый JUnit, кажется, догнал TestNG позаимствовав у него много идей, можно выразить это такой формулой: JUnit 4.x = TestNG + Junit 3.8 . TestNG как минимум не хуже JUnit, и я выбираю TestNG.

Какая опен сорс база данных является самой популярной ? Правильно, MySQL. Я никогда не буду использовать MySQL, только PostgreSQL. Мне не нужна база данных которая не может построить правильный план для запроса с subqueries.

Какая самая популярная система контроля версий ? Конечно, это Subversion. Я спрыгнул с Subversion на Mercurial в 2009 году и ни разу об этом не пожалел, надеюсь, что больше никогда не буду работать с Subversion.

Самый популярный continuous integration server это CruiseControl. Я не понимаю как это случилось, потому что Hudson намного лучше.

4 комментария:

Alimenkov Nikolay комментирует...

Ужас! Неокрепшие умы читают потом это и принимают за правду.

Во-первых, Hudson уже 2 года как в лидерах по использованию в мире. Пример опросника среди разработчиков можно найти тут (http://www.wakaleo.com/resources/polls) или поискав в гугле.

Во-вторых, у MySql и PostgreSQL совершенно разные области применения и сравнивать их без контекста это тоже самое, что сравнить яблоко и киви. Вроде оба фрукты. Кто круче? У PostgreSQL тоже есть море проблем и отсутствующего функционала. Так что не стоит быть категоричным.

В-третьих, сравнивать Subversion c распределенными системами контроля версий тоже глупо, потому что они появились не так давно. Если вы думаете, что большой компании с кучей старых проектов легко перейти на новую систему контроля версий, то вы очень глубоко заблуждаетесь. Да и поддержки такого же количества инструментов как для Subversion пока нет.

Теперь по поводу TestNG. Это гениальный проект, который сдвинул монополиста JUnit с точки замирания и заставил появиться новые фичи. Основная проблема с TestNG - это интеграция с другими инструментами для юнит-тестирования. Только этим обеспечена популярность JUnit, а вовсе не супер-функционалом. Хотя в версии 4.7 по сравнению с 3.8 изменилось все очень кардинально.

Sergey Grigoriev комментирует...

В мире Hudson может и лидер, но большинство моих знакомых кого не спроси используют CruiseControl. MySQL и PostgreSQL можно сравнивать по разным параметрам, но по каким-то MySQL лучше, по каким-то PostgreSQL, каждая отдельная оценка субьективна, но в если просуммировать все плюсы и и минусы, то PostgreSQL лучше для больших и сложных систем. А если система пока не сложная, то что вы будете делать потом, когда она вырастет настолько что мускль не будет справляться, как у меня на работе сейчас ? Если погуглить то можно найти примеры миграций с MySQL на PostgreSQL,а вот обратно почему-то никто не хочет.

Не могу согласиться что у баз разные области применения, они обе для тех у кого нет денег на Oracle (MS SQL Server, DB2), когда прибыль от проекта не позволяет купить нормальную базу данных. Postgresql и Mysql применяют для высоконагруженных систем(Skype - PostgreSQL, Wikipedia- MySQL), для веб сайтов, для корпоративных приложений.

Я думаю что можно и нужно сравнивать Subversion и Mercurial, обе являются cистемами контроля версий. Какая мне разница какая система появилась давно а какая недавно? Мне просто нужна лучшая система для девелоперов в нашей компании, чтобы люди работали с максимальной эффективностью, вот и все.
Год назад мы решили что надо уйти с CVS, и провели исследование в котором рассмотрели 4 кандидата: Subversion, Git, Mercurial и Bazaar. Победителем оказался Mercurial на котором сейчас и работаем. Перешли без особых проблем, сохранив историю с 2004 года, 45 000 файлов. Глупо не замечать трендов в индустрии.

Michael комментирует...

>>Глупо не замечать трендов в индустрии.
но так же не стоит следовать за каждым новым трендом

JUnit наверстал упущенное, сейчас смыла мигрировать не вижу. новый проект скорее всего начну тоже с JUnit

после PostgreSQL даже не хочется смотреть в сторону MySql.
но если уже используется MySql то хорошо подумаю, а стоит ли мигрировать

Subversion и Mercurial это принципиальные разные продукты

из Hudson и CruiseControl я выбираю TeamCity :)

Alimenkov Nikolay комментирует...

Я тоже уже давно и надолго остановил свой выбор на TeamCity. :)