Основы программирования. Глобальный взгляд.

Всем привет! Хочу поделиться с вами собственным взглядом на программирование вообще. Эта статья не претендует на пошаговое руководство к действию. К тому же так могут видеть ситуацию не все, поэтому я не претендую на единственно верный источник информации. Просто хочу попытаться донести саму идею программирования вообще и возможно кому-то это поможет понять глубже это великолепное искусство.Программирование - процесс создания программ. Создания. Именно создания. От идеи в голове до воплощения в жизни. Написание программ - лишь часть этого процесса, не буду спорить, что именно после написания программа обретет жизнь, но если неизвестно, что писать, как писать и зачем писать, будет ли вообще иметь смысл процесс написания?! Чтобы программа заработала, она должна быть сначала продумана, настолько, насколько это возможно. Ошибка на этом этапе может привести к серьезным последствиям в дальнейшем. Важно понимать глобальный алгоритм, а дальше разбивать глобальную задачу на более мелкие, понимать их алгоритм, мелкие задачи при надобности разбивать, одним словом, пока не станет четко ясно, как будет функционировать каждый отдельно взятый кусочек. Только после того, как стало ясно, как решать конечную задачу, можно приступать непосредственно к написанию кода - кодированию.

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

Не раз слышал и не от одного человека, что он не заморачивается с продумыванием, а берет и пишет сразу код. И я скажу, что такое вполне имеет место быть, однако лишь с заранее понятной схемой решения. Если алгоритм четко сформировался в голове. А вот если есть сомнения, лучше взять ручку, бумагу, сесть и подумать. Есть стандарты написания алгоримов, такие, как например блок-схема, есть словесное описание, псевдокод, но для себя можно обрисовывать и иначе, в частности, если у вас задачи построения интерфейса, зарисовывайте его, помечайте элементы, одним словом старайтесь понять, как будет работать программа. В наше время компьютеры стали доступнее, ранее с этим была проблема. А еще раньше домашний компьютер был вообще роскошью. Как же учились программировать, спросите Вы? А очень просто. Люди продумывали программу, создавали алгоритм, зарисовывали его. После писали код и писали на бумаге от руки. Многократно проверяя его. Потому что доступ к компьютеру был ограничен и порой настолько, что права на ошибку попросту не было. Дикость и вчерашний день, скажете? Зато эти люди часто с первого взгляда находят в вашем коде ошибку, а Вам слабо?! Меня учили именно такие люди и я им за это очень благодарен.

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

Мое отношение к программированию очень простое. Программирование - это искусство. Оно было искусством, есть и будет. Какой бы маленькой не была задача, это искусство. Конечно же сейчас царствует коммерческий подход. Но где он не царствует? Просто беда в том, что жажда выгоды порой затмевает все. Результат обычно соответствующий. Если рациональность уступает место выгоде - это просто маразм. Тут как говориться, выбирай два варианта из трех: быстро, хорошо, недорого. Конечно время диктует свое, важна скорость и прежде всего это связано с тем, что технологии не стоят на месте и если возиться слишком долго, вас либо опередят, либо продукт устареет еще до запуска. В общем получаем дилемму. Нужно сделать и хорошо и максимально быстро. Как решать такую задачу, каждый сам должен думать. Ведь все мы разные, а значит и подход у всех будет разный. Важно понять, что и как делать лично тебе.

Современным программистам гораздо проще с одной стороны, чем их предшественникам, с другой стороны сложнее. Проще в том плане, что многое уже написано, куча модулей, библиотек, готовых решений. А сложнее в том плане, что нужно стараться как можно быстрее выдавать готовый продукт, к тому же нужно разбираться, как работать с готовыми библиотеками. По сути вся сложность сводится к запоминанию и навыкам работы с библиотеками, тогда как ранее приходилось многое писать самому. Только задумайтесь! Большинство игр на популярные игровые приставки писались на самописных предварительно написанных движках, а сейчас движков валом, бери и разрабатывай. Мое мнение - сегодня программистам жить проще. К тому же есть интернет и куча инструкций и руководств, поэтому при временных сложениях, усердии и желании нет никаких проблем.

Программирование - это просто. Так и есть. Между прочим даже книга такая есть. Автор ее Лесли Анна Робертсон, если кому-то будет интересно. А впрочем в жизни все просто. Но любое дело требует наработки. Теория без практики мертва. Чем больше практики, тем быстрее придет результат. Конечно взгляд новичка на работу мастера - это вау-эффект, как правило. Но продвигаясь дальше, каждый начинает осознавать, что это все сделали люди, а значит он может творить подобное. Люди любят все усложнять, почему не знаю. Странная манера, создавать ореол непостижимости, отпугивая потенциальных специалистов. Главное осознать, что все элементарно и просто, вбить именно это в свою голову, а дальше идти по этому пути. А когда смотрите на программу, сотворенную кем-либо и завидуете его создателю, всегда помните, что он ее создал не за минуту и не спонтанно, помните это всегда и не загружайте свой разум иллюзией программного волшебства. Программирование не магия, а просто набор большого количества отточенных годами действий.

В заключении хотелось бы сказать, что изначальное понимание любого дела - первый большой шаг к его освоению. Как Вы отнесетесь к тому или иному ремеслу изначально определит вашу дальнейшую дружбу с ним. Но самое важное, чтобы вам нравилось то, чем Вы занимаетесь, тогда даже маленькая и незначительная в глазах других победа будет дарить несказанное удовольствие. Ну вот пожалуй и все. До новых встреч!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *