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

Выбор языка программирования для школьной информатики

Александр Бондаренко ( Пользователь )
Надеюсь что с критериями выбора языка программирования для курса информатики определимся в соседней ветке "Выработка критериев", а в этой начнём предлагать свои варианты.

Желательно вариант предлагать не просто "Он мне нравится" или "У меня уже готов курс с его применением". Ну и надо готовоиться защищать свой выбор.


Приветствуется показ новых языков, а не только из сложившегося мейнстрима.

Не приветствуется переход на личности оппонентов.
Роман Еннер ( Пользователь )
Для первой категории обучаемых (6 класс) используем Алгоритмика
правда у нас еще старая досовая версия
по требованиям: только 2 и 3 пункты
Михаил Густокашин ( Пользователь )
подмножество си++, которое можно назвать "си с шаблонами"

мои ученики будут либо математиками, либо системными программистами. и тем и другим пригодится знание си. кроме того, с си легко переходить на любой другой мейнстримовский язык (Java, C#, PHP тот же).
конкретно для решения задач олимпиадного характера си хорошо подходит. это другой критерий.
кроме того, его не надо воровать и за него не надо платить. и деньги целы и совесть чиста.
Василий Петров ( Пользователь )
(Михаил Густокашин @ 08.11.2007, 13:40) <{POST_SNAPBACK}>
конкретно для решения задач олимпиадного характера си хорошо подходит. это другой критерий.

Конкретно для решения олимпиадных (алгоритмических) задач, си и подобные "жёсткие" языки не сильно удобны из-за
1) своих накладных расходов, не относящихся к решению задачи
2) необходимостью пересобирать проект после каждой итерации
3) проблемами с портируемостью - просто так не запустишь - надо ставить компилятор, IDE, собирать модули.
Михаил Густокашин ( Пользователь )
(wiz @ 08.11.2007, 14:43) <{POST_SNAPBACK}>
Конкретно для решения олимпиадных (алгоритмических) задач, си и подобные "жёсткие" языки не сильно удобны из-за
1) своих накладных расходов, не относящихся к решению задачи
2) необходимостью пересобирать проект после каждой итерации
3) проблемами с портируемостью - просто так не запустишь - надо ставить компилятор, IDE, собирать модули.

хм.
если под 1 понимать скорость работы, то она у си точно не ниже, чем у дельфи. есть некоторые проблемы с вводом-выводом, но это си++ <iostream>, а сишный <stdio.h> работает на такой же скорости, как дельфевский ввод-вывод. в целом у си++, естественно, из-за всяких рюшечек все происходит медленнее. в большинстве задач классы и прочая мишура не нужна, а там где нужна (вычислительная геометрия, например, хорошо пишется с классами) не ставятся жесткие требования по времени работы.
если это количество "волшебных буковок", которые нужно набрать, то си опять ничуть не хуже паскаля (var, begin, end...). подключаем ввод-вывод одной строкой, пишем int main(void) и вперед и с песней. по сравнению с Java на порядок меньше. какой-нибудь минималистичный Python не подходит для олимпиад по многим причинам, по скорости работы программ в первую очередь.
2) время компиляции сишным компилятором олимпиадной задачи составляет максимум одну секунду (если пользоваться нормальным компилятором, gcc или MSVC++EE). для олимпиадной задачи проекта по сути нет. есть проект с одним исходником, так что разные пересобирания совершенно не принципиальны.
3) можно скомпилить exe-шку и запускать где угодно. порты gcc существуют под абсолютное большинство архитектур и операционных систем. насчет IDE - это в BlackBox нет консольного компилятора. а в gcc пишешь g++ и все ок, никаких IDE не надо. или там bcc32 или другой компилятор. модули никакие собирать не надо. gcc идет в стандартной поставке любого юникса, а под win существует замечательная штука MinGWDeveloperStudio, которая занимает 20 мегабайт, спокойно устанавливается и вообще приносит радость. для установки нужно запустить один exe'шник и ткнуть на кнопочку "Ок". никаких модулей, отдельных IDE и т.д. и т.п. про юниксовые IDE для си я не очень хорошо знаю, когда писал, то в Kate или emacs и ничего.

