Как стать разработчиком библиотеки C ++? - PullRequest
5 голосов
/ 04 января 2011

Я хотел бы спросить, в какую область мне покопаться, чтобы стать разработчиком библиотеки C ++. Я начал учить себя C ++ 5 лет назад, и мне это очень интересно. На работе я использую C # и Ruby, в школе я использую в основном Java и очень мало C ++; тем не менее, C ++ всегда мой любимый язык.
Я купил много книг по С ++ и читаю их снова и снова, эти книги:

  • Эффективный C ++
  • Эффективный STL
  • Ускорение C ++
  • Шаблон C ++
  • Язык программирования C ++ ... и т. Д.

Хотя мне нравится читать книгу «Шаблоны C ++», материал слишком сухой, и я чувствую, что его очень сложно применять. Иногда я хочу применить его к своему проекту, но это оказалось ненужным, хуже становится сложным, и его трудно поддерживать.
Кроме того, мне было очень трудно реализовать такую ​​библиотеку, как STL. Самый простой, который я могу частично понять, это std::vector<> или boost::array<>. Другие библиотеки - это просто куча беспорядков. Со дня, когда я присоединился к этому сайту, я понимаю, что здесь много экспертов по С ++. Не могли бы вы, ребята, поделиться с вами опытом, как выучить и понять ядро ​​C ++, а также развить навыки написания библиотек C ++?

Спасибо
Чан

Ответы [ 2 ]

7 голосов
/ 04 января 2011

Лучший (и действительно единственный) способ научиться программировать на C ++ - это испачкать руки.Выберите время, когда вы свободны, и никто не будет вас беспокоить, и когда вы в действительно хорошем настроении, откройте Visual Studio (или что бы вы ни использовали, XCode, NetBeans или еще много чего)) и просто закодируйте.

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

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

При использовании вектора вы столкнетесь с проблемой и скажете: «О, я бы хотелбыл какой-то другой, более быстрый способ поиска по этим 100 тысячам слов в этом векторе! "и тогда вы обнаружите карту.И, может быть, тогда вам будет любопытно спросить, есть ли что-нибудь лучше, чем , что , и найти хеш-таблицу.

Это весело:)

4 голосов
/ 04 января 2011

Попробуйте реализовать библиотеку. Примените знания, которые вы получили из всех этих книг. Хороший способ начать - написать несколько оберток. Например, как насчет библиотеки классов C ++ для сетевого программирования? Постройте один поверх вызовов сокетов системного уровня. Можете ли вы сделать запись в сеть так же просто, как запись в выходной поток?

Socket sock("host", port);
sock << "hello, world" << std::endl;

Подумайте, как вы можете сделать свою библиотеку лучше, чем существующие. Google для "сетевых библиотек в C ++", прочитайте их документацию и посмотрите, как они реализуют определенные функции. Найдите недостающие или плохо реализованные функции и попробуйте найти лучшие решения. Создавайте более сложные вещи поверх ваших классов сокетов. Например, реактор платформа для построения масштабируемых сетевых серверов . Подумайте, как вы можете применить свои знания в C ++ для создания таких фреймворков. Когда вы заходите в тупик, читайте больше (книги, документы и код, написанный другими людьми) и .... пишите код!

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