MyWackoSite: Comment62

This is a comment on Спецкурс Cxx / Осень 2006 / Обратная Связь, posted by host-85–118-231–77.academ.org at 2007-01-27 21:08:35
* Как изменилось (если изменилось) ваше отношение к предмету?

Я понял, что язык С++ требует к себе специального отношения.

Раньше я полагал, что главное и почти единственное – это базовые принципы объектно-ориентированного проектирования, которые можно и нужно использовать во всяком современном языке. А С++ – лишь один из языков с поддержкой ООП, эдакая Java без сборщика мусора. Я, разумеется, знал, что в С++ есть интересные иснструменты: перегрузка операторов, шаблоны и проч. Однако, у меня было впечатление (отчасти инспирированное книжками Саттера из серии Exceptional C++), что если ты не считаешь себя окончательным гуру, то лезть туда не стоит – проблем возникнет больше, чем появится преимуществ. Теперь же я убедился, что и простые смертные могут вполне пользоваться шаблонами и перегрузкой операторов, и при более-менее аккуратном подходе возмездие за гордыню не будет слишком жестоким.

Правда, в таком разнообразии «продвинутых» средств есть один давно замеченный недостаток: сейчас мне хочется не столько программировать, cколько играть с языком. :)

Ещё я понял, что надо бы лучше разобраться с возможностями шаблонов – они, похоже, почти безграничны.

* Используете ли вы полученные знания в своих проектах, помимо решения контрольных задач?

Да. Не возьмусь назвать конкретное «знание», которое я применил, но я стал гораздо лучше понимать, что именно я пишу, достоинства и недостатки своих решений.

* Что вам понравилось?

Почти всё. Но особенно:

Процесс сдачи контрольных заданий :) Это было круто.

Лекция по ООД были хороши.

И ещё в конце был очень яркий пример разработки класса Stack.

* Что вам не понравилось? / Что, на ваш взгляд, можно было бы улучшить?

Можно было бы несколько сократить вводные лекции, в которых шла речь о вещах достаточно известных, и знания этого материала прверялись на входном тестировании, и уделить больше внимания STL. Например, крайне мало было сказано об алгоритмах и итераторах. Например – как написать свой итератор, чтобы он был совместим со стандартными алгоритмами? Или как написать свой алгоритм, чтобы он был совместим с контейнерами? В общем, главное пожелание – больше STL.

Тут есть ещё один аспект. Как правило, cам язык С++ изучается в обязательных курсах, но оба известных мне «cтандартных» курса С++ (на ФИТ-е и на ФФ/АФТИ) почти полностью упускают STL. Это вовсе не недостаток, у них просто другая цель – научить не С, а собственно программированию, и в этом случае знание STL может оказаться даже вредным, ведь с учебной точки зрения гораздо полезнее разработать свою реализацию, cкажем, типа данных «очередь» нежели применить стандартный шаблон.(На семинарах по этим предметам иногда даже явно запрещается пользоваться шаблонами из STL – и определенная логика в этом есть) Однако факт остаётся фактом – STL в его более-менее продвинутом использовании (не просто – «добавить в вектор») упущен. И сейчас я считаю, что это на текущий момент мой серьёзный пробел в знании С.

В целом, всё было очень хорошо.

Maksim Ananjev