OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 16 Декабрь, 2019 03:37

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




Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Вторник, 16 Февраль, 2010 16:18 

Зарегистрирован: Понедельник, 25 Февраль, 2008 08:42
Сообщения: 125
Info21 писал(а):
А.П. писал(а):
Для учебных целей очень хорош.
Как пример того, за что руки отрывают.

Редкий случай, когда я с вами полностью согласен.
Я про отрывание рук за такое.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Вторник, 16 Февраль, 2010 16:21 
Аватара пользователя

Зарегистрирован: Суббота, 15 Март, 2008 20:00
Сообщения: 297
Откуда: Київ, Україна
А.П. писал(а):
Для учебных целей очень хорош.

Действительно две операции деления в цикле - плохо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Вторник, 16 Февраль, 2010 17:36 

Зарегистрирован: Пятница, 02 Декабрь, 2005 14:35
Сообщения: 192
Откуда: Россия, Томск
Info21 писал(а):
Как пример того, за что руки отрывают.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Вторник, 16 Февраль, 2010 17:52 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
А.П. писал(а):
Или я что-то фундаментально важное упускаю?
Поощряется выдумывание какого-то эдакого местечкового выкрутаса вместо становления грамотной общей техники.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Вторник, 16 Февраль, 2010 18:02 

Зарегистрирован: Понедельник, 05 Июнь, 2006 09:49
Сообщения: 327
Откуда: Ленинград, Емельянов Алексей Николаевич
Ну не знаю, мне кажется молодым нужны "понты". А этот "выкрутас" использует данную потребность в правильном направлении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Вторник, 16 Февраль, 2010 19:47 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8218
Откуда: Троицк, Москва
Axcel писал(а):
Ну не знаю, мне кажется молодым нужны "понты". А этот "выкрутас" использует данную потребность в правильном направлении.
Понтов молодым не занимать.

Трюкачество -- использование средств не по назначению.
(Как две молодых шимпанзе Лада и Нева у Л.Фирсова сорвали штору, смахнули ею ключ со стола дежурного за решеткой, когда он отлучился, и сбежали из вольеры.)

Показывать такое трючкачество нужно с целью демонстрации, за что руки отрывают.
Аналогично первая задача у Шеня (Теоремы и задачи) с перстановкой значений посредством трех сложений-вычитаний.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Вторник, 16 Февраль, 2010 22:57 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Info21 писал(а):
Показывать такое трючкачество нужно с целью демонстрации, за что руки отрывают.
Аналогично первая задача у Шеня (Теоремы и задачи) с перстановкой значений посредством трех сложений-вычитаний.


IMHO, не стоит забывать, что подобные трюки (как у Шеня в 1.1.2) имеют огромную практическую ценность при написании оптимизирующего компилятора или (столь ценимого у нас) сборщика мусора.
Некоторые трюки могут стать осознанными приемами (как, например, инверсия указателей, используемая сборщиками мусора).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 00:59 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 573
Откуда: Россия, Санкт-Петербург
Не думал, что будут столь бурные обсуждения :)
Да, примеру не хватает академической стройности, но я не вижу особых проблем с читаемостью.
В цикле выполняется всего одна операция (инкремент), а при должных подборах размера массива (например 256x256) можно вообще обойтись битовыми операциями (AND и SHR).
К сожалению, я ещё не встречал нормальных оптимизирующих компиляторов, поэтому приходится иногда думать в двух плоскостях ЯВУ и АСМ. Но только в "узких" местах и только после завершения на высоком уровне (рекодинг).
Кстати, по поводу отрывания рук, скачал лекцию Гуриева о мировом кризисе для студентов МФТИ и там, на доске были остатки курса "построения компиляторов", так раза четыре встречается запись *temp++ = *prog++;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 07:58 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8218
Откуда: Троицк, Москва
AVC писал(а):
IMHO, не стоит забывать, что подобные трюки (как у Шеня в 1.1.2) имеют огромную практическую ценность при написании оптимизирующего компилятора или (столь ценимого у нас) сборщика мусора.
Разве я не делал оговорок?

Речь о том, что у Шеня это ПЕРВАЯ задача в учебнике для НАЧИНАЮЩИХ.
И идет она без комментариев.
(Кстати, сразу видно, что Шень -- quintessential математик.)

Madzi писал(а):
Не думал, что будут столь бурные обсуждения :)
Во всех форумах это всегда так: по тривиальным вопросам каждый может высказаться и даже обоснование привесть :)

У музыкантов, к примеру, тоже самые тривиальные вопросы вызывают самый большой (эх слово какое точное, только неприличное, пардон) срач.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 13:20 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Madzi писал(а):
К сожалению, я ещё не встречал нормальных оптимизирующих компиляторов, поэтому приходится иногда думать в двух плоскостях ЯВУ и АСМ
Есть две коцепции: код предназначен для прочтения Человеком, и код предназначен для Эффективного исполнения.
Каждая имеет право на жизнь.
И кошмар в том, что они плохо пересекаются. А программисты, вместо того, чтобы сблизить концепции, устраивают холивары (выдергивать/не выдергивать) :D

НО, если думать в терминах АСМ - то как можно было даже подумать, что тут ДВА деления :shock:
Не говоря уже о том, что на АСМ-е, это все безобразие - есть одна команда repz scans + инициализация регистров. И хоть измеряй скорость, хоть нет - а будет быстрее "функциональных вызовов". Немножечко :wink:

Компилятора, который до этого додумается - тоже не встречал :lol:
В общем, трудно жить на свете, когда понимаешь - чего оно делает, и чего должно было БЫ


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 13:32 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 573
Откуда: Россия, Санкт-Петербург
Galkov писал(а):
Есть две коцепции: код предназначен для прочтения Человеком, и код предназначен для Эффективного исполнения.
Каждая имеет право на жизнь.
И кошмар в том, что они плохо пересекаются. А программисты, вместо того, чтобы сблизить концепции, устраивают холивары (выдергивать/не выдергивать) :D

Полностью согласен. Сам усиленно работаю над сближением, но пока приходится думать так.

Galkov писал(а):
НО, если думать в терминах АСМ - то как можно было даже подумать, что тут ДВА деления :shock:
Не говоря уже о том, что на АСМ-е, это все безобразие - есть одна команда repz scans + инициализация регистров. И хоть измеряй скорость, хоть нет - а будет быстрее "функциональных вызовов". Немножечко :wink:

Засада в том, что массив (ЯВУ) должен быть двумерный, в то время как на (АСМ) он одномерный, так что наиболее близкая версия будет
Код:
int [] arr = new [N * M];
int col, row, i;

for (i = 0; i < N*M, arr[i] != x; i++) ;

if (arr[i] == x) {
    col = i % M;
    row = i / M;
}


Galkov писал(а):
Компилятора, который до этого додумается - тоже не встречал :lol:
В общем, трудно жить на свете, когда понимаешь - чего оно делает, и чего должно было БЫ

Это от многообразия возможных вариаций... нужно более жестко ограничивать программиста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 14:00 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9165
Откуда: Россия, Орёл
Или поднимать уровень ассемблера до ЯВУ. Сделать Оберон-процессор - и точка. Транслировать в Оберон с любого языка, в общем, не проблема.

Ну, не совсем Оберон - нужно хорошенько системно подумать, по поводу типизации и проч.
Вот Files.File аппаратно сразу поддержать над памятью и проч.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 14:09 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3127
Откуда: Астрахань
Илья Ермаков писал(а):
Или поднимать уровень ассемблера до ЯВУ. Сделать Оберон-процессор - и точка. Транслировать в Оберон с любого языка, в общем, не проблема.

Ну, не совсем Оберон - нужно хорошенько системно подумать, по поводу типизации и проч.
Вот Files.File аппаратно сразу поддержать над памятью и проч.

Короче, куда ни ткни - опять виртуальная машина... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 14:13 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Илья Ермаков писал(а):
Или поднимать уровень ассемблера до ЯВУ
Не согласен.
В смысле - не очень согласен :)
Но это начало совершенно нового разговора, для которого нужен, как минимум - некий контингент заинтересованных.
Ибо театр одного (или двух...) актера - не самое увлекательное занятие :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 14:45 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 573
Откуда: Россия, Санкт-Петербург
Лично я, для себя, вижу решение в создании некоего инструментария (графический язык программирования + набор шаблонов + экспертная система по кодогенерации).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 14:57 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Info21 писал(а):
Речь о том, что у Шеня это ПЕРВАЯ задача в учебнике для НАЧИНАЮЩИХ.


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

Возьмем простой пример.
Допустим, нам надо добавить в систему программирования (компилятор+библиотека) функцию, возвращающую абсолютное значение числа с плавающей точкой.
Руки надо оторвать как раз тому системщику, который напишет ее в рекомендуемом здесь стиле, да еще с единственным RETURN-ом:
Код:
PROCEDURE Abs(x: REAL): REAL;
  VAR abs: REAL;
BEGIN
  IF x >= 0.0 THEN abs := x
  ELSE abs := -x
  END;
  RETURN abs
END Abs;
Такая функция должна быть встроенной и сводиться к двум машинным/ассемблерным инструкциям.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 15:06 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
AVC писал(а):
Такая функция должна быть встроенной
В ББ функция ABS встроенная.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 15:22 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9165
Откуда: Россия, Орёл
Вообще, термин "встроенная функция" сбивает.
Это просто оператор языка, с функциональной формой записи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 15:54 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Сергей Губанов писал(а):
AVC писал(а):
Такая функция должна быть встроенной
В ББ функция ABS встроенная.

Сергей, я знаю. Это просто иллюстрация необходимости/полезности "трюков".
Оберон основан на трюках (например, имеет рантайм со сборкой мусора), поэтому прикладник и может позволить себе об этих трюках не думать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск элемента матрицы
СообщениеДобавлено: Среда, 17 Февраль, 2010 15:58 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8218
Откуда: Троицк, Москва
AVC писал(а):
Info21 писал(а):
Речь о том, что у Шеня это ПЕРВАЯ задача в учебнике для НАЧИНАЮЩИХ.
Осталось выяснить, тому ли самому учебному предмету посвящен задачник Шеня. (Я в этом сомневаюсь.)
Вроде как книжка написана по занятиям программированием в (физмат) школе.

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

Вот за такие игры руки и надо отрывать -- в неспецифическом контексте, конечно.


Последний раз редактировалось Info21 Среда, 17 Февраль, 2010 16:29, всего редактировалось 1 раз.

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

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


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

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


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

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