Расскажу и про свою версию "ЩЩЕЙ". А точнее, про один зачет по ЭВМ, который я сдала, так сказать, с особым цинизмом...



В начале 2010-х на младших курсах мехмата нас учили программировать сначала на С, а потом и на С++ следующим образом: про сами языки рассказывали совсем немного, а потом быстро переходили к тому, как реализовывать математические расчеты типа быстрого умножения матриц, а также про стандартные алгоритмы и структуры данных и как их можно реализовать в данных языках (стандартная библиотека проходилась после того, как ученики научатся реализовывать их самостоятельно). При этом объяснению механизмов языка и аспектов ООП уделялось мало внимания, а рассказов про хорошие практики типа SOLID я вообще не припомню.

В результате и качество моего кода было на тот момент соответствующим: множество глобальных переменных, колбаса из "if"-ов, головокружительная вложенность циклов - все по классике. Кроме того, я не понимала, как работают указатели. В результате я просто старалась передавать какие-либо аргументы в функции как можно реже, а значит, и в целом писать поменьше функций, из-за чего main() рос, как раковая опухоль. Но самое страшное было даже не это, а то, как назывались мои переменные... дело в том, что когда-то, задолго до этих событий, я начинала свои первые потуги в программирование еще до того, как мне купили компьютер, на программируемом микрокалькуляторе МК-52, где имен переменных не было в принципе. Были лишь ячейки памяти П1, П2 и т.д., к которым нужно было обращаться по номерам... а продолжила на микроконтроллерах, в которых нужно было посылать сигналы на пронумерованные ножки, чтобы что-либо запомнить или вывести. В результате я привыкла оперировать бессмысленными именами переменных, и после перехода на языки высокого уровня, для названий переменных я просто использовала те слова, что мне нравились.

Например, мои переменные в парных циклах for носили не скучные имена типа "i", "j", а "adrenaline", "rush" или "red", "bull". Массивы часто назывались именами моих любимых аниме персонажей, например "AyanamiRei". Вот и представьте себе лицо преподавателя, когда он видел итерацию по AyanamiRei с помощью red и bull. N_UHI и krovyakObjects из "щщей" и рядом не стояли...

Впрочем, его отношение к этим переменных было, на самом деле, не важным, потому что по нашим правилам, если программа компилировалась без ошибок и предупреждений и проходила тесты, задача засчитывалась как решенная в любом случае. В итоге мой плохой характер разгулялся на полную: чем больше препод ужасался моей программе, тем сильнее я веселилась. Так что вместо того, чтобы как-либо улучшать ситуацию, со сдачей каждой новой задачи я лишь находила все новые и новые способы удивить учителя. Впрочем, я думаю, его это тоже начало развлекать, потому что каждый раз, когда я оказывала ему честь, придя на занятие, он оживлялся и с энтузиазмом просил показать новые творения.

Большинство задач было не очень сложными, и я решала их вполне успешно, но однажды перед зачетом случился казус. Для этого зачета нужно было решить несколько задач на алгоритмы, и я написала код для большинства из них, но никак не могла решить последнюю, где нужно было реализовать турнирную сортировку. Я пыталась написать эту сортировку до глубокой ночи, но у меня ничего не выходило - в частности, из-за того, что не получалось расставить правильное количество звездочек и амперсандов при передаче параметров в функции, и постоянно происходил SEGFAULT. Отчаявшись, я решила поискать решение в интернете. И что бы вы думали? Первый же сайт в поисковой выдаче был сайтом моего препода, где он, в числе прочих своих проектов, выложил реализацию той самой турнирной сортировки (напомню, StackOverflow и GitHub тогда были намного менее развиты и популярны, чем сейчас).

И вроде бы, решение было найдено, но просто скопировать этот код и показать его же автору было бы крайне невежливо. До зачета оставалось часа четыре, я глубоко задумалась, что же тут можно сделать и в итоге пришла к единственно возможному курсу действий в условиях данных временных ограничений, а именно...



#учеба_на_мехмате