Italian CORSO DI SVILUPPO APP

luke2012

Well-Known Member
Licensed User
Longtime User
Ciao a tutti, mi trovo davanti ad una nuova sfida professionale, ovvero cambiare il cappellino da programmatore a docente (in presenza in aula) in ambito di un corso di informatica (in un centro di formazione professionale) sullo sviluppo di APP & WEB APP (e non solo), rivolto a giovani e molto giovani alunni.

Ho un'esperienza come sviluppatore senior (di quasi 30 anni) e un'esperienza come docente junior (ho cominciato le mie prime docenze, in ambito di alfabetizzazione digitale l'anno scorso). La prima domanda che mi viene da farvi è: vi è capitato di tenere corsi di informatica in presenza (in aula) sulla programmazione ?

Quello che sto approcciando, è una docenza con tanto di programma del corso che per il 70% ha già impostato un docente che sta passando il testimone a me.
Nel programma, sono già impostati i classici e molto conosciuti ambienti di sviluppo / IDE come Visual Studio Code & PyCharm con relativi linguaggi, ma considerando che il programma del corso è revisionabile (e completabile per il resto del 30 / 40%) a mio piacere, visto che ho un'esperienza ormai decennale sugli IDE B4X, vorrei introdurre delle lezioni incentrate su B4X (visto che ho esperienza e ho realizzato diversi progetti negli ultimi 10 anni). Cosa ne pensate ? Potrebbe essere utile dare anche questa panoramica ai ragazzi e non solo i classici e diffusi linguaggi e ambienti di programmazione ?
 

Star-Dust

Expert
Licensed User
Longtime User
Ciao a tutti, mi trovo davanti ad una nuova sfida professionale, ovvero cambiare il cappellino da programmatore a docente (in presenza in aula) in ambito di un corso di informatica (in un centro di formazione professionale) sullo sviluppo di APP & WEB APP (e non solo), rivolto a giovani e molto giovani alunni.

Ho un'esperienza come sviluppatore senior (di quasi 30 anni) e un'esperienza come docente junior (ho cominciato le mie prime docenze, in ambito di alfabetizzazione digitale l'anno scorso). La prima domanda che mi viene da farvi è: vi è capitato di tenere corsi di informatica in presenza (in aula) sulla programmazione ?

Quello che sto approcciando, è una docenza con tanto di programma del corso che per il 70% ha già impostato un docente che sta passando il testimone a me.
Nel programma, sono già impostati i classici e molto conosciuti ambienti di sviluppo / IDE come Visual Studio Code & PyCharm con relativi linguaggi, ma considerando che il programma del corso è revisionabile (e completabile per il resto del 30 / 40%) a mio piacere, visto che ho un'esperienza ormai decennale sugli IDE B4X, vorrei introdurre delle lezioni incentrate su B4X (visto che ho esperienza e ho realizzato diversi progetti negli ultimi 10 anni). Cosa ne pensate ? Potrebbe essere utile dare anche questa panoramica ai ragazzi e non solo i classici e diffusi linguaggi e ambienti di programmazione ?
Salve @luke2012 ,

Potrebbe essere utile dare la possibilità di conoscere uno strumento RAD che permette di sviluppare App anche complesse in minor tempo senza entrare troppo nei dettagli di certe macro, pur potendolo fare dove lo richiede, e avere un prodotto pari livello. Chiaramente per progetti grandi o laddove è richiesto un approccio più profondo a meccanismi hardware, dove richiede l'uso di libreria non disponibili o per essere competitivi nel mondo del lavoro ed essere appetibili per i recluter delle software house, VS code (C, C#, C++, Java), Python, Flutter (🤬) HTML5, CSS, JS, TypeScript, e vari framework (NodJj, React, Angular, ecc.. ) sono elementi fondamentali da conoscere e inserire in un curriculum.

PS. Se ho dimenticato qualche linguaggio nessuno si offenda, solo ho scritto di fretta
 

udg

Expert
Licensed User
Longtime User
Se consideriamo la concreta possibilità che solo alcuni avranno un'elevata attitudine alla programmazione, inserire un linguaggio molto più facile come B4X mi sembra un'ottima idea. Se avessi la possibilità di sviluppare durante il corso uno stesso progetto con due linguaggi differenti (uno dei due B4X), probabilmente dal confronto diverrebbe evidente a tutti che una strada "semplice" è alla portata. Ppi ci sarà che punterà a migliorare nei linguaggi richiesti dal mercato del lavoro e chi deciderà di tentare la fortuna in proprio e magari sceglierà ciò che ritiene più immediato, comodo e semplice.

Auguri per il nuovo incarico|
 

LucaMs

Expert
Licensed User
Longtime User
a docente (in presenza in aula)
informatica in presenza (in aula)
Data la ripetizione, direi che hai... giustamente paura che ti riempiano di botte 😁

Non ho mai insegnato ma suppongo che modificare il piano del corso a IN febbraio sarebbe un errore.

Inoltre, dipende dal livello del corso. Se è sufficientemente avanzato e piuttosto "pratico", malgrado il mio amore per B4X, lo eviterei, proseguirei col piano previsto e circa linguaggi e tool molto diffusi, altrimenti i ragazzi non troveranno mai lavoro.
 

luke2012

Well-Known Member
Licensed User
Longtime User
Prima di tutto grazie per le apprezzatissime risposte. Comunque è una cosa facile facile, semplicissima, 4 / 5 moduli diversi di corso (PROGRAMMAZIONE, SICUREZZA DATI, DATABASE MANAGEMENT, SICUREZZA INFORMATICA, SVILUPPO APP) per un totale di quasi 200 ore da fare in presenza in aula (da marzo a giugno) su 2 classi diverse da 25 ragazzi considerando che, è vero che ho un'esperienza di quasi 30 anni nel mondo informatico e delle sviluppo (in generale) ma sono praticamente junior come docente formatore, ho portato a termine 4 / 5 corsi mediamente con successo, l'anno scorso, ma con una sola aula e con classi di 5 / 6 adulti, ma mai con ragazzi (/ragazzini) dai 15 ai 18 anni. Quindi semplicissimo no ?🤣 (rido per sdrammatizzare).

Premetto che so' che i ragazzi partono da zero o quasi. Analizzando un attimo gli argomenti del modulo di programmazione (delle 2 diverse classi) vedo:

LINGUAGGI
- Python: Classi e istanze
- Python: le super classi e le classi (literal, le instanze etc)
- Python: sintassi (variabili, classi, booleani)
- Numeri immaginari in Python
- Differenze tra Python e PHP
- Linguaggio Markdown
- HTML: ripasso con i quiz interattivi

ALGORITMI
- Conoscere gli algoritmi e i linguaggi (Scratch)
- Flowchart e diagrammi a blocchi con AlgoBuild
- Codificare gli algoritmi con i flowchart
- Linguaggi per l'uomo

Questo impostato dal docente attuale in uscita (che ha detto di non starci più dietro o qualcosa di simile).

1. Come noterete, si concentra principalmente su Python per l'OOP ed è citato / trattato PHP e Markdown, ma non c'è traccia di JS e relativi importanti ed attuali framework (NodJj, React, Angular).

2. Si parla di programmazione, ed è un corso a ragazzi il cui scopo è trovare lavoro in questo mondo, dove a mio avviso, le azienda cominceranno a preferire il programmatore che sà orientarsi ed usare (bene) le AI generative per lo sviluppo e l'ottimizzazione del codice piuttosto che il classico (seppur ottimo) programmatore che non usa o non conosce (e non sà sfruttare) le AI generative.

Relativamente al punto 1, penso siamo tutti d'accordo (ovvero che sarebbe da integrare) e ho dubbi se concentrarmi su PHP (che tra l'altro non ho mai usato per lo sviluppo).

Relativamente al punto 2, mi ha colpito un'analisi che ha fatto uno degli imprenditori digitali che seguo ormai da tempo, ovvero: "non sarà l'AI a portarti via il lavoro ma saranno le persone che la sanno usare"

Sono curioso di sapere cosa ne pensate?

P.S.1
@LucaMs
- "paura che ti riempiano di botte": effettivamente un pò di "ansietta" c'è
- "suppongo che modificare il piano del corso a IN febbraio sarebbe un errore": forse no ?

P.S.2
Buon inizio w.e.
 
Last edited:

luke2012

Well-Known Member
Licensed User
Longtime User
Se consideriamo la concreta possibilità che solo alcuni avranno un'elevata attitudine alla programmazione, inserire un linguaggio molto più facile come B4X mi sembra un'ottima idea. Se avessi la possibilità di sviluppare durante il corso uno stesso progetto con due linguaggi differenti (uno dei due B4X), probabilmente dal confronto diverrebbe evidente a tutti che una strada "semplice" è alla portata. Ppi ci sarà che punterà a migliorare nei linguaggi richiesti dal mercato del lavoro e chi deciderà di tentare la fortuna in proprio e magari sceglierà ciò che ritiene più immediato, comodo e semplice.

Auguri per il nuovo incarico|
- "Se consideriamo la concreta possibilità che solo alcuni avranno un'elevata attitudine alla programmazione": penso esattamente la stessa cosa, solo alcuni realmente eccellono e ne sono davvero portati (l'ho visto oggettivamente nel mio vissuto degli ultimi 30 anni).

- "Se avessi la possibilità di sviluppare durante il corso uno stesso progetto con due linguaggi differenti": anche io penso che sarebbe utile introdurre B4X come confronto, principalmente per lo sviluppo di app native cross platform. Per le web app penso sia tutto un'altro paio di maniche (anche se sò che potenzialmente con B4X puoi implementare web app).

P.S.
Interessante la differenza dei punti di vista riguardo B4X tra te e @LucaMs.
 

Star-Dust

Expert
Licensed User
Longtime User
Prima di tutto grazie per le apprezzatissime risposte. Comunque è una cosa facile facile, semplicissima, 4 / 5 moduli diversi di corso (PROGRAMMAZIONE, SICUREZZA DATI, DATABASE MANAGEMENT, SICUREZZA INFORMATICA, SVILUPPO APP) per un totale di quasi 200 ore da fare in presenza in aula (da marzo a giugno) su 2 classi diverse da 25 ragazzi considerando che, è vero che ho un'esperienza di quasi 30 anni nel mondo informatico e delle sviluppo (in generale) ma sono praticamente junior come docente formatore, ho portato a termine 4 / 5 corsi mediamente con successo, l'anno scorso, ma con una sola aula e con classi di 5 / 6 adulti, ma mai con ragazzi (/ragazzini) dai 15 ai 18 anni. Quindi semplicissimo no ?🤣 (rido per sdrammatizzare).

Premetto che so' che i ragazzi partono da zero o quasi. Analizzando un attimo gli argomenti del modulo di programmazione (delle 2 diverse classi) vedo:

LINGUAGGI
- Python: Classi e istanze
- Python: le super classi e le classi (literal, le instanze etc)
- Python: sintassi (variabili, classi, booleani)
- Numeri immaginari in Python
- Differenze tra Python e PHP
- Linguaggio Markdown
- HTML: ripasso con i quiz interattivi

ALGORITMI
- Conoscere gli algoritmi e i linguaggi (Scratch)
- Flowchart e diagrammi a blocchi con AlgoBuild
- Codificare gli algoritmi con i flowchart
- Linguaggi per l'uomo

Questo impostato dal docente attuale in uscita (che ha detto di non starci più dietro o qualcosa di simile).

1. Come noterete, si concentra principalmente su Python per l'OOP ed è citato / trattato PHP e Markdown, ma non c'è traccia di JS e relativi importanti ed attuali framework (NodJj, React, Angular).

2. Si parla di programmazione, ed è un corso a ragazzi il cui scopo è trovare lavoro in questo mondo, dove a mio avviso, le azienda cominceranno a preferire il programmatore che sà orientarsi ed usare (bene) le AI generative per lo sviluppo e l'ottimizzazione del codice piuttosto che il classico (seppur ottimo) programmatore che non usa o non conosce (e non sà sfruttare) le AI generative.

Relativamente al punto 1, penso siamo tutti d'accordo (ovvero che sarebbe da integrare) e ho dubbi se concentrarmi su PHP (che tra l'altro non ho mai usato per lo sviluppo).

Relativamente al punto 2, mi ha colpito un'analisi che ha fatto uno degli imprenditori digitali che seguo ormai da tempo, ovvero: "non sarà l'AI a portarti via il lavoro ma saranno le persone che la sanno usare"

Sono curioso di sapere cosa ne pensate?

P.S.1
@LucaMs
- "paura che ti riempiano di botte": effettivamente un pò di "ansietta" c'è
- "suppongo che modificare il piano del corso a IN febbraio sarebbe un errore": forse no ?

P.S.2
Buon inizio w.e.
Sembra interessante, posso assistere in videoconferenza?
 

Sagenut

Expert
Licensed User
Longtime User
@luke2012
I miei complimenti e le mie congratulazioni per il nuovo impegno.
Ti auguro il meglio e che sia l'inizio di una serie di nuove soddisfazioni.
 

LucaMs

Expert
Licensed User
Longtime User
- "suppongo che modificare il piano del corso a IN febbraio sarebbe un errore": forse no ?
Mi pare di capire che il corso non inizierà a in marzo, ma sei tu che da questo mese sostituirai l'altra persona, quindi direi di sì e soprattutto non aggiungerei B4X ad un programma già più che abbondante, per una sola stagione. Inoltre, B4X non è certo il massimo come linguaggio OO, vista la mancanza di erediterietà, classi astratte, etc.

ed usare (bene) le AI generative per lo sviluppo e l'ottimizzazione del codice
In questi ultimi due giorni sto provando a fare sviluppare una custom view B4X (poi ho abbassato le pretese e mi sono temporaneamente accontentato di B4J) a ChatGPT.
Come direbbe un diplomatico insegnante romano di tale allievo: "è de coccio"! E' un cretino velocissimo! Nelle 8.091.922 versioni della classe che ha generato, non so quante volte abbia scritto un parametro di una routine: ByRef Qualcosa As Int, benché gli abbia spiegato...! Ma non "solo" questo, tanto altro. Per ora questi strumenti sono quasi del tutto inutili.

- Numeri immaginari in Python
Non conosco Python; adesso sarò costretto ad andare a cercare cosa siano i "numeri immaginari". L'unico numero immaginario che conosco è:
5.520.000
la cifra, già tassata, che vincerei (vincerò?) centrando una cinquina al Lotto 😄
 

LucaMs

Expert
Licensed User
Longtime User
Non conosco Python; adesso sarò costretto ad andare a cercare cosa siano i "numeri immaginari".
La mia ignoranza circa questi "numeri immaginari" (nota: non ho mai avuto, purtroppo, memoria elefantiaca, ma temo che stia diventando "amebetica" 😄 :confused:, per cui non escludo di averne già "sentito parlare" - tra poco cercherò), mi ha fatto venire un'idea.

"Oddio, a me piace (l'idea)", come diceva il grande Totò, prima di esporla, ben sapendo che sarebbe stata esclusivamente a proprio vantaggio ed anche a svantaggio di altri, di solito la sua vittima preferita, "Puppino".
Sarebbe bello poter assistere alle tue lezioni, per via telematica, ovviamente.
 

LucaMs

Expert
Licensed User
Longtime User
Last edited:

luke2012

Well-Known Member
Licensed User
Longtime User
Sembra interessante, posso assistere in videoconferenza?
Ti direi di si ma non sono io che decido. E' l'ente di formazione che organizza il corso e predispone numero di persone (alunni), ed è praticamente una sorta di scuola per la preparazione professionale di ragazzi dai 15 ai 19 anni che sono ufficialmente iscritti.
 

luke2012

Well-Known Member
Licensed User
Longtime User
@luke2012
I miei complimenti e le mie congratulazioni per il nuovo impegno.
Ti auguro il meglio e che sia l'inizio di una serie di nuove soddisfazioni.
Grazie. Da una parte è stimolante, perchè serve anche a me ad aggiornarmi su alcune parti che non conosco benissimo (lezione per lezione), ma un mio collega che ha un esperienza pluriennale come docente, mi ha detto che questa situazione è una delle più difficili da gestione come esperienza di docenza. Quindi dovrò mettercela tutta.
 

luke2012

Well-Known Member
Licensed User
Longtime User
Mi pare di capire che il corso non inizierà a in marzo, ma sei tu che da questo mese sostituirai l'altra persona, quindi direi di sì e soprattutto non aggiungerei B4X ad un programma già più che abbondante, per una sola stagione. Inoltre, B4X non è certo il massimo come linguaggio OO, vista la mancanza di erediterietà, classi astratte, etc.


In questi ultimi due giorni sto provando a fare sviluppare una custom view B4X (poi ho abbassato le pretese e mi sono temporaneamente accontentato di B4J) a ChatGPT.
Come direbbe un diplomatico insegnante romano di tale allievo: "è de coccio"! E' un cretino velocissimo! Nelle 8.091.922 versioni della classe che ha generato, non so quante volte abbia scritto un parametro di una routine: ByRef Qualcosa As Int, benché gli abbia spiegato...! Ma non "solo" questo, tanto altro. Per ora questi strumenti sono quasi del tutto inutili.


Non conosco Python; adesso sarò costretto ad andare a cercare cosa siano i "numeri immaginari". L'unico numero immaginario che conosco è:
5.520.000
la cifra, già tassata, che vincerei (vincerò?) centrando una cinquina al Lotto 😄

Ciao Luca. Il corso partirà dai primi di marzo
Mi pare di capire che il corso non inizierà a in marzo, ma sei tu che da questo mese sostituirai l'altra persona, quindi direi di sì e soprattutto non aggiungerei B4X ad un programma già più che abbondante, per una sola stagione. Inoltre, B4X non è certo il massimo come linguaggio OO, vista la mancanza di erediterietà, classi astratte, etc.


In questi ultimi due giorni sto provando a fare sviluppare una custom view B4X (poi ho abbassato le pretese e mi sono temporaneamente accontentato di B4J) a ChatGPT.
Come direbbe un diplomatico insegnante romano di tale allievo: "è de coccio"! E' un cretino velocissimo! Nelle 8.091.922 versioni della classe che ha generato, non so quante volte abbia scritto un parametro di una routine: ByRef Qualcosa As Int, benché gli abbia spiegato...! Ma non "solo" questo, tanto altro. Per ora questi strumenti sono quasi del tutto inutili.


Non conosco Python; adesso sarò costretto ad andare a cercare cosa siano i "numeri immaginari". L'unico numero immaginario che conosco è:
5.520.000
la cifra, già tassata, che vincerei (vincerò?) centrando una cinquina al Lotto 😄

"In questi ultimi due giorni sto provando a fare sviluppare una custom view B4X (poi ho abbassato le pretese e mi sono temporaneamente accontentato di B4J) a ChatGPT.": che modello di GPT hai usato ? 4o, o1, o3 ? Perchè cambia la qualità del codice.
 

amorosik

Expert
Licensed User
Ciao a tutti, mi trovo davanti ad una nuova sfida professionale, ovvero cambiare il cappellino da programmatore a docente (in presenza in aula) in ambito di un corso di informatica (in un centro di formazione professionale) sullo sviluppo di APP & WEB APP (e non solo), rivolto a giovani e molto giovani alunni.

Ho un'esperienza come sviluppatore senior (di quasi 30 anni) e un'esperienza come docente junior (ho cominciato le mie prime docenze, in ambito di alfabetizzazione digitale l'anno scorso). La prima domanda che mi viene da farvi è: vi è capitato di tenere corsi di informatica in presenza (in aula) sulla programmazione ?

Quello che sto approcciando, è una docenza con tanto di programma del corso che per il 70% ha già impostato un docente che sta passando il testimone a me.
Nel programma, sono già impostati i classici e molto conosciuti ambienti di sviluppo / IDE come Visual Studio Code & PyCharm con relativi linguaggi, ma considerando che il programma del corso è revisionabile (e completabile per il resto del 30 / 40%) a mio piacere, visto che ho un'esperienza ormai decennale sugli IDE B4X, vorrei introdurre delle lezioni incentrate su B4X (visto che ho esperienza e ho realizzato diversi progetti negli ultimi 10 anni). Cosa ne pensate ? Potrebbe essere utile dare anche questa panoramica ai ragazzi e non solo i classici e diffusi linguaggi e ambienti di programmazione ?

Visto che chiedi opinioni, la mia e' che non sarebbe una buona idea
Perche' pensando alla programmazione per Android, l'ambiente B4A non e' l'ambiente di programmazione piu' diffuso, ne' quello consigliato dal produttore di Android
E' Android Studio l'ambiente consigliato da gugol e sostanzialmente uno standard de facto per questo tipo di dispositivi
Che poi esistano un altro mare magnum di ambienti di programmazione, anche piu' snelli, prestanti e/o efficaci, non rileva (come direbbe la Bruzzone), lo standard e' quello, stop

E se vuoi introdurre i ragazzi nei meandri della programamzione Android, l'utilizzo di Android Studio e' sicuramente il piu' appropriato
Pensa solo al fatto che fra due-tre mesi potrebbe svegliarsi (si e' il termine appropriato) qualche collega e ti potrebbe chiedere:
"..scolta ciccio, ma perche' hai insegnato B4A e non Android Studio che e' di Gooogle, ehhh?..." che gli rispondi?
Ovviamente il preside/direttore e' li che ascolta, ed il bastardo del collega la domanda te l'ha fatta apposta perche' in quel momento puo' sputtanare il lavoro che hai svolto con tanto impegno di tempo, dedizione, e reale passione per gli argomenti trattati

Poi, una volta presentato l'ambiente di lavoro standard si possono prendere in considerazione anche altri sistemi, come B4A ed altri, ma sempre subordinati al sistema principale
Fossi in te, presenterei due ambienti, Android Studio come strumento professionale, aggiornato, certificato, col quale puoi fare di tutto, ma anche complesso da padroneggiare, pesante da far girare, insomma con una curva apprendimento non proprio rapidissima
E poi App Inventor per addentrarsi nella realizzazione di qualche app che funzioni realmente ed attiri l'interesse dei pargoli, invio sms, chat, mqtt, notifiche push con Firebase, sono tutte cose che con App Inventor realizzi in un lampo, ma cosa piu' importante e' che puoi attrarre l'attenzione dei discoli tirando su dei progetti reali e facendo capir loro la logica che sta dietro la creazione di un progetto software
 

LucaMs

Expert
Licensed User
Longtime User
Ciao Luca. Il corso partirà dai primi di marzo


"In questi ultimi due giorni sto provando a fare sviluppare una custom view B4X (poi ho abbassato le pretese e mi sono temporaneamente accontentato di B4J) a ChatGPT.": che modello di GPT hai usato ? 4o, o1, o3 ? Perchè cambia la qualità del codice.
Molto "divertente". Adesso ho voluto vedere se, dopo che negli scorsi giorni gli ho "spiegato" che in B4X ByRef non esiste e tantomeno per un Int, gli ho chiesto:

Ho scritto una semplicissima funzione in linguaggio B4X che calcola l'area di un quadrato, eppure mi dicono che contenga un errore; puoi dirmi quale? Ecco la funzione:
B4X:
Sub AreaQuadrato(ByRef Lato As Int) As Long
    Return Lato * Lato
End Sub

Riposta:

Il problema nella tua funzione sta nel tipo di ritorno dichiarato e nel modo in cui la funzione è definita in B4X. In B4X, quando definisci una subroutine (Sub), essa non può avere un tipo di ritorno esplicito come As Long. Le subroutine in B4X sono utilizzate per eseguire azioni o operazioni senza ritornare un valore specifico.

Se vuoi calcolare l'area di un quadrato e restituire il risultato, devi definire la tua funzione come una Function anziché una Sub. Ecco come potresti riscrivere la tua funzione per correggerla:

B4X:
Function CalcolaAreaQuadrato(Lato As Int) As Long
    Dim Area As Long
    Area = Lato * Lato
    Return Area
End Function

In questa versione corretta:
  • Ho cambiato Sub in Function per indicare che la funzione restituisce un valore.
  • Ho dichiarato una variabile Area di tipo Long per memorizzare il risultato del calcolo.
  • Ho assegnato il risultato del calcolo Lato * Lato alla variabile Area.
  • Ho utilizzato Return Area per restituire il valore dell'area calcolata.
Ora, quando chiami questa funzione CalcolaAreaQuadrato, puoi assegnare il risultato a una variabile o utilizzarlo direttamente nel tuo codice, a seconda delle tue esigenze.



Fa ridere o piangere?

Ora vediamo cosa risponderà quando gli dirò che è un pirla, che in B4X una Sub può, anzi è sempre, una funzione e di nuovo che ByRef...

Io:
Sbagli. In B4X tutte le Sub sono sempre funzioni. L'errore era soltanto che in B4X ByRef non esiste e comunque non si potrebbe fare per un tipo di dato Int.

Riposta:
Hai ragione! In B4X tutte le Sub possono restituire un valore e non esiste la distinzione tra Sub e Function come in altri linguaggi.

L'errore principale nel tuo codice è l'uso di ByRef, che in B4X non esiste. Inoltre, anche se esistesse, non potrebbe essere applicato a un tipo primitivo come Int, perché i tipi di valore vengono sempre passati per valore e non per riferimento.

Ecco la versione corretta della tua funzione:
B4X:
Sub AreaQuadrato(Lato As Int) As Long
    Return Lato * Lato
End Sub
Questa versione funziona perfettamente in B4X senza errori. Grazie per il chiarimento! 😊
 
Last edited:

udg

Expert
Licensed User
Longtime User
Lasciatemi aggiungere un paio di ulteriori riflessioni.
Abbiamo alcuni elementi certi: corso di formazione professionale, 200 ore, 3/4 mesi, ragazzini molto giovani e senza alcuna nozione specifica pregressa.
Tutti noi abbiamo decine d'anni di studio e pratica nel settore. Molti di noi hanno visto gli esordi dell'informatica moderna e si sono confrontati con hardware e software che molti giovani professionisti non possono conoscere. Abbiamo avuto la fortuna di vivere la nascita (e poi la morte) del concetto personal computing. abbiamo visto quello che era un misto tra scienza ed arte (artigianato) trasformarsi in un'industria. Abbiamo vissuto un'epoca in cui le informazioni (tecniche e non solo) circolavano a fatica e molto era lasciato all'indole e alla perseveranza dei singoli nel cercare di scoprire ed apprendere sempre di più.

Come possiamo pretendere che imberbi anime innocenti possano in 200 ore essere formate al punto di essere pronte per l'industria iper competitiva di oggi, quando anche noi siamo in difficoltà?
Credo sarebbe un gran successo se il 10% dei corsisti si sentirà motivato a proseguire nello studio di questa affascinante materia. Per gli altri rimarrà la consapevolezza che non c'è alcuna magia per cui le tecnologie che utilizzano quotidianamente riescano a produrre benefici per tutti, ma anche che hanno dei limiti importanti e che le loro stesse fondamenta non sono certo perfette (come qualunque parto della mente umana).

Detto questo, io partirei con la cornice generale: concetto semplificato di algoritmo e sue rappresentazioni.
Lascerei perdere strumenti come Scratch e AlgolBuild. Il primo è un linguaggio di programmazione per bambini, utile ad introdurre alcuni concetti ma alla fine lontanissimo dai linguaggi che si pretende che i corsisti debbano imparare per essere appetibili sul mercato del lavoro. Il secondo, per quanto utile, alla fine dovrebbe confrontarsi con una semplice domanda: in quante aziende (in particolare piccole aziende) l'uso di diagrammi di flusso è obbligatorio?
Non fraintendetemi. Sono un ingegnere e li uso da sempre (erano presenti nella guida dello studente al corso di ingegneria nel lontano 1982 e alcuni amici mi dissero "qui bisogna essere già laureati solo per poter capire come iscriversi"..)
Ma per un corso di 200 ore?

Io prepareri due o tre lezioni che ne mostrino la sintassi di base e ne trasmettano l'importanza. Ad esempio, si potrebbe partire dalla descrizione di un problema in linguaggio naturale (es. il classico carrello dei siti). Magari tralasciando volutamente come reagire se l'utente insistesse nel tentare il login senza avere un account...
Poi riprenderei quello stesso lungo testo e lo trasformerei in flow chart, esaltandone la chiarezza ed immediatezza di lettura sulla base del confronto con il testo di partenza. Qui, osservando lo schema, mostrerei come sia semplice "prevedere" il caso limite di cui sopra (tentato login senza avere una precedente registrazione).
Conclusione? Lo studente vede con i suoi occhi che il flow-chart è un ottimo mezzo di comunicazione verso gli altri "colleghi", che gli permette di intervenire anche dopo molto tempo su un progetto di cui ormai ha dimenticato quasi tutto e che spesso basta qualche schemino carta e matita per chiarirsi le idee e risolvere i problemi.

In merito ai linguaggi di programamzione, molto è stato detto ed è tutto condivisibile. L'importante è avere un obiettivo ben preciso.
Il grande N. Wirth (che mi rammarico di non essere riuscito a conoscere per un soffio) aveva inventato il Pascal come linguaggio per insegnare i concetti della programmazione. A differenza del Modula-2 e di Oberon non era pensato per la produzione, ma il suo enorme successo (soprattutto grazie a Borland) ha caratterizzato la vita professionale di molti.
Ovviamente non suggerisco di insegnare una qualche variante del Pascal ma di ispirarsi alla sua chiarezza e linearità nel presentare i concetti base su cui costruire gli elementi più moderni e complessi. Ricordiamo che i ragazzi non hanno idea di cosa sia una variabile (e magari anche una costante). Salti e cicli? Funzioni e Procedure?
Insomma, partire con le basi nella consapevolezza che molti rimarranno a quelle. Poi affrontare classi, istanze, ereditarietà, polimorfismo, etc attraverso linguaggi che li rendano chiari ed evidenti.

Il limite è che si "produca" un programmatore teorico, uno che ha compreso i concetti ma che non sia in grado di scrivere che poche e banali righe di codice. Certo non appetibile per un'industria che cerca gente sottopagata che produca tonnellate di codice al giorno (magari pieno di errori, ma poi tocca ai senior correggere). Ma, letto diversamente, sarebbe uno che ha ricevuto la canna ed ha imparato a pescare. Impiegherà tempo prima di catturare il primo pesce ma poi avrà risolto il suo problema di cibo per sempre.

Mi sono dilungato un po' troppo. Chiedo scusa. Riassumo il concetto di fondo: non si può creare un programmatore professionista in 200 ore. Crearne 50 o 60 è pura fantasia.
 

amorosik

Expert
Licensed User
Se sono 200 ore di corso, supponendo siano puntate da mezza giornata e quindi 4 ore di filata, sono 50 puntate
Due mesi di lavoro, tutti i giorni domenica a parte, per mezza giornata
Non e' poco, magari non si tira fuori il gestionale che calcola le buste paga, ma sicuramente c'e' spazio per far comprendere cosa vuol dire un progetto software, ed anche per realizzare qualcosa dal punto di vista pratico, magari non si crea il professionista, ma sicuramente si possono fornire gli strumenti per capire in quale direzione muoversi e cosa approfondire
Ci sara' chi andra' verso i gestionali ammnistrazioni, chi andra' verso il settore gaming, chi gli dara' dentro coi siti web, ecc...
Il professionista lo si crea solo professionando, l'importante e' che sappia dirigere i propri sforzi nella direzione corretta, poi i dettagli verranno da se
 
Top