Представитель Шуры Люберецкого в ЖЖ (brat_luber) wrote,
Представитель Шуры Люберецкого в ЖЖ
brat_luber

Category:

Про учебники по C++

Прочитал недавно рецензию на учебник Столярова, где тот обозвали “плохой методичкой“. Ну да, я и сам согласен с тем, что оставлять студентов наедине с книгами Столярова нельзя – но при всех недостатках книжка по C++ (полностью вошедшая в четвертый том многотомника) более-менее подходит для того, чтобы понять основные принципы языка (всякие там rule of three, RAII и так далее). И кстати, не могу согласиться с тезисом о том, что автор не “сделал хоть что-нибудь положительно отличающее текст от бесконечного числа вузовских методичек, призванных помочь студенту сдать экзамен автору методички” – особенно когда перед этим в трех пунктах утверждается, что автор – ебанутый фанатик (в хорошем смысле). В конце концов, большая часть софта, которым мы все пользуемся, была сделана как раз ебанутыми.

А если говорить о dark side образования – ознакомился на днях с конспектом курса “С++ для математиков”, который в TU D-stadt читают Dr. Alf Gerisch и Dr. Adrien Semin. Курс представляет собой какую-то смесь из странным образом подобранных элементов C++ и взятых из численных методов примеров.

Из положительного хочется отметить разве что довольно подробную лекцию о IEEE 754 с некоторыми примерами правильных вычислений с плавающей запятой (например, с решением “плохих” квадратных уравнений). А вот отрицательного, к сожалению, гораздо больше. Во-первых – разбираемое в лекциях подмножество C++, как бы это сказать… совершенно недостаточно для нормальной продуктивной работы. Это такой поверхностный обзор в стиле введения в “Язык программирования C++” Страуструпа – вот у нас есть классы, вот как выглядит наследование и полиморфизм (множественное наследование не разбирается), вот есть шаблоны (делаем класс Polynom), вот библиотека STL (в ней есть класс vector).

Во-вторых – вот за такое можно поймать лектора в темной подворотне и отпиздить, желательно ногами по голове (классы все здесь по размеру маленькие, максимум два числа и ссылка на функцию):

int main(void)
{
    // list of two base class pointers
    numInt1D** integrator = new numInt1D*[2];
    // fill with two pointers to derived class objects
    integrator[0] = new numInt1D_rectangleLeft(0.0, 1.0, &f);
    integrator[1] = new numInt1D_trapezoidal(0.0, 1.0, &f);
    // output numerical integral approximations
    std::cout << "Integral approximation using rectangle rule = "
        << integrator[0]->integrate() << std::endl;
    std::cout << "Integral approximation using trapezoidal rule = "
        << integrator[1]->integrate() << std::endl;
    // clean up
    delete integrator[0]; delete integrator[1];
    delete [] integrator;
    return 0;
}

Вообще, не раз наблюдал вот такую ничем не объяснимую любовь к new в C++ у быстро переученных на него джавистов.

Есть, конечно, одно обоснованное возражение - а зачем студентам-математикам учить C++ в каком-то приближенном к реальной жизни объеме, тем более, что для численных методов этого достаточно? Вот возьмем для примера мехмат МГУ - который, в отличие от факультета математики провинциального немецкого ВУЗа, все-таки пытается готовить профессиональных математиков (а пошедшие в программисты выпускники для факультета - третий сорт, после преподавателей этой самой математики). Что входит в "Практикум на ЭВМ" на втором курсе? Отнюдь не только численные методы, но еще и "тонкости" вроде "Десять способов неправильного описания прототипов методов сложения (operator+) и "увеличить на" (operator+=) и единственный правильный способ", да и совершенно "практические" вещи типа библиотеки Qt стороной не обошли. В курсе есть достаточно мест, где можно наступить на стандартные C++-ные грабли и навсегда их запомнить (а нормальное обучение C++ и должно строиться на том, что все эти многочисленные "грабли" надо собрать в процессе обучения самостоятельно и больше их не забывать).

У немецких же товарищей - все наоборот, грабли старательно обходятся, и успешно сдавший экзамен студент знает C++ в том объеме, который позволит ему разве что наделать кучу опасных ошибок.

PS PDFку с лекциями очень просили не распространять, если будут какие-то вопросы - пишите.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Subscribe

  • Таджикоанглийский

    Один ли я, читая Release Notes на этой картинке, вспоминаю Равшана и Джамшута? Запись опубликована в блоге Шуры Люберецкого. Вы можете…

  • Вдогонку истории про Кинопоиск

    Почитал комментарии к “перезапуску” Яндексом Кинопоиска. Что хочу сказать? Яндексовцы сделали просто офигенный и современный “сайт…

  • И еще вдогонку

    Вот обсуждают все пресловутый флешмоб “про 90-е”. Кто-то честно выкладывает фоточки “из детства”, кто-то – истории про…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments