OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 16:12

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




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

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Valery Solovey писал(а):
Кстати, ещё по поводу модулей. То, что написано в статье будет работать только в скриптовых языках. По крайней мере, я за два дня так и не придумал способа хотя бы откомпилировать command(pet) в случае использования нескольких модулей и раздельной компиляции (чтобы не было необходимости проверять принадлежность pet соответствующему классу).


Под скриптовыми подразумеваются языки с динамической типизацией?


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

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Нет, я имею в виду интерпретацию.

P.S. я дополнил предыдущее сообщение.


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Alexey Veselovsky писал(а):
Поковырял давеча немного Eiffel. Там контракты, инварианты и проч. в полный рост. Так вот, там как раз для релизов РЕКОМЕНДУЕТСЯ отключать ВСЕ динамические проверки. ..... Убедившись что всё ок ... откючить все проверки и собрать релиз, которым и пользоваться.

Круто.


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Слишком сложные проверки там с этими контрактами понаворотили....
Это не просто ASSERT - вот и прокололись на эффективности.


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

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
Слишком сложные проверки там с этими контрактами понаворотили....
Это не просто ASSERT - вот и прокололись на эффективности.


ASSERT'ы тоже можно так расставить, что будет тормозить в разы. В ББ разница между включенными/выключенными проверками не так заметна, потому что оптимизация со стороны компилятора отсутствует как класс :) Поэтому включенным ассертам ставить палки в колеса некому :) Впрочем это все в копилку различий в подходах: "компилятор для человека" vs "человек для компилятора".


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну прям "человек для молотка" или "молоток для человека". :)

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


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

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Как раз к слову - только что поставил свежий Питон, попробовать. Пример, приведённый в статье, успешно запустился. Тут я случайно закрыл консоль и запустил программу опять. Оно повисело немного и молча рухнуло.

Отвык я от такого.


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

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Иван Кузьмицкий писал(а):
Отвык я от такого.


Ужасы какие рассказываете... Я использую питон каждый день. Падения видел только на стресс-тестах, грузящих .NET assembly.


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

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Так я ж в Питоне ни бум-бум :)
Открыл среду IDLE, открыл сохранённую программку, закрыл консоль и запустил программку. Оно попыталось автоматом открыть консоль, но не вышло и пришлось упасть. Причём, если открыть консоль вручную - открывается спокойно.
Поставил разрешение на запуск питона в брандмауэре винды, и проблема решилась. Хотя у меня этот брандмауэр отключен.
Ну да ладно, это уже оффтопик :)


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

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

И еще в копилку примеров подтасовок и сознательного передергивания: оптимизирующий компилятор в навороченных языках нужен, чтобы разгребать эту самую навороченность.


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

Зарегистрирован: Понедельник, 19 Март, 2007 09:40
Сообщения: 142
Откуда: USA, Israel, Belarus
Мысли о Python.
По роботе имею с ним немного дело.
Язык с низким барьером входа.
Как результат простые проги (скрипты) пишутся довольно легко.
Но язык сложный, навороченный -- все фитчи очень сложно осилить (но они и не нужны для скриптов на 100 строчек).
Проблемы начинаются с большими программами, скажем с тысяч строчек, написанные не Вами.
Понять код, в котором нет типов, еще сложнее, чем осилить templates в C++.

При не тривиальных случаях необходимо понимание инструмента, а разобраться как оно работает невероятно сложно -- сложность скрывает реализацию.
Как пример: "пробег по списку до конца" всегда заканчивается исключительной ситуацией.
Т.е. оказывается конец списка -- это "что то невероятное" в Питоне!
Пока код примитивный -- это незаметно (for elem in list:...).
Но в нетривиальных случаях количество catch'ев может превзойти количество if'ов.
Вот такой нетривиально сложный гнилой фундамент.

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


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

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
slava писал(а):
...Как пример: "пробег по списку до конца" всегда заканчивается исключительной ситуацией. Т.е. оказывается конец списка -- это "что то невероятное" в Питоне!...

