새 프로젝트:사용할 언어를 선택하는 데 어려움을 겪고 있습니다.

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

  •  06-07-2019
  •  | 
  •  

문제

나는 첫 번째 독립 사업을 영리 목적으로 시작하려고 합니다.어떤 언어를 사용할지 결정하는 데 어려움을 겪고 있습니다.Perl로 앱을 작성하고 싶지만 컴파일하기에는 쉽지 않을 것 같습니다.Perl로 작성하지 않는다면 C++로 작성하겠습니다.

응용 프로그램에는 다음을 포함한 많은 기능이 있습니다. wx위젯 인터페이스, SDL 처리, 타이머, 일부 스레딩 및 오디오 처리.프로그램 자체는 다소 복잡하지만 그다지 크지는 않습니다.

그래서 내 질문은 다음과 같습니다

  1. PAR, Perl2exe 또는 이에 상응하는 도구가 기본 테스트 사례보다 더 많은 것을 컴파일할 수 있습니까?
  2. 속도와 컴파일을 제쳐두고 Perl 대신 C++를 사용해야 하는 이유는 무엇입니까?

편집하다:내 프로젝트 사양 중 일부입니다.

  • 멀티 플랫폼.내 사용자 중 50% 이상이 Mac을 소유하고 나머지 대부분은 Windows 사용자일 것으로 예상됩니다.가능하다면 Linux도 지원하고 싶습니다. Linux는 제가 일상적으로 사용하는 운영 체제이기 때문입니다.
  • 다중 플랫폼이기 때문에 통합된 GUI 생성 도구가 필요합니다.기본 유형을 사용할 수 있어야 하고 사용자 정의 이벤트 핸들러와 사용자 정의 GUI 객체를 생성할 수 있어야 합니다.
  • 오디오 처리가 필요합니다.wav 및/또는 mp3를 읽고 재생하세요.또한 오디오 파일의 특별한 속성을 결정하기 위해 몇 가지 사용자 정의 알고리즘을 사용할 것입니다.템포, 패턴 등과 같은 것입니다.
  • SDL/OpenGL 지원을 원하지만 필요하지 않습니다.

다른 모든 것은 꽤 평범합니다.일부 다른 클래스와 컨테이너.몇 가지 사용자 정의 GUI 컨트롤.

도움이 되었습니까?

해결책

왜 둘 다 하이브리드를 사용하지 않습니까? 그것은 일반적으로 요즘 많은 발전이 진행되는 방식입니다.

LUA/C ++ 또는 Python/C ++ 콤보를 제안합니다 (Perl/C ++ 콤보가 얼마나 잘 작동하는지 잘 모르겠지만 좋은 옵션이 될 수 있습니다).

개인적으로 나는 LUA/C ++ 콤보와 함께 무리를했는데 매우 환상적입니다.

다른 팁

저는 C ++ 및 Perl 프로그래머입니다. C ++는 좋은 언어이지만, 선택권이있을 때마다 개발은 단순히 훨씬 더 빨리 진행되기 때문에 Perl과 함께갑니다.

몇 가지 의견 :

  1. par, perlapp 및 perl2exe는 컴파일러가 아닙니다. 그들은 패키퍼입니다. Perl 자체를 제외하고는 Perl 컴파일러가 없습니다. 어떤 형태의 바이트 코드 형태의 Perl 코드를 원한다면 앵무새에서 Perl 6을 기다려야합니다.
  2. 나는 Parl 자체를 포함하지 않고 총 약 500k SLOC의 응용 프로그램을 포장하는 데 사용했습니다. 잘 작동했고 Perl 자체와 같은 속도를 달았지만 스타트 업은 느 렸습니다. 그 이후로 프로그램을 패키지하는 개발 시스템에 아카이브 :: unzip :: 버스트 모듈을 설치하면 시작 성능이 크게 향상되었습니다. 나는 크기가 작은 것에서 앞서 언급 한 500k 라인에 이르기까지 다양한 응용 분야에 성공적으로 사용했습니다. PAR에 대한 도움이 필요한 경우 적극적이고 친근한 메일 링리스트가 있습니다. "OMG, 아무것도 작동하지 않고, 나를 도와주세요, KTHX!" 사람들은 항상 그렇게합니다 (때로는 여전히 도움을받습니다). :)
  3. Perl의 스레딩은 좋지 않습니다. Poe와 같은 것이 대신 청구서에 맞는지 확인하십시오. 나는 스레드입니다 .pm 사용자이지만 오히려 그렇지 않습니다. 열심히 일하는 관리자에게 적절한 사과를함으로써 Jerry D. Hedden.
  4. Wxperl은 꽤 좋은 모양이며 주변에 커뮤니티가 있습니다. 당연히 WXWIDGETS는 C ++이므로 항상 조금 더 최신 상태이며 완전합니다.
  5. SDL Perl은 라이브러리 주변의 직선 래퍼입니다. (작은) 문서는 이미 알고 있다고 가정합니다. 내 경험상, 다른 언어로 도서관의 문서를 읽는 것은 약간 번거 로움이 될 수 있습니다.
  6. 타이머는 perl에서 괜찮습니다. 시간 :: 고용
  7. 이식성은 어렵습니다. C ++에서는 Perl보다 더 많은 것이지만, 그것은 항상 징계로 내려와 많은 플랫폼에서 테스트 할 수 있습니다.
  8. Windows의 Perl의 경우 Strawberry Perl을 확인하십시오.

C ++로 가십시오. 타이머, 스레딩, 오디오, SDL, WXWIDGETS는 Perl이 할 수있는 모든 일이지만 실제로는 뛰어나지 않습니다. 또한, par 또는 perl2exe는 분포를위한 클라크 메커니즘입니다. 그들은 작동하지만 이상적이지 않습니다. 한편, C ++ (그리고 나는 당신이 후원)은이 역할에 잘 맞습니다.

Perl을 사용하는 가장 큰 이유는 메타 프로그래밍입니다.

Perl은 코드를 작성하기 위해 코드를 작성할 수있을 정도로 유연합니다 (이것은 Moose가 마법을 수행하는 방식입니다). 시간을 절약하고 스쿼시에 필요한 버그 수를 줄입니다.

Perl을 사용하는 가장 큰 이유는 CPAN입니다.

PAR을 사용하여 Windows 용 Perl/TK 프로그램을 포장합니다. 약간의 충격이 걸렸지 만 효과가있었습니다.

C ++에서와 같이 적어도 Perl에서 경험이있는 경우 Perl의 개발이 더 빠릅니다. 그러나 동등한 프로그램의 런타임 속도는 느려집니다. 나머지 모든 기준은 어느 쪽이든 만족할 수 있으므로 개인적인 선택에 달려 있습니다.

몸소? 나는 이것에 너무 오랫동안 붙어 있지 않는다고 말합니다. 어느 쪽이든 진행의 장단점이 있지만 "분석 마비"에 갇혀있을 때 위험에 빠지는 것처럼 들립니다. 다른 것이 없다면, 동전을 뒤집거나 가장 예쁘다고 생각하는 것을 선택하십시오.

기능이 중요합니다.언어에 관계없이 코드는 비슷한 작업을 수행합니다. 특히 동일한 라이브러리와 구성 요소를 사용하는 경우 더욱 그렇습니다.라이브러리와 툴킷을 통해 정확한 기능을 구현하지 않은 경우 Perl로 프로토타입을 작성하세요.

동적 언어에서는 개발 시간이 덜 걸릴 것이라는 주장이 있습니다.Perl과 C++에는 올바른 위치에 드롭다운을 가져오고, 올바른 값으로 채우고, 사용자 입력에서 프로그램 상태를 적절하게 변경하는 데 유사한 문제가 있습니다.

Perl이 특정 플랫폼에서 제대로 작동하지 않으면 코드를 C++로 변환하세요.

이 접근 방식에 도움이 되는 몇 가지 지침이 있을 수 있습니다.

  1. 이는 아마도 OO Perl을 사용하여 프로토타입을 작성할 것임을 의미합니다.일단 하나의 플랫폼에 높은 수준의 기능을 구현했다면(Perl에서 그렇게까지 얻을 수 있다면) C++는 어느 정도 최적화된 것입니다.

  2. 아마도 프로토타입을 다소 C++의 동족으로 제한할 수도 있습니다.하지만 이것에 대해 잘 모르겠습니다. map 루프에 추가하거나 심지어 테스트 함수에 대한 함수 포인터로 호출되는 필터 함수로 대체할 수도 있습니다.

C ++에 핵심 기능을 작성한 다음 해당 플랫폼 (즉, Mac OS X 용 Cocoa, .NET/Delphi/MFC 등 문제의 플랫폼)에 응용 프로그램에 대한 프론트 엔드를 작성하십시오.

이것은 크로스 플랫폼 데스크탑 응용 프로그램을 개발하는 것이 선호하는 방법입니다. 물론, 나는 당신이 성취하려고하는 것에 대해 거의 알지 못하므로 너무 뚱뚱 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top