Мобильная версия сайта | ||||||||||
[Главная] | [Новости] | [Статьи] |
[Проекты] |
[Ссылки] |
[Автор] |
|||||
[Архив новостей] | ||||||||||
[Форум] | на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы | |||||||||
Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [English version of this page here...] | ||||||||||
[Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi] | ||||||||||
[Разработка компьютерной игры] [Пример игры Donuts3D] | ||||||||||
Код, теория, практика - всё это очень хорошо. Но проза жизни заставляет иногда делать и отступления. Вашему вниманию предлагается дневник Записки программиста, в котором представлены не теория и не практика, не исходный код, а мысли на тему того, что делать если что-то не получается, не обращаясь ни к кому. | ||||||||||
Занимаясь программированием (не профессионально, конечно) сталкиваешься с рядом трудностей и проблем. Но главная трудность - это конечно одержание победы над самим собой. Быть может для кого-то это прозвучит банально, но моя мысль такова - по-большей части то, что не получается - результат собственных ошибок и просчётов. Мы чаще всего спотыкаемся о собственные неясно написанные места. | ||||||||||
Что же делать если что-то не получается? То есть речь идет о логических ошибках. На первый взгляд в коде вроде бы всё правильно, но результат - не такой как ожидался. В чём проблема? Что делать? | ||||||||||
Часто результатом логических ошибок может быть и ошибка времени выполнения - Access violation. Этот вид ошибки очень трудно выявить, особенно начинающему программисту, поскольку в сообщении об ошибке ничего не говорится о месте ошибки в исходном коде и тем более о ее причине. Что такое Access violation ? Буквально - это любые нарушения программой прав доступа к участкам распределяемой системой памяти. Если программа дает ошибку этого рода, значит в ней какая-то переменная была записана или считана из такого участка памяти, который не принадлежит программе. Причина этого - ошибки инициализации переменных, нарушение границ массива и т.п. Во-первых, особенно если это Access violation там, где Вы не можете отловить суть проблемы, нужно сначала локализовать ошибку, т.е. примерно найти то место в коде, где примерно она находится. Для этого можно так закомментировать блок кода, чтобы отключить то место, где она возможно, происходит. Постепенно уменьшая границы комментирования Вы сможете выйти на ту строку/строки, в которых содержится ошибка. К слову сказать, ошибки вида Access violation самые распространенные и самые противные, т.к. не сразу видно где и что дает ошибку. Но концепция применения Access violation дает возможность предупредить и некоторые логические ошибки. |
||||||||||
Как бороться с тем, что не получается. Итак, Вы натолкнулись на стену, Вам не хватает знаний, сил, времени, терпения, упорства, чего-то еще... Этот список можно продолжать бесконечно. Да действительно, написание кода требует от Вас иногда очень больших усилий. Конечно в нескольких строках изложить идею решения всех проблем невозможно. Любые абстрактные рассуждения так и остаются вдалеке от неких практических советов. | ||||||||||
В любом случае, иногда бывает полезно сделать передышку, отдохнуть, заняться чем-то другим, если что-то упорно не получается. Тогда, если Вы упорно прорабатывали проблему, решение может появиться через некоторое время и как бы само собой. Это и есть тот гений, который приходит к нам, когда наше сознание вроде бы отключилось от проблемы, ушло в сторону, а наше подсознание, продолжая работать, подыскивает нам решение. | ||||||||||
Иногда на решение вроде бы простых вещей уходит очень много времени, а иногда всё идет "как по маслу". Первое конечно чаще происходит тогда, когда Вы работаете над чем-то новым, не совсем Вам известным. Второе случается когда Вы отрабатываете вещи, которые уже не раз делали. Но и в них можно допустить ошибку! | ||||||||||
Мой опыт в непрофессиональном программированиии исчисляется с 1993 года, когда я начал делать первые попытки изучения Бейсика на БК-0010.01, а потом перешел к изучению машиных кодов. Однако работу на IBM PC-совместимых машинах я начал только в 1998 году, а к изучению программирования на них начал примерно в 1999 году. GW-Basic, Turbo Assembler и вот в 2002 году я наткнулся на Delphi 5. Поэтому программирование в Delphi и мой опыт в нём составляет всего 5 лет (на 2007 год). Главным образом это попытки создания компьютерных игр и мультимедиа-приложений (DirectX). | ||||||||||
Так что, как видите, результат порой требует очень длительной работы. С одной стороны 1 человек вроде бы не в состоянии проделать очень много, но с другой - он это делает и порой не замечая. | ||||||||||
Итак, будем исходить из того, что любая проблема решаема. Возможно Вы засмеетесь, и будете правы, сказав, что точно также она и нерешаема. Следовательно, вопрос в том, как ее решить? | ||||||||||
Вот несколько небольших практических советов - - Если Вы пишете своё первое приложение на этом языке, в этой среде программирования, на этой системе постарайтесь чтобы оно точно соответствовало примеру из руководства, которое Вы применяете для изучения; - Иногда ошибки бывают и в самих руководствах!, тогда остается надежда только на самих себя. Вот тут-то на помощь и приходит ЕГО ВЕЛИЧЕСТВО ЭКСПЕРИМЕНТ. Самый простой способ выявления ошибки - это поиск места, где она происходит и отделение ее от остального - правильно написанного кода. - Возьмём некоторый абстрактный пример - пусть некоторая Ваша программа состоит из n-ого количества строк. Нужно проанализировать каждую буковку! каждой строки. Делается это очень просто - закоменнтируйте всё, а потом потихоньку открывайте строку за строкой, параллельно компилируя код. Так вы быстро выявите строку/строки, которые содержат ошибки. - Не всегда всё так просто, а скорее даже наоборот - код бывает написан так, что комментирование одних строк не дает возможности другим, даже верно написанным, правильно работать. Как тогда быть в этом случае? Любая программа - это "строительные кирпичики", блоки, которые можно использовать как некое логическое целое. Ваша задача - именно поиск или выявление для себя таких блоков. Поначалу это бывает трудно, но это и есть искусство программирования. Любая программа разбиваема на любое количество подзадач, вопрос лишь в том, какую идеологию выбрать при выборе способов разбиения. - Когда правильно написанный код отделен от неверно написанного комментированием можно приступить к экспериментам по подбору правильного варианта, иногда это просто другая буква, символ или ее отсутствие. - Теперь о том, как разбивать правильно код на логические блоки - это придет к Вам с опытом. Поначалу Вы будете руководствоваться той идеологией, которую Вам диктует Ваш язык программирования. Впоследствии Вы, возможно, выработаете некие свои правила, например, по логическим блокам алгоритма и т.д. - Еще Никлаус Вирт доказал, что алгоритмы+структуры данных = программы, поэтому смело используйте этот принцип! - Занимаясь написанием какого-то кода или модификацией существующего всегда оставляйте в резерве верно работающий оригинал! Тогда, даже если Вы запутаетесь в собственных "четырех стенах" ровно настолько, что откажетесь от всяческих попыток - вы всегда можете вернуться к оригиналу и выработать некое компромиссное решение! |
||||||||||
Вот, вообщем-то и конец первой странички Записок. О том, что Вам было не совсем ясно или вообще неизвестно можно спросить автора написав на megainformatic@mail.ru или поискав ответ где-то еще - в Интернете, Литературе и т.д. |
||||||||||
[следующая страничка >>] | ||||||||||
Обновления
и новости о развитии Delphi DirectX проекта http://www.megainformaticsite.pochta.ru http://www.megainformatic.narod.ru
|
||||||||||
Cвои пожелания, вопросы или заметки отправляйте на: |
||||||||||
Обмен ссылками | ||||||||||
|
||||||||||
(с) МЕГА ИНФОРМАТИК 2006-2010 | ||||||||||