Здравствуйте, Ikemefula, Вы писали:
I>Мне кажется идейка с языком заведомо тупиковая и причиной тому недостаточная мотивация у студентов и необходимость давать кроме языка еще чтото.
1. Какой-то язык должен быть все равно.
2. Брать майнстримовский язык — значит:
— выделять минимально-необходимое для обучение подмножество;
— создавать для него собственные компилятор|интерпретатор.
Проще сделать с нуля... I>Если глянуть на самые толковые буквари по программированию, навроде sicp, то заметно, что там идет подача материала не от языка, а от задач. I>То есть, нужно подготовить набор задач, которые 1 интересны 2 актуальны 3 раскрывают возможности языка
1. Для студентов, которые СОВСЕМ НЕ ЗНАКОМЫ с программированием интересными являются задачи, намного превышающие их возможности. Например, написание игры с графикой...
2. Актуальность — понятие относительное. Вот например, актуальна задача оценивать качество кода программы.
Опять же студенты, не знакомые с программированием, не в состоянии это сделать даже за семестр.
3. Язык не должен быть сложным. I>сам же язык нужно брать из мейнстрима, только попроще. Собственно с языком никогда не бывает сложностей, если есть хорошие задачи.
Еще как бывает — см. новый стандарт С++. И шаблоны того же С++... I>Еще интересная идейка у мит, это подача материала на заранее заготовленых библиотеках. Т.е. студент не пишет полностью всю задачу, а дописывает имеющиеся.
Смотри книгу Бертрана Мейера "Почувствуй класс". Кто у кого спер идею?
Эта идея — развитие нашей разработки. В будущем. Держим в уме и не забываем.
Пока только фундамент, да и то еще не весь...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, boot, Вы писали:
B>Здравствуйте, LaptevVV, Вы писали:
LVV>>Вы забываете все время, что народ учит "таблицу умножения"...
B>Забыл самое главное написать человек, который первым придумал как умножать числа, стопудово не учил таблицу умножения.
ЕЕ еще не было... Она появилась ПОСЛЕ него. Но раз уж она появилась — ее надо знать.
И не сравнивайте гения и студента 1 курса...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
I>>Мне кажется идейка с языком заведомо тупиковая и причиной тому недостаточная мотивация у студентов и необходимость давать кроме языка еще чтото. LVV>1. Какой-то язык должен быть все равно. LVV>2. Брать майнстримовский язык — значит: LVV>- выделять минимально-необходимое для обучение подмножество; LVV>- создавать для него собственные компилятор|интерпретатор.
А почему готовый нельзя взять ?
I>>Если глянуть на самые толковые буквари по программированию, навроде sicp, то заметно, что там идет подача материала не от языка, а от задач. I>>То есть, нужно подготовить набор задач, которые 1 интересны 2 актуальны 3 раскрывают возможности языка LVV>1. Для студентов, которые СОВСЕМ НЕ ЗНАКОМЫ с программированием интересными являются задачи, намного превышающие их возможности. Например, написание игры с графикой...
В мит используют роботов. Еще есть много других вещей похожих -- террариумы/арены всех сортов и видов. Вобщем игровых полезных вещей вобщем довольно много. С графикой вобщем не так сложно как кажется, только нужен хороший движок который позволит вникать в эту область постепенно осваивая и язык и структуры данных и всякую всячину.
У бертрана мейера тупиковая ветка развития — обучение "от языка" хотя выглядит будто с задач начинает.
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, boot, Вы писали:
B>>Здравствуйте, LaptevVV, Вы писали:
LVV>>>Вы забываете все время, что народ учит "таблицу умножения"...
B>>Забыл самое главное написать человек, который первым придумал как умножать числа, стопудово не учил таблицу умножения. LVV>ЕЕ еще не было... Она появилась ПОСЛЕ него. Но раз уж она появилась — ее надо знать.
А вот преподаватель тот считал иначе, что даже ее надо _понимать_, и я с ним согласен. Только он посвятил этому жизнь, а я только мнение.
LVV>И не сравнивайте гения и студента 1 курса...
Понимаю, что сырье Вам попадает совсем "сырое", и направить его в другое русло проблемно. Программист еще как-то может выбирать с кем ему работать, а преподаватель увы.
Здравствуйте, LaptevVV, Вы писали:
LVV>- конструкции языка должны удовлетворять принципам структурного программирования (единственный вход и единственный выход);
Означает ли это, что ни один "оператор" (правильнее, как мне кажется, термин "предложение" aka statement) в блоке не имеет права выбросить исключение?
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, LaptevVV, Вы писали:
I>А почему готовый нельзя взять ?
Потому как нам нужно кое-что делать со внутренней структурой программы.
Опять же
— либо копаться в чужой разработке, чтобы вклеиться в нужные места
— либо делать самим именно так, как нам надо.
Опыт первого имеем. На примере полного анализа C# от исходного кода до кода сборки. Больше не хотим. I>>>Если глянуть на самые толковые буквари по программированию, навроде sicp, то заметно, что там идет подача материала не от языка, а от задач. I>>>То есть, нужно подготовить набор задач, которые 1 интересны 2 актуальны 3 раскрывают возможности языка LVV>>1. Для студентов, которые СОВСЕМ НЕ ЗНАКОМЫ с программированием интересными являются задачи, намного превышающие их возможности. Например, написание игры с графикой...
В состав стандартной библиотеки входит модуль графики и отдельный модуль черепашки. Так что реализуем... I>В мит используют роботов. Еще есть много других вещей похожих -- террариумы/арены всех сортов и видов. Вобщем игровых полезных вещей вобщем довольно много. С графикой вобщем не так сложно как кажется, только нужен хороший движок который позволит вникать в эту область постепенно осваивая и язык и структуры данных и всякую всячину.
Роботы-черепашки — конечно и всенепременно.
Но мы будем делать их а) в нашей среде;
б) на нашем языке. I>У бертрана мейера тупиковая ветка развития — обучение "от языка" хотя выглядит будто с задач начинает.
не. У него от задач. У него там реализована мощная библиотека классов — карта Парижу... И студенты пишут проги с испоьзованием этой проги — решают всякие задачи на карте. Типа маршрут на метро...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Vlad_SP, Вы писали:
V_S>Здравствуйте, LaptevVV, Вы писали:
LVV>>- конструкции языка должны удовлетворять принципам структурного программирования (единственный вход и единственный выход);
V_S>Означает ли это, что ни один "оператор" (правильнее, как мне кажется, термин "предложение" aka statement) в блоке не имеет права выбросить исключение?
1. Естественно, statement. Но в русской литературе издавна пишется оператор. Поэтому и мы так пишем.
2. Да. Не имеет право.
3. Исключений в языке пока нет. Мы тут крепко думаем, стоит ли их вводить. А если стоит, то с какой семантикой.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Vlad_SP, Вы писали:
LVV>>- конструкции языка должны удовлетворять принципам структурного программирования (единственный вход и единственный выход); V_S>Означает ли это, что ни один "оператор" (правильнее, как мне кажется, термин "предложение" aka statement) в блоке не имеет права выбросить исключение?
Добавлю.
мы думаем, что язык для профи, и язык для обучения — это разные вещи.
Однако в обучающей среде можно это реализовать ОДИН язык. Но разделить его на уровни.
Сначала — минимальное количество понятий.
По мере обучения учню разрешается пользоваться все более сложными понятиями-конструкциями.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
I>>У бертрана мейера тупиковая ветка развития — обучение "от языка" хотя выглядит будто с задач начинает. LVV>не. У него от задач. У него там реализована мощная библиотека классов — карта Парижу... И студенты пишут проги с испоьзованием этой проги — решают всякие задачи на карте. Типа маршрут на метро...
Я видел, но это не то что надо. У него от задачи до решения целый вагон слайдов, слов и прочего мусора. Карта Парижа это хорошо, но подход у него плохой — "вот задача, вот классы, вот наследование" А перед этим у него пол-лекции объясняется про классы и наследование.
Все эти вещи нужно выводить в порядке необходимости. Самую первую задачу нужно решать вообще не вводя никаких понятий.
Здравствуйте, Ikemefula, Вы писали:
I>Я видел, но это не то что надо. У него от задачи до решения целый вагон слайдов, слов и прочего мусора. Карта Парижа это хорошо, но подход у него плохой — "вот задача, вот классы, вот наследование" А перед этим у него пол-лекции объясняется про классы и наследование. I>Все эти вещи нужно выводить в порядке необходимости. Самую первую задачу нужно решать вообще не вводя никаких понятий.
Не. Понятие исполнителя и программы для него — по-любому надо вводить и объяснять...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
I>>Я видел, но это не то что надо. У него от задачи до решения целый вагон слайдов, слов и прочего мусора. Карта Парижа это хорошо, но подход у него плохой — "вот задача, вот классы, вот наследование" А перед этим у него пол-лекции объясняется про классы и наследование. I>>Все эти вещи нужно выводить в порядке необходимости. Самую первую задачу нужно решать вообще не вводя никаких понятий. LVV>Не. Понятие исполнителя и программы для него — по-любому надо вводить и объяснять...
Ну, это надо Но у Мейера какая то вакханалия — целая пачка понятий прежде чем будет само решение.
Здравствуйте, LaptevVV, Вы писали:
LVV>1. Для студентов, которые СОВСЕМ НЕ ЗНАКОМЫ с программированием интересными являются задачи, намного превышающие их возможности. Например, написание игры с графикой...
Я помнится давал уже ссылку на стенфордский CS61A. Меня очень впечатлило как там учат именно с нуля. А там берется мейнстримовский язык (Java, Eclipse), на него навешивается библиотека, которая скрывает кучу деталей. И первые несколько лекций двигаем робота и пытаемся решить задачи с использованием этой либы. Инструкция для идиотов как поставить, что нажать, куда смотреть. А далее уже идет сам язык, типа помните мы двигали робота, а теперь рассмотрим как это внутри работает. И далее либы давали, которые скрывали детали работы с графикой, брали всю хитрую инициализацию на себя, и студенты фокусировались именно на задаче. И одна программа работала сразу и в браузере, и как десктопное приложение.
Этот путь мне понравился гораздо больше, чем использование языков типа Scratch и BYOB как в Беркли и Гарварде. И он поинтереснее чем Python в MIT.
Так вот, ИМХО лучше б пойти по пути Стенфорда. Пусть классы на русском, пусть пакеты на русском, пусть переменные на русском — это не важно. Нужно еще и операторы русские — за основу можно плюсы взять, макросами переименовать операторы и абсолютно также использовать.
Здравствуйте, LaptevVV, Вы писали:
LVV>И наконец, среда должна предоставлять стандартную библиотеку в виде набора модулей на учебном языке.
Если пойдете по пути создания учебного именно языка, а не учебных библиотек к существующему языку — у студентов вряд ли возникнет мысль, что если чего то не хватает в промышленном языке, то нужно писать либы, а не брать другой язык. Этих учебных языков понаписали черти сколько, в том числе с русским синтаксисом. Зачем еще один учебный?
Если же пойти по созданию учебных библиотек, то эти библиотеки могут развиться в либы для промышленного применения и стать стандартом, соответственно будет огромная польза.
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, LaptevVV, Вы писали:
LVV>>И наконец, среда должна предоставлять стандартную библиотеку в виде набора модулей на учебном языке. E>Если пойдете по пути создания учебного именно языка, а не учебных библиотек к существующему языку — у студентов вряд ли возникнет мысль, что если чего то не хватает в промышленном языке, то нужно писать либы, а не брать другой язык. Этих учебных языков понаписали черти сколько, в том числе с русским синтаксисом. Зачем еще один учебный? E>Если же пойти по созданию учебных библиотек, то эти библиотеки могут развиться в либы для промышленного применения и стать стандартом, соответственно будет огромная польза.
Ну дык!
Берем и пишем список... Очередь, стек — реализуем на массиве и на списке...
И т. п. Задачи будем придумывать. Благо, минимальная графика есть...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Ну дык! LVV>Берем и пишем список... Очередь, стек — реализуем на массиве и на списке... LVV>И т. п. Задачи будем придумывать. Благо, минимальная графика есть...
Это 100 раз уже делали. Абсолютно не важно с использованием паскаля, си, жабы, шарпа, или нового русского учебного языка программирования. Банально, все так делают.
ИМХО совсем для начинающих нужно вначале не стеки реализовывать, а космическим кораблем с прекрасной анимацией доставать за Землю полезные ископаемые с астероидов в автоматическом режиме, используя примитивы вроде просканировать пространство спереди, повернуть на 90 градусов, включить двигатели, выключить двигатели. Чтоб перемещение из точки A в B выносили в процедуры, чтоб нахождение самого крупного скопления астероидов тоже выносили в процедуры, и чтоб ихнюю программу было легко читать. Если космические корабли не круто — управлять в автономном режиме роботом мачо аля Бендер из Футурамы, который ходит по улице, определяет нужный пол, делает знакомство, угадывает некоторые желания и доводит до койки — а затем делает чтоб партнерша отвязалась и снимает следующую. Мир сделать общим, придумать правила, и сделать соревнования между программами студентов, кто больше снимет . А начальное количество действий, которые можно делать — крайне ограниченным, чтоб было необходимо выделять процедуры. И особенно было б круто, если б управление всем этим делалось в рамках обычного ЯП. Чтоб потом не говорили, что типа просто структурировано и компактно можно только на астраханском учебном языке писать, а на обычных промышленных языках типа положено говнокодить. Чтоб с первых же курсов пример был как нужно писать!
Для CS61B кстати в том же стенфорде как раз плюсы идут, и у них тоже собственная библиотека, которая кроссплатформенная, поддерживает графику, обеспечивает более читаемые, чем в STL списки, стеки, очереди и тому подобное.