Здравствуйте, LaptevVV, Вы писали: LVV>Не отказались. Первый шаг проверки — это именно выполнение.
А, ок.
S>>Зачем вы хотите контролировать процесс написания решения, а не только результат? LVV>Если выполнение проходит, то надо структуру программы все равно смотреть.
Структура — это совсем другое, чем я понял из предыдущих сообщений. Структура — это всё равно результат.
Один сначала пишет вызов, а потом оборачивает в try/finally. Другой — сначала пишет блок try, а потом уже вписывает вызов.
Важно, чтобы не пытались обойтись без try/finally — по моему опыту, студенты сдают программы, которые работают "иногда".
Понять, что надо писать так, чтобы работало "всегда", им очень трудно — в первую очередь, из-за отсутствия опыта.
Смоделировать тестами все ситуации (вроде разрыва соединения в середине процесса копирования, или нехватки памяти при выделении буфера) крайне тяжело. Whitebox подход в этом плане рулит.
LVV>Почему надо обязательно смотреть струткуру. Например, задание — написать быструю сортировку. LVV>Студень вместо реализации пишет вызов стандартной функции. Такая прога гарантировано все тесты. LVV>Но задание-то не выполнено!
Отличный ход мысли.
LVV>Сейчас мы приступаем к реализации полного цикла лаб для первоначально обучения программированию — от простых линейных алгоритмов до функций. LVV>Каждая лаба — это задание по теме, всего 20 вариантов. Задания специально делали однотипные, но разные. LVV>Это дало возможность состряпать нечто вроде каркаса-шаблона с параметрами для результирующей программы одного варианта. LVV>На место параметров подставляется конкретный вариант. LVV>Таким образом, у всех студентов проги должны быть весьма похожи. И похожи на каркас-шаблон (который мы им не покажем... ). LVV>Остается определить метрику схожести-различия, чтобы на основании получаемого измерения схожести-различия принимать решение о качестве работы студента. LVV>Для текстового представления такую метрику подобрать сложнее. Символы — слишком координаты этой функции многих переменных. LVV>Расстояние Левенштейна — не предлагать...
Ага. То есть вы хотите видеть определённую структуру AST. Чтобы все нужные блоки были на месте. Это уже интересно.
Ну, то есть я бы начал с экспериментов именно с языком описания критериев соответствия программ — потому что страшно сначала угрохать полгода вечеров на разработку AST-ориентированного редактора, а потом понять, что практического применения не найдётся. Ну там, что описание требований к программе будет чудовищно многословным, или что хитрые студенты смогут протаскивать через него несоответствующие программы из-за ограниченности ума проверяющего алгоритма, и т.п.
S>>Как именно "профессор" описывает задачи, чтобы среда потом им обучала? LVV>Лаба готовится непосредственно в среде. LVV>В узле-комментарии можно лепить все, что можно в RTF. LVV>B прямо в этом доке вставляется модуль-программа. Если в ней все определено, то ее можно выполнить. LVV>Опять же параметры не полностью определенной проги задаются узлом-комментарием. LVV>Мы сейчас делаем простой скриптовый язык, чтобы задавать параметры. Несколько вариантов уже в качестве курсовых — писали студенты 2 курса. LVV>Сейчас уточняем непосредственно в среде — делая доки прямо в ней. LVV>И интерпретатор подобных узлов комментариев.
Вот это место мне непонятно. То есть очевидно, что у меня в голове есть какая-то модель (как бы я решал эту задачу), и она явно не соответствует тому, что есть у вас.
Моя умственная модель — примерно такая: имеем набор критериев про AST программы, выраженных в форме простых предикатов на деревьях. Первое, что сюда просится — XPath, как industry-proven язык работы с древовидными данными.
Таким образом, мы можем потребовать всяких штук — например, что автор определил функцию сравнения элементов, причём выразил её в виде замыкания.
Можем потребовать, чтобы имелась обработка ошибок — скажем, нужный нам вызов вложен в блок try, в catch которого ловится нужное нам исключение.
С каждым предикатом мы можем ассоциировать текст комментария, который выводится при его провале. Студент, написав "решение", проверяет его, и получает осмысленные замечания на тему того, что не нравится верификатору.
Эта модель, понятное дело, страдает большим недостатком — она построена без учёта реальных задач, которые должны быть ею описуемы.
Возможно, она вообще делает не то, что нужно. Скажем, в курсах Microsoft все задачки сводятся к вписыванию небольших фрагментов в уже почти готовую программу. Это позволяет студенту не тратить время на борьбу с инфраструктурой, а сразу заняться деятельностью по теме урока; а также обучает его примерам хорошего стиля и качества кода.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[11]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, LaptevVV, Вы писали:
LVV>Это вы откуда такой вывод сделали? Исходя из вашего опыта обучения?
Скорее преподавания. Если мне надо научить студента думать, я именно это и делаю. Та же быстрая сортировка это отличный пример. Написал? Что будет если на вход подать пустой массив? А если null? А какая у твоей имплементации сложность? Как ты ее оценил? А почему у тебя получился квадратичный алгоритм вместо логарфмического? А теперь давай подумаем как обобщить алгоритм на произвольные коллекции. Сам найдешь как этот паттерн называется? Напиши performance тест на этот алгоритм. Что это такое ты тут измерил? Давай сравним скорость с пузырьком и с библиотечной имплементацией quicksort. Объяснишь результаты? и т.д.
Re[15]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, vdimas, Вы писали:
V>А зачем рассеивать внимание студента на подробностях синтаксиса какого-то ЯП при обучении алгоритмизации?
Потому что в дальнейшем он будет заниматься алгоритмизацией именно в рамках синтаксиса конкретного языка. Посмотри как устроен курс Introduction to ML. Ребята не стали придумывать "семантический" велосипед и взяли Octave. Для каждого задания студенту дается некоторый каркас в котором весь ввод-вывод уже написан и осталос только написать несколько функций. С одной стороны это позволяет студенту сосредоточится на главном, с другой -- проявить любопытство и узнать как на самом деле оно работает.
Re[12]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, Miroff, Вы писали:
M>Здравствуйте, LaptevVV, Вы писали:
LVV>>Это вы откуда такой вывод сделали? Исходя из вашего опыта обучения?
M>Скорее преподавания. Если мне надо научить студента думать, я именно это и делаю. Та же быстрая сортировка это отличный пример. Написал? Что будет если на вход подать пустой массив? А если null? А какая у твоей имплементации сложность? Как ты ее оценил? А почему у тебя получился квадратичный алгоритм вместо логарфмического? А теперь давай подумаем как обобщить алгоритм на произвольные коллекции. Сам найдешь как этот паттерн называется? Напиши performance тест на этот алгоритм. Что это такое ты тут измерил? Давай сравним скорость с пузырьком и с библиотечной имплементацией quicksort. Объяснишь результаты? и т.д.
А мы что делаем? Ровно это и делаем. Но чтобы решать уравнения сначала надо таблицу умножения выучить, блин!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[16]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, Miroff, Вы писали:
M>Здравствуйте, vdimas, Вы писали:
V>>А зачем рассеивать внимание студента на подробностях синтаксиса какого-то ЯП при обучении алгоритмизации?
M>Потому что в дальнейшем он будет заниматься алгоритмизацией именно в рамках синтаксиса конкретного языка. Посмотри как устроен курс Introduction to ML. Ребята не стали придумывать "семантический" велосипед и взяли Octave. Для каждого задания студенту дается некоторый каркас в котором весь ввод-вывод уже написан и осталос только написать несколько функций. С одной стороны это позволяет студенту сосредоточится на главном, с другой -- проявить любопытство и узнать как на самом деле оно работает.
1. Не-а. Синтаксис у нас переключается одной кнопочкой.
2. Любопытные студенты почти исчезли как класс...
Летом вел летнюю школу для 2 курса. Программные инженеры. Сознательно шли на эту специальность.
Мой к ним вопрос: Что для вас важнее — научиться или сдать. Ответ ВСЕХ: сдать. Потом как-нибудь научимся...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[15]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, vdimas, Вы писали:
V>А зачем рассеивать внимание студента на подробностях синтаксиса какого-то ЯП при обучении алгоритмизации?
При изучении алгоритмизации студенту потребуется тетрадь с конспектами, ручка, немного мозгов и много внимания и терпения. Преподавателю знание предметной области, доска и мел. Причем тут некомпилирующие компиляторы, редакторы блок-схем и прочие "инновации"?
Re[17]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, LaptevVV, Вы писали:
LVV>Мой к ним вопрос: Что для вас важнее — научиться или сдать. Ответ ВСЕХ: сдать. Потом как-нибудь научимся...
А ты ждал чего-то другого? На первом курсе им ясно дали понять: мы будем учить вас всякой бесполезной фигне, а то что вам нужно вы потом сами освоите. Теперь мотивация уже сформирована: отсдеть номер, столкнуть зачет чтоб не отчислили, а потом уже у станка потихоньку разобраться.
Re[18]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, Miroff, Вы писали:
M>Здравствуйте, LaptevVV, Вы писали:
LVV>>Мой к ним вопрос: Что для вас важнее — научиться или сдать. Ответ ВСЕХ: сдать. Потом как-нибудь научимся...
M>А ты ждал чего-то другого? На первом курсе им ясно дали понять: мы будем учить вас всякой бесполезной фигне, а то что вам нужно вы потом сами освоите. Теперь мотивация уже сформирована: отсдеть номер, столкнуть зачет чтоб не отчислили, а потом уже у станка потихоньку разобраться.
Не судите о том, чего не знаете.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[18]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, Miroff, Вы писали:
M>Здравствуйте, LaptevVV, Вы писали:
LVV>>Мой к ним вопрос: Что для вас важнее — научиться или сдать. Ответ ВСЕХ: сдать. Потом как-нибудь научимся...
M>А ты ждал чего-то другого? На первом курсе им ясно дали понять: мы будем учить вас всякой бесполезной фигне, а то что вам нужно вы потом сами освоите. Теперь мотивация уже сформирована: отсдеть номер, столкнуть зачет чтоб не отчислили, а потом уже у станка потихоньку разобраться.
Добавлю. Как выяснилось, они совсем не изучали в школе программирование.
И переоценили свои силы и способности.
О чем разговор, если студенты в конце семестра меняют тему курсовой работы, поскольку не в состоянии справиться с ранее заявленной темой.
Сами выбирали, сами признались, что не могут.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[19]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, grosborn, Вы писали:
G>А в итоге все-равно выйдут с дипломами. Главное что бы человек был хороший
Профессор Laptev учил ! Светило мировой CS науки
Re[19]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, LaptevVV, Вы писали:
LVV>Добавлю. Как выяснилось, они совсем не изучали в школе программирование.
Есть такое место, СУНЦ НГУ, оно же Новосибирское ФМШ. Так вот, раньше, когда оно еще было бесплатным, народ туда попадал совершенно разного уровня. В том числе и те, кто компьютера даже издали не видал. И ничего, за двухнедельный интенсив всех дотягивали до приемлемого уровня.
Re[21]: Джон Кармак о науке и искусстве разработки ПО
> G>А в итоге все-равно выйдут с дипломами. Главное что бы человек был хороший > Профессор Laptev учил ! Светило мировой CS науки
Ты все-таки неадекват
Да поправят мнея если я неправ, Лаптев преподаватель. Не светило науки, не черный олигарх, не светлый патриарх, не попил бюджетного бабла. Это преподаватель в вузе. Твои претензии просто не по адресу.
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[16]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, AndrewVK, Вы писали:
V>>А зачем рассеивать внимание студента на подробностях синтаксиса какого-то ЯП при обучении алгоритмизации? AVK>Для устранения подробностей синтаксиса устранять текстовое представление не нужно.
Можно пример?
Re[17]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, Miroff, Вы писали:
Ф>>И много вы знаете преподавателей, которые что-нибудь пилят? Ф>>ПУСТЬ ПИЛЯТ! M>Ладно бы он для себя пилил, так ведь он студентов портит.
Еще ни одного школьника программирование на Спектруме в своё время не испортило. По моим наблюдениям — ровно наоборот.
То, что сейчас интерес к программированию в школьном возрасте резко упал — медицинский факт. Может даже от того, что хоть какие-то элементы или сценки понравившихся игр в наше время мог запрограммировать даже школьник при определенном упорстве... а сейчас сложность тех же игр такова, что при попытке начать изучать программирование, первым наблюдением будет лишь пропасть м/у собственными возможностями и готовыми программами коммерческого кач-ва... Предположу, что при таком раскладе детское любопытство просто отшибается.
Поэтому, охотно верю, что учить надо вообще с 0-ля.
Re[19]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Miroff, Вы писали:
M>>Здравствуйте, LaptevVV, Вы писали:
LVV>>>Мой к ним вопрос: Что для вас важнее — научиться или сдать. Ответ ВСЕХ: сдать. Потом как-нибудь научимся...
M>>А ты ждал чего-то другого? На первом курсе им ясно дали понять: мы будем учить вас всякой бесполезной фигне, а то что вам нужно вы потом сами освоите. Теперь мотивация уже сформирована: отсдеть номер, столкнуть зачет чтоб не отчислили, а потом уже у станка потихоньку разобраться. LVV>Добавлю.
Не надо ничего добавлять. Был задан совершенно справедливый вопрос: чего вы еще ожидали, какие еще варианты ответа возможны? "Главное — научиться(в пределах первого курса), а что не сдадим и со второго курса отчислят — так не беда, диплом в переходе купим" или еще какие-то?
Re[14]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, AndrewVK, Вы писали:
AVK>Зачем для этого отказываться от нормального текстового исходника? AVK>Зачем для этого отказываться от нормального текстового исходника? AVK>Зачем для этого отказываться от нормального текстового исходника?
Вообще-то надо поставить вопрос немного наоборот: 1) зачем и 2) в каком виде надо сохранять "нормальный текстовый исходник" или его часть?
The God is real, unless declared integer.
Re[18]: Джон Кармак о науке и искусстве разработки ПО
Здравствуйте, Miroff, Вы писали:
M>Здравствуйте, LaptevVV, Вы писали:
LVV>>Добавлю. Как выяснилось, они совсем не изучали в школе программирование.
M>Есть такое место, СУНЦ НГУ, оно же Новосибирское ФМШ. Так вот, раньше, когда оно еще было бесплатным, народ туда попадал совершенно разного уровня. В том числе и те, кто компьютера даже издали не видал. И ничего, за двухнедельный интенсив всех дотягивали до приемлемого уровня.
Раньше — все было, и куры и яйца...
Я сам компьютеры увидел только в универе. Но это не помешало мне научиться.
Раньше учили так, а теперь — не так. Вот мы плоды и пожинаем...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!