Для последнего, хм, 6 месяцев я читал в Программирование в C, я вовлек себя K&Rv2, руководство сокета BEEJ, Опытное программирование C, Системное Программирование Linux, спецификация ISO/IEC 9899:1999 (реальный, и не черновой). После получения их из Amazon я установил Linux и добрался до него.
Я сделан с K&R, примерно на полпути посредством Опытного Программирования C, но все еще чувствую себя слабым как программист, я уверен, что требуется намного больше чем 6 месяцев чтения для становления действительно квалифицированным, но мой вопрос - это:
Я сделал все упражнения в K&Rv2 (в главе 1) и некоторые в других главах, большинство которых является обычно действительно скучным. Как я снимаю свои навыки и становлюсь действительно великим? Я инвестировал деньги, время и общий образ жизни для чего-то, чего я действительно требую, но я не уверен, как точно достигнуть их.
Кто-то мог объяснить мне, возможно, если я должен непрерывно кодировать, что точно я должен кодировать? Я вполне уверен, кодирование привет мировых программ не собирается учить меня больше, чем я уже знаю о чем-нибудь.
Мой друг сказал "чтение" (с акцентом на чтение) страница справочника в день, но чтение - все, что я делаю, я хочу сделать, но я не уверен что! Я интересуюсь безопасностью, но я не уверен как новичок, что кодировать, который рассмотрели бы достаточно.
А-ч, я надеюсь, что Вы не удаляете этот вопрос :)
Спасибо
Попробуйте реализовать несколько нетривиальных алгоритмов. Я не знаю, какие примеры включены в книги, но вы можете попробовать написать
большинство из которых в целом действительно скучны
Узнайте что-нибудь, что найдете интересно, тогда все остальное встанет на свои места.
Что действительно поможет вам узнать, так это начать проект . Это может быть что угодно: клиент / сервер чата, оболочка unix, простая программа для хранения списков покупок, что угодно. Дело в том, что, выбрав то, что вас интересует, и работая над его реализацией, вы будете удивлены, как много вы узнаете на этом пути, и не захотите бросить курить, потому что работаете над чем-то значимым для вас.
По сути, вы узнаете очень много, только читая. Чтобы получить истинное знание, вам нужно будет проработать реальные проблемы.
Code Golf и Project Euler хороши, но они больше связаны с решением задач и математикой чем программирование.
Найдите проект с открытым исходным кодом (вероятно, не ядро Linux), который вас интересует, загрузите исходный код и попробуйте использовать его. В идеале что-то, что является библиотекой, а не приложением, поэтому вам нужно научиться читать, чтобы использовать в своих собственных материалах.
Не волнуйтесь - чтобы стать хорошим программистом, нужно всего около 10 лет.
Сделай это. Нет быстрого пути к тому, чтобы стать «отличным» разработчиком - как и в любом другом ремесле, это требует много времени, практики и терпения. Просто сделай это.
Вы можете выучить язык только тогда, когда вы его используете. Простые примеры или упражнения никогда не дадут вам глубокого понимания языка. Лично мне упражнения в конце главы показались скучными и неинтересными, поэтому я их не делал. Как и другие штаты, найдите проект, который вам интересен. Это может быть что угодно, начиная от простой настольной игры и заканчивая системой видеорезки. Если вы нашли то, что вам было бы интересно, посмотрите, как вы можете это осуществить. Вам понадобится использовать некоторые вспомогательные библиотеки, как для пользовательского интерфейса, так и для бэкенда. А затем приступайте к работе! (Конечно, проект должен быть посильным для вас, поэтому не стоит ставить перед собой цель вроде "написать текстовый процессор лучше, чем Winword").
Другой способ - найти OSS-проект, который вам интересен и в котором вам не хватает некоторых функций. Реализуйте их! Огромная польза в том, что вы получите обзор исходников, который, возможно, будет круче, чем у любого учителя. Как только вы выучили эти стили кодирования, вы, вероятно, уже забыли о самом языке.
Некоторые идеи проектов:
Изучение программирования похоже на изучение иностранного языка. Поначалу это очень трудно и часто скучно. Только после того, как вы достигнете определенной степени беглости в данном языке, вы обнаружите, что ваша производительность возрастает. Аналогичным образом, просто выучить правила недостаточно. Как и в случае с изучением языка, если вы не используете его, и используете его часто, его будет трудно запомнить и поддерживать интерес.
То, что работает для одного человека, не всегда работает для другого. Например, кодовый гольф может подойти вам, а может показаться утомительным. Лично мне нравится делать что-то, что имеет реальную ценность, но это мое мнение. Поэкспериментируйте немного с различными типами проектов по кодингу, возможно, код-гольф, возможно, проекты с открытым исходным кодом, создание игры и т.д. Иногда помогает просто попытка понять, как отвечать на вопросы других людей. В конце концов, вы найдете то, что подходит именно вам. Просто помните, что учиться недостаточно, вы должны применять эти знания на практике.
"прочтите" и практикуйте то, что вы читаете, как лучше всего.
Запустить проект и завершить его. Разместите его в Интернете, сделайте его открытым исходным кодом, получите обратную связь.
Если вас интересует безопасность, попробуйте написать веб-приложение с учетом требований безопасности. Если вы создадите что-то вроде форума, вы не только узнаете о ряде проблем безопасности, но и научитесь использовать несколько технологий, таких как базы данных, веб-серверы, а также новый язык и потенциально новый стиль, помимо C. А когда вы закончите свой проект, сравните код с другими подобными программами. Если вы застряли на своем проекте, вы также можете посмотреть на похожие проекты, чтобы увидеть, что они делают. И это может быть настолько просто или настолько сложно, насколько вы хотите.
Веб-программирование может во многом отличаться от системного программирования, но у обоих есть много общих проблем, связанных с безопасностью.
Я считаю, что практика гораздо более полезна при изучении концепций, чем чтение о них. Часто я определяю проблему, которую хочу решить с помощью программного обеспечения, а затем решаю ее, пытаясь решить эту проблему. Я буду использовать ресурсы по ходу дела, но действительно полезнее пробовать то, что вы читаете, чем читать каждую книгу по этой теме.
Кроме того, Code Golf - хороший способ найти интересные программы, которые можно попробовать.
Код "Hello World", затем код "Hello World", распространяемый по сети, в трехмерном пространстве или с использованием базы данных. Не думайте, что вещи слишком тривиальны, пока вы их не сделаете. Внедряйте алгоритмы, чтобы убедиться, что вы знаете, как это сделать. Пишите код, который вам нравится.
Вам нужно бросить себе вызов в более крупном и сложном проекте. Работа с фрагментами кода, как это принято в большинстве книжных примеров, не уведет вас далеко от упражнений по главам.
Вы работаете над тем, чтобы стать умным разработчиком. Сделай что-нибудь в реальном мире и стань умным на улице!
Вы говорите, что вас интересует безопасность. Найдите несколько эксплойтов и попытайтесь понять их. А еще лучше попытаться найти эксплойт для известной (лучше: неизвестной) уязвимости.
Напишите NNTP-клиент, SMTP-сервер или клиент и используйте его для отправки своей почты. Многие из этих интернет-протоколов достаточно просты, чтобы их было несложно реализовать (большинство текстовых протоколов), но при этом достаточно детализированы, чтобы быть интересными, и у них есть связь с реальным миром, что делает их более удовлетворительными, чем приветствие мировая программа.
А как насчет написания модуля ядра Linux? Их не так уж сложно написать, есть лишь небольшой барьер для входа (нужно многому научиться, прежде чем у вас появится «черный треугольник»). Создайте символьное устройство, которое возвращает бесконечный поток последнего записанного вами байта (назовите его / dev / 40two, если хотите). Затем убедитесь, что он будет работать, когда его используют два процесса одновременно.
Найдите какой-нибудь проект с паршивым кодом, но дружелюбным сообществом, и почистите его. GCC и ядро здесь были бы плохим выбором :)
Возможно, вам будет полезно прочитать Code Complete 2. Это хорошая книга по практике программирования.
.
Идите на работу. Серьезно, найдите работу для новичка и позвольте кому-то с большими знаниями направлять вас (если вам повезет) или проверьте кодовую базу на наличие полезных подсказок (если вам повезет меньше).
В другом случае, вы можете начать проект для себя, как предлагали некоторые люди, и совершенствовать свои знания по мере появления возможности.
Однако я бы не смешивал оба этих мира - не начинайте с заключения сделки за деньги - вы, вероятно, будете склонны занижать/завышать стоимость времени, не будете хорошо знать более крупные решения и т.д. Лучше иметь кого-то, кто будет направлять вас, или иметь больше времени на изучение вещей.
А, и еще. - читайте книги (CC2, некоторые книги по паттернам проектирования, "Чистый код" - хорошее место для начала и отличные справочники для всей карьеры) и блоги (Вы узнаете это, когда увидите).
Рассмотрите возможность чтения большего количества информации о «концепциях» программирования, чем чисто синтаксисе:
Присоединяйтесь к списку рассылки / информационный бюллетень / журнал / подкасты для программистов в вашей области знаний: http://www.drdobbs.com/cpp/;jsessionid=XVZEO0SKOCRRBQE1GHPCKH4ATMY32JVN
Посещайте StackOverflow.com и периодически пытайтесь решать проблемы бросить себе вызов и помочь другим.