PDA

View Full Version : Linguaggio per scrivere un server


theUser
13-12-2014, 13:50
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?

OoZic
13-12-2014, 17:16
è 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

theUser
13-12-2014, 18:35
È 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.

theUser
13-12-2014, 19:39
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).

OoZic
14-12-2014, 11:13
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

theUser
17-12-2014, 12:23
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 ;)