Этот текст представляет собой мой ответ на вопрос, почему язык Си категорически недопустимо использовать в качестве языка начального обучения программированию.
Комментарии приветствуются. При распространении просьба по возможности сохранять исходный формат файла (PDF).
Спасибо всем, кто указал на опечатки. В версии 02 они исправлены. В версии 03 сделана более полная аннотация, исправлены ещё несколько опечаток и стилистических погрешностей.
P.S. Я совершенно не понимаю, кому понадобилось так распиарить текст, исходно предназначенный довольно узкой аудитории. Но на всякий случай, задабы снизить уровень информационного шума, отмечу, что комментарии на этом сайте премодерируются, и видимыми я делаю только те из них, которые мне так или иначе интересны. В частности, по рассматриваемому вопросу мнение людей, не имеющих серьёзного опыта преподавания, мне в большинстве случаев не интересно совсем.
| Прикрепленный файл | Размер |
|---|---|
| anti_c_v03.pdf | 227.19 кб |

Опечатка
На третьей странице — s/типаов/типов/
Все правильно!
Полностью поддерживаю автора! Корень проблемы в том, что Си НЕВОЗМОЖНО
объяснить так, чтобы НЕПОДГОТОВЛЕННЫЙ студент все понял и разобрался.
В свое время Никлаус Вирт сказал, что он придумал Паскаль потому, что
ему надоело преподавать языки, которые невозможно объяснить логически
(за точность цитаты не ручаюсь). Прошло 40 лет, и мы радостно
отступаем назад!
К примеру с "Hello, world" могу еще добавить, что запросто найдется
какой-либо нахватанный студент, который спросит, а можно ли вообще
опустить #include? Что ему говорить? "Вообще-то можно (врать-то
нельзя! - действительно можно), но не нужно!". Любой студент сразу
заподозрит, что его где-то дурят! Так можно или нельзя? Предложения
типа: "Можно, но я вам запрещаю это делать, так как это нехорошо. А
почему нехорошо, не скажу, это вы пока не поймете" хороши в детском
саду, но не в университете. Начинать же изучения с разговорах о
прототипах функций (а что такое функция?), о предварительных
объявлениях переменных и типов (а что такое переменные и типы?) просто
глупо, об этом автор написал хорошо.
Еще раз поддерживаю позицию автора6
Насчет
Насчет опускания включения как раз объяснить легко: правите программу на printf(2753329); и пробуете откомпилировать в обоих случаях.
По поводу текста
Андрей,
Просто частное мнение, без претензии на что-либо.
С текстом согласен, но если его цель -- кого-то в чём-то убедить, то стоит его получше структурировать. Было бы неплохо, чтобы основные аргументы излагались в тезисном виде в предисловии, а затем резюмировались. В противном случае немногие дочитают текст до конца, а дочитав, в многообразии высказанных автором пунктов, идей и предложений забудут основное: ответ на вопрос "почему не надо?". Ибо даже если есть миллион причин не делать чего либо, стоит акцентировать внимание на главных: иначе читатель, опровергнув наименее убедительные, таки сделает то, что не надо.
Вы отлично поработали и действительно нашли много хороших "против". Если планируется аргументированно спорить с методическим советом, то стоит отфильтровать просто хорошие, выбрав бронебойные. Например, с "Hello, world" -- совсем неубедительный пример, поскольку предлагается взять "исторически сложившуюся" методику обучения, а затем показывается, что она дурацкая. Ну и что? Значит, нужна другая методика, подумает читатель.
Мне кажется, наиболее веские аргументы непригодности С для начального обучения с методической точки зрения изложены в 6 разделе. Возможно, хватило бы его + соответствующего введения и выводов.
С уважением,
Константин Савенков.
Очень
Очень интересное мнение. Сам всегда удивлялся, почему паскаль не заменят, теперь начинаю понимать, что судил уже с точки зрения человека умеющего программировать. Так же согласен с введением UNIX, это дает более широкий кругозор. Программирование под Windows хорошо бы было отдельным курсом, на базе C#. И отдельные небольшие курсы по "экзотическим" языкам (Lisp, SmallTalk, Haskell) на более старших курсах естественно. Тогда у студента был бы выбор, широкое понимание выбранной профессии.
<--ОШИБКА--> Итак,
<--ОШИБКА-->
Итак, среди первокурсников есть прослойка тех, кто умеет программировать (в той или иной степени), но эта прослойка, во-первых, малочисленна, и, по-вторых, как раз эти студенты в услугах преподавателей (по программистским предметам) нуждаются меньше всего.
Однозначно -
Однозначно - Паскаль. Он в целом более логичен и интуитивно понятен, нежели С.
В блок-схеме
В блок-схеме похоже ошибка, YES и NO в условии местами перепутаны (EOF YES ведет в тело цикла, а должно завершать).
Thanks,
поправил, сейчас буду выкладывать
Статья
Статья понравилась, сам задавался вопросом, зачем нас обучали pascal вместо C. Теперь все понятно. Хотелось бы увидеть статью того же автора, рассматривающую python в качестве языка для первоначального обучения. Ну или "почему для первоначально обучения можно pascal и нельзя python".
Опечатка
На 12й странице - s/времением/временем
Здоров!
Привет, Крокодилий!
Ничего так расписал. Единственное что смущает меня, как среднего читателя Хабра, обилие деталей про ВМК МГУ. Но, как я понимаю, основная целевая аудитория эссе все же внутри факультета.
И еще одно IMHO и один вопрос:
IMHO. Разделение студентов на "программистов" и "ламеров" наряду с разделением по уровню знания английского существенно усложнило бы линейную структуру групп. Гораздо разумнее на этом фоне выглядели бы факультативные лекции и семинары, зачет/экзамен по которым заменял бы страндартный зачет/экзамен по "Алгоритмам и алгоритмическим языкам" на первом курсе (включая при этом проверку знаний из базового курса).
Вопрос: действительно ли есть потребность отдельно готовить студентов для работы с суперкомпьютерами? В чем особенности?
Cheers,
VSol
А в стенфорде
Я смотрел лекции Стенфордского университета, курс CS106A. Это начальный курс программирования. Так вот они начинали с Java. Но не с самого языка, а с программирования алгоритма для робота Карела, который бегал по экрану. У нас по-моему тоже было что-то такое, "Кукарача" или типа того. Так вот, обьяснить 4 команды Карела было легче простого. А про объявление public static void main сказали, что пока просто примите это, the way it is. А через 5 занятий всех студентов прозрачно перевели на Java. Потому что синтаксис простого и понятного Карела был почти идентичен Java.
Сегодня, я думаю, реально паскаль мало кому нужен. И полагаю, что в Стенфорде не дураки сидят, и не просто так начинают обучение с ООП языка. Дальше у них по программе, кстати, С++, Python, Ruby. И я искренне жалею, что я учился на паскале, Fox Pro, 1C и т.п. Лучше бы я Питон учил в универе.
Ну, учить на FoxPro
Ну, учить на FoxPro и 1С - это вообще за гранью добра и зла, прямо скажем.
Дальше, кто сидит в Стэнфорде - это вопрос интересный. В MIT до недавнего времени единственным рабочим языком был Лисп, это я понять вполне готов, но то я (с моим опытом реализации Лиспа), а то все остальные. Начинать же с ООП, я бы сказал, глупо - потому что "зачем нужно ООП", может понять человек, написавший (самостоятельно) хотя бы одну программу хотя бы на пару тысяч строк. Ну ладно, на тысячу. Но среди нынешних студентов преобладают те, что свою первую (и последнюю) мало-мальски длинную программу пишет уже в рамках дипломной работы, и не раньше.
Ой жесть. Foxit
Ой жесть. Foxit Phantom падает с крэш репортом при попытке открытия файла :)))
Файл выплюнут
Файл выплюнут pdflatex'ом. Кто из них неправ - фиг разберёт.
первый язык программирования
возможно все-таки имеет смысл в качестве первого языка программирования использовать Python ?
аргументы "за" это решение можно легко найти в интернете, тем более, что устаревшие языки программирования
Fortran, Algol и Pascal - сейчас практически нигде уже не используются в production, и не имеют поддержки
современных методов программирования, в том числе "объектно-ориентированного программирования".
ООП - это вообще
ООП - это вообще очень интересный вопрос. Я бы сказал, что попытки объяснить ООП человеку, ни разу не написавшему программу ну хотя бы на пару тысяч строк - это как глухому пытаться объяснить, что такое соната и чем она отличается от кантаты. IMNSHO, ООП вообще не место в основных курсах. Только спецкурсы, и только для тех, кто умеет и хочет программировать.
У Python есть еще
У Python есть еще одна проблема с точки зрения начала обучения - отсутствие строгой типизации, без нее, как мне кажется, тяжело объяснить понятие типа, которое крайне важно в программировании.
В последствии перейти с языка со строгой типизацией на язык без нее значительно легче, чем в обратную сторону.
А ещё в Питоне нет указателей
То есть само по себе это не страшно, но рано или поздно придётся таки изучать Си, и я бы предпочёл, чтобы к этому моменту люди уже понимали, что такое указатель и с чем его едят. Паскаль позволяет обходиться без указателей столько, сколько мы захотим, но как только мы решим учить студентов обращаться с указателями - они к нашим услугам.
Re: А ещё в Питоне нет указателей
Так понимание сути указателей всё равно даёт не Паскаль, а ассемблер. А к моменту изучения Си ассемблер уже пройден.
Ни фига он не
Ни фига он не даёт. Я ни разу не видел, чтобы на ассемблере пытались работать с динамической памятью. С другой стороны, на ассемблере адреса, может, и есть, а переменных как самостоятельной (от адресов не зависящей) сущности - нет. А самостоятельно связать все эти "косвенные адресации" и прочее с указателями из ЯПВУ могут только студенты из той прослойки, которая, как я уже много раз говорил, слишком тонка, чтобы на неё ориентироваться.
Тут нужен именно Паскаль (или что-то вроде, но Оберон и прочее GC не предлагать) - чтобы привыкнуть к тому, что есть переменные, а есть ещё указатели. И односвязный список со всей сопутствующей техникой навроде указателя на указатель (это когда надо из списка вычеркнуть все элементы, удовлетворяющие условию) проще всего демонстрировать именно на Паскале.
Интересная статья, пачка комментариев.
Очень хорошая статья, думаю уместно будет ее напечатать и положить на кафедре, где я работаю, для ознакомления других преподавателей. Особенно она была для меня интересна из-за того, что я недавно начал обучение школьников программированию практически с нулевого уровня. И начал как раз с С++. Чтобы обойти сложности понимания некоторых моментов, я сказал им, чтобы #include, int main и прочее воспринимали просто "так надо" и заранее, до начала лекций по языку дал им краткий справочник, описывающий базовые языковые конструкции (например, объявление, присваивание, ветвление, циклы, прочее). И настаиваю на том, чтобы они как можно быстрее пробовали писать. после получения минимального начального опыта написания программ им легче уже будет понять формальное описание языка. Насколько это даст эффект - посмотрим через пару месяцев. Аудитория, кстати, у меня имеет разный уровень и возраст (6-8 класс). Вывод им показываю через библиотеку iostream, что избавляет от необходимости передавать указатель на переменные и указывать тип вводимых данных.
Что же касается преподавания языка Си на первом курсе. Очень во многом автор прав, хотя некоторые приемы преподавания, как мне показалось, несколько утрированы. Я бы сделал такие дополнения:
1. В школах есть учителя, умеющие и программировать, и учить. Я лично знаком с такими. Но, к сожалению, их очень мало.
2. Автор прав в том, что не стоит преподавать Си для студентов, имеющий близкий к нулевому уровень навыков программирования.
3. Я бы поставил под сомнение уверенность автора в том, что надо преподавать Паскаль. На роль учебного языка вполне может подойти например Ява или C#. Если говорить ою обучении будущих профессиональных программистов, то на первых курсах им надо обязательно давать ООП и современные инструменты. ООП лучше как раз показывать на вышеуказанный мною языках. Из этих соображений и можно их сразу дать на первоначальное обучение. Минус - придется объяснить что такое функции. Плюсы: студенту необходимо за первые пару лет учебы выучить на один язык меньше; проще плавно перейти к изучению ООП; указанные мной языки современнее, студент сразу сможет их смело использовать для написани лабораторных работ по другим дисциплинам, написанию программ к курсовым работам.
Джава и С# - это
Джава и С# - это сначала инструменты завоевания мира, и лишь потом языки программирования. В университете им не место вообще. То есть никак, ни в каком виде. Роль университетской среды в том, чтобы противостоять коньюнктурщине, а не продвигать её.
имхо, Java и C#
имхо, Java и C# являются языками для лёгкого и быстрого написания программ, но никак не для обучения ООП и принципам программирования. из личного примера - друзья из МИФИ писали калькулятор на C#, я на чистом C - у МИФИ это заняло 1 вечер и 20 строк чистого рукописного кода, у меня - неделю и порядка 300 строк рукописи. по-моему, нужно сначала объяснить все принципы программирования, и лишь потом показывать, что всё то, что ты можешь написать сам, есть в неких сторонних библиотеках. уж извините, но научить в нужном месте вставлять нужные функции большого ума не надо
Добрый
Добрый день.
Внимательно прочитал статью.
1 Суть обучения заключается в том, кого мы хотим получить на выходе - специалистов по рисованию окошек, "готовых PM-ов" и т.д. либо людей, которые досканально знают материал и любят это дело, находясь при этом с открытым сознанием и способностью принимать новые идеи. Способностью анализировать свои знания, способностью к самостоятельной постановке и решению задач.
2 Обучение в университете, в большей части рассчитано на средние знания по больнице, и принимая во внимание огромную загруженность во время обучения рассчитывать на доп обучения не стоит.
3 Либо уже на первом курсе необходимо делать выводы о том, что тебе важно и забивать на оставшиеся предметы.
4 Что невозможно при нынешней системе оценки знаний, и существующей системе высшего образования.
5 Либо успевать везде.
По поводу int main() - рекурсивность обучения, (само)образования в том и заключается, что ты постоянно возвращаешься в начало, я бы сказал, что язык С не настолько сложный (как вы описываете), но он может потребовать особого устройства мозга.
Вообще говоря,
Вообще говоря, основной продукт университетского образования - это учёные и преподаватели. Программисты - побочный продукт, хотя и полезный.
Но главное тут даже не в том, что МЫ хотим видеть на выходе. Мы можем хотеть много чего, реальность же такова, что сделать программиста (то есть вот такого специалиста, который будет писать программы и получать за это деньги) в рамках учебного заведения невозможно. Все программисты, кого я спрашивал, говорят, что программировать они или сами научились, или их научили уже коллеги по фирме. И со мной самим, естественно, была такая же история.
Максимум, что мы можем сделать в рамках университета - это научить думать и самостоятельно извлекать знания из окружающего мира. С этим университет справляется.
А Си, конечно, не сложный, и этого я не утверждал. На втором курсе Си объяснить - задача проще пареной репы. Я лишь утверждаю, что даже если наша цель - научить студента писать на Си, то проще и быстрее сначала научить его на Паскале, а потом перейти на Си.
Если получение
Если получение высшего образования - осознанный выбор, то человек и будет самостоятельно получать знания. А вот свободный выбор факультативов с углубленным изучением, вкупе с не очень большим набором обязательных предметов, дал бы возможность перекрестного опыления знаниями еще в процессе обучения.
Увы, для
Увы, для большинства студентов на младших курсах высшее образование - это неизбежное зло, которое приходится преодолевать, чтобы получить корочку. То, что всё это вообще-то желательно ещё и знать, народ просекает на четвёртом-пятом курсе, когда уже поздно.
А про факультативы я полностью согласен. Я вообще предпочёл бы систему, принятую в западных университетах, когда можно самостоятельно выбирать курсы, просто у каждого курса есть пререквизиты, то есть курс можно слушать, только уже прослушав определённый набор других курсов.
Ну а раз так, то
Ну а раз так, то действительно учить С - незачем.
Я в свое время осознанно начинал именно с Си, но до этого был бейсик, паскаль и тупо машинные коды, просто была возможность учиться играя с третьего класса.
Вообще-то я не согласен
Видимо, вы вообще не читали обсуждаемый здесь текст. Я никогда не говорил, что Си учить "незачем" или не нужно. Напротив, Си - язык в процессе обучения необходимый: и арифметика указателей, и работа со стоками на нижнем уровне, и программирование на уровне системных вызовов - всё это опыт, без которого невозможно понять, что такое программирование.
Я лишь утверждаю, что всему своё время. Си не может быть первым языком программирования. Вторым - запросто.
Почему нельзя учить на Java
Вот статья для тех, кто предлагает начинать обучение с Java, Pyton и других языков высокого уровня.
Опасности обучения на Java
Хотя в ней предлагается начинать обучение с Си ;)
Огромное спасибо!
Статья великолепна, я буду в неё тыкать носом (мысленно перечисляет) ну, в общем, много кого, долго и плодотворно. И ни фига она не предлагает начинать с Си, начинать там предлагают со Схемы и учить по SICP'у, с чем лично я готов согласиться. А вообще основная мысль статьи в том, что надо научить указателям и надо научить функциональному программированию (рекурсии), иначе будет хреново. Так вот, указателям проще учить на Паскале, после этого Си рассказывается за четыре-пять семинаров и без малейших трудностей.
ada
А что вы думаете об замене Паскаля языком АДА изначально, ведь АДА имеет паскалеподобный синтаксис, плюс в конце курса можно дать параллельное программирование?
Гм
Ну, для начала синтаксис (точнее - лексика, потому что синтаксис там совсем не похож на Паскаль) тут вообще ни при чём. Если сравнивать Си и Паскаль, то применение в Паскале begin и end вместо сишных фигурных скобок будет вообще последним, о чём я вспомню. Ибо какая нафиг разница.
А что до Ады как таковой... гм. Аду95 я, каюсь, не знаю и даже издали не видел. А Ада83... э... мммм... Моим первым поползновением было сказать, что она слишком сложна даже для профессиональных программистов, но лучше я не буду этого говорить. Вполне возможно, что Ада допускает постепенное введение в себя. Для ответа на этот вопрос нужно знать Аду лучше, чем я её знаю, ведь я на Аде никогда не писал. Это надо, например, Рыбина спросить, смог бы он прочитать Аду первокурсникам, не знающим, что такое функция и тип переменной. Если скажет "смогу", то попробвать уговорить его или ещё кого-то это проделать. В порядке эксперимента. На одну группу. Если получится - замечательно.
Касательно Ады
Касательно Ады могу вспомнить семестровый спецкурс Рыбина, прослушанный мной то ли на втором, то ли на третьем курсе. Это все очень интересно, но порог вхождения получался там очень высоким: написать на Аде что-то работающее я тогда смог бы разве что глядя в свой же конспект хотя бы за первую половину курса.
на 2м курсе, насколько я помню. точно не на 3ем.
вот +1.
и я не уверена, что если занятий по Аде будет больше, чем одно в неделю, результат будет сильно лучше.
Хотя.. смотря что из Ады запихнуть в курс
Неточность
В последнем абзаце девятой страницы стоит заменить "регулярные автоматы" на "регулярные выражения" или "конечные автоматы".
Мне кажется, у
Мне кажется, у нас на факультете вообще непозволительно много времени уделяют изучению инструментов в отрыве от практики. Синтаксис того же сферического паскаля в вакууме зачем-то дается на лекциях в виде блок-схем и БНФ по книжке Трифонова. Зачем? По большинству современных языков написаны вылизанные сообществом методички, которые любой студент в состоянии освоить за несколько занятий.
Хорошо всё уметь, ага
Глайдер, ну-ка, погоди, любой студент? Даже такой, который не понимает, что такое побочный эффект? Да какой там побочный эффект, мне на втором курсе попадались люди, не понимающие, что такое вложенный цикл.
С небес на землю шагом марш. А лучше бегом. Зная твой уровень, рискну предположить, что ты на момент поступления на ВМК программировать уже умел. Я специально в обсуждаемом тексте упоминаю людей из этой прослойки и - увы нам! - тот факт, что ориентироваться на уровень этой прослойки мы не можем, ибо она чрезмерно тонка.
Окей, вопрос
Окей, вопрос снимается. Я в основном в данном случае говорил про Python, но в его тьюториале тоже английским по белому написано про то, что необходимо знание C/C++ :( С Go, похоже, та же история.
Я навскидку вообще могу назвать более-менее один тьюториал действительно для нубов -- Why's Poignant Guide to Ruby (http://mislav.uniqpath.com/poignant-guide/book/chapter-1.html), но он, увы и ах, тоже GC. Лично мне, правда, это препятствием не кажется: в том же Лиспе вообще нету никакой явной аллокации памяти, а, поди ж ты, учат и на первом курсе, и даже раньше (вон, Эльман в школе умудряется детей Лиспу учить).
Лисп - не
Лисп - не императивный, сиречь не фоннеймановский. Если мы от базового вычислителя (машины фон Неймана) отходим настолько далеко, что готовы не обращать внимания на мусор (добавив GC), то тогда нет смысла оставлять присваивания, циклы и прочие исходно противоестественные концепции, навязанные именно что машиной фон Неймана.
Разумеется, к машине фон Неймана рано или поздно придётся вернуться, но это тогда уже будет не первый язык программирования, так что можно будет даже Си.
Правильная статья
В целом всё правильно. Но! Скажу с точки зрения человека, который "умеет программировать на 1м курсе". Моим первым языком был Си, а ОСью - *nix (Linux Slackware). Изучал я это всё по ОС UNIX А. Робачевского и K&R Си. Кстати, очень быстро всё понимается, если включать отладочный вывод. Где адрес, где значение итд.Так вот, обладая некоторым запасом знаний в области программирования и Юникса, отработав несколько лет в должности сис. админа юникс-серверов, очень неприятно сталкиваться с мнением преподавателя "Да ваш Си - фигня, а юникс - отстой. Я пишу на дотнете (программирую мышкой) и я знаю, чему вас надо учить".
Да и программисты из тех, кого учат таким образом, выходят аховые. Итого - человек учился программированию, но всё, что он умеет - расставлять кнопки по формам и копипастить код из примеров. Зачем такое обучения?
Надеюсь, не в мой огород булыжник?
На всякий случай - я с 1998 года предпочитаю об винду не мараться :-)
Мой ответ
Я позволил себе написать ответ. :)
http://avchernov.livejournal.com/312.html
А ничего, кстати, текст
... мне даже местами понравилось, особенно про бумажки.
Если по существу, то, во-первых, блажен кто верует. В данном случае - в 25-30 процентов. И в пользу от ЕГЭ по информатике.
На самом деле, я с твоими тезисами готов согласиться почти во всём (даже несмотря на исходные посылки, излишняя оптимистичность которых для меня очевидна) -- кроме одного: собственно перехода на Си. Этот переход, как ты сам отмечаешь, никоим образом из остальных твоих тезисов не следует.
Хотя нет, вру, есть ещё один момент. Если написание машин Тьюринга и алгоритмов Маркова убирать из практикума, то нужно будет придумать отдельно семинары в поддержку курса АиАЯ. Потому что уметь решать эти задачи необходимо.
Хорошее эссе
Я долго не понимал, почему преподают "мертвый" паскаль, вместо живого С. Потом, когда на 2 курсе объяснял С раздолбаям из группы, понял почему :)
Но почему бы не Python? интересный язык, несложный в освоении и понимании.
Работу указателей, лично я понял после того, как начал интересоваться ассемблером :) после него как-то очень быстро дошло, что это такое и как ими пользоваться :)
Pascal и мое негодование
А ведь и серьезно, без паскаля врядли бы писали программы наши блондиночки :) я сам то как сейчас помня свое негодование и ненависть к паскалю, ведь я писал на пхп, ц, визуальном беисике и так далее перед тем как поступил на информатику. А сейчас я это понял, и деиствительно хорошо что был такой курс ;)
с точки зрения недавнего студента
Позволю себе высказаться с точки зрения не преподавателя, а студента.
Когда на первый курс приходишь с знанием си, то "стандартный паскаль", особенно в группах, в которых заставляют "строго" его придерживаться, доставляет уйму негативных эмоций. Это, конечно, мелочи с точки зрения высоких материй и долгосрочных перспектив, и года через 3-4 начинаешь понимать зачем и почему было именно так. Но раз уж речь зашла о преобразованиях, даже если не удастся сделать отдельные группы для более/менее подготовленных(это, всё же, совмещено с немалыми административными и практическими сложностями), то, в качестве небольшого изменения, было бы очень приятно, если бы просто разрешили писать домашние задания и задачи на экзамене не только на паскале, а скажем на паскале/сях/схеме. На выбор.
И ещё, конечно, всё правильно про перевод процесса на UNIX. Правда, при этом, очень хотелось бы, что бы один-два семинара посвещались курсу молодого бойца про шелл, vim, gdb и прочие необходимые вещи. Сейчас считается, что студент должен узнавать это сам, если не узнал --- сам виноват. Но раз уж тут зашла речь о том, что студенты бывают не только идеальные и вакууме, то, мне кажется, минимальное введение в инструментарий разработчика было бы очень полезно и многие бы проблемы из области непонимания элементарных вещей могло бы устранить.
Хотелось бы, проходя мимо мз2 видеть не чуть не плачущих первокурсниц вглядывающихся в синие экранчики 25*80 и отчаянно копипастящих 30-ый writeln, а что-нибудь более соответствующее 201х году.
Про курс молодого бойца
Не знаю, где это "считается", что не надо рассказывать vim и gdb. Я своим группам на втором курсе это рассказываю. Даже вон книжку написал: Операционная среда ОС Unix для изучающих программирование
Отправить комментарий