Личный кабинет

Система программирования КуМир

Сергей Косаченко ( Пользователь )
Коллега Найденова Наталия Фотеевна представила сегодня информацию по КуМир на РМО. КУМир показался довольно симпатичным, к тому же нравится его реализация для Win и Linux платформ. На районном МО информатиков проявили интерес и решили попробовать с ним поработать в течение учебного года в разных школах.
Александр Гильдин ( Пользователь )
Цитата (Сергей Косаченко - с.Каргасок, 25.08.2010, 20:28) <{POST_SNAPBACK}>
Коллега Найденова Наталия Фотеевна представила сегодня информацию по КуМир на РМО. КУМир показался довольно симпатичным, к тому же нравится его реализация для Win и Linux платформ. На районном МО информатиков проявили интерес и решили попробовать с ним поработать в течение учебного года в разных школах.


Речь не о том, что КУМиР - это плохо. Речь о том, что надо оставить возможность выбора языка на ЕГЭ.
Станислав Михалкович ( Пользователь )
Цитата (Александр Гильдин, 26.08.2010, 00:22) <{POST_SNAPBACK}>
Речь не о том, что КУМиР - это плохо. Речь о том, что надо оставить возможность выбора языка на ЕГЭ.

Тут есть техническая проблема. Берем, скажем, Паскаль. У него куча версий. Если проверка осуществляется так, как на олимпиадах, то либо придется поддерживать их все на сервере, либо придется ограничивать количество версий (какой-нибудь одной например - тогда все тоже будут возмущаться), либо ограничивать допустимые конструкции языка (как вариант - писать свой компилятор). Ни одно решение не является хорошим.
Александр Бондаренко ( Пользователь )
Цитата (Михалкович Станислав, 26.08.2010, 06:24) <{POST_SNAPBACK}>
Тут есть техническая проблема. Берем, скажем, Паскаль. У него куча версий....

Сказать что можно использовать любую версию, реализующую стандарт №... от такого года?
Денис Кириенко ( Пользователь )
Цитата (PapaSasha, 26.08.2010, 06:41) <{POST_SNAPBACK}>
Сказать что можно использовать любую версию, реализующую стандарт №... от такого года?


И если проверяться будет только код, соответствующий стандарту, то школьник, который напишет на турбо паскале inc(k) уже не сможет решить задачу. То есть турбо паскаль использовать нельзя. Тем более нельзя использовать паскаль.abc, где подобных наворотов еще больше...

Так что проблема куда более сложная, чем кажется на первый взгляд.

Цитата (Александр Гильдин, 26.08.2010, 00:22) <{POST_SNAPBACK}>
Речь не о том, что КУМиР - это плохо. Речь о том, что надо оставить возможность выбора языка на ЕГЭ.


Из какого множества выбирать будем? Перечислите, пожалуйста.
Станислав Михалкович ( Пользователь )
Цитата (Денис Кириенко, 26.08.2010, 08:15) <{POST_SNAPBACK}>
И если проверяться будет только код, соответствующий стандарту, то школьник, который напишет на турбо паскале inc(k) уже не сможет решить задачу. То есть турбо паскаль использовать нельзя. Тем более нельзя использовать паскаль.abc, где подобных наворотов еще больше...

Так что проблема куда более сложная, чем кажется на первый взгляд.

Из какого множества выбирать будем? Перечислите, пожалуйста.


Мне представляется, что в качестве рабочей можно обсудить следующий путь. Выбрать некоторое подмножество языков, скажем: Pascal, C, Basic, школьный алгоритмический. Ровно те, которые на ЕГЭ в 4 колонки. Прописать спецификации тех конструкций, которыми допустимо пользоваться. Добиться как можно большей эквивалентности множеств этих конструкций для разных языков.
Я бы мог за это взяться если бы мне кто в этом помог.

И - реализовать консольные компиляторы (интерпретаторы) для каждого языка. Не волнуйтесь - это не так сложно :)

По поводу PascalABC - его в этой схеме нельзя использовать даже не по причине наворотов. Я уже говорил, что в рамках PascalABC в декабре появится школьный Паскаль с урезанным набором конструкций. Так что тут проблем особых нет. Проблема в другом - компиляторы слишком разные, некоторые (скажем, Delphi или VB.NET) реализованы только под Windows. Если сервер проверяющей системы будет под *nix, что скорее всего, то - всё - проблема не решается.

То есть, либо один чисто русский компилятор и язык с минимальными возможностями, реализованный в единственном экземпляре, либо написание семейства родственных компиляторов с единым интерфейсом.

Есть, конечно, такой путь: вместо полноценного компилятора написать только его начальную часть (front-end), после чего, если нет ошибок, передавать этот текст на вход полноценному компилятору. Это проще наверное.

Денис Кириенко ( Пользователь )
Ограничение языков до множества Pascal, Basic, C мне не нравится. Почему, например, не включить Python? Например, в этом году в летней компьютерной школе у нас резкий рост интереса к питону со стороны школьников - появляются школьники, которые стабильно готовы писать именно на этом языке.

А коли так, то почему бы не добавить Java, C#, JavaScript, Perl, PHP, Ruby?

Но давайте отвлечемся от языков программирования, допустим мы зафиксировали множество допустимых языков и проблемы с их исполнением на тестирующем сервере как-то решим.

Расскажите, как вы представляете себе архитектуру рабочего места учащегося. С какой операционной системой он работает? Как эта система запускается - устанавливается ли она на компьютер или загружается с LiveCD или LiveUSB? Какие приложения доступны учащемуся в этой системе? Какие среды разработки он может использовать для написания программ?
Станислав Михалкович ( Пользователь )
Цитата (Денис Кириенко, 26.08.2010, 11:25) <{POST_SNAPBACK}>
Ограничение языков до множества Pascal, Basic, C мне не нравится. Почему, например, не включить Python? Например, в этом году в летней компьютерной школе у нас резкий рост интереса к питону со стороны школьников - появляются школьники, которые стабильно готовы писать именно на этом языке.

А коли так, то почему бы не добавить Java, C#, JavaScript, Perl, PHP, Ruby?

Но давайте отвлечемся от языков программирования, допустим мы зафиксировали множество допустимых языков и проблемы с их исполнением на тестирующем сервере как-то решим.

Расскажите, как вы представляете себе архитектуру рабочего места учащегося. С какой операционной системой он работает? Как эта система запускается - устанавливается ли она на компьютер или загружается с LiveCD или LiveUSB? Какие приложения доступны учащемуся в этой системе? Какие среды разработки он может использовать для написания программ?


Давайте определимся всё же, какую схему мы обсуждаем. Я обсуждал схему "для бедных, но гордых" - 4 языка, 4 однотипных интерпретатора (компиляторы мне тут меньше как-то нравятся) указанных языков. Можно написать и оболочку - скажем, на том же QT. Взять за основу, скажем, тот же КуМир - его оболочку. Убрать исполнителей, добавить многоязыковость, отсылку файлов на сервер, проверку правильности ответа. Можно даже не компилировать ничего на сервере - присылать варианты исходных данных, программа на клиенте будет с ними работать, после чего отсылать результат на сервер.

Вы предлагаете расширить количество языков до 10-ти. Очевидно, идея написать интерпретаторы этих языков отпадает сама собой, и мы оказываемся в ситуации олимпиады по программированию. Я в олимпиадах не силен - не знаю. что изменилось в их организации за последние несколько лет, но думаю, что проблем много. Заранее оговариваются языки, среды, версии. Вся эта радость поддерживается на клиенте. Очевидно, нужна виртуальная машина, LiveCD или LiveUSB. На ней в силу лицензионной чистоты будет стоять Линукс, под ним - все указанные среды. Как точнее - не спрашивайте меня - у нас всем этим занимается начальник сети дисплейных классов. Он за пару ночей, чертыхаясь, настроит и сделает всё, что ему скажут даже если в присланном варианте это не будет работать.

