Информатика-21. Форум проекта |
Форум открыт по просьбам читателей сайта проекта для обсуждения Оберона/Компонентного
Паскаля/Блэкбокса как технологической платформы для современной общей системы преподавания программирования,
параллельной и дополняющей систему преподавания математики. Мнения за и против, вопросы как и почему, и т.п.
Характер форума предполагает максимальную корректность высказываний: модераторы удалят без предупреждения
любые сообщения с вульгарным или неуместным контентом, переходом на личности и т.п.
Всего в теме 1147 сообщений
Добавить свое сообщение
- Проект «Информатика—21»
- Обсуждение темы "Мысли об Обероне" на Королевстве
Уважаемые участники форума! Обращаем ваше внимание на тот факт, что данная
тема никоим образом не допускает offtopic и предполагает максимальную корректность высказываний:
модераторы удалят без предупреждения любые сообщения с вульгарным или неуместным контентом, переходом на личности и т.п.
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА <<<... | 27—18 | 17—8 | ...>>> Всего сообщений в теме: 1147; страниц: 115; текущая страница: 114
№ 17 22-10-2004 15:46 | |
Ответ на »сообщение 15« (Sergey)
___________________________
На № 15
>>> 1. Программирование НЕ нужно ЛЮБОМУ школьнику или студенту, или великому ученому! Точно также как им не нужны еще сотни чрезвычайно востребованных областей науки и мастерства.
Даешь User-friendly Mathematics! http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD889.html
>>> 2. Человек, желающий обучаться программированию, должен обучаться именно программированию, а не абстрактной информатике - это взаимосвязанные, но совсем не одинаковые вещи.
Архиверное замечание. Вот пускай и обучается программированию, где-нибудь в ПТУ или в ВУЗе. И там пусть изучает "самые передовые" языки, среды, ООП, UML и прочие погремушки и свистульки.
А пока он в школе, он еще не знает, желает ли он обучаться именно программированию.
Сообщение не подписано
№ 16 22-10-2004 15:27 | |
Ответ на »сообщение 14« (S.A.)
___________________________
Приношу свои извинения ..
Вам абсолютно не за что извиняться. Тема "Почему Оберон/Компонентный Паскаль, а не функциональные языки" вполне вписывается в проблематику проекта. Не вписываются только бездоказательные заклинания.
И раз уж речь об этом зашла:
в чистом виде любой из подходов к вычислимости -- процедурный, фукнциональный, "марковский" -- примерно равно- и сильно- удалены от человека в силу своей равной примитивности.
То, что функциональные языки далеко отстоят от "железа" (что видно по сложным оптимизирующим почти мегабайтным компиляторам, нужным, чтобы достигнуть того же, что в Обероне достигается с компилятором в 40К), вовсе не делает их "выше" в смысле близости к человеку (что видно по трудности их изучения).
В этом смысле утверждение об их "высоком уровне" -- просто миф, созданный ранними энтузиастами, что простительно, но не перестает делать такое утверждение мифом.
Все языки, более близкие человеку, -- синтетические, т.е. в той или иной форме сочетающие элементы как процедурного, так и функционального программирования.
В О/КП есть и рекурсивные процедуры, и сбор мусора -- все гарантированно полезное, что можно было взять из функциональной парадигмы, взято.
Точно так же, скажем, OCaml -- синтетический язык.
Но языки типа О/КП отталкиваются от процедурной парадигмы, что явно имеет смысл по той причине, что наше "железо" -- скорее машина Тьюринга, чем лисп-машина, по экономико-технологическим причинам.
И именно поэтому совершенно прав многоуважаемый S.A., говоря, что изучения процедурной парадигмы избежать невозможно.
Что касается легкости изучения, то обычных 12-летних школьников вполне возможно систематически обучать на Паскале (и тем более на Компонентном Паскале, у которого синтаксис проще).
А на ФЯ -- сомнительно. Во всяком случае некий активный пропагандист OCaml, прекрасный программист (судя по большому и важному куску софта, который он произвел), а ныне редактор журнала Computer Physics Communications, на мой прямой вопрос "можно ли 12-летних ...", после некоторого молчания ответил решительным "нет".
Что касается компактности и крастое программ на ФЯ -- достаточно посмотреть на компактность Блэкбокса, и все вопросы отпадают.
Мое заключение после изучения сего вопроса в последние пару лет состоит в том, что в плане выразительности, экономности и т.п., комбинация полифорфизма с минимумом методов (ABSTRACT+FINAL в КП) -- просто-напросто эквивалентна ФЯ с функционалами, currying, и т.п.
Никакой мистики в ФЯ в этом отношении (компактности и проч.) просто нет и взяться ей неоткуда.
(Многоуважаемый Trurl скажет, что полиморфизма с процедурными перемеными достаточно, и будет в целом прав, и я просто замечу, что схема ABTRACT/FINAL-методов вместо явного введения процедурных переменных выглядит в моих задачах поизящней.)
Что касается механизмов автоматического распознавания типов, то они не являются, строго говоря, специфичными для функциональных языков: можно было бы и Оберон заставить "выводить" и контролировать типы подобным же образом -- ценой более сложного (и медленного) компилятора.
Дало ли бы это преимущество в правильности и эффективности больших программ по сравнению с принятой сейчас схемой строгой статической типизации, в которой принимается, что компилятору отказано в праве додумывать что-либо за программиста?
Я лично сильно сомневаюсь. Скорее породило бы крайне труднонаходимые ошибки, пусть и в небольшом числе случаев.
Подозреваю, что именно об этом идет речь в фольклорном утверждении (где-то, может быть, в Мыслях его цитировали), что в ФЯ 99% ошибок распознает компилятор, зато оставшийся 1% невозможно найти вообще.
Во всяком случае заставляя программиста объявлять типы, создаются некая избыточность и эксплицитность, обе полезные с т.зр. обеспечения правильности и evolvability.
И, наконец, последний гвоздь в крышку мифа о более высоком уровне ФЯ в смысле близости к человеку:
когда мы сидим перед компьютером и вызываем разные команды, а между ними думаем, а компьютер ждет: разве "железо" не помнит свое состояние (state)? разве в нем нет ничего, кроме определений функций?
Можно, конечно, сказать, что вводя оценки за контрольную/экзамен, мы определяем некие immutable параметры.
Но когда мы исправляем оценки? Разве не естественно мыслить это себе -- разве не ОЧЕВИДНО, что это замена содержимого неких "ячеек" в таблице -- неких "ячеек памяти"?
Не вижу, каким образом эта картинка станет более естественна, "выше" уровнем и ближе нормальному человеку, если все это интерпретировать на языке функциональной парадигмы.
Остается тезис о том, что программистам, особенно профессионалам, полезно (и чем "профессиональнее", тем полезнее) изучить какой-нить ФЯ.
Полезно. Но не в рамках общей системы обучения программированию/"алгоритмике", которая охватывала бы всех 11-19-летних будущих инженеров, физиков, лингвистов...
№ 14 22-10-2004 13:43 | |
Приношу свои извинения автору форума, уважаемому info21 за то, что чуть-было не ввязался в бесплодную дискуссию на тему, далекую от Oberon-family in education.
S.A.
№ 13 22-10-2004 13:12 | |
P.S.
Jack, прошу прощения за невежливость. Ваше предложение о расширении кругозора, безусловно, очень верное. Я попробую, что-нибудь сделать.
P.P.S. А насчет ограничения паскалевскими языками, Вы не правы - мы даем и Java/Javascript, и VBA (программирование для Excel/Access), а ученики, которые "advanced" делают проекты на C/C++.
№ 12 22-10-2004 13:04 | |
На #6.
>>>Во первых я не совсем понимаю что
>>>такое "скобки в операторах присваивания". Вы
>>>имеете в виду скобки в выражениях ?
>>>Во вторых в Хаскеле операторов присваивания
>>>нет.
Уважаемый Jack! Я всегда подозревал, что Вы иногда делаете вид, что не поняли смысл высказываний собеседника, чтобы легче было "передергивать" :). Я говорил не об операторах присваивания и Вы прекрасно это поняли, хотя и сделали вид, что нет. Я говорил о том, что начинать изучение программирования с функционального - это все равно, что изучать математику сразу с алгебры или анализа, минуя арифметику. Принцип работы компьютера за последние 50 лет не изменился - компьютеры как были, так и остаются просто универсальными машинами Тьюринга, т.е. исполнителями алгоритмов. А следовательно базовые понятия обычного, "процедурного" программирования все равно надо знать: что такое присваивание, что такое условный и циклический алгоритм и т.п. Человек обязательно должен пройти эту цепочку, прежде чем он сможет перейти к освоению других парадигм. Точно так же в математике сначала надо понять, что такое сложение и вычитание, прежде чем, можно будет перейти к обобщенному представлению об алгебраических структурах.
P.S. А что касается моего мнения о восьмиклассниках, то оно очень доброжелательное и уважительное. Просто я писал свой текст после очередной проверки первой контрольной работы по программированию и хорошо знал, о чем говорю.
С уважением,
S.A.
№ 11 22-10-2004 12:17 | |
Ответ на »сообщение 6« (Jack Of Shadows)
___________________________
Оператор присваивания действительно вешь трудно понимаемая для человека далекого от программирования. Его даже в математике нет :))
Зато копирование содержимого ячеек памяти есть в компьютере. А задача математики -- изучать любые символьные модели, которые возникают в человеческой деятельности.
Задача информатики -- формализовать то, что происходит в компьютере, в виде символической модели, а потом уже математики пусть изучают, что получится.
Тьюринг (между прочим, математик), фон Нейман (тоже математик, и совсем не слабый) и Дейкстра со всем этим успешно справились.
Статус процедурных, функциональных и "марковских" ЯП с точки зрения науки математики абсолютно равный -- это для нее объекты изучения, не более.
Единственный смысл, который можно вложить в прилагательное "научный" в плане языков программирования с точки зрения математики -- это то, можно ли, и насколько легко верифицировать программы.
Дейкстра объяснил, как разбираться с циклами.
Строить рекурсивные программы не проще, чем строить циклы (говорю на основе опыта преподавания: только вчера в компьютерном классе начинающие программисты, первокурсники-физики боролись у меня и с инвариантами цикла, и с рекурсией в quicksort).
А заменять простенький цикл рекурсией -- интеллектуальное извращение, перестающее быть таковым только в математическом контексте исследования проблемы вычислимости.
Всему свое место.
Кстати, Дейкстра вполне успешно формализовал присваивание как преобразователь предикатов.
Так что оператор присваивания успешно и легко вписывается в формальную логику.
Разумеется, объяснять это школьникам на уроке программирования столь же неуместно, как и аксиоматику арифметики Пеано при изучении таблицы умножения.
№ 10 22-10-2004 11:47 | |
Ответ на »сообщение 8« (DROFA)
___________________________
Уважаемый DROFA привел в высшей степени уместную цитату российского математика.
Российское математическое образование, начиная с младших школьников, не имеет аналогов в мире.
Американское среднее образование -- худшее среди развитых стран (об этом говорят все, кто может что-то с чем-то здесь сравнивать; мой собственный опыт: иметь дело с американскими студентами ун-тов с такими знаниями по математике, какие они имеют, мне лично было просто невыносимо, когда я принял решение вернуться в Россию; не видно, чтобы за 10+ лет что-нибудь изменилось, судя по докладу комиссии Гленна: http://www.ed.gov/inits/Math/glenn/index.html).
Поэтому Информатика-21 и утверждает тезис о том, что систему обучения программированию в России надо строить, опираясь на нашу математику.
Смотреть, как в Америке учат тамошних школьников, невредно (че-нить по мелочам всегда можно полезного найти), но ссылаться на американский опыт в фундаментальном смысле -- вредно до крайности.
Если уж на что смотреть раскрыв рот, так это на уникальную по объему, разнообразию и качеству педагогических экспериментов, не имеющую даже близко никаких аналогов в мире новосибирскую школу (деятельность ИСИ им. Ершова).
К сожалению, глубоко укорененная у нас совковость сильно мешает нам по-достоинству уважать самих себя.
Именно российские прикладные математики оценили и подхватили "научно спроектированный" Алгол-60, и именно благодаря этому мы имеем в России, слава Богу, Паскаль.
От чего и нужно отталкиваться.
№ 9 22-10-2004 10:35 | |
Уважаемые участники!
Как модератор сего форума считаю нужным заметить следующее.
Сей форум -- часть проекта Информатика-21, размещенный на Королевстве с любезного согласия и при помощи Е.Филипповой (которой воспользуюсь случаем публично выразить свою благодарность, а также В.Лосю за помощь).
Отсюда следуют пункты:
0) Организация сего форума преследовала цели способствовать проекту Информатика-21 и помочь тем людям, которые заинтересовались проектом, -- но ничему более.
1) В частности, сей форум не следует рассматривать как обычный участок Базарной площади, где можно "базарить" напропалую.
2) Люди, зарекомендовавшие себя как ответственные и/или опытные в преподавании программирования (как многоуважаемые S.A. или Trurl), имеют полную свободу выражать любые мнения и ставить любые вопросы по поводу проекта.
3) Люди случайные -- а тем более заработавшие себе репутацию на Базарной площади -- должны иметь в виду, что их свобода высказываться здесь ограничивается моей свободой снимать постинги с несерьезными, безответственными и/или демагогическими высказываниями. Возможность таким высказываниям покрасоваться на виду у всех пару дней -- более чем достаточный элемент демократии.
4) Если Вы считаете, что у Вас есть что сказать серьезного И содержательного И конкретного по поводу проекта Информатика-21, найдите подходящую форму для своих мыслей (скажем, отложить на день акт выкладывания).
Если у Вас нет времени на то, чтобы обосновать свои мнения и отредактировать свой постинг -- этот форум не для Вас.
Я считаю себя ответственным за проект Информатика-21 и перед теми людьми, которые будут тратить свое драгоценное время, работая с сим форумом.
В качестве демонстрации предельной серьезности своих намерений, я снимаю постинг №3 по следующим причинам:
-- В нем содержится глобальное утверждение, которое никак не подтверждено, а истинность чрезвычайно сомнительна.
-- Постинг содержит явный элемент демагогии (квалификация любимых автором постинга языков как "научных", очевидно, в пику обсуждаемым в проекте Информатика-21).
-- Постинг содержит предложение, не подкрепленное никаким опытом, представляющееся людям с опытом преподавания заведомо нереалистичным, и никак не вписывающееся в обсуждаемый проект.
Убедительно прошу уважать всех тех, кто серьезно заинтересовался проектом Информатика-21 и будет работать с данным форумом.
С уважением
№ 8 22-10-2004 10:18 | |
Ответ на »сообщение 6« (Jack Of Shadows)
___________________________
__________________________
Эко вы однако низкого мнения о восьмикласниках :))
С этого места уже понятно, что Вы не преподавали в школе (впрочем я тоже когда то переоценивал детей в школе - эти мои слова конечно неполиткорректны, но)...
Что касается функцинальных языков, то они построены на математической нотации, т.е. восьмикласник уже обладает необходимыми понятиями чтобы понять о чем речь.
Иллюзии продолжаются...
Я не преподаватель, поэтому никакого личного опыта преподавания каких бы то ни было языков у меня нет.
Ну наконец-то. Все стало на свои места...
(Именно таким был и я...)
Однако я знаю что в американских институтах Scheme и ML очень широко распространены в качестве учебных языков.
Насчет школ не в курсе.
Речь конечно идет именно о школах (не американских конечно, ибо американская школа нам не указ - я вполне серьезно говорю)
В любом случае ограничивать свой кругозор только паскалевскими языками - это плохо.
Расширять кругозор - это прекрасно!!! Но делать это надо с умом (иначе очень вероятно получение каши в голове - дорога ложка к обеду).
Действительно для курса "Основы программирования" подходят Pascal/Oberon и желательно в как можно более простом окружении, чтобы не затенять тучей мелких деталей именно эти самые основы.
Реальная проблема (психологическая) в этом деле - это разговоры с родителями и учениками - "а почему Вы..., тогда как..." Вот это да, это вам не Haskel... Моя практика показывает, что к сожалению убедительность в этом смысле присуща личности преподавателя а не его аргументация. Иными словами "железные" аргументы (от простого к сложному, закладка фундамента, знание немногих принципов заменяет... и т.д.) ни черта не действуют на большинство родителей и учеников повзрослее. Вот это проблема...
Тут я вспомнил бы сборник задач Шеня
"ПРОГРАММИРОВАНИЕ: ТЕОРЕМЫ И ЗАДАЧИ" и позволю себе оттуда несколько цитат:
"Книга написана в убеждении, что программирование имеет свой предмет, не сводящийся ни к конкретным языкам и системам, ни к
методам построения быстрых алгоритмов."
Прошу прощения - цитата длинная
"
Н Е П О К У П А Й Т Е Э Т У К Н И Г У !
(Предупреждение автора)
В этой книге ничего не говорится об особенностях BIOSа,
DOSа, OSа, GEMа и Windows, представляющих основную сложность при
настоящем программировании.
В ней нет ни слова об объектно-ориентированном программиро-
вании, открывшем новую эпоху в построении дружественных и эффек-
тивных программных систем.
Из нее Вы не узнаете о графических возможностях компьютера,
без которых немыслимо современное программирование, о богатстве
и разнообразии мира видеоадаптеров.
Не рассказано в ней и о написании резидентных программ,
тонкости взаимодействия которых должен знать каждый.
Искусственный интеллект, открывший новые рынки сбыта для
программного обеспечения, обойден презрительным молчанием.
Экспертные системы, которые в скором будущем займут место
на рабочем столе каждого, даже не упоминаются.
Логическое программирование, постепенно вытесняющее уста-
ревший операторный стиль программирования, не затронуто.
Драматический поворот от баз данных к базам знаний, вызвав-
ший в жизни новую профессию -- инженер знаний -- остался незаме-
ченным автором.
Проблемы отладки и сопровождения программ, занимающие, по
общему мнению профессионалов, 90% в программировании, игнориру-
ются.
В книге используются лишь самые элементарные возможности
паскаля. Обширные возможности, предоставляемые современными ин-
тегрированными программными средами, остаются невостребованными.
(Не говоря уже о том, что паскаль уже вообще устарел, вытеснен-
ный языком Си.)
Игрушечные головоломки, которым посвящена книга, никому не
нужны. Если же перед Вами встанет действительно важная задача,
неужели Вы не справитесь с ней сами, без непрошеных учителей и
советчиков?
Короче говоря, покупать эту книгу глупо - особенно теперь,
когда выходит столько переводных руководств, написанных в циви-
лизованных странах настоящими профессионалами."
<<<... | 27—18 | 17—8 | ...>>> Всего сообщений в теме: 1147; страниц: 115; текущая страница: 114
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|