OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Ноябрь, 2019 18:24

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 94 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: Воскресенье, 18 Январь, 2009 10:34 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Vlad писал(а):
А Калашников и не знает...

Вы всё пытаетесь спасти свое "лицо". Понимаю, обидно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Январь, 2009 13:10 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Больше всего непонятно, почему в названии темы противопоставление.
Сильная типизация практически ничего не стоит, но ловит массу ошибок at source.
Зато не ловит ошибки с логикой, которые и вылавливай себе на здоровье "сильным тестированием".

Странная тема.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 11:24 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1438
Info21 писал(а):
Странная тема.

Кто - с чего кормится... 8)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 14:38 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
TAU писал(а):
Действительно, единственной гарантией (свидетельством) правильности работы обычной программы является успешное прохождение ею всех тестов, определяющих правильность (т.е. для всех возможных наборов входных данных и всех возможных ситуаций поведение программы должно соответствовать спецификации). А как Вы хотели?
Другое дело, что на практике такое тестирование - со всеми тестами - увы, невозможно.
На практике наверняка можно утверждать только следующее:
1. Если программа какой-нибудь тест не прошла, то она не правильная.
2. Если программа тест прошла, то неизвестно правильна она или нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 15:48 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
В языках с зависимыми типами неправильная программа не скомпилируется, даже если в ней нет синтаксических ошибок. Вот неправильный алгоритм, и всё тут, так чего его запускать на выполнение... :mrgreen:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 16:07 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Geniepro писал(а):
В языках с зависимыми типами неправильная программа не скомпилируется, даже если в ней нет синтаксических ошибок. Вот неправильный алгоритм, и всё тут, так чего его запускать на выполнение... :mrgreen:


Гм. А пример можно? Например для каких-нибудь простых алгоритмов типа сортировки.

И вообще, откуда оно будет знать какой алгоритм правильный а какой нет?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 17:08 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
slava писал(а):
Проблемы начинаются с большими программами, скажем с тысяч строчек, написанные не Вами.


Проблемы с большими программами будут на любых языках. Вот только питон как раз и рулит там, где позволяет в десяток строк сделать то, что на других языках потребует тысячи.

slava писал(а):
Понять код, в котором нет типов, еще сложнее, чем осилить templates в C++.


Да, понять код без типов бывает трудно. Сам неоднократно ругался :) Поэтому требуется другой подход. Например, не городить по привычке сложных иерархий ;)

slava писал(а):
Как пример: "пробег по списку до конца" всегда заканчивается исключительной ситуацией.
Т.е. оказывается конец списка -- это "что то невероятное" в Питоне!


Ужас какой. Я и не знал, что можно так бегать по списку %))) Используте нормальный питоновский for и будет вам щастье.

slava писал(а):
Но в нетривиальных случаях количество catch'ев может превзойти количество if'ов.


Неправда. Я сейчас сделал поиск по нашей базе - получилось примерно 1 except на 20 кб кода. При этом средний размер одного файла на питоне меньше 2 кб.

slava писал(а):
Вот такой нетривиально сложный гнилой фундамент.


Не надо тянуть свои фортрановские (или обероновские) привычки в другие языки. И все нормально будет с фундаментом.

slava писал(а):
Если сравнивать с C++, то Python действительно может сгодится как закрытие дыр C++.
Но совершенно однозначно: неоправданная сложность и плохая читабельность их роднит.


По читабельности питон переплюнуть очень трудно. Не путайте с перлом. А сложность такая, что для обучения его используют намного чаще оберона :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 17:12 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Владимир Лось писал(а):
slava писал(а):
...Как пример: "пробег по списку до конца" всегда заканчивается исключительной ситуацией. Т.е. оказывается конец списка -- это "что то невероятное" в Питоне!...

Вот это - да! Это - не шутка?


Это "битлз по телефону".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 17:20 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Vlad писал(а):
питон как раз и рулит там, где позволяет в десяток строк сделать то, что на других языках потребует тысячи.

Опять двадцать пять. В любом приличном языке можно иметь подобные библиотеки.

Vlad писал(а):
А сложность такая, что для обучения его используют намного чаще оберона
Вместе с бейсиком. Да, опять любимый аргумент "нас много! мы круты!"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 17:25 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2932
Откуда: г. Ярославль
Vlad писал(а):
По читабельности питон переплюнуть очень трудно. Не путайте с перлом. А сложность такая, что для обучения его используют намного чаще оберона :)


Для обучения, извините, чему? Черепашку в школах очень часто используют.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 17:26 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
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'ов слишком много!


Индус на любом языке напишет индусский код.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 17:37 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Info21 писал(а):
Больше всего непонятно, почему в названии темы противопоставление.
Сильная типизация практически ничего не стоит, но ловит массу ошибок at source.


Блин. Да дело не в "стоимости" реализации, а в стоимости использования. Сильная типизация стоит дорого - необходимости тщательного проектирования иерархии типов. Для каких-то задач это оправдано, для каких-то - нет.

