Я изучаю C, и я ищу (желательно очень) простой проект с открытым исходным кодом. Скорее всего, это будет связано с большей игрой и обучением с моей стороны, чем с фактическим вкладом, но это отличный способ получить некоторый опыт и посмотреть, как C действительно используется. Любые идеи?
Простой проект с открытым исходным кодом
Ответ 1
Существует множество проектов с открытым исходным кодом, которые закодированы на C. Если вы только хотите возиться, а не вносить свой вклад, просто выберите инструмент, который вы используете регулярно (чтобы вы знали, что он делает, и где он может быть изменен/улучшен).
Если вы ищете настоящие предложения, то пейджер "less" - хорошее начало. Он написан чистым способом, короткий, и он делает удивительную сумму
Конечно, это в основном зависит от того, что вы считаете простым! Я взломал почтовый клиент mutt - это написано аккуратным способом, что упрощает его расширение, но я бы не стал даже притворяться, что понимаете, как это работает.
Вы не упоминаете свою среду, поэтому я могу предположить GNU/Linux. Я также предполагаю, что вы используете Debian, и если это так, вы можете легко загрузить источник в приложения. Просто запустите это:
apt-get source less
Ответ 2
Звучит странно, но я думаю, что самый лучший способ узнать C - писать C-расширения для Python. Существует много простых расширений, которые каким-то образом используют API Python C, и с этим приятно работать. (Наверное, это менее интересно, если вы не знаете Python ^^)
Это в основном способ, которым я научился C. Для небольших модулей просто посмотрите на Cheeseshop ^ Wpypi, есть много библиотек, которые написаны на C.
В противном случае проверьте некоторые простые приложения GNOME GUI. Многие из них написаны на C.
Ответ 3
На каких языках вы уже знаете? Вы знаете динамический язык, например Perl/Python/Ruby/ Groovy?
Что такое C best на (на мой взгляд) - это низкоуровневое программирование, которое включает аппаратный доступ, здоровую математику и высокоэффективные алгоритмы.
Вы получите больше удовлетворения, если не будете пытаться использовать C, чтобы делать то же самое, что и на динамическом языке, но старайтесь использовать его для чего угодно. Поэтому попробуйте взломать некоторые аппаратные средства! У вас есть цифровая камера, маршрутизатор, сотовый телефон или другой гаджет с прошивкой с открытым исходным кодом или утилитами? Попробуйте взломать их! Попробуйте написать код для просмотра двоичных файлов! Если вы интересуетесь математикой и наукой, найдите некоторый числовой пакет, связанный с вашей любимой наукой, и соберитесь в коде.
Наконец, попробуйте взглянуть на ядро Linux. Конечно, это огромная кодовая база, миллионы строк кода, но она также чрезвычайно модульная и хорошо документированная. В коде есть как минимум две очень хорошие книги: Понимание ядра Linux и Драйверы устройств Linux (последний доступен онлайн).
Ответ 4
Как сказал Стив, некоторые стандартные UNIX-утилиты, такие как "less", вероятно, отличная идея.
Я тоже думал, может быть, легкий текстовый редактор может быть классным, чтобы попробовать взломать. "Джо", например, написан на языке C и лицензирован GPL. В то же время, если вы работаете в Windows, редактор WinVi имеет лицензию GPL и написан на C.
Или, может быть, простая консольная игра? Предпочтительно текстовая, как игра приключений/RP-типа?
Ответ 5
Если вам нужен хороший код для просмотра, проверьте источник sqlite.
Независимо от того, можете ли вы вносить свой вклад или помогать в этом, я не знаю, но стоит хотя бы взглянуть на хороший, чистый стиль C.
Ответ 6
Вы можете обнаружить, что проекты, достаточно интересные для того, чтобы иметь нетривиальное сообщество с открытым исходным кодом, сопряжены с некоторой сложностью. Характер зверя: если он действительно не является сложным (или не очень сложным), он либо уже хорошо решен и стандартен, либо недостаточно интересен, чтобы привлечь большое внимание.
Появление новых проблемных доменов, конечно, нарушает это условие, поэтому вам просто нужно построить что-то настолько умное, что это очевидно после факта...
Скажем, рассмотрите dillo, который, несмотря на то, что начальная страница спокойно работает над версией 2 (на основе fltk).
Ответ 7
Mozilla может быть хорошим вариантом для вас. Для C вы можете проверить свой модуль безопасности на https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Getting_started_with_NSS