Архив 6 марта 2013

Не можешь работать – иди учить

Человек пытается учить студентов программированию. Пишет что-то типа:

#include <stdlib.h>

void main(){
    char *p;

    p = (char*) malloc(strlen("John") * sizeof(char));
    strcpy(p, "John");

    // skipped some code

    free(p);
}

Компилирует все в Visual Studio, в режиме Debug – и естественно, сталкивается с адской руганью на последнюю строчку, после чего обращается за помощью к коллективному разуму:

heapcorrupt

Даже если соотношение между потребной для хранения строки памятью и значением strlen благополучно забыто (ну не каждый день приходится работать с C string’ами) – то отладчик Visual Studio довольно быстро помогает понять, что именно послужило причиной heap corruption’а. В общем, “преподаватель” некомпетентен либо в языке Си, либо в стандартной библиотеке, либо в конкретных инструментах разработки. Любой из пунктов – это полный “тушите свет, сливайте воду” (ну разве что кроме стандартной библиотеки – и то, если в учебных программах придется работать с Сишными строками – то такие нюансы нужно знать, как “Отче наш”). Сможет ли такой препод ответить на вопрос студента “у меня программа не работает, что делать, помогите”?

А потом мы удивляемся, почему выпускники по профильным вроде как специальностям идут работать куда угодно – только не по написанной в дипломе специальности.

25

Поздравлять можно в комментах.