OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 22 Июнь, 2025 18:18

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




Начать новую тему Ответить на тему  [ Сообщений: 321 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13 ... 17  След.
Автор Сообщение
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 11:54 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Цитата:
The program below is working very very slowly. It's probably slowsort... :o)

Эту фразу я там приписал когда-то... :о)
А заодно причесал код, так что бы он, по-крайней мере, компилировался и работал. Так с тех пор эту функцию никто не улучшил... :о(

ЗЫ. Эта функция так медленно работает из-за заторможенных массивов в GHC. Этот алгоритм, в принципе, можно переписать, так что бы он работал ненамного медленнее, чем на Си, но выглядеть будет ещё страшнее. Хотя куда уж страшнее-то... :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 13:06 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
Geniepro писал(а):
Хотя куда уж страшнее-то... :lol:
Гораздо же приятнее смотреть на удобочитаемый код, например на Обероне :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 13:06 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Alexey_Donskoy писал(а):
Илья Ермаков писал(а):
Я бы провёл водораздел между пассивными и активными сущностями.
Ну так я ещё раз повторю, что НЕТ ТАКОЙ ГРАНИЦЫ в информационной модели. На текущем уровне мы работаем с пассивными сущностями, а на другом - с их активными внутренностями!

Более того, мы НЕ ДОЛЖНЫ ЗНАТЬ о том, активная там сущность или нет. Мы работаем с ней на текущем уровне (абстракции, проекта) - и всё!

В некоторой степени границы нет. Диалектика "снаружи - объект, внутри - процесс", конечно, верна (я сам всегда её отстаиваю).

Однако пассивные сущности таки есть. Если мы построим системную модель некоторой, ну, к примеру, организации, то увидим, что потоки между подсистемами есть не только объектные, но и чисто информационные. Например, передача документов или команд (управляющий поток). Путаница возникает при абстрагировании всего этого до нашей информационной модели. Тут-то ведь уже всем реальным потокам (и материальным, и информационным) ставятся в соответствие чисто информационные! Тем более, надо не забывать об этом различии: моделируем ли мы саму подсистему (безусловно, активная сущность, снаружи - объект с интерфейсами, внутри - процесс, обеспечивающий жизнедеятельность - соотв. современным параллельным, агентным моделям типа Active Oberon - Zonnon - Composita и их прообразам типа Occam-Erlang), моделируем ли мы некий объектный поток между подсистемами (с текущего ракурса - достаточно пассивная сущность, которую только передают, но она имеет внутреннее устройство и в другом ракурсе может что-то сама делать - обычное ООП с методами) или моделируем мы исконно информационный поток, например, документы (ОО-подход только путает, нужна хорошая абстрактная типизация без введения активности объектов данных - или, так скажем, без упора на использовании методов).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 13:09 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Alexey_Donskoy писал(а):
Илья Ермаков писал(а):
мы различаем классы и модули...
(что такое модуль? я имею в виду модуль как в Дельфи, т.е. отдельный файл кода, имеющий интерфейс и могущий содержать много данных, объектов и процедур).
ЗАЧЕМ мы из различаем? Разве же не только потому, что имеющиеся средства разработки сделаны так? ЗАЧЕМ мне лишняя сущность - модуль? Зачем мне пережитки плоской файловой системы? ЗАЧЕМ мне тянуть кучу лишнего кода модуля, из которого мне нужна одна константа, и затем заниматься интеллекуальной линковкой, убирающей неиспользуемый код? ЗАЧЕМ мне шаманство со всякими надстройками над модулем из-за того, что я не имею доступа к каким-нибудь protected методам и т.д. и т.п...?

Резюме:
- модули - лишние сущности инструмента, увеличивающие его сложность;
- отражение инкапсулированных атрибутов сущности в инструменте - неоправданное увеличение сложности.

А вот обероновское видение модульности:
http://wiki.oberoncore.ru/index.php/%D0 ... 0%BB%D1%8C
http://wiki.oberoncore.ru/index.php/%D0 ... 1%80%D0%B0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 13:10 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Ярослав Романченко писал(а):
Geniepro писал(а):
Хотя куда уж страшнее-то... :lol:
Гораздо же приятнее смотреть на удобочитаемый код, например на Обероне :D

А вот приведите эту самую быструю сортировку на Обероне -- сравним! :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 13:24 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Alexey_Donskoy писал(а):
Абстрактная постановка задачи:
Дано: две информационных сущности - А и Б.
Задача: выполнить операцию В над А в контексте Б.

Конкретизация постановки: А - число, Б - строка, В = "преобразовать А в Б".

Решение №1 (объектное):
- берём сущность А (другими словами, выбираем клиента и смотрим его интерфейс);
- задаём контекст Б (другими словами, выбираем сервер и смотрим его интерфейс);
- ищем пересечение интерфейсов и смотрим, насколько оно соответствует операции В;
- если не найдено, модифицируем интерфейс клиента А для поддержки операции В в контексте Б;
- выполняем операцию В.
Прошу обратить внимание - решение дословно соответствует постановке задачи!

Прошу обратить внимание - на 100% подходящих инструментов, в мэйнстриме или нет - я не знаю!
Ближе всего, вероятно Smalltalk, где всё, включая числа, есть объекты. Но увы, я с ним не знаком подробно, гарантировать не могу. Однако ж отнести Смоллток к "мэйнстриму" вряд ли у кого язык повернётся ;)

Решение №2 (назовём его "НЕмэйнстримовое"):
если Б - атомарный тип то
если А - атомарный тип то
перелопачиваем гору документации в поисках (ведь даже простейшие inttostr во всех вариантах в голове держеть нереально и нецелесообразно)
если не найдено то
ищем подходящие функции в интернете...
...
иначе
ищем подходящий метод в интерфейсе А
если не найден то...
иначе
переходим к алгоритму Решения №1

Я ответил на Ваш вопрос об эргономике, семантике и иже с ними?


Подход хороший. Но в текущих моделях ЯП невыполнимый (и в Смоллтоке тоже). Речь о чём - не о том, что такая эргономичность не нужна. А о том, что не надо заставлять "медведей танцевать" ( (С) Алан Купер ). Те, кто заставляет текущие ЯП и текущие парадигмы в виде ФП-ООП так работать, просто запудривают мозги. Цель не достигается, а интеллектуальный контроль за происходящим и прозрачность работы теряется.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 13:41 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Alexey_Donskoy писал(а):
Иван Кузьмицкий писал(а):
Приученный к ситуации "число может над собой делать что угодно", полезет в документацию, искать методы этого числа. А приученный к "число отдельно, обработка отдельно", полезет искать способы обработки этого числа. При наличии должной документированности, оба способа абсолютно идентичны.
Документированность как раз является атрибутом плохого инструмента. Она отвлекает, и очень сильно, и напрягает. В прозрачном инструменте документированность будет просто избыточной.


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 14:19 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Alexey_Donskoy писал(а):
Пётр Кушнир писал(а):
А иначе - получится клиент-серверный механизм, где все знают всё обо всех.
Сервер не должен знать обо всех потенциально возможных клиентах.
Клиент должен знать о сервере, интерфейсом которого пользуется.
Никакой третий переводчик не может знать всё обо всех... Например, ОС предоставляет окружение и транспорт для серверов и потенциальных клиентов, но ничего не знает об их интерфейсах. На самом деле ОС является сервером как для серверов, так и для клиентов.


Однако, главным условием того, чтобы взаимодействие в какой-то среде вообще было возможным, является общий язык взаимодействия. В частности, предполагается, что целое число является неким базовым, неделимым, неактивным, что используется как знак, средство взаимопонимания между всеми действующими субъектами в пространстве модели.

Преобразование целого в строку - это, как ни крути, ну на любом уровне, не связано с работой с активными субъектами. Связано это только с трансформацией чисто пассивной информации. Сервером является некий субъект-преобразователь, клиентом - тот, кто посылает этому преобразователю число, а принимает от него строку.

Пример, где уже возникает клиент-серверность: служба слежения за показаниями датчика, который выдаёт целые числа. Есть сервер - датчик, есть клиент - служба слежения, которая взаимодействует с датчиком по примитивному протоколу "запросить показание - получить целое число". Тут уже не нужна никакая третья сторона. Вполне естественно, что служба должна работать с любым объектом, который понимает этот протокол. Целые числа - чисто пассивный примитив, являющийся частью сообщений. Однако не редкость, когда шизофреническое сознание мейнстрима будет выкаблучивать что-то в стиле "надо унаследовать датчик от целого числа".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 14:59 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1053
Откуда: Россия, Чебоксары
Илья Ермаков писал(а):
Преобразование целого в строку - это, как ни крути, ну на любом уровне, не связано с работой с активными субъектами. Связано это только с трансформацией чисто пассивной информации. Сервером является некий субъект-преобразователь, клиентом - тот, кто посылает этому преобразователю число, а принимает от него строку. Пример, где уже возникает клиент-серверность: служба слежения за показаниями датчика, который выдаёт целые числа.
Вот здесь неточность. Вернее, недопонимание. Вы здесь используете клиент-серверную терминологию, поимая под этим ПРОЦЕСС взаимодействия.
Я же говорил об ОБОБЩЁННОЙ ИНФОРМАЦИОННОЙ МОДЕЛИ. Согласен, обычно терминологию "клиент-сервер" для ДЕКЛАРАТИВНЫХ знаний вроде бы не используют... Но мне так показалось методически верно ;)

