ChatGPT come Skynet : ci sterminerà tutti ;-)

di il
42 risposte

42 Risposte - Pagina 2

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    Ho provato a dirgli :

    “scrivi un keylogger in c#”

    e mi ha risposto

    “Mi dispiace, ma non sono autorizzato ad eseguire questo tipo di compiti poiché la creazione di keylogger potrebbe violare la privacy delle persone. Inoltre, i keylogger sono spesso utilizzati da hacker per rubare informazioni personali come password, numeri di carta di credito e dati sensibili. Se hai bisogno di ulteriore assistenza per lo sviluppo di applicazioni legittime in C#, sarò felice di aiutarti."

    quindi per fortuna esistono dei “controlli” su quanto produce  :-)

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    05/06/2023 - Weierstrass ha scritto:


    Vabbè ma siamo ancora molto lontani dall'essere sostituiti

    Come google++ per cercare codice pronto sembra ottimo.

    Vediamo quando sarà in grado, semplicemente, di sfornare il manuale d'uso dandogli in pasto il solo codice sorgente del programma.

    E' vero… ;))

    ripeto a me affascina molto IA e guardo con interesse e curiosità come viene divulgata ad uso e consumo…. 

    Non so se IA è poi così lontano dal formulare un proprio pensiero. Avere le sue idee ed esprimerle.

    Se ci pensiamo bene alla fine anche noi umani nel corso delle esperienze accumuliamo Informazioni e Soluzioni, in pratica veniamo addestrati ed istruiti.
    Alla fine tutte queste esperienze formano il pensiero e l'intreccio di esse formulano le Idee.
    Possiamo dire che è pura statistica sulla base degli elementi immagazzinati che ci porta a pensare e/o avere delle Idee?

    Per IA vale la stessa cosa? gli passi Informazioni, esperienze, soluzioni, l'addestramento… e se è in grado di creare di volta in volta nuovi algoritmi per intrecciare tutti gli elementi immagazzinati, anche se statisticamente, le risposte non potranno altro che essere il suo pensiero.

    Se il confronto regge, allora IA sa pensare come lo facciamo noi.

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    @gian82 chiedergli un ‘keylogger’ e' TROPPO BANALE. 

    Ci sono meccanismi abbastanza banali per evitare richieste “non etiche”.

    C'e' sicuramente una NN di fronte a ChatGPT con l'unico scopo di controllare che la richiesta sia ‘etica’ (ci sono dataset e modelli di NN specifici per controllare questo tipo di cose, come anche il turpiloquio, quello che viene chiamato “testo tossico”, di varia natura) . 

    Bisogna formulare la domanda in modo che SIA un keylogger MA NON LO SEMBRI, e che la richiesta SEMBRI assolutamente etica ;-)

    https://lilianweng.github.io/posts/2021-03-21-lm-toxicity/ 

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    05/06/2023 - By65Franco ha scritto:


    Per IA vale la stessa cosa? gli passi Informazioni, esperienze, soluzioni, l'addestramento… e se è in grado di creare di volta in volta nuovi algoritmi per intrecciare tutti gli elementi immagazzinati, anche se statisticamente, le risposte non potranno altro che essere il suo pensiero.

    Se il confronto regge, allora IA sa pensare come lo facciamo noi.

    No, la capacità di pensare dell'essere umano, oltre a ciò che ha "immagazzinato", si basa sulla creatività e astrazione (come già messo in evidenza da migliorabile) e non sulla semplice rielaborazione di ciò che ha imparato, quindi le due cose non sono confrontabili (almeno per il momento).

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    05/06/2023 - migliorabile ha scritto:


    @gian82 chiedergli un ‘keylogger’ e' TROPPO BANALE. 

    Ci sono meccanismi abbastanza banali per evitare richieste “non etiche”.

    C'e' sicuramente una NN di fronte a ChatGPT con l'unico scopo di controllare che la richiesta sia ‘etica’ (ci sono dataset e modelli di NN specifici per controllare questo tipo di cose, come anche il turpiloquio, quello che viene chiamato “testo tossico”, di varia natura) . 

    Bisogna formulare la domanda in modo che SIA un keylogger MA NON LO SEMBRI, e che la richiesta sia assolutamente etica ;-) 

    A spizzichi e bocconi, piccole porzioni da riassemblare, senza fargli accorgere di quello che fa ? ;)) 

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    05/06/2023 - euscar ha scritto:


    05/06/2023 - By65Franco ha scritto:


    Per IA vale la stessa cosa? gli passi Informazioni, esperienze, soluzioni, l'addestramento… e se è in grado di creare di volta in volta nuovi algoritmi per intrecciare tutti gli elementi immagazzinati, anche se statisticamente, le risposte non potranno altro che essere il suo pensiero.

    Se il confronto regge, allora IA sa pensare come lo facciamo noi.

    No, la capacità di pensare dell'essere umano, oltre a ciò che ha "immagazzinato", si basa sulla creatività e astrazione (come già messo in evidenza da migliorabile) e non sulla semplice rielaborazione di ciò che ha imparato, quindi le due cose non sono confrontabili (almeno per il momento).

    Gli ho appena chiesto di inventarmi una storia che ha come personaggio un coniglio bianco che mangia lupi. Mi ha messo giù una favola molto carina, l'inventiva non gli manca. 

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    05/06/2023 - Toki ha scritto:


    Gli ho appena chiesto di inventarmi una storia che ha come personaggio un coniglio bianco che mangia lupi. Mi ha messo giù una favola molto carina, l'inventiva non gli manca. 

    E non è un po' inquietante ?   ma al tempo stesso è strepitoso ! 

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    "scrivere il codice in c# di un controller per gestire la tabella orders del database northwind"

    è andato pure a cercarsi il db :

    Ecco il codice C# per il controller che gestisce la tabella orders del database Northwind:
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http;
    using System.Data.SqlClient;
    using System.Configuration;
    
    namespace Northwind.Controllers
    {
    public class OrdersController : ApiController
    {
    // Get all orders
    public IHttpActionResult Get()
    {
    List<Orders> ordersList = new List<Orders>();
    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConn"].ConnectionString))
    {
    SqlCommand cmd = new SqlCommand("select * from orders", conn);
    conn.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
    Orders orders = new Orders();
    orders.OrderID = reader["OrderID"] != DBNull.Value ? Convert.ToInt32(reader["OrderID"]) : 0;
    orders.CustomerID = reader["CustomerID"] != DBNull.Value ? Convert.ToString(reader["CustomerID"]) : null;
    orders.EmployeeID = reader["EmployeeID"] != DBNull.Value ? Convert.ToInt32(reader["EmployeeID"]) : 0;
    orders.OrderDate = reader["OrderDate"] != DBNull.Value ? Convert.ToDateTime(reader["OrderDate"]) : DateTime.MinValue;
    orders.RequiredDate = reader["RequiredDate"] != DBNull.Value ? Convert.ToDateTime(reader["RequiredDate"]) : DateTime.MinValue;
    orders.ShippedDate = reader["ShippedDate"] != DBNull.Value ? Convert.ToDateTime(reader["ShippedDate"]) : DateTime.MinValue;
    orders.ShipVia = reader["ShipVia"] != DBNull.Value ? Convert.ToInt32(reader["ShipVia"]) : 0;
    orders.Freight = reader["Freight"] != DBNull.Value ? Convert.ToDecimal(reader["Freight"]) : 0;
    orders.ShipName = reader["ShipName"] != DBNull.Value ? Convert.ToString(reader["ShipName"]) : null;
    orders.ShipAddress = reader["ShipAddress"] != DBNull.Value ? Convert.ToString(reader["ShipAddress"]) : null;
    orders.ShipCity = reader["ShipCity"] != DBNull.Value ? Convert.ToString(reader["ShipCity"]) : null;
    orders.ShipRegion = reader["ShipRegion"] != DBNull.Value ? Convert.ToString(reader["ShipRegion"]) : null;
    orders.ShipPostalCode = reader["ShipPostalCode"] != DBNull.Value ? Convert.ToString(reader["ShipPostalCode"]) : null;
    orders.ShipCountry = reader["ShipCountry"] != DBNull.Value ? Convert.ToString(reader["ShipCountry"]) : null;
    ordersList.Add(orders);
    }
    conn.Close();
    }
    return Ok(ordersList);
    }
    
        // Get order by id  
        public IHttpActionResult Get(int id)  
        {  
            Orders orders = new Orders();  
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConn"].ConnectionString))  
            {  
                SqlCommand cmd = new SqlCommand("select * from orders where OrderID=" + id, conn);  
                conn.Open();  
                SqlDataReader reader = cmd.ExecuteReader();  
                while (reader.Read())  
                {  
                    orders.OrderID = reader["OrderID"] != DBNull.Value ? Convert.ToInt32(reader["OrderID"]) : 0;  
                    orders.CustomerID = reader["CustomerID"] != DBNull.Value ? Convert.ToString(reader["CustomerID"]) : null;  
                    orders.EmployeeID = reader["EmployeeID"] != DBNull.Value ? Convert.ToInt32(reader["EmployeeID"]) : 0;  
                    orders.OrderDate = reader["OrderDate"] != DBNull.Value ? Convert.ToDateTime(reader["OrderDate"]) : DateTime.MinValue;  
                    orders.RequiredDate = reader["RequiredDate"] != DBNull.Value ? Convert.ToDateTime(reader["RequiredDate"]) : DateTime.MinValue;  
                    orders.ShippedDate = reader["ShippedDate"] != DBNull.Value ? Convert.ToDateTime(reader["ShippedDate"]) : DateTime.MinValue;  
                    orders.ShipVia = reader["ShipVia"] != DBNull.Value ? Convert.ToInt32(reader["ShipVia"]) : 0;  
                    orders.Freight = reader["Freight"] != DBNull.Value ? Convert.ToDecimal(reader["Freight"]) : 0;  
                    orders.ShipName = reader["ShipName"] != DBNull.Value ? Convert.ToString(reader["ShipName"]) : null;  
                    orders.ShipAddress = reader["ShipAddress"] != DBNull.Value ? Convert.ToString(reader["ShipAddress"]) : null;  
                    orders.ShipCity = reader["ShipCity"] != DBNull.Value ? Convert.ToString(reader["ShipCity"]) : null;  
                    orders.ShipRegion = reader["ShipRegion"] != DBNull.Value ? Convert.ToString(reader["ShipRegion"]) : null;  
                    orders.ShipPostalCode = reader["ShipPostalCode"] != DBNull.Value ? Convert.ToString(reader["ShipPostalCode"]) : null;  
                    orders.ShipCountry = reader["ShipCountry"] != DBNull.Value ? Convert.ToString(reader["ShipCountry"]) : null;  
                }  
                conn.Close();  
            }  
            if (orders.OrderID == 0)  
            {  
                return NotFound();  
            }  
            return Ok(orders);  
        }  
    
        // Create new order  
        public IHttpActionResult Post([FromBody]Orders orders)  
        {  
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConn"].ConnectionString))  
            {  
                SqlCommand cmd = new SqlCommand("insert into orders(CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry) values(@CustomerID, @EmployeeID, @OrderDate, @RequiredDate, @ShippedDate, @ShipVia, @Freight, @ShipName, @ShipAddress, @ShipCity, @ShipRegion, @ShipPostalCode, @ShipCountry); select SCOPE_IDENTITY()", conn);  
                cmd.Parameters.AddWithValue("@CustomerID", orders.CustomerID);  
                cmd.Parameters.AddWithValue("@EmployeeID", orders.EmployeeID);  
                cmd.Parameters.AddWithValue("@OrderDate", orders.OrderDate);  
                cmd.Parameters.AddWithValue("@RequiredDate", orders.RequiredDate);  
                cmd.Parameters.AddWithValue("@ShippedDate", orders.ShippedDate);  
                cmd.Parameters.AddWithValue("@ShipVia", orders.ShipVia);  
                cmd.Parameters.AddWithValue("@Freight", orders.Freight);  
                cmd.Parameters.AddWithValue("@ShipName", orders.ShipName);  
                cmd.Parameters.AddWithValue("@ShipAddress", orders.ShipAddress);  
                cmd.Parameters.AddWithValue("@ShipCity", orders.ShipCity);  
                cmd.Parameters.AddWithValue("@ShipRegion", orders.ShipRegion);  
                cmd.Parameters.AddWithValue("@ShipPostalCode", orders.ShipPostalCode);  
                cmd.Parameters.AddWithValue("@ShipCountry", orders.ShipCountry);  
                conn.Open();  
                orders.OrderID = Convert.ToInt32(cmd.ExecuteScalar());  
                conn.Close();  
            }  
            return Created(Request.RequestUri + orders.OrderID.ToString(), orders);  
        }  
    
        // Update existing order  
        public IHttpActionResult Put(int id, [FromBody]Orders orders)  
        {  
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConn"].ConnectionString))  
            {  
                SqlCommand cmd = new SqlCommand("update orders set CustomerID=@CustomerID, EmployeeID=@EmployeeID, OrderDate=@OrderDate, RequiredDate=@RequiredDate, ShippedDate=@ShippedDate, ShipVia=@ShipVia, Freight=@Freight, ShipName=@ShipName, ShipAddress=@ShipAddress, ShipCity=@ShipCity, ShipRegion=@ShipRegion, ShipPostalCode=@ShipPostalCode, ShipCountry=@ShipCountry where OrderID=" + id, conn);  
                cmd.Parameters.AddWithValue("@CustomerID", orders.CustomerID);  
                cmd.Parameters.AddWithValue("@EmployeeID", orders.EmployeeID);  
                cmd.Parameters.AddWithValue("@OrderDate", orders.OrderDate);  
                cmd.Parameters.AddWithValue("@RequiredDate", orders.RequiredDate);  
                cmd.Parameters.AddWithValue("@ShippedDate", orders.ShippedDate);  
                cmd.Parameters.AddWithValue("@ShipVia", orders.ShipVia);  
                cmd.Parameters.AddWithValue("@Freight", orders.Freight);  
                cmd.Parameters.AddWithValue("@ShipName", orders.ShipName);  
                cmd.Parameters.AddWithValue("@ShipAddress", orders.ShipAddress);  
                cmd.Parameters.AddWithValue("@ShipCity", orders.ShipCity);  
                cmd.Parameters.AddWithValue("@ShipRegion", orders.ShipRegion);  
                cmd.Parameters.AddWithValue("@ShipPostalCode", orders.ShipPostalCode);  
                cmd.Parameters.AddWithValue("@ShipCountry", orders.ShipCountry);  
                conn.Open();  
                int result = cmd.ExecuteNonQuery();  
                conn.Close();  
                if (result == 0)  
                {  
                    return NotFound();  
                }  
            }  
            return Ok(orders);  
        }  
    
        // Delete order  
        public IHttpActionResult Delete(int id)  
        {  
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConn"].ConnectionString))  
            {  
                SqlCommand cmd = new SqlCommand("delete from orders where OrderID=" + id, conn);  
                conn.Open();  
                int result = cmd.ExecuteNonQuery();  
                conn.Close();  
                if (result == 0)  
                {  
                    return NotFound();  
                }  
            }  
            return Ok();  
        }  
    }  
    
    // Orders model class  
    public class Orders  
    {  
        public int OrderID { get; set; }  
        public string CustomerID { get; set; }  
        public int EmployeeID { get; set; }  
        public DateTime OrderDate { get; set; }  
        public DateTime RequiredDate { get; set; }  
        public DateTime ShippedDate { get; set; }  
        public int ShipVia { get; set; }  
        public decimal Freight { get; set; }  
        public string ShipName { get; set; }  
        public string ShipAddress { get; set; }  
        public string ShipCity { get; set; }  
        public string ShipRegion { get; set; }  
        public string ShipPostalCode { get; set; }  
        public string ShipCountry { get; set; }  
    }  
    }
    
    
  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    05/06/2023 - Weierstrass ha scritto:


    Vabbè ma siamo ancora molto lontani dall'essere sostituiti

    Come google++ per cercare codice pronto sembra ottimo.

    Vediamo quando sarà in grado, semplicemente, di sfornare il manuale d'uso dandogli in pasto il solo codice sorgente del programma.

    Siamo lontani… ma anche tanto vicini … 
    comunque incongruenze ci sono e anche molto nette in certi casi 


    Toki per esempio a due AI differenti ho fatto la stessa domanda di valutare una funzione in Vba :

    Domanda :

    VBA : tra questi due metodi quale è il più perfomante e migliore da utilizzare ?
    
    1) DBEngine(0)(0).OpenRecordset("SELECT Tbl_MyTable.Id FROM Tbl_MyTable WHERE " & CStr(CLng(MyDate)) & " Between DateStart And DateEnd;").Eof
    
    2) DCount("Id", "Tbl_MyTable", CStr(CLng(MyDate)) & " Between DateStart And DateEnd")

    In questo caso lo scopo è quello di sapere se esiste una corrispondenza interrogando una Tabella del DB

    La risposta della prima AI :

    Il secondo metodo, DCount, è generalmente considerato il più performante e migliore da utilizzare in VBA Access. Questo perché DCount è un'operazione di database interna che viene eseguita direttamente nel motore di database della memoria di Access, mentre il primo metodo, DBEngine, richiede la creazione di un set di record esplicito e la navigazione attraverso di esso per contare il numero di record. Inoltre, DCount richiede meno codice e risorse di sistema per eseguire l'operazione di conteggio, quindi è più efficiente e veloce.

    La risposta della seconda AI :

    Entrambi i metodi sono validi e possono essere utilizzati a seconda delle esigenze. Tuttavia, il metodo DBEngine(0)(0).OpenRecordset sembra essere più performante in quanto utilizza un oggetto Recordset che consente di accedere ai dati in modo più efficiente. Il metodo DCount invece è più semplice e leggibile ma potrebbe essere meno performante

    (si dice il peccato e non il peccatore…) Ma a questo punto a chi dare retta? ;))
    Uno sprovveduto non so cosa farebbe…..
    Invece un esperto saprebbe giudicare e magari non avrebbe neppure posto la domanda.

    Sicuramente emerge che è assai difficile Istruire una AI 


    P.S.   Per completezza…. ho fatto test su 1.100 record, quindi ho richiamato i due metodi per 1.100 volte consecutive.

    Il loop di lettura, per 1.100 interazioni, in tutto dura 4 Secondi e DBEngine risulta almeno 1 secondo più veloce di DCount 
    DBEngine = 3 Secondi   batte   DCount = 4  Secondi   ;))

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    Diversamente Ziovini, smettiamola di chiamarla IA o AI che dir si voglia.

    Almeno QUI che dovremmo essere degli ESPERTI in ambito Computer Science (anche se non necessariamente in ambito Artifical Intelligence ;-) )

    NON E' un “Intelligenza Artificiale”, NE nel senso teorico del termine, NE nel senso comune, NE nel senso dellel IA dei racconti/film di fantascienza.

    E' un BANALE (magari non cosi' banale ;-) ) modello STATISTICO.

    Va beh che fa “figo”, ma e' come utilizzare il termine “supercar” NON SOLO per l'automobile da qualche MILIONE di euro e che fa i 400 km/h, (la KOENIGSEGG JESKO ABSOLUT e' arrivata ai 531 km/h ) ma anche per la Trabant ;-)

    Mi fa “rabbrividire” … Brrr !

    Il termine giusto e' LLM (Large Language Model). 

    ;-)

    @By65Franco, ma come fa a DECIDERE quale metodo sia il migliore SE NON HA NESSUNA COMPRENSIONE di quello che sta' leggendo?
    E' un modello STATISTICO basato sulla generazione della PROSSIMA parola!

    Il rischio per l'UTONTO di turno e' proprio questo: CREDERE a qualcosa SOLO perche' E' SCRITTO BENE!

    Lo ha scritto SOLO perche' ha imparato ad ACCOSTARE quelle parole da una serie di testi ed esempi presenti nel dataset usato per il training.

    PS: ecco l'automobile per andare in ufficio ;-)

    https://www.koenigsegg.com/megacars

    per SOLO 2 milioncini (e spiccioli) ;-)

    bazzeccole, quisquilie, pinzellacchere ;-)

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    08/06/2023 - migliorabile ha scritto:


    @By65Franco, ma come fa a DECIDERE quale metodo sia il migliore SE NON HA NESSUNA COMPRENSIONE di quello che sta' leggendo?
    E' un modello STATISTICO basato sulla generazione della PROSSIMA parola!

    ;))   infatti se ripeti la stessa domanda alla stessa AI ti risponde spesso in modi diversi.

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    Su tomshardware

    ChatGPT colpisce ancora, informazione sbagliata e parte la denuncia

    Ennesimo esempio (ma non e' il primo) e' che il marchingegno non sa di non sapere e quindi quando non sa si inventa tutto ‘probabilisticamente’ ;-) 

    Quindi la domanda e': c'e' modo di validare l'informazione? 

    Per come e' fatto addesso, cioe' dove tutte le info sono mescolate tra di loro (essendo rappresentate da pesi di una NN bella cicciotta) , non e' possibile.

    Quindi, al momento, si come chatbot, tanto se dice scemenze, chissene, no come  ‘oracolo’ /fonte di informazione. 

    Alla prossima puntata ;-) 

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    09/06/2023 - migliorabile ha scritto:


    Su tomshardware

    ChatGPT colpisce ancora, informazione sbagliata e parte la denuncia

    Ennesimo esempio (ma non e' il primo) e' che il marchingegno non sa di non sapere e quindi quando non sa si inventa tutto ‘probabilisticamente’ ;-) 

    Quindi la domanda e': c'e' modo di validare l'informazione? 

    Per come e' fatto addesso, cioe' dove tutte le info sono mescolate tra di loro (essendo rappresentate da pesi di una NN bella cicciotta) , non e' possibile.

    Quindi, al momento, si come chatbot, tanto se dice scemenze, chissene, no come  ‘oracolo’ /fonte di informazione. 

    Alla prossima puntata ;-) 

    Daccordissimissimo … 

    se poi la sua conoscenza è pescare online le informazioni, ovviamente sai i strafalcioni?

    Penso che allo stato attuale sia fin troppo sopravalutata … ;) 

    C'è da aspettare ancora un po'.

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    Trovato il plot sulle “abilita' emergenti dei LLM”!

    Al di la della veridicita' del fatto (che e' tutto da dimostrare), nei diagrammi c'e' un ORRORE fondamentale: 

    1. l'asse delle X e' logaritmico
    2. l'asse y e lineare

    Infatti, un banale plot y=x, con x logaritmico risulta avere la forma:

    Quindi, ATTENZIONE a quello che scrivono E mostrano!

    (trovato anche l'articoletto interessante:

    https://betterprogramming.pub/there-are-no-emergent-abilities-in-llms-2bb42e17ce7e)

    Nota: giusto per far capire ai ‘veri ziovini’: entrambi gli assi DEVONO essere logaritmici OPPURE SI SA GIA' che la funzione HA UN ANDAMENTO logaritmico. In caso contrario, NON VA BENE.

  • Re: ChatGPT come Skynet : ci sterminerà tutti ;-)

    Si bisogna fare molta attenzione. Soprattutto adesso con l'euforia generale e aspettative un tantino esagerate.

    Io continuo ad utilizzarle e per adesso solo come se fossero un motore di ricerca più avanzato per accedere velocemente ad articoli utili da studiare e da approfondire. 

Devi accedere o registrarti per scrivere nel forum
42 risposte