Topic: Aiuto per principiante  (Letto 654 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Markon

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 4.103
  • Punti reputazione: 5
    • Mostra profilo
    • Neolithic
Re:Aiuto per principiante
« Risposta #15 il: Settembre 25, 2018, 21:38 »
> Una cli "pura" è questa roba qui, per capirci: https://xkcd.com/1168/.

lol!

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.447
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re:Aiuto per principiante
« Risposta #16 il: Ottobre 11, 2018, 22:00 »
Uhm, sì con qualche punta di no.
Intanto conviene tenere separati i concetti di "cli" e "cli interattiva". In questo thread di parlava di cli interattiva, in realtà. La "cli pura, unix-style" non è uno strumento per utenti finali, e quando ne fai il design non devi tener conto di una marea di problemi di user interaction. Per dire, se sbagli un flag, se il parametro non è del tipo giusto... si pianta e muore lì. Una cli "pura" è questa roba qui, per capirci: https://xkcd.com/1168/.

Ohibo'. Guarda tutte ste definizioni sono piuttosto arbitrarie, le mie in primis. Basta intendersi. Anche cose come "utenti finali" possiamo discuterne per ore e scopriamo che abbiamo dato al termine un senso leggermente diverso.
Mi concentro dove siamo in non accordo.

> python myscript.py 12 18

Ma suvvia, ovvio. Ma oggettivamente fintanto che il programma piu' complicato che si scrive e' sommare due interi c'e' poco da fare. E si, sono d'accordo, per una roba cosi' va benissimo qualunque REPL python.
Pero' di solito ad un certo punto si vuole fare un programma che faccia qualcosa di utile. Per ognuno e' qualcosa di diverso.

Un esempio? la classica todo-list. Classica applicazione da principianti. E ovviamente utile fin li (visto che ce ne sono di prefatte).
Ma intendiamoci... ci sono anche todo-list prefatte da linea di comando. E le ho viste usare *davvero*.
Alla fine, se buona parte del tuo lavoro e' un terminale aperto (e si lo so che il *tuo* lavoro non e' cosi', ma e' una condizione normale per tanta gente che fa il sysadmin e tanti software engineer).
Che so... io sono patologico, ma nel senso... dove lavoro e' gente come me (e in tante startup e FANG e compagnia).

Ora non discutiamo se sia piu' o meno comodo. :) Per alcuni *e'* comodo. Io personalmente il TODO da linea di comando non lo uso -- sebbene spesso sviluppi su una macchina remota che ha un numero di core che non ci stanno in un laptop :) --
Ma li ho visti usare. :) E se ci pensi, dati i constraint, non e' peregrino.

Da cui il mio discorso che alla fine, anche considerando l'estrema semplicita' del tutto, e' un buon modo per scrivere programmi relativamente comodi e utili. E si, magari la gui fighettosa sarebbe anche piu' comoda, pero' andiamo per gradi con sti principianti. Insomma, lo trovo un buon target per potersi scrivere programmetti che hanno anche qualche utilita'.

Oppure pensa al fatto che uno probabilmente si puo' automatizzare qualcosa che gli rompe le palle fare. O meglio, a uno viene in mente che potrebbe automatizzare e ci prova. E va bene. Ci siamo passati tutti. Quello che dico e' che si fanno un favore a fare una cli stile unix (che poi che cavolo vuole dire... tutti i sistemi a linea di comando, incluso DOS, hanno quel tipo di programmi).

> Quindi no, non credo che la minore esposizione a unix sia una seria aggravante per il problema in questione.

Non so quale sia il problema che hai tu. Insisto: se hai fatto qualcosa con unix (cli), e' piu' probabile che ti renda conto che fare

catalogue_pictures holidays

e' piu' comodo che fare il coso che chiami e poi gli fai type-in della directory... perche' tipo sei abituato ad avere la history di bash e quindi il comando lo richiami... mentre farti la history nel tuo coso e' complicato e non lo fai. Dai, roba ovvia.
Se invece hai usato "solo GUI", per te essere nel terminale con Python e' un mondo relativamente alieno e non si ha sviluppato una preferenza.

> Vero è comunque che se il principiante non riesce a "vedere" oltre le gui, allora abbiamo un problema.

Il desiderio di molti principianti e' di fare cose da "non sono piu' principiante". Quindi vedi il desiderio del creare l'exe (anche per darlo in giro), il desiderio per fare le GUI (come i programmi "professionali") oppure il sito web viene quasi subito.
Io personalemente da professionista se mi devo scrivere un programma spero tanto che mi basti una cli perche' faccio una cosa usabile (come interfaccia) in meno tempo e oggettivamente UI piu' complicate prendono tempo prima di raggiungere quel tipo di usabilita'.
Oggettivamente l'ultima volta che mi sono scritto una GUI mi sono sfracellato prima di finire la maschera. Sono anche anni he non scrivo una cosa "GUI" (web si... poi non ti dico l'interaction design da persona che trova vim comodo...). Ma ca**o quanto ho goduto quando *ero* un principiante quando mi sono scritto la GUI.

