Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

quale linguaggio di programmazione mondo del lavoro

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto UtenteMassimoB, Foto Utentefairyvilje

0
voti

[11] Re: quale linguaggio di programmazione mondo del lavoro

Messaggioda Foto Utentearkeo2001 » 27 dic 2018, 19:00

Credo di essere il solo a detestare il concetto di "flussi". Meno male che con il C++ si possono benissimo usare printf, fseek, fread, etc... Il paradigma a oggetti, per quanto mi riguarda, è semplicemente altrove e davvero non capisco perché molti testi dedichino un sacco di spazio ai flussi, funzionalità per me del tutto secondarie. Altra prova se ce ne fosse bisogno che la quasi totale retrocompatibilità è il miglior punto di forza del C++: ogni problema ha millemila possibili approcci e soluzioni.
--
Avatar utente
Foto Utentearkeo2001
445 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 309
Iscritto il: 1 ago 2012, 9:12

0
voti

[12] Re: quale linguaggio di programmazione mondo del lavoro

Messaggioda Foto Utentefairyvilje » 27 dic 2018, 19:17

Purtroppo non ho manuali da segnalare, ho imparato il linguaggio per la prima volta troppo tempo fa per consigliare risorse aggiornate ed ora mi baso sugli standard. Probabilmente qualcuno saprà consigliarti a questo proposito :).

@arkeo2001: credo di si, ma come hai detto te se non ti piacciono non sei costretto ad usare la libreria standard C++ :D. Si tratta di un livello di astrazione, niente di più.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
10,7k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 2330
Iscritto il: 24 gen 2012, 19:23

0
voti

[13] Re: quale linguaggio di programmazione mondo del lavoro

Messaggioda Foto UtenteWALTERmwp » 27 dic 2018, 19:37

dadduni ha scritto:(...) una manciata di colloqui di lavoro e mi è stato chiesto più volte il C++. (...) Non mi è mai stato insegnato il paradigma ad oggetti, ma a quanto pare ai colloqui viene chiesto anche agli elettronici (...)
se ti è stato chiesto il C++ forse è perché l'ambito applicativo è quello che spesso lo predilige, magari si tratta di sviluppare software(firmware) proprio per microcontrollori, magari con architetture ARM.
Forse si possono esprimere considerazioni in astratto, rispetto al settore d'interesse, però poi è da vedere dove si capita.
Il paradigma ad oggetti, di per sé, non credo richieda un articolato percorso di studi, è abbordabile, la sostanza sta poi forse proprio nella conoscenza e nell'utilizzo pratico del linguaggio specifico.
Io vado a rimorchio e mi permetto d'evocare Foto Utentedimaios, se potesse passare di quà credo sarebbe utile ed interessante anche la sua opinione.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
21,7k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 6222
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

9
voti

[14] Re: quale linguaggio di programmazione mondo del lavoro

Messaggioda Foto Utentedimaios » 29 dic 2018, 22:39

dadduni ha scritto:Ho precedentemente fatto una manciata di colloqui di lavoro e mi è stato chiesto più volte il C++.


Come spesso accade. Sono sempre meno gli specialisti del C++ e diventano "merce rara" ( attenzione, ho detto specialisti e non dilettanti ). Le mode del software convogliano molti giovani verso il web con tutto quello che comporta compreso il caos totale e distorsioni di vario genere derivanti dalla mancanza di una direttiva precisa ed univoca.
A livello di linguaggi il web rappresenta il peggior esempio dell'informatica. Javascript fa da padrone quando non ci sono le basi, basta guardare l'origine del linguaggio e le forzature attuali.

Il C++ è con il C il linguaggio più vicino alla macchina visto che l'assembler si usa ormai pochissimo.
Nel mondo embedded se vuoi essere veramente efficiente e sfruttare l'hardware non hai molte alternative.

Un esempio lampante è il cambio Android dalla Dalvik alla ART. Nella prima il codice veniva compilato in linguaggio macchina in tempo reale mentre la seconda compila interamente il codice durante il setup dell'applicazione e non a runtime.

Il meccanismo è stato cambiato malgrado la potenza dei processori e la quantità di memoria siano stati notevolmente incrementati da Android 4.4 in poi, ciò significa che il compilato al volo non poteva competere con il pre-compilato.
La nuova macchina ART esprime anche altre migliorie ma la primaria è senz'altro quella che ho appena illustrato.

Un'altra differenza fondamentale tra C++ ed altri linguaggi moderni tipo il C# o Java consiste nella gestione della memoria.
Il C++ è unmanaged mentre C# e Java sono managed ovvero si avvalgono del garbage collector.

