Все побочные вещи, которые вам нужны, о которых никто не говорит
В дикой природе существует множество гидов, которые большую часть времени рассказывают, какие языки нужно изучать, и что самое интересное, что нужно знать, чтобы вы стали отраслевым единорогом.
Хотя они могут быть полезны, они лишь подсказывают вам поверхностную ценность. Они дают вам траекторию на поверхности, и если вам нужна глубина, вам нужно будет поплавать.
Итак, это то, что я решил сделать сегодня - помочь вам получить глубину знаний, необходимых для того, чтобы стать действительно эффективным разработчиком, но на «мета» знаниях программирования, о которых на самом деле никто не говорит, если вы действительно не поставили себя в глубокий конец.
Это то, чему учат выпускников информатики, то, что те, кто занимается самоучкой, часто упускают. Они лежат в основе того, как вы смотрите и пишете свой код.
Вот руководство в стиле контрольного списка, которое вы можете изучить и найти в этих маленьких карманах случайного любопытства.
Всеобъемлющее руководство (в основном не зависящее от языка)
1. Поговорим об алгоритмах
Все говорят об «алгоритме», как будто это некая загадочная сущность, созданная искусственным интеллектом и обреченная на гибель всех нас. Или, возможно, это всего лишь одна сторона восприятия этого широкой публикой.
Прежде чем вы вскочите на подножку, в программировании алгоритм - это просто набор повторяемых правил для достижения определенного результата.
Когда дело доходит до алгоритмов, знание механизмов алгоритмов сортировки может помочь вам оставаться в здравом уме, когда вам предоставляются большие наборы данных.
В какой-то момент вы столкнетесь с данными, и вам нужно будет что-то с ними делать. Если вы знакомы с методологиями, которые были разработаны и протестированы для определенных типов данных, это сделает вас менее зависимыми от таких методов, как list sort()
.
Это связано с тем, что sort()
имеет тенденцию работать по собственному алгоритму, который может отличаться в зависимости от механизма рендеринга. Когда вы пишете свои собственные алгоритмы, вы лучше контролируете качество и скорость данных, обрабатываемых с помощью вашего кода.
2. Искусство шаблонов дизайна
Все сводится к шаблону. Внедрение шаблона проектирования - это результат того, что мы сделаем шаг назад, увидим картину в целом и определим, встречалась ли проблема раньше.
Если это так, шаблон проектирования используется для экономии времени, предотвращения потенциальных проблем в будущем и создания стандарта для процесса создания кода.
Хотя шаблоны проектирования могут показаться большой областью для изучения, они обеспечивают хорошую окупаемость инвестиций, поскольку вы существенно сокращаете потенциальные будущие спагетти и фрикадельки, которые могут материализоваться из вашего кода из-за отсутствия или слабости структур.
В некотором смысле шаблоны проектирования подобны заранее разработанной схеме, которая помогает поддерживать читаемость и понимание кода по мере роста вашего приложения.
3. Массивы! Потому что все есть данные
Почти в каждом учебнике вы встретите очень простую версию массива. Вы знаете такие - плоские, одноярусные, и в нем есть несколько предметов. Но в реальной жизни существует гораздо больше разнообразия, форм и странностей, которые могут представить себя в виде массива.
Многомерные и зубчатые массивы - это те виды, с которыми мы часто работаем, когда речь идет о наборах данных производственного уровня. То, как мы оптимизируем структуру этих массивов для создания и потребления, также может определить, насколько эффективно и действенно мы можем их реализовать.
4. Связанные списки
Если вы не знакомы с C ++ или Python, вряд ли вы столкнетесь с идеей связанных списков. Хотя он может выглядеть как массив и иногда пахнуть как массив, у связанных списков есть определенные плюсы и минусы, которые отличаются от использования массивов.
Если вы начнете разбираться в том, как данные представлены в виде связанных списков, вы обнаружите, что это довольно хорошо работает для больших наборов данных из-за безграничных возможностей.
Если массивы станут слишком большими, в конечном итоге потребуется изменить их размер. Связанные списки могут просто «связываться» друг с другом.
5. Хеш-таблицы, что? (Не связано с хэшбраунами)
Программы работают над организацией больших массивов данных доступным и понятным способом. Хеш-таблица - это еще один метод хранения и извлечения данных.
Он часто используется, когда задействованы большие наборы данных (мы говорим о миллионах точек данных) и данные необходимо быстро извлекать. Но его также можно спроектировать для небольших наборов данных в локальных хранилищах приложений для повышения эффективности и каталогизации конкретных наборов.
6. Давайте серьезно - процессы, потоки и параллелизм
Когда вы начинаете разбираться в процессах, потоках и параллелизме, это означает, что вы начинаете углубляться в программирование.
Однако даже если вы никогда не встретите их, потому что они в основном предназначены для внутренних разработчиков, а вы - разработчик внешнего интерфейса, все равно хорошо иметь представление о том, как они работают.
Это потому, что он дает вам общее представление о том, как работают компьютеры и как код работает как коммуникационный мост между людьми, движком рендеринга или интерпретации и машинами.
Это также дает вам представление о том, как работает память и как код, который вы пишете, влияет на производительность.
7. Двоичный поиск
И мы вернулись к другой теме, связанной с данными. Двоичный поиск - важная тема для проверки, поскольку она связана с производительностью.
Чтобы бинарный поиск работал, набор данных, в котором выполняется поиск, должен быть предварительно отсортирован, что дает алгоритму возможность быстро перемещаться по каждой точке данных и решать, совпадает она или нет.
Когда дело доходит до двоичного поиска, существуют разные методы, часто это сочетание алгоритмов и рекурсии. Идея двоичного поиска может применяться на разных языках, и это больше метод, основанный на математических рассуждениях, чем на реальном коде.
8. Деревья
В какой-то момент вы услышите о деревьях. Не обычная вещь, которая растет в грязи и дает вам кислород, а то, что структурирует ваши данные на основе базовой структуры отношений - доступной через узлы, листья, детей, родителей и братьев и сестер.
Если вы работали с HTML, вы наверняка слышали о дереве DOM. Это один из видов дерева. Бинарное дерево - это дерево, в котором к каждому узлу прикреплены два дочерних узла, что создает граф в стиле пирамиды, который можно проследить до самой верхней точки.
Но деревья - это не только это, а именно: производительность, работа с данными и способы их быстрого получения.
9. Тестирование
Не надо просто учиться тестировать. Изучите теории, лежащие в основе тестирования. Когда мы тестируем что-то, мы склонны сосредотачиваться только на модульном тестировании, а не на выяснении того, как работают идеологии общей картины и почему они являются фундаментальными для надежного кода.
Существуют также функциональные тесты и нефункциональные тесты, такие как тесты производительности, безопасности, удобства использования и совместимости. Эти вопросы также часто оказываются в списке с низким приоритетом, если не в повестке дня.
Тестирование также позволяет запускать гипотетические сценарии и заранее определять форму ваших данных, которые важны и позволяют предвидеть потенциальные проблемы до того, как вы начнете кодировать.
10. Динамическое программирование.
Динамическое программирование - это метод решения сложных сценариев путем рекурсивного разбиения их на мельчайшие возможные компоненты. Это программный метод, который используется в нескольких дисциплинах и не ограничивается только кодом.
Суть динамического программирования заключается в том, что использование рекурсии означает, что проблема решается только один раз и работает на оптимизацию рабочей нагрузки, а не на прочесывание вещей на основе определенного и повторяющегося алгоритма.
Изначально идея динамического программирования может сбивать с толку, особенно когда она выглядит и звучит почти как алгоритмы. Но они существенно различаются и работают по разным идеологиям, которые в конечном итоге могут помочь вам стать лучшим программистом.
11. ТВЕРДЫЙ
SOLID - это набор из пяти принципов проектирования в программировании. Это шаблоны, которые можно реализовать для объектно-ориентированного программирования.
Их полезность заключается в создании гибкости кода, долгосрочной ремонтопригодности и общего понимания того, как все реализуются между разработчиками.
SOLID также формирует основную философию гибкой разработки программного обеспечения в дополнение к созданию надежного кода.
Прощальные слова
Кодить нужно больше, чем просто изучать, как работает язык. Существуют негласные механизмы и методы, благодаря которым язык, фреймворк или библиотека работают.
Я надеюсь, что это руководство по мета-знаниям помогло лучше понять обширность кодирования и что оно не ограничивается ... ну, кодом.
Выход за рамки if...else
операторов в вашем коде также является признаком роста и применения знаний, в чем застревают многие младшие и начинающие программисты.
Вам не обязательно все полностью понимать. Но точки знаний могут помочь нам в будущем как создателям кода.
Знание или, по крайней мере, знание того, как вышеуказанные темы работают и вписываются в общую картину, поможет ускорить процесс кодирования и повысить потенциальную устойчивость вашего творения к трещинам и разрушению.
Спасибо за чтение.
Афинья