Кроссплатформенное рабочее окружение для обучения Си

Среда для начального программирования на Си для любой ОС на базе Geany/GCC/binutils/GDB.

В GNU/Linux системах достаточно просто развернуть «лёгкое» окружение для базового программирования на языке Си: любой приличный редактор исходного кода, GCC, GDB (возможно, с визуальным интерфейсом или дополнением к редактору), остальное — часть системы. Такое окружение, с одной стороны, поддерживает «быстрый старт» (написал программу, нажал кнопку «выполнить»), а с другой — не скрывает выполняемые при этом действия (запуск редактора, запуск компилятора, запуск получившейся программы). Однако для ОС семейства Windows готовых «лёгких» комплектов, оказывается, нет. Теперь есть ☺.

Мне бы ваши сложности

Начнём с того, что в вечерней математической школе при ВМК я уже долгое время преподаю «информатику» (программирование) в одном из факультативных классов. Последние несколько лет это были занятия для «продолжающих» по ЯП Python. Но теперь один из бывших учеников ВМШ (ныне студент) взялся за очень интересный проект «Python для математиков», так что я вернулся к преподаванию Си для начинающих.

«Вначале мне показалось это заманчивым», как сказал парень, который нагишом прыгнул в кактусы.

В самом деле, что нужно для начального изучения программирования (а хоть бы и на базе Си)?

Довольно принципиально, чтобы на первых порах, когда понимание важнее общей скорости работы, ученик представлял себе процесс разработки-отладки по классической схеме:

  1. редактор → текст программы

  2. компилятор → исполняемая программа

    • в случае ошибок компиляции переходим к п. 1
  3. сама программа на каком-то тесте

    • в случае ошибок выполнения переходим к п. 1
  4. сама программа на тестовом покрытии

    • в случае ошибок алгоритма переходим к п. 1

Если вы имеете дело с UNIX-подобной системой (например, GNU/Linux дистрибутивом), то чего уж проще! Если даже в ваш дистрибутив не установлены все эти инструменты уже (скажем, в Альт Образование «из коробки» входят все компоненты, причём иногда в нескольких вариантах), то достаточно выбрать нужные пакеты в пакетном диспетчере и установить из соответствующего хранилища, и всё. Ядро Linux написано на Си. Базовая система написана Си. Что ещё важнее, сами разработчики пользуются именно и только тем, что предлагают пользователям.

Так что в случае UNIX-подобной системы возникнет скорее проблема выбора:

Коротко говоря, при организации такого окружения под Linux главное — не переусложнить, не напичкать его удобными в работе программиста, но необязательными «вкусностями».

И вот теперь у меня ваши сложности

С этими светлыми мыслями я и собрался запустить курс «Си для начинающих», да призадумался.

Мне-то хорошо. В компьютерном классе факультета для занятий ВМШ загружается как раз GNU/Linux-дистрибутив (на сегодняшний день — ALT Starterkit/mate с установкой всех нужных пакетов). Точнее, загружается виртуальная машина с этим дистрибутивом, но про это потом.

А каково будет ученикам (8-9 класс, в основном), когда они попытаются кое-что из узнанного в классах воспроизвести на своём, не побоюсь этого слова, Windows 10? Что они увидят там?

Ладно «воспроизвести»… как вообще по-быстрому написать и запустить программу «Hello, World!» на Си под Windows?

Из пушки по воробьям

Очевидное (некоторые настаивают, что единственное) решение — Visual Studio — не подходит сразу по нескольким статьям:

Из виртуальной пушки по виртуальным воробьям и другие упражнения

Альтернативная идея — запустить виртуальную машину, в которой просто повторить рабочее Linux-окружение (дистрибутив, приложения, настройки) из класса — не лишена известной прелести.

К сожалению, процедура установки VirtualBox и экспорта образа виртуальной машины — всё-таки вещь не совсем тривиальная. Некоторые просто боятся что-то такое устанавливать (особенно если для этого требуются права администратора).

Кроме того, такое решение не универсально, т. к. «привязано» на этот раз к Linux-окружению, и, стало быть, требует для поддержки достаточно квалифицированного Linux-разработчика.

Ещё одна идея — попробовать завязаться на сетевые online-сервисы, предоставляющие услугу «редактор и отладчик программ на Си». По большей части такие сервисы — это просто web-интерфейс к такому же Linux-окружению, запускаемому где-то «у дяди на сервере». К сожалению, большинство из таких сервисов — несвободные, то есть не только ограниченные по возможностям,

TODO

кодировки?

Не забывать:


CategoryArticle