Вопрос

Я заинтересован в изучении C.я прочитал К и Р, и я даже проделал простую работу по расширению C в R и Python.Какая идея проекта стоит того, чтобы сделать что-то более существенное с помощью C?Любые хорошие интернет-ресурсы, подобные Погружение в Python?В частности, ресурсы ориентированы на программистов, которые уже знают новые языки и пытаются изучить C (в которых упоминаются такие вещи, как «Спрашивать длину массива — это нонсенс в C, вы, ленивый питонист»).

Мой фон:

Математика/статистика, повседневное программирование на Python, R, в основном обработка естественного языка, алгоритмы и тому подобное.

Это было полезно?

Другие советы

Несколько лет назад мой друг задал мне тот же вопрос: "Как я могу выучить C?" Я сказал ему, чтобы написать драйвер устройства.

Представь мое удивление, когда он на самом деле это сделал.

В некоторой степени не по теме, но, поскольку вы упоминаете, что у вас есть знания по математике и статистике, вы должны попробовать свои силы в Project Euler. Есть более 200 математических / статистических задач, доступных для решения. Кроме того, как только вы придете к решению, вы можете просмотреть проблемный форум, чтобы увидеть, как другие решили такое же решение. Очень удобно для того, чтобы увидеть, как другие решают проблему ... и весело загружаться!

www.projecteuler.net

У меня такое же прошлое, как и у вас.Я использую Python для выполнения большого количества математических вычислений и анализа данных для своей докторской диссертации, а также для веб-программирования.Разница в том, что я впервые выучил C еще в 90-х.

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

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

Конечно, многие приложения более высокого уровня также написаны на C, особенно под Linux, который я обнаружил, но по большей части они на самом деле не написаны на «голом» C K&R или стандартной библиотеке.Скорее, они используют такие фреймворки, как Glib, или wxWindows, или Apache Portable Runtime, или другие, которые используют какую-то объектно-ориентированную структуру или соглашения и часто абстрагируют некоторые основные детали управления памятью C.

Поэтому я думаю, что ваши навыки C будут полезны в современной среде языков программирования в основном речь идет о выполнении низкоуровневой работы или знакомстве с одной из этих платформ более высокого уровня.Лично мне очень нравятся библиотеки Glib и GTK, так как они используют очень динамичный объектно-ориентированную модель (во многом похожую на Python), не мешая вам использовать низкоуровневые функции C.

Вы можете написать переводчика для простого языка. Используйте flex / bison. Сделать это многопоточным и т. Д. Это весело и имеет тенденцию много упражнять указатели. Я написал нечто подобное для школьного проекта : простой язык на основе стека с двумя разными мусорами коллекторы, TwoSpace и параллельная версия. Это было весело. И выполнимо в качестве первой в мире программы, которая больше, чем "Привет, мир"!

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

http://c.learncodethehardway.org/

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

Реализуйте виртуальную машину (например, JVM).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top