Re[11]: Джон Кармак о науке и искусстве разработки ПО
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.09.12 04:26
Оценка: 10 (1)
Здравствуйте, 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]: Джон Кармак о науке и искусстве разработки ПО
От: Miroff Россия  
Дата: 03.09.12 04:30
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Это вы откуда такой вывод сделали? Исходя из вашего опыта обучения?


Скорее преподавания. Если мне надо научить студента думать, я именно это и делаю. Та же быстрая сортировка это отличный пример. Написал? Что будет если на вход подать пустой массив? А если null? А какая у твоей имплементации сложность? Как ты ее оценил? А почему у тебя получился квадратичный алгоритм вместо логарфмического? А теперь давай подумаем как обобщить алгоритм на произвольные коллекции. Сам найдешь как этот паттерн называется? Напиши performance тест на этот алгоритм. Что это такое ты тут измерил? Давай сравним скорость с пузырьком и с библиотечной имплементацией quicksort. Объяснишь результаты? и т.д.
Re[15]: Джон Кармак о науке и искусстве разработки ПО
От: Miroff Россия  
Дата: 03.09.12 04:37
Оценка:
Здравствуйте, vdimas, Вы писали:

V>А зачем рассеивать внимание студента на подробностях синтаксиса какого-то ЯП при обучении алгоритмизации?


Потому что в дальнейшем он будет заниматься алгоритмизацией именно в рамках синтаксиса конкретного языка. Посмотри как устроен курс Introduction to ML. Ребята не стали придумывать "семантический" велосипед и взяли Octave. Для каждого задания студенту дается некоторый каркас в котором весь ввод-вывод уже написан и осталос только написать несколько функций. С одной стороны это позволяет студенту сосредоточится на главном, с другой -- проявить любопытство и узнать как на самом деле оно работает.
Re[12]: Джон Кармак о науке и искусстве разработки ПО
От: LaptevVV Россия  
Дата: 03.09.12 04:41
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Здравствуйте, LaptevVV, Вы писали:


LVV>>Это вы откуда такой вывод сделали? Исходя из вашего опыта обучения?


M>Скорее преподавания. Если мне надо научить студента думать, я именно это и делаю. Та же быстрая сортировка это отличный пример. Написал? Что будет если на вход подать пустой массив? А если null? А какая у твоей имплементации сложность? Как ты ее оценил? А почему у тебя получился квадратичный алгоритм вместо логарфмического? А теперь давай подумаем как обобщить алгоритм на произвольные коллекции. Сам найдешь как этот паттерн называется? Напиши performance тест на этот алгоритм. Что это такое ты тут измерил? Давай сравним скорость с пузырьком и с библиотечной имплементацией quicksort. Объяснишь результаты? и т.д.

А мы что делаем? Ровно это и делаем. Но чтобы решать уравнения сначала надо таблицу умножения выучить, блин!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[16]: Джон Кармак о науке и искусстве разработки ПО
От: LaptevVV Россия  
Дата: 03.09.12 04:47
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Здравствуйте, vdimas, Вы писали:


V>>А зачем рассеивать внимание студента на подробностях синтаксиса какого-то ЯП при обучении алгоритмизации?


M>Потому что в дальнейшем он будет заниматься алгоритмизацией именно в рамках синтаксиса конкретного языка. Посмотри как устроен курс Introduction to ML. Ребята не стали придумывать "семантический" велосипед и взяли Octave. Для каждого задания студенту дается некоторый каркас в котором весь ввод-вывод уже написан и осталос только написать несколько функций. С одной стороны это позволяет студенту сосредоточится на главном, с другой -- проявить любопытство и узнать как на самом деле оно работает.

1. Не-а. Синтаксис у нас переключается одной кнопочкой.
2. Любопытные студенты почти исчезли как класс...
Летом вел летнюю школу для 2 курса. Программные инженеры. Сознательно шли на эту специальность.
Мой к ним вопрос: Что для вас важнее — научиться или сдать. Ответ ВСЕХ: сдать. Потом как-нибудь научимся...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[15]: Джон Кармак о науке и искусстве разработки ПО
От: a_g_99 США http://www.hooli.xyz/
Дата: 03.09.12 04:55
Оценка:
Здравствуйте, vdimas, Вы писали:

V>А зачем рассеивать внимание студента на подробностях синтаксиса какого-то ЯП при обучении алгоритмизации?

При изучении алгоритмизации студенту потребуется тетрадь с конспектами, ручка, немного мозгов и много внимания и терпения. Преподавателю знание предметной области, доска и мел. Причем тут некомпилирующие компиляторы, редакторы блок-схем и прочие "инновации"?
Re[17]: Джон Кармак о науке и искусстве разработки ПО
От: Miroff Россия  
Дата: 03.09.12 04:58
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Мой к ним вопрос: Что для вас важнее — научиться или сдать. Ответ ВСЕХ: сдать. Потом как-нибудь научимся...


А ты ждал чего-то другого? На первом курсе им ясно дали понять: мы будем учить вас всякой бесполезной фигне, а то что вам нужно вы потом сами освоите. Теперь мотивация уже сформирована: отсдеть номер, столкнуть зачет чтоб не отчислили, а потом уже у станка потихоньку разобраться.
Re[18]: Джон Кармак о науке и искусстве разработки ПО
От: LaptevVV Россия  
Дата: 03.09.12 05:03
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Здравствуйте, LaptevVV, Вы писали:


LVV>>Мой к ним вопрос: Что для вас важнее — научиться или сдать. Ответ ВСЕХ: сдать. Потом как-нибудь научимся...


M>А ты ждал чего-то другого? На первом курсе им ясно дали понять: мы будем учить вас всякой бесполезной фигне, а то что вам нужно вы потом сами освоите. Теперь мотивация уже сформирована: отсдеть номер, столкнуть зачет чтоб не отчислили, а потом уже у станка потихоньку разобраться.

Не судите о том, чего не знаете.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[18]: Джон Кармак о науке и искусстве разработки ПО
От: LaptevVV Россия  
Дата: 03.09.12 05:11
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Здравствуйте, LaptevVV, Вы писали:


LVV>>Мой к ним вопрос: Что для вас важнее — научиться или сдать. Ответ ВСЕХ: сдать. Потом как-нибудь научимся...


M>А ты ждал чего-то другого? На первом курсе им ясно дали понять: мы будем учить вас всякой бесполезной фигне, а то что вам нужно вы потом сами освоите. Теперь мотивация уже сформирована: отсдеть номер, столкнуть зачет чтоб не отчислили, а потом уже у станка потихоньку разобраться.

Добавлю. Как выяснилось, они совсем не изучали в школе программирование.
И переоценили свои силы и способности.
О чем разговор, если студенты в конце семестра меняют тему курсовой работы, поскольку не в состоянии справиться с ранее заявленной темой.
Сами выбирали, сами признались, что не могут.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[19]: Джон Кармак о науке и искусстве разработки ПО
От: grosborn  
Дата: 03.09.12 05:24
Оценка:
> Сами выбирали, сами признались, что не могут.

А в итоге все-равно выйдут с дипломами. Главное что бы человек был хороший
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[20]: Джон Кармак о науке и искусстве разработки ПО
От: a_g_99 США http://www.hooli.xyz/
Дата: 03.09.12 05:31
Оценка:
Здравствуйте, grosborn, Вы писали:

G>А в итоге все-равно выйдут с дипломами. Главное что бы человек был хороший

Профессор Laptev учил ! Светило мировой CS науки
Re[19]: Джон Кармак о науке и искусстве разработки ПО
От: Miroff Россия  
Дата: 03.09.12 05:36
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Добавлю. Как выяснилось, они совсем не изучали в школе программирование.


Есть такое место, СУНЦ НГУ, оно же Новосибирское ФМШ. Так вот, раньше, когда оно еще было бесплатным, народ туда попадал совершенно разного уровня. В том числе и те, кто компьютера даже издали не видал. И ничего, за двухнедельный интенсив всех дотягивали до приемлемого уровня.
Re[21]: Джон Кармак о науке и искусстве разработки ПО
От: grosborn  
Дата: 03.09.12 05:45
Оценка:
> G>А в итоге все-равно выйдут с дипломами. Главное что бы человек был хороший
> Профессор Laptev учил ! Светило мировой CS науки

Ты все-таки неадекват
Да поправят мнея если я неправ, Лаптев преподаватель. Не светило науки, не черный олигарх, не светлый патриарх, не попил бюджетного бабла. Это преподаватель в вузе. Твои претензии просто не по адресу.
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[16]: Джон Кармак о науке и искусстве разработки ПО
От: vdimas Россия  
Дата: 03.09.12 09:44
Оценка:
Здравствуйте, AndrewVK, Вы писали:

