mingw vs msvc

0

Witam.
Piszę sobie całkiem obszerną aplikację do zarządzania firmą. Wybrałem bibliotekę QT, by w przyszłości móc ją zaoferować na inne systemy. Aplikacja korzysta z różnych bibliotek np. openssl, sqlite, sqlcipher, gsoap, i składa się z wtyczek, które mogą np. obsługiwać bazy danych klientów, łączyć się z bankiem, zarządzać fakturami.
Staram się pisać ją w sposób profesjonalny tj. stosować wszelkie dobre praktyki związane z programowaniem obiektowym, trzymać się wzorców projektowych, przejrzystości kodu itp.

Moje obawy dotyczą kompilatora jakiego powinienem użyć pod Windows programując w QT. Mianowicie nie wiem czy użyć MSVC 2010 czy gcc (MinGW). Aplikacja ma być później sprzedawana innym firmom i nie wiem czy gcc pod windows to będzie dobry wybór . . . Czy ktoś mógłby się wypowiedzieć, porównać ....

Dzięki z góry i pozdrawiam .

2

Jeśli twój zleceniodawca (o ile jest) nie naciska na jakieś mocne integracje z flakami Windowsa to spokojnie można obejść się z GCC. Nie musisz przecież używać czegokolwiek Windows-only, żeby program działał dobrze. Jest przecież mnóstwo przenośnych programów o świetnej funkcjonalności, więc i twój może taki być.

ATSD:
Nie zastanawiałeś się nad wybraniem platformy Java (tzn niekoniecznie język Java, są też inne popularne języki na JVM)? Do aplikacji typowo biznesowych Java nadaje się dużo bardziej niż C++.

0

Nie ukrywam że kierowałem się szybkością działania i prostotą we wdrażaniu, bez instalowania czegokolwiek innego, tylko app + dllki. Chociaż nie ukrywam że wiele rzeczy miałbym podane na tacy, jak np. SOAP albo kryptografię...

1

Czego dokładnie używasz z gsoap? Niektóre elementy są tylko pod GPL v2, co może utrudnić sprzedawanie twojej aplikacji różnym firmom (jak nie kupisz na to innej licencji). Dodatkowo mam nadzieje, że nie zaszalałeś z domową kryptografią (tzn. wszystko, co nie jest prostym wrapperem do zewnętrznej biblioteki, może być podatne na atak). Jeżeli twoja aplikacja kompiluje się na obydwu kompilatorach, to ja bym wybrał msvc, testując używając także gcc. Mimo bycia zwolennikiem Linuksa, to muszę przyznać, że Microsoft ma najlepsze narzędzia programistyczne do C++.

Poza tym, nie wiem czy akurat wydajność jest najważniejszą rzeczą w aplikacji biznesowej (szczególnie jeżeli większość pracy programu to czekanie na zewnętrzną bazę danych, czy nawet zewnętrzny serwer), zwróciłbym uwagę bardziej na bezpieczeństwo, dostępność bibliotek czy łatwość modyfikowania (ale na to już za późno). Zawsze trudne obliczeniowo zadania można oddelegować do własnoręcznie napisanej natywnej biblioteki.

0

Wtyczka obsługująca SOAP za pomocą gSOAP jest napisana na GPL (udostępniam kod samej wtyczki), także wykorzystuję bibliotekę legalnie... Co do kompilacji, to na msvc mam problem z sqlcipher, ale myślę że jakoś sobie poradzę. Co do aplikacji, zależy również na szybkości działania samego interfejsu użytkownika i minimalnego obciążenia kompa, dlatego boje się wszelkich jvm czy net frameworków . Chociaż ta kwestia tak naprawdę jeszcze nie jest całkiem zamknięta. . .

0

Mianowicie nie wiem czy użyć MSVC 2010 czy gcc (MinGW).
Od strony technicznej na jedno wychodzi.
Bardziej się zastanów nad IDE: czy wolisz Visual Studio, czy Qt Creator? Bo do tego różnica się właściwie sprowadza.

Qt Creator ma lepszą integrację z Qt (co zrozumiałe), ale to środowisko jest… inne, co nie każdemu się podoba.

Jeśli jednak piszesz w Notatniku i odpalasz make, to i ta różnica tobie znika..

0

Korzystam z QtCreator.

0

Wątpię czy możesz używać pluginu GPL w programie nie GPL bez wyjątku w licencji, a nie możesz tego wyjątku dodać, ze względu na licencję gSOAP. Gdyby to było możliwe, to GPL nie miałoby za dużego sensu, bo każdą bibliotekę można by użyć jako plugin.

JVM, czy .net poza uruchomieniem nie są takie wolne. W przypadku aplikacji biznesowej nie masz dużego obciążenia procesora i aplikacja napisana powiedzmy w C# będzie pod względem szybkości nierozróżnialna od tej napisanej w C++. C++ ma swoje miejsce trochę niżej w hierarchii abstrakcji, twój program nie będzie działał na farmie serwerowej, gdzie dwukrotna różnica szybkości może spowodować duże oszczędności, lub na komórce, tylko na normalnym komputerze, która przez 95 % czasu nie będzie nic robi. Jak gdzieś będzie problem z wydajnością, to prędzej na IO.

0

GPL wymaga, żeby cały program był wydany na GPL.
LGPL wymaga tego samego, chyba, że dołączymy program LGPLowy jako wtyczkę (czyli coś co można dowolnie podmienić już w wersji skompilowanej programu) i opublikujemy wszelkie zmiany do kodu LGPLowego.

W przypadku gSOAP jednak jest więcej opcji niż GPL albo licencja płatna:

The gSOAP Public License
The gSOAP Public License 1.3 is based on MPL1.1 (Mozilla Public License 1.1).

The license allows for commercial and non-commercial use of limited parts of gSOAP without fees or royalties. It also allows products to be built on top and distributed under any license (including commercial). Products developed with gSOAP should include a notice of copyright and a disclaimer of warranty in the product's documentation (License Exhibit B).

The gSOAP public license requires modifications that are distributed as part of an open source product based on gSOAP to be submitted back to us.

Note that the soapcpp2 and wsdl2h tools, UDDI code, Web server, and sample applications are NOT covered by the gSOAP public license. These are offered under a choice of GPL or commercial licensing.

A Java raczej nie stworzy żadnych problemów. Nawet ktoś z kontem gościa może sobie zainstalować Javę na komputerze (jestem prawie pewien, że .NETa nie da się tak zainstalować) i odpalić program Javowy.

Jeśli program stałby się hitem i zacząłbyś go masowo sprzedawać to mógłbyś się nawet wtedy pokusić o licencję na http://www.excelsior-usa.com/store/jet.html który kompiluje Javowe programy do samodzielnych exeków i pakuje je w instalatory. Ale myślę, że to raczej nie będzie potrzebne.

0

Jednak będę się upierał przy tym, że projektując wtyczkę w odpowiedni sposób, mogę uniknąć publikowania kodu głównej aplikacji. . . Zresztą pisze o tym na stronie www.gnu.org .

1 użytkowników online, w tym zalogowanych: 0, gości: 1