Автор Тема: Оберон в образовании.  (Прочитано 103321 раз)

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #15 : Февраль 17, 2011, 04:33:16 pm »
... варить суп.
  ;D
Тогда язык, используемый при обучении, должен быть достаточно универсальным. Это нужно для того, чтобы он хорошо подходил для решения тех учебных задач, которые будет задавать учитель. Тогда ученику не придётся "варить суп из ножовки". Кстати, решение этих задач, как мы понимаем  ;), не сама цель.

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #16 : Февраль 17, 2011, 04:38:44 pm »
... тех учебных задач, которые будет задавать учитель.
Мы, конечно, понимаем, что никто не будет заставлять 10-классника разрабатывать программное обеспечение для орбитального комплекса...

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #17 : Февраль 17, 2011, 04:42:26 pm »
Кстати, для орбитального комплекса, не реального конечно, а модели, это было бы здорово! По кр. мере мотивация бы сразу повысилась. :-)  Это ж замкнутый жилой комплекс! Там и мальчикам есть где развернуться, и девочкам.

А насчет требования универсальности... Инструмент должен быть конечно достаточно универсальным, но нужно иметь меру, а то окажется что и ножку отпиливаем и суп варим, и дрова колем, и штаны зашиваем вот этим: http://www.youtube.com/watch?v=Ek2dQx00DkU (советую досмотреть до конца, вначале там скучновато). :-)
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #18 : Февраль 17, 2011, 05:06:11 pm »
Да, уж! Я всё ждал, когда они из неё стрелять начнут. Но автомата Калашникова из неё так и не получилось :)

Galkov

  • Newbie
  • *
  • Сообщений: 3
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #19 : Февраль 17, 2011, 05:23:51 pm »
Главное чтобы он не мешал.
Ключевая фраза :)
И у меня моментальная ассоциация: на форуме HiAsm я обычно произносил: он мне помогает думать.

Вот Вы говорите про 16-летних - так там и 10 летние за два дня осваивают.
Главная беда, лично меня крайне огорчающая - все это в ущерб эффективности. Грубо говоря, рисовать фракталы - удовольствие ниже среднего. А то я Вам уж порассказал бы, чего следует использовать в образовании  :D
Но, пока - увы... Будем надеяться пока.

Валерий Лаптев

  • Jr. Member
  • **
  • Сообщений: 58
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #20 : Февраль 17, 2011, 08:00:33 pm »
Добавлю свои 20 копеек.
1. Если говорить о совсем начинающих, то последние полгода у меня сложилось впечатление, что начинать нужно на родном языке. Программа тогда выглядит почти как псевдокод, описываемый во многих книжках. Мы у себя попробовали с первого дня учить студней на Кумире. Вроде неплохо получилось.
Сейчас те же студни будут в одном курсе изучать С/С++, в другом - КП. Посмотрим, что получится.
Причем обучаться будут по схеме, которую я на основном форуме упоминал: за неделю выдается материал, потом лаба делается в контрольном режиме.
2. В настоящее время нельзя отрывать язык от инструментальной среды. И тут я должен вам со всей ответственностью заявить, что среды лучше, чем ББ я еще не встречал. Хотя я писал практически на всем, что было. А сейчас в студии - только еще на Додиезе не начал писать, не нужно пока.
Конечно, в библиотеке может быть, чего-то не хватает, но...
Сам принцип компонентно-расширяемой среды - остальным до этого еще ползти и ползти...
Школьная сборка наглядно продемонстрировала, насколько адаптивен ББ+КП.
Ткачев проделал колоссальную и очень важную работу: школьному учителю слабал инструмент и написал все инструкции - прямо в среде в виде помощи.   

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #21 : Февраль 17, 2011, 08:14:03 pm »
Я бы советовал, в качестве расширения кругозора, посмотреть ещё Racket (как раз недавно новая версия вышла: http://www.linux.org.ru/news/opensource/5909095 http://en.wikipedia.org/wiki/Racket_(programming_language) ). Основной язык там -- модификация scheme. Но также там например есть реализация Алгола-60. Вообще букет языков. Применяется также в обучении программированию.

Вдруг полезным окажется?
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Валерий Лаптев

  • Jr. Member
  • **
  • Сообщений: 58
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #22 : Февраль 17, 2011, 08:17:35 pm »
Спасибо за ссылки - обязательно посмотрю.

DIzer

  • Гость
Re:Оберон в образовании.
« Ответ #23 : Февраль 23, 2011, 09:42:49 am »
Тут можно таки спокойно обсудить место оберона в образовательном процессе.

Мое мнение (я не преподаватель, так что это мнение со стороны): Oberon хорош как пример типичного императивного структурного языка без украшательств. На его примере хорошо показывать какие проблемы решает структурное программирование, и, однако, какие проблемы в ИЯ остаются не решенными. Хорошо Оберон в этом случае проходить на пару с Си, показав что несмотря на внешние отличия (синтаксис) сущность едина в общем то, и имеется общий сет проблем.

....
У меня , как преподавателя , нет оснований для рассмотрения Оберона в качестве основного ЯП (универсальный ответ на все потребности) в обучении. Но в качестве начального ЯП  он может быть востребован при освоении курсов (ЯП, Информатика) студентами -первокурсниками естественных и не вполне естественных специальностей (для них он может оказаться и конечным). Основание - практически все алгоритмы и конструкции с помощью которых иллюстрируются подобные курсы - отображаются на язык с минимальным количеством артефактов, которые привносит исполнитель (железяка). По сути дела речь идет о том, что решение задачи на обероне  достаточно близко человеческому описанию алгоритма... Но есть и недостатки... Самый большой - невоможность возвращения процедурой -функцией значений составного типа...Приходится использовать указатели - вводить сущность не продиктованную задачей..., ну и пара мелких неудобств - индексация массивов с 0 - приводит к частым ошибкам студентов в составлении своих и главное  - адаптации готовых алгоритмов, инверсия условия продолжения в цикле с постусловием...
А насчет иллюстрации проблем.... - для того чтобы их иллюстрировать- их нужно для начала ощущать, но и этого мало- степень раздражения от этих ощущений (их значимость) должна быть довольно высока... короче это не для 1,2,3 курсников.
« Последнее редактирование: Февраль 23, 2011, 09:49:00 am от DIzer »

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Оберон в образовании.
« Ответ #24 : Февраль 23, 2011, 03:07:25 pm »
1) Что мешает использовать OUT-параметры? Желание записать композицию нескольких функций и не вводить промежуточных переменных? Это идёт от желания (предрассудка?) быть ближе к обычной математической записи? Не буду возражать на все 100% против возврата структур... но проблемы там возникают. А бонусы - ну давайте подумаем. Если возвращается структура, то она обычно неинкапсулирована (код работает с её составляющими). Те же комплексные числа или векторы. В таком случае я сразу предпочту записать в несколько отдельных строк и с отдельными пром. переменными, а не воротить одно выражение, иллюзорно простое (как тензорная форма, в которой в индексах ногу свернёшь, сложность только маскируется во многих случаях, лучше уж видеть всю пачку обычных уравнений).
Если же объекты действительно инкапсулированные, т.е. атомарны с точки зрения алгоритма, то они обычно являются указательными (длинные числа и т.п.)

2) Умение работать с нумерованными массивами с 0 - фундаментально, потому что любые операции со смещениями (хоть в той же обработке растровых изображений), представления многомерных структур в виде одномерных развёрток требуют думать именно вот от этого нуля. Лучше один раз объяснить, почему ноль, нарисовать массив снутри, добиться, чтоб при написании индекса эта картинка в голове всплывала, отбить житейское понимание индекса "как номера".

3) Цикл с условием в конце не нужен вообще. В алгоритмах - точно не нужен. Единичные случаи его использования как раз возникают далеко не в прикладном коде (типа "попробовать несколько раз выполнить операцию, пока не получится").

Пожелание - не использовать безграмотный термин "цикл с постусловием", иначе сразу ощущение, что человек не знает, что такое постусловие.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #25 : Февраль 23, 2011, 03:52:56 pm »
1) Что мешает использовать OUT-параметры? Желание записать композицию нескольких функций и не вводить промежуточных переменных? Это идёт от желания (предрассудка?) быть ближе к обычной математической записи?

Математика здесь не причем. Просто более читабельная, естественная и однородная запись:
x := y;
z := f(x);

Однозначно видно откуда и куда текут данные, и кто от кого зависит. OUT параметры сразу все ломают. Почти как goto ломает поток выполнения ;)

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Оберон в образовании.
« Ответ #26 : Февраль 23, 2011, 04:27:01 pm »
В некоторых случаях мне тоже иногда видится запись типа:
(d, e, f) := f(a, b, c)

Но есть ещё VAR-параметры (и только не надо вот функционального экстремизма :) ), как их увязывать?
Общий способ "подпаяем контакты внутри скобок" как-то наиболее универсальный получается.
Хотя метить, что параметр VAR или OUT, я бы как-нибудь метил. Только коротко, потому что слишком часто писать out - такое загромождение.
Например, f(a, b, c, ^d, ^e, ^f)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #27 : Февраль 23, 2011, 04:41:39 pm »
Например, f(a, b, c, ^d, ^e, ^f)
Ну вот мы и вернулись к Си :-)
f(a,b,c,&d,&e,&f);
Нужны только указатели (ну, ссылками назовите, без разницы), out-параметры не нужны.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #28 : Февраль 23, 2011, 04:43:46 pm »
В некоторых случаях мне тоже иногда видится запись типа:
(d, e, f) := f(a, b, c)

Но есть ещё VAR-параметры (и только не надо вот функционального экстремизма :) ), как их увязывать?

Экстремизма, конечно, не надо. Но вот какие-то умолчательные паттерны как "хорошо" и как "плохо" - надо. Причем синтаксис должен поддерживать наиболее удобную/короткую/понятную запись для "хороших" паттернов. Неконстантные VAR параметры - плохо, соответственно пусть везде в местах вызовов пишут "BY REFERENCE" :) Шутка, конечно, можно и "^", но тем не менее.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #29 : Февраль 23, 2011, 04:52:58 pm »
Например, f(a, b, c, ^d, ^e, ^f)
Ну вот мы и вернулись к Си :-)
f(a,b,c,&d,&e,&f);
Нужны только указатели (ну, ссылками назовите, без разницы), out-параметры не нужны.

Угу. Сто лет уже не использовал указатели/ссылки для возврата значений (будучи на С++). Только для передачи модифицируемой структуры (вектор какой-нибудь) и только в "локальных" впомогательных функциях. В public интерфейсах, даже если результат - вектор, он идет в качестве нормального результата. В случаях, когда очевидно, что результат может быть очень большой и лишнее копирование недопустимо - возвращается смарт-поинтер (гарантировано ненулевой, хе-хе).