UFFICIALE Imparare a Programmare

giangiks

Utente Attivo
226
16
Ciao, vorrei imparare a sviluppare un'applicazione da zero, solo per cultura personale. Purtroppo all'università queste cose non sono trattate, i pochi corsi di programmazione sono volti alla creazione di funzioni specifiche per la risoluzione di esercizi di valutazione, quindi in sostanza so programmare bene, ma non so che farci con questa skill, proprio per questo vorrei iniziare a fare qualche progettino personale. Non avendo un background dietro, non so davvero da dove iniziare, ovviamente se cerco su internet trovo un sacco di roba ma proprio per questo non so dove mettere le mani. Consigli?
 

Edmund Blackadder

Utente Attivo
202
104
Ciao, pensavo ad un'applicazione desktop
Purtroppo non è il mio campo quindi non posso darti molti suggerimenti.

Quello che è importante è che tu conosca bene un qualche linguaggio d'uso generale: i primi che mi vengono in mente sono il C o ancora meglio Java. Dopo di che dare un'interfaccia ad un programma che hai scritto non è molto difficile, si tratta (in linea generale) di associare le tue funzioni ad elementi grafici ed a eventi dell'interfaccia. In questo le librerie ti aiutano molto.

La mia unica esperienza in ambito desktop è stata Visual Basic + Visual Studio. Visual Basic è un linguaggio semplice che a volte si insegna anche a scuola. Con Visual Studio puoi facilmente progettare l'interfaccia grafica, si tratta di trascinare bottoni, checkbox, label, liste finché non viene fuori una UI. Poi ad ogni oggetto grafico associ qualcosa del tuo codice Visual Basic.

Nel futuro le cose saranno un pò diverse: il mondo si sta spostando verso uno sviluppo unificato di applicazioni web e desktop grazie ad Electron, quindi diventano importanti HTML, CSS e Javascript.

Qualsiasi campo di sviluppo scegli, su Youtube trovi un'infinità di corsi fatti molto bene. Ad esempio per Java ho seguito il corso di questo professore. Conoscendo Java come linguaggio di base sono stato poi in grado di sviluppare applicazioni Android.
 
  • Like
Reactions: giangiks

giangiks

Utente Attivo
226
16
Purtroppo non è il mio campo quindi non posso darti molti suggerimenti.

Quello che è importante è che tu conosca bene un qualche linguaggio d'uso generale: i primi che mi vengono in mente sono il C o ancora meglio Java. Dopo di che dare un'interfaccia ad un programma che hai scritto non è molto difficile, si tratta (in linea generale) di associare le tue funzioni ad elementi grafici ed a eventi dell'interfaccia. In questo le librerie ti aiutano molto.

La mia unica esperienza in ambito desktop è stata Visual Basic + Visual Studio. Visual Basic è un linguaggio semplice che a volte si insegna anche a scuola. Con Visual Studio puoi facilmente progettare l'interfaccia grafica, si tratta di trascinare bottoni, checkbox, label, liste finché non viene fuori una UI. Poi ad ogni oggetto grafico associ qualcosa del tuo codice Visual Basic.

Nel futuro le cose saranno un pò diverse: il mondo si sta spostando verso uno sviluppo unificato di applicazioni web e desktop grazie ad Electron, quindi diventano importanti HTML, CSS e Javascript.

Qualsiasi campo di sviluppo scegli, su Youtube trovi un'infinità di corsi fatti molto bene. Ad esempio per Java ho seguito il corso di questo professore. Conoscendo Java come linguaggio di base sono stato poi in grado di sviluppare applicazioni Android.
Per quanto riguarda la programmazione sono messo bene, java lo conosco, così come anche python ecc.. cercavo più che altro una fonte di studio per quanto riguardo la nascita di un applicativo desktop, studiare così da varie fonti anonime su internet mi rende ansioso di impostare basi non corrette o di perdere tempo(tempo che non ho a causa dell'uni), quindi volevo andare sul sicuro. Grazie per le risposte comunque!
 

pabloski

Utente Èlite
2,566
695
Per quanto riguarda la programmazione sono messo bene, java lo conosco, così come anche python ecc.. cercavo più che altro una fonte di studio per quanto riguardo la nascita di un applicativo desktop, studiare così da varie fonti anonime su internet mi rende ansioso di impostare basi non corrette o di perdere tempo(tempo che non ho a causa dell'uni), quindi volevo andare sul sicuro. Grazie per le risposte comunque!

Oddio, nemmeno le fonti "ufficiali" ti dicono tutto e/o te lo dicono in maniera al 100% corretta. Alla fin fine, si tratta sempre di imparare dall'esperienza.

Comunque sia, applicazione desktop significa Windows, Linux, macOS o una combinazione dei tre. E tra un'applicazione cross-platform e una platform-specific, le tecnologie usabili ovviamente cambiano.

Se conosci Java, mi verrebbe da consigliare di buttarti su JavaFX. Non che sai la tecnologia più diffusa al mondo, ma è discreta. Ovviamente c'è pure Swing, quella più usata in ambito Java.

Python, hai pyQT, pyGTK, wxPython.

Tutte queste, sono cross-platform. A cui puoi benissimo aggiungere Mono/winForms e Electron/Javascript.

E ce ne sono molti altri https://en.wikipedia.org/wiki/List_of_widget_toolkits

Ma si può benissimo programmare solo per Windows, usando C# e WPF. O per Mac, usando Cocoa e Swift.

Il problema è che sono tecnologie spesso molto diverse tra di loro, per cui possono o non possono essere adatte al programmatore, per una questione di conoscenza pregresse, di familiarità con determinati pattern, per una questione di abitudine.

Per esempio, imGui implementa il tipico paradigma dell'immediate GUI, che per alcuni è la panacea per ogni male, per altri è il male supremo.

Per cui, dovresti prima dare un'occhiata a qualche esempio che fa uso di queste tecnologie, in modo da cominciare a capire cosa ti si adatta. E decidi ora se andrai di cross-platform o meno.
 

bigendian

Utente Attivo
214
103
OS
Linux forever, freedom
Piuttosto che roba interpretata, schifezze mondo microsoft/mono, e altro, esiste anche la vera programmazione, cioe' il compilato, che produce codici operativi eseguibili (un tempo per programmare si intendeva scrivere un programma che la cpu esegue, non uno script che un interprete, eseguito a suavolta dalla cpu, esegue), ma sono solo dettagli, ovviamente.

Perche non scrivere qualche tool in semplice C o C++, o rust ?
 

Andretti60

Utente Èlite
3,969
2,680
Piuttosto che roba interpretata, schifezze mondo microsoft/mono, e altro, esiste anche la vera programmazione, cioe' il compilato, che produce codici operativi eseguibili (un tempo per programmare si intendeva scrivere un programma che la cpu esegue, non uno script che un interprete, eseguito a suavolta dalla cpu, esegue), ma sono solo dettagli, ovviamente.

Perche non scrivere qualche tool in semplice C o C++, o rust ?
Scusa ma mi pare che tu abbia le idee molto confuso. Innanzi tutto non esiste la “vera” programmazione, si programma e basta. Secondo, ormai i linguaggi interpretati si contano sulla punta delle dita, si limitano a linguaggi tipo script e come tale hanno anche il loro utilizzo, vedi Python.
 

Edmund Blackadder

Utente Attivo
202
104
Perche non scrivere qualche tool in semplice C o C++, o rust ?
Quest'affermazione mi sembra paradossale. Se questi tre linguaggi che hai citato fossero semplici allora cose come Java o Python non esisterebbero. Conoscere bene un linguaggio non lo rende semplice per gli altri.

Non mi sentirei mai di consigliare il C (o affini) ad un neofita. È come insegnare a guidare con un autotreno. Bisogna imparare prima concetti che trascendono il linguaggio ma con cose come il C non puoi perché ti perdi nella sua complessità.

Ciò non toglie che si tratta di linguaggi molto validi.
 

bigendian

Utente Attivo
214
103
OS
Linux forever, freedom
Volevo astenermi da bambinesche contese di chi ha ragione, perche il thread ha probabilmene scopi piu "alti" come dare un consiglio.

giangiks,
il mio consiglio e' dare uno sguardo a linguaggi che molti chiamano veri e propri linguaggi, cioe' che producono codici operativi per la cpu, visto che mi pare tu sia a livello universitario e avrai bisogno di capire le cose dalle basi. Sapere cosa accade alla base e' buona cosa.



Vi piacciono i quote, che fanno sentire importanti per "squalificare" l'altro, a me no, cmq, andiamo avanti di quote.

Scusa ma mi pare che tu abbia le idee molto confuso.
A me pare che sia tu a non avere idea di molte cose. Iniziare a programmare con python significa imparare al contrario, o imparare una cosa senza capire nulla di dove ti trovi e come funziona il motore. Mio modesto parere eh, non ho bisgno di medaglie.




Quest'affermazione mi sembra paradossale. Se questi tre linguaggi che hai citato fossero semplici allora cose come Java o Python non esisterebbero. Conoscere bene un linguaggio non lo rende semplice per gli altri.

Siete liberi di "programmare" come piu vi piace, anche senza capire nulla di cio' che accade veremente nella macchina, senza sapere se il codice prodotto sono codici operativi, o se a eseguirlo e' un programma, senza capire neanche su che cpu state lavorando, cioe' di iniziare dalla fine. Ci sara' sempre un ufficietto da 1000E al mese si cui stare inchiodati alla sedia, scrivendo java per qualche assiucrazione e andarsene alle 17:00. Importante e' programmare.

Siete liberi di non fare la differenza, tra uno che sa cosa accade nella cpu e uno che non lo sa, anche se come spiegato sopra, per molti lavori non serve affatto.

Siete liberi di usare python su un microcontrollore, o il C su un ryzen3900. Siete liberi di fare quello che credete.
 
Ultima modifica:

icox

Utente Attivo
395
175
Sono abbastanza d'accordo col tuo ragionamento, conoscere quello che accade "sotto" e' un valore aggiunto importante ma oggettivamente al giorno d'oggi, con il livello di astrazione che abbiamo raggiunto, non e' piu' una conoscenza strettamente necessaria in svariati contesti. Mi vengono in mente ad esempio i data scientist che usano Python per i loro modelli: i dettagli implementativi interessano poco, la matematica che serve a loro e' tutta ad un livello piu' alto.
Definire quindi linguaggi "veri e propri" solo quelli che generano codice eseguibile dal ferro mi sembra un tantino riduttivo, il linguaggio e' solo uno strumento, la programmazione e' un'altra cosa.

Su quale linguaggio sia meglio iniziare possiamo stare a discuterne per giorni, non si trovera' mai un consenso unanime perche' non esiste IL linguaggio per iniziare, esiste solo il piu' adatto a quello che devi (iniziare a) fare e, molto piu' spesso, quello che ti propina l'insegnante/corso perche' cosi e' stato deciso.
 
  • Love
Reactions: Andretti60

bigendian

Utente Attivo
214
103
OS
Linux forever, freedom
Era una definizione di "linguaggio di programmazione" che si trova in certi libri, per differenziarlo da script interpretati non compilati da produrre opcodes della cpu. Per altro anche Java da un po ha la compilazione real time, ma tuttavia, stiamo facendo delle battaglie per avere ragione che non hanno senso, perche non sappiamo i gusti di giangiks

Nel senso, c'e' a chi piace lavorare nel settore dell'auto e conoscere a fondo il funzionamento del motore, e a chi non interessa, basta guidare, e all'accensione occasionale di una spia si chiama il carro attrezzi.

Poi, nel caso giangiks volesse lavorare nell'embedded, o piu a basso livello invece, la conoscenza di cosa accade a livello cpu e' fondamentale.

Tuttavia rileggendo ora meglio sopra lui voleva un applicativo desktop. Dunque cestinate pure le sciocchezze da me dette, python, gtw, wxwidgets, o ora electron vanno benissimo.
 
  • Like
Reactions: Andretti60 e Mursey

Andretti60

Utente Èlite
3,969
2,680
... rileggendo ora meglio sopra lui voleva un applicativo desktop. ...
Guarda, io lavoro nel settore dagli anni settanta, inizia con FORTRAN IV per passare al C, nella mia vita professionale ho usato mille linguaggi incluso Python proprio in un dispositivo embedded che usava Linux. Perché? Perché la libreria di lavoro era scritta in C, e ci occorreva solo un linguaggio scripting per interagire con l’operatore. Python mi piacque subito e ne vidi anche le possibilità dal punto di vista didattico, molto meglio del C di sicuro e io insegnai pure a programmare in C, ed era un disastro. Ci voleva molta e molta pazienza.
Ma per scrivere applicazioni desktop che girano su Windows, nulla batte la semplicità e la flessibilità di C#.
Insomma, non esiste un vero e proprio “coltellino svizzero” in programmazione, chi vuole farlo per divertirsi può usare qualsiasi linguaggio “generalista” (multi purpose) mentre chi lo fa per professione userà quello più adatto allo scopo.
 
  • Like
Reactions: Moffetta88

bigendian

Utente Attivo
214
103
OS
Linux forever, freedom
giangiks voleva esercitarsi su un applicativo desktop, immagino visuale, e immagino su windows. Quindi il C e' piuttosto fuori luogo, anche se una semplice app in C con gtk, o meglio C++, e' sempre un buon esercizio. Ma direi che con roba tipo electron si creano app grafiche ben piu accattivanti.

Tuttavia, ritengo che il C e la programmaizone a basso livello specie su sistemi embedded sia una strada molto lucrativa. In questo senso ho offerto l'idea del C.

Per me e' il C ora e' il pane, e mi offre una buona qualita' di vita, come non suggerirlo ? Innanzitutto per lavoro, ma coltivo il tutto anche la notte per divertimento, con molta modestia ora ho raggiuntoi piu diu 30 patch e oltre 50 contributi totali accettati nel kernel "mainline", il che contribuisce anche ad un ottimo punteggio nel CV. Il kernel ovviamente e' tutto in C. E' una strada, come un'altra, questione di gusti / attitudine.

Un altro consiglo che do e' non esagerare nel realizzare nel tempo libero super-programmi che restano a tuo uso e consumo. Ma piuttosto provare a dare una mano a qualche community, dove si lavora in un confronto continuo con altri esperti, che aiuta molto a migliorare, e da punteggio.

Nel mondo windows non entro anche per motivi etici, lavoro nell'opensource, esclusivamente su Linux, se dovesse capitare un obbligo ad usare windows per lavoro, cambio lavoro immediatamente.

cordiali saluti
 
  • Like
Reactions: giangiks

Entra

oppure Accedi utilizzando

Hot: PS5 VS XBOX X/S?

  • Playstation 5

    Voti: 296 63.5%
  • XBOX Series X/S

    Voti: 170 36.5%

Discussioni Simili