![]() |
|
![]() ![]() ![]() |
|
setq |
|
|||
Unregistered |
собственно "религиозная война" по сабжу проходит в данный момент здесь.
предлагается выбрать два языка: один императивный и один функциональный, а также выбрать задачу и реализовать её на обоих языках, чтобы сравнить затем: * скорость разработки * производительность * читаемость и элегантность * ещё чего-нибудь |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Зачем ограничиваться двумя языками? Сколько найдется желающих реализовать тестовую задачу, столько и языков. Функциональный мир тоже довольно разнообразен. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: нет Всего: 538 |
Чтобы корректно сравнить данный параметр, надо вести разработку двумя командами разработчиков равными по уровню, и задание должно быть достаточно объемным на пол года год. А когда пишет один человек, да еще в свободное от работы/учебы время, сравнивать этот параметр нельзя. Да и уровень знания языка разный, что опять оказывает влияние. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
||||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Тот еще критерий... Краткость кода не всегда является однозначным преимуществом. Классический антипример — Perl. То есть нужен разумный баланс с понятностью и эффективностью. Правда, проблема с первым — весьма субъективный параметр ![]() Ну так как, никто еще не придумал сравнительных тестов? ![]() ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
||||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: нет Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
LSD
Методом экспертных оценок, гы ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
Одно из решений может оказаться громоздким, значит язык для этого не подходит.
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: нет Всего: 538 |
Где здесь в эксперты записывают? ![]()
А тогда какие цели преследуем? Очередные "религиозные войны"? Я понимаю, что полной объективности мы не получим, но попытаться стоит. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Объективно нам удастся сравнить только быстродействие: эффективность по времени и по памяти. Все остальные метрики субъективны. Можно конечно ещепосчитать число строк, число лексем, отношение времени, потраченного программистом к норме осадков в Зимбабве...
![]() Здесь и записывают ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
Что-то глухо как-то, а? Для начала, думаю, нужна задачка незатейливая...
|
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Ну хорошо, держите задачку, не знаю правда, насколько незатейливую
![]() Реализовать ассоциативный контейнер (map, dictionary) на базе AVL-деревьев. Поскольку все тестируемые языки, я так понимаю, либо поддерживают статический полиморфизм, либо динамически типизированы, контейнер должен быть универсален — пользователь должен иметь возможность задать тип ключа и значения и метод сравнения ключей. Обязательная функциональность: вставка и удаление элемента, проверка на наличие заданного ключа, перебор всех ключей по порядку. Посмотрим на объем реализации, оценим эффективность по времени и по памяти; заодно сравним mutable vs immutable структуры данных и насколько велик проигрыш последних. Объем кода около 100-300 строк. Чтобы реально что-то замерять, меньше не пойдет. Если хотите сначала просто прицениться к языкам, можно придумать что-нибудь попроще... Правда пока в голову ничего не идет. Не копировать же тесты с shootout ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
setq |
|
|||
Unregistered |
ТУПОЙ вопрос по теме можно?
![]() Какие именно языки у нас функциональные. Названия. |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Тебе все перечислять? ![]() Имеет место некоторая путаница. Есть языки чисто функциональные, т.е. без побочных эффектов, например, Haskell, Clean и... все остальные ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
Википедия все правильно написала по этому поводу и с Void я согласен. В третьих шарпах ведб тоже вводят, наконец, функциональные средства.
Например, Пролог так считается языком логического программирования, а там есть и императивность, и функциональность, и ООП и многое другое. |
|||
|
||||
ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
А правда то, что 90% прог написаны на С++?
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
Конечно, нет. Спасибо за флуд темы.
|
|||
|
||||
setq |
|
||||||||||||
Unregistered |
Выкладываю реализацию словарей на базе AVL деревьев на языке Hope.
На языке написаны примеры к книге "Функциональное программирование" Филда & Харрисона, так что я его немного знаю. Подкупило слово small ![]() Модуль с функциями для списков:
"Деревья":
Модуль с типом Association (Как в Smalltalk'е. Почти.)
Собственно, модуль с определением словаря:
С сессией пользователя у меня проблемы — не помню я как shell у hop'а выглядит, а UNIX'а под рукой нету. Так что даю только начальные предложения:
Наверно так. Повторюсь, не прогонял, не тестировал. Готов в принципе по первому требованию установить себе FreeBSD и отладить... Интересно... Сколько всё-таки % прог написано на C++? ![]() Это сообщение отредактировал(а) setq - 3.3.2006, 21:43 |
||||||||||||
|
|||||||||||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
setq, увидев столь краткий код, я основательно перепугался и подумал, что пропустил в Hope что-то очень интересное. Но, оказывается, ты реализовал обычные бинарные деревья. Или я все-таки потерял где-то в этих 84 строчках балансировку?
![]() С точки зрения дзен, гораздо интереснее вопрос: сколько еще ненаписанных программ не будет написано на C++? ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
setq |
|
|||
Unregistered |
Я это самое... того... список забыл отсортировать ![]() Задумка была такая: # Берём дерево # Делаем из него список # Модифицируем # Сортируем # Выращиваем обратно -- функцией toAvl() В соответствии с принципом "что, а не как", никто не гарантирует, что это оптимально ![]() |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
setq, оригинально
![]() Гонять списки туда и обратно + O(N) сплайсинг списка по номеру элемента… Да, пожалуй ты прав ![]() В ближайшие дни постараюсь выкроить часик и дать реализацию на OCaml и, возможно, на C++ или C#. P.S. Ты бы помимо красных патчей, сам код поправил. А то словно опасаешься инсинуаций каких-то ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
setq |
|
|||
Unregistered |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Тестирование программ" | |
|
Правила должны соблюдаться всеми без исключения.
Для тех, кто создаёт темы: В данном разделе запрещается размещать программы, которые в той или иной степени могут принести вред потенциальному тестеру программы (например, трояны, вирусы и т.д.)
Для тех, кто тестирует: Описывая результаты тестирования программы, указывайте тип и версию ОС, а также характеристики компьютера и прочую информацию, которая может повлиять на работоспособность. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.Anderson. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разное тестирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |