Изучение С правильно: да или нет? - PullRequest
7 голосов
/ 06 февраля 2009

Мой основной язык - PHP, но я немного (не очень) программировал на других языках.

Я написал 2 модуля для Apache на C. Я написал их на C, потому что это была одна из тех вещей, где производительность имела значение. (создание проецируемых карт мира на лету и вывод в .png).

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

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

мой вопрос:
Должен ли я сначала научиться правильно программировать на C (получить копию Язык программирования C ) или вы рекомендуете другой подход.

Примечание:
В настоящее время у меня нет планов использовать C, кроме модулей Apache

Ответы [ 14 ]

10 голосов
/ 06 февраля 2009

Если вы серьезно относитесь к программированию, я думаю, что изучение C действительно важно. Это основа многих языков, и вы столкнетесь с большим количеством исходного кода, написанного на C. Однако, мы могли бы сказать так о Java, C ++ и т. Д.

ИМХО, я думаю, вы должны просто продолжать писать свои модули и изучать новые вещи по мере необходимости. Это лучший способ изучения вещей

4 голосов
/ 06 февраля 2009

Учитесь только столько, сколько вам нужно.

Вам не нужно тратить время на чтение языка программирования C и изучение всех его возможностей, чтобы он был полезен. Используйте язык программирования C как инструмент поиска по мере необходимости. Если вы начинаете программировать на c чаще, то потратьте время на изучение языка более тщательно.

4 голосов
/ 06 февраля 2009

Звучит так, как будто у вас уже все хорошо. Как насчет открытых источников этих модулей и запроса обратной связи от сообщества?

3 голосов
/ 06 февраля 2009

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

  • используйте язык. Вы уже сделали это:)
  • познакомиться с языком. «Библейский» K & R - это то, о чем вы должны иметь хоть какие-то знания - вам не нужно знать каждый кусочек книги, но вы должны использовать его, чтобы иметь хотя бы представление о языковых функциях, которые не используются слишком часто. Это станет полезным в один прекрасный день.
  • сотрудничать с другими. Примите участие в проекте с другими, чтобы другие читали ваш код, а также читали его код. Open Source обычно хороший способ сделать это, хотя есть и другие варианты.

Говоря о моей "карьере", я также начал с PHP и закончил на C. Чтение книг (я очень рекомендую "Программирование на Expert C" Питера ван дер Линдена, которого, к сожалению, нет в печати) даст вам более глубокое понимание. понимание внутренних особенностей языка и, следовательно, сделать вас лучшим программистом. Я не знаю каждую страницу K & R, но я никогда не сожалел о том, что использую и чувствую себя комфортно с ней (думаю, я скорее использовал ее, чем читал - это не учебник, а, на мой взгляд, справочник).

2 голосов
/ 06 февраля 2009

Я очень рекомендую эту книгу. Даже если вы не видите, что будете использовать C в будущем, вы никогда не узнаете, что вам, возможно, придется, и это идеальная книга, чтобы получить больше опыта / знаний для C с помощью.

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

1 голос
/ 06 февраля 2009

Я думаю, настоящие проблемы, с которыми вы здесь сталкиваетесь:

1) Подходит ли C для выполняемой вами задачи?
2) следует ли вам расширить свои знания языка C при изменении требований?

Для вопроса 1, возможно, есть альтернативы C для вашего приложения. Вам нужно выводить изображения .png и управлять потоками: возможно, Java или Python являются лучшей альтернативой C (вывод .png - это несколько строк на обоих языках, хотя я думаю, что вам нужны внешние библиотеки и такие на C. для нарезания резьбы.

Для вопроса 2, если вы продолжаете использовать C, возможно, лучше изучить язык более подробно, если вы хотите избежать подводных камней при увеличении сложности (особенно для языков низкого уровня, таких как C).

1 голос
/ 06 февраля 2009

Даже если вы не планируете программировать на C в будущем или даже уверены, что вам никогда не придется разрабатывать на некоторых языках, связанных с c, я все равно рекомендую книгу K & R по историческим причинам: это хорошая практика учиться у известных мастеров своего искусства.

0 голосов
/ 08 февраля 2009

Возможно, я немного модернист, но если вы собираетесь изучать C правильно, я бы не рекомендовал начинать с K & R. Зачем изучать устаревший стандарт? Поднимите книгу, которая обучает вас стандарту C99, и учитесь на этом. Поскольку вы уже немного знакомы, может быть, C Primer Plus или что-то подобное.

0 голосов
/ 06 февраля 2009

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

0 голосов
/ 06 февраля 2009

Я бы определенно рекомендовал приобрести язык программирования Си (K & R). Это очень лаконичная и полезная ссылка на C. Если вам трудно учиться в K & R, я без колебаний найду более мягкую книгу по языку, но K & R - это книга, к которой вы вернетесь, когда есть что-то, что вы не уверены насчет *. 1001 *

Кроме того, стоит отметить, что многопоточное программирование открывает целый новый мир потенциальных проблем, поэтому я определенно рекомендую книгу, чтобы научиться делать это правильно.

...