C # против C ++ в кроссплатформенном проекте - PullRequest
25 голосов
/ 10 августа 2009

Моя команда планирует разработать приложение, которое изначально предназначено для Windows, но в конечном итоге будет развернуто кроссплатформенно (Mac, Linux и потенциально встроенные устройства). Наше решение - использовать C # / .NET или универсальный C ++ (с Qt в качестве библиотеки пользовательского интерфейса). Мы прогнозируем, что с помощью C # мы сможем разрабатывать наш продукт быстрее и с меньшими затратами из-за повышения производительности по сравнению с C ++, но мы решаем вопрос о том, будут ли кроссплатформенные реализации C # достаточно зрелыми в время, когда мы хотим перейти на другие платформы.

Какие-нибудь предложения от кого-либо из вас, кто был в подобной ситуации?

Ответы [ 18 ]

3 голосов
/ 12 сентября 2009

Почему бы не использовать несколько языков. Используйте C ++ для базового фреймворка, который будет основой (большей частью необходимой работы) вашего приложения и платформы независимо. Затем вы можете создать пользовательский интерфейс в C # для своей версии Windows, и если позже вы решите портировать на Mac или что-то еще, вы можете написать его на Java или Qt или на любом другом языке / API, который вы решите использовать. Я думаю, что все в порядке, если пользовательский интерфейс зависит от платформы, если ядро ​​вашего приложения - нет.

Было бы лучше сразу решить, будет ли ваше приложение кросс-платформенным, но если вы не можете, то я думаю, что зависимый от платформы пользовательский интерфейс с платформно-независимой структурой / инфраструктурой - это хороший путь.

3 голосов
/ 10 сентября 2009

Если вы используете многоплатформенный подход, я думаю, это зависит от того, насколько интенсивно работает пользовательский интерфейс вашего приложения. Если основная часть приложения находится в бэк-энде, не упоминается возможность выбора комбинации C ++ и C ++ / CLI. C ++ / CLI предоставляет вам доступ к обширному .NET BCL (включая компоненты пользовательского интерфейса), чтобы вы могли быстро выйти на рынок под управлением Windows и придерживаться обычного C ++, где это не требуется. Затем для переноса на другую платформу вам нужно только указать части C ++ / CLI.

С другой стороны, вы хотите серьезно подвергнуть сомнению «в конечном итоге» часть плана по переходу на другие платформы. Концентрация исключительно на Windows и использование .NET с C # или VB.NET упрощает процесс разработки с точки зрения компетенции программиста, которая вам потребуется.

3 голосов
/ 10 сентября 2009

Просто чтобы добавить это обсуждение. Я разработал программное обеспечение с C ++. Я единственный разработчик и его финиш на 80%.

Сейчас мне трудно найти программиста на С ++, а также любого опытного программиста на php. Получение много программиста C #.

Я тоже знаю c #. Это может занять один месяц два преобразования c ++ в c # (оставляя некоторые функции, которые я чувствую слишком много, чтобы поддерживать).

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

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

Я должен принять решение по месяцам, так как я должен начать завершать этот проект.

Вы можете посмотреть мой тип проекта на Ashnah Dot Com

3 голосов
/ 30 августа 2009

вы рассматривали возможность использования python / c ++ / QT?

просто посмотрите на это

3 голосов
/ 10 августа 2009

Мое внутреннее чувство было бы идти вперед и полностью развиваться в C #. Если и когда возникнут проблемы с кросс-совместимостью, перепишите необходимые разделы в C / C ++ DLL / общих библиотеках. Очевидно, что Mono действительно может работать с общими библиотеками на платформенной основе .

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

2 голосов
/ 10 августа 2009

Примите во внимание Java / Scala. Одна из самых замечательных IDE для разработчиков IntelliJ IDEA написана на Java - посмотрите.

2 голосов
/ 10 августа 2009

У меня нет опыта в этом сценарии, так что это стоит того, чего стоит ... Я бы, наверное, использовал .Net, но всегда нацеливался на Mono. Это будет означать гораздо меньший риск использования MS-реализации .Net и непреднамеренной зависимости от некоторых функций, которые еще не реализованы в Mono, что приведет к разрушению переносимости на другие платформы, кроме Windows.

1 голос
/ 10 августа 2009

Если вы не возражаете против внешнего вида в Windows (что очевидно даже при использовании оболочки «windows», которую использует GIMP), вы можете использовать Gtk # и Mono. Когда дело доходит до пользовательского интерфейса, я обнаружил, что Gtk # проще и более интуитивно понятен (из ПО для программирования), чем .NET Framework. С другой стороны, отладка, вероятно, будет проще, если вы используете .NET.

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