За последние годы я написал несколько сетевых демонов на разных языках, и сейчас я собираюсь начать новый проект, который требует новой пользовательской реализации надлежащего сетевого протокола.
Упомянутый протокол довольно прост - некоторые базовые сообщения в формате JSON, которые передаются в некоторой базовой оболочке фрейма, чтобы клиенты знали, что сообщение полностью получено и готово для анализа.
Демон должен будет обрабатывать несколько соединений (около 200 одновременно), управлять ими и передавать сообщения, как в чате.
В прошлом я использовал в основном C ++ для написания своих демонов. Часто с каркасом Qt4 (сетевые части, а не части с графическим интерфейсом!), Потому что это то, что я также использовал для остальных проектов, и это было легко сделать и очень переносимо. Обычно это работало нормально, и у меня не было особых проблем.
Давно уже будучи администратором Linux, я заметил, что большинство сетевых демонов написаны на простом C (конечно, некоторые написаны и на других языках, но я чувствую, что> 80% из демонов написаны простым C).
Теперь мне интересно, почему это так.
Это связано с чисто историческим фоном UNIX (например, KISS) или с простой переносимостью или уменьшением раздувания? По каким причинам не использует C ++ или любые языки "более высокого уровня" для таких вещей, как демоны?
Заранее спасибо!
Обновление 1:
Для меня использование C ++ обычно более удобно из-за того, что у меня есть объекты , которые имеют методы получения и установки и тому подобное. В некоторый момент «контекстные» объекты простого C могут быть настоящей болью, особенно когда вы привыкли к объектно-ориентированному программированию.
Да, я знаю, что C ++ является надмножеством C, и что код C в основном C ++ , вы можете скомпилировать любой код C с помощью компилятора C ++. Но дело не в этом. ;)
Обновление 2:
Я знаю, что в настоящее время может иметь смысл использовать язык высокого уровня (скриптовый), такой как Python, node.js или аналогичный. Я делал это в прошлом, и я знаю о преимуществах этого (по крайней мере, я надеюсь, что смогу;) - но этот вопрос касается только C и C ++.