В таком вот контексте мне и не нравится, с какого перепугу я должен искать РАЗНЫЕ ПУТИ для преобразования сущности в строку - в зависимости от вида этой сущности. Я хотел бы взять контейнер, где эта сущность лежит, и использовать интерфейс... И тогда мне будет всё равно, число там или монстр, который ещё в инет сходит, прежде чем себя напечатать ;)

ВОПРОСЫ ЭФФЕКТИВНОЙ РЕАЛИЗАЦИИ НАМЕРЕННО ОСТАЮТСЯ ЗА КАДРОМ, как технические... Впрочем, Вы уже ответили про эргономику...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 15:05 
Аватара пользователя

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


Вот-вот. Метод - тоже неуклюжий артефакт мейнстримовского ООП. Как синт. сахар использовать можно, но надо понимать и соблюдать меру.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 15:20 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
Geniepro писал(а):
А вот приведите эту самую быструю сортировку на Обероне -- сравним! :)

Код:
PROCEDURE QuickSort(VAR a: ARRAY OF INTEGER; iLo, iHi: INTEGER);
VAR
  lo, hi, mid, t: INTEGER;
BEGIN
  lo := iLo;
  hi := iHi;
  mid := a[(lo + hi) DIV 2];
  REPEAT
    WHILE a[lo] < mid DO INC(lo) END;
    WHILE a[hi] > mid DO DEC(hi) END;
    IF lo <= hi THEN
      IF a[lo] > a[hi] THEN
        t := a[lo];
        a[lo] := a[hi];
        a[hi] := t
      END;
      INC(lo);
      DEC(hi)
    END
  UNTIL lo > hi;
  IF hi > iLo THEN QuickSort(a, iLo, hi) END;
  IF lo < iHi THEN QuickSort(a, lo, iHi) END
END QuickSort;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 15:35 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Alexey_Donskoy писал(а):
В таком вот контексте мне и не нравится, с какого перепугу я должен искать РАЗНЫЕ ПУТИ для преобразования сущности в строку - в зависимости от вида этой сущности. Я хотел бы взять контейнер, где эта сущность лежит, и использовать интерфейс... И тогда мне будет всё равно, число там или монстр, который ещё в инет сходит, прежде чем себя напечатать ;)

Вот для такого варианта, если отбросить наследование типа Integer от Object, а значит и отказаться от идеи, что просто число имеет какие-то там методы, то остаются классы типов а-ля Хаскелл.
Определяем отдельно тип, например Integer, который абсолютно ничего не умеет, затем определяем разные классы типов для упорядоченной и единообразной работы не только с числами типа Integer, но и Float, и Complex, и Rational. В этих классах типов определяем методы -- операции работы с числами, и делаем привязку к типам Integer, Float, Complex, Rational...

Затем определяем класс типов Show, единственный метод show у которого предназначен для перевода содержимого значений разных типов в строковое представление.
Делаем реализацию этого класса для того же типа Integer, например, и для всех тех типов, для которых мы хотим иметь метод преобразования в строку.

Вот чем такой спосою не устраивает оберонщиков, хотелось бы знать?..
Тип Integer остаётся "базовым", но мы получаем унифицированный способ перегрузки разных операций, от математических до преобразований в строку...

Что не так с таким подходом?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 15:43 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Да, способ неплохой.
Никто его "из оберонщиков" не ругал. В Обероне он не нужен/не вписывается (хотя технически, кажется, можно эмулировать через экземплярное ООП первого Оберона).
А вообще, подобная организация системы типов-операций может быть перспективной, в сочетании с моделью процессов-сообщений. Когда данные, которыми обмениваются, типизируются и оперируются таким образом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 15:48 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Ярослав Романченко писал(а):
Geniepro писал(а):
А вот приведите эту самую быструю сортировку на Обероне -- сравним! :)

Код:
PROCEDURE QuickSort(VAR a: ARRAY OF INTEGER; iLo, iHi: INTEGER);
VAR
  lo, hi, mid, t: INTEGER;
BEGIN
  lo := iLo;
  hi := iHi;
  mid := a[(lo + hi) DIV 2];
  REPEAT
    WHILE a[lo] < mid DO INC(lo) END;
    WHILE a[hi] > mid DO DEC(hi) END;
    IF lo <= hi THEN
      IF a[lo] > a[hi] THEN
        t := a[lo];
        a[lo] := a[hi];
        a[hi] := t
      END;
      INC(lo);
      DEC(hi)
    END
  UNTIL lo > hi;
  IF hi > iLo THEN QuickSort(a, iLo, hi) END;
  IF lo < iHi THEN QuickSort(a, lo, iHi) END
END QuickSort;

Ну что я могу сказать, ничуть не более понятный код. Для Вас, возможно, на Обероне понятнее. Для меня нет. Вот мы и пришли, что всё это -- просто вкусовщина-субъективщина...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 15:54 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
А Вы представьте, что маршрутная часть на Драконе (т.е. то же самое, только сразу интуитивно понятно).
Тогда останется человеку знать, шо такое := и [].

Хаскель же - забубённая математическая модель в терминах функций для простых и понятных действий типа перестановки солдат в строю по росту :-) Вы вот прапорщику расскажите в терминах повторяющихся императивных действий или в терминах функций и map-ов всяких...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 16:02 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Илья Ермаков писал(а):
А Вы представьте, что маршрутная часть на Драконе (т.е. то же самое, только сразу интуитивно понятно).
Тогда останется человеку знать, шо такое := и [].

Хаскель же - забубённая математическая модель в терминах функций для простых и понятных действий типа перестановки солдат в строю по росту :-) Вы вот прапорщику расскажите в терминах повторяющихся императивных действий или в терминах функций и map-ов всяких...

Ну да, ДП -- это как спрашивать консультацию у эксперта, ФП -- это как общаться с умным коллегой, а ИП -- это как водить за руку идиота... Вот и вся разница... :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 16:13 
Аватара пользователя

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

Если одно и то же можно выразить одинаково хорошо и в терминах, понятных идиоту, и в замудрённых "высоких материях", то очевидно, что те, кто предпочитает последнее - просто водят нас за нос.

Конечно, легко спекулировать на (реальных) достоинствах ФП-инструментов, которые, на самом деле, не связаны непосредственно с функциональным стилем. Точнее, влекутся им, но далеко не только им.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 16:49 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Пётр Кушнир писал(а):
Vlad писал(а):
Примеры кода? Абстрактные примеры, основанные на аналогиях - ничего не показывают, кроме ораторских способностей автора.
Не, что вы, какой код. Код тут вообще не причём.


Тогда и цена вашим рассуждениям соответствующая. Еще раз - мне неинтересны теоретические рассуждения, если они не находят отражения в практике. Вам кажется принципиально неправильным возможность писать i.ToString()? Покажите почему это плохо. Покажите в коде. Потому что я не вижу никакой разницы между i.ToString() и ToString(i). Только форма записи.

Пётр Кушнир писал(а):
Vlad писал(а):
Почему??? В реальности вообще нет "методов". И что?
Я ведь не про ООП говорил. Я говорил про целое число. У которого есть довольно устоявшаяся математическая модель, которую вбивают в ваш мозг 16 лет к ряду.


Ну есть математическая модель. И что? Как это связано с невозможностью писать i.ToString()?

Пётр Кушнир писал(а):
Vlad писал(а):
Все предугадать - не могу. Но хочу иметь возможность предугадывать по максимуму.
Я вообще не хочу гадать. Поэтому юзаю доку и браузер интерфейсов. И это не только в Обероне, во всех других ЯП(fpc, c++) я делал точно так же.


Блин. Такая упертость и замыленый взгляд наверное только у оберонщиков.
- Смотри, не в обероне я могу понять код не прыгая в интерфейс, так гораздо быстрее
- А я хочу прыгать в интерфейс
- Смотри, не в обероне я могу понять смысл интерфейса не заглядывая в доку (которые если и бывают, то только у устоявшихся библиотек) или код
- А я хочу смотреть доку и код
- Совмещая объявление и инициализацию я могу избежать вот таких конкретных багов и повысить читабельность
- Это все синтаксический сахар
- Мне все равно как писать i.ToString() или ToString(i), потому что и та и та запись читаются одинаково
- Запись i.ToString() не может быть правильной потому что (далее куча абстрактных рассуждений про базовые типы, ООП и т.д.)

Пётр Кушнир писал(а):
Vlad писал(а):
Суть одна. Только обработать их язык не позволяет. Поэтому для обработки ошибок их использовать нельзя.
Их можно использовать для выявления, на самой ранней стадии разработки.


