Comment62
* Как изменилось (если изменилось) ваше отношение к предмету?
Я понял, что язык С++ требует к себе специального отношения.
Раньше я полагал, что главное и почти единственное – это базовые принципы объектно-ориентированного проектирования, которые можно и нужно использовать во всяком современном языке. А С++ – лишь один из языков с поддержкой ООП, эдакая Java без сборщика мусора. Я, разумеется, знал, что в С++ есть интересные иснструменты: перегрузка операторов, шаблоны и проч. Однако, у меня было впечатление (отчасти инспирированное книжками Саттера из серии Exceptional C++), что если ты не считаешь себя окончательным гуру, то лезть туда не стоит – проблем возникнет больше, чем появится преимуществ. Теперь же я убедился, что и простые смертные могут вполне пользоваться шаблонами и перегрузкой операторов, и при более-менее аккуратном подходе возмездие за гордыню не будет слишком жестоким.
Правда, в таком разнообразии «продвинутых» средств есть один давно замеченный недостаток: сейчас мне хочется не столько программировать, cколько играть с языком. :)
Ещё я понял, что надо бы лучше разобраться с возможностями шаблонов – они, похоже, почти безграничны.
* Используете ли вы полученные знания в своих проектах, помимо решения контрольных задач?
Да. Не возьмусь назвать конкретное «знание», которое я применил, но я стал гораздо лучше понимать, что именно я пишу, достоинства и недостатки своих решений.
* Что вам понравилось?
Почти всё. Но особенно:
Процесс сдачи контрольных заданий :) Это было круто.
Лекция по ООД были хороши.
И ещё в конце был очень яркий пример разработки класса Stack.
* Что вам не понравилось? / Что, на ваш взгляд, можно было бы улучшить?
Можно было бы несколько сократить вводные лекции, в которых шла речь о вещах достаточно известных, и знания этого материала прверялись на входном тестировании, и уделить больше внимания STL. Например, крайне мало было сказано об алгоритмах и итераторах. Например – как написать свой итератор, чтобы он был совместим со стандартными алгоритмами? Или как написать свой алгоритм, чтобы он был совместим с контейнерами? В общем, главное пожелание – больше STL.
Тут есть ещё один аспект. Как правило, cам язык С++ изучается в обязательных курсах, но оба известных мне «cтандартных» курса С++ (на ФИТ-е и на ФФ/АФТИ) почти полностью упускают STL. Это вовсе не недостаток, у них просто другая цель – научить не С, а собственно программированию, и в этом случае знание STL может оказаться даже вредным, ведь с учебной точки зрения гораздо полезнее разработать свою реализацию, cкажем, типа данных «очередь» нежели применить стандартный шаблон.(На семинарах по этим предметам иногда даже явно запрещается пользоваться шаблонами из STL – и определенная логика в этом есть) Однако факт остаётся фактом – STL в его более-менее продвинутом использовании (не просто – «добавить в вектор») упущен. И сейчас я считаю, что это на текущий момент мой серьёзный пробел в знании С.
В целом, всё было очень хорошо.
Maksim Ananjev?