g++(MinGW) czy MS visual c++

0

Co lepiej używać do kompilacji c++ pod Windowsem, g++, czy może MS visual c++ prosiłbym o przedstawienie plusów, jak i minusów obu rozwiązań.

1

Zależy do czego.

Jeśli program ma być wieloplatformowy, i korzystać z przenośnych bibliotek (np. Qt) to zdecydowanie GCC.
(piszę GCC bo to jest nazwa kompilatora, g++ to tylko nazwa exeka).

plusy:
Masz lepszą, jeśli nie pełną, obsługę nowych standardów (C++11, C99, C11). Ten sam kompilator (z dokładnością do wersji) będziesz miał na wszelkich Linuksach i im podobnych, zmniejszając ryzyko że coś ci się nie chce kompilować. Lepsze wsparcie przez wiele przenośnych bibliotek.

minusy:
Gorsze IDE. Wybór niby masz (Eclipse, QtCreator, Code::Blocks), ale moim zdaniem wszystko jest daleko w tyle za Visualem, chociaz to też kwestia gustu.
Gorsze wsparcie samego Windowsa. Podstawowe nagłówki i libki do WinAPI są w pakiecie, ale już bardziej egzotycznych (czytaj: takich których nikomu się nie chciało wygenerować...) trzeba szukać, a jak nie ma to rzeźbić a w trudniejszych przypadkach dać sobie po prostu spokój.

Jeśli program ma być konkretnie pod Windowsa, napisany w WinAPI, to zdecydowanie Visual C++. Wszystkie nagłówki dostępne, nic z WinAPI nie brakuje, dobry Help.
Visual C++ zdecydowanie w tyle zostaje jeśli chodzi o standardy. Z wersji na wersję jest coraz lepiej, ale nawet 2013 nie będzie miał całego C++11, a pod względem C99 jest naprawdę marnie.

Jeśli się uczysz C++, pisząc programy konsolowe, też polecałbym VC++, ze względu na dobre IDE.

0

@Azarien thx
Pytanie, 2: co jest częściej używane w zwykłych firmach/dużych korporacjach (np. Google) IDE (np. VS) czy bardziej edytory z dużą możliwością dostosowania do użytkownika (np. vim - btw słyszałem, że jest to jedno z lepszych narzędzi używanych przez programistów).

0
  1. Google wspiera Eclipse. Do niego powstają różne (nawet niepubliczne) dodatki, czy pluginy i pod tym względem jest najlepszym darmowym IDE obsługującym wiele języków (Java, C++, Python). Można zaobserwować też taką tendencję w firmach, że jest duże parcie na C#, więc wtedy są zmuszeni używać Visual Studio.

Prawda jest taka, że wiele zależy też od programisty, i jeśli to czego używasz nie komplikuje pracy innych, to nie ma przeciwwskazań, żebyś sobie pisał np. kod HTML/PHP itp. w Vimie i commitował swoje zmiany.

4

vim - btw słyszałem, że jest to jedno z lepszych narzędzi używanych przez programistów
Jeśli zamiast programować wolisz uczyć się obsługi vima... ;-)

0

Pytanie, 3: co lepiej używać do tworzenia programów w trybie graficznym (tzw. Okienkowych(pod windowsem)), WinAPI, czy może, jaką bibliotekę graficzną np. QT, GTK+

2

Zależy, czy wolisz mniejszy rozmiar i zabawę w "działa na XP, nie działa na siódemce" (wtedy WinAPI) czy też chcesz pisać prosto, szybko i mieć ładne aplikacje (QT lub GTK+).

0
WorseisBetter napisał(a):

Pytanie, 3: co lepiej używać do tworzenia programów w trybie graficznym (tzw. Okienkowych(pod windowsem)), WinAPI, czy może, jaką bibliotekę graficzną np. QT, GTK+

WinAPI - jeśli rajcuje Cię że potrafisz przesłać komunikat z kontrolki A do kontrolki B i zaimplementujesz to w mniej niż pół dnia (najniższy poziom abstrakcji, pracochłonne)
Qt - wieloplatformowe i darmowe, do tego popularne (dostępne solucje) i dostępny dodatkowy poziom abstrakcji - QML (CSS + JavaScript), chyba łatwo robi się efekty graficzne
GTK+ - jeśli programujesz na Linux, na innych systemach będzie raczej nieciekawie wyglądać
wxWidgets / wxFormBuilder - wieloplatformowe i darmowe, wzorowane na MFC, wygląd natywny na Windows i Linux
MFC - jeśli programujesz tylko dla Windows i masz kasę na Visual Studio Pro