В этой схеме я вижу следующие риски: ввод-вывод в каждой системе надо будет строго оговаривать - а это "от лукавого" - там - максимум путаницы, а к ЕГЭ это не имеет никакого отношения. И если олимпиадники с этим быстро справляются (и то не все), то у простых сдающих ЕГЭ будет куча ошибок именно с вводом-выводом.

Кроме того, боюсь, что наш разговор - беспредметный - всё уже решили - и кто будет писать проверяющую систему, и какие деньги кто за это получит. И - мы говорим, не учитывая все остальные аспекты подобной проверяющей системы - ведь в ней предполагается иметь ряд приложений, не связанных с программированием. А это может определить всё остальное.
Денис Кириенко ( Пользователь )
Цитата (Михалкович Станислав, 26.08.2010, 13:39) <{POST_SNAPBACK}>
Вся эта радость поддерживается на клиенте. Очевидно, нужна виртуальная машина, LiveCD или LiveUSB. На ней в силу лицензионной чистоты будет стоять Линукс, под ним - все указанные среды.


Отлично, то есть на самом деле я хотел устроить обсуждение таким образом, чтобы показать, что идея "Пусть везде стоит Windows какая есть, а школьники пусть пишут программы в Дельфи, Турбо паскале, Визуал студио и т.д." неживая по массе причин. Но, похоже, это обсуждать уже и не нужно, понятно, что единственный рабочий вариант для проведения такого мероприятия - это LiveCD или LiveUSB дистрибутив с полностью готовым комплектом ПО, заточенным исключительно под сдачу экзамена.

Очевидно, что все используемое ПО должно быть как минимум свободно распространяемым, а в идеале - свободным. А здесь других выходов нет, остается только GNU/Linux.

Опять забываем про языки программирования и переходим к обсуждению следующего вопроса. В этом дистрибутиве будут использоваться полноценные, тяжеловесные приложения, например, OpenOffice для выполнения задания с электронными таблицами, Lazarus для программирования на Паскале, или будут учебные модели электронных таблиц, баз данных, среды программирования?


Цитата (Михалкович Станислав, 26.08.2010, 13:39) <{POST_SNAPBACK}>
Давайте определимся всё же, какую схему мы обсуждаем. Я обсуждал схему "для бедных, но гордых" - 4 языка, 4 однотипных интерпретатора (компиляторы мне тут меньше как-то нравятся) указанных языков. Можно написать и оболочку - скажем, на том же QT.


Я готов обсуждать любые схемы.

Чуть-чуть попозже предлагаю вернуться к обсуждению конкретных языков - но все-таки я не понял, предлагается реализовать 4 однотипных интерпретатора, в том числе интерпретатор с языка C++?

Цитата (Михалкович Станислав, 26.08.2010, 13:39) <{POST_SNAPBACK}>
В этой схеме я вижу следующие риски: ввод-вывод в каждой системе надо будет строго оговаривать - а это "от лукавого" - там - максимум путаницы, а к ЕГЭ это не имеет никакого отношения. И если олимпиадники с этим быстро справляются (и то не все), то у простых сдающих ЕГЭ будет куча ошибок именно с вводом-выводом.


Это известная проблема, что при автоматической проверке прежде всего происходят проблемы с вводом-выводом. И почему-то учителей не пугает необходимость тратить время на освоение учащимися технологии автоматической проверки, а вот перспектива тратить время на освоение Кумира их пугает. На самом деле, понятно даже почему - большинство учителей вообще не догадывается об автоматической проверке и о том, что учащиеся должны хоть как-то быть готовы к ее использованию.

Цитата (Михалкович Станислав, 26.08.2010, 13:39) <{POST_SNAPBACK}>
Я в олимпиадах не силен - не знаю. что изменилось в их организации за последние несколько лет, но думаю, что проблем много. Заранее оговариваются языки, среды, версии. Вся эта радость поддерживается на клиенте.


Да, действительно, проблем с ПО на олимпиадах очень много. И я не могу сказать, что эти проблемы успешно решаются.

Например, мы в Москве умеем делать 300 рабочих мест для проведения олимпиады с необходимым набором ПО. Для проведения ЕГЭ понадобится в 20 раз больше рабочих мест. При этом не проблема найти компьютеры в масштабах проведения ЕГЭ, проблема прежде всего в используемом ПО и подготовке рабочих мест.

Цитата (Михалкович Станислав, 26.08.2010, 13:39) <{POST_SNAPBACK}>
Кроме того, боюсь, что наш разговор - беспредметный - всё уже решили - и кто будет писать проверяющую систему, и какие деньги кто за это получит.


Это вовсе не так.

Цитата
И - мы говорим, не учитывая все остальные аспекты подобной проверяющей системы - ведь в ней предполагается иметь ряд приложений, не связанных с программированием. А это может определить всё остальное.


Давайте обсудим и этот вопрос. Я уже спросил выше - запускаем реальные приложения или делаем учебные модели?
Станислав Михалкович ( Пользователь )
Цитата (Денис Кириенко, 26.08.2010, 13:56) <{POST_SNAPBACK}>
Я готов обсуждать любые схемы.

...

Отлично, то есть на самом деле я хотел устроить обсуждение таким образом, чтобы показать, что идея "Пусть везде стоит Windows какая есть, а школьники пусть пишут программы в Дельфи, Турбо паскале, Визуал студио и т.д." неживая по массе причин.

Очевидно, что все используемое ПО должно быть как минимум свободно распространяемым, а в идеале - свободным. А здесь других выходов нет, остается только GNU/Linux.

В этом дистрибутиве будут использоваться полноценные, тяжеловесные приложения, например, OpenOffice для выполнения задания с электронными таблицами, Lazarus для программирования на Паскале, или будут учебные модели электронных таблиц, баз данных, среды программирования?

Чуть-чуть попозже предлагаю вернуться к обсуждению конкретных языков - но все-таки я не понял, предлагается реализовать 4 однотипных интерпретатора, в том числе интерпретатор с языка C++?

Угу. Ясно.

Я не компетентен рассуждать о том, полноценные ли приложения или учебные модели. Я могу выразить лишь своё мнение.

OOCalc в качестве приложения электронных таблиц как нельзя лучше подходит для сдачи ЕГЭ (наш опыт работы со школьниками говорит, что электронные таблицы - наименее проблемный класс приложений при использовании различных пакетов офисных программ), но как обеспечить автоматическую проверку - я не знаю. Учебное приложение в этом отношении страшно своим убогим интерфейсом и необычной процедурой проверки.

OOBase в качестве приложения баз данных мне нравится гораздо меньше - различий в интерфейсе и возможностях уже гораздо больше. Но тоже можно правда, я по-прежнему не знаю, как обеспечить автоматическую проверку. Учебное приложение с заранее оговоренными возможностями под ЕГЭ в данном случае более уместно. Честь и хвала тому, кто его напишет.

Lasarus - тут у меня не может быть адекватного мнения - я сильно против. Система с навороченным интерфейсом, где в качестве основного приложения выступает приложение с главной формой - не школьническая. Кстати, мы так и не смогли у нее консольные приложения делать. То есть, они запускаются, но результат консольного вывода мы не видим. Наверное, это какие-то наши заморочки, но не разобрался в этом даже наш вышеупомянутый начальник дисплейных классов. Если так уж нужно использовать Паскаль под Linux, то я рекомендую GNU Pascal. Оболочку сейчас не помню - дома установлена. Ну - не важно.

По поводу конкретных языков в контексте реализации их подмножеств. C++ в этом аспекте мало отличается от C - классы я там не стал бы реализовывать следуя стратегии минимализма и равенства возможностей. И - я бы реализовал C++. Вижу две проблемы - это ввод-вывод и работа со строками. Это можно обсуждать. Ввод-вывод я бы принял в стиле cin>>a>>b; cout<<a<<endl; Работу со строками в стиле char* я бы запретил как сильно устаревшую, использовал бы встроенный тип string. Везде бы запретил использование нескольких файлов в проекте. И более всего следовал бы стратегии равенства возможностей предлагаемых подмножеств языков. Чтобы не выёживались и учились следовать спецификации. Ну и чтобы было легче проверять.

Словом - Вам решать.

footer logo © Образ–Центр, 2018. 12+