V>>А зачем рассеивать внимание студента на подробностях синтаксиса какого-то ЯП при обучении алгоритмизации?

AVK>Для устранения подробностей синтаксиса устранять текстовое представление не нужно.

Можно пример?
Re[17]: Джон Кармак о науке и искусстве разработки ПО
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.09.12 09:49
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Можно пример?


Пример чего? Редактора кода без редактирования текста? Class diagramm в студии.
... << RSDN@Home 1.2.0 alpha 5 rev. 65 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[10]: Джон Кармак о науке и искусстве разработки ПО
От: vdimas Россия  
Дата: 03.09.12 09:54
Оценка: +2
Здравствуйте, Miroff, Вы писали:

Ф>>И много вы знаете преподавателей, которые что-нибудь пилят?

Ф>>ПУСТЬ ПИЛЯТ!
M>Ладно бы он для себя пилил, так ведь он студентов портит.

Еще ни одного школьника программирование на Спектруме в своё время не испортило. По моим наблюдениям — ровно наоборот.

То, что сейчас интерес к программированию в школьном возрасте резко упал — медицинский факт. Может даже от того, что хоть какие-то элементы или сценки понравившихся игр в наше время мог запрограммировать даже школьник при определенном упорстве... а сейчас сложность тех же игр такова, что при попытке начать изучать программирование, первым наблюдением будет лишь пропасть м/у собственными возможностями и готовыми программами коммерческого кач-ва... Предположу, что при таком раскладе детское любопытство просто отшибается.

Поэтому, охотно верю, что учить надо вообще с 0-ля.
Re[19]: Джон Кармак о науке и искусстве разработки ПО
От: Yoriсk  
Дата: 03.09.12 11:05
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Miroff, Вы писали:


M>>Здравствуйте, LaptevVV, Вы писали:


LVV>>>Мой к ним вопрос: Что для вас важнее — научиться или сдать. Ответ ВСЕХ: сдать. Потом как-нибудь научимся...


M>>А ты ждал чего-то другого? На первом курсе им ясно дали понять: мы будем учить вас всякой бесполезной фигне, а то что вам нужно вы потом сами освоите. Теперь мотивация уже сформирована: отсдеть номер, столкнуть зачет чтоб не отчислили, а потом уже у станка потихоньку разобраться.

LVV>Добавлю.

Не надо ничего добавлять. Был задан совершенно справедливый вопрос: чего вы еще ожидали, какие еще варианты ответа возможны? "Главное — научиться(в пределах первого курса), а что не сдадим и со второго курса отчислят — так не беда, диплом в переходе купим" или еще какие-то?
Re[14]: Джон Кармак о науке и искусстве разработки ПО
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 03.09.12 11:07
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Зачем для этого отказываться от нормального текстового исходника?

AVK>Зачем для этого отказываться от нормального текстового исходника?
AVK>Зачем для этого отказываться от нормального текстового исходника?

Вообще-то надо поставить вопрос немного наоборот: 1) зачем и 2) в каком виде надо сохранять "нормальный текстовый исходник" или его часть?
The God is real, unless declared integer.
Re[18]: Джон Кармак о науке и искусстве разработки ПО
От: vdimas Россия  
Дата: 03.09.12 11:16
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:


AVK>Пример чего? Редактора кода без редактирования текста? Class diagramm в студии.


Для навыков алгоритмизации как раз никакие классы не нужны. Нужны блок-схемы или их аналог.
Re[20]: Джон Кармак о науке и искусстве разработки ПО
От: LaptevVV Россия  
Дата: 03.09.12 12:37
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Здравствуйте, LaptevVV, Вы писали:


LVV>>Добавлю. Как выяснилось, они совсем не изучали в школе программирование.


M>Есть такое место, СУНЦ НГУ, оно же Новосибирское ФМШ. Так вот, раньше, когда оно еще было бесплатным, народ туда попадал совершенно разного уровня. В том числе и те, кто компьютера даже издали не видал. И ничего, за двухнедельный интенсив всех дотягивали до приемлемого уровня.

Раньше — все было, и куры и яйца...
Я сам компьютеры увидел только в универе. Но это не помешало мне научиться.
Раньше учили так, а теперь — не так. Вот мы плоды и пожинаем...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.