Java и традиционные языки: производительность программиста
Результаты интересные, конечно.
Только не Java vs Pascal и уж тем более не Java vs Python и Java vs Objective Caml.
Очевидно, что разницы между собственно языками в данной задаче скорее нет, чем есть.
Зато более чем видна разница между программистами.
Пусть задача непоказательная изначально, пусть в программах больше половины - вынужденный код.
И тем не менее - есть и стандартные функционально-/декларативно- рекурсивные решения, и зубодробильные императивные драконы с - ух, как! - попытками оптимизации.
Подвиг 1984-1987 годов Tom DeMarco with Tim Lister ("Software Development: State of the Art vs State of the Practice") повторить не удалось, но разлёт - налицо.
Сразу вспоминается
vitaly_b и Движок За Миллион (tm).
Страшно.
Результаты интересные, конечно.
Только не Java vs Pascal и уж тем более не Java vs Python и Java vs Objective Caml.
Очевидно, что разницы между собственно языками в данной задаче скорее нет, чем есть.
Зато более чем видна разница между программистами.
Пусть задача непоказательная изначально, пусть в программах больше половины - вынужденный код.
И тем не менее - есть и стандартные функционально-/декларативно- рекурсивные решения, и зубодробильные императивные драконы с - ух, как! - попытками оптимизации.
Подвиг 1984-1987 годов Tom DeMarco with Tim Lister ("Software Development: State of the Art vs State of the Practice") повторить не удалось, но разлёт - налицо.
Сразу вспоминается
Страшно.
no subject
Date: May. 8th, 2006 16:49 (UTC)Обычный алгоритм был откинут из-за дороговизны *, но в сознании было что-то про оптимизацию регэкспов через битовый след, так что было сделано именно так, не более тридцати двух *, но без повышения вычислительной сложности. Около 30 грязных строк на C++ (на экран помещалось всё), часа 3 с отладкой, наверное... Вот только что забавно - алгоритм писался на C++, а в голове была какая-то страшная смесь функциональщины и ассемблера.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: May. 8th, 2006 17:23 (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:Индусы, блин.
Date: May. 8th, 2006 17:25 (UTC)bool match(const char *word, char const *pattern) { if (!*pattern) return !*word; if (*word == *pattern || *pattern == '?') return match(word+1, pattern+1); if (*pattern != '*') return false; while (*word) if (match(word++, pattern+1)) return true; return match(word, pattern+1); }Re: Индусы, блин.
From:Re: Индусы, блин.
From:Re: Индусы, блин.
From:no subject
Date: May. 9th, 2006 11:48 (UTC)Не сочтите меня снобом и занудой, но попробую сказануть своё мнение.
Во-первых, я дико несогласен с приведённой в начале цитатой 'неизвестного'. А также возгласами аля про пушки и воробьёв. Поинт в том что OO-языки эффективны толко при активно переиспользовании кода и расширяемой в смысле OO и OCP архитектуры. Иначе, это как дрова бензопилой колоть. А построить аппликацию в таком 'правильном' ракурсе - это вам не кубики катать, этому учиться надо.
Во-вторых, в первом случае я вижу вполне себе нормально написанный класс решающий некоторую задачу, которой несколькими действиями можно абстрагировать от источника данных и сделать переиспользуемым. К тому же в безопасном рантайме типа жабы, я не имею труднопредсказуемых побочных эффетов. Во втором же, я вижу какой-то совершенно нечитаемый треш, и кроме как для посчитать количество строчек которое на него затрачено... он мало для чего подходит. Это как в анекдоте про машинистку: могу и 1000 занков в минуту, но такая лажа получается.
P.S.
Понравился вариант пушистого. Стильно и мощно ;)
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: