PDA

View Full Version : Python e C#


gabmac2
13-08-2017, 18:54
IronPython è l' unico strumento per far "dialogare" C# e Python?
E' efficiente?
Grazie in anticipo

fano
14-08-2017, 16:31
Credo che sia il modo più efficiente di sicuro per far dialogare Python e C# verso che girerebbero ambedue dentro il .Net Execution Engine... altri metodi dovrebbero usare pipe o altre schifezze per far comunicare i 2 mondi quindi...

gabmac2
14-08-2017, 18:06
infatti,
è efficiente sia per richiamare C# da Python, sia viceversa?

fano
14-08-2017, 18:35
Personalmente non ho mai provato, ma sembra molto semplice:
http://ironpython.net/documentation/dotnet/

pabloski
16-08-2017, 12:08
infatti,
è efficiente sia per richiamare C# da Python, sia viceversa?

Non e' che vai a chiamare C# da Python o viceversa. Semmai accedi ad oggetti CLR. Ed entrambi lo fanno nativamente, senza aggiunte o voodoo vari.

Ovviamente gli elementi pubblici sono accessibili dall'esterno, non quelli privati.

Quello che mi preoccupa e' invece, almeno a quanto ho letto e in base a vari benchmark, che Ironpython sia un brocco in quanto a prestazioni.

Se le cose stanno veramente cosi'

https://pybenchmarks.org/u64q/benchmark.php?test=all&lang=ipy&lang2=python&data=u64q

http://strangelights.com/blog/archive/2007/06/17/1588.aspx

allora tanto vale usare CPython o al limite Pypy

Considera che esistono dei binding Python per .NET http://pythonnet.github.io/

Mursey
16-08-2017, 14:23
Quale è lo scopo ?
Perchè tanto vale fare tutto con lo stesso linguaggio...

gabmac2
16-08-2017, 14:39
con ogni probabilità è meglio andare su C#

pabloski
16-08-2017, 17:41
con ogni probabilità è meglio andare su C#

E' come dice Mursey: "qual e' lo scopo?". La tecnologia si sceglie in base al progetto da realizzare.

Se qualcuno viene da me e mi chiede di realizzargli un bot per il trading, di sicuro usero' Haskell.

Ma se quel qualcuno mi chiede di realizzargli un gestionale Windows, la scelta migliore e' probabilmente C# + WPF ( quindi .NET ). Se quel qualcuno mi chiede che l'applicazione giri pure su Mac, con tutta probabilita' optero' per QT ( in accoppiata con C++ o magari Python ).

gabmac2
16-08-2017, 18:18
condivido pienamente, QT se si deve fare per Mac, Windows (e direi anche Linux)
invece l' unico per app mobile discreto è Xamarin, almeno con C# si "recupera" codice
dovendo girare su tutto.....

pabloski
17-08-2017, 09:15
condivido pienamente, QT se si deve fare per Mac, Windows (e direi anche Linux)


Ad essere pignoli c'e' anche Electron. Considerando gli sviluppi delle VM Javascript, non e' una soluzione da scartare a priori. Certo se venisse strippato delle schifezze inutili contenute in Chromium sarebbe meglio. Ma c'e' un team di Mozilla che sta lavorando su un'alternativa basata su Servo.


invece l' unico per app mobile discreto è Xamarin, almeno con C# si "recupera" codice
dovendo girare su tutto.....

Beh, per quanto non ami Javascript, ci sarebbero pure React Native e NativeScript. E vale il discorso di sopra, cioe' che lato Javascript le cose sono migliorate negli ultimi anni.

gabmac2
17-08-2017, 11:32
considero Javascript utile per interazione utente-pagina web
per cose più approfondite meglio altro.....
tra Gtk e Qt qual' è meglio con C# per multipiattaforma?

pabloski
17-08-2017, 11:48
considero Javascript utile per interazione utente-pagina web
per cose più approfondite meglio altro.....


Non dovresti scartarlo a priori. Electron e' un discreto strumento per realizzare applicazioni desktop multipiattaforma. Ha tutto cio' che c'e' di moderno in giro, compreso un dsl dichiarativo per l'interfaccia grafica.

V8 ( il motore javascript ) offre prestazioni di riguardo ed eventuali operazioni pesantemente cpu-bound possono essere implementate in C o altro tramite i moduli Nodejs.

Tanto per fare un esempio, quest'applicazione e' realizzata con Electron https://etcher.io/

Oppure il famosissimo client Slack e' realizzato pure lui con Electron.

E per citarne due proprie famose, Atom ( l'editor di Github ) e Visual Studio Code.


tra Gtk e Qt qual' è meglio con C# per multipiattaforma?

WPF :D

scherzi a parte, provai a compilare gtk per windows e fini' con un niente di fatto

almeno qt per windows esiste gia' compilato

ma veramente ha poco senso usare un linguaggio .net per poi usare un toolkit grafico di terze parti

perdi un mucchio di cose che wpf offre, in primis il data-binding ( che ritrovi invece in strumenti tipo angular )

gabmac2
17-08-2017, 14:24
quindi meglio Xamarin che dovrebbe creare apk e ipa per il mobile
per desktop, Python e QT
solitamente com' è meglio distribuire applicazioni in Python?

pabloski
17-08-2017, 15:59
quindi meglio Xamarin che dovrebbe creare apk e ipa per il mobile

pure qt riesce a creare i pacchetti

e pure react native

e lui puoi usare davvero per scrivere l'applicazione una sola volta, condividendo pure il codice per la gui

winforms non fa testo, seriamente, al massimo per qualche app gestionale


per desktop, Python e QT


una possibile soluzione, oltre a quelle che ho citato sopra

ci sarebbe in verita' pure delphi che e' cross-platform pure lui ed esiste un'implementazione open chiamata free pascal


solitamente com' è meglio distribuire applicazioni in Python?

freezate ovviamente, sempre che le dipendenze non creino problemi

pabloski
17-08-2017, 16:03
Magari mi sbaglio. Mai usato C#. Ma questa non e' una distribuzione binaria delle GTK# per windows? http://www.mono-project.com/download/#download-win

se ricordo bene, quelli sono solo i bindings, ma bisogna installare pure gtk+ per poterci programmare

gabmac2
17-08-2017, 16:48
Python e QT si possono creare apk e ipa?

pabloski
18-08-2017, 09:11
Python e QT si possono creare apk e ipa?

https://pypi.python.org/pypi/pyqtdeploy/1.3.1

Non so quanto bene funzioni pero'. La mia risposta era relativa a Qt/C++, cioe' utilizzando gil strumenti di default di Qtcreator.

gabmac2
18-08-2017, 11:00
infatti, mi sembrava strano, purtroppo

gabmac2
18-08-2017, 14:21
piccolo OT,
su C#, qual' è la versione gratuita più completa di Visual Studio? (ho sempre usato Mono)

Mursey
18-08-2017, 16:15
piccolo OT,
su C#, qual' è la versione gratuita più completa di Visual Studio? (ho sempre usato Mono)

Direi https://www.visualstudio.com/it/vs/community/

pabloski
18-08-2017, 17:02
piccolo OT,
su C#, qual' è la versione gratuita più completa di Visual Studio? (ho sempre usato Mono)

Express e' l'unica versione gratuita di Visual Studio.

gabmac2
18-08-2017, 17:47
e poi installare Xamarin da esso?

fano
19-08-2017, 14:39
Si chiama Visual Studio Community non più Express!
Sì puoi farci praticamente tutte (NON per scopi commerciali) compreso Xamarin...

gabmac2
19-08-2017, 14:53
ultimissima cosa, Groovy sta a Java come X sta a C++
esiste un qualche X, simile a qualcosa di scripting?

gabmac2
19-08-2017, 15:45
Groovy può essere usato "al posto" di Java, integrandosi bene
c' è qualcosa di analogo per C++?

pabloski
19-08-2017, 18:33
Groovy può essere usato "al posto" di Java, integrandosi bene


Non confondere linguaggi con VM. Groovy, Xtend, Java, Kotlin e altri generano codice per la VM Java. Dunque sono TUTTI in grado di accedere a TUTTE le classi Java, nello stesso identico modo.

Sidenote: Boo e' un'equivalente .NET di Groovy, sintassi pitonesca e altre chicche "moderne"


c' è qualcosa di analogo per C++?

E' possibile usare librerie C++ da altri linguaggi, PyQT e PySide lo fanno ad esempio! Esistono vari progetti a riguardo ( SWIG e' famoso ). Comunque l'unico linguaggio ad offrire una sorta di interoperabilita' nativa con C++ e' ( come scritto da Bellaz89 ) D.

Le librerie ( se si vuole siano usabili da altri linguaggi ) vanno scritte in C e in C++ usando gli appositi strumenti sintattici messi a disposizione dal linguaggio ( extern "C" ).

ingframin
20-08-2017, 19:54
2 pagine di thread, ancora non sappiamo che cosa gabmac2 deve fare...
Senza sapere qual è lo scopo, sono due pagine di parole al vento.

gabmac2
21-08-2017, 07:34
la domanda era riferita alla possibilità di utilizzare in maniera efficiente C# da Python

pabloski
21-08-2017, 09:28
la domanda era riferita alla possibilità di utilizzare in maniera efficiente C# da Python

Domanda mal posta. Non e' C# che vai ad usare ma le cose che produce, che nel caso di .NET sono oggetti CLR. IronPython puo' farlo perche' e' un linguaggio .NET, altri linguaggi possono farlo con apposito supporto. PythonNet si chiama.

ingframin
23-08-2017, 14:25
gabmac2:

- Se vuoi scrivere un'app in C# usa Xamarin.

- Se vuoi scrivere un'app in Python usa Kivy.

- Se vuoi un'app multipiattaforma senza troppi sbattimenti usa Apache Cordova (e buona fortuna con javascript e le performance).

Se vuoi un'app fatta bene, smettila di aprire questi thread sul forum e mettiti a studiare.

pabloski
27-08-2017, 11:03
Se vuoi un'app fatta bene, smettila di aprire questi thread sul forum e mettiti a studiare.

Non essere cattivo :D

Comunque anche a me e' venuta la scimmia di sapere che obiettivo si prefigge esattamente gabmac2.