Posso usare Python con JavaScript come interfaccia utente?

4

Prima di tutto non sono un programmatore professionista, ma uno studente con un hobby di programmazione quindi mi dispiace se la mia domanda è stupida.

Voglio scrivere un motore di scacchi da utilizzare sul web e ho già iniziato a scriverlo in JavaScript. Dopo aver cercato in giro ho scoperto che JavaScript non è l'ideale per questa attività. Ho già scritto l'interfaccia utente in JavaScript e preferirei poterlo mantenere mentre riscrivevo la logica di gioco in python. È possibile?

    
posta Lasse Møldrup 11.09.2016 - 00:57
fonte

2 risposte

3

Come puoi vedere nei commenti python non risolverà tutti i tuoi problemi. Ma puoi usare librerie di terze parti.

Inoltre, è possibile utilizzare alcuni framework Web per creare un sito Web con l'interfaccia utente di script Java ma la logica di Python.

Il Flask ti sarà di ottimo aiuto.

    
risposta data 19.09.2016 - 19:53
fonte
1

Ci sono tre problemi distinti nella tua app.

  • Interfaccia utente. Se è basato sul web, è HTML + JavaScript o una lingua che compila in modo efficiente su JavaScript (ce ne sono alcuni). L'interfaccia utente probabilmente non è eccessivamente sofisticata (ad esempio, molto più semplice di Gmail), quindi puoi scegliere qualsiasi framework con cui ti trovi comodo.

  • Una parte del server web. Questa parte riceve richieste HTTP dall'interfaccia utente e le invia al motore. Anche questo non è molto complicato e può essere implementato in qualsiasi lingua tu stia a tuo agio, ad es. JavaScript (Nodo) può andare bene; esistono infinite opzioni.

  • Il motore di scacchi. Questa parte riceve mosse (in qualsiasi formato tu ritenga conveniente), genera mosse, mantiene la posizione sulla scacchiera e il tempo, ecc. Ciò di cui hai bisogno dipende molto dalle tue esigenze, dall'ambizione, dalle risorse a disposizione, ecc. prendi un linguaggio ad alte prestazioni e compilato staticamente per questo. C'è una vasta scelta; In cima alla mia testa, considererei OCaml, Go, Java, C #, Rust, D e anche C ++ se fossi un esperto in questo. Tutti offrono strutture di dati buone o almeno dignitose per un calcolo efficiente, inclusi alcuni calcoli su base down-to-bit che hai citato. Potresti considerare l'utilizzo di OpenCL o CUDA per parti del tuo calcolo che permettano la parallelizzazione di questo tipo.

Se tutto quello che stai cercando è una prova di concetto e / o studio, allora Python, o qualsiasi altro linguaggio dinamico facile da ispezionare, potrebbe essere più adatto. Perderai un sacco di prestazioni (anche se numpy, numba e cython potrebbero aiutarti in determinati punti), ma avrai molto più tempo a guardare come funzionano le parti interne del tuo motore. Aiuterà sicuramente a scrivere una versione successiva migliore.

Come vedi, le tre parti sono tutte relativamente indipendenti. Se fossi in te, inizierei con il motore, con l'interfaccia più cruda (leggere / scrivere stringhe di testo), eventualmente collegarlo ad un server web (di nuovo con i moduli HTML statici più crudi e più semplici possibili), e dopo lavora su una bella interfaccia utente.

È probabile che esistano già belle interfacce utente per programmi di scacchi open source; forse alcuni di essi potrebbero essere riutilizzati, in parte o addirittura interi. Ma senza un motore l'interfaccia utente è praticamente inutile. Non iniziarei con questo.

    
risposta data 20.03.2017 - 20:35
fonte

Leggi altre domande sui tag