Когда я, будучи еще ребенком, только-только начал программировать, все, что я мог – это вводить взятые из компьютерных журналов слова и символы, внешне напоминающие какой-то иностранный язык. Благодаря этому у нас с братом получалось заставить наш старенький 64-х разрядный Franklin с двойным приводом для дискет, воспроизводить приятную коротенькую цифровую мелодию. В то время у меня не было опыта, чтобы достаточно детально разобраться в этом зашифрованном тексте. Некоторые годы спустя, уже в старших классах, когда я начал изучать Паскаль, все стало казаться гораздо понятнее. Узнав про условные операторы и операторы циклов, я начал блистать такими философскими синапсами, которыми могли бы гордиться Уолт Уитман и Роберт Фрост. Ладно-ладно, допустим, я немного и преувеличил, но все же извлеченные уроки были превосходными – то что нужно.
Ну да, я знаю что это звучит немного занудно, но в программном коде на самом деле заложено немало мудрости. Собственно, все то многое, что я знаю о том, как управлять своей жизнью, я почерпнул во время изучения языков программирования.
Блок-схема упрощает многие вещи
Многие программисты начинают использовать блок-схемы еще задолго до того, как напишут хотя бы одну строку кода. Так происходит потому что порой попытка написать сразу всю программу целиком за один раз может оказаться непосильной задачей, особенно если программа ориентирована на выполнение действительно сложных операций.
Как правило, программисты дробят этот гигантский проект по разработке программного обеспечения на более мелкие составляющие, которые легче контролировать. Здесь действует тот же принцип, что и при создании автомобиля: прежде чем собрать все детали воедино, каждую производят по отдельности.
Каждый компонент представляет собой блок (или несколько блоков) кода, c помощью которого выстраиваются отдельные последовательности ввода параметров или действий, а затем выполняется некоторая выходная операция. В пределах данного компонента программист прослеживает логический путь от элемента на входе до элемента на выходе, используя блок-схемы.
Блок-схемы позволяют визуально отслеживать логику своих действий, что гораздо легче и доступнее для понимания, чем если бы вы делали текстовые пометки или пытались удерживать все в голове в процессе написания кода. Причина, по которой программисты не следят за логикой процесса на ходу, состоит в том, что дальнейшие построения во многом зависят от ранее принятых решений. Ошибка в самом начале может свести всю работу программиста к нулю.
То же самое и в жизни. Когда вы принимаете решения о выплате долгов, о покупке дома или пытаетесь решить любую другую сложную жизненную задачу или даже когда речь идет просто о проекте который вы ведете на работе, эти, казалось бы, серьезные вопросы можно решить гораздо эффективнее, если сначала взять лист бумаги, сесть, подумать и, вооружившись карандашом набросать такую же блок-схему для каждого этапа процесса. Это поможет вам принять решение в любом из возможных вариантов или спрогнозировать каждую вероятность на каждом этапе и только потом прослеживать различные сценарии событий. Точно так и происходит в программировании – понимание того, как ранее принятые решения влияют на последующий результат, поможет вам делать более осознанный и подготовленный выбор на более раннем этапе.
Всему свое место
Всякий раз, когда вы с энтузиазмом принимаетесь за написание скрипта или программы, в первую очередь вы должны объявить переменные. В программировании очень много различных видов переменных. Для хранения текста существует строковая переменная, переменные типа Integer могут хранить только целые числа, переменные с плавающей точкой, а также переменные с непостоянным типом используются чтобы управлять числами побольше. И потом, в вашем распоряжении находятся массивы и структуры и т.д. Идея состоит в том, чтобы определить наиболее подходящую переменную для поставленной задачи. К примеру, если выходной результат функции представляет собой имя человека, то вам нужно выбрать строковую переменную.
Тот же принцип применяется при организации вашего жизненного пространства, неважно, где – дома или в офисе. Вы выбираете контейнеры соразмерно тому объему, который собираетесь в них хранить: прозрачную пластиковую коробочку для сыпучих продуктов или целую полочку с маркированными емкостями для экономии места при хранении специй. В офисе ежедневные рабочие документы лучше всего хранить в ящике стола, а конфиденциальные деловые бумаги – в запертом шкафу.
Каждой вещи нужен свой контейнер, и все в этом мире должно иметь свое место – вот главная максима правильно организованной жизни.
Используйте программные модули повторно, чтобы сэкономить время
Любой хороший программист рано или поздно понимает, что некоторые блоки кода, иначе известные как функции, можно использовать повторно в нескольких программах. К примеру, функцию перевода значений температур по шкале Фаренгейта в Цельсии вы можете использовать при написании любой другой программы, которая выполняет подобную задачу. Функция – это просто модуль, который принимает значения температур в градусах по Фаренгейту, а результат выдает в Цельсиях. Функция может включать в себя определенное количество строк кода, но зачем вам каждый раз писать эти строки заново для каждой программы, когда вы можете просто сохранить их однажды в качестве «модуля» программы, а затем просто вставлять этот модуль в любую программу, где это потребуется?
О своей знаменитой «Модели Т» Генри Форд однажды сказал: «Каждый покупатель может приобрести автомобиль любого цвета, какой только пожелает, если только этот цвет — чёрный». Форд понял, что собирать и продавать машины можно быстрее, если использовать снова одно и то же оборудование (и краску того же цвета) без нужды каждый раз начинать процесс заново для производства каждого нового автомобиля. Так появился сборочный конвейер, который произвел революцию во всем автомобилестроении. Точно также и вы можете использовать этот принцип в той сфере вашей жизни, где вам приходится делать одно и то же снова и снова. Автоматизация – ключ к успеху, и если у вас получится найти способ автоматизировать задачи, которые вы выполняете систематически, то вы сэкономите время и проведете день с гораздо большей эффективностью.
Документируйте
Порой, программист борется с искушением просто с упоением кодить, совершенно ничего при этом не документируя. Это заманчиво, потому что в любой момент программист знает, что он хочет от программы и как это получить. Описание программы требует времени, ведь нужно описать каждый этап работы. Это кажется совершенно бессмысленным поначалу, но спустя месяцы, когда вам потребуется снова использовать этот код или модифицировать его для других целей, вы почувствуете разницу между мучительными попытками вспомнить, что же такое вы делали с каждой строкой кода и быстрым доступом ко всем вашим размышлениям, стоящим за логическим процессом.
Такая тщательная документация может помочь во всех сферах вашей жизни – от отслеживания дня рождений и юбилеев до ведения журнала ежедневных деловых операций. Повседневная жизнь может превратиться в вереницу дней, которые проходят мимо, в решениях, которые приходят в голову и тут же улетают, совсем как листья на ветру. Наивно и нерационально доверять только своей памяти, запоминать такие вещи, как причина, по которой вы назначили некоторые встречи, или основания для тех или иных покупок. Ежедневник или журнал-планировщик во многом может помочь вам освободить голову для более важных вещей.
Всегда оставляйте себе путь к отступлению
Одна из самых распространенных ошибок непрофессиональных программистов – бесконечные циклы. Они представляют собой такую ситуацию, в которой условие выхода из цикла никогда не выполняется, поэтому программа становится бесконечной и загружает процессор вашего компьютера на 100% и блокирует компьютер до тех пор, пока процесс не будет прерван.
Урок, который должен запомнить начинающий программист, состоит в том, что всякий раз, когда он создает цикл для выполнения определенного рода задач, потребляющих большое количество мощности процессора, очень важно оставить своего рода «выпускной клапан». Иными словами, вместо использования оператора While с условием выхода из цикла по достижении аргументом определенного значения (которое в некоторых случаях может и не быть достигнуто), неплохо было бы ввести элементарный счетчик повторов цикла, а затем к основному условию выхода из цикла добавить еще одно – согласно которому цикл должен будет завершиться по выполнению некоторого количества повторов (это количество должно явно превышать прогнозируемое число итераций в условиях нормального выполнения цикла).
Как же можно применить это в реальной жизни? Это иллюстрация к тому, что даже когда вы уверены в том, что предусмотрели все на свете, что-то может пойти не так. Например, можно скрупулезно планировать недельный семейный отпуск в самом живописном и блаженном тропическом уголке, а провести всю эту неделю, наблюдая сплошные дожди. Смысл так называемого запасного выхода в том, чтобы подумать, что же может произойти в самом худшем случае и предусмотреть соответствующие действия или продумать, как лучше всего этого избежать.
Жизнь порой непредсказуема, и самые продуманные планы могут легко рассыпаться, даже когда вы уверены в том, что ничто не может им помешать. Наличие плана даже для самых непредвиденных обстоятельств может дать вам гарантию того, что вы не будете обречены в случае, если событие, которое вы были не в состоянии предусмотреть, все же случится.
Очистите память сразу же, как закончите работу
Итак, заключительный урок, который может преподать программирование –всегда убирать за собой. В программе для этого вам нужно получить доступ к выходному файлу, создать большой массив из расчетных показателей и других вещей, которые занимают память компьютера и тратят его ресурсы. «Чистая» программа – та, которая прекращает процесс вывода данных и очищает массив, как только закончит с ним работать. Это делается для того, чтобы избежать типичных проблем с плохо написанными приложениями, которые еще называют «утечкой памяти».
К примеру, в простом приложении, написанном на языке Visual Basic, нужно очистить массив следующим образом:
Erase ArrayDin
А закрыть выходной файл можно так:
FileClose(1)
Скорее всего, будучи помладше, вы уже слышали что-то в этом роде от своей мамы. Уберись в комнате. Повесь вещи. Помой за собой посуду. Звучит знакомо, не правда ли? Тем не менее, будьте дальновиднее: уберите за собой инструменты, которые вы держали под рукой при выполнении тех или иных задач – это не только будет держать ваш дом в чистоте, а рабочее место в порядке, но и предоставит вам массу свободного места для более быстрого выполнения следующего проекта. Если вы оставляете все в беспорядке, то он просто отнимет у вас дополнительное место и время тогда, когда вам что-то понадобится и вы будете пытаться найти это в полном хаосе.
Заключение
На самом деле из искусства программировать вы можете извлечь не только эти 6 уроков, а гораздо больше. С тем, что касается планирования, организации, разработки стратегии и сохранения ресурсов, программисты умеют работать, как никто другой. Если бы вы нашли время, чтобы не просто писать код, а по-настоящему изучить какой-нибудь язык программирования, то обнаружили бы массу интересных и полезных вещей. Именно поэтому каждый ребенок должен выучить хотя бы один язык программирования в школе – стоит вам только уловить все специфические профессиональные приемы и вы довольно быстро смекнете, что их можно применять практически везде.
Автор: dmitrykabanov