OberonCore https://forum.oberoncore.ru/ |
|
Поиск элемента матрицы https://forum.oberoncore.ru/viewtopic.php?f=82&t=2356 |
Страница 2 из 3 |
Автор: | ain [ Вторник, 16 Февраль, 2010 16:18 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Info21 писал(а): А.П. писал(а): Для учебных целей очень хорош. Как пример того, за что руки отрывают.Редкий случай, когда я с вами полностью согласен. Я про отрывание рук за такое. |
Автор: | bohdant [ Вторник, 16 Февраль, 2010 16:21 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
А.П. писал(а): Для учебных целей очень хорош. Действительно две операции деления в цикле - плохо. |
Автор: | А.П. [ Вторник, 16 Февраль, 2010 17:36 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Info21 писал(а): Как пример того, за что руки отрывают. А в чем, собственно, криминал? Всё корректно, никаких темных мест и побочных эффектов, минимум конструкций и операций. Мало материала - мало места для ошибок. Правда, есть два деления, но они целочисленные и потому достаточно быстрые. Для тренировки молодых извилин, мне кажется, самое то! Или я что-то фундаментально важное упускаю? |
Автор: | Сергей Губанов [ Вторник, 16 Февраль, 2010 17:52 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
А.П. писал(а): Или я что-то фундаментально важное упускаю? Поощряется выдумывание какого-то эдакого местечкового выкрутаса вместо становления грамотной общей техники.
|
Автор: | Axcel [ Вторник, 16 Февраль, 2010 18:02 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Ну не знаю, мне кажется молодым нужны "понты". А этот "выкрутас" использует данную потребность в правильном направлении. |
Автор: | Info21 [ Вторник, 16 Февраль, 2010 19:47 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Axcel писал(а): Ну не знаю, мне кажется молодым нужны "понты". А этот "выкрутас" использует данную потребность в правильном направлении. Понтов молодым не занимать. Трюкачество -- использование средств не по назначению. (Как две молодых шимпанзе Лада и Нева у Л.Фирсова сорвали штору, смахнули ею ключ со стола дежурного за решеткой, когда он отлучился, и сбежали из вольеры.) Показывать такое трючкачество нужно с целью демонстрации, за что руки отрывают. Аналогично первая задача у Шеня (Теоремы и задачи) с перстановкой значений посредством трех сложений-вычитаний. Вообще времени в курсах очень мало. Пусть лучше головоломки с передачей параметров решают, у начинающих это с трудом идет, а без этого какое раннее введение шаблонов проектирования. |
Автор: | AVC [ Вторник, 16 Февраль, 2010 22:57 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Info21 писал(а): Показывать такое трючкачество нужно с целью демонстрации, за что руки отрывают. Аналогично первая задача у Шеня (Теоремы и задачи) с перстановкой значений посредством трех сложений-вычитаний. IMHO, не стоит забывать, что подобные трюки (как у Шеня в 1.1.2) имеют огромную практическую ценность при написании оптимизирующего компилятора или (столь ценимого у нас) сборщика мусора. Некоторые трюки могут стать осознанными приемами (как, например, инверсия указателей, используемая сборщиками мусора). |
Автор: | Madzi [ Среда, 17 Февраль, 2010 00:59 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Не думал, что будут столь бурные обсуждения Да, примеру не хватает академической стройности, но я не вижу особых проблем с читаемостью. В цикле выполняется всего одна операция (инкремент), а при должных подборах размера массива (например 256x256) можно вообще обойтись битовыми операциями (AND и SHR). К сожалению, я ещё не встречал нормальных оптимизирующих компиляторов, поэтому приходится иногда думать в двух плоскостях ЯВУ и АСМ. Но только в "узких" местах и только после завершения на высоком уровне (рекодинг). Кстати, по поводу отрывания рук, скачал лекцию Гуриева о мировом кризисе для студентов МФТИ и там, на доске были остатки курса "построения компиляторов", так раза четыре встречается запись *temp++ = *prog++; |
Автор: | Info21 [ Среда, 17 Февраль, 2010 07:58 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
AVC писал(а): IMHO, не стоит забывать, что подобные трюки (как у Шеня в 1.1.2) имеют огромную практическую ценность при написании оптимизирующего компилятора или (столь ценимого у нас) сборщика мусора. Разве я не делал оговорок?Речь о том, что у Шеня это ПЕРВАЯ задача в учебнике для НАЧИНАЮЩИХ. И идет она без комментариев. (Кстати, сразу видно, что Шень -- quintessential математик.) Madzi писал(а): Не думал, что будут столь бурные обсуждения Во всех форумах это всегда так: по тривиальным вопросам каждый может высказаться и даже обоснование привесть У музыкантов, к примеру, тоже самые тривиальные вопросы вызывают самый большой (эх слово какое точное, только неприличное, пардон) срач. |
Автор: | Galkov [ Среда, 17 Февраль, 2010 13:20 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Madzi писал(а): К сожалению, я ещё не встречал нормальных оптимизирующих компиляторов, поэтому приходится иногда думать в двух плоскостях ЯВУ и АСМ Есть две коцепции: код предназначен для прочтения Человеком, и код предназначен для Эффективного исполнения.Каждая имеет право на жизнь. И кошмар в том, что они плохо пересекаются. А программисты, вместо того, чтобы сблизить концепции, устраивают холивары (выдергивать/не выдергивать) НО, если думать в терминах АСМ - то как можно было даже подумать, что тут ДВА деления Не говоря уже о том, что на АСМ-е, это все безобразие - есть одна команда repz scans + инициализация регистров. И хоть измеряй скорость, хоть нет - а будет быстрее "функциональных вызовов". Немножечко Компилятора, который до этого додумается - тоже не встречал В общем, трудно жить на свете, когда понимаешь - чего оно делает, и чего должно было БЫ |
Автор: | Madzi [ Среда, 17 Февраль, 2010 13:32 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Galkov писал(а): Есть две коцепции: код предназначен для прочтения Человеком, и код предназначен для Эффективного исполнения. Каждая имеет право на жизнь. И кошмар в том, что они плохо пересекаются. А программисты, вместо того, чтобы сблизить концепции, устраивают холивары (выдергивать/не выдергивать) Полностью согласен. Сам усиленно работаю над сближением, но пока приходится думать так. Galkov писал(а): НО, если думать в терминах АСМ - то как можно было даже подумать, что тут ДВА деления Не говоря уже о том, что на АСМ-е, это все безобразие - есть одна команда repz scans + инициализация регистров. И хоть измеряй скорость, хоть нет - а будет быстрее "функциональных вызовов". Немножечко Засада в том, что массив (ЯВУ) должен быть двумерный, в то время как на (АСМ) он одномерный, так что наиболее близкая версия будет Код: 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 писал(а): Компилятора, который до этого додумается - тоже не встречал В общем, трудно жить на свете, когда понимаешь - чего оно делает, и чего должно было БЫ Это от многообразия возможных вариаций... нужно более жестко ограничивать программиста. |
Автор: | Илья Ермаков [ Среда, 17 Февраль, 2010 14:00 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Или поднимать уровень ассемблера до ЯВУ. Сделать Оберон-процессор - и точка. Транслировать в Оберон с любого языка, в общем, не проблема. Ну, не совсем Оберон - нужно хорошенько системно подумать, по поводу типизации и проч. Вот Files.File аппаратно сразу поддержать над памятью и проч. |
Автор: | Валерий Лаптев [ Среда, 17 Февраль, 2010 14:09 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Илья Ермаков писал(а): Или поднимать уровень ассемблера до ЯВУ. Сделать Оберон-процессор - и точка. Транслировать в Оберон с любого языка, в общем, не проблема. Ну, не совсем Оберон - нужно хорошенько системно подумать, по поводу типизации и проч. Вот Files.File аппаратно сразу поддержать над памятью и проч. Короче, куда ни ткни - опять виртуальная машина... |
Автор: | Galkov [ Среда, 17 Февраль, 2010 14:13 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Илья Ермаков писал(а): Или поднимать уровень ассемблера до ЯВУ Не согласен.В смысле - не очень согласен Но это начало совершенно нового разговора, для которого нужен, как минимум - некий контингент заинтересованных. Ибо театр одного (или двух...) актера - не самое увлекательное занятие |
Автор: | Madzi [ Среда, 17 Февраль, 2010 14:45 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Лично я, для себя, вижу решение в создании некоего инструментария (графический язык программирования + набор шаблонов + экспертная система по кодогенерации). |
Автор: | AVC [ Среда, 17 Февраль, 2010 14:57 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
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; |
Автор: | Сергей Губанов [ Среда, 17 Февраль, 2010 15:06 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
AVC писал(а): Такая функция должна быть встроенной В ББ функция ABS встроенная.
|
Автор: | Илья Ермаков [ Среда, 17 Февраль, 2010 15:22 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Вообще, термин "встроенная функция" сбивает. Это просто оператор языка, с функциональной формой записи. |
Автор: | AVC [ Среда, 17 Февраль, 2010 15:54 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
Сергей Губанов писал(а): AVC писал(а): Такая функция должна быть встроенной В ББ функция ABS встроенная.Сергей, я знаю. Это просто иллюстрация необходимости/полезности "трюков". Оберон основан на трюках (например, имеет рантайм со сборкой мусора), поэтому прикладник и может позволить себе об этих трюках не думать. |
Автор: | Info21 [ Среда, 17 Февраль, 2010 15:58 ] |
Заголовок сообщения: | Re: Поиск элемента матрицы |
AVC писал(а): Info21 писал(а): Речь о том, что у Шеня это ПЕРВАЯ задача в учебнике для НАЧИНАЮЩИХ. Осталось выяснить, тому ли самому учебному предмету посвящен задачник Шеня. (Я в этом сомневаюсь.)Можно, конечно, сказать, что любой препод ведет под названием программирование свой особый предмет. Уж во всяком случае у Шеня это было не построение компиляторов, а, скорее, математические игры на тему программирования. Вот за такие игры руки и надо отрывать -- в неспецифическом контексте, конечно. |
Страница 2 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |