На третьем курсе универа нам читали курс компьютерной графики — скучно и безжизненно, отвлекаясь на какие-то истории, интересные, пожалуй, только преподавателю. В общем, лекции превратились в ад, а практические занятия были и того хуже.
В начале семестра блеснул лучик надежды: нам сообщили, что весь курс будет засчитан, если мы сдадим две программы повышенной сложности. По секрету добавили, что если программа будет на PHP, хватит и одной.
Обрадовавшись, я ударился в работу, не слишком обращая внимание на этот предмет. Но вот на горизонте замаячил зачёт, а не написано было ни байта кода. Поисковик показывал только одну наработку по этому, но она была родом из первой половины девяностых. Тут я наткнулся на библиотеку, позволявшую подключать модули, написанные на C++, к коду на PHP. Библиотека был в стадии разработки и отказывалась передавать или получать параметры функций, то есть вызывать можно лишь что-то вроде void draw(). Выяснилось это только в ночь перед последним днём сдачи.
В голову пришла гениальная идея: написать парсер, который переводил бы код, с виду похожий на PHP, в сишный, компилировал из него объектник, кидал в папку с модулями PHP и запускал бы ту самую void draw(). Код «почти что PHP» выглядел примерно так:
/*int*/ $variable = 0;
Под утро вариант заработал. Думаю, не стоит говорить о своих чувствах во время сдачи этого чуда природы… Но преподаватель остался доволен тем, что увидел (а то, что не должен был, так и не узрел).
Справедливости ради отмечу, что через пару недель я таки нашёл нормальный способ объединения необъединимых с виду частей — но, как всегда, было уже поздно.