OberonCore

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

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




Начать новую тему Ответить на тему  [ Сообщений: 321 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 17  След.
Автор Сообщение
 Заголовок сообщения: Re: Обратная сторона мейнстрима...
СообщениеДобавлено: Пятница, 01 Август, 2008 20:23 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Пётр Кушнир писал(а):
Ммм. Покажете?


PROCEDURE Dep*();
VAR a: ARRAY 10 OF CHAR;
p: PROCEDURE();
BEGIN
SYSTEM.GET(SYSTEM.ADR(a), p);
p();
END Dep;

Моему BB сносит крышу (печатает иероглифы).

Пётр Кушнир писал(а):
А что это, вы, собственно, привязались к SYSTEM?


Ну а к чему вы привязались к низкоуровневым возможностям C++, когда речь шла как раз о высокоуровневых?


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

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


А если с такой стороны посмотреть: какая доля драгоценного человеческого внимания при программировании на С++ затрачивается на чисто языковые аспекты (что обеспечить вот это "меньше 1%")? Я как-то уже приводил пример: если дать переобуть человека из постоянно давящих ногу ботинок в лёгкие тапочки, на которые он вообще не обращает внимание, насколько лучше ему будет думаться над задачей? И в итоге насколько меньше ошибок в логике будет им совершено? Трудно ведь делать два дела одинаково хорошо и сразу одной головой. Профессионал знает, что если плохо сделать дело аккуратного кодирования, то потом эти утёкшие указатели вовек не выловишь, даже с Numegaми всякими... В итоге он бессознательно отставляет логику на второй план, занимаясь ей преимущественно до (проектирование) и после (отладка) создания исходного текста. Сначала готовимся, потом долго-долго пробираемся по минному полю, и только потом начинаем пристреливаться по цели...


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

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


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

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


Понятно. Разумные аргументы кончились, по существу сказать нечего, поэтому пошли в ход аналогии. Я не буду развивать аналогии. Оставайтесь в своем мирке и продолжайте мыслить низкоуровневыми категориями целых чисел от 0 до MAX и массивами символов.


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

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Пётр Кушнир писал(а):
Ну, это получается процедура с OUT-параметром, разве нет? НЕ функция.


Объясняю На пальцах. Вот я читаю:
DoSomething(x1, x2, x3);

Где у этой процедуры OUT-параметр?

Теперь сравните с:
x2 = DoSomething(x1, x3);

Какой код будет легче понять?


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

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


Однако доказать вы это так и не смогли...


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

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Vlad писал(а):
Понятно. Разумные аргументы кончились, по существу сказать нечего, поэтому пошли в ход аналогии. Я не буду развивать аналогии. Оставайтесь в своем мирке и продолжайте мыслить низкоуровневыми категориями целых чисел от 0 до MAX и массивами символов.


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


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

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


Однако доказать вы это так и не смогли...


Так ведь вы и доказали, Влад. В вашем широком и гибком мире всё возможно - ваши слова, это есть основа для существования индусского кода.

P.S. Числу не нужно смеяться. Смеющееся число - это сюрреализм, это ненормально. Для выражения смеха есть другие способы, не столь вывернутые.


Последний раз редактировалось Иван Кузьмицкий Пятница, 01 Август, 2008 20:47, всего редактировалось 2 раз(а).

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

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


Метод, по идеологии ООП, это "навык", "умение" некоторого объекта. Его внутренняя активность.
i.ToString() предполагает, что число - оно объект, оно активное, оно знает про существование строк и оно умеет себя преобразовывать в строки. Нонсенс. Нормальная логика: должна быть какая-то то служба, которая умеет преобразовывать числа в строки. Или, может быть, основная служба, отвечающая за работу со строками, умеет их создавать сразу из элементарного численного значения. Далее смотрим документацию. Ненормальная массовая логика: пишем точку и ждём выпадающей меню. Ищем что-то, что отдалённо напоминает нам то, что нам надо. Находим - пробуем. Не находим - дико материм разработчиков "Ну как же они не научили числа делать ToString...". См. понятие "Танцующий медведь" у Купера "Психбольница в руках пациентов" (viewtopic.php?f=57&t=1052).


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

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


Тогда это не число, а объект, демонстрирующий число детям. "Актёр в роли числа".


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

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
А если с такой стороны посмотреть: какая доля драгоценного человеческого внимания при программировании на С++ затрачивается на чисто языковые аспекты (что обеспечить вот это "меньше 1%")?


Очень большая часть внимания уходит на заботу о правильном использовании языка. И чтобы получить положительную отдачу нужно иметь высокую квалификацию. Поэтому индусы все больше на жабе пишут :) Поэтому C++ теряет свою популярность. Но это еще не значит, что жаба или оберон или C# или еще какой язык без указателей всегда будет лучше.


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

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


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Vlad писал(а):
Объясняю На пальцах. Вот я читаю:
DoSomething(x1, x2, x3);

Где у этой процедуры OUT-параметр?

Теперь сравните с:
x2 = DoSomething(x1, x3);

