Вклад С открытым исходным кодом для [закрытого] программиста новичка

8
задан domlao 12 March 2010 в 00:08
поделиться

3 ответа

3
ответ дан 5 December 2019 в 22:17
поделиться

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

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

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

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

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

Если ваша цель состоит исключительно в том, чтобы научить ваших учеников использовать системы контроля версий и отслеживания ошибок, возможно, лучше назначить им упражнение и заставить их создать репозиторий на одном из тех сайтов, которые интегрируют контроль версий. , просмотр исходного кода в Интернете и отслеживание ошибок, например Github, Bitbucket, Google Code и т. д.

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

Кроме того, такие сайты, как Github и Bitbucket, имеют функцию clone-this-repository. Это также хорошо подходит для обучения сотрудничеству. В зависимости от набора навыков ваших учеников вы можете либо выбрать существующий репозиторий для клонирования, а затем расширить его в соответствии с вашими заданиями, либо вы можете попросить их выполнить поиск в репозитории (возможно, соответствующий определенным критериям) и выбрать один для себя, а затем снова расширить это следуя вашим заданиям.

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

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

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

Между тем, если вы чувствуете, что вашим ученикам все еще нужен пример кода для обоих ADT, написанных на C, и того, как писать контракты функций, и у вас нет таких примеров под рукой, вы можете взглянуть на мой репозиторий на Bitbucket. Он имеет множество общих ADT в C, и все источники содержат функциональные контракты. Не стесняйтесь клонировать любой из имеющихся репозиториев и использовать их в качестве основы для упражнений:

Я уверен, что если вы посмотрите вокруг, найдется много подходящего материала других авторов , слишком.

2
ответ дан 5 December 2019 в 22:17
поделиться

Я всегда считал, что проект freebsd хорош для обучения людей программированию на C. Они получат проверку кода от коммиттеров, которые объяснят, как быть лучше, и у них есть отличные документы, http://www.freebsd.org/doc/en/books/developers-handbook/book.html . Вы можете добровольно исправлять ошибки: http://www.freebsd.org/cgi/query-pr-summary.cgi , и у них есть большой список того, что нужно сделать: http: // www.freebsd.org/projects/ideas/ideas.html некоторые из них простые, а некоторые сложные

0
ответ дан 5 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

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