Знакомство с
динамическими структурами данных в С++ весьма затруднительно для очень многих
начинающих. Я решил начать с
односвязного линейного списка. По моей логике это важный фундаментальный кирпич
для изучения динамических структур данных. Сейчас у меня есть и книги и
интернет. В форумах пишут гуглите, всё найдете, пишут в книгах все написано,
пишут подобное. Я гуглил и находил примеры какие-то мутные. Находил Листинг и комментарии без объяснения
принципов, а в книгах вообще не попалось. (Думаю я ужасный гуглёр).
Хочется
провести небольшую аналогию. Когда люди начинают изучать программирование, им
говорят: «Вот есть программа, у нее должно быть начало и должен быть конец»,
показывают блок пустой программы. Не заставляют придумывать, как это все
написать. Показывают, как это сделать и учат, как использовать
Программирование
динамических структур данных очень похоже на изучение программирования с чистого листа. Лично я не
понимаю, почему не умея использовать что-то, я должен придумывать, как сделать
то, с чего это что-то нужно начать. Вообще,
я считаю, что тут программисты делятся на две категории. Одни хотят уметь
использовать то, что у них есть. Вторые хотят что-то придумывать, что-то
изобретать и подробно разбирать, почему что-то это вообще работает, хотят понять,
как оно работает, вникая в каждую деталь и строя из этого новое,
самостоятельное. Я себя отношу к первым
и, думаю, больше 50% изучающих программирование хотят не изобретать, а уметь использовать
то, что есть. Опят проведу аналогию. При изучении ООП не малое внимание
уделяется абстракции данных. (Нам не нужно знать как что-то работает, нам нужно
знать как использовать), но в большинстве случаев при обучении лишают любой
абстракции при необходимости абстрагироваться от не обязательных данных. На форумах видел человек, пишет не знает как
написать программу по спискам (там простая) и в ответ такие слова: «Я напишу
вам с ошибками, а вы их исправьте». Да если человек не знает как работать,
откуда ему знать где там ошибки и как их исправить. И вообще просил бы он
помочь если бы знал что нужно? Если ему не объяснили или плохо объяснили или
объяснили не так, разве его вина, что он не знает?
Вот почему-то при моих поисках я чаще
натыкался на примеры односвязного списка основанных на листинге с
комментариями, и почему-то в голову приходили мысли. «Если понять досконально
все детали, используемые при программировании динамических структур данных, то
я пойму и эти принципы» Думаю это
правильные мысли, но в кодах используются классы, конструкторы, деструкторы,
указатели и другие кирпичики знаний. Всё это большие темы. А ведь можно частично абстрагироваться от
принципов и деталей и объяснить материал на более простом примере, начиная как
начинали при написании HelloWorld. Одними комментариями очень трудно
ограничиться для разъяснения не самых легких для восприятия материалов
Я не понял
почему мне так трудно найти ввод данных в односвязный список и вывод этого
односвязного списка на экран. Я много искал. Уверен, что на сайтах есть, но в
основном листинги кодов насыщены дополнительными функциями и они очень сильно
отвлекают. Хотя я уверен, что это обязательный момент и сто процентная аналогия
начала и конца программы.
Так и
хочется крикнуть тем кто знает материал, но объясняет как-то тяжело. Да
объясните вы нам подробнее и не забивайте нашу голову сразу и всем, ведь нам всё это с таким трудом
дается. Если бы мы хватали всё на лету,
обращались бы к вам за советом?
Добавляет свой отпечаток и то что одно и тоже называют по разному. Если мне не показать как водить, я никогда не научусь, если мне не показать как зажигать огонь, я никогда не смогу разжечь его сам. Если мне не показать, то я многого не смогу и хоть миллион раз рассказывайте мне теорию. Но мне часто не показывают, другим увы тоже. Типа мы вам рассказали теорию и вы справитесь. Теория и практика разные взаимодополняющие вещи, но к сожалению об этом часто забывают. Лично знаком с ситуацией когда теория к требуемой практике никакого отношения не имеет, но на практике не показывают, а теорией такой мучают.