Является ли C хорошим для любых проектов за пределами командной строки и обучения?
Это не должно быть воспалительным или что-то в этом роде, но я нахожусь в курсе обучения C, и (думаю) я хорошо разбираюсь в большинстве основ. Я выполнил все различные книжные упражнения: генераторы простых чисел, генераторы Фибоначчи, манипуляции с строками, yadda yadda, но ничто из этого не круто.
Что такое "мост" между командами командной строки и чем-то -колесом? Я слышал о различных играх, написанных на языке C, но как?
Простите мое раздражение, но мне кажется, что я многому научился, но все еще могу делать только относительно мало. Спасибо за любое понимание того, что делать с C.
Релевантная информация: OS X leopard, PHP и опыт веб-разработки (что так здорово, потому что проекты сразу в контексте, где вы узнаете, как они могут быть мощными)
Ответы
Ответ 1
C - бетон и сталь современных технологий
Было время, когда почти все было написано на C или что-то гораздо хуже.
В наши дни многие передовые языки и системы фактически реализованы на C или С++, а затем эти вещи реализуют больше систем. Он стоит на плечах гигантов, как говорится. Почти все ядра ОС, браузер и тяжелый интернет-сервер написаны на C/С++.
Итак, вы не видите сталь в высотном потоке, вы видите прекрасную внутреннюю обстановку и гладкие стеклянные окна. Вам не нужен стол из стали или бетона, и если бы вы это сделали, вам было бы слишком дорого строить.
Вернемся к вашему графическому интерфейсу: ваша первая графическая программа C должна, вероятно, напрямую использовать исходную X Window System. Не тратьте туда слишком много времени, но затем переходите к одному из более продвинутых наборов инструментов Widget таких как GTK + или (С++) Qt. Обязательно исследуйте свою систему OS X, так как она имеет один из самых продвинутых из них.
I попробуйте любить писать вещи в Ruby в эти дни, но я знаю, что над 100 000 200 000 строк кода C, реализующих эту классную систему языка Ruby.: -)
Ответ 2
Резюме
Хорошо, это сообщение получилось очень большим, так что вот краткое резюме, прежде чем вы его прочитаете: для программирования графических интерфейсов существует ряд хороших библиотек C/С++ (например, QT). Что большинство людей делают, по крайней мере, в системах Windows - использовать язык .NET(например, С#), когда они хотят использовать графические интерфейсы, и C/С++, когда им требуется больше контроля/скорости. Также очень часто используется как в комбинации, так и в графическом интерфейсе на С# и критичных по скорости частях в C.
Я по-прежнему рекомендую вам прочитать более длинный ответ, он содержит намного больше информации о ваших вариантах.
Более длинный ответ
Начну с большого вопроса, а затем ответим (как можно лучше) на ваш конкретный вопрос о создании графического интерфейса. Я думаю, что вы страдаете от того, что C используется для обучения программированию, и гораздо проще это делать только с помощью программ командной строки (в конце концов, их гораздо проще писать). Это не означает, что C не может делать все необходимое, например GUI. Оно делает. Я не думаю, что есть какой-либо тип программного обеспечения, которое не было сделано на C, обычно, прежде чем оно было сделано на других языках.
Хорошо, некоторые ответы:
Полезно ли C?
C и его очень близкий родственник С++ отвечают за огромную часть мирового кода. Я не знаю, написано ли на C больше кода, чем на любом другом языке, но я предполагаю, что он не за горами.
Большинство действительно важных программ, которые вы используете, на самом деле написаны на C/С++. Только для примера, Windows.
Где C используется сегодня?
C/С++ все еще используются лот. Они особенно полезны для разработки низкоуровневых материалов (например, таких как операционные системы, которым требуется большая скорость, много возможностей контролировать то, что делает ваш код и т.д.).
Но не думайте, что все это на низком уровне для программистов C. Даже сегодня, когда доступно много других языков (которые, возможно, намного лучше и, конечно же, намного легче программировать), C все еще используется для создания практически всего. Приложения GUI, о которых вы специально задавали, очень часто делаются с помощью C, хотя в настоящее время многие люди переходят на другие языки. Примечание. Я говорю о переключении: C был стандартным языком для написания, ну, все, действительно.
Как разработать графические интерфейсы с помощью C
Хорошо, вы специально хотели знать, как создать графический интерфейс с C (я надеюсь, что С++ тоже в порядке).
Прежде всего, это зависит от ряда факторов:
- О какой операционной системе вы пишете? (Windows, Mac и Linux являются наиболее распространенными).
- Вы хотите, чтобы графический интерфейс работал и на других системах?
Наиболее распространенным случаем является написание программного обеспечения для работы в Windows. В этом случае "естественным" решением является запись вещей, которые работают с Win32 API. Это в основном библиотека, которая "приходит" с Windows, позволяя вам выполнять любую работу с графическим интерфейсом, которую вы хотите сделать.
Большая проблема с этим, это очень тяжело. Как и в, много сложно. Именно по этой причине большинство людей больше не выполняют эту работу.
Итак, каковы ваши другие варианты?
Наиболее естественным является то, что называется языком .NET. Это группа языков, а также библиотеки, созданные Microsoft. Вероятно, это самый простой способ получить графический интерфейс в Windows. Проблема в том, что вы не можете использовать их с C (поскольку это не язык .NET).
Предполагая, что вы хотите остаться на земле C/С++, вы можете использовать какую-то библиотеку, которая упрощает работу с Windows API (поскольку она скрывает все уродливые детали):
- Один из самых распространенных - это то, что называется MFC (Microsoft Foundation Classes), которые представляют собой группу классов С++, которые упрощают создание файлов Windows. К сожалению, эта библиотека очень старая и на самом деле не так проста в использовании.
- Другой способ пойти, если вы хотите запрограммировать на С++, - это использовать какую-то стороннюю библиотеку. Это библиотека, созданная кем-то, кроме Microsoft, что упрощает создание графического интерфейса.
- Другим вариантом является создание только части вашего программного обеспечения GUI на языке .NET и использование C/С++ для других частей (или использование языка .NET для выполнения почти всего и используйте C/С++ только тогда, когда вам это действительно нужно, например, когда вам нужно, чтобы все было очень быстро). Это очень популярный вариант.
Преимущество сторонней библиотеки заключается в том, что если вы выберете правильный вариант, вы можете использовать тот же код для создания графического интерфейса для всех операционных систем одновременно.
Я думаю, что наиболее известными из этих библиотек являются QT, а также WxWidgets, но есть и множество других. Я бы лично выбрал QT, поскольку он, кажется, получил наибольшую известность, но я тоже не работал.
Ответ 3
Каждая крупная операционная система имеет все свои низкоуровневые библиотеки, реализованные в C. Mac OS X - это Unix-подобная система под капотом, которая является прекрасным миром, если вы программист C.
Ознакомьтесь с "Искусство программирования Unix" для отличных идей.
Что касается GUI, вы, вероятно, захотите использовать X11. Существует много хорошей документации - большинство программных продуктов Unix и большинство материалов на системном уровне предполагают, что вы работаете на C, так как это все использует для этого.
Ответ 4
Ну, это зависит. Если вы хотите создавать настольные приложения, многоплатформенную графическую библиотеку, основным языком которой является C, является GTK +:
http://www.gtk.org/
Для игр проверьте SDL:
http://www.libsdl.org/
Что дает вам мысли, как прямой ввод с клавиатуры, 2D-графики, некоторых аудио и даже потоков и тому подобного. Он также может открыть контекст OpenGL, если вы хотите попасть в 3D-мир (однако это трудно сделать в raw OpenGl). Я упоминал, что SDL является мультиплатформенным?
Однако реальная сила C в системном программировании. Для настольных приложений/игр, возможно, вам лучше всего подходит С++. Теперь, когда у вас есть команда C, изучение базового С++ должно быть простым;).
Ответ 5
Прохладный материал с C?
Операционные системы, драйверы устройств и модули python для стартеров.
Игры обычно будут использовать С++, если они C-Based, по моему опыту/тому, что я видел.
Ответ 6
Существует множество библиотек для C под Unix, таких как X lib, которые обращаются к X11.
Если вы хотите попасть в робототехнику, вы можете найти C очень полезным, так как вам придется писать низкоуровневый код с очень маленькими отпечатками памяти, поэтому даже С++ может быть не лучшим выбором.
C и С++ очень хороши в написании небольшого быстрого кода, но OOP не всегда лучший выбор, поэтому время от времени вы обнаружите, что C - лучший выбор, например, если вы пишете компилятор или ОС.
Ответ 7
Конечно, есть несколько впечатляющих программ, сделанных на C!
Например, GNOME, возможно, самая используемая среда рабочего стола, используемая в современных системах unix, написана на C (по крайней мере, на основных частях) и в основном основана на GTK + gui toolkit, сам сделанный на C.
Для игры OpenGL - это C api и является стандартом для трехмерного графического программирования в многоплатформенной разработке (а не уникальной платформой Microsoft), а Quake 3, который движок Id Tech 3 доступен в GPL, также writen in C. Также существует много 2D-игр, написанных с использованием SDL.
Ответ 8
SDL - хорошая библиотека для графики и звука, и я видел замечательные вещи, сделанные с ней. Если вы сделаете это на C, это займет больше времени, но с точки зрения производительности это будет намного лучше.
Ответ 9
Если ваша идея прохладно - это графические приложения, и вы хотите писать собственные графические приложения на Mac, вам нужно взглянуть на
Carbon. Это официальный C API в Mac GUI и ОС. Они продолжают угрожать убить его, но он выживает.
Лично я считаю, что графические приложения - это очень узкое определение. Я думаю, что это круто, это реализация параллельных математических алгоритмов с использованием opencl.
Ответ 10
GTK-server ДЕЙСТВИТЕЛЬНО легко начать работу на C или любом другом языке. Просто нажмите эту ссылку.
Ответ 11
Для "классного" приложения, которое выходит за рамки простых графических интерфейсов, просмотрите библиотеку видения OpenCV. Он обеспечивает быструю обработку изображений в реальном времени и распознавание лиц.
Теперь вы можете получить доступ к веб-камере и начать писать компьютерные игры в режиме реального времени. Для таких приложений, которые интенсивно обрабатываются процессором, C является идеальным выбором.
Ответ 12
В последнее время я проверил, что больше проектов с открытым исходным кодом запускаются на C, чем на любом другом языке.
Ответ 13
Тот факт, что C используется многими крупными и успешными проектами, не делает его "хорошим". Причина, по которой C обычно используется, объясняется несколькими факторами: она длилась довольно долго, она быстро, она позволяет вам обращаться к интерфейсам низкого уровня и высокого уровня по мере необходимости, и это лучше, чем другие старые языки (FORTRAN и т.д.), "Охлаждающая" вещь о C заключается в том, что вы можете сделать абсолютно что угодно: внедрить себя в ядро и добавить некоторые новые функции или исправления ошибок, которые вы не могли бы убедить Microsoft сделать и т.д.
Да, C может быть и легко использоваться для вещей, выходящих за пределы командной строки, но это чрезвычайно опасно из-за указателей... Не говоря уже о развитии в других более современных языках быстрее (и безопаснее) по величинам. Я никогда не использую C, если это не последнее средство, то есть: нужно реализовать что-то низкое или нуждается в дополнительной производительности.
Кстати, когда я говорю C, я действительно имею в виду С++. Я бы никогда не выбрал C над С++, если бы меня не заставили.