> Обычно клиентам на это пофиг, они уже привыкли к тормозам ИЕ.
Тормоза там из-за вот такого подхода, принятого в сообществе. Если, к примеру, верстать изначально под ИЕ, а под Хром писать костыли, он будет тормозить не меньше. Это же насколько надо от реальности оторваться и нос задирать, чтобы так относиться к самому распространенному браузеру (хотя в последнее время он не самый распространенный).
Я недавно верстал страницу (фиксированный фон на всю страницу + скругленные уголки + полупрозрачное скроллящееся окно поверх) — в Хроме прокрутка в разы дерганнее, чем в ИЕ7. Старые добрые картинки лучше работают, чем вся эта новомодная CSS3 хрень. И памяти меньше ИЕ7 ест, и рендерит картинку быстрее.
Что касается PIE — почему это надо делать на яваскрипте? В чем проблема все эти костыли делать на сервере, не мучая клиента? Авторы просто поленились сделать нормально, 1 строчку в HTML проще вписать, чем нормальный конвертер шаблонов организовать.
Адаптивный дизайн, это конечно, хорошо. Но мне кажется, перед этим надо решить другие проблемы, а именно: поддержка css2 браузеров и IE6/7 (те, кто говорят про всякие скрипты типа PIE или ie7.js — вы их исходники смотрели? ни один адекватный человек этого монстра на сайт не поставит. Даже начинающему верстальщику понятно, что адаптировать страницы для ИЕ надо не мучая яваскриптом и без того тормозящий браузер, а на стороне сервера). Поддержка отображения с отключенными картинками, CSS и скриптами. Поддержка версии для печати. Поддержка высокого разрешения на айфоне. Поддержка разных шрифтов.
Когда все это успеть сделать. И покажите мне, какой среднестатистический заказчик согласится оплачивать такую верстку? Сдается мне, мало кто захочет.
Возьмем обычную кнопку: если верстать на совесть, на годы, она должна тянуться по горизонтали, по вертикали (если пользователь увеличит шрифт), в новых бразуерах работать на градиентах, в старых на 4, 6 или 9 картинках в углах, в Ие еще и на костылях, должна иметь фон и бордер для браузеров с отключенными картинками, должна иметь черно-белую версию для печати. Вы представляете, сколько на это времени уйдет?
Можно, конечно где-то схитрить, оптимизировать, что-то генерировать скриптами, но все равно, это не быстро.
Но ведь приятнее, когда тот, кто дарит подарок сам догадывается, что бы ты хотел, а не так вот тупо в лоб спрашивает. Плюс, таким образом можно узнать, насколько хорошо человек тебя понимает. Странный в общем-то какой-то сервис. Мне эта идея не нравится.
Плюс, не понял пассаж про Амазон. Оттуда же товары неделями идут. Да еще и могут не прислать или прислать не то. Стоит ли рисковать?
Заходил на Pinterest, посмотрел мельком, показалось, что это сайт для умственно отсталых: куча картинок, потыренных со всех концов интернета, демотиваторы с глупыми лозунгами. По сути примено то же самое, что можно увидеть в каком-нибудь альбоме из контактика. Где-то среди них, может и есть пара осмысленных картинок, не более. Картинки с одеждой тоже видел, какая-то безвкусная хрень, неудивительно что их спамом рекламируют, так как эти тряпки по доброй воле никто носить не будет.
А интересно, из возмущающихся комментаторов по всему интернету, кто-то возьмет и напишет бесплатную Open Source прогу, и пририсует к ней нормальный интерфейс? Или это дело рук утопающих?
Я не умею под айпад писать, у меня нет айпада и свободного времени.
При проектировании (или копировании/заимствовании) элементов интерфейса важно продумывать различные сценарии их использования.
Однако, многие разработчики вместо этого копируют только внешний вид, или что проще, скачивают и устанавливают какой-нибудь jQuery-плагин или плагин к своей CMS, который делает все за них. Как им кажется. Что с них возьмешь, 5 классов образования.
Что имеем в итоге, мы можем увидеть на примере сайта hantim.ru. Зайдем на страницу со списком вакансий, прокрутим до низу, нажмем пару раз копку «показать еще», промотаем до нижней вакансии и перейдем по ссылке. Теперь жмем кнопку «Назад» в браузере и… попадаем на верхушку списка вакансий. Очень удобно.
Даже крупные сайты, которые делают отличники и победители олимпиад, типа твиттера или вконтакте, из-за аггрессивного использвоания аякса/скриптов имеют проблемы с UX и тормозят в моей Опере.
А ведь, если бы использовались классические HTML-без-скриптов технологии, user expirience был бы куда как лучше. Ну не умеешь javascript, не используй ты его. Пиши черным текстом на белом фоне. И все бы работало. И страница бы плавно прокручивалась.
Также, некоторые верстальщики делают кнопки и целые диалоговые окна одной картинкой (нетянущиеся), делают фиксированную ширину страницы, или наоборот, не ставят max-width для текста на большом мониторе, не поддерживают (или сайт адски тормозит) ИЕ7, ставят нечитаемый шрифт, не оформляют правильно заголовки, делают кнопки ссылками с javascript void(0) и т.д. Потому что в отличие от классических профессий типа строителя, где требуется и образование, и опыт работы, и есть нормы и стандарты, контролирующие органы и надзор, в веб-разработку приходят всякие студенты с гуманитарным образованием, или фрилансеры, которые не знают, чем addEventListener от attachEvent отлитчается, и лепят вот такое непотребство. И такие же заказчики у них это принимают. Уровень непрофессионализма зашкаливает за все мыслимые пределы.
На мой взгляд, такие люди, которые тупо копируют идеи с твиттера, и реализуют их на уровне $('.show-more').click($.ajax(...)), крайне непрофессиональны. Так же как и те, кто делает кастомные селекты (вы знаете, как ваши селекты на всяких айпадах выглядят?? А как они в Опере Мини вызывают перезагрузку страницы?), флеш-меню и прочий маразм. Либо делайте нормально, либо используйте проверенные временем технологии. Двоечники, блин.
В взломанной версии Driver: Parallel Lines оружие главного героя становилось в опеделенный момент невидимым (хотя и полностью функциональным). Люди, которые в комментариях на форумах или ютубе спрашивали, почему это так, выглядели гулпо.
Что предложите для адекватной поддержки данного кода на IE6+, FF2+ и прочей древней нечисти? А то так ваша статья, извините, на уровне школьного сочинения первоклассника. Такой код нельзя использовать в серьезном проекте с требовательным к эстетике заказчиком, к примеру, так как вам спросят, а почему у директора на компьютере кнопка квадратная получилась, что вы нам за ерунду сделали?
Ценность статьи, таким образом, отстутствует, так как на css3 такую примитивщину написать самому быстрее, чем прочесть статью.
> Глобальные переменные (аля сессий) перестают быть валидными, доступ к файловой системе обрубается.
В PHP есть чудесная функция register_shutdown_function(). В ней доступ к файловой системе есть.
Ваша проблема, во-первых, в том, что вы переносите подходы к программированию из одного языка в другой, во-вторых, используете ненадежные конструкции.
Не используйте деструкторы для выполнения какой-либо логики (это не только к PHP относится). Если вам надо отсоединить Васю от мира, обнулить ему карму, и прочее, сделайте явный вызов например $world->detach($vasyaId) или $vasya->detach();
Я не представляю ситуации, где деструкторы *жизненно* неоходимы. Единственное, что я бы в них оставил — это вещи типа assert() (например, убедиться что все важные данные сохранены в БД перед уничтожением объекта).
Вам надо сохранить какой-нибудь кеш на диск перед завершением работы скрипта? Сделайте например вызов App::addShutdownHandler(array($his, 'saveData')) и все будет работать.
Явное всегда лучше неявного. Я сталкивался с логикой в конструкторах, и ничего, кроме негативных эмоций, это не вызывает. Это треш, который невозможно отлаживать.
В Си++, который вы упоминаете, деструкторы тоже предназначены исключительно для освобождения памяти дочерних объектов, а люди, которые туда пихают логику, напрашиваются на канделябр от коллеги-разарботчика.
Проще по моему в сервисах при разработке использовать Вконтакте/mailru/OpenID/Фейсбук/интегрировать с корпоративным Active Directory на худой конец. А не ставить какие-то уродливые (мои глаза!!) тяжелые приложения.
И что хорошего? Такие сайты едят в разы больше ОЗУ. Например, в Хроме, если добавить на страничку хотя бы 1 скрипт, потребление памяти (в сравнении с бесскриптовой страницей) сразу же подскакивает на 6Мб.
Я хочу, чтобы дизайн делался на HTML/CSS без скриптов, без тяжелых картинок (которые ломают плавную прокрутку, которая впрочем есть только в Опере и ИЕ), просто хорошо типографированный текст и иллюстрации на белом фоне (еще бы хотелось, чтобы умственно отсталые люди, а также неграмотные, и не умеющие правильно ставить запятые люди были лишены возможности писать что-либо в интернете, но это уже утопия). Это сложно? Но нет, каждый школоверстальщик считает важным либо сделать из страницы Windows 7, либо налепить анимированных меню. Да горите вы все в аду, нелюди.
В статье написана ерунда. Хоть бы поинтересовались новостями медицины сначала. Нет там никаких протоколов. Есть тысячи нервных волокон, входящих в мозг и выходящих из него. И, я подозреваю, у разных людей по-разному подсоединенные. Плюс большое число нейронов, тоже у разных людей по-разному связанных между собой.
Также, в мозгу нет программы, в том смысле как это понимается в программировании. Мозг, скорее, параллельная самомодифицирующаяся схема, которая большим числом параллельно работающих нейронов компенсирует их медлительность и ненадежность.
Про «убирать боль» — это вообще чушь. Это можно и сейчас сделать, крепко упоровшись. Только вот решит ли это проблему? Если бы болезни можно было лечить правильно посланным нервным импульсом, человек бы давно выработал в себе такую возможность.
Мозг устроен (согласно современным представлениям) по другим принципам, не как набор бинарных ячеек и логических схем, и в него так просто не «закачаешь» информацию из другого мозга. «Выкачать» информацию теоретически можно, если не разрушая мозг (ну или аккуратно заморозив перед разрушением) считать структуру связей между нейронами.
Но у меня есть подозрение, что «умение ездить на велосипеде», и вообще, любые мысли и эмоции, у разных людей кодируется немного по-разному (так как вряд ли у 2 отдельно взятых людей схема мозга, нервных связей совпадает с точностью до нейрона), и таким образом, считанная информация, в общем, довольно-таки бесполезна. По крайней мере без привязки к устройству остальной части организма.
А вот насчет «чтения мыслей», какие-то подвижки есть, так как если можно видеть как человек реагирует на тот или иной вопрос, при разных эмоциях активируются разные участки мозга, это можно как-то детектировать. Но наверняка можно натренировать себя и обмануть такой «детектор».
Ну и не будет человечество никаким разумом. Большая часть людей — обычные потребители, им это просто не нужно. Не так давно все хотели лететь на Марс, и дальше, а сейчас как-то успокоились, и на Земле неплохо.
Так что не надо мучать мозг, а надо создавать хорошие и умные инструменты, с которыми человек сможет работать и которые будут брать на себя вычислительные, опасные, сложные, тяжелые, монотонные, нетворческие задачи.
Вещь, конечно, интересная, а каким образом получаются данные промежуточных этапов рендеринга? С помощью какого-то хитрого АПИ выдергиваются из внутренностей видеокарты или просто используется чисто софтверный рендеринг? И как можно трассировать шейдер, он же тоже вроде бы не на CPU выполняется?
Я пробовал писать библиотеку (без всяких jQuery), которая бы в новых браузерах делала анимацию присваиванием класса и CSS transition, а в старых — анимировала вручную по таймеру. В итоге получилось, что у меня и в Опере, и в Хроме CSS анимация хуже, глючнее и дерганней, чем яваскриптовая.
Идея была примерно такая: вызывать что-то вроде animateNode(node, { from: 'css-class1', to: 'css-class2', onFinish: function(){} }). А стили для анимации хранились бы в CSS, а не в JS коде, как это делается при использовании jQuery (что идеологически неправильно). В новых браузерах просто меняется класс, в старых запускается таймер, в совсем старых типа ИЕ6 анимация отключается, чтобы не тормозить браузер.
Итог, на сегодняшний день этот подход только увеличивает тяжесть яваскриптового кода, не давая никаких выгод, по крайней мере на десктопе.
И да, здорово раздражает тот факт, что в отсталом w3c DOM нельзя получить примененные к элементу CSS-селекторы и стили (чтобы составить список для анимации). То есть, имея в стилях .some-class { color: red; } и элемент с class=«some-class», мы не можем яваскриптом получить исходное CSS правило. Также, мы не можем прочитать из CSSStyle неподдерживаемые браузером стили. Это радикально осложняет написание подобного скрипта.
Автор статьи видимо не в курсе существования статических методов класса? Лучше свалить в глобальное пространство имен все функции скопом?
Даже если делаешь маленькую утилиту, гораздо лучше сделать класс с 5 статическими методами, чем свалку из функций и глобальных переменных. Хотя бы из соображений повторного использования кода.
По моим наблюдениям, презрительно отзываются об инкапсуляции, ООП, уменьшении связности кода обычно те, кто в жизни не делал ничего больше сайта из нескольких разделов. Или скрипта на костылях для пережатия картинок. Или которые копипастят код из проекта в проект, меняя там пару строчек. Или кто так и не понял, зачем вообще были придуманы классы и объекты. Или делают помойку на хуках и функциях (в плане качества кода) типа Друпала.
Конечно, есть немало примеров оверинжиниринга, когда ради 2 простых действий используется куча геттеров, сеттеров, наследование, абстрактные интерфейсы и фабрика отдельным классом. Или ради сложения дат делают отдельный класс. Но разве это говорит о недостатках ООП подхода? Нет.
Использование Ооп никак не противоречи KISS, DRY и подобным рекомендациям.
Давайте возьмем любой проект, над которым работает хотя бы человек 5, или в котором планируется большрой объем фнукционала, и посмотрим, с какой скоростью как у них будут при таком «первобытном» подходе появляться конфликты имен, дублирование кода, лапша и баги. Ваши костыли не масштабируются. День школоты на Хабре, блин.
Официальная библиотека для написания костылей? Внедрять чужой код в адресное пространство другого кода? Да хотя это еще ничего, раньше было принято вообще свои конфиги в c:\windows сваливать и системные библиотеки dll заменять. Уиндоуз-разработчики, они такие… особенные.
Прежде чем критиковать аналитиков из ЛК, все же стоит признать, что они проделали немалый труд по анализу файла, распознать и разобрать в ассемблерном коде все эти очереди событий, объекты и прочее, все же не так и просто.
Но странно, что Си не узнали. Видимо, хакеры использовали объектный файл без стандартных библиотек и стандартного сишного пролога?
Тормоза там из-за вот такого подхода, принятого в сообществе. Если, к примеру, верстать изначально под ИЕ, а под Хром писать костыли, он будет тормозить не меньше. Это же насколько надо от реальности оторваться и нос задирать, чтобы так относиться к самому распространенному браузеру (хотя в последнее время он не самый распространенный).
Я недавно верстал страницу (фиксированный фон на всю страницу + скругленные уголки + полупрозрачное скроллящееся окно поверх) — в Хроме прокрутка в разы дерганнее, чем в ИЕ7. Старые добрые картинки лучше работают, чем вся эта новомодная CSS3 хрень. И памяти меньше ИЕ7 ест, и рендерит картинку быстрее.
Что касается PIE — почему это надо делать на яваскрипте? В чем проблема все эти костыли делать на сервере, не мучая клиента? Авторы просто поленились сделать нормально, 1 строчку в HTML проще вписать, чем нормальный конвертер шаблонов организовать.
Когда все это успеть сделать. И покажите мне, какой среднестатистический заказчик согласится оплачивать такую верстку? Сдается мне, мало кто захочет.
Возьмем обычную кнопку: если верстать на совесть, на годы, она должна тянуться по горизонтали, по вертикали (если пользователь увеличит шрифт), в новых бразуерах работать на градиентах, в старых на 4, 6 или 9 картинках в углах, в Ие еще и на костылях, должна иметь фон и бордер для браузеров с отключенными картинками, должна иметь черно-белую версию для печати. Вы представляете, сколько на это времени уйдет?
Можно, конечно где-то схитрить, оптимизировать, что-то генерировать скриптами, но все равно, это не быстро.
Плюс, не понял пассаж про Амазон. Оттуда же товары неделями идут. Да еще и могут не прислать или прислать не то. Стоит ли рисковать?
Я не умею под айпад писать, у меня нет айпада и свободного времени.
При проектировании (или копировании/заимствовании) элементов интерфейса важно продумывать различные сценарии их использования.
Однако, многие разработчики вместо этого копируют только внешний вид, или что проще, скачивают и устанавливают какой-нибудь jQuery-плагин или плагин к своей CMS, который делает все за них. Как им кажется. Что с них возьмешь, 5 классов образования.
Что имеем в итоге, мы можем увидеть на примере сайта hantim.ru. Зайдем на страницу со списком вакансий, прокрутим до низу, нажмем пару раз копку «показать еще», промотаем до нижней вакансии и перейдем по ссылке. Теперь жмем кнопку «Назад» в браузере и… попадаем на верхушку списка вакансий. Очень удобно.
Даже крупные сайты, которые делают отличники и победители олимпиад, типа твиттера или вконтакте, из-за аггрессивного использвоания аякса/скриптов имеют проблемы с UX и тормозят в моей Опере.
А ведь, если бы использовались классические HTML-без-скриптов технологии, user expirience был бы куда как лучше. Ну не умеешь javascript, не используй ты его. Пиши черным текстом на белом фоне. И все бы работало. И страница бы плавно прокручивалась.
Также, некоторые верстальщики делают кнопки и целые диалоговые окна одной картинкой (нетянущиеся), делают фиксированную ширину страницы, или наоборот, не ставят max-width для текста на большом мониторе, не поддерживают (или сайт адски тормозит) ИЕ7, ставят нечитаемый шрифт, не оформляют правильно заголовки, делают кнопки ссылками с javascript void(0) и т.д. Потому что в отличие от классических профессий типа строителя, где требуется и образование, и опыт работы, и есть нормы и стандарты, контролирующие органы и надзор, в веб-разработку приходят всякие студенты с гуманитарным образованием, или фрилансеры, которые не знают, чем addEventListener от attachEvent отлитчается, и лепят вот такое непотребство. И такие же заказчики у них это принимают. Уровень непрофессионализма зашкаливает за все мыслимые пределы.
На мой взгляд, такие люди, которые тупо копируют идеи с твиттера, и реализуют их на уровне $('.show-more').click($.ajax(...)), крайне непрофессиональны. Так же как и те, кто делает кастомные селекты (вы знаете, как ваши селекты на всяких айпадах выглядят?? А как они в Опере Мини вызывают перезагрузку страницы?), флеш-меню и прочий маразм. Либо делайте нормально, либо используйте проверенные временем технологии. Двоечники, блин.
Ценность статьи, таким образом, отстутствует, так как на css3 такую примитивщину написать самому быстрее, чем прочесть статью.
В PHP есть чудесная функция register_shutdown_function(). В ней доступ к файловой системе есть.
Ваша проблема, во-первых, в том, что вы переносите подходы к программированию из одного языка в другой, во-вторых, используете ненадежные конструкции.
Не используйте деструкторы для выполнения какой-либо логики (это не только к PHP относится). Если вам надо отсоединить Васю от мира, обнулить ему карму, и прочее, сделайте явный вызов например $world->detach($vasyaId) или $vasya->detach();
Я не представляю ситуации, где деструкторы *жизненно* неоходимы. Единственное, что я бы в них оставил — это вещи типа assert() (например, убедиться что все важные данные сохранены в БД перед уничтожением объекта).
Вам надо сохранить какой-нибудь кеш на диск перед завершением работы скрипта? Сделайте например вызов App::addShutdownHandler(array($his, 'saveData')) и все будет работать.
Явное всегда лучше неявного. Я сталкивался с логикой в конструкторах, и ничего, кроме негативных эмоций, это не вызывает. Это треш, который невозможно отлаживать.
В Си++, который вы упоминаете, деструкторы тоже предназначены исключительно для освобождения памяти дочерних объектов, а люди, которые туда пихают логику, напрашиваются на канделябр от коллеги-разарботчика.
Я хочу, чтобы дизайн делался на HTML/CSS без скриптов, без тяжелых картинок (которые ломают плавную прокрутку, которая впрочем есть только в Опере и ИЕ), просто хорошо типографированный текст и иллюстрации на белом фоне (еще бы хотелось, чтобы умственно отсталые люди, а также неграмотные, и не умеющие правильно ставить запятые люди были лишены возможности писать что-либо в интернете, но это уже утопия). Это сложно? Но нет, каждый школоверстальщик считает важным либо сделать из страницы Windows 7, либо налепить анимированных меню. Да горите вы все в аду, нелюди.
Также, в мозгу нет программы, в том смысле как это понимается в программировании. Мозг, скорее, параллельная самомодифицирующаяся схема, которая большим числом параллельно работающих нейронов компенсирует их медлительность и ненадежность.
Про «убирать боль» — это вообще чушь. Это можно и сейчас сделать, крепко упоровшись. Только вот решит ли это проблему? Если бы болезни можно было лечить правильно посланным нервным импульсом, человек бы давно выработал в себе такую возможность.
Мозг устроен (согласно современным представлениям) по другим принципам, не как набор бинарных ячеек и логических схем, и в него так просто не «закачаешь» информацию из другого мозга. «Выкачать» информацию теоретически можно, если не разрушая мозг (ну или аккуратно заморозив перед разрушением) считать структуру связей между нейронами.
Но у меня есть подозрение, что «умение ездить на велосипеде», и вообще, любые мысли и эмоции, у разных людей кодируется немного по-разному (так как вряд ли у 2 отдельно взятых людей схема мозга, нервных связей совпадает с точностью до нейрона), и таким образом, считанная информация, в общем, довольно-таки бесполезна. По крайней мере без привязки к устройству остальной части организма.
А вот насчет «чтения мыслей», какие-то подвижки есть, так как если можно видеть как человек реагирует на тот или иной вопрос, при разных эмоциях активируются разные участки мозга, это можно как-то детектировать. Но наверняка можно натренировать себя и обмануть такой «детектор».
Ну и не будет человечество никаким разумом. Большая часть людей — обычные потребители, им это просто не нужно. Не так давно все хотели лететь на Марс, и дальше, а сейчас как-то успокоились, и на Земле неплохо.
Так что не надо мучать мозг, а надо создавать хорошие и умные инструменты, с которыми человек сможет работать и которые будут брать на себя вычислительные, опасные, сложные, тяжелые, монотонные, нетворческие задачи.
Идея была примерно такая: вызывать что-то вроде animateNode(node, { from: 'css-class1', to: 'css-class2', onFinish: function(){} }). А стили для анимации хранились бы в CSS, а не в JS коде, как это делается при использовании jQuery (что идеологически неправильно). В новых браузерах просто меняется класс, в старых запускается таймер, в совсем старых типа ИЕ6 анимация отключается, чтобы не тормозить браузер.
Итог, на сегодняшний день этот подход только увеличивает тяжесть яваскриптового кода, не давая никаких выгод, по крайней мере на десктопе.
И да, здорово раздражает тот факт, что в отсталом w3c DOM нельзя получить примененные к элементу CSS-селекторы и стили (чтобы составить список для анимации). То есть, имея в стилях .some-class { color: red; } и элемент с class=«some-class», мы не можем яваскриптом получить исходное CSS правило. Также, мы не можем прочитать из CSSStyle неподдерживаемые браузером стили. Это радикально осложняет написание подобного скрипта.
Даже если делаешь маленькую утилиту, гораздо лучше сделать класс с 5 статическими методами, чем свалку из функций и глобальных переменных. Хотя бы из соображений повторного использования кода.
По моим наблюдениям, презрительно отзываются об инкапсуляции, ООП, уменьшении связности кода обычно те, кто в жизни не делал ничего больше сайта из нескольких разделов. Или скрипта на костылях для пережатия картинок. Или которые копипастят код из проекта в проект, меняя там пару строчек. Или кто так и не понял, зачем вообще были придуманы классы и объекты. Или делают помойку на хуках и функциях (в плане качества кода) типа Друпала.
Конечно, есть немало примеров оверинжиниринга, когда ради 2 простых действий используется куча геттеров, сеттеров, наследование, абстрактные интерфейсы и фабрика отдельным классом. Или ради сложения дат делают отдельный класс. Но разве это говорит о недостатках ООП подхода? Нет.
Использование Ооп никак не противоречи KISS, DRY и подобным рекомендациям.
Давайте возьмем любой проект, над которым работает хотя бы человек 5, или в котором планируется большрой объем фнукционала, и посмотрим, с какой скоростью как у них будут при таком «первобытном» подходе появляться конфликты имен, дублирование кода, лапша и баги. Ваши костыли не масштабируются. День школоты на Хабре, блин.
Но странно, что Си не узнали. Видимо, хакеры использовали объектный файл без стандартных библиотек и стандартного сишного пролога?