Как продвинуться дальше как программист? - PullRequest
16 голосов
/ 12 марта 2010

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

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

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

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

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

Ах, надеюсь, вы не удалите этот вопрос:)

Спасибо

Ответы [ 21 ]

26 голосов
/ 12 марта 2010
18 голосов
/ 12 марта 2010

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

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

13 голосов
/ 12 марта 2010

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

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

7 голосов
/ 12 марта 2010

У Питера Норвига есть некоторые идеи об этом

6 голосов
/ 12 марта 2010

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

  • Алгебраический калькулятор. Введите «sin (2) + 5! * 3 ^ (1/2)», и вы получите 208.755394335 в качестве вывода.
  • Текстовый редактор с подсветкой синтаксиса с нуля.
  • Написать кодировщик / декодер PNG (или любой другой формат изображения или звука) с нуля.
  • Написать редактор изображений (например, заливка не совсем тривиальна)
  • ...
4 голосов
/ 13 марта 2010

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

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

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

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

2 голосов
/ 12 марта 2010

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

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

2 голосов
/ 12 марта 2010

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

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

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

2 голосов
/ 12 марта 2010

«прочитайте» и попрактикуйтесь в том, что вы читаете, что является лучшим способом.

2 голосов
/ 15 марта 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...