Questo ha delle implicazioni importantissime nello sviluppo del software soprattutto quando si parla di embedded e di determinismo.
Il garbage collector è sempre un inquilino scomodo per le applicazioni embedded soprattutto se si programma a basso livello.
Nelle applicazioni di controllo è fondamentalmente bandito perché l'unico modo per avere un certo grado di determinismo è quello di evitare che entri in azione il chè equivale a non averlo.
Utilizzare un linguaggio managed cercando di escludere i meccanismi di garbage collecting sembra una forzatura ma in diversi ambiti vengono addirittura consigliate delle tecniche specifiche per attuare questa strategia.

Ecco quindi che in tutte le applicazioni dove è richiesto determinismo ed efficienza il C++ rimane un approdo sicuro.

Ricorda che per la parte GUI il C++ non è il candidato migliore anche se librerie come la Qt offrono un supporto considerevole.

Il problema primario che dovrai affrontare nello studio del C++ sarà l'enorme complessità del linguaggio di programmazione.

dadduni ha scritto:
Sono piuttosto pratico di C e conosco qualcosa di assembly, programmo senza problemi su STM32.


Nel campo dei microcontrollori il C è ancora il linguaggio di programmazione più impiegato e addirittura ha registrato negli ultimi anni un trend crescente.
Questo trend però non è destinato a salire per sempre per questioni legate allo sviluppo delle nuove famiglie di controllori.
Se prendi un STM32F0 è evidente che utilizzerai il C in quanto la memoria ed il core non ti permettono lo sviluppo di un'applicazione di proporzioni esagerate.
Già con un STM32F7 o con un STM32H7 le cose cambiano radicalmente.

Le frequenze di clock superano i 216MHz ed un taglio di memoria di 1MB lo trovi senza problemi.
A questo punto puoi gestire progetti grossi ed impiegare più RAM ed oggettivamente in un progetto di grosse dimensioni il C++ garantisce un aiuto considerevole.

Cosa stanno facendo i costruttori di microcontrollori?
Il trend è evidente dalle mosse di alcuni big.
La NXP ha sfornato l' i.MX.RT1050 in varie forme. E' in Cortex-M7 che viene scalato verso il basso come potenzialità fino ad arrivare a costi che fanno automaticamente sparire i Cortex-M4 ( non hanno più senso in senso prestazionale ) i Cortex-M3 ( non hanno più senso per questioni di costo praticamente paragonabile ). Rimane il Cortex-M0 che sarà eliminato alla prossima tornata.

Fondamentalmente cercano di ridurre il numero di prodotti in circolazione rimodulando la potenza del core più potente ed attuando una politica di prezzi molto aggressiva.

In pratica ci ritrovememo fra due anni a programmare ( per i nuovi progetti ) solo Cortex-M7 o superiori a parità di costo.

Su queste piattaforme il C++ è una possibilità concreta e sensata.

Per quanto riguarda i Cortex-A e l'x86 la situazione è più complessa ed articolata e bisogna distinguere nettamente il settore mobile dal resto, probabilmente servirebbe una discussione dedicata che necessiterebbe approfondimenti spinti sulla struttura di questi processori e la loro evoluzione.

Sappi comunque che anche su queste piattaforme il C++ è indispensabile in vari ambiti a partire dai driver.

dadduni ha scritto:Non mi è mai stato insegnato il paradigma ad oggetti, ma a quanto pare ai colloqui viene chiesto anche agli elettronici.
Vale la pena spendere del tempo ad imparalo?


Si ne vale la pena. E' una questione di mentalità più che di attuabilità.
Chi programma in C++, anche quando programma in C, cerca di stabilire un certo ordine che deriva proprio dalla programmazione ad oggetti ; questo aiuta molto soprattutto quando il progetto ha dimensioni considerevoli.

Alcune considerazioni sul C++.
Preciso immediatamente che non esiste un linguaggio di programmazione migliore in assoluto ma bisogna sempre far riferimento all'ambito.

Il C++ ha una storia interessante che andrebbe rivisitata per capirne le basi e l'evoluzione.
Nel periodo dal 1983 ( 1985 ) al 2011 il linguaggio, a parte le fisiologiche modifiche fino alla release del 1998, è rimasto de facto il C++ classico che conosciamo tutti.
Dal C++11 in poi le cose sono cambiate radicalmente.
L'evoluzione con la minor release C++14 ha traghettato il C++ verso la standardizzazione del C++17 dove oggettivamente l'orizzonte si allarga a tal punto da renderlo praticamente irriconoscibile rispetto all'idea originale del suo inventore Bjarne Stroustrup.
Il preview della specifica C++20 è a dir poco inquietante e non si capisce esattamente che direzione vogliano prendere.

Attualmente i programmatori utilizzano molto la parte C++11 e talvolta la C++14 ma non ho ancora visto una propulsione decisa verso il C++17.

La domanda da porsi è se sia possibile studiare almeno il C++11 senza essere passati dal C++98.
Fonti autorevoli dicono di si anche se ovviamente si perde una parte storica che ha senso conoscere.

Personalmente partirei con i concetti di incapsulamento ereditarietà e polimorfismo comuni ai due standard e poi proseguirei con gli argomenti più specifici a partire dagli smart pointers, threads e sincronizzazione. Passerei poi ai templates e per ultime le lambda expressions. Interessante anche il concetto di lvalue ed rvalue che però può essere visto anche dopo come corollario ma molto utile per la gestione efficiente della memoria.

Spero di averti dato qualche informazione in più per prendere le decisioni del caso.
Se hai bisogno di qualche riferimento fammi sapere.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
28,4k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3164
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[15] Re: quale linguaggio di programmazione mondo del lavoro

Messaggioda Foto UtenteDarwinNE » 29 dic 2018, 23:39

Proporrei una standing ovation di 92 minuti per Foto Utentedimaios. Il post è da incorniciare.

:ola: :ola: :ola:
Follow FidoCadJ development on Twitter: https://twitter.com/davbucci
Avatar utente
Foto UtenteDarwinNE
25,1k 5 11 13
G.Master EY
G.Master EY
 
Messaggi: 3492
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France

1
voti

[16] Re: quale linguaggio di programmazione mondo del lavoro

Messaggioda Foto Utentewruggeri » 30 dic 2018, 11:01

Io volevo scrivere qualcosa, visto che il discorso tocca molto da vicino il mio ambito d'interesse... ma Foto Utentedimaios ha già detto tutto ciò che avevo in mente e anche di più :mrgreen:

Dico solo una cosa sulle risorse didattiche, visto che Foto UtenteIanero mi aveva citato per quelle: di roba per studiare il C++ se ne trova così tanta da non sapere dove metterla, ma spesso si tratta di roba non aggiornata o di scarsa qualità. Ora, se la seconda caratteristica è sicuramente un male, la prima potrebbe avere i suoi vantaggi: personalmente, ritengo che possa aver senso iniziare a studiare il C++ "dalle origini", perché si ha a che fare con un linguaggio privo di tutta la roba (non sempre di gran valore) aggiunta negli ultimi standard, un linguaggio ancora edibile senza troppe distrazioni; inoltre, molti libri di capitale importanza (penso a certi testi sulla metaprogrammazione, al libro sui template di Vandevoorde, al capolavoro di Andrei Alexandrescu...) sono stati scritti tra il 1995 e il 2005, e potrebbe essere sensato studiarli avendo in mente esattamente il linguaggio cui si riferivano gli autori, e non la creatura proteiforme, confusa ed elefantiaca che gli ultimi standard ci hanno restituito.
Comunque, un ottimo riferimento (decisamente più completo della brevissima lista inserita da me nella biblioteca finora) per una bibliografia sul C++ è questo post (che fornisco tramite Wayback Machine perché il forum su cui è stato pubblicato non esiste più).
Rispondo solo a chi si esprime correttamente in italiano.
Se non conosci un argomento, non parlarne.
Gli unici fatti sono quelli dimostrabili, il resto è opinione.
Non dirò una parola sulla politica e sul M5S, del quale aspetto solo l'estinzione.
Avatar utente
Foto Utentewruggeri
4.402 1 6 13
Master
Master
 
Messaggi: 853
Iscritto il: 25 nov 2016, 18:46

0
voti

[17] Re: quale linguaggio di programmazione mondo del lavoro

Messaggioda Foto Utentedadduni » 30 dic 2018, 13:00

ringrazio tutti per le risposte più che esaustive! Al momento ho iniziato a studiare "thinking in C++" che mi sembra un buon testo, è consigliato da molti e parte dal paradigma ad oggetti prima di passare ai dettagli del linguaggio. Avrete sicuramente mie notizie e le mie perplessità su qualche questione che sicuramente a breve non mi sarà chiara :mrgreen:
Buon anno nuovo a tutti,
Davide
Avatar utente
Foto Utentedadduni
1.602 1 6 12
Expert EY
Expert EY
 
Messaggi: 976
Iscritto il: 23 mag 2014, 16:26

0
voti

[18] Re: quale linguaggio di programmazione mondo del lavoro

Messaggioda Foto UtenteWALTERmwp » 30 dic 2018, 15:33

Chapeau Foto Utentedimaios !

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
21,7k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 6222
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

Precedente

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti