После пяти лет профессионального программирования на Java (и, в меньшей степени, на Python) и медленного ощущения, что мое образование в области компьютерных наук ускользает, я решил, что хочу расширить свой кругозор / общую полезность для мира и сделать что-то, что чувствует больше ( мне) как будто я действительно влияю на машину. Я решил изучать программирование на C и Unix, так как я чувствую, что именно здесь находятся многие из наиболее интересных проблем.
Моя конечная цель - сделать это профессионально, если только по той причине, что мне приходится тратить 40-50 часов в неделю на работу, которая оплачивает счета, так что это также может быть типом кодирования, в котором я хочу стать лучше Конечно, вас не нанимают делать то, чего вы раньше не делали, поэтому сейчас я наращиваю себя самостоятельно.
С этой целью я начал с K & R, который был отличным ресурсом отчасти благодаря упражнениям, разбросанным по каждой главе. После этого я перешел к Компьютерные системы: перспектива программиста , а затем десять глав Расширенное программирование в среде Unix . Когда я закончу с этой книгой, я прочитаю Сетевое программирование Unix .
Что мне не хватает в книгах Стивенса, так это отсутствие проблем программирования; они в основном документируют функциональность и предоставляют примеры, а также несколько вопросов в конце главы. Я чувствую, что мне было бы гораздо полезнее, если бы мне пришлось использовать знания в каждой главе а-ля K & R. Я мог бы написать несколько тестовых программ для каждой функции, но это менее желательный метод, так как (1) я, вероятно, был бы менее мотивирован, чем если бы я столкнулся с каким-то внешним вызовом, и (2) я, естественно, буду думать только об использовании функции способами, которые уже произошли со мной.
Итак, я хотел бы получить некоторые рекомендации о том, как практиковать. Очевидно, что мой первый выбор - найти какой-то ресурс, имеющий проблемы с программированием на Unix. Я также подумал о том, чтобы найти и попытаться внести свой вклад в какой-то проект C с открытым исходным кодом, но это немного утомительно, так как могут возникнуть некоторые трудности в изучении использования программного обеспечения, а затем в изучении кодовой базы. Единственный проект C с открытым исходным кодом, о котором я часто вспоминаю, - это Python, и я не уверен, насколько легко начать работу.
Тем не менее, я открыт для всевозможных предложений, поскольку есть вероятные вещи, о которых я даже не подумал.