Дело было в бабине…

Всем доброго утра, с вами снова Мирра Андрюхан.

Дело, как оказывается было в бабине, потому что в наше современное время с нашими прогрессивными и передовыми методами, технологиями и прочей бабиной запада мы увлекаемся и гонимся за компактными и короткими вариациями действиями, чтобы получить конечный результат наших действий. Лишая себя по собственному согласию и участию в этом, личного опыта на практике, где он собственно говоря и накапливается. Итог, всего этого действа — печален, а порою настолько глубок, что зыбучие пески и болота не самое трудное место. Не могу сказать, конкретнее, от страха и самоубеждения, что лишние терние будут нас закалять или из-за не желания принимать очевидную механику мира в том, что опыт — это практическая и самостоятельная работа над собой в той мере проявления, в которой мы проявляем свои действия. Т.е., на материальном проявлении и опыт самостоятельный материален, на нематериальном проявлении и опыт нематериален. Однако, наше проявление состоит из материальной части и нематериальной. О чем собственно многие забывают, влипая в дилеммы на ровном месте. Т.к. материальная и нематериальная части сообщаются в системе, а не сливаются в друг друга в не понятную кашу.  Поэтому, по мне так авторы Си и Си++ в этом, Мудаки. Не в том, что они создали языки, а в том, как они это сделали. А после них, идя их путем неизбежно в самом начале, становишься таким же Мудаком, в итоге виня авторов языка и самого себя. В итоге, приходишь к выводу, что дело было в бабине, да только не в самой бабине, а в том, что определение найти этой помехе в нас пока еще сложно. Такие, дела.

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

Так что причина моих неудач была в том, что у меня было мало практики в создании программ на Си++, именно самостоятельным способом, в ручную. Или, говоря конкретнее, я никогда не делал это все, применяя только один текстовый редактор и только одну текстовую консоль, причем выполняя поиск ошибок самостоятельно и, всегда откладывая копии исходного программ, в получившихся вариациях, а потом сравнивая их между собой. Делая это, все на простых программах, т.к. в сложных программах, есть свои трудные моменты и дилеммы. И в основном, в сложных программах реже сталкиваешься с ошибками, которые попадаются в простых программах. Т.к. в простых программах, остаешься конкретно с возникшей проблем и не смоешься от нее, слегка переправив код или сделав по принципу «как есть, потом разберусь». И в тоже время занимаясь, решением этой проблемы, попутно оттачиваешь навыки и умения создавать нормальный, работающий исходный код, тратя на это все меньше и меньше времени. Т.к. колея со временем нарабатывается и крепнет, когда затвердеет, тогда все идет само по себе, без особых усилий со стороны участника. В этом и есть, суть и смысл самостоятельной практики накопления личного опыта.

А по исходному коду в языке Си++ стоит помнить, что он является производным языком от Си. Поэтому в местах применения стандартных библиотек стоит понимать, что разница для компилятора Си++ между языками Си и Си++ порою бывает до того места,  где начинается предложение «using namespace std;», т.е. начинается применение именного пространства (та самая компактность исходного кода). Причина подобной ошибки при переносе кода из общего алгоритма в одном файле исходного кода, была в том, что не учел последовательность компиляции по причине не хватки личного опыта на практике при ручной компиляции и сборе нескольких файлов в один исполняемый. Т.к. поставил «using namespace std;» в файла исходного кода механизма, не в заголовочном файле до объявления класса. В результате, попал в ситуацию недопонимания с самим собою, все вроде правильно, ошибка синтаксиса видна только компилятору, а мне найти ее сложновато, т.к. дал себе уже отчет в том, что написал все, как требуется. И только из-за неудачного расположения «using namespace std;» , самого предложения получил неявную ошибку, которую пытался решить всеми способами, какие только искал в интернете, причем неудачно.

Вот вам и результат практики все писать покомпактнее и одним файлом, да без опыта сборки вручную, без понимания механизма компиляции и сборки. Так что народ, моя вам дельная рекомендация, ставьте себе, ГНУ Си++, make, gdb и учитесь писать не только компактной записью, также и развернутой, в том числе и несколькими файлами. И, всегда удаляйте объектные файлы («*.o») перед повторной компиляцией, когда производите дальнейшую отладку после внесения исправлений в исходный код.  Т.к. из-за применения старой вариации исходного кода класса в другом файле, где класс применяется по назначению, компилятор вносит в объектный файл полноту описания с теми типами данных, с которыми он был скомпилирован исходный код файл на момент его компиляции. А когда у вас было применено компактное обращение к методам и полям класса, где напрямую не прописывается тип данных, то в результате изменения исходного кода применяемого класса без перекомпиляции всех файлов, где применяется уже измененный класс, полная запись обращений В итоге, неявная ошибка на ровном месте, т.к. ваш компактный код, вам не надо было переписывать, а компилятор не будет пересоздавать объектный файл таких файлов будет  создавать неявную ошибку на ровном месте. Исправляется эта ситуация удалением объектных файлов и перекомпиляцией файлов, где применяется изменненый класс, заново, чтобы внесенные изменения были учтены при компиляции. На такое, вчера тоже попадался, только это мне было знакомо, а уловить момент не всегда еще легко дается, опыта в отладке подобных ошибок было не так много. Теперь, опыта стало больше. И еще, такая ситация будет даже в QCreator и в других средах, т.к. подобная практика уменьшения нагрузки на компилятор, при повторной компиляции, распространена на большинства формальных языках общего назначения.

А насчет утро, вечера мудренее. Скажу только, что удачно совпало, т.к. выход из зацикленности действий можно сделать и другим способом. И, паузу взял после дня отладки уже вечером. А утром, понятное дело, отдохнувший уже.

Всем, спасибо за внимание, с вами был Мирра Андрюхан.

З.Ы.

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

Loading

3 комментария для “Дело было в бабине…”

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

    А мы молодежь, уходим от этого, применяя среды разработки, типа QtCreator, в которых этот вопрос уже решен до нас, ограничивая себя в выборе возможностей и в тоже время защищая себя от этого упадка.И когда, опыт накоплен и есть, чем прикрыться вышвыриваем этот упадок куда подальше.

    Могу сказать, по личному опыту в другом месте, что есть и другой путь.

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

    Так что, прежде, чем спрашивать логичный и сложившийся стереотипный вопрос, ответьте себе на этот вопрос: «А что вы сделали, чтобы быть участником нормального пути и получать ответы. так ли вы правы в своих убеждениях по отношению к миру?».

    Когда сможете, ответить, тогда и задавайте свои вопросы. В остальном, ваши вопросы, будут не по адресу. 😉

    Если не хотите задаваться подобным вопросом, то лучше не ходите на этот блог, т.к. здесь вас поймут, но не примут. 😉

  2. Код к третьей части цикла учебного примера на СИ++ программы-игры «Виселица», нормально прошел отладку и тест.

    Насчет, статьи могу пока сказать, что вероятность выхода на этой неделе 50/50. Т.к. отдохнуть тоже хочется, так что если не сегодня, то со следующей недели уж точно будет публикация.

Обсуждение закрыто.