Какой код будет легче понять?

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


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

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Vlad писал(а):
Моему BB сносит крышу (печатает иероглифы).

А мой ББ культурно выдаёт trap(проверял 10 раз подряд):
Код:
illegal memory write (ad = A101FA39H)

<system>   (pc=0100F98FH,  fp=0022DA54H)
 StdInterpreter.CallProc   [000003A5H]
   .a   BOOLEAN   FALSE
   .b   BOOLEAN   FALSE
   .c   BOOLEAN   FALSE
   .i   Meta.Item   fields
<...>

Вот так. Среда корректно обработала ситуацию и не упала в агонии.

Vlad писал(а):
Ну а к чему вы привязались к низкоуровневым возможностям C++, когда речь шла как раз о высокоуровневых?

Скажу три вещи: 1) речь шла про DEP, я спросил именно про это "явление" 2) отвечать вопросом на вопрос невежливо. 3) вы первый начали :-)

Vlad писал(а):
Понятно. Разумные аргументы кончились, по существу сказать нечего, поэтому пошли в ход аналогии.

Не выдумывайте. Или вы такой формалист, что вам необходим "контрольный смайл" и очередное объяснение того что и так было сказано в 25-ти постах до того? Без обид.

Vlad писал(а):
Оставайтесь в своем мирке и продолжайте мыслить низкоуровневыми категориями целых чисел от 0 до MAX и массивами символов.

К чему это? Но раз вы начали: Мирок - это абстракция со скрытой реализацией. Расширяем во все стороны. Безкомпромиссная опора на базовые типы не даёт ему превратиться в "колосс на глиняных ногах". Надеюсь, метафора ясна.

Valery Solovey писал(а):
Да не программированию. Просто арифметике, или другой игре

О, сорри, мозг мыслил только в контексте девелопинга. С этой точки зрения, конечно идея интересная. Некий сюр... :-)

Vlad писал(а):
Объясняю На пальцах. <...> DoSomething(x1, x2, x3); <...> Какой код будет легче понять?

Не, не так. Вот так: SomeModule.DoSomething(x1, x2, x3); Мне без разницы какой код, я посмотрю интерфейс модуля SomeModule :-) Вам вот эта возможность так дорога? Это ведь только выражение, не более...


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

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


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

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
Метод, по идеологии ООП, это "навык", "умение" некоторого объекта. Его внутренняя активность.
i.ToString() предполагает, что число - оно объект, оно активное, оно знает про существование строк и оно умеет себя преобразовывать в строки. Нонсенс. Нормальная логика: должна быть какая-то то служба, которая умеет преобразовывать числа в строки.


Блин. Вот есть у вас Object. И вы хотите залогать его. Какой из нижеприведенных способов "нонсенс", а какой наиболее удобный и естественный.
1) Вы делаете у базового Object метод ToString.
2) Вы делаете какую-то службу, которая знает обо всех типах объектов в системе и умеет их логать.
3) Вы делаете службу, в которой можно зарегестрировать преобразование в строку для любого типа.
4) Вы делает интерфейс IToString и пытаетесь кастнуть к нему Object.
5) Ваше предложение.

Понятно, что на все случаи жизни методов у Object'а не наделаешь (и не надо). Но ToString лично у меня не вызывает отторжения (а-ля смеющийся объект). Да, я соглашусь, можно и без этого утилитного метода. Но с ним удобнее.


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

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Vlad писал(а):
...Но ToString лично у меня не вызывает отторжения (а-ля смеющийся объект). Да, я соглашусь, можно и без этого утилитного метода. Но с ним удобнее.


Снег должен быть белым, а вода - жидкой. Число не должно смеяться. Если это число, конечно. С точки зрения того же индуса, зуб даю на отсечение, совершенно нормально писать кривой индусский код. Потому что реальность, данная ему в языке программирования - кривая. Мы-то с вами знаем, что это условности, что тут стакан стоял, а тут - рыбу заворачивали. Индус же не в курсе. Раз число может смеяться, то он будет шпарить всё, что в рамках этого прекрасного, широкого и удобного во всех отношениях мира.


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

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Илья Ермаков писал(а):
Valery Solovey писал(а):
Да не программированию. Просто арифметике, или другой игре, в которой могут появиться числа. Или просто в качестве спецэффекта на одной из заставок.


Тогда это не число, а объект, демонстрирующий число детям. "Актёр в роли числа".

Это я и сказал.


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

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


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

Код:
info_t info;
info.new_member = new_function();
old_function(x1, x2, info);
return info;


Как оказалось позже, old_function инитила всю структуру info (не только старые поля), из названия фунции это естественно никак не следовало. Если бы old_function изначально возвращала бы проиниченную структуру - такой ошибки просто не возникло бы. Можете добавить этот пример в копилку ошибок, которые оберон не позволяет отловить :)

P.S. В реальном коде все конечно было намного более запущенно. Но суть та же.


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

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

От такого никак не защититься, кроме как воспитанием строгого мышления у программиста.


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

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


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

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


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

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