Если это неправильное место, чтобы задать этот вопрос, пожалуйста, дайте мне знать.
Я программист Python по профессии. Я хотел бы выучить C. Действительно, я пробовал много раз, но я всегда расстраиваюсь. В Python вы пишете несколько строк, и программа творит чудеса. В Си, я не могу сделать что-нибудь полезное.
Кажется, очень сложно даже подключиться к Интернету.
Есть ли у вас какие-либо предложения о том, что я могу сделать, чтобы выучить C? Есть ли хорошие сайты? Какие-нибудь классные проекты?
Благодарность
Ответы:
Не расстраивайтесь.
Python - это язык программирования высокого уровня. По сравнению с C он может творить чудеса с небольшим количеством кода. Не пытайтесь имитировать результаты Python в C - вы будете быстро разочарованы. Программирование на C требует другого стиля мышления и понимания, потому что, поскольку вы взаимодействуете с компьютером на более интимном уровне. Вот хорошая отправная точка для изучения C:
книги
Интернет материал
источник
Если вы хотите изучать C, не начинайте с подключения к Интернету. Вы можете сделать это на любом другом языке. Это не самое главное в C.
Вместо этого взгляните на указатели, массивы, ссылки, структуры в этом C Tutorial . Это поможет вам понять управление памятью и многие функции, которые «приблизят вас к машине».
Если вы можете изучить и понять этот материал, то изучите возможность расширения возможного проекта. Эти понятия фундаментальны для любого настоящего профессионального программирования на языке C.
Это руководство по поиску указателей также выглядит полезным.
источник
C_Tutorial
ссылка сломана ...Это будет очень сложно подключиться к интернету! Думаю об этом:
Ваш компьютер может иметь несколько способов подключения - WLAN, Bluetooth, Ethernet и т. Д. Каждый из них имеет свои собственные настройки, которые вам необходимо установить. Вам повезло, что для них уже есть стандарты и драйверы ... использовать их может быть намного сложнее, чем сейчас.
IP-адреса могут быть IPv4 или IPv6, и вы должны уметь обрабатывать оба.
Там могут быть или не быть прокси, настроенные для системы.
Вы должны поддерживать FTP, HTTP или другой протокол.
Возможно, вам придется использовать коммутируемый доступ, поэтому вам нужно указать телефонную книгу с паролями и номерами телефонов, если вы еще не подключены. То же самое с именами / паролями WLAN.
Возможно, вам придется работать с куки.
Система может кэшировать некоторые данные, так что вы хотите использовать кеш или нет?
и этот список можно продолжать и продолжать.
Поэтому тот факт, что это легко сделать с помощью Python, обязательно означает, что многие из них скрыты от вас (или их трудно установить), поэтому вы торгуете простотой за власть. Библиотека C противоположна: она обладает всеми необходимыми возможностями (вы можете легко выполнять системные вызовы), но не имеет никаких настроек по умолчанию (или, по сути, никаких функций для подключения к Интернету).
Вместо того, чтобы думать о C как о скучном, думайте о нем как о сильном. Но в любом случае, не пытайтесь подключиться к Интернету с этим - это чертовски сложно сделать. Вместо этого, начать обучение , как использовать библиотеку для более основных задач (например , файл I / O), узнать о том , как указатели и массивы действительно работают, и когда вы узнаете все те, а затем попытаться решать большие проекты. Вы также оцените Python больше. :)
Редактировать :
Я лично предлагаю, если у вас есть свободное время, сначала изучите C #. Как только вы освоитесь с ним, начните изучать
unsafe
ключевое слово и как использовать указатели и выполнять маршалинг в C #. У вас все еще будет действительно большая библиотека для работы, как с Python, но вы сможете сделать много вещей, которые вы можете сделать в C. Затем перейдите к вызову системных API-интерфейсов вручную (например, InternetOpen ) и изучите как заставить их работать. У вас все еще будет большая гибкость, но вы получите отличное представление о концепциях более низкого уровня. После того как вы сделали это, то начните изучать C - тогда вы обнаружите, что это будет очень просто, и вы увидите (C? понимаете?) преимущества и недостатки языков высокого и низкого уровня, и вы сможете чтобы найти тот, который соответствует вашим потребностям.Тем не менее, я думаю, что Crash Course в C может быть полезным в качестве отправной точки, чтобы прыгнуть в
мореC.источник
Не читайте код ядра, когда вы изучаете C. Он полон уловок, чтобы выжать из него все до последней части производительности. Некоторые из них очень нестандартные. Это сведет тебя с ума.
Вместо этого взгляните на несколько небольших проектов с высоким качеством кода:
источник
Одна из целей языка более высокого уровня - скрывать сложные вещи. Если вы хотите выучить язык «более низкого» уровня и не хотите начинать с действительно сложных вещей (которые раньше были в основном скрыты от вас); попробуйте начать с более простых обучающих проектов, сортировки массива чисел или изменения строки символов, или чего-то подобного ...
Легче подняться на крутой холм, делая маленькие шаги.
источник
Насколько крутые проекты смотреть: ядра Unix написаны на C.
источник
Сначала изучите грамматику C, а затем используйте ее для написания структуры данных и алгоритма. Конечно, вы можете читать ядро Linux как свой эксперт c языком.
источник