Информатика-21. Форум проекта |
Форум открыт по просьбам читателей сайта проекта для обсуждения Оберона/Компонентного
Паскаля/Блэкбокса как технологической платформы для современной общей системы преподавания программирования,
параллельной и дополняющей систему преподавания математики. Мнения за и против, вопросы как и почему, и т.п.
Характер форума предполагает максимальную корректность высказываний: модераторы удалят без предупреждения
любые сообщения с вульгарным или неуместным контентом, переходом на личности и т.п.
Всего в теме 1147 сообщений
Добавить свое сообщение
- Проект «Информатика—21»
- Обсуждение темы "Мысли об Обероне" на Королевстве
Уважаемые участники форума! Обращаем ваше внимание на тот факт, что данная
тема никоим образом не допускает offtopic и предполагает максимальную корректность высказываний:
модераторы удалят без предупреждения любые сообщения с вульгарным или неуместным контентом, переходом на личности и т.п.
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 277 17-05-2005 06:45 | |
>>>Впрочем обсуждение указателей - жестокий
>>>оффтоп по отношению к теме. С этим лучше
>>>в "Мысли".
А вот с этим не согласен категорически.
Мы же обсуждаем Оберон и Блэкбокс как платформу для преподавания программирования и математики!
Наличие и отсутствие указателей в языке имеет важнейшее значение именно для образовательных целей. Любой преподаватель знает: ничто так не развивает алгоритмическое мышление, как программирование рекурсий и динамических структур данных :). При этом для промышленного программирования эти штучки может и не очень важны, но для развития операционных возможностей мышления - это просто "золото". Для меня лично если человек может написать процедуру обхода двоичного дерева или хотя бы превращения простого массива в кольцевой список с указателями, то это "критерий": мозги уже созрели для работы в области программирования. И наоборот, если человек никак не может понять разницу между ссылкой и тем, на что эта ссылка указывает, то это тоже показательно - у человека есть проблемы с логическим мышлением.
Так что вопрос очень даже по теме:
Ссылки (указатели) в языке, используемом для обучения будущих программистов - это вред или благо?
№ 276 17-05-2005 06:21 | |
>>>Если уж C# то надо посматривать в сторону
>>>Zonnon-а.
Думаю смысл вопроса в другом. С кем двигаться вместе: с "большевиками" или с "меньшевиками". Шефа понять можно. C# - это популярность на рынке, большие капиталы, уверенность в завтрашнем дне: MS всегда была, есть и будет. А BlackBox - это "черный ящик", да еще freeware, что уже само по себе подозрительно :).
№ 275 17-05-2005 06:10 | |
Кстати, у меня складывается впечатление, что сам способ "обзывания" указателей "указывает" на уровень языка.
Если мы говорим "адрес", то уровень низкий (например, Ассемблер).
Если мы говорим "указатель", то уровень выше.
Если мы говорим "ссылка", то еще выше: мы оперируем чисто логическими понятиями и ни о каких физических адресах не упоминаем.
№ 274 17-05-2005 06:05 | |
Ответ на »сообщение 262« (Андрей Иванов)
___________________________
У меня другой вопрос.
Где (за какие деньги, способ оплаты) приобрести BlackBox с причандалами
- коммерческую версию в рабочем состоянии с лицензией.
http://www.oberon.ch/blackbox.html
http://www.oberon.ch/contact.html
Добро от шефа получено. Иначе меня склоняют к сожительству с С#.
Сравнил красное с кислым.
Если уж C# то надо посматривать в сторону Zonnon-а.
№ 273 17-05-2005 06:04 | |
В Обероне не указатели а скорее ссылки, независимые в общем случае от реализации. Действительно, можно даже говорить о связях, причём об "односторонних". Для полноты картины в языке не хватает "двусторонних" указателей. Вот только вопрос, как их реализовать?
Впрочем обсуждение указателей - жестокий оффтоп по отношению к теме. С этим лучше в "Мысли".
№ 272 17-05-2005 05:42 | |
>>>Вообще говоря, для работы со списками и
>>>деревьями в указателях нет необходимости.
>>>Скорее это средство для более низкоуровневого
>>>манипулирования памятью.
Я и не говорил о необходимости - я говорил о возможности :). Указатель - это одна из возможностей отразить логические связи между элементами данных. А насчет низкоуровневого манипулирования - это вопрос спорный. Это смотря как воспринимать указатель - как адрес памяти, с которым можно делать что угодно (как в Си) или как ссылку на переменную, т.е. как эквивалент логической связи между данными (как в Паскалях/Оберонах). В последнем случае манипулирование скорее получается логическим, чем физическим, т.е. достаточно высокоуровневым. Тем более, что при работе с указателями такие слова как "адрес" и "память" можно вообще не использовать. Это мы, технари, понимаем, что это все равно связано с адресами памяти. А для математика есть просто "связь от одного узла списка к другому". Эту связь можно создать, а можно уничтожить или направить к другому узлу.
№ 271 17-05-2005 05:20 | |
Ответ на »сообщение 260« (S.A.)
___________________________
Вообще говоря, для работы со списками и деревьями в указателях нет необходимости. Скорее это средство для более низкоуровневого манипулирования памятью.
№ 270 17-05-2005 04:39 | |
Проблема еще и в том, что "минимизация" языка может довести до абсурда. Насколько мне известно в первых версиях Оберона был исключен даже оператор типа for. Правда потом его быстро вернули. То же самое и со структурами данных. Конечно, механизмы работы со ссылками/указателями можно исключить из языка. Станет ли язык от этого лучше? Самое интересное состоит еще и в том, что даже когда мы не используем указатели в явной форме, они все равно присутствуют - любая переменная-объект - это фактически указатель на область памяти, выделенную для объекта. Значит вопрос может звучать так: должен ли язык высокого уровня предоставлять возможность работы с динамическими данными непосредственно или эти механизмы должны быть скрыты от программиста?
№ 269 17-05-2005 04:27 | |
Вообще-то я том же говорю :). Есть статика и есть динамика. Если время более важно, чем память, то работай со статическими структурами. А если наоборот - с динамическими. Просто "язык с указателями" дает возможность осознанного выбора.
№ 268 17-05-2005 03:45 | |
Да, такой подход имеет право на существование.
Вот пример:
TYPE
ListNode = RECORD
next: INTEGER;
END;
TreeNode = RECORD
left, right: INTEGER;
END;
VAR
ListNodes: ARRAY 1000 OF ListNode;
TreeNodes: ARRAY 1000 OF TreeNode;
ListNode.next - это индекс в массиве ListNodes.
TreeNode.left и TreeNode.right - это индексы в массиве TreeNodes.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|