Подтвердить что ты не робот

Простой проект с открытым исходным кодом

Я изучаю C, и я ищу (желательно очень) простой проект с открытым исходным кодом. Скорее всего, это будет связано с большей игрой и обучением с моей стороны, чем с фактическим вкладом, но это отличный способ получить некоторый опыт и посмотреть, как C действительно используется. Любые идеи?

4b9b3361

Ответ 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.

sqlite

Ответ 6

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

Появление новых проблемных доменов, конечно, нарушает это условие, поэтому вам просто нужно построить что-то настолько умное, что это очевидно после факта...

Скажем, рассмотрите dillo, который, несмотря на то, что начальная страница спокойно работает над версией 2 (на основе fltk).