Вот это - да! Это - не шутка? Я просто Питон не знаю, но даже не представляю, в каком навороченно-неординарном подходе к проектированию, такое по трезвости в голову могло прийти?!
ЗЫ Это всё равно, как с детства волновавший меня вопрос, почему при введении буквы для звукосочетания "йо" решили ставить две точки над литерой "е", а не над "о"... 8) Ну точно академия после бодунища вопрос обсуждала!... Или женщина предложила...


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Владимир Лось писал(а):
ЗЫ Это всё равно, как с детства волновавший меня вопрос, почему при введении буквы для звукосочетания "йо" решили ставить две точки над литерой "е", а не над "о"... 8) Ну точно академия после бодунища вопрос обсуждала!... Или женщина предложила...

Исторически когда-то там был звук е, и буква ставилась соответственно.
В некоторых позициях под ударением в разговоре превратилось в йо, но в словоизменении всё равно там чередуется древнее е (черта--чёрточка, весна--вёсны).
А отмечать такие случаи точечками придумал Карамзин.


Последний раз редактировалось Info21 Суббота, 17 Январь, 2009 21:02, всего редактировалось 1 раз.

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

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Владимир Лось писал(а):
Я просто Питон не знаю, но даже не представляю, в каком навороченно-неординарном подходе к проектированию, такое по трезвости в голову могло прийти?!
Как лодку назовёшь - так и поплывёт :-) Язык Питон, например, назвали в честь цирка Монти Пайтона(Monty Python), а не в честь большой змеи :-)


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

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Пётр Кушнир писал(а):
Как лодку назовёшь - так и поплывёт :-) Язык Питон, например, назвали в честь цирка Монти Пайтона(Monty Python), а не в честь большой змеи :-)
Добавлю: Летающего цирка! (Monty Python's Flying Circus)


Последний раз редактировалось Александр Ильин Суббота, 17 Январь, 2009 21:12, всего редактировалось 1 раз.

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

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
slava писал(а):
Как пример: "пробег по списку до конца" всегда заканчивается исключительной ситуацией.
Т.е. оказывается конец списка -- это "что то невероятное" в Питоне!
Пока код примитивный -- это незаметно (for elem in list:...).
Но в нетривиальных случаях количество catch'ев может превзойти количество if'ов.


А можно пример?


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

Зарегистрирован: Понедельник, 19 Март, 2007 09:40
Сообщения: 142
Откуда: USA, Israel, Belarus
цикл 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.


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

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
slava писал(а):
попробуйте ЭТО переписать через while без break.


Код:
_temporary_iterator = iter(c)
try:
    while True:
        x = _temporary_iterator.next()
        statement(s)
except StopIteration:
    pass


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

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 372
Vlad писал(а):
Илья Ермаков писал(а):
Ну и, конечно, потрясающий перл в конце: "единственной гарантией правиль­ности является прохождение всех тестов, определяющих правильность програм­мы". Аж десять раз )

Если вместо слов "единственной гарантией" (интересно, как в оригинале?) поставить слова "необходимым условием", то получится вполне осмысленное утверждение

Утверждение и так вполне правильное.

Действительно, единственной гарантией (свидетельством) правильности работы обычной программы является успешное прохождение ею всех тестов, определяющих правильность (т.е. для всех возможных наборов входных данных и всех возможных ситуаций поведение программы должно соответствовать спецификации). А как Вы хотели?
Другое дело, что на практике такое тестирование - со всеми тестами - увы, невозможно.
И, конечно же, использование строгого контроля типов, равно как и иных методов программирования еще не гарантирует, что Вы получите правильную программу.

В некоторых частных случаях для некоторых классов программ и некоторых специфических "свойств правильности" возможна, правда, формальная верификация методами логического вывода. Только в статье речь-то идет, конечно, не о таких частных случаях.


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

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Info21 писал(а):
Vlad писал(а):
... Впрочем это все в копилку различий в подходах: "компилятор для человека" vs "человек для компилятора".
Это в другую копилку: насколько трудно молодежи с коротким горизонтом опыта оценить Принцип Калашникова.


А Калашников и не знает, что кое-кто упорно пытается поставить его знак качества на не самый удачный ЯП. Нехорошо.


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

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


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

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


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

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