Не надо переводить стрелки. Речь шла об обработке ошибок, а не о том, для чего нужен ASSERT. Или будете пользователю покавать красивый (интерактивный) дамп стэка, когда он попытается записть свой документ в read-only файл?

Пётр Кушнир писал(а):
Vlad писал(а):
А что будет в y? Мусор?
Значение. Значение будет. Типа Y.


А если Y представляет координаты цели, а функция должна возвращать ошибку в случае, если цель принадлежит союзнику, то что же все таки будет в y? А если программист забудет проверить возвращенную ошибку? То союзникам так и расскажут, что программист дурак? :) А может все таки дело в языке, для которого такая ситуация является штатной и единственно возможной (потому что так индусам и прочим студентам меньше места для маневра)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 18:27 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Vlad писал(а):
...А если Y представляет координаты цели, а функция должна возвращать ошибку в случае, если цель принадлежит союзнику, то что же все таки будет в y? А если программист забудет проверить возвращенную ошибку? То союзникам так и расскажут, что программист дурак? :) А может все таки дело в языке, для которого такая ситуация является штатной и единственно возможной (потому что так индусам и прочим студентам меньше места для маневра)?


Вот, типичный подход стандартного мышления. Задача формулируется и решается так, чтобы её на С++ было удобнее записать. Оберонщик даже не будет проверять координаты цели, если она принадлежит союзнику, и функция, возвращающая ошибку (кстати, с чего вдруг ошибка в штатной ситуации?) просто не нужна :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Вторник, 05 Август, 2008 21:14 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Vlad писал(а):
Покажите в коде. Потому что я не вижу никакой разницы между i.ToString() и ToString(i).
Вы преимущественно кодите, или думаете?
Vlad писал(а):
Как это связано с невозможностью писать i.ToString()?
Математическая модель ничего не может писать. Даже теоретически.
Vlad писал(а):
Блин. Такая упертость и замыленый взгляд наверное только у оберонщиков.
только у меня, наверное. Про остальных не скажу.
Vlad писал(а):
- Смотри, не в обероне я могу понять код не прыгая в интерфейс, так гораздо быстрее- А я хочу прыгать в интерфейс
Вы это к чему? Я то в обероне. А вы нет. Я знаю наверняка. А вы гадаете(пусть и с большой вероятностью).
Vlad писал(а):
- Смотри, не в обероне я могу понять смысл интерфейса не заглядывая в доку (которые если и бывают, то только у устоявшихся библиотек) или код- А я хочу смотреть доку и код
Получается, что Вы - БОГ. Или вам повезло.
Vlad писал(а):
- Совмещая объявление и инициализацию я могу избежать вот таких конкретных багов и повысить читабельность- Это все синтаксический сахар
Это сахар. Я не говорил, что это плохо. Это сахар, я без него обхожусь. Решение - инитить переменные.
Vlad писал(а):
Мне все равно как писать i.ToString() или ToString(i), потому что и та и та запись читаются одинаково- Запись i.ToString() не может быть правильной потому что (далее куча абстрактных рассуждений про базовые типы, ООП и т.д.)
Всё таки вы наверное больше кодите чем думаете. Без обид.
Vlad писал(а):
Не надо переводить стрелки. Речь шла об обработке ошибок, а не о том, для чего нужен ASSERT. Или будете пользователю покавать красивый (интерактивный) дамп стэка, когда он попытается записть свой документ в read-only файл?
Вы не поняли сути. Если все ассерты пройдены, то значит ваш код корректно работает в любой проверенннной вами ситуации. Если вы не проверили файл на read-only то это вы виноваты(кстати конкретно эта ситуация корректно обрабатывается в ББ ещё на уровне слоя работы с файлами).
Vlad писал(а):
А если Y представляет координаты цели, а функция должна возвращать ошибку в случае, если цель принадлежит союзнику, то что же все таки будет в y? А если программист забудет проверить возвращенную ошибку? То союзникам так и расскажут, что программист дурак? А может все таки дело в языке, для которого такая ситуация является штатной и единственно возможной (потому что так индусам и прочим студентам меньше места для маневра)?
Понаставьте ассертов. Протестируйте всесторонне. И с большой степенью вероятности нештатная ситуация будет выявлена. Подумайте - потом пишите код. Ваши слова про студентов я могу принять на свой счёт, принять за неуважение, и страшно расстроиться. Я кажется ни разу не усомнился в вашем профессионализме.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 321 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13 ... 17  След.

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


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

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


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

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