ca**o, ricordo ancora il primo coso "utile" che mi scrissi per linux con una GUI. Era un coso in C che usava qualche versione preistorica delle GTK (e non ti dico quanto mi sono sentito provessionista quando mi sono scritto il Makefile -- che ovviamente aveva hardcodato i path delle librerie e al primo update ho capito perche' la gente si prendeva la briga di usare configure -- della cui esistenza avevo nel frattempo preso conoscenza --. Questo coso essenzialmente era un runner di programmi (e vacca boia, ci avevo pure messo la history ad un certo punto). E ovviamente ce ne erano 620, ma quello che era successo e' che ero abituato ad usare sti runner con il mio desktop environment (che ovviamente *non* poteva essere KDE o GNOME perche' quelli fichi usavano roba piu' primitiva a cui mancava un sacco di roba *ma* occupavano meno RAM e quindi ... boh, minchia non ho idea di cosa avessi in testa all'epoca. Poi ero passato ad un altro desktop environement che pero' non aveva sto runner -- ovviamente avrei potuto trovare il modo di semplicemente fargliene usare uno esistente... ma per qualche motivo mi sembrava una buona idea scrivermelo da 0 invece. La qual cosa mi ha anche imparato a capire che quando un programma viene linkato (dinamicamente, che gli hard disk erano piccoli) ci sono tutta una serie di complicazioni stupide e tediose (che deve essere la stessa ccosa che hanno pensato quelli che hanno fatto Go e Rust, visto che ora gli hard disk piccoli non sono).

Quante cose che imparai.... e ovviamente non ero "principiante" come quelli che hai in mente tu (quelli che stanno scrivendo somma_due_numeri e poi si piantano a scrivere il coso che li illude di calcolare il codice fiscale).



Sulle cli interattive, quindi. Per cominciare, è chiaro che qui stiamo parlando dal punto di vista della *didattica* di Python.
> Ora, quello che io vorrei che il principiante capisse, è sostanzialmente questo: non ti *serve* una cli interattiva. Lascia perdere. Non usare "input", punto.

E su questo mi pare siamo in accordo. ;)

> Quando vuoi provarlo con dei parametri diversi, apri lo script e cambia i valori. E così via. Tutto qua. Se il tuo script *non* ha un utente (perché è un esercizio, perché è una prova, perché sei un principiante), allora *non* preoccuparti dell'interfaccia utente.

Ma pensa all'aspetto umano. :)
Il principiante vuole fare la cosa che pensa essere piu' "seria" per le sue conoscenze.
E il programma indipendente con un loop interattivo ti sembra davvero professionale per quello che sai fare. :)

E ovviamente e' tempo "buttato" didatticamente. Ma hei... bisogna anche motivarsi. :)

> Nel mio manuale ideale, "print" è introdotto dopo una cinquantina di pagine, e "input" è un argomento avanzato che non compare prima di pagina 200.

O mai... :) oggettivamente l'unica volta in vita mia che ho usato raw_input in un programma di produzione e' stato per aggiungere un nagger ad una utility (Are you really really sure that you want to turn off the power grid for the whole continent? -- e no, ovviamente e' un esempio... non e' che posso dire cosa faceva davvero il programma... no, non spegneva S3 ;) ). Che oggettivamente e' una cazzata, ma vabbe', quando ci si mette piu' a discutere che a fare, tanto vale. :) Per dire quanto e' inutile.


Offline Trizio

  • python unicellularis
  • *
  • Post: 40
  • Punti reputazione: 1
    • Mostra profilo
Re:Aiuto per principiante
« Risposta #17 il: Ottobre 21, 2018, 12:43 »
ma quello che era successo e' che ero abituato ad usare sti runner con il mio desktop environment (che ovviamente *non* poteva essere KDE o GNOME perche' quelli fichi usavano roba piu' primitiva a cui mancava un sacco di roba *ma* occupavano meno RAM e quindi ... boh, minchia non ho idea di cosa avessi in testa all'epoca.

In che senso?  :D

Quando ho cominciato a usare linux, due anni fa o poco più, ho installato LXDE, perché venivo da una brutta esperienza con gli OS a pagamento: il PC diventava sempre più lento a vista d'occhio. Poi sono passato a Openbox quando ho scoperto che potevo usarlo senza la suite di programmi LXDE, e di recente ho installato dwm, che è ancora più leggero (mi piacerebbe aggiungerci una funzionalità che apprezzavo in Openbox, il paging dei desktop virtuali—non saprei spiegarmi meglio—e in effetti sono quasi tentato dal comprarmi un manuale di C per implementarla io stesso). Insomma, a me sembra ragionevole che un DE non debba succhiare 200MB di preziosa RAM senza fare apparentemente nulla. Esigo che la RAM sia a mia completa disposizione, anche se non ne ho mai davvero bisogno. E' una condizione psicologica che rasenta i confini della patologia, ne sono consapevole, ma mi trovo bene.

Fracamente odio le interfacce grafiche per la stessa ragione (senza considerare il fatto che le trovo orribli—non si riesce a creare uno stile omogeneo che non rompa qualcosa neanche sbattendoci la testa ripetutamente... io uso il tema gtk di default perché francamente mi sono stancato di sbatterci la testa, just sayng). Se potessi navigare appena decentemente con Links o Lynx cestinerei Chromium senza battere ciglio.

Il colmo poi sono quei task manager con interfaccia grafica che consumano più risorse dei programmi che dovrebbero monitorare.  :D
« Ultima modifica: Ottobre 21, 2018, 12:46 da Trizio »