Info21 писал(а):
Зато не ловит ошибки с логикой, которые и вылавливай себе на здоровье "сильным тестированием".


Кстати, тестировать динамический код намного проще.

Info21 писал(а):
Странная тема.


Расширяйте кругозор, который раз вам говорю :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 19:18 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Vlad писал(а):
Кстати, тестировать динамический код намного проще. ... Расширяйте кругозор, который раз вам говорю :)

У меня динамического кода столько, сколько вам не снилось.

Совершенно очевидно, что ваши понятия о выстраивании иерархии типов слишком ... "объектно-ориентированные".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 20:32 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Info21 писал(а):
У меня динамического кода столько, сколько вам не снилось.


Да-да, я помню песню про "особо динамические" структуры, которые невозможны в C++ :) И пример которых так и не удалось из вас вытянуть :)

Info21 писал(а):
Совершенно очевидно, что ваши понятия о выстраивании иерархии типов слишком ... "объектно-ориентированные".


Совершенно очевидно, что вы и не нюхали динамических языков.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 20:40 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Vlad писал(а):
Да-да, я помню песню про "особо динамические" структуры, которые невозможны в C++ :) И пример которых так и не удалось из вас вытянуть :)

Учебник-то математики видели в глаза когда-нибудь?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 20:50 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Info21 писал(а):
Vlad писал(а):
Да-да, я помню песню про "особо динамические" структуры, которые невозможны в C++ :) И пример которых так и не удалось из вас вытянуть :)

Учебник-то математики видели в глаза когда-нибудь?


А вот и не подерётесь!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 21:34 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Vlad писал(а):
Да-да, я помню песню про "особо динамические" структуры, которые невозможны в C++

Понял в чем загвоздка с Vlad'ом: память.
А я-то всё пытался логику понять... а тут просто память сбоит.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 22:21 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Info21 писал(а):
Vlad писал(а):
Да-да, я помню песню про "особо динамические" структуры, которые невозможны в C++ :) И пример которых так и не удалось из вас вытянуть :)

Учебник-то математики видели в глаза когда-нибудь?


Если вы хотите продолжить дисскуссию о прочитанной литературе, то начните с ответа на мой вопрос про DDD.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Январь, 2009 23:35 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4337
Откуда: Россия, Орёл
Друзья! Если есть желание продолжить разборки - общайтесь личными сообщениями или идите в "Отвлечённые темы".

Со всем уважением.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Январь, 2009 11:49 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1438
Geniepro писал(а):
В языках с зависимыми типами неправильная программа не скомпилируется, даже если в ней нет синтаксических ошибок. Вот неправильный алгоритм, и всё тут, так чего его запускать на выполнение... :mrgreen:

Охохонюшки...
Вот если бы ещё народ научить добросовестно строить оте самые иерархии зависимых типов...
А то ведь народ в массе своей способен только кипятком писать по поводу насыщенности ужЕ имеющихся библиотек...
УжЕ и шутка про джавистов пошла:
- Сколько Вам нужно времени, что бы решить эту задачу?
- Эту задачу решить нельзя: для неё нет библиотеки!

С другой стороны...
Я прекрасно понимаю, что Вы тонко намекаете на автоматический вывод типов в Хаскеле...
Но, в последнее время, я осознал, что простое описание типа аки некоего списочного описания неких сигнатур экспортируемых типом сучностей разной природы неполно и "однобоко"...

Получается интересный парадоксик: деклараративность применять при описании статики получается? - хорошо! Но мне нужна динамика (процесс в развитии)! Декларировать протокол можем? - да - пожалуйста - тем же подобием РБНФ! Но теперь нам и на фиг не нужно описание класса в классическом варианте (набор экспортируемых методов)... :D

Что нам давала декларация типов в классике?
Да, почти ничего! Обычно-то и проверка на совместимость-то типов сущостей происходила по сопоставлению имени типа и по именам наследников... "Структурность" (истинность "принадлежности типу") проверялась на этапе компиляции по наличию в типе соответствующего метода (по сигнатуре). "Своевременность" вызова метода НИКАК нельзя проверить!
С "протокольными" описаниями ситуация прямо противоположная.
В принципе, классическое описание интерфейсов - частный случай описаний протокола взаимодействия: просто методы есть "выхваченные куски" из последовательности актов взаимодействия. Но протокольное описание - БОЛЕЕ естественно, МЕНЕЕ ущербно, да ещё и кучу всяческих удобств для исследований и оптимизации даёт.

Вызов метода - фрагмент акта обмена. Но если в протокольном описании мы чётко определяем последовательность прохождения и обмена "кусков информации" между общающимися объектами, то при вызове методов (при классическом описании интерфейсов) этого нет. Более того, мы даже вынуждены в высокоуровневое общение сущностей нашей предметной области вносить, например такие детали, как последовательность занесения аргументов в регистры и стек исполняющей системы...

По аналогии с минимизацией и изоморфными преобразованиями описаний грамматик, мы можем заняться оптимизацией и преобразованиями описаний протоколов...

И т.д. ... :D


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 94 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB