C или C ++ для распознавания образов / обработки изображений? - PullRequest
1 голос
/ 18 октября 2010

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

Какой из них выбрать?

Мои предварительные знания в области программирования ограничены в основном C #, но также некоторыми PHP, SQL и Prolog.

Ответы [ 5 ]

5 голосов
/ 18 октября 2010

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

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

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

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

Одна из основных библиотек с открытым исходным кодом для компьютерного зрения, OpenCV, доступна как для C, так и для C ++, но она также доступна для Python, который является гораздо более простым языком для быстрого выполнения задач (а также для изучения как первый язык). Кстати, я предполагаю, что если вам удастся переложить большую часть работы в библиотеку, которая сама написана на C / C ++, затраты на производительность Python не будут огромными (но, как правило, Python в 10 раз медленнее, чем C).

4 голосов
/ 18 октября 2010

Страуструп (изобретатель C ++) утверждает, что C ++ легче выучить, чем C :

Будет меньше ошибок типа, которые нужно ловить вручную […] Меньше трюков для изучения […] и лучшие библиотеки.

Имея это в виду, перейдите на C ++.

3 голосов
/ 18 октября 2010

C и C ++ принципиально отличаются в подходе к программированию. Если у вас есть опыт работы с C #, C ++ будет хорошим выбором, поскольку он также является объектно-ориентированным. Кроме того, несмотря на то, что они разные, знание C ++ позволит вам читать (и в основном понимать) C-код. Кроме того, проверьте этот вопрос для получения информации о различиях между этими языками.

3 голосов
/ 18 октября 2010

Я бы порекомендовал изучать C ++, так как это, вероятно, будет проще всего, если вы знаете о классах и т. Д. Из C #.Также вы можете писать бесплатные функции на C ++, но сложнее писать классы на C.

1 голос
/ 18 октября 2010

Стандартная библиотека, которую вы, вероятно, будете использовать: opencv.

C # поможет вам освоить C / C ++. Вероятно, вы сможете увидеть примеры кода opencv и понять их.

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

Звучит как забавный курс! Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...