Действительно ли C хорош для каких-либо проектов вне командной строки и изучения?

Необходимо вызвать определенные для ОС функции для обхода файловой системы, как open() и readdir(). Стандарт C не определяет связанных с файловой системой функций.

13
задан emlai 24 December 2015 в 21:58
поделиться

13 ответов

C - это бетон и сталь современных технологий

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

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

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

Вернемся к вашему вопросу о графическом интерфейсе: ваша первая графическая программа на C, вероятно, должна использовать исходное X Window Система напрямую. Дон' Я трачу на это слишком много времени, но затем перейдите к одному из более продвинутых наборов инструментов для виджетов , например, GTK + или (C ++) Qt . Обязательно изучите свою систему OS X, так как в ней одна из самых продвинутых из всех.

Я пытаюсь сейчас писать что-то на Ruby, но я знаю, что их больше 100 000 200 000 строк кода C, реализующего эту классную языковую систему Ruby. : -)

000 строк кода C, реализующего эту классную языковую систему Ruby. : -)

000 строк кода C, реализующего эту классную языковую систему Ruby. : -)

42
ответ дан 1 December 2019 в 17:12
поделиться

Резюме

Хорошо, этот пост получил действительно большой, так что вот краткое резюме, прежде чем вы его прочитаете: для программирования графических интерфейсов существует ряд хороших C / Библиотеки C ++ (например, QT). Большинство людей, по крайней мере, в системах Windows, используют язык .NET (например, C #), когда им нужны графические интерфейсы, и C / C ++, когда им нужен больший контроль / скорость. Также очень распространено использование обоих в комбинации, т.е. создание графического интерфейса на C # и критически важных для скорости частей на C.

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

Более длинный ответ

Я начну с большого вопроса, а затем отвечу (насколько я могу) на ваш конкретный вопрос о создании GUI. Я думаю, вы как бы страдаете от того факта, что C используется для обучения программированию, а это Намного проще сделать это, только используя программы командной строки (в конце концов, их намного проще написать). Это не означает, что C не может делать все, что вы хотите, в частности, графический интерфейс. Оно делает. Я не думаю, что есть какое-либо программное обеспечение, которое не было бы написано на C, обычно до того, как это было сделано на других языках.

Хорошо, некоторые ответы:

Полезен ли C?

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

Большинство действительно важных программ, которые вы используете, на самом деле написаны на C / C ++. Например, Windows.

Где C используется сегодня?

C / C ++ по-прежнему используется лот . Oни' он особенно полезен для разработки низкоуровневых вещей (то есть таких вещей, как операционные системы, которым нужна большая скорость, много возможностей точно контролировать то, что делает ваш код, и т. д.).

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

Как мне разрабатывать GUI с C

Хорошо, вы специально хотели узнать, как создать GUI с C (я Надеюсь, C ++ тоже подходит).

Прежде всего, это зависит от ряда факторов:

  1. Для какой операционной системы вы пишете? (Наиболее распространены Windows, Mac и Linux.)
  2. Хотите, чтобы графический интерфейс работал и в других системах?

Самый распространенный случай - это написание программного обеспечения для работы в Windows. В этом случае «естественным» решением будет писать вещи, которые работают с Win32 API. По сути, это библиотека, которая «идет» с Windows, позволяя вам выполнять любую работу с графическим интерфейсом, которую вы хотите.

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

Итак, какие у вас другие варианты?

Наиболее естественным является то, что называется языком .NET. Это группа языков вместе с библиотеками, созданная Microsoft. Это, вероятно, самый простой способ получить графический интерфейс в Windows. Проблема в том, что вы можете » я действительно использую их из C (поскольку это не язык .NET).

Предполагая, что вы хотите остаться в стране C / C ++, вы можете использовать какую-то библиотеку, которая упрощает работу с Windows API (поскольку она скрывает все уродливые детали):

  1. Одна из наиболее распространенных - это так называемые MFC (Microsoft Foundation Classes), которые представляют собой набор классов C ++, которые «упрощают» создание вещей для Windows. К сожалению, эта библиотека очень старая, и ее действительно не так просто использовать.
  2. Другой путь, если вы хотите программировать на C ++, - это использовать какую-то стороннюю библиотеку. Это библиотека, созданная кем-то другим, а не Microsoft, что упрощает создание GUI.
  3. Другой вариант - создать только часть GUI вашего программного обеспечения на языке .NET и использовать C / C ++ для других частей (или используйте расширение. NET, чтобы делать почти все, и использовать C / C ++ только тогда, когда вам это действительно нужно, например, когда вам нужно, чтобы все выполнялось очень быстро). Это очень популярный вариант.

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

Я думаю, что самая известная из этих библиотек - это QT, а также WxWidgets, но есть и множество других. Я бы лично выбрал QT, так как он, кажется, получил наибольшую известность, но я не работал ни с одним из них.

вы можете использовать один и тот же код для создания графического интерфейса для всех операционных систем одновременно.

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

вы можете использовать один и тот же код для создания графического интерфейса для всех операционных систем одновременно.

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

12
ответ дан 1 December 2019 в 17:12
поделиться

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

Посмотрите Искусство программирования Unix , чтобы найти отличные идеи.

Что касается графического интерфейса, вы, вероятно, захотите использовать X11.Существует множество хорошей документации - большинство вещей, связанных с программированием Unix и наиболее глубоких материалов системного уровня, просто предполагает , что вы работаете на C, поскольку это то, что все используют для этого.

7
ответ дан 1 December 2019 в 17:12
поделиться

Ну, это зависит от обстоятельств. Если вы хотите создавать настольные приложения, многоплатформенная библиотека графического интерфейса пользователя с основным языком C - это GTK +:

http://www.gtk.org/

Для игр ознакомьтесь с SDL:

http: // www.libsdl.org/

Который предоставляет вам такие мысли, как прямой ввод с клавиатуры, 2D-графику, немного звука и даже потоки и тому подобное. Он также может открыть контекст OpenGL, если вы хотите попасть в трехмерный мир (однако это сложно сделать в чистом OpenGl). Я упоминал, что SDL является мультиплатформенным?

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

5
ответ дан 1 December 2019 в 17:12
поделиться

Классный материал, который можно сделать с C?
Операционные системы, драйверы устройств и модули Python для начинающих.

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

4
ответ дан 1 December 2019 в 17:12
поделиться

Конечно, есть несколько впечатляющих программ, написанных на C!

GNOME, например, возможно наиболее часто используемая среда рабочего стола, используемая в современных системах unix, написана на C (по крайней мере, основные части) и в основном основана на GTK + gui toolkit, сам сделан на C.

Для игр OpenGL представляет собой C api и является стандартом для трехмерного графического программирования в многоплатформенной разработке (не только на платформе Microsoft), а также Quake 3, движок которого, Id Tech 3, доступен в GPL, также написано на C. Также существует множество 2D-игр, написанных с использованием библиотеки SDL .

2
ответ дан 1 December 2019 в 17:12
поделиться

SDL - хорошая библиотека для графики и звука, и я видел несколько интересных вещей, сделанных с ее помощью. . Если вы сделаете это на C, это займет больше времени, но с точки зрения производительности это будет намного лучше.

1
ответ дан 1 December 2019 в 17:12
поделиться

Есть много библиотек для C под Unix, например X lib, который обращается к X11.

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

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

3
ответ дан 1 December 2019 в 17:12
поделиться

Если вы думаете о крутых приложениях с графическим интерфейсом и хотите писать собственные приложения с графическим интерфейсом на Mac, вам стоит взглянуть на Углерод . Это официальный API C для графического интерфейса Mac и ОС. Они продолжают угрожать убить его, но он выживает.

Лично я считаю, что приложения с графическим интерфейсом - это очень узкое определение крутизны. Я считаю крутым реализацию распараллеленных математических алгоритмов с использованием opencl .

1
ответ дан 1 December 2019 в 17:12
поделиться

GTK-server ДЕЙСТВИТЕЛЬНО прост в использовании на C или на любом другом языке. Просто нажмите на эту ссылку.

1
ответ дан 1 December 2019 в 17:12
поделиться

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

0
ответ дан 1 December 2019 в 17:12
поделиться

Тот факт, что C используется во многих крупных и успешных проектах, не особо делает его «хорошим». Причина, по которой C так часто используется, заключается в нескольких факторах: он существует уже давно, он быстрый, он позволяет вам получать доступ как к низкоуровневым, так и к высокоуровневым интерфейсам по мере необходимости, и он лучше, чем другие старые языки (FORTRAN и т. Д.) . «Крутая» вещь в C заключается в том, что вы можете заставить его делать что угодно: внедрять себя в ядро ​​и добавлять новые функции или исправления ошибок, которые вы не могли убедить Microsoft сделать, и т. Д.

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

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

0
ответ дан 1 December 2019 в 17:12
поделиться

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

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

1
ответ дан 1 December 2019 в 17:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: