Программистам посвящается…

Вот сижу сейчас и смотрю на хорошую программу (не буду называть, чтобы не рекламировать), а рядом открыто окно со свойствами исполняемого файла – 2 Мб…

Сразу вспоминаются времена, когда программы были по несколько килобайт, а самые крутые игры умещались на 3.5 дюймовом диске. Но… Прогресс двигается вперед. Тогда программы писались на ассемблере, а потом на языках более высокого уровня – бейсик, паскаль, си. Сейчас инструментами разработки стали языки объектно-ориентированные, такие как Object pascal (используется Delphi).

Все бы хорошо, но с упрощением создания программ стал расти их размер. Причем далеко не в линейной зависимости. Программы стали делать даже те, кто также далек от программирования, как южный полюс от северного. И пишут теперь не те, кто знает как, а все, у кого есть 80 рублей на покупку диска со средой визуального программирования. Даже думать стало необязательно: накидал кнопочек, поставил кое-какие зависимости – и сверх крутая программа сложения двух чисел готова. Некоторые даже не знают как на самом деле работают те или иные кнопочки. А про существование Windows API и не догадываются.

Бесспорно,  разработчики визуальных сред сделали огромную работу… Но с одной оговоркой: они сделали объекты по своей направленности универсальными. А эта универсальность понесла за собой дополнительный код, в большинстве случаев ненужный при решении той или иной задачи.

Возьмем, к примеру, Delphi. Создается новый проект, на который даже ничего еще не успели навешать. Компилируется… И что мы имеем? Обыкновенная форма, а приложение размером порядка 300 Кб. Написав точно такую же программу, но используя лишь Windows API мы получаем программу, размером меньше 30 Кб. Получается, что Delphi компилирует около 270 Кб лишнего кода. А накидав пару кнопочек и пару списков мы получаем уже программу в 400 Кб против 40 Кб с помощью Windows API.

Я не принуждаю изобретать велосипед, переписывая труды разработчиков Delphi, написавших прекрасные объекты. Нет. Я призываю к пониманию того, что уважающий себя программист постарается избавиться от многих ненужных вещей.

Ладно, размер программы можно опустить, если вы пишете ее для себя. Но ведь все сейчас пишут “для других”. А точнее пишут и выкладывают в интернет, дабы все насладились их творчеством… А наслаждаться приходится не их творчеством, а процессом закачки файла в несколько сотен килобайт, если ни в пару десятков мегабайт. А ведь у нас нет у всех выделенных линий со скоростью 100 Мбит. Иногда приходится качать программу порядка часа, если не более, а открыв, увидеть знакомые по Delphi кнопочки, рисуночки…

Все можно понять и большой размер файлов, и лень программиста. Но хуже всего, когда программа проводит сложные расчеты. Безусловно, можно действовать как всеми любимая фирма Microsoft: писать на обложке системные требования, такие, что для нормальной работы вам нужна многопроцессорная системы с 512 гигабайтами оперативной памяти и диском, размером в сотню терабайт. Но, почему бы не оптимизировать код? Я не говорю о переходе к ассемблеру, хотя это наилучший вариант. Для начала заменить, к примеру, строки WriteLn(“строка один”); WriteLn(“строка два”); на одну строку: WriteLn(“строка один”, #13#10, “строка два”);? Вы уже сэкономите несколько тактов процессора. А в большинстве случаев подобных строк не одна и даже не две, которые можно упростить. Еще хуже если такие строки стоят в цикле… Они и тормозят всю работу программы.

Это одна сторона процесса программирования – само программирование. Другой стороной (по крайней мере, у нас в стране) является документирование, т.к. большинство программ пишет один человек. Также в большинстве случаев руки не доходят описать возможности программы и то, как с ней надо работать. Все описание программы ограничивается readme файлом, в котором написано что это за программа, адрес изготовителя и всё… А как с ней работать – разбирайтесь сами. Ладно, если такую программу в руки берет такой же программист – он может предположить (и в 80 случаях из 100 предположение будет правильным) как работает та или иная функция программы. А если ее берет пользователь, который увидел компьютер только вчера на картинке? Он даже с трудом переварит то, что надо “кликнуть в меню по Файлу и выбрать Печать”. Не говоря уже о более сложных манипуляциях.

Поэтому хочу посоветовать всем программистам делать описание своих продуктов. Причем описание это делать не с точки зрения “это должен знать каждый”, а с точки зрения “этого не знает никто”. Безусловно, такая помощь будет смешна для узкого круга пользователей и широкого круга программистов. Зато она будет понятна огромной массе людей, для которых разрабатывается программа! Да, это займет немного больше времени, зато вашу программу сможет использовать любая кухарка, в первый раз увидевшая компьютер! А таких “кухарок”, к сожалению, подавляющее большинство.

Как вы думаете, почему Линукс так плохо расходится среди “простых смертных”? Все из-за того, что для него слишком мало документации. И, если windows кое как настраивается сама, то Линукс нужно настраивать самому, а без документации как говориться “для умом обделенных” это получается не у всех. Я не говорю, что Линукс ставят люди, лишенные ума. Просто документация, которая есть сейчас, направлена на тех, кто с ним уже хоть как-то разобрался и звучит примерно так: “подключите диск, поставьте правильную кодовую страницу”. А это звучит как заклинание шамана для того, кто не знает как подключать диск и что такое кодовая страница. Если бы было описано, какие клавиши надо нажимать, чтобы подключить этот диск, описывалось что такое кодовая страница, зачем она нужна, как посмотреть есть ли она, что делать если нету, как ее поставить, какая кодовая страница будет правильной и еще много всего, что никогда не пригодится профессионалу, то круг пользователей Линукс значительно расширился бы.

Теперь подведем итог всего выше написанного. Не стоит вовсю гнаться за прогрессом! Разберитесь сначала как этот “прогресс” работает. Тогда Вы поймете, что много можно сделать проще, лучше. Это желание появляется само собой. Я сам когда-то начал программировать на Delphi, а теперь снова вернулся к Windows API и C++, хотя пишу программы и на Delphi, но только лишь по той причине, что надо получить результат быстро. Это первый итог, который можно подвести.

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

За сим откланиваюсь. Если у вас есть какие-либо возражения – я их с удовольствием прочту в своем почтовом ящике.

На заметку: Разработка сайта, который отвечал бы современным требованиям дизайна и функциональности дело очень непростое. Создание сайтов включает в себя дизайн, программирование, наполнение (написание узнаваемых текстов, которые могут быть позиционированы поисковиками так, как это нужно владельцу), а чуть позже, и администрирование. Поэтому разработка web-представительства для любого предприятия, которое хотело бы, чтоб его сайт работал, нужно поручить профессионалам.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Дата публикации:
Автор публикации: