Topic: L'importanza delle prestazioni  (Letto 143 volte)

0 Utenti e 2 Visitatori stanno visualizzando questo topic.

Offline Trizio

  • python unicellularis
  • *
  • Post: 40
  • Punti reputazione: 1
    • Mostra profilo
L'importanza delle prestazioni
« il: Ottobre 20, 2018, 11:29 »
Salve. Premetto di essere un principiante. E non intendo perseguire la carriera di ingegnere informatico. Insomma, le mie basi non sono granché solide e sospetto di avere qualche concezione distorta dell'informatica.

La mia idea di fondo (ossia quello che ho dedotto leggendo cose scritte da altri) è che un programma deve soddisfare le esigenze di chi lo usa, compiendo il minimo sforzo possibile in termini di risorse, e garantendo a chi lo legge e modifica il minimo sforzo possibile. Per un motivo o per l'altro, la questione delle prestazioni mi lascia un po' perplesso.

Non ho dimestichezza con altri linguaggi di programmazione (a dirla tutta non è che abbia una gran dimestichezza nemmeno con Python), ma stando a quanto ho capito ci sono linguaggi di programmazione decisamente più performanti. Perché utilizzare Python, quando verosimilmente è possibile utilizzare per lo stesso scopo -- a titolo di esempio -- C?

Presumo che un programma scritto in C possa tranquillamente soddisfare le esigenze dei customer, possa essere scritto in modo tale da essere leggibile, e a quanto pare è pressoché certo che sfonderà la barriera del suono.

Eppure il successo di Python sembrerebbe in qualche modo sbugiardare questo modello. Okay, un programma scritto in Python è verosimilmente più facile da mantenere rispetto ad un equivalente scritto  in C, ma le sue prestazioni dovrebbero essere comunque inferiori. Di poco, di molto...? Immagino dipenda da cosa faccia effettivamente quel programma.

Nel mondo vero, quanto sono davvero importanti le prestazioni?

P.S. Okay, sono ancora ingenuo, ma non del tutto sprovveduto. Immagino che nel "mondo vero" (ambito business, scientifico, ecc.) entri in gioco anche il fattore tempo, e che progettare un software in C sia più dispendioso in termini di tempo (e il tempo è denaro) rispetto a uno in Python. Poi, ovvio, è relativo...
« Ultima modifica: Ottobre 20, 2018, 12:18 da Trizio »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.821
  • Punti reputazione: 9
    • Mostra profilo
Re:L'importanza delle prestazioni
« Risposta #1 il: Ottobre 20, 2018, 12:40 »
> quanto sono davvero importanti le prestazioni?

Ora, forse sai già che questa domanda viene fatta spesso anche a proposito del sesso.
E la risposta è sorprendentemente la stessa. Se hai intenzione di recitare in un porno, allora direi che sì, le prestazioni contano. Altrimenti, mah, dipende dai casi.
Se parlare di porno non ti ispira (io naturalmente potrei andare avanti per ore) allora pensa alle macchine. Una macchina di formula 1 è incredibilmente più veloce e sicura di una panda. Allora perché non usiamo solo macchine di formula 1 nella vita?
Magari sei un principiante, ma non può sfuggirti che i computer (e quindi i linguaggi di programmazione) sono artefatti umani, dopo tutto. Obbediranno alla stesse leggi fondamentali, no? Tu ti chiedi perché python e non solo C, ma perché allora non ti chiedi perché abbiamo tante macchine diverse? Tanti vestiti diversi? Tante posate diverse? Tante... ehm... misure diverse (sto di nuovo parlando di sesso)?

Un problema con tutto questo è che, appunto, siccome sei un principiante non riesci a immaginare i contorni del "landscape" della programmazione. Se ti chiedessi perché non usiamo tutti le macchine di formula 1 per andare a fare la spesa, qualcuno potrebbe dirti: ma hai mai provato davvero a guidare una macchina di formula 1? Se lo facessi, capiresti alcune cose. Allo stesso modo, potrei dirti: ma hai mai provato a sviluppare in C? E hai già detto di no, infatti. Intendiamoci, non è che bisogna per forza fare esperienza diretta di ogni singola cosa, prima di esprimere una valutazione. Ma insomma, un pochino di esperienza nel settore bisogna avercela, per capire all'incirca come funziona. Oltre tutto la "programmazione" è un'attività umana talmente vasta...

Aggiungo nello specifico anche che "le prestazioni" sono un concetto vaghissimo, in informatica. Quindi, se vuoi una risposta veloce e forse solo vagamente soddisfacente, potrei dirti: in un certo numero di scenari reali le "prestazioni" di python sono più che sufficienti. E questo numero di scenari è senz'altro abbastanza elevato. D'altra parte, in un certo numero di scenari una serie di altre qualità di python sono gradite. E anche questo numero di scenari è abbastanza elevato. Tutto questo, nell'insieme, è sufficiente a spiegare il successo di Python.
Se vuoi una risposta più complessa e dettagliata, allora non preoccuparti: verrà da sola man mano che imparerai a muoverti nel mondo della programmazione.
« Ultima modifica: Ottobre 20, 2018, 14:04 da RicPol »

Offline Trizio

  • python unicellularis
  • *
  • Post: 40
  • Punti reputazione: 1
    • Mostra profilo
Re:L'importanza delle prestazioni
« Risposta #2 il: Ottobre 21, 2018, 11:24 »
Capisco. Bella risposta, Ric.

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 289
  • Punti reputazione: 0
    • Mostra profilo
Re:L'importanza delle prestazioni
« Risposta #3 il: Ottobre 30, 2018, 14:51 »
Citazione
La mia idea di fondo (ossia quello che ho dedotto leggendo cose scritte da altri) è che un programma deve soddisfare le esigenze di chi lo usa, compiendo il minimo sforzo possibile in termini di risorse

No, mancano diverse variabili, due fondamentali: il tempo impiegato per lo sviluppo e il tempo percepito per la risoluzione del problema.

Se devi scrivere: print(2 + 2), usando il python, secondo la tua logica, userai infinite risorse in più del C, solo che se lo vuoi fare in C/C++ devi includere tutte le librerie che possono variare in base al sistema operativo) definire la funzione principale nel quale fai la somma, ritornare lo 0 per segnalare il successo e poi devi compilare il file e infine eseguirlo.

Il tempo impiegato per scrivere lo stesso programma è totalmente differente, immagina per un progetto più grande, mentre il tempo che hai percepito per l'esecuzione del programma non è percepibile.

Ergo, se devi spendere 10 volte il tempo di sviluppo di qualcosa per poi avere un incremento di prestazioni di qualche decimo di secondo...

Comunque, di norma io programmo tutto in Python per la parte esecutiva, sostituisco le funzioni con funzioni in C/C++ per le parti di codice che risultano lente (o che io ho necessita che siano veloci) o cerco delle librerie python sviluppate in C/C++, e uso un linguaggio differente per le GUI, che nonostante mi mangi 20 volte le risorse del python, non perdo tutto il tempo che perderei usando i vari Tkinter/PyQT a sviluppare l'interfaccia grafica.

Offline bebo

  • python erectus
  • ***
  • Post: 173
  • Punti reputazione: 0
    • Mostra profilo
    • bebo_sudo's personal homepage
Re:L'importanza delle prestazioni
« Risposta #4 il: Ottobre 30, 2018, 18:12 »
Ergo, se devi spendere 10 volte il tempo di sviluppo di qualcosa per poi avere un incremento di prestazioni di qualche decimo di secondo...

Dipende sempre dal contesto di impiego del programma: se ci fai prog web del sito della squadra di calcetto, chissene frega (e infatti js spadroneggia).. ma se devi fare analisi di dati in quasi-real-time, un miglioramento di qualche decimo di secondo e' oro.

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 289
  • Punti reputazione: 0
    • Mostra profilo
Re:L'importanza delle prestazioni
« Risposta #5 il: Ottobre 30, 2018, 18:39 »
Ergo, se devi spendere 10 volte il tempo di sviluppo di qualcosa per poi avere un incremento di prestazioni di qualche decimo di secondo...

Dipende sempre dal contesto di impiego del programma: se ci fai prog web del sito della squadra di calcetto, chissene frega (e infatti js spadroneggia).. ma se devi fare analisi di dati in quasi-real-time, un miglioramento di qualche decimo di secondo e' oro.

Si il punto del discorso era quello.

Preoccupati delle prestazioni, dove ti interessano le prestazioni.