Pergunta

Eu estou começando o meu primeiro independente para venture lucro. Estou tendo um tempo duro decidir qual idioma usar. Eu quero escrever meu aplicativo em Perl, mas eu não acho que vai ser o suficiente simples para compilar. Se eu não escrevê-lo em Perl vou escrevê-lo em C ++.

A aplicação terá muitas características, incluindo wxWidgets interface, Lidar com SDL, temporizadores, alguns threading, e processamento de áudio. O programa em si vai ser um pouco complexo, mas não muito grande.

Então, minha pergunta de são:

  1. Can PAR, Perl2exe, ou compilação equivalente mais de casos de teste básicos?
  2. Velocidade, e compilação de lado por que eu deveria usar C ++ sobre Perl?

Edit: Alguns dos meus especificações do projeto.

  • Multi Platform. Estou esperando 50% ou mais dos meus usuários próprios Macs, com a maioria do resto sendo usuários de Windows. Se possível eu também quero apoiar Linux já que é o meu sistema operacional todos os dias.
  • Uma vez que é multi-plataforma Eu preciso de uma ferramenta unificada criação GUI. Ele precisa ser capaz de usar tipos básicos, e permitam-me para criar manipuladores de eventos personalizados e objetos GUI personalizados.
  • Precisa de processamento de áudio. Leia e jogar, e / ou mp3 do wav. Também vou estar usando alguns algoritmos personalizados para determinar as propriedades especiais dos arquivos de áudio; coisas como tempo, padrões e assim por diante.
  • eu gostaria, mas não precisa de suporte SDL / OpenGL.

Tudo o resto é bastante mundano. Algumas classes diferentes e recipientes. Um costume alguns controles de GUI.

Foi útil?

Solução

Por que não usar um híbrido de ambos? Em geral, é a forma como um monte de desenvolvimento está acontecendo estes dias.

Eu sugiro uma Lua / C ++ ou Python / C ++ combinação (não estou bem certo como obras de combinação um Perl / C ++, mas que pode ser uma boa opção também).

Pessoalmente, eu fiz um monte com a Lua / C ++ de combinação e é muito fantástico.

Outras dicas

Eu sou tanto um programador C ++ e Perl. C ++ é uma linguagem agradável, mas sempre que tenho a escolha, eu vou com Perl já que o desenvolvimento simplesmente avança muito mais rapidamente.

Um par de comentários:

  1. PAR, perlapp e perl2exe não são compiladores. Eles são empacotadores. Não há compilador Perl exceto perl em si. Se você quiser algum tipo de forma de bytecode de código Perl, você vai ter que esperar para Perl 6 no Parrot.
  2. Eu tenho usado PAR empacotar um aplicativo com um total de cerca de 500 mil SLOC, não incluindo perl em si. Funcionou muito bem, correu a mesma velocidade que perl em si, mas o arranque foi mais lento. Este foi 2005. Desde então, o desempenho de inicialização melhorou significativamente se você instalar o módulo Archive :: Descompacte :: Explosão na máquina de desenvolvimento onde você empacotar o programa. I ter usado com sucesso PAR para várias aplicações diferentes em tamanho a partir de pequenas para as acima mencionadas linhas de 500k. Se precisar de ajuda com o PAR, há uma lista de discussão ativa e amigável. Basta fazer nós e se o favor de não carrilhão com "OMG, nada funciona, ajuda-me, kthx!". As pessoas fazem isso o tempo todo (e às vezes ainda obter ajuda). :)
  3. rosqueamento do Perl não é grande. Verifique se algo como POE se encaixa a sua factura em vez. Eu sou um usuário threads.pm, mas eu prefiro não ser. Com desculpas apropriadas para o mantenedor hard-working, Jerry D. Hedden.
  4. wxPerl está em muito boa forma e há uma comunidade em torno dele. Naturalmente, uma vez que wxWidgets é C ++, é sempre um pouco mordeu mais atuais e completas.
  5. SDL Perl é um invólucro em linha reta em torno da biblioteca. O (pouco) documentação pressupõe que você já sabe disso. Na minha experiência, lendo documentos para uma biblioteca em um idioma diferente pode ser um pouco de um aborrecimento.
  6. Os temporizadores são muito bem em perl: Time :: HiRes
  7. A portabilidade é difícil. Mais em C ++ do que em Perl, mas realmente sempre se resume a disciplina e ser capaz de teste em muitas plataformas.
  8. Para Perl no Windows, certifique-se que você verifique morango Perl.

Vá com C ++. Temporizadores, threading, áudio, SDL, wxWidgets, estas são todas as coisas que Perl pode fazer, mas realmente não excel. Além disso, PAR ou perl2exe são mecanismos desajeitados para distribuição. Eles trabalham, mas eles não são ideais. Enquanto isso, C ++ (e eu altamente incentivá-lo a olhar para usando impulso ) se encaixaria muito bem em este papel.

Um grande motivo para usar Perl é meta-programação.

Perl é flexível o suficiente para permitir que você escrever código para escrever código (isto é como Moose faz a sua magia). Você vai economizar tempo e reduzir o número de erros que você precisa para squash.

A grande razão para usar Perl é CPAN.

Eu uso já PAR para empacotar um programa Perl / Tk substancial para Windows. Demorou um pouco de mexer, mas funcionou.

Se você é pelo menos tão experiente em Perl como em C ++, o desenvolvimento em Perl deve ser mais rápido. Mas as velocidades de tempo de execução para um programa equivalente será mais lento. Tudo o resto de seus critérios podem ser satisfeitas por qualquer um, então eu diria que ele se resume a escolha pessoal.

Pessoalmente? Eu digo não ficar preso a este por muito tempo. Há prós e contras de ir uma ou outra maneira, mas parece que você está ficando perigosamente perto de ser preso em "paralisia da análise". Se nada mais, jogar uma moeda ou escolher o que você acha que tem o nome mais bonito.

A função é importante. Código, independentemente do idioma, vai fazer coisas semelhantes, especialmente se estiver usando as mesmas bibliotecas e componentes. A menos que você tem a função exata funcionou através de bibliotecas e ferramentas, protótipos-lo em Perl.

Há um argumento que o desenvolvimento vai demorar menos tempo em um linguagens dinâmicas. Existem problemas semelhantes em Perl e C ++ na obtenção de uma lista suspensa no lugar certo, preenchendo-a com os valores corretos, fazer a mudança adequada no estado programa de entrada do usuário.

Se Perl não é começá-lo feito em certas plataformas, transformar o código para C ++.

Há provavelmente algumas dicas que ajudariam nesta abordagem:

  1. Isso significa que você provavelmente vai escrever o protótipo com OO Perl. Depois de ter a funcionalidade de alto nível pregado para baixo em uma única plataforma - desde que você pode chegar tão longe em Perl - então C ++ é mais ou menos uma otimização.

  2. Talvez você possa conter o protótipo para mais ou menos cognatos de C ++. Mas eu não tenho certeza sobre isso, você pode decompor um map em um loop ou até mesmo substituí-lo com uma função de filtro chamado com um ponteiro de função para uma função de teste.

Escreva seu principal funcionalidade em C ++, em seguida, escrever o front-end para sua aplicação na ferramenta para a plataforma em questão, ou seja, Cocoa para Mac OS X, .NET / Delphi / MFC para Windows, etc.

Esta é a minha maneira preferida de desenvolvimento de aplicações desktop multi-plataforma. Claro, eu sei muito pouco sobre o que você está tentando realizar, por isso pode ser muito gordo para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top