Как обычно проходит олимпиада по информатике на нашем районе)
Заявляется допустим 50 участников. Приезжают 45. Через 15 минут после начала начинают выходить первые юные программисты с несколько озадаченным выражением на лице. Через полчаса уходит треть. Иногда уже половина. Через 2 часа остаются 5 монстров которые и остаются все допустимые по регламенту 4 часа. Кто-то из них получит какие-то баллы. Возможно. Может и нет.
Почувствуете мощь, с которой сейчас в наших школах растут кадры российской IT-элиты...
На прошлой неделе я и сам возил учеников на муниципальный этап олимпиады школьников по информатике. Есть повод рассказать интересующимся о процедуре ну и пару мыслей&наблюдений накидать.
За последние 15 лет олимпиада по информатике одновременно и сильно изменилась и осталась абсолютно прежней.
Что осталось неизменным, так это главная идея - олимпиада по информатике = олимпиада по программированию. Другого не дано. Неважно в каком ученик классе, в седьмом или одиннадцатом. Для получения баллов необходимо составить работающую программу на одном из языков программирования. Так у нас было всегда. Сейчас стало совсем безвариантно.
Что изменилось очень сильно - сама процедура. Еще лет 5-6 назад участникам раздавались задания на листочках. Теперь участники перед началом олимпиады получают логин-пароль для доступа на сайт олимпиады. Логинятся и читают задания на сайте. На сайт же и загружают файлы с решениями. Решение - скомпилированный исполнимый файл текстовый файл с кодом.
Решением задачи является программа, написанная на одном из следующих
языков программирования:
• Pascal
• C
• C++
• Java
• Python.
Кому интересно, при компиляции текста программы, которую участник сдает на проверку, жюри
использует вполне определенные командные строки для компиляции решений:
Компилятор | Командная строка |
GNU С 4.9 (MinGW) | gcc -O2 -х с –WI, --stack=67108864 <исходный файл> |
GNU C++ 4.9 (MinGW) |
g++ -O2 -х с++ –WI, --stack=67108864 <исходный файл> |
GNU C++11 4.9 (MinGW) |
g++ -O2 -х с++ -D_ _USE_MINGW_ANSI _STDIO=0- WI, --stack=67108864 --std=c++11 <исходный файл> |
GNU C++11 5 (Linux) |
g++ -O2 --std=c++11 -static <исходный файл> |
Visual C++ 2015 | cl /F67108864/O2 /EHs /TP <исходный файл> |
Java | javac <исходный файл> |
Free Pascal | fpc <исходный файл> |
Pascal ABC.Net 2.1 | pabcnetcc <исходный файл> |
Python 3.5 | python <исходный файл> |
Когда-то (лет 5-6 назад), школьники после завершения олимпиады оставляли за собой файлы с кодом и листочки с кодом и блок-схемами. Ученики расходились, а толпа коллег-информатиков начинала коллегиально проверять решения и раздавать баллы. Бывали жаркие дискуссии)
Теперь ничего интересного. Никаких интриг и мордобоя. Решения участников проверяются в 2 этапа:
- сначала бездушная система берет загруженную учеником прогу и подсовывает ей файлы с исходными данными. Решения системе разумется известны так что если творение шкодера вдруг выдает именно верное решение, то участнику начисляется БАЛЛ. Совершенно автоматически.
- набравшие баллы программы проверяются живыми экспертами
Вот так.
Скучно теперь стало на олимпиадах. В нашем муниципальном образовании - всего 58 школ. Из них - 34 в самом городе. Остальные - в окрестных поселках. Было врем, городские и деревенские олимпиады проводились отдельно. Теперь - все вместе собираемся в городе. В этом году из 24 сельских школ заявились на муниципальный этап всего 4 школы. Приехали фактически - только из 3.
Собственно, школьники никогда массово не осваивали программирование. В былые времена, когда преподаватели информатики сами проверяли работы, то балл ученику могли начислить просто за правильную структуру программы или за корректное применение команд. Вобщем, какие-то баллы кидали даже за неработающие алгоритмы и программы. Работающие проги встречались очень редко. Прога с реально правильным алгоритмом решения - это было уже призовое место как минимум.
Вот тогда было на олимпиаде общение с коллегами. Информатики района знали друг друга. Были вечные соперники принципиальные) Пока дети решали, коллеги обменивались опытом и точили кинжалы. Живое душевное общение вобщем) Преподавателей, которые реально умели программировать, всегда было очень мало, единицы, и они всегда охотно делились опытом и старались мотивировать остальных.
Как автоматизировали это дело, так общение окончательно рухнуло. Быстро выяснилось, что проводить отдельную олимпиаду для сельских школ - нецелесообразно. Слишком мало решений проходило фильтр автоматизированной проверки. Со всей определенностью вылезло - программировать в школах дети не умеют.
При работе с автоматизированной системой есть объективная сложность - участнику совершенно недостаточно найти правильный алгоритм решения задачи. Для того, чтоб система приняла решение, необходимо в программе ПРАВИЛЬНО реализовать ввод-вывод информации через текстовые файлы. Это - сама по себе отдельная задача с неочевидными решениями. Вот и получилось, если ранее ученики могли хотя бы алгоритм реализовать внятно и это решение могло быть оценено комиссией живых проверяющих преподавателей, то теперь ученику просто реализовать алгоритм - уже недостаточно. Вот и пошел дополнительный отсев деток без устойчивых навыков практического программирования.
Сам курс алгоритмизации и программирования в базовом курсе основного общего образования - одна четверть во втором полугодии 9го класса. Подготовить олимпиадника просто на уроках в школе - нереально от слова совсем. Потенциального олимпиадника по информатике надо выявлять как можно ранее, затаскивать на кружок и держать под контролем круглый год. И тогда успех не гарантирован.
Есть еще проблема. В школах преподаватели информатики просто сами не умеют программировать. Даже на простейшем уровне. И решения этой проблемы - не особенно видно. Я получил диплом педагога всего 3 года назад. В моей группе заочников из будущих преподавателей информатики умел программировать только один человек. Можно наверно порадоваться, что в школу работать все равно никто не отправился.
Хорошо, что в наше время талантливым деткам есть возможность раскрыться и реализоваться даже без толкового преподавателя. Самый лучший в программировании школьник который мне встречался, сам освоил Си. Без какой-либо помощи со стороны преподавателя.
Я сам толпу кружкистов своих первым делом отправляю на сайт Информатикс - сайт дистанционной подготовки к олимпиадам по информатике. Кто сможет разобраться и начать продвигаться там, тот реально чего-то стоит и с таким кадром надо работать точно.
Президент наш в последнее время неоднократно и определенно провозглашал курс на развитие информационного общества. Заявлял, что нам нужны хорошие программисты в товарных количествах.
Задача Президентом сформулирована, но вот решение наталкивается на проблемы еще на школьном этапе.
Комментарии
На сайте Информатикс показывают время решения одной и той же задачи кодом на разных языках. Паскаль - самый быстрый обычно.
Девять лет назад на общероссийской (или северо-запад... не помню уже...) в Питере Делфи был одним из вариантов.
>> паскаль - это типа legacy
Паскаль - идеально подходит для преподавания основ программирования обычным школьникам в возрасте 15 лет. А таких обычных - основное число. Думается мне, классический Паскаль всегда будет актуален в школе. Да и в конторах поделки для сотрудников будут лепить не Делфи а не на Си++ ваять) Так что Паскаль и во взрослой жизни вполне может пригодиться.
Ну, legacy в смысле для олимпиадников и тех, кто серьезно в программирование уходит. Набросать по-быстрому легче на питоне, например.
Щас движуха сильная за продвижение питона в школы идет.
Поляков (один из авторитетных авторов учебников) новый учебник выпустил. Там в 10-11 классах - питон.
Стесняюсь спросить: *какой* питон?
Для школьников разница между Python 2.7 и Python 3.x незначительна. В школьном учебнике эту разницу можно свести к минимуму и стараться давать только те вещи, которые одинаковы в обоих вариантах языка.
Или вы думаете, что школьникам рассказывают про метаклассы и функциональное программирование с лямбдами и замыканями?
Я утверждаю, что без рассмотрения проблемы кодировок школьные учебники будут плодить ереси.
Столь же порочно требование нивеллирования различий.
Учебник должен отталкиваться от живой практики.
Живая практика ваша - как-то уж очень живая. Оттолкнешься от такой, а она уже сдохла или мутировала хрен знает во что.
Это представление основывается на недостаточно высоком уровне абстракции.
Ну и хрестоматийное: знание некоторых принципов освобождает от необходимости заучивания многих фактов.
В школе совершенно естественно делают упор на хрестоматийное освоение некоторых базовых принципов - ввод-вывод/условие/цикл/массивы. Какие еще базовые принципы необходимы школьнику в рамках курса основ алгоритмизации и программирования?
Посмотрел - на самом деле например codeforces разрешает сдавать на javascript. Не знаю правда, как это устроено.
Мне более странным кажется, что фортрана нет.
В научной среде он вполне жив.
Только там он пожалуй и жив, среди людей, которые его в восьмидесятые в институте изучали.
А на практике - в этом тысячелетии на нем новые системы не пишут. Сейчас в моде функциональное программирование
К нему много расчетных библиотек. И новые пишутся. Хотя питон, пожалуй, догоняет.
Производительность, как это ни странно, у фортрана хорошая.
Есть биндинги этих библиотек для других языков. Поэтому нет смысла совсем уж ограниченный и устаревший язык использовать.
Современные варианты фортрана алголоподобны. Проще говоря, современный фортран - это паскаль с немного другим синтаксисом.
А можно тупой вопрос: что такого может фортран, что не может "школьный" PascalABC ?
И тот и другой эквивалентны в плане выразительной силы.
Brainfuck так-то тоже Тьюринг-полный.
А где, в каком районе, была Олимпиада...
Мой младший сын был в воскресенье на одной из них...
Я живу Татарстане.
Как успехи и впечатления у сына?
Он заказывал Пайтон-2 и Си++, а ему на Олимпиаде поставили (рассадили за случайные компьютеры) Пайтон-3, Паскаль и Кумир... Это - Москва, СВАО...
С на за неделю потребовали предоставить заявку на компилятор и IDE.
У меня один заказал java и eclipse.
Обеспечили.
Паскаль не самый худший вариант, имхо )
Паскаль - вобще идеальный вариант для школьника.
Просто если ученик все время готовился и программировал на питоне или Си, а ему вдруг рандомно выдали Паскаль, то это сразу провал.
Так быть не должно. Участника должны обеспечить тем, что ему удобно.
А потом школьник заканчивает учебу и с удивлением выясняет, что вакансии все на яве, скале, питоне и яваскрипте. А про паскать в продакшене последний раз в начале двухтысячных слышали, да и тот Дельфи назывался
А чего, мой первый коммерческий проект на дельфе написан, до сих пор работает и деньги приносит )
Небольшие, конечно, проекту 10 лет уже, но не в убыток.
Я вот тут недавно читал, как страдают какие-то британцы, то ли аэропорт, то ли метро. У них там все написано в шестидесятые на чем-то модном в те времена, последний специалист ушел на пенсию еще пять лет назад, а многие уже вообще "вне зоны доступа". С одной стороны - система вроде как и шуршит себе, а с другой - не дай бог что-то крякнет, восстановить это никто уже не сможет. А переписать на современный стек технологий - примерно пять миллионов фунтов стерлингов.
P.S. У Вернора Винджа в серии "Глубина в небе" у главного героя была специальность "археолог ПО". Весьма нужная, с учетом того что переходы между звездами были релятивистскими, и большую часть времени экипаж спал в гибернаторах.
какая проблема освоить синтаксис любого из этих языков? Если человек разобрался в школе с понял хотя бы как реализовывается и работает сортировка в числовом массиве - то освоит и плюсы и питон и пхп. Что потребуется
это не проблема , это Большая проблема если работаешь на одном языке , перепрыгивать на другой синтаксис
всё что делается на автомате в одном , вызывает раздражение в другом
то цикл for отменят ( kotlin ) , то изменят порядок следования тип-переменная в заголовек функции, то отменят трай-кэтч на паник (go)..вроде как бы по
мелочам , а целом получается другая картина.
это есть.. я много писал на джаве, перешел на сишарп, и вот знаете, что-то меня в джаве стало раздражать. Не то, чтобы отвращать, но раздражать. Хотя синтаксис похож.
а новичёк котлин, он вроде как подзамена жавы?
я в бою не пробовал , так каляки маляки.
С процедурного паскаля - и в функциональную скалу? Весь мозг отобьешь, они совершенно не похожи.
Ну и опять же - придется тратить дополнительно несколько месяцев на изучение. Хотя можно было бы изучить их во время, бессмысленно потраченное на изучение паскаля.
Не катит аргумент.
Надо понимать цель школьного курса основ алгоритмизации и программирования. Тут цель - именно дать возможность ВСЕМ ученикам в классе сами принципу построения алгоритмов и сами принципы работы базовых конструкций - условие и цикл.
В паскале - строгая типизация, понятный ввод-вывод, отдельный блок определения переменных. Все для того, чтоб не стреляли себе в ногу и не теряли темп при освоении процесса программирования.
Кто разберется - легко перейдет на другой язык.
А на функциональный с любого императивного переходить весело. Это ведь другое мышление, иная философия. Ты же не предложишь всей массе школьников начинать со скалы?
Только в функциональных языках не модно писать процедурные циклы. Там поток данных, map, filter, reduce, рекурсия...
Сын говорит, что Татарстан - один из самых сильных регионов по информатике...
В Набережных Челнах информатика почти во всех школах с 5го класса. И уже давно. Знаю просто.
В Казани и Набережных Челнах - инновационные площадки.
Преподавателей информатики поддерживают, бывают гранты хорошие. Но в сельских районах - не спасает.
О! Я тоже оттуда. Что думаете про Иннополис? У них тоже в последнее время сборы появились.
А чего про него думать) Попасть туда не просто как бы) Сборы конкурсы всякие - дело хорошее но таки не бесплатное.
"Байтик" еще есть. Хороший лагерь в Казани. Тоже не бесплатный) У меня пару раз ученики получали путевки за участие в конкурсах республиканских. Хвалили очень.
Мда. В моё время информатики не было. Но на олимпиады по математике и физике конкурс от школы был. А уж, учась в физмате, смог пробиться на республиканскую олимпиаду, только выиграв конкурс в "Кванте".
у меня уже в 82м была (Минск). Правда, компьютеров не было ) Под конец появился один, то-ли "вектор", то-ли "корвет", уж не помню, очереди до ночи на него были. Но были программируемые калькуляторы, Б3-34
Когда учился я, главной задачей 5-летнего курса информатики официально считалось освоение Microsoft Office. Кто хотел программировать - осваивал сам, в школе только учили по минимуму Паскаль. Хотя школа (московская) считалась очень сильной и шикарно оснащенной, у нее было аж 20 учебных компьютеров, из них 10 с Windows. А про олимпиаду вообще никто не слышал.
Хорошо, что учат.
Ну вот, если уж в московских школах возможны проблемы с преподаванием основ программирования, то что говорить о провинции.
А вобще, основы программирования - обязательная часть курса информатики. Должна преподаваться в соответствии с государственным стандартом.
По информатике у нас в школе была некоторая дыра. Дело потихоньку залатывалось со средней школы. И более-менее сносным информатика стала уже на старших классах. Правда, в это время я уже самостоятельно изучал языки программирования Visual Basic.NET и Java.
Мне кажется, что это у нас так уже с советских времён. Возможно, это так повлиял Хрущёв, назвав кибернетику и информатику лженаукой. Да и вычислительную технику с программированием серьёзно изучали только в ВУЗах. Здесь надо базовую часть знаний скинуть с ВУЗов в школы, а в ВУЗе переходить к более сложному уровню программирования. Поскольку теперь программирование является необходимым минимумом каждого инженера или конструктора.
Вы не правы, после хруща был мощный задел и по элементарной базе, и по своим разработкам. И языки свои были и операционки. А вот убили отечественную компьютерную отрасль при Горби. И при нем же принято решение о поставке в СССР MS Dos, Windows и американских компьютеров суммой аж на 20 млрд догдашних долларов. Вот это нашу отрасль и доканало.
Брежневу нужно сказать спасибо. "Обезьяний закон" о прекращении самостоятельных разработок компьютеров был принят в 1965 году, Его реальная цель - унификация советской и американской элементной базы и стандартов в цифровой электронике. Лично я считаю, что это решение было увязано с участием СССР в лунной афере, и американцы в порядке оплаты через третьи руки передавали до конца 70-х советской стороне оснастку, технологии и программное обеспечение (а возможно и химическое сырье и полуфабрикаты) для развертывания производства электроники. Заодно накрепко привязали электронную отрасль СССР к себе. Даже вся советская рассыпуха скопирована с американской, не говоря уже о микросхемах.
Нет, отечественные ЭВМ умирали уже с 60/70-х годов. Уникальный компьютер Сетунь вам напомнить? Или клоны IBM System/360, который производился в США аж 1964 года? Я уже не говорю про поздние ZX Spectrum и персоналки PC x86. Советские операционные системы тоже были клонами зарубежных.
БЭСМ-6 на транзисторах в 60-е, Эльбрус-1 на логических микросхемах в 70-е, М-13 на больших интергральных схемах в 80-е, компьютер БК-0010, который некоторыми экспертами считается одним из первых в мире полностью 16-битных персональных компьютеров. В СССР была техника мирового уровня, но её было мало. Ставка была сделана на клонирование западной техники.
ZX Spectrum и в сравнение с БК-0010 не шёл по возможностям, но это был дешёвый игровой компьютер с цветной графикой, множеством готовых игр и поэтому на него был спрос.
Советские операционные системы - это какие? Если западные компьютеры клонировались с целью запускать на них западное программное обеспечение, то операционные системы были не клонами, а цельнотянутыми западными. На отечественных компьютерах использовались самописные операционные системы. Беда была в том, что их было много и они были несовместимы между собой. Именно с целью унификации, чтобы никого из своих не обидеть, и были приглашены "варяги". В результате получилось ровно наоборот - своих же и обидели.
Эльбрус был исключением, который чудом выжил благодаря военным. Современный Эльбрус и есть потомок Эльбрус 3. А остальные уникальные наработки так просто и спустили в утиль. Было мало потому, что наше правительство не было заинтересовано в нём.
Пусть и дешёвый, но был массовым продуктом, который можно не только поиграть в игры, но и учиться программированию на Фортране (или Бейсик?). А этого было и достаточно для школ. Можно было бы реализовать для советских школьников свои советские персональные компьютеры. Отсюда могли бы в разы подтянуть качество роботехники.
Были разные операционные системы, решающие часть проблем организации рабочего места. Но самым удачным признан Multics - дедушка семейства Unix.
Хотя на западе тоже было множество различных несовместимых между собой компьютеров. Выигрывал только тот, кто преуспел на продажах и сервисах к ним. Но переносимость по-прежнему была плохой, пока в мир не пришёл язык программирования Си. Наши тоже могли бы решить эту проблему, договорившись между институтами об универсальном языке программирования для различных компьютеров. А получилось как всегда.
Страницы