7

Ho alcuni anni di esperienza nella scrittura di strumenti da riga di comando Unix (nessuna esperienza GUI) in python, C e C++ e solo recentemente attraversato nel mondo GUI (solo Cocoa e IOS) . Ho imparato un po 'di obiettivi-C e sto arrivando a capire come funziona il cacao MVC. Tuttavia, una delle app che sto sviluppando ha bisogno di una versione per Windows e mi chiedevo quale sarebbe stato un buon punto di partenza se non avessi assolutamente nessuna esperienza di sviluppo di Windows.MS Windows Consigli di programmazione per sviluppatori Mac/Unix

Stavo pensando di utilizzare Visual C++ 2010 Express come piattaforma di sviluppo (perché è gratuito e perché non ho bisogno di imparare C++). La mia applicazione è relativamente semplice, avrà solo due finestre e passerà la maggior parte del tempo in esecuzione in background. Dovrà comunque comunicare con il sistema operativo (load dll's etc) e un server online (metodi HTTP) e non sono sicuro che l'edizione di Visual C++ Express mi dia accesso alle API richieste. Un'applicazione Windows Form sarebbe sufficiente? Sto andando su questo nel modo sbagliato? Devo imparare C#? Qualsiasi consiglio sarà apprezzato.

risposta

3

Se sei già soddisfatto del C++ corretto, Visual Studio C++ dovrebbe essere adatto a te. Dato che non stai facendo una GUI complicata, non hai nemmeno bisogno di immergerti nel codice gestito - C++ Express ti permette di creare app di console e GUI adeguate. Inoltre non è necessario installare la piattaforma SDK - fa parte di VS C++ Express.

Non essendo gestito C++, sarete in grado di condividere file sorgente tra i vari progetti. gestito in C++, nonostante il C++ nel nome, è davvero un linguaggio abbastanza diverso con cui sarà noioso lavorare se si ha a che fare contemporaneamente con iso C++.

-

Nota: L'API di Windows nativo è un'API C, non un quadro C++. Quindi non fornisce un ricco insieme di classi in un quadro coerente da affrontare. D'altra parte, mentre, in grande, è in realtà abbastanza semplice da lavorare.

Inoltre: dato che si ha già familiarità con lo sviluppo Mac, esiste un pacchetto LGPL (iirc) chiamato CFLite che si basa su Windows e che implementa l'API C che si trova sotto l'API Cocoa Objective-C.

Se si utilizzano le sue abstratcions è possibile condividere una parte più ampia del codice tra Windows e Mac (e altre piattaforme).

dell'Altro C++ IDE si potrebbe prendere in considerazione:

  • Code :: Blocks
  • Qt Creator

entrambi i quali può essere configurato per utilizzare la porta MINGW di GCC alle finestre.

+0

Sono combattuto tra Python e C++ ma siccome sono più a mio agio con C++ proverò VS C++ per questa applicazione. Grazie! – CodeWombat

2

starai meglio con C++ di C# se ti serve più materiale "di basso livello". Il caricamento di dll (cioè libs) è semplice (pragma comment lib ...), come pure il trasferimento e la comunicazione HTTP.

Quindi, VC++ con Windows form sarà sufficiente ed è "molto C++".

Si ha accesso a tutte le API globali e il caricamento di apis specifici come http richiede solo due righe: una per includere l'intestazione del wininet e altre lib (le librerie sono in realtà "riferimenti" alle DLL).

1

Se si utilizza la modalità C++ Express, è necessario installare Windows SDK separatamente e configurarlo per Visual Studio per l'utilizzo. E non puoi usare MFC.

Vorrei tuttavia suggerire C#, perché è come mettere insieme mattoncini giocattolo. Più facile il debug e la manutenzione. Il problema con C# è che ha così tante funzioni di libreria che non puoi sapere se ciò che vuoi è già stato creato per una funzione. Ma è per questo che siamo qui :-) Se senti che qualcosa che vuoi fare dovrebbe esistere, allora fai una domanda al riguardo. Una caratteristica notevole che manca a C# è l'archivio zip (ha qualcosa di simile, ma non del tutto). Per le cerniere è possibile utilizzare librerie pubbliche, ad esempio SharpZipLib o DotNetZip.

+0

È l'unico lato negativo di utilizzare C++ Express mettendo insieme i pezzi? Ci sono dei vantaggi nell'usare C# .Net vs C++ .Net? – CodeWombat

+0

C# è di un ordine di grandezza più facile da usare che C++. Non so di C++. NET, non ho mai usato quella combinazione, non mi sembra naturale. – Dialecticus

+1

WinForms e C++ non sono esattamente BFF. La maggior parte degli sviluppatori eseguono l'interfaccia utente della propria applicazione in C# e utilizzano C++ per i metodi logici. Se stai cercando di replicare veramente l'esperienza di XCode/Interface Builder senza utilizzare una soluzione multipiattaforma, C# e WinForms sono davvero la soluzione migliore. È dubbio che un veterano programmatore Objective-C sarà tutt'altro che colpito dall'estensività delle librerie integrate dopo alcuni giorni di codifica in C#. –

0

hai considerato l'approccio ad Adobe AIR? consente di eseguire l'implementazione su Mac, Linux, Windows, iOS, ecc. comunicare e avviare processi nativi è stato possibile dal 2.0 e l'ultimo SDK 2.5 può essere indirizzato a sistemi operativi e TV Android. con la tua esperienza dovresti essere in grado di riprendere ActionScript3/MXML in pochissimo tempo.

Inoltre, esistono una serie di IDE gratuiti che è possibile utilizzare con gli SDK Flex e AIR. o, se sei uno studente o un basso reddito sviluppatore, è possibile ottenere una copia gratuita di Flash Builder 4 di Adobe: http://www.adobe.com/devnet-archive/flex/free/


edit: credo la distribuzione di applicazioni AIR su iPhone richiede Flash Professional CS5, che include il packager per le opzioni di iPhone. allo stesso tempo, ho letto che AIR e altri cross-compilatori per iOS sono dolorosamente lenti, quindi è forse meglio svilupparli in modo nativo in Objective-C per iOS.

+0

Ho considerato lo sviluppo multipiattaforma (Qt, wxWidgets, ecc.), Ma perché questa applicazione è così piccola (ci sono voluti un paio di mesi (2-3 ore/settimana) per sviluppare la versione Mac senza alcuna esperienza Objective C precedente Ho deciso che sarebbe probabilmente più veloce scriverlo usando un IDE di Windows in una lingua in cui mi trovo già a mio agio (in questo caso C++). Potrei considerare Adobe AIR una volta entrato nello sviluppo multipiattaforma. – CodeWombat

1

Se fossi in te, non vorrei passare a un'intera nuova API così rapidamente. Hai preso in considerazione l'utilizzo di Python su Windows? La maggior parte dei pacchetti Python che ho visto sono disponibili anche per Windows, quindi ti sentirai a casa. E se hai bisogno di una GUI, puoi optare per wxPython, pyGTK o qualcosa di simile.

Per le cose specifiche di Windows, è sempre possibile utilizzare i tipi. Soprattutto se sono semplici come caricare una DLL.

+0

Ho pensato di usare Python. Infatti, quando ho avviato la versione Mac dell'app, stavo usando Py-ObjC, ma ho rapidamente eliminato il codice Python e l'ho scritto in puro Obj-C perché è risultato essere più semplice - c'è una classe per quasi tutto nell'API Cocoa e per ciò che dovevo fare, Py-ObjC stava diventando hacker. Il motivo per cui sto pensando a Windows forms/C++ è perché sto cercando di disegnare un parallelismo con l'esperienza di Interface Builder/Xcode. – CodeWombat

+0

Il parallelo nel mondo Windows è C#. Non è difficile da imparare, ma se conosci già Python e probabilmente hai già del codice che implementa alcune delle cose che ti servono nell'applicazione Windows, perché passare a C#? – kichik

+1

Hai un punto valido, ci sono dei limiti in cui mi troverei a dover eseguire chiamate API di Windows se avessi scelto di scrivere l'applicazione in Python? – CodeWombat

Problemi correlati