7

Mam kilka lat doświadczenia w pisaniu narzędzi wiersza poleceń Unix (bez interfejsu graficznego) w python, C i C++, a dopiero niedawno wkroczyłem w świat GUI (tylko Cocoa i IOS) . Nauczyłem się trochę obiektywnego C i rozumiem, jak działa kakao MVC. Jednak jedna z aplikacji, którą tworzę, potrzebuje wersji dla systemu Windows i zastanawiałem się, jakie dobre miejsce do rozpoczęcia będzie mieć, że nie mam absolutnie żadnego doświadczenia z programowaniem Windows.MS Windows Porady dotyczące programowania dla programistów komputerów Mac/Unix

Myślałem o używaniu Visual C++ 2010 Express jako mojej platformy programistycznej (ponieważ jest darmowa i nie muszę uczyć się C++). Moja aplikacja jest stosunkowo prosta, będzie miała tylko dwa okna i spędzać większość czasu w tle. Będzie jednak potrzebował komunikować się z systemem operacyjnym (load dll itp.) I serwerem online (metody HTTP) i nie jestem pewien, czy edycja Visual C++ Express daje mi dostęp do wymaganych API. Czy wystarczy aplikacja Windows Forms? Czy podchodzę do tego w niewłaściwy sposób? Czy muszę nauczyć się C#? Wszelkie porady będą mile widziane.

Odpowiedz

3

Jeśli jesteś już zadowolony z właściwego C++, Visual Studio C++ express powinno ci pasować. Biorąc pod uwagę, że nie tworzysz skomplikowanego GUI, nie musisz nawet zanurzać się w zarządzanym kodzie - C++ express pozwala ci tworzyć odpowiednie aplikacje w konsoli C++ i GUI. Nie musisz także instalować platformy SDK - jest to część ekspresowego VS C++.

Brak zarządzania C++, będziesz mógł udostępniać pliki źródłowe między różnymi projektami. managed C++, pomimo C++ w nazwie, naprawdę jest wystarczająco innym językiem, z którym będzie irytująco pracować, jeśli jednocześnie będziesz musiał radzić sobie z iso C++.

-

Uwaga: natywny Windows API to API C, a nie C++ framework. Nie zapewnia więc bogatego zestawu klas w spójną strukturę do radzenia sobie. Z drugiej strony, podczas gdy jest duży, jest naprawdę prosty w obsłudze.

Ponadto: biorąc pod uwagę, że znasz już programowanie na komputerach Mac, istnieje pakiet LGPL (iirc) o nazwie CFLite, który jest budowany na systemie Windows i który implementuje aplik C, który stanowi interfejs API kakao Objective-C.

Jeśli używasz jego abstracji, możesz udostępnić większą część kodu między oknami i komputerem Mac (i innymi platformami).

Inne C++ IDE może warto rozważyć:

  • Code :: Blocks
  • QT Creator

z których oba mogą być skonfigurowane do korzystania z portu MinGW GCC do okien.

+0

Jestem rozdarty między Python i C++, ale ponieważ jestem bardziej komfortowy z C++, wypróbuję VS C++ dla tej aplikacji. Dzięki! – CodeWombat

2

lepiej Ci będzie z C++ niż C#, jeśli potrzebujesz więcej rzeczy "niskiego poziomu". Ładowanie bibliotek dll (to jest, libs) jest proste (pragma comment lib ...), podobnie jak czysty transfer HTTP i komunikacja.

Tak więc, VC++ z formą okna będzie wystarczające, i jest "bardzo C++".

Masz dostęp do wszystkich globalnych interfejsów API, a ładowanie konkretnych plików APIS, takich jak http, wymaga tylko dwóch linii: jedna zawiera nagłówek wininet, a inna biblioteka lib (biblioteki są w rzeczywistości "odniesieniami" do bibliotek dll).

1

Jeśli przejdziesz w C++ Express, musisz zainstalować Windows SDK osobno i skonfigurować go do Visual Studio, aby z niego korzystać. I nie możesz używać MFC.

Chciałbym jednak zasugerować C#, ponieważ wydaje się, jak umieszczenie małych klocków razem. Łatwiejsze debugowanie i konserwacja. Problem z C# polega na tym, że ma tyle funkcji bibliotecznych, że nie możesz wiedzieć, czy to, co chcesz, zostało już wykonane w funkcji. Ale właśnie dlatego jesteśmy tutaj :-) Jeśli uważasz, że coś, co chcesz zrobić, powinno już istnieć, zadaj pytanie na jego temat. Jedną z ważniejszych funkcji, której brakuje w C#, są archiwa zip (ma coś podobnego, ale nie całkiem). W przypadku zamków można korzystać z bibliotek publicznych, takich jak SharpZipLib lub DotNetZip.

+0

Czy jedyną wadą używania C++ Express jest łączenie elementów? Czy są jakieś zalety używania C# .Net vs C++ .Net? – CodeWombat

+0

C# jest o rząd wielkości łatwiejszy w użyciu niż C++. Nie wiem o C++ .NET, nigdy nie korzystałem z tego combo, to nie wydaje mi się naturalne. – Dialecticus

+1

WinForm i C++ nie są dokładnie BFF. Większość programistów używa końcówki interfejsu użytkownika w języku C# i używa C++ dla metod logicznych. Jeśli szukasz naprawdę replikować doświadczenie XCode/Interface Builder bez stosowania rozwiązania wieloplatformowego, C# i WinForms są naprawdę najlepszym rozwiązaniem. Wątpliwe jest, by doświadczony programista Objective-C był pod dużym wrażeniem rozległości wbudowanych bibliotek po kilku dniach kodowania w języku C#. –

0

Czy rozważałeś wzięcie pod uwagę Adobe AIR? umożliwia wdrażanie na komputerach Mac, Linux, Windows, iOS itp. Komunikacja z procesami natywnymi i uruchamianie ich jest możliwa od 2.0, a najnowszy pakiet SDK 2.5 może być kierowany na system operacyjny Android i telewizory. ze swoim doświadczeniem powinieneś być w stanie wybrać ActionScript3/MXML w mgnieniu oka. Ponadto można skorzystać z kilku darmowych IDE, których można używać z pakietami Flex i AIR SDK. lub, jeśli jesteś studentem lub niskich dochodach dewelopera, można uzyskać bezpłatną kopię Flash Builder 4 firmy Adobe: http://www.adobe.com/devnet-archive/flex/free/


EDIT: I wierzę wdrażania aplikacji AIR na iPhone wymaga Flash Professional CS5, który zawiera program pakujący dla opcji iPhone'a. jednocześnie czytałem, że kompilatory AIR i inne kompilatory krzyżowe dla systemu iOS są bolesnie wolne, więc najlepiej jest rozwijać je natywnie w Objective-C na iOS.

+0

Rozważyłem rozwój międzyplatformowy (Qt, wxWidgets, itp.), Ale ponieważ ta aplikacja jest tak mała (zajęło to kilka miesięcy (2-3 godz./Tydzień) opracowanie wersji Mac bez wcześniejszego doświadczenia z C) Zdecydowałem, że szybciej będzie napisać to przy użyciu IDE systemu Windows w języku, w którym już czuję się komfortowo (w tym przypadku C++). Mogę wziąć pod uwagę Adobe AIR, gdy tylko wejdę w rozwój wielu platform. – CodeWombat

1

Gdybym był tobą, nie skakałbym tak szybko na zupełnie nowe API. Czy rozważałeś użycie Pythona w systemie Windows? Większość pakietów Python, które widziałem, jest również dostępna dla systemu Windows, dzięki czemu poczujesz się jak w domu. A jeśli potrzebujesz jakiegoś GUI, możesz wybrać wxPython, pyGTK lub coś podobnego.

W przypadku określonych rzeczy w systemie Windows można zawsze używać ctypów. Zwłaszcza jeśli są tak proste, jak ładowanie biblioteki DLL.

+0

Myślałem o użyciu Pythona. W rzeczywistości, gdy zacząłem wersję Mac aplikacji, korzystałem z Py-ObjC, ale szybko pozbyłem się kodu Pythona i napisałem go w czystym Obj-C, ponieważ okazało się to łatwiejsze - jest klasa dla prawie wszystkiego w API Cocoa i za to, co musiałem zrobić, Py-ObjC stawało się hackowskie. Powodem, dla którego myślę, że Windows form/C++ jest, ponieważ próbuję narysować paralelę do doświadczenia z Interface Builder/Xcode. – CodeWombat

+0

Równolegle w świecie Windows jest C#. Nie jest trudno się nauczyć, ale jeśli znasz już Python i prawdopodobnie posiadasz kod, który już implementuje niektóre z rzeczy, których potrzebujesz w aplikacji Windows, dlaczego warto przenieść się do C#? – kichik

+1

Masz ważny punkt, czy są jakieś ograniczenia, na które napotkam podczas nawiązywania połączeń Windows API, jeśli zdecyduję się napisać aplikację w Pythonie? – CodeWombat