Манифест Творческого Человека

Здравствуй, дорогой друг. Мне надоело каждый раз объяснять свое отношение к творчеству молодым программистам. Поэтому я решил сделать страничку, где постараюсь вкратце изложить свои мысли. Итак, по порядку.

Программирование - это творчество в чистом виде. А это значит, что при разработке любых приложений, комплексов и систем не может быть и речи о шаблонах проектирования, паттернах и прочей ерунде. Эти понятия навязывают жадные коммерсанты в надежде уменьшить издержки при производстве. Любые правила накладывают рамки на свободу самовыражения и по сути замедляют развитие новых технологий. Зачастую говорят, что так делать нельзя, а потом приходит самоучка и делает, как нельзя, и это работает гораздо лучше.

Я - идеалист. Для меня деньги имеют малое значение. Аргументы наподобие "Кушать хочется", "Всем нужно платить зарплату", "Нужно сокращать время разработки для более быстрого выхода на рынок" и прочие коммерческие "мантры" ничего не значат. Я хочу, чтобы мир, который меня окружает, стремился к совершенству. Дух творит себе формы, поэтому каждое слово или поступок изменяет самого человека и его среду. Для достижения этой цели приходится ставить высокую планку. Конечно, не всегда все идет по плану, но останавливаться нельзя и, тем более, идти назад. Для меня недопустимо оправдание "Не мы такие - жизнь такая". Это все выглядит как оправдание: все так делают, и я так буду.

Фреймворки - это бич современного программирования. Кто-то решил, что кусок чужого кода в своем проекте это здорово. Как удобно, что половину уже написал кто-то другой. А главное, как быстро на нем можно разработать минимальный продукт. Так допускается думать, только когда у тебя мало опыта в разработке. Чудес не бывает, и на практике получается совершенно наоборот. Как только проект немного разрастается, оказывается что фреймворк не имеет нужного тебе функционала. И перед разработчиком стоит выбор из трех путей. Первый: написать разработчику, чтобы он добавил недостающее. И не факт, что узкая хотелка попадет в следующий релиз. Второй: Самому доработать функционал, это если конечно он в открытом доступе, и сделать запрос на заливку. И опять не факт, что его примут, потому что у владельцев фреймворка может быть свой план по развитию. И третий: Сделать у себя "костыль" для обхода ограничения. Только при обновлении версии костыль с большой вероятностью перестанет работать. Как ни крути, а код писать придется, остается только выбрать: писать код для своего проекта или чужого. Я думаю, выбор очевиден.

Идеальная программа. Для начала нужно определить, что является критерием идеальной программы. Есть несколько параметров. Первый: Размер исполняемого файла. Чем он меньше, тем быстрее программа будет загружаться в память и запускаться. Второй: Размер используемой оперативной памяти. Чем меньше, тем лучше. Не знаю, кто может с этим поспорить.

Реализация сверх нормы. Уже не один раз обговаривалась тема насчет излишнего потребления ресурсов при работе программ. Там, где можно использовать один такт процессора, зачастую используют три. Это значит, что при правильном написании можно одновременно запустить три экземпляра, и они вполне себе будут нормально работать. К неидеальным подходам разработки можно отнести виртуальные машины, байтмашины и интерпретаторы. Например, Java, C#, Python и прочий зоопарк. Меня не устраивает тот факт, что программист сэкономил свое время на разработку, переложив издержки на меня. Я не готов платить за софт, который потребляет гораздо больше ресурсов, чем ему на самом деле требуется. Когда кто-то говорит, что сейчас всем плевать на используемую память и т. д., я отвечаю - мне не плевать. Если пишешь с оверхедом, то просто признайся себе, что это неразумно - платить за булку хлеба в три раза больше, чем нужно. Хочу еще добавить, что есть такая шутка в интернете про "серийного программиста Джона", которая в нынешнее время как никогда актуальна. И главное помнить: чем выше уровень абстракции от реальной системы, тем больше паразитного кода.

Мир свернул не туда. На протяжении последних 15 лет размер приложений увеличился настолько, что это уже не лезет ни в какие ворота. Приложение сбербанка для андроида стало занимать в телефоне около 600мб. И это для операционной системы, предназначенной для фотоаппаратов. Хотя при скачивании с официального сайта размер apk всего 200мб. Куда девается 400мб? Это чистое волшебство, по-другому не назовешь. На минуточку, Half-Life, установленный на компьютер, занимал примерно 600мб вместе с Counter-Strike. Так там была сюжетная кампания на 10 часов, модели оружия и персонажей, уровней и даже сетевой режим. А в приложении банка что? Первые программисты думали так: раз компьютеры будут становиться мощнее, значит и программы будут работать быстрее. А на практике получается так, что компьютеры становятся все быстрее, а программы работают все медленнее. Или они идиоты, или мы - третьего не дано. Если с размерами еще можно как-то жить, то потраченное время из-за тормозов софта мне уже никто не вернет. Как говорится: "Выводы делайте сами".

Итог. Как быть и что со всем этим делать? Для себя я решил, что буду стараться писать софт с минимальным количеством "лишнего". Никаких фреймворков и сторонних библиотек, если на то нет веской причины. Не думаю, что когда-нибудь поменяю свое мнение по этому поводу. Спасибо, что дочитал до конца, большинство людей уже не в состоянии осилить столько текста, а тем более его осмыслить. На этом, пожалуй и закончу.

Версия 1.1 accuratealx@gmail.com