Новый проект:У меня проблемы с выбором языка для использования

StackOverflow https://stackoverflow.com/questions/185862

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

Итак, мой вопрос:

  1. Могут ли PAR, Perl2exe или его эквивалент скомпилировать больше, чем просто базовые тестовые примеры?
  2. Помимо скорости и компиляции, почему мне следует использовать C++ вместо Perl?

Редактировать:Некоторые характеристики моего проекта.

  • Мультиплатформа.Я ожидаю, что 50% или более моих пользователей будут владельцами компьютеров Mac, а большинство остальных будут пользователями Windows.Если возможно, я также хочу поддерживать Linux, поскольку это моя повседневная операционная система.
  • Поскольку это мультиплатформа, мне нужен единый инструмент для создания графического интерфейса.Он должен иметь возможность использовать базовые типы и позволять мне создавать собственные обработчики событий и собственные объекты графического интерфейса.
  • Требуется обработка звука.Читайте и играйте в форматах wav и/или mp3.Также я буду использовать некоторые собственные алгоритмы для определения особых свойств аудиофайлов;такие вещи, как темп, шаблоны и так далее.
  • Мне бы хотелось, но не требуется поддержка SDL/OpenGL.

Все остальное довольно обыденно.Несколько разных классов и контейнеров.Несколько пользовательских элементов управления графическим интерфейсом.

Это было полезно?

Решение

Почему бы не использовать гибрид того и другого?В целом именно так происходит развитие в наши дни.

Я бы предложил комбинацию Lua/C++ или Python/C++ (я не уверен, насколько хорошо работает комбинация Perl/C++, но это тоже может быть хорошим вариантом).

Лично я работал с комбинацией Lua/C++, и это просто фантастика.

Другие советы

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

Пара комментариев:

  1. PAR, perlapp и perl2exe не являются компиляторами.Они упаковщики.Не существует компилятора Perl, кроме самого Perl.Если вам нужна какая-то форма байт-кода кода Perl, вам придется дождаться Perl 6 на Parrot.
  2. Я использовал PAR для упаковки приложения общим объемом около 500 тыс. SLOC, не считая самого Perl.Он работал нормально, работал на той же скорости, что и сам Perl, но запуск был медленнее.Это был 2005 год.С тех пор производительность запуска значительно улучшилась, если вы установите модуль Archive::Unzip::Burst на машине разработки, куда вы упаковываете программу.Я успешно использовал PAR для различных приложений размером от крошечных до вышеупомянутых 500 тыс. строк.Если вам нужна помощь с PAR, существует активный и дружелюбный список рассылки.Просто сделайте нам и себе одолжение и не вступайте в разговор со словами: «О боже, ничего не получается, помогите мне, спасибо!».Люди делают это постоянно (и иногда им все же помогают).:)
  3. Многопоточность в Perl не очень хороша.Проверьте, соответствует ли вам что-то вроде POE.Я пользователь threads.pm, но предпочел бы этого не делать.С соответствующими извинениями трудолюбивому сопровождающему Джерри Д.Хедден.
  4. wxPerl находится в довольно хорошей форме, и вокруг него существует сообщество.Естественно, поскольку wxWidgets — это C++, он всегда немного более актуальный и полный.
  5. SDL Perl — это прямая оболочка библиотеки.(Небольшая) документация предполагает, что вы это уже знаете.По моему опыту, чтение документации для библиотеки на другом языке может доставить немало хлопот.
  6. Таймеры в Perl хороши: Время::HiRes
  7. Мобильность — это сложно.В большей степени это касается C++, чем Perl, но на самом деле это всегда сводится к дисциплине и возможности тестировать на многих платформах.
  8. Для Perl для Windows обязательно проверьте Strawberry Perl.

Используйте С++.Таймеры, потоки, аудио, SDL, wxwidgets — это все, что Perl может делать, но в чем он не преуспевает.Кроме того, PAR или perl2exe — неуклюжие механизмы распространения.Они работают, но не идеальны.Между тем, C++ (и я настоятельно рекомендую вам рассмотреть возможность использования Способствовать росту) прекрасно вписался бы в эту роль.

Отличная причина использовать Perl — метапрограммирование.

Perl достаточно гибок, чтобы вы могли писать код для написания кода (именно так Moose творит чудеса).Вы сэкономите время и уменьшите количество ошибок, которые необходимо устранить.

Веская причина использовать Perl — это CPAN.

Я использовал PAR для упаковки крупной программы Perl/Tk для Windows.Пришлось немного повозиться, но это сработало.

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

Лично?Я говорю: не зацикливайтесь на этом надолго.Есть плюсы и минусы идти в любом случае, но похоже, что вы опасно близко к тому, чтобы быть застрявшим в «параличе анализа». Если ничего другого, переверните монету или выберите то, что, по вашему мнению, имеет самое красивое имя.

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

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

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

Вероятно, есть несколько советов, которые помогут в этом подходе:

  1. Это означает, что вы, вероятно, напишете прототип с помощью OO Perl.Если у вас есть высокоуровневая функциональность, закрепленная на одной платформе (при условии, что вы сможете продвинуться так далеко в Perl), тогда C++ станет более или менее оптимизацией.

  2. Возможно, вы могли бы ограничить прототип более или менее родственными C++.Но я не уверен в этом, можно разложить map в цикл или даже просто замените его функцией фильтра, вызываемой с указателем функции для тестовой функции.

Напишите свою основную функциональность на C++, затем напишите внешний интерфейс вашего приложения в инструменте для рассматриваемой платформы, например Cocoa для Mac OS X, .NET/Delphi/MFC для Windows и т. д.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top