View Full Version : Linguaggio per scrivere un server
Vorrei provare a tempo perso a creare un social network. Mi chiedevo se oltre all'efficienza ci fossero degli altri fattori che vale la pena considerare(librerie?) per scrivere il lato server. Quale linguaggio e perchè dovrei utilizzare?
è una domanda molto molto generica.
efficenza:
c, c++
velocità di sviluppo:
python / ruby / javascript
nel mezzo:
Java/Scala, Go
le librerie si aiutano ma la natura del progetto è talmente ampia che è difficile dare una risposta o prendere una decisione
se è solo per esercizio scegli quel che vuoi, uno vale l'altro
È più che altro per passarmi il tempo ma non si sa mai...Magari mi viene la scimmia di renderlo pubblico, quindi vorrei fare le cose per bene. È un po' alla Twitter se può aiutare a restringere il campo. Scriverlo in Python e usare C per eventuali colli di bottiglia come sarebbe?
cdimauro
13-12-2014, 19:26
Con Python puoi scrivere velocemente un prototipo, e metterlo anche in funzionamento. Se dovesse avere successo, puoi sempre individuare i colli di bottiglia che limitano la scalabilità e risolverli.
Considera che Facebook è stato scritto inizialmente con quell'aborto di PHP e MySQL, se non ricordo male, e col tempo è stato rimaneggiato (anche se PHP dovrebbe essere ancora il linguaggio principale) per poter gestire l'attuale miliardo di utenti.
Vada per Python allora. È da molto che non lo uso quindi dovrei usare la 2.x o la 3.x?
cdimauro
13-12-2014, 20:31
Il futuro è il ramo 3.x, ma il problema è che non sono molti i moduli/package che sono stati portati da 2.x a 3.x.
Il mio consiglio è di utilizzare Python 2.7, in modo da garantirti l'accesso a qualunque package per questo linguaggio, ma abilitando (alcune del)le funzionalità di Python 3.0, in modo da rendere immediato il passaggio a quest'ultimo.
Per maggiori informazioni, leggi questo (https://docs.python.org/3/howto/pyporting.html#pyporting-howto).
Secondo me se lo fai per "passare il tempo" la scelta migliore è Go.
Puoi costruire qualcosa con praticamente la stessa velocità di Python col vantaggio delle prestazioni e di usare un linguaggio moderno che sta avendo molto successo e verrà sicuramente usato parecchio nei prossimi anni.
Puoi usare il package di default "http" http://golang.org/pkg/net/http/ o affidarti a un framework tipo https://github.com/go-martini/martini
Grazie mille :)
Alla fine la scelta è ricaduta su Python perchè è un linguaggio che suppergiù conosco e che mi piace.
Non so se vado off-topic ma ho un problema stupido che non riesco a risolvere.
Ho disabilitato il firewall di windows, ho disabilitato avast e ho aperto la porta nel pannello di configurazione del router(se mi connetto a localhost è necessario?) ma nel client socket.connect() genera l'eccezione [Errno 10061] Impossibile stabilire la connessione. Rifiuto persistente del computer di destinazione.
Server:
import socket
HOST = ''
PORT = 8882
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
s.close()
Client:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = 'localhost'
port = 50100
remote_ip = s.gethostbyname(host)
s.connect((remote_ip, port))
s.close()
Dimenticavo: nel caso possa servire sono su Windows 8.1
tomminno
18-12-2014, 15:32
Apri il server sulla porta 8882 e provi a connettere il client alla porta 50100? Direi che così non funziona ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.