что такое "жесткий" язык я до конца не понял.
Олег Чебан ( Пользователь )
Кажется, что вопрос нужно подкорректировать с учетом задач учебного заведения smile.gif
Если это спецшкола с математическим уклоном, то С++ с сопутствующими мат. модулями, то это решение вполне резонное. Если это обычная школа, то Паскаль с логическим переходом в Делфи, тоже резонно. Если это техно-колледж, с ориентацией на быстрое решение конкретных задач, в т.ч. научить быстро программировать, то это может быть и др. вариант?
Кажется и то, что последнии версии современных средств разработки практически уже ничем не отличаются, прошло то время, когда конкретная языковая конструкция определяла школы программирования, вернее прогрессивность школ программирования.
В общем, не знаю?
Александр Бондаренко ( Пользователь )
Надеюсь что с критериями выбора языка программирования для курса информатики определимся в соседней ветке "Выработка критериев",


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

Тут уже предложен "Алгоритмик" для того что в "Критериях выбора" идёт как категория "начинающие". Наверное туда же всякого рода языки с "Исполнителями" типа Logo.

"Олимпиадники" это скорей всего уже к 3-й категории относятся и, если уж подходить формально, они уже как бы за курсом школьной "Информатики" (но, учитывая маразм с обязательностью проведения олимпиад по программированию при 1 часе на "Информатику", надо их не забывать)
Олег Чебан ( Пользователь )
(PapaSasha @ 08.11.2007, 20:06) <{POST_SNAPBACK}>
Наверное всё же рано открыт данный тред. Всё же критерии первичны и под них надо подбирать язык. Вполне вероятно что это будет не один язык, а несколько.

Тут уже предложен "Алгоритмик" для того что в "Критериях выбора" идёт как категория "начинающие". Наверное туда же всякого рода языки с "Исполнителями" типа Logo.

"Олимпиадники" это скорей всего уже к 3-й категории относятся и, если уж подходить формально, они уже как бы за курсом школьной "Информатики" (но, учитывая маразм с обязательностью проведения олимпиад по программированию при 1 часе на "Информатику", надо их не забывать)

Нет-нет, такие вопросы нужно ставить. Я сам не знаю, что лучше, хотя в свое время изучали и Турбо Си (под ДОС был такой), и Делфи, и Визуал Бейсик, и Джава Скрипт, хотя непонтяно зачем он нужен, если есть любая современная среда? Нет, такой разговор обязательно нужен. Вот сейчас развивается технология XML и все сопутствующие языковые конструкции, но с другой стороны, кажется, что она (технология XML) противоречит самой идеи web-программирования, когда не предполагается использования ресурсов Клиента. Или я не правильно понимаю?
Василий Петров ( Пользователь )
(Михаил Густокашин @ 08.11.2007, 14:59) <{POST_SNAPBACK}>
если это количество "волшебных буковок", которые нужно набрать, то си опять ничуть не хуже паскаля (var, begin, end...). подключаем ввод-вывод одной строкой, пишем int main(void) и вперед и с песней. по сравнению с Java на порядок меньше. какой-нибудь

Проблема с волшебными буковками не [только] в том, что их надо набирать, а скорее в том, что о них надо думать и помнить, что отнимает ресурсы у решения задачи.

Там, где работа выходит за рамки тривиальных типов, хотя бы на уровне коллекций - у статических языков начинается возня с памятью, объявлением переменных и типов и описанием функций. Особенно в тех местах, где есть динамические коллекции.
Кроме того, код в таких языках тяжело дорабатывать. Чуть где изменил - надо лезть в другие места и менять объявления данных. Да, компилятор ругнётся если что не так. Но не всегда - чуть какие операции с указателями и привет.
Конечно, с точки зрения написания правильного академичного кода, такие языки - то, что надо. Но за годы работы со всем этим хозяйством, я как-то привык опираться на удобство разработки и практичность. Ведь если надо меньше думать не о цели - остаётся больше времени для её исполнения.

Я сейчас говорю о решении задачек (1 и 3 группы). Но тот же Python легко позволяет демонстрировать теоретические основы ПО (2я группа).

минималистичный Python не подходит для олимпиад по многим причинам, по скорости работы программ в первую очередь.

Олимпиадные задачи ворочают терабайтными массивами данных? Или у них требования Hard RealTime отклика? В любом случае, грамотный (правильный) алгоритм на Python будет работать быстрее чем неграмотный на компилируемом в машинный код языке и уместится в требования задачи.
Михаил Густокашин ( Пользователь )
Олимпиадная задача не требует какого-то глубокого рефакторинга. да и указатели в них используют не очень часто. а проблемы с производительностью начинаются уже у Java, несмотря на наличие JIT-компилятора. так что вряд-ли интерпретатор будет укладываться. насчет того, что главное - правильный алгоритм, я не спою ни разу. так оно и есть, пусть хоть на чернойкоробке этому учат.

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