oraz warto rozważyć:

C# / Visual Studio Express - podstawowe, darmowe środowisko do GUI dla Windows (można łączyć z C++)
Java Swing / Netbeans - przenośne, darmowe środowisko dla aplikacji GUI / desktop, można łączyć z C++
Python:

  • wxPython - darmowe środowisko GUI dla Pythona, można łączyć z C++, bazuje na wxWidgets
  • PySide - darmowe środowisko GUI dla Pythona, można łączyć z C++, bazuje na Qt
  • PyQt - niekoniecznie darmowe (GPL/commercial = 420 GBP) środowisko GUI dla Pythona, można łączyć z C++, bazuje na Qt
0

Krótka odpowiedź: lepiej używać bibliotek.

Długa odpowiedź: w Qt czy GTK+ napiszesz program tak 5x szybciej. Będzie to kosztem rozmiaru programu (te biblioteki zajmują grube megabajty), w pewnym stopniu wyglądu (nie zawsze wygląd aplikacji będzie do końca natywny dla systemu), i gorszej integracji z systemem operacyjnym (pewne rzeczy można zrobić tylko w WinAPI, choć często wystarczy tylko wstawka WinAPI w programie używającym innej biblioteki).

WinAPI jest dosyć niskopoziomowe. Trudno je zrozumieć, ma mnóstwo osobliwości, i jeszcze trudniej jest napisać kod obiektowo i czytelnie.

Ja obecnie jestem na etapie zgłębiania się w WinAPI, ale nie jest to coś, co bym polecał na początek.

0

zalety g++:
-bardziej zgodny ze standardem
-zawsze można łatwo zupgradewać do nowszej wersji(stabilniejszej). W przypadku visuala kompilator jest już dość mocno zintegrowany z IDE więc chyba się go nie da zakatualizować do nowszej wersji(mam na myśli sam kompilator) ,ale tego nie jestem pewien.

0

Jeżeli mowa o bibliotekach GUI dla c++ to nie rozumiem dlaczego kompletnie pomijany jest c++ builder, jeżeli interesuje nas tylko windows to warto przemyśleć, pisałem jakieś małe rzeczy w 6stce i bardzo wygodnie to szło, a ostatnio czytałem trochę o nowych wersjach XE, widziałem kilka stron oferujących pakiety bardzo ciekawych kontrolek, trafiłem też na kilka ofert pracy w których znajomość buildera była wymagana...

edit:: przegrywa z QT, wx, Gtk+ pod tym względem że jest płatne...

0

Jeżeli mowa o bibliotekach GUI dla c++ to nie rozumiem dlaczego kompletnie pomijany jest c++ builder

Bo nikt go nie używa? ;-)
C++ Builder przestał się liczyć tak gdzieś właśnie po wersji 6.

edit:: przegrywa z QT, wx, Gtk+ pod tym względem że jest płatne...

Płatne słono. Bardzo słono. Wersji darmowej w tej chwili absolutnie brak, jest tylko trial.
Na dodatek „najtańsze” (i wcale nie takie tanie…) wersje płatne są drastycznie okastrowane.

Podam inny przykład kompilatora, który przestał się liczyć: Watcom. W latach 90-tych to był "jedynie słuszny" kompilator C++. A był płatny.
Dziś jest open source, a nikt o nim nie słyszał. Ostatni release był ze 3 lata temu, choć w repozytorium zdarza się średnio jeden commit na miesiąc.

Nie znam konkretnych technicznych argumentów przeciw C++ Builderowi. Ostatnia wersja jaką na oczy widziałem (i to krótko) to było coś koło 2006...

0
Azarien napisał(a):

Nie znam konkretnych technicznych argumentów przeciw C++ Builderowi. Ostatnia wersja jaką na oczy widziałem (i to krótko) to było coś koło 2006...

Bardzo chciałbym żyć w świecie w którym C++ Builder ma się dobrze i jest powszechnie używany.

Ale aktualnie:

  • w najuboższej wersji i tak jest drogi (w porównaniu do darmowego Code::Blocks, Eclipse CDT, Visual Studio Express, Qt Creator, Netbeans)
  • autorzy kontrolek są na wymarciu
  • ofert pracy brak
  • ma mocną konkurencję w postaci Netbeans / Java i Visual Studio / C#

Nigdy zawodowo nie pracowałem w BCB, znam tylko Delphi, ale gdybym miał wybierać między najnowszym kompilatorem C++ łączonym chociażby z mordą zrobioną w Lazarus a starym kompilatorem BCB i przestarzałymi kontrolkami (patrz Vista Alt Fix), to wybieram to pierwsze.

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