OberonCore https://forum.oberoncore.ru/ |
|
Сильная типизация против сильного тестирования https://forum.oberoncore.ru/viewtopic.php?f=27&t=1310 |
Страница 2 из 5 |
Автор: | Alexey Veselovsky [ Пятница, 16 Январь, 2009 12:02 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Valery Solovey писал(а): Кстати, ещё по поводу модулей. То, что написано в статье будет работать только в скриптовых языках. По крайней мере, я за два дня так и не придумал способа хотя бы откомпилировать command(pet) в случае использования нескольких модулей и раздельной компиляции (чтобы не было необходимости проверять принадлежность pet соответствующему классу). Под скриптовыми подразумеваются языки с динамической типизацией? |
Автор: | Valery Solovey [ Пятница, 16 Январь, 2009 12:15 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Нет, я имею в виду интерпретацию. P.S. я дополнил предыдущее сообщение. |
Автор: | Info21 [ Пятница, 16 Январь, 2009 16:33 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Alexey Veselovsky писал(а): Поковырял давеча немного Eiffel. Там контракты, инварианты и проч. в полный рост. Так вот, там как раз для релизов РЕКОМЕНДУЕТСЯ отключать ВСЕ динамические проверки. ..... Убедившись что всё ок ... откючить все проверки и собрать релиз, которым и пользоваться. Круто. |
Автор: | Илья Ермаков [ Пятница, 16 Январь, 2009 22:01 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Слишком сложные проверки там с этими контрактами понаворотили.... Это не просто ASSERT - вот и прокололись на эффективности. |
Автор: | Vlad [ Пятница, 16 Январь, 2009 23:34 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Илья Ермаков писал(а): Слишком сложные проверки там с этими контрактами понаворотили.... Это не просто ASSERT - вот и прокололись на эффективности. ASSERT'ы тоже можно так расставить, что будет тормозить в разы. В ББ разница между включенными/выключенными проверками не так заметна, потому что оптимизация со стороны компилятора отсутствует как класс Поэтому включенным ассертам ставить палки в колеса некому Впрочем это все в копилку различий в подходах: "компилятор для человека" vs "человек для компилятора". |
Автор: | Илья Ермаков [ Суббота, 17 Январь, 2009 00:53 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Ну прям "человек для молотка" или "молоток для человека". Думайте сами, решайте сами - здоровый "чёрный ящик", непонятно как работающий и - самое главное! - написанный тем, кому не доверяешь (тем, кому можно доверять, надо платить нехреновые деньги - как вот за QNX, например...) - тоже малоприятного иметь... Боком выходит рано или поздно ))) |
Автор: | Иван Кузьмицкий [ Суббота, 17 Январь, 2009 01:05 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Как раз к слову - только что поставил свежий Питон, попробовать. Пример, приведённый в статье, успешно запустился. Тут я случайно закрыл консоль и запустил программу опять. Оно повисело немного и молча рухнуло. Отвык я от такого. |
Автор: | Vlad [ Суббота, 17 Январь, 2009 02:08 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Иван Кузьмицкий писал(а): Отвык я от такого. Ужасы какие рассказываете... Я использую питон каждый день. Падения видел только на стресс-тестах, грузящих .NET assembly. |
Автор: | Иван Кузьмицкий [ Суббота, 17 Январь, 2009 11:33 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Так я ж в Питоне ни бум-бум Открыл среду IDLE, открыл сохранённую программку, закрыл консоль и запустил программку. Оно попыталось автоматом открыть консоль, но не вышло и пришлось упасть. Причём, если открыть консоль вручную - открывается спокойно. Поставил разрешение на запуск питона в брандмауэре винды, и проблема решилась. Хотя у меня этот брандмауэр отключен. Ну да ладно, это уже оффтопик |
Автор: | Info21 [ Суббота, 17 Январь, 2009 11:37 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Vlad писал(а): ... Впрочем это все в копилку различий в подходах: "компилятор для человека" vs "человек для компилятора". Это в другую копилку: насколько трудно молодежи с коротким горизонтом опыта оценить Принцип Калашникова.И еще в копилку примеров подтасовок и сознательного передергивания: оптимизирующий компилятор в навороченных языках нужен, чтобы разгребать эту самую навороченность. |
Автор: | slava [ Суббота, 17 Январь, 2009 19:32 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Мысли о Python. По роботе имею с ним немного дело. Язык с низким барьером входа. Как результат простые проги (скрипты) пишутся довольно легко. Но язык сложный, навороченный -- все фитчи очень сложно осилить (но они и не нужны для скриптов на 100 строчек). Проблемы начинаются с большими программами, скажем с тысяч строчек, написанные не Вами. Понять код, в котором нет типов, еще сложнее, чем осилить templates в C++. При не тривиальных случаях необходимо понимание инструмента, а разобраться как оно работает невероятно сложно -- сложность скрывает реализацию. Как пример: "пробег по списку до конца" всегда заканчивается исключительной ситуацией. Т.е. оказывается конец списка -- это "что то невероятное" в Питоне! Пока код примитивный -- это незаметно (for elem in list:...). Но в нетривиальных случаях количество catch'ев может превзойти количество if'ов. Вот такой нетривиально сложный гнилой фундамент. Если сравнивать с C++, то Python действительно может сгодится как закрытие дыр C++. Но совершенно однозначно: неоправданная сложность и плохая читабельность их роднит. |
Автор: | Wlad [ Суббота, 17 Январь, 2009 20:49 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
slava писал(а): ...Как пример: "пробег по списку до конца" всегда заканчивается исключительной ситуацией. Т.е. оказывается конец списка -- это "что то невероятное" в Питоне!... Вот это - да! Это - не шутка? Я просто Питон не знаю, но даже не представляю, в каком навороченно-неординарном подходе к проектированию, такое по трезвости в голову могло прийти?! ЗЫ Это всё равно, как с детства волновавший меня вопрос, почему при введении буквы для звукосочетания "йо" решили ставить две точки над литерой "е", а не над "о"... Ну точно академия после бодунища вопрос обсуждала!... Или женщина предложила... |
Автор: | Info21 [ Суббота, 17 Январь, 2009 20:57 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Владимир Лось писал(а): ЗЫ Это всё равно, как с детства волновавший меня вопрос, почему при введении буквы для звукосочетания "йо" решили ставить две точки над литерой "е", а не над "о"... Ну точно академия после бодунища вопрос обсуждала!... Или женщина предложила... Исторически когда-то там был звук е, и буква ставилась соответственно. В некоторых позициях под ударением в разговоре превратилось в йо, но в словоизменении всё равно там чередуется древнее е (черта--чёрточка, весна--вёсны). А отмечать такие случаи точечками придумал Карамзин. |
Автор: | Пётр Кушнир [ Суббота, 17 Январь, 2009 21:01 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Владимир Лось писал(а): Я просто Питон не знаю, но даже не представляю, в каком навороченно-неординарном подходе к проектированию, такое по трезвости в голову могло прийти?! Как лодку назовёшь - так и поплывёт Язык Питон, например, назвали в честь цирка Монти Пайтона(Monty Python), а не в честь большой змеи
|
Автор: | Александр Ильин [ Суббота, 17 Январь, 2009 21:10 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Пётр Кушнир писал(а): Как лодку назовёшь - так и поплывёт :-) Язык Питон, например, назвали в честь цирка Монти Пайтона(Monty Python), а не в честь большой змеи :-) Добавлю: Летающего цирка! (Monty Python's Flying Circus)
|
Автор: | Alexey Veselovsky [ Суббота, 17 Январь, 2009 21:10 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
slava писал(а): Как пример: "пробег по списку до конца" всегда заканчивается исключительной ситуацией. Т.е. оказывается конец списка -- это "что то невероятное" в Питоне! Пока код примитивный -- это незаметно (for elem in list:...). Но в нетривиальных случаях количество catch'ев может превзойти количество if'ов. А можно пример? |
Автор: | slava [ Суббота, 17 Январь, 2009 22:13 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
цикл for по определению эквивалентен (while+try-except+break): Код: for x in c: statement(s) попробуйте ЭТО переписать через while без break. Код: _temporary_iterator = iter(c) while True: try: x = _temporary_iterator.next( ) except StopIteration: break statement(s) Теперь представьте, что необходимо организовать поиск по списку (WHILE (list # NIL) & ~found DO... list := list.next END) Либо for+if+break либо если без break, to while+try-except+if+if+ -- короче ну очень заворочено. А если поиск не тривиальный?! Пока все ваши схемы примитивны, это может не сильно напрягать. Но в общем случае не совсем понятно в что это выльется. Чужой код, что я видел содержит очень большое количество операторов break и try-except. Легкость написания приводит к огромным функциям. Сами по себе break'и тоже ведут к увеличению тела циклов. Последнее замечание -- относится не только к Python, но именно в Python break'ов слишком много! PS Конечно можно опять спихнуть все на программиста, но язык поощряет "такое городить". PPS На простых задачах обработки/конвертации текста таких эффектов не замечал -- все схемы циклов были FOR EACH. |
Автор: | PGR [ Воскресенье, 18 Январь, 2009 00:24 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
slava писал(а): попробуйте ЭТО переписать через while без break. Код: _temporary_iterator = iter(c)
try: while True: x = _temporary_iterator.next() statement(s) except StopIteration: pass |
Автор: | TAU [ Воскресенье, 18 Январь, 2009 02:14 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Vlad писал(а): Илья Ермаков писал(а): Ну и, конечно, потрясающий перл в конце: "единственной гарантией правильности является прохождение всех тестов, определяющих правильность программы". Аж десять раз ) Если вместо слов "единственной гарантией" (интересно, как в оригинале?) поставить слова "необходимым условием", то получится вполне осмысленное утверждение Утверждение и так вполне правильное. Действительно, единственной гарантией (свидетельством) правильности работы обычной программы является успешное прохождение ею всех тестов, определяющих правильность (т.е. для всех возможных наборов входных данных и всех возможных ситуаций поведение программы должно соответствовать спецификации). А как Вы хотели? Другое дело, что на практике такое тестирование - со всеми тестами - увы, невозможно. И, конечно же, использование строгого контроля типов, равно как и иных методов программирования еще не гарантирует, что Вы получите правильную программу. В некоторых частных случаях для некоторых классов программ и некоторых специфических "свойств правильности" возможна, правда, формальная верификация методами логического вывода. Только в статье речь-то идет, конечно, не о таких частных случаях. |
Автор: | Vlad [ Воскресенье, 18 Январь, 2009 06:24 ] |
Заголовок сообщения: | Re: Сильная типизация против сильного тестирования |
Info21 писал(а): Vlad писал(а): ... Впрочем это все в копилку различий в подходах: "компилятор для человека" vs "человек для компилятора". Это в другую копилку: насколько трудно молодежи с коротким горизонтом опыта оценить Принцип Калашникова.А Калашников и не знает, что кое-кто упорно пытается поставить его знак качества на не самый удачный ЯП. Нехорошо. |
Страница 2 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |