Информатика-21. Форум проекта |
Форум открыт по просьбам читателей сайта проекта для обсуждения Оберона/Компонентного
Паскаля/Блэкбокса как технологической платформы для современной общей системы преподавания программирования,
параллельной и дополняющей систему преподавания математики. Мнения за и против, вопросы как и почему, и т.п.
Характер форума предполагает максимальную корректность высказываний: модераторы удалят без предупреждения
любые сообщения с вульгарным или неуместным контентом, переходом на личности и т.п.
Всего в теме 1147 сообщений
Добавить свое сообщение
- Проект «Информатика—21»
- Обсуждение темы "Мысли об Обероне" на Королевстве
Уважаемые участники форума! Обращаем ваше внимание на тот факт, что данная
тема никоим образом не допускает offtopic и предполагает максимальную корректность высказываний:
модераторы удалят без предупреждения любые сообщения с вульгарным или неуместным контентом, переходом на личности и т.п.
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 817 15-05-2006 06:51 | |
Ответ на »сообщение 809« (Руслан Богатырев)
___________________________
3. Конкретизирующее программирование
Изменение конфигурационного файла целевой системы (напр., на XML). Написание скрипта/макроса, подправляющего/конкретизирующего функционал системы.
Попробуем формализовать.
Имеется интерпретатор некоторого языка.
Язык может быть странным, возможно алгоритмически неполным.
Написание программы и её выполнение интерпретатором почему-то называется конкретизирующим программированием. Почему? В чём отличие от синтезирующего прог-я?
№ 816 15-05-2006 06:44 | |
Ответ на »сообщение 814« (captain cobalt)
___________________________
Надо наконец разобраться с конкретизирующим программированием.
Как определяются понятия "универсальный" и "специализированный"?
Из универсальной и специализированной программы какая будет сложнее, а которая проще?
Определяются где и кем? Гвоздь -- он универсален или специализирован? Зависит от точки зрения. Конкретизация, на мой взгляд, может быть как по отношению к универсальному ПО, так и к специализированному.
Конкретизация -- это уточнение, особая форма синтеза. Если уточняется универсальное, оно от это совсем не обязательно будет специализированным (напр., уточнение ведется через прагмы языка на уровне настройки на целевую операционную платформу). Простой пример конкретизации -- опции генерации кода. Эти опции можно задавать через особые комментарии (прагмы) в языке программирования. Это тоже (IMHO) пример конкретизирующего программирования.
Что касается простоты: она напрямую не зависит от универсальности/специализированности. Можно иметь крайне сложную универсальную вещь (из которой потом конкретизируется результат) и простую специализированную. А можно и наоборот.
№ 815 15-05-2006 06:35 | |
Ответ на »сообщение 813« (Сергей Перовский)
___________________________
Тут отмечались две цели: подготовить пользователя и выучить программиста. На мой взгляд есть еще одна важная цель - познакомить с определенным способом мышления.
Да, это важное замечание. Напомню слова Рендела Брайанта (Randal Bryant, декана факультета компьютерных наук в Carnegie Mellon University): "Нам необходимо очнуться от спячки. Студенты, которые изучали в средней школе информатику, обучены тому, как писать программы на Java. Их научили писать код, который делает скучные вещи вроде сортировки списка чисел. Они ничего не знают о крупных идеях в области компьютерных наук".
Математическое (алгоритмическое) программирование в плане знакомства школьника с определенным способом мышления сродни математике. Математика -- это не только и не столько умение решать задачи. Это иное (абстрактное) мышление, которое способно помочь человеку в его дальнейшей жизни. Пример Дейкстры с туалетами в поездах, на который здесь обратили внимание, -- хорошая иллюстрация такого способа решения. Это не математика. Это именно программирование.
Математике в школе учат по большей части не с целью подготовки будущих математиков. Так почему программирование (хоть и на факультативах) -- это непременно подготовка будущих программистов? А вот пользователя ПК (как конечный продукт) школа вполне способна подготовить (хоть при этом уподобляется бывшим учебно-производственным комбинатам, УПК). Общество того требует. Именно поэтому сюда и уклон школьной информатики.
В ИТ-индустрии на самом деле есть программисты и программисты. Те и другие кодируют. Но разница между ними -- как между математиком и плотником.
№ 814 15-05-2006 06:35 | |
Ответ на »сообщение 805« (Руслан Богатырев)
___________________________
Надо наконец разобраться с конкретизирующим программированием.
Как определяются понятия "универсальный" и "специализированный"?
Из универсальной и специализированной программы какая будет сложнее, а которая проще?
№ 813 15-05-2006 06:16 | |
Ответ на »сообщение 788« (AK)
___________________________
>>>Сообщение 745 - Сергей Перовский:
>>>Но человеческий мозг _не может_ обучаться по принципу от общего к частному.
Только проделав путь к обобщению самостоятельно, на многих примерах, он способен это обобщение использовать.
>>>На самом деле ситуация с точностью до наоборот. Причем обоснованная _научными_ экспериментами в течении многих десятков лет и разработанной соответствующей теорией.
Ссылки в студию. Если за основу брать не труды по педагогике, в которой постановка чистого эксперимента практически невозможна, а модели механизмов работы мозга (прежде всего теорию нейронных сетей), то становится понятно, что абстрактные понятия могут быть сформированы только на основе конкретных, что все обучение идет от частного к общему.
Подбором примеров, использованием эмоционально сильных образов, педагог может интенсифицировать этот процесс. Но сформировать абстрактное понятие у человека не имеющего никакого опыта в нужной сфере невозможно.
Несколько слов о информатике в школе.
Тут отмечались две цели: подготовить пользователя и выучить программиста.
На мой взгляд есть еще одна важная цель - познакомить с определенным способом мышления.
Алгоритмизации учили в школе задолго до появления компьютеров: в курсе геометрии решались задачи на построение - найти алгоритм, состоящий из определенного набора действий, приводящий к заданному результату. Однако, читая многочисленные инструкции, распоряжения и даже законы, хорошо понимаешь, что этот способ мышления у среднестатистического человека развит, мягко говоря, недостаточно. Вот достойная цель для уроков информатики (алгоритмики?).
И о важности инструмента: если решать задачи на сложение в приделах сотни, то разницы между римской системой и позиционной можно и не заметить. Но задачу о стоимости 2,5 кг яблок по 13,50 в римской системе решить проблематично.
Но, поскольку в школьном курсе мы не можем дойти до по настоящему сложных задач по программированию, мы не можем показать школьникам преимущества инструмента, позволяющего справится со сложностью.
№ 812 15-05-2006 05:36 | |
Ответ на »сообщение 811« (Сергей Губанов)
___________________________
Так почему Вас так удивляет, что BlackBox-совские модули нельзя запустить на машине, на которой не установлен BlackBox?
Ответ простой: степень распространенности run-time. Для BlackBox распространенность минимальная. Значит, для показа друзьям нужен отчуждаемый .EXE. Это понятно. Так разве BlackBox (как и ETH Oberon) такого не позволяет?
№ 811 15-05-2006 05:30 | |
Ответ на »сообщение 802« (Дмитрий)
___________________________
...получить результат отдельно от среды (принести показать друзьям). Инструмент должен быть отделен от результата...
Windows программы нельзя запустить на машине, на которой предварительно не была установлена Windows. Java программы нельзя запусть на машине, на которой предварительно не была установлена JVM. C# программы нельзя запусть на машине, на которой предварительно не была установлена .Net. Так почему Вас так удивляет, что BlackBox-совские модули нельзя запустить на машине, на которой не установлен BlackBox?
№ 810 15-05-2006 05:06 | |
Ответ на »сообщение 800« (Сергей Губанов)
___________________________
В Обероне и Компонентном Паскале есть сборщик мусора, так что переделывая книгу Шеня с Паскаля на Оберон многие задачи можно реализовать через настоящее использование динамической памяти - списки и деревья реализовывать не через массивы, а через POINTRER TO RECORD.
Вполне разумно.
Приведу выдержку из предисловия к книге: "Книга написана по материалам занятий программированием со школьниками математических классов школы N57 г. Москвы и студентами младших курсов (Московский государственный университет, Независимый Московский университет). <...> В качестве языка для записи программ был выбран паскаль. Он достаточно прост и естествен, имеет неплохие реализации (например, Turbo Pascal 3.0 и 5.0 фирмы Borland) и позволяет записать решения всех рассматриваемых задач. Возможно, Модула-2 или Оберон были бы более изящным выбором, но пока что они менее доступны."
Думаю, при переводе задач Шеня на Оберон стоит поконсультироваться с автором. Оберон он знает и держал в голове при написании книги.
№ 809 15-05-2006 04:57 | |
Ответ на »сообщение 808« (Alexey Veselovsky)
___________________________
Привиди, пожалуйста, коротенькие примеры (исходники) каждого типа программирования, как ты их понимаешь. А то спорить без них можно долго упорно и безрезультативно.
1. Синтезирующее программирование
Ручное: написание функционально законченного кода (процедура, модуль) на языке программирования (напр., Обероне). Автоматическое: препроцессор, генератор исходного текста на основе описания на (проблемном) языке.
2. Сборочное программирование
Формирование программы (системы) из готовых компонентов и модулей (состыковка).
3. Конкретизирующее программирование
Изменение конфигурационного файла целевой системы (напр., на XML). Написание скрипта/макроса, подправляющего/конкретизирующего функционал системы.
№ 808 15-05-2006 04:51 | |
Ответ на »сообщение 805« (Руслан Богатырев)
___________________________
Ответ на »сообщение 796« (Alexey Veselovsky)
___________________________
Тут я с Вами не соглашусь.
В своей работе "Научные основы доказательного программирования" Андрей Петрович Ершов (надо будет выложить) выделял три вида программирования:
1) синтезирующее (автоматическое, автоматизированное или ручное манипулирование знанием о задаче с синтезом соответствующей программы);
2) сборочное (построение программы из уже существующих и корректных фрагментов)
3) конкретизирующее (построение специализированных программ из универсальных заготовок).
...
Т.е. преимущественно сборочное программирование. Макросы (как часть офисного программирования), Javascript и иже с ними -- стимулы к применению конкретизирующего программирования (поправить, подмазать, подкрутить). А вот синтезирующее становится уделом спецов. Их доля в общей массе программистов все меньше и меньше. Так не всем же автолюбителям быть классными механиками.
Привиди, пожалуйста, коротенькие примеры (исходники) каждого типа программирования, как ты их понимаешь. А то спорить без них можно долго упорно и безрезультативно.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|