2013-10-02 2 views
0

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

Однако, когда я пытаюсь написать несколько небольших программ в нем и посмотреть конкретные задачи, я часто нахожу код C еще раз. Я собирался отправить простой запрос GET, и кто-то предложил использовать cURL, который является библиотекой C. Используя это, я снова удалю из своей абстракции C++.

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

+2

Вам нужно выглядеть лучше, есть, например, Poco. Просто интересно, этот вопрос больше, чем напыщенная речь? –

+0

Если вам нравится скорость компиляции C, C++ будет разочарованием! Но серьезно, C++ - это язык с несколькими парадигмами. Если вы хотите получить максимальную отдачу от C++, вы должны быть готовы одновременно выполнять процедурное, объектно-ориентированное, функциональное и т. Д. Программирование. – Shahbaz

+0

@BenjaminBannier Я не собираюсь, чтобы это было произнесением о C или C++. Просто я хотел бы знать, где искать библиотеки C++, которые не связаны с C. –

ответ

5

Люди часто пишут библиотеки на C, предпочитая C++, из-за своей большей интероперабельности. Если вы пишете библиотеку C++, вы можете использовать ее непосредственно из C++. Если вы пишете библиотеку C, вы можете использовать ее из C++, C, Fortran, Python, C# и т. Д.

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

+0

Если вы говорите об общих библиотеках (.dll/.so), чтобы использовать коды на других языках. Что мешает вам экспортировать коды на C++ в Fortran, Python, C#? – deepmax

+0

Отсутствие стандартизованного ABI, в основном. Существует не соглашение о том, как работает привязка виртуальных функций, как распространяются исключения, как искажаются имена и т. Д. – Sneftel

+0

Вы всегда можете использовать extern «C» –