В порядке важности, если это возможно, а может и не быть, каковы наиболее важные основы умения программировать. Алгоритмы, итерации, рекурсии и т. Д.?
Обратите внимание, что мой вопрос лежит там, где я ставлю. Недавно я прочитал сообщение в Интернете, в котором говорится, что 9 из 10 программистов не могут задыхаться !
http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html
Я хочу иметь глубокие знания о том, чего я на самом деле пытаюсь достичь при программировании, и исчерпывающего понимания основных инструментов, имеющихся в моем распоряжении. В основном я хочу быть в состоянии рисовать всеми цветами ветра.
Ответы:
Этот список является началом ... вы задаете большой вопрос!
Я ответил на другой вопрос в том же духе (с похожим содержанием) здесь:
советы, рекомендации, моменты, которые нужно помнить для рендеринга профессионального кода
источник
Под заголовком « и т. Д. » Понимается то, что может занять 50% и более вашего времени.
Узнайте, как отлаживать.
Это означает изучение научного метода . Я имею в виду действительно изучать это. И затем применяя это с жестокой честностью . Узнайте, как точно сказать, что вы знаете, правда, то, что вы знаете, не правда, и те вещи, которые вы не знаете. Каждый раз , когда вы неряшливо присвоить элемент в ту категорию, вы только что сделали вашу жизнь намного сложнее.
Научитесь говорить «я думаю» вместо «я знаю». Вы можете сказать «я знаю» только тогда, когда вы «думаете», что что-то является правдой (или ложью), и тогда вы докажете это!
Многие ошибки тривиальны, но их трудно увидеть, потому что вы «знаете», каким должен быть код ... кроме того, что это не так. Найти друга, чтобы объяснить это. Попросите их стать «опытным идиотом»: кем-то, кто не знает ваш код, но кого вы знаете, вы не можете пройти мимо БС. Не удивляйтесь, если во время описания им вы вдруг остановитесь и скажете: «И поэтому вы можете ... увидеть ... увидеть это ... дерьмо. Спасибо."
Нетривиальные ошибки требуют арсенала приемов. Классик, который может быстро выделить большинство ошибок, не связанных со временем, - Wolf Fence на Аляске. Где-то на Аляске есть волк; построить забор, разрезая государство пополам. На чьей стороне волк? Разрежьте эту сторону пополам. Вспенить, промыть, повторить. Выполнение этого в 20 раз в хорошо выбранных местах в коде уменьшает область, где ошибка (волк) может быть до 1/1048576. Убей этого волка.
Совет: ищите волны - физические, ментальные или любые другие. Как только вы (или ваш коллега) вздрогните / отвлечетесь / сведете к минимуму внимание, уделяемое части кода, начните сходить с ума . Потому что область, где вы просто знаете об ошибке, не может быть, даже если вы потратили часы / дни на поиски этой вещи и все еще не можете ее найти ... это наиболее вероятное местоположение ошибки. Никто не получает «пока» , никто (включая машину, ОС, компилятор или вас ) не получает никакого «должного уважения». Есть ошибка. Период. Конец предложения. А теперь иди убей эту чертову вещь.
Я не знаю ни одной школы, которая бы преподавала отладку как предмет сам по себе. IMNSHO, это может быть самым ярким доказательством того, что они (университеты / профессора) не учат вас быть программистом, а вместо этого учат вас быть ... как они? Суровые? Может быть. Правда? Решайся сам. Теперь докажи это.
источник
Боюсь, что это довольно большой вопрос для любого, кто может дать окончательный или авторитетный ответ, особенно если учесть, что вам нужен список с приоритетами. Есть много программистов, и они работают над совершенно разными вещами - конечно, основы остаются прежними, но то, что вам нужно, чтобы оставаться активным в вашей памяти, может быть действительно различным, и действительно, есть много задач, где вы можете оставаться симпатичными высокий уровень, не углубляясь.
Тем не менее, кажется, что вы искренне беспокоитесь о том, как стать лучшим разработчиком, а не просто мастером торговли. Я нахожу это замечательным, и я могу поделиться некоторыми вещами, которые помогли мне научиться программировать.
Практически все программирование сводится к алгоритмам и структурам данных. Они, в свою очередь, являются примерами более крупного вопроса - как мы моделируем вещи и процессы из реального мира в представление, которое может понять компьютер. Если вы только начинаете, было бы полезно использовать язык программирования более высокого уровня (например, Java, Python и т. Д.), Чтобы ознакомиться с реализацией структур данных и алгоритмов.
В определенный момент, поиграв со структурами данных и алгоритмами, вы можете начать задавать этот гадкий вопрос: «Но как нам перейти от указания компьютеру, что делать, к компьютеру, который на самом деле это делает?» Затем вы можете посмотреть, как компьютер на самом деле вычисляет - как память и процессор работают вместе для выполнения инструкций, как операционные системы абстрагируют аппаратное обеспечение, чтобы вы могли написать программу, которая, скажем, открывает файл без кодирования на конкретном низкоуровневом уровне. интерфейс жесткого диска.
Вероятно, это хороший момент для начала - как алгоритмы и структуры данных моделируют проблемы из реального мира, и как компьютер фактически выполняет вычисления. Знание последнего очень полезно при освоении языков более низкого уровня, таких как C, которые используют гораздо меньше дыма и зеркал, чем языки OO и сценариев :)
источник
ЯГНИ : «Всегда реализуй вещи, когда они тебе действительно нужны, никогда, когда ты просто предвидишь, что они тебе нужны».
По моему опыту, «программисты» часто предвидят много случаев в будущем и пытаются «улучшить» код, добавляя коды для их предвидения! В большинстве случаев код, который они добавили, просто раздувает код и усложняет код.
источник
Самая важная вещь, которую нужно знать о том, чтобы быть программистом, - это то, что написание кода - это труд, и умелое отношение «синих воротничков» к производству того, за что вам платят, даст вам больше, чем любые эзотерические уроки.
Научитесь входить в зону. Под этим я подразумеваю психическое состояние, когда вы сосредоточены только на своей задаче, и вы можете начать хранить в своей голове очень много вещей и то, как они взаимодействуют одновременно. Как только вы привыкнете входить в зону по желанию, начните беспокоиться об отдыхе. До тех пор, пока вы не сможете набрать код, как какой-то код, набивающий штуковину, остальное практически бесполезно.
РЕДАКТИРОВАТЬ:
Если вы не верите в это и вы отвергли меня, я полагаю, что вы не знаете, решите ли вы сделать это в течение 20 лет. Я знаю, что я делаю, потому что я принимаю это. ;)
источник
Недавний вопрос, каким-то образом связанный с этим, и « Ответ» содержали ссылку на этот блог, в которой обсуждается та же проблема с другой стороны.
Вероятно, самая важная концепция для любого разработчика - это «смирение» ... Как только вы признаете, что не знаете всего этого, вы открыты для поиска решений. Большинство людей, которые пишут блоги по программированию, находятся в верхнем процентиле, и проблема заключается в том, что многим еще предстоит контролировать свои нарциссические тенденции .... вот почему они ведут блог ..... Вам нужно научиться распознавать этих блоггеров и игнорировать там пустяки
Связанный блог - это не что иное, как напыщенная речь. В каждой отрасли жалобы на то, что недавние выпускники бесполезны, обычны, что требуются годы, чтобы сделать их полезными и продуктивными. Возможно, проблема в том, что эти самопровозглашенные гуру действительно ожидают слишком многого и забыли, что однажды они не смогут решить FizzBuzz. Не каждый может быть в топ-10 процентилей, по определению половина программистов ниже среднего ......
источник