OberonCore https://forum.oberoncore.ru/ |
|
Сильная типизация против сильного тестирования https://forum.oberoncore.ru/viewtopic.php?f=27&t=1310 |
Страница 3 из 5 |
Автор: | Info21 [ Воскресенье, 18 Январь, 2009 10:34 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Vlad писал(а): А Калашников и не знает... Вы всё пытаетесь спасти свое "лицо". Понимаю, обидно. |
Автор: | Info21 [ Воскресенье, 18 Январь, 2009 13:10 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Больше всего непонятно, почему в названии темы противопоставление. Сильная типизация практически ничего не стоит, но ловит массу ошибок at source. Зато не ловит ошибки с логикой, которые и вылавливай себе на здоровье "сильным тестированием". Странная тема. |
Автор: | Wlad [ Понедельник, 19 Январь, 2009 11:24 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Info21 писал(а): Странная тема. Кто - с чего кормится... |
Автор: | igor [ Понедельник, 19 Январь, 2009 14:38 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
TAU писал(а): Действительно, единственной гарантией (свидетельством) правильности работы обычной программы является успешное прохождение ею всех тестов, определяющих правильность (т.е. для всех возможных наборов входных данных и всех возможных ситуаций поведение программы должно соответствовать спецификации). А как Вы хотели? На практике наверняка можно утверждать только следующее:Другое дело, что на практике такое тестирование - со всеми тестами - увы, невозможно. 1. Если программа какой-нибудь тест не прошла, то она не правильная. 2. Если программа тест прошла, то неизвестно правильна она или нет. |
Автор: | Geniepro [ Понедельник, 19 Январь, 2009 15:48 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
В языках с зависимыми типами неправильная программа не скомпилируется, даже если в ней нет синтаксических ошибок. Вот неправильный алгоритм, и всё тут, так чего его запускать на выполнение... |
Автор: | Alexey Veselovsky [ Понедельник, 19 Январь, 2009 16:07 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Geniepro писал(а): В языках с зависимыми типами неправильная программа не скомпилируется, даже если в ней нет синтаксических ошибок. Вот неправильный алгоритм, и всё тут, так чего его запускать на выполнение... Гм. А пример можно? Например для каких-нибудь простых алгоритмов типа сортировки. И вообще, откуда оно будет знать какой алгоритм правильный а какой нет? |
Автор: | Vlad [ Понедельник, 19 Январь, 2009 17:08 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
slava писал(а): Проблемы начинаются с большими программами, скажем с тысяч строчек, написанные не Вами. Проблемы с большими программами будут на любых языках. Вот только питон как раз и рулит там, где позволяет в десяток строк сделать то, что на других языках потребует тысячи. slava писал(а): Понять код, в котором нет типов, еще сложнее, чем осилить templates в C++. Да, понять код без типов бывает трудно. Сам неоднократно ругался Поэтому требуется другой подход. Например, не городить по привычке сложных иерархий slava писал(а): Как пример: "пробег по списку до конца" всегда заканчивается исключительной ситуацией. Т.е. оказывается конец списка -- это "что то невероятное" в Питоне! Ужас какой. Я и не знал, что можно так бегать по списку %))) Используте нормальный питоновский for и будет вам щастье. slava писал(а): Но в нетривиальных случаях количество catch'ев может превзойти количество if'ов. Неправда. Я сейчас сделал поиск по нашей базе - получилось примерно 1 except на 20 кб кода. При этом средний размер одного файла на питоне меньше 2 кб. slava писал(а): Вот такой нетривиально сложный гнилой фундамент. Не надо тянуть свои фортрановские (или обероновские) привычки в другие языки. И все нормально будет с фундаментом. slava писал(а): Если сравнивать с C++, то Python действительно может сгодится как закрытие дыр C++. Но совершенно однозначно: неоправданная сложность и плохая читабельность их роднит. По читабельности питон переплюнуть очень трудно. Не путайте с перлом. А сложность такая, что для обучения его используют намного чаще оберона |
Автор: | Vlad [ Понедельник, 19 Январь, 2009 17:12 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Владимир Лось писал(а): slava писал(а): ...Как пример: "пробег по списку до конца" всегда заканчивается исключительной ситуацией. Т.е. оказывается конец списка -- это "что то невероятное" в Питоне!... Вот это - да! Это - не шутка? Это "битлз по телефону". |
Автор: | Info21 [ Понедельник, 19 Январь, 2009 17:20 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Vlad писал(а): питон как раз и рулит там, где позволяет в десяток строк сделать то, что на других языках потребует тысячи. Опять двадцать пять. В любом приличном языке можно иметь подобные библиотеки. Vlad писал(а): А сложность такая, что для обучения его используют намного чаще оберона Вместе с бейсиком. Да, опять любимый аргумент "нас много! мы круты!"
|
Автор: | Иван Кузьмицкий [ Понедельник, 19 Январь, 2009 17:25 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Vlad писал(а): По читабельности питон переплюнуть очень трудно. Не путайте с перлом. А сложность такая, что для обучения его используют намного чаще оберона Для обучения, извините, чему? Черепашку в школах очень часто используют. |
Автор: | Vlad [ Понедельник, 19 Январь, 2009 17:26 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
slava писал(а): попробуйте ЭТО переписать через while без break. Не понял. Зачем "это" переписывать через while, когда вы сами привели нормальный читабельный вариант с for? Или у вас религиозные предубеждения против трех букв "for" (вот этого форума начитались? Так читать надо с пониманием, а не просто принимая за догму "for это зло". slava писал(а): Теперь представьте, что необходимо организовать поиск по списку (WHILE (list # NIL) & ~found DO... list := list.next END) Ужас какой... А написать "x in list" - это слишком просто? %) Это нарушение ПК? %) Надо обязательно while куда-нибудь впендюрить? slava писал(а): Либо for+if+break либо если без break, to while+try-except+if+if+ -- короче ну очень заворочено. А если поиск не тривиальный?! Действительно, страшно представить что вы там наворотите для нетривиального поиска, если для обычного поиска пишите такое %) Давайте сюда ваш нетривиальный поиск, будем упрощать %) slava писал(а): Чужой код, что я видел содержит очень большое количество операторов break и try-except. Легкость написания приводит к огромным функциям. Сами по себе break'и тоже ведут к увеличению тела циклов. Последнее замечание -- относится не только к Python, но именно в Python break'ов слишком много! Индус на любом языке напишет индусский код. |
Автор: | Vlad [ Понедельник, 19 Январь, 2009 17:37 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Info21 писал(а): Больше всего непонятно, почему в названии темы противопоставление. Сильная типизация практически ничего не стоит, но ловит массу ошибок at source. Блин. Да дело не в "стоимости" реализации, а в стоимости использования. Сильная типизация стоит дорого - необходимости тщательного проектирования иерархии типов. Для каких-то задач это оправдано, для каких-то - нет. Info21 писал(а): Зато не ловит ошибки с логикой, которые и вылавливай себе на здоровье "сильным тестированием". Кстати, тестировать динамический код намного проще. Info21 писал(а): Странная тема. Расширяйте кругозор, который раз вам говорю |
Автор: | Info21 [ Понедельник, 19 Январь, 2009 19:18 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Vlad писал(а): Кстати, тестировать динамический код намного проще. ... Расширяйте кругозор, который раз вам говорю У меня динамического кода столько, сколько вам не снилось. Совершенно очевидно, что ваши понятия о выстраивании иерархии типов слишком ... "объектно-ориентированные". |
Автор: | Vlad [ Понедельник, 19 Январь, 2009 20:32 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Info21 писал(а): У меня динамического кода столько, сколько вам не снилось. Да-да, я помню песню про "особо динамические" структуры, которые невозможны в C++ И пример которых так и не удалось из вас вытянуть Info21 писал(а): Совершенно очевидно, что ваши понятия о выстраивании иерархии типов слишком ... "объектно-ориентированные". Совершенно очевидно, что вы и не нюхали динамических языков. |
Автор: | Info21 [ Понедельник, 19 Январь, 2009 20:40 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Vlad писал(а): Да-да, я помню песню про "особо динамические" структуры, которые невозможны в C++ И пример которых так и не удалось из вас вытянуть Учебник-то математики видели в глаза когда-нибудь? |
Автор: | Alexey Veselovsky [ Понедельник, 19 Январь, 2009 20:50 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Info21 писал(а): Vlad писал(а): Да-да, я помню песню про "особо динамические" структуры, которые невозможны в C++ И пример которых так и не удалось из вас вытянуть Учебник-то математики видели в глаза когда-нибудь? А вот и не подерётесь! |
Автор: | Info21 [ Понедельник, 19 Январь, 2009 21:34 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Vlad писал(а): Да-да, я помню песню про "особо динамические" структуры, которые невозможны в C++ Понял в чем загвоздка с Vlad'ом: память. А я-то всё пытался логику понять... а тут просто память сбоит. |
Автор: | Vlad [ Понедельник, 19 Январь, 2009 22:21 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Info21 писал(а): Vlad писал(а): Да-да, я помню песню про "особо динамические" структуры, которые невозможны в C++ И пример которых так и не удалось из вас вытянуть Учебник-то математики видели в глаза когда-нибудь? Если вы хотите продолжить дисскуссию о прочитанной литературе, то начните с ответа на мой вопрос про DDD. |
Автор: | Борис Рюмшин [ Понедельник, 19 Январь, 2009 23:35 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Друзья! Если есть желание продолжить разборки - общайтесь личными сообщениями или идите в "Отвлечённые темы". Со всем уважением. |
Автор: | Wlad [ Вторник, 20 Январь, 2009 11:49 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Geniepro писал(а): В языках с зависимыми типами неправильная программа не скомпилируется, даже если в ней нет синтаксических ошибок. Вот неправильный алгоритм, и всё тут, так чего его запускать на выполнение... Охохонюшки... Вот если бы ещё народ научить добросовестно строить оте самые иерархии зависимых типов... А то ведь народ в массе своей способен только кипятком писать по поводу насыщенности ужЕ имеющихся библиотек... УжЕ и шутка про джавистов пошла: - Сколько Вам нужно времени, что бы решить эту задачу? - Эту задачу решить нельзя: для неё нет библиотеки! С другой стороны... Я прекрасно понимаю, что Вы тонко намекаете на автоматический вывод типов в Хаскеле... Но, в последнее время, я осознал, что простое описание типа аки некоего списочного описания неких сигнатур экспортируемых типом сучностей разной природы неполно и "однобоко"... Получается интересный парадоксик: деклараративность применять при описании статики получается? - хорошо! Но мне нужна динамика (процесс в развитии)! Декларировать протокол можем? - да - пожалуйста - тем же подобием РБНФ! Но теперь нам и на фиг не нужно описание класса в классическом варианте (набор экспортируемых методов)... Что нам давала декларация типов в классике? Да, почти ничего! Обычно-то и проверка на совместимость-то типов сущостей происходила по сопоставлению имени типа и по именам наследников... "Структурность" (истинность "принадлежности типу") проверялась на этапе компиляции по наличию в типе соответствующего метода (по сигнатуре). "Своевременность" вызова метода НИКАК нельзя проверить! С "протокольными" описаниями ситуация прямо противоположная. В принципе, классическое описание интерфейсов - частный случай описаний протокола взаимодействия: просто методы есть "выхваченные куски" из последовательности актов взаимодействия. Но протокольное описание - БОЛЕЕ естественно, МЕНЕЕ ущербно, да ещё и кучу всяческих удобств для исследований и оптимизации даёт. Вызов метода - фрагмент акта обмена. Но если в протокольном описании мы чётко определяем последовательность прохождения и обмена "кусков информации" между общающимися объектами, то при вызове методов (при классическом описании интерфейсов) этого нет. Более того, мы даже вынуждены в высокоуровневое общение сущностей нашей предметной области вносить, например такие детали, как последовательность занесения аргументов в регистры и стек исполняющей системы... По аналогии с минимизацией и изоморфными преобразованиями описаний грамматик, мы можем заняться оптимизацией и преобразованиями описаний протоколов... И т.д. ... |
Страница 3 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |