Как продвинуть далее как программист?

Для последнего, хм, 6 месяцев я читал в Программирование в C, я вовлек себя K&Rv2, руководство сокета BEEJ, Опытное программирование C, Системное Программирование Linux, спецификация ISO/IEC 9899:1999 (реальный, и не черновой). После получения их из Amazon я установил Linux и добрался до него.

Я сделан с K&R, примерно на полпути посредством Опытного Программирования C, но все еще чувствую себя слабым как программист, я уверен, что требуется намного больше чем 6 месяцев чтения для становления действительно квалифицированным, но мой вопрос - это:

Я сделал все упражнения в K&Rv2 (в главе 1) и некоторые в других главах, большинство которых является обычно действительно скучным. Как я снимаю свои навыки и становлюсь действительно великим? Я инвестировал деньги, время и общий образ жизни для чего-то, чего я действительно требую, но я не уверен, как точно достигнуть их.

Кто-то мог объяснить мне, возможно, если я должен непрерывно кодировать, что точно я должен кодировать? Я вполне уверен, кодирование привет мировых программ не собирается учить меня больше, чем я уже знаю о чем-нибудь.

Мой друг сказал "чтение" (с акцентом на чтение) страница справочника в день, но чтение - все, что я делаю, я хочу сделать, но я не уверен что! Я интересуюсь безопасностью, но я не уверен как новичок, что кодировать, который рассмотрели бы достаточно.

А-ч, я надеюсь, что Вы не удаляете этот вопрос :)

Спасибо

16
задан James Kolpack 23 March 2010 в 17:17
поделиться

20 ответов

Попробуйте реализовать несколько нетривиальных алгоритмов. Я не знаю, какие примеры включены в книги, но вы можете попробовать написать

  • алгебраический калькулятор. Введите «sin (2) + 5! * 3 ^ (1/2)», и на выходе вы получите 208.755394335.
  • Текстовый редактор с подсветкой синтаксиса с нуля.
  • Напишите кодировщик / декодер PNG (или любого другого изображения или звука) с нуля.
  • Напишите редактор изображений (например, заливка заливкой не совсем тривиальная задача)
  • ...
6
ответ дан 30 November 2019 в 15:04
поделиться

большинство из которых в целом действительно скучны

Узнайте что-нибудь, что найдете интересно, тогда все остальное встанет на свои места.

13
ответ дан 30 November 2019 в 15:04
поделиться

Что действительно поможет вам узнать, так это начать проект . Это может быть что угодно: клиент / сервер чата, оболочка unix, простая программа для хранения списков покупок, что угодно. Дело в том, что, выбрав то, что вас интересует, и работая над его реализацией, вы будете удивлены, как много вы узнаете на этом пути, и не захотите бросить курить, потому что работаете над чем-то значимым для вас.

По сути, вы узнаете очень много, только читая. Чтобы получить истинное знание, вам нужно будет проработать реальные проблемы.

18
ответ дан 30 November 2019 в 15:04
поделиться

Code Golf и Project Euler хороши, но они больше связаны с решением задач и математикой чем программирование.

Найдите проект с открытым исходным кодом (вероятно, не ядро ​​Linux), который вас интересует, загрузите исходный код и попробуйте использовать его. В идеале что-то, что является библиотекой, а не приложением, поэтому вам нужно научиться читать, чтобы использовать в своих собственных материалах.

Не волнуйтесь - чтобы стать хорошим программистом, нужно всего около 10 лет.

2
ответ дан 30 November 2019 в 15:04
поделиться

Сделай это. Нет быстрого пути к тому, чтобы стать «отличным» разработчиком - как и в любом другом ремесле, это требует много времени, практики и терпения. Просто сделай это.

0
ответ дан 30 November 2019 в 15:04
поделиться
7
ответ дан 30 November 2019 в 15:04
поделиться

Вы можете выучить язык только тогда, когда вы его используете. Простые примеры или упражнения никогда не дадут вам глубокого понимания языка. Лично мне упражнения в конце главы показались скучными и неинтересными, поэтому я их не делал. Как и другие штаты, найдите проект, который вам интересен. Это может быть что угодно, начиная от простой настольной игры и заканчивая системой видеорезки. Если вы нашли то, что вам было бы интересно, посмотрите, как вы можете это осуществить. Вам понадобится использовать некоторые вспомогательные библиотеки, как для пользовательского интерфейса, так и для бэкенда. А затем приступайте к работе! (Конечно, проект должен быть посильным для вас, поэтому не стоит ставить перед собой цель вроде "написать текстовый процессор лучше, чем Winword").

Другой способ - найти OSS-проект, который вам интересен и в котором вам не хватает некоторых функций. Реализуйте их! Огромная польза в том, что вы получите обзор исходников, который, возможно, будет круче, чем у любого учителя. Как только вы выучили эти стили кодирования, вы, вероятно, уже забыли о самом языке.

0
ответ дан 30 November 2019 в 15:04
поделиться

Некоторые идеи проектов:

  • Небольшие проекты баз данных: список контактов, коллекция DVD и т.д. Упор делается на файловый ввод-вывод, структуры данных с возможностью поиска и т.д.
  • Простой калькулятор: Акцент на интерактивный ввод-вывод, синтаксический анализ, древовидные структуры и т.д.
  • Простой NNTP (Usenet) или чат-клиент: Сети и протоколы
0
ответ дан 30 November 2019 в 15:04
поделиться

Изучение программирования похоже на изучение иностранного языка. Поначалу это очень трудно и часто скучно. Только после того, как вы достигнете определенной степени беглости в данном языке, вы обнаружите, что ваша производительность возрастает. Аналогичным образом, просто выучить правила недостаточно. Как и в случае с изучением языка, если вы не используете его, и используете его часто, его будет трудно запомнить и поддерживать интерес.

То, что работает для одного человека, не всегда работает для другого. Например, кодовый гольф может подойти вам, а может показаться утомительным. Лично мне нравится делать что-то, что имеет реальную ценность, но это мое мнение. Поэкспериментируйте немного с различными типами проектов по кодингу, возможно, код-гольф, возможно, проекты с открытым исходным кодом, создание игры и т.д. Иногда помогает просто попытка понять, как отвечать на вопросы других людей. В конце концов, вы найдете то, что подходит именно вам. Просто помните, что учиться недостаточно, вы должны применять эти знания на практике.

0
ответ дан 30 November 2019 в 15:04
поделиться

"прочтите" и практикуйте то, что вы читаете, как лучше всего.

2
ответ дан 30 November 2019 в 15:04
поделиться

Запустить проект и завершить его. Разместите его в Интернете, сделайте его открытым исходным кодом, получите обратную связь.

0
ответ дан 30 November 2019 в 15:04
поделиться

Если вас интересует безопасность, попробуйте написать веб-приложение с учетом требований безопасности. Если вы создадите что-то вроде форума, вы не только узнаете о ряде проблем безопасности, но и научитесь использовать несколько технологий, таких как базы данных, веб-серверы, а также новый язык и потенциально новый стиль, помимо C. А когда вы закончите свой проект, сравните код с другими подобными программами. Если вы застряли на своем проекте, вы также можете посмотреть на похожие проекты, чтобы увидеть, что они делают. И это может быть настолько просто или настолько сложно, насколько вы хотите.

Веб-программирование может во многом отличаться от системного программирования, но у обоих есть много общих проблем, связанных с безопасностью.

0
ответ дан 30 November 2019 в 15:04
поделиться

Я считаю, что практика гораздо более полезна при изучении концепций, чем чтение о них. Часто я определяю проблему, которую хочу решить с помощью программного обеспечения, а затем решаю ее, пытаясь решить эту проблему. Я буду использовать ресурсы по ходу дела, но действительно полезнее пробовать то, что вы читаете, чем читать каждую книгу по этой теме.

Кроме того, Code Golf - хороший способ найти интересные программы, которые можно попробовать.

1
ответ дан 30 November 2019 в 15:04
поделиться

Код "Hello World", затем код "Hello World", распространяемый по сети, в трехмерном пространстве или с использованием базы данных. Не думайте, что вещи слишком тривиальны, пока вы их не сделаете. Внедряйте алгоритмы, чтобы убедиться, что вы знаете, как это сделать. Пишите код, который вам нравится.

1
ответ дан 30 November 2019 в 15:04
поделиться

Вам нужно бросить себе вызов в более крупном и сложном проекте. Работа с фрагментами кода, как это принято в большинстве книжных примеров, не уведет вас далеко от упражнений по главам.

Вы работаете над тем, чтобы стать умным разработчиком. Сделай что-нибудь в реальном мире и стань умным на улице!

2
ответ дан 30 November 2019 в 15:04
поделиться

Вы говорите, что вас интересует безопасность. Найдите несколько эксплойтов и попытайтесь понять их. А еще лучше попытаться найти эксплойт для известной (лучше: неизвестной) уязвимости.

Напишите NNTP-клиент, SMTP-сервер или клиент и используйте его для отправки своей почты. Многие из этих интернет-протоколов достаточно просты, чтобы их было несложно реализовать (большинство текстовых протоколов), но при этом достаточно детализированы, чтобы быть интересными, и у них есть связь с реальным миром, что делает их более удовлетворительными, чем приветствие мировая программа.

А как насчет написания модуля ядра Linux? Их не так уж сложно написать, есть лишь небольшой барьер для входа (нужно многому научиться, прежде чем у вас появится «черный треугольник»). Создайте символьное устройство, которое возвращает бесконечный поток последнего записанного вами байта (назовите его / dev / 40two, если хотите). Затем убедитесь, что он будет работать, когда его используют два процесса одновременно.

Найдите какой-нибудь проект с паршивым кодом, но дружелюбным сообществом, и почистите его. GCC и ядро ​​здесь были бы плохим выбором :)

4
ответ дан 30 November 2019 в 15:04
поделиться

Возможно, вам будет полезно прочитать Code Complete 2. Это хорошая книга по практике программирования.

.

0
ответ дан 30 November 2019 в 15:04
поделиться

Идите на работу. Серьезно, найдите работу для новичка и позвольте кому-то с большими знаниями направлять вас (если вам повезет) или проверьте кодовую базу на наличие полезных подсказок (если вам повезет меньше).

В другом случае, вы можете начать проект для себя, как предлагали некоторые люди, и совершенствовать свои знания по мере появления возможности.

Однако я бы не смешивал оба этих мира - не начинайте с заключения сделки за деньги - вы, вероятно, будете склонны занижать/завышать стоимость времени, не будете хорошо знать более крупные решения и т.д. Лучше иметь кого-то, кто будет направлять вас, или иметь больше времени на изучение вещей.

А, и еще. - читайте книги (CC2, некоторые книги по паттернам проектирования, "Чистый код" - хорошее место для начала и отличные справочники для всей карьеры) и блоги (Вы узнаете это, когда увидите).

2
ответ дан 30 November 2019 в 15:04
поделиться

Рассмотрите возможность чтения большего количества информации о «концепциях» программирования, чем чисто синтаксисе:

Присоединяйтесь к списку рассылки / информационный бюллетень / журнал / подкасты для программистов в вашей области знаний: http://www.drdobbs.com/cpp/;jsessionid=XVZEO0SKOCRRBQE1GHPCKH4ATMY32JVN

Посещайте StackOverflow.com и периодически пытайтесь решать проблемы бросить себе вызов и помочь другим.

0
ответ дан 30 November 2019 в 15:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: