Моё небольшое личное возмущение

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

9 комментариев на «“Моё небольшое личное возмущение”»

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

    • Данный текст написан не только сейчас. Но если бы и был написан только сейчас, то логично, что мое возмущение возникло после того, как мне пришлось с этим столкнуться.
      Да и потом, мои знания — это вообще ничтожные навыки. Может казаться, что много описано, но это намного меньше чем на самом деле нужно любому начинающему программисту.

  2. Зато намного доступнее, чем везде, лично для меня.

    • Рад, что оказался полезен.
      Если чего не хватает в материалах — спрашивайте. То, что смогу осилить, то и объяснить смогу в свойственном мне стиле объяснений. Может и не смогу осилить. Кто знает.

  3. Виталий:

    оч хорошо подробно написано ваши статьи о связных списках! можете написать статью о сортировки связного списка (сортировка по указателю) ? было бы очень круто! а то в инете как то мало инфо… может быть плохо искал…

  4. Александр:

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

  5. Микола:

    Да динамические структуры везде в книгах почемуто описаны очень непонятно, (даже в Дейтела).
    Спасибо, что описал их здесь, только тут я смог разобрать их 🙂 ,

  6. Кирилл:

    Нужно грызть гранит науки))) это универсальный принцип

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

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

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/saymon-marlou/parallelnoe-i-konkurentnoe-programmirovanie-na-yazyke-haskell-22873018/?lfrom=15589587
Яндекс.Метрика