Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Consiglio per compilatore C++ Windows

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto UtenteMassimoB, Foto Utentefairyvilje

2
voti

[21] Re: Consiglio per compilatore C++ Windows

Messaggioda Foto Utentedimaios » 21 mag 2018, 17:38

lelerelele ha scritto: ...ma Windows l'ho sempre programmato dagli albori in VB, essendo che ora tutto il software, (od almeno il mio) si appoggia sulla framework, quindi stesse librerie sia che uso il C che uso il VB, in termini di velocità cambierà qualcosa?
saluti.


Se per framework intendi .NET, da questa affermazione si capisce che non hai compreso la differenza tra C++ e C++/CLI.
In particolare, se usi il framework .NET , il C++/CLI è un passaggio obbligato per scrivere dei wrapper tra parti di codice unmanaged e managed.
Purtroppo ancora oggi non è possibile fare certe operazioni in C#.
Il tipico esempio è la chiamata da una callback scritta in C++ nativo nell'ambiente .NET.
In casi molto semplici e limitati si può scrivere l'interfaccia direttamente in C# ma è fortemente sconsigliato per vari motivi per cui si ricorre al C++/CLI che nasce non tanto per ricompilare codice nativo in software managed ma per risolvere tutta una serie di problemi tecnici tra il mondo "nativo" e quello interno al framework.

Il VB ed il C++ di una volta non hanno nulla a che fare con il VB.NET ed il C++ odierno e tantomeno con il C++/CLI.


Per quanto riguarda le ottimizzazioni del codice da parte del framework si vede che nel tempo il JIT è migliorato tantissimo a patto che il codice originario non sia ottimizzato a mano.
Infatti si vede che per ottenere il massimo dal compilatore, il codice deve essere steso in modo "semplice" senza trucchi o giri strani.
Più pulita è la versione del sorgente e più il compilatore riesce ad ottimizzare.
A riguardo sono stati scritti molti articoli e fatti molti test.
Oggettivamente è anche intuitivo che il compilatore abbia difficolta ad ottimizzare un codice intricato già oggetto di ottimizzazione manuale ma giustamente più di qualcuno ha effettuato test esaustivi per verificarlo.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
28,7k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3196
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[22] Re: Consiglio per compilatore C++ Windows

Messaggioda Foto Utentewruggeri » 21 mag 2018, 20:40

Hai fatto benissimo, Foto Utentefairyvilje, a specificare: onestamente, stavo pensando di farlo io stesso, perché mi sono reso conto che il mio post risultava un po' "cattivo". Visto che l'hai fatto tu, su quel punto non insisto ulteriormente... tuttavia, ritengo che a Foto Utentelelerelele possa interessare il mio punto di vista sullo studio dell'informatica, e quindi di questo parlerò un pochino :mrgreen:

Ovviamente, per uno che si diletta a scrivere dei programmini per conto suo gran parte delle competenze che ho citato servono a niente... per il professionista, invece, ritengo siano fondamentali: come ho notato anche (ma non solo) lavorando allo sviluppo di app per cellulari (esperienza interessante, ma da once-in-a-lifetime: mondi troppo diversi), l'ignoranza di gran parte degli informatici si traduce in un'interpretazione da bassa manovalanza del proprio lavoro e dell'informatica tutta, interpretazione che poi si diffonde e giunge alle masse, che la fanno propria.
Sarò chiaro: io non posso accettare che un laureato in ingegneria informatica mi venga a dire che l'elettronica non serve, non posso accettare che alla mia richiesta di avere il design document del progetto cui si sta lavorando mi si risponda che nessuno l'ha mai davvero compilato e che si procede per aggiunta disposofobica, non posso accettare che si metta in commercio del codice di qualità così scarsa da non essere nemmeno qualificabile come "spazzatura". Tutto questo non posso accettarlo, e ritengo - concordando, in questo, con personaggi non ininfluenti come ad esempio Les Hatton - che l'unico antidoto sia spiegare a chiunque scriva anche solo una riga di codice di cosa parliamo davvero quando parliamo d'informatica: spiegargli che una buona ingegnerizzazione del processo di progettazione è necessaria, spiegargli che anche dove non ci sono rigide normative da seguire non ci si può permettere di scrivere oscenità, spiegargli perché certe cose non si devono neanche pensare (figuriamoci poi attuarle), spiegargli perché lo studio dei linguaggi assembly ha senso, spiegargli perché ogni tanto Windows ci sta un po' ad eseguire delle operazioni, spiegargli perché la patologica presenza di bug (patologia peraltro discutibile... ma qui si che si va davvero nello "specifico", quindi non continuiamo: cercherò con i miei articoli sui metodi formali di illustrare un po' di che parliamo) non è una scusa per scrivere porcate...
Ora, giustamente l'hobbyista mi può chiedere "si ok, ma che cacchio c'entro io con tutta 'sta storia?". Caro hobbyista, tu con questo mio discorso c'entri poco, perché tendenzialmente non diventerai un professionista e non diffonderai idee sbagliate e prodotti ributtanti... ma ti sembra una brutta idea studiare almeno un pochino per capire davvero che roba è quella con cui ti diletti? ;-)
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.970 1 8 13
Master EY
Master EY
 
Messaggi: 960
Iscritto il: 25 nov 2016, 18:46

2
voti

[23] Re: Consiglio per compilatore C++ Windows

Messaggioda Foto UtenteWALTERmwp » 21 mag 2018, 22:01

wruggeri ha scritto:(...) spiegare a chiunque scriva anche solo una riga di codice di cosa parliamo davvero quando parliamo d'informatica: spiegargli che una buona ingegnerizzazione del processo di progettazione è necessaria, spiegargli che anche dove non ci sono rigide normative da seguire non ci si può permettere di scrivere oscenità, (...)
vorrei provare a dare un'indicazione pratica rispetto a quanto scritto, magari pure fraintendendo.
Credo che nell'impostazione e sviluppo d'un programma, la flessibilità e la facilità d'intervento, per modifiche successive, dovrebbe rientrare a fare parte delle caratteristiche del prodotto software quindi, chi ne scrivesse il codice dovrebbe orientare la propria tastiera a favore di questo principio.
Ve ne sono diversi da considerare ma credo che una buona ingegnerizzazione non dovrebbe prescindere da ciò.
Però, per più motivi, lo ritengo meno semplice di quanto si potrebbe pensare.
Uno, ad esempio, la necessità di rispondere quanto prima alle esigenze d'un cliente e l'altro, spendere meno ore possibile.
Forse alcuni contesti sono meno suscettibili di questa mia banale osservazione e degli ostacoli accennati, ma altri ne possono essere travolti.

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

2
voti

[24] Re: Consiglio per compilatore C++ Windows

Messaggioda Foto Utentedimaios » 21 mag 2018, 22:16

WALTERmwp ha scritto:
Uno, ad esempio, la necessità di rispondere quanto prima alle esigenze d'un cliente e l'altro, spendere meno ore possibile.


Hai centrato in pieno il problema.
Quando ti occupi di ingegneria del software dovresti prendere in considerazione tantissime cose :

1. Punti di estendibilità
2. Modularità
3. Test Unit ( o metodi analoghi )
4. Documentazione
5. Indici di qualità del software
.....

In realtà se ti capita, come succede spesso, di sviluppare in campo perché la macchina deve essere pronta per ieri è ovvio che puoi essere già contento se il tutto funziona ed il cliente ti paga. :?
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
28,7k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3196
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[25] Re: Consiglio per compilatore C++ Windows

Messaggioda Foto UtenteWALTERmwp » 21 mag 2018, 22:36

dimaios ha scritto:(...) In realtà se ti capita, come succede spesso, di sviluppare in campo perché la macchina deve essere pronta per ieri è ovvio che puoi essere già contento se il tutto funziona ed il cliente ti paga. :?
si, purtroppo a volte è così.
Non lo scrivo come fosse un lamento ma chi integra l'avviamento d'un impianto o di una macchina, arriva, tra l'altro, quasi dopo tutti gli altri, facendosi carico, suo malgrado, dell'accumulo di tutti i problemi ed i ritardi manifestatisi prima del suo inizio.
Tentando un doveroso distinguo(magari inappropriato) tra diverse realtà, credo che l'attenzione e l'approccio allo sviluppo, ad esempio, d'un programma gestionale, piuttosto che il firmware dell'embedded d'un prodotto da mettere sul mercato sia ben diverso, magari con altre probematiche, ma agevolato da un contesto che asseconderebbe l'ingegnerizzazione: insomma, più spazio per darsi un metodo.
Scrivo ovviamente a prescindere dal tipo di linguaggio o piattaforma sulla quale si agisce.

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

-1
voti

[26] Re: Consiglio per compilatore C++ Windows

Messaggioda ucr » 22 mag 2018, 1:02

Per me è meglio optare per soluzioni native che sono migliori di un qualsiasi porting. Per me OpenWatcom è la migliore soluzione che c'è: gira sui principali sistemi operativi, pesa appena 100MB circa e può compilare tranquillamente C, C++ e Fortran. Poi se sia meglio Java, C, Ada, Eiffel o altro è un altro discorso...
ucr
322 2 3 5
---
 

1
voti

[27] Re: Consiglio per compilatore C++ Windows

Messaggioda Foto Utentelelerelele » 22 mag 2018, 9:07

ringrazio Foto Utentewruggeri e Foto Utentefairyvilje per gli interventi, state tranquilli che non mi avvilisco per quanto avete scritto, d'altra parte programmo solo per "curiosità", (anche se alcuni ,miei programmi li uso quotidianamente al lavoro), ho più che altro una passione sfrenata che in campo "elettronico" ho da una vita, detto questo non posso ritenermi un programmatore professionista, me ne rendo conto, ed allo stato attuale neanche posso pretendere di diventarlo.
Oltretutto prendo troppo in largo, nelle mie attività tecniche, è gia difficile raggiungere gli standard di competenza citati per chi si occupa dell'argomento nello specifico, figuriamico uno come me che tra una programmazione e l'altra passano 6 mesi, nel mentre disegna cad meccanico.....

Sempre per curiosità, scaturita dalla voglia di comprendere, mi interesso solo a livello di conoscenza personale e questo mi appaga, non posso pretendere di più.

Sono perfettamente d'accordo Foto Utentewruggeri al post #22, anche io non posso sopportare chi è professionista nella sua mansione, che tralasci oppure si disinteressi di conoscenze accessorie, ritengo che per avere la piena conoscenza di un settore, non sia sufficiente conoscere lo stesso, ma anche cio che gli gira intorno altrimenti si creano inevitabilmente dei buchi.

dimaios ha scritto:
lelerelele ha scritto: ...ma Windows l'ho sempre programmato dagli albori in VB, essendo che ora tutto il software, (od almeno il mio) si appoggia sulla framework, quindi stesse librerie sia che uso il C che uso il VB, in termini di velocità cambierà qualcosa?
saluti.

Se per framework intendi .NET, da questa affermazione si capisce che non hai compreso la differenza tra C++ e C++/CLI.
Mi scuso se non sono chiaro, ma dalla mia ignoranza non so neanche cosa significa CLI.
Ho realizzato programmi in VB.NET, con database e non, su applicazioni windows_form, per quanto riguarda il PC.
Mi è capitato solo una volta, di sviluppare un software su PC, con database, interfacciato tramite USB ad un microcontrollore esterno, il che per mè è stato gia una bella sfida!
Non ho competenze ad alto livello e non le avrò mai.

Ringrazio tutti, è sempre bello parlare con chi ne capisce. :D

Cordiali saluti.
Avatar utente
Foto Utentelelerelele
2.156 2 7 8
Expert EY
Expert EY
 
Messaggi: 2431
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

2
voti

[28] Re: Consiglio per compilatore C++ Windows

Messaggioda Foto Utentedimaios » 22 mag 2018, 9:30

CLI significa Common Language Infrastructure.
E' una specifica che indica come verrà eseguito il codice all'interno del framework ( e molte altre cose ).
In pratica grazie a questa specifica si riesce ad utilizzare diversi linguaggi su varie piattaforme ( all'interno del medesimo framework ) e addirittura diversi linguaggi nel medesimo progetto.

Il C++ nativo non risponde a questa specifica per questo è stato creato il C++/CLI che risulta essere una versione compatibile con la specifica ed in grado di funzionare all'interno del framework ( in questo caso .NET ).

Quello che volevo sottolineare è che le potenzialità dei vari linguaggi sul framework sono più o meno le stesse ( vi sono solo piccole differenze ) ma quando si esce dal contesto del framework le cose cambiano sostanzialmente e per interfacciare il mondo nativo ( es. codice C++ compilato sulla macchina e non nel framework ) l'estensione C++/CLI è indispensabile almeno in certi ambiti per cui i linguaggi disponbili non hanno le medesime potenzialità.

In poche parole, finché rimani dentro il mondo .NET puoi scegliere il linguaggio che preferisci ( in realtà il C# sarebbe la scelta migliore per molti motivi ) ma quando esci da questo contesto e vuoi interagire all'esterno del framework ( es. riutilizzare codice nativo tipo DLL in C++ ) la scelta è pressochè obbligata e devi ricadere nel C++/CLI a parte casi molto specifici.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
28,7k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3196
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[29] Re: Consiglio per compilatore C++ Windows

Messaggioda Foto Utentelelerelele » 22 mag 2018, 9:55

grazie Foto Utentedimaios per i chiarimenti, direi di avere capito, in effetti se programmassi in visual studio C++ sarebbe gia la versione C++/CLI a cui ti riferivi, che è adatta a programmare all'interno della framework.

Per cui mi confermi, che a grandi linee, lavorando all'interno della framework, sia che progammi in C oppure in VB.net dovrebbe essere pressapoco la stessa velocità di esecuzione?


Saluti.
Avatar utente
Foto Utentelelerelele
2.156 2 7 8
Expert EY
Expert EY
 
Messaggi: 2431
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

2
voti

[30] Re: Consiglio per compilatore C++ Windows

Messaggioda Foto Utentedimaios » 22 mag 2018, 11:08

lelerelele ha scritto:in effetti se programmassi in visual studio C++ sarebbe gia la versione C++/CLI a cui ti riferivi, che è adatta a programmare all'interno della framework.


Il Visual Studio supporta sia il C++ nativo che il C++/CLI, dipende se vuoi lavorare fuori o dentro il framework .NET.

lelerelele ha scritto:Per cui mi confermi, che a grandi linee, lavorando all'interno della framework, sia che progammi in C oppure in VB.net dovrebbe essere pressapoco la stessa velocità di esecuzione?


No. Il "C" non è fra i linguaggi implementati nel framework .NET.
La lista dei linguaggi CLI la trovi qui.

Se programmi in "C" puro o in "C++ nativo" e poi riscrivi il codice in VB.NET non puoi sapere a priori la velocità di esecuzione perché dipende da tantissimi parametri, te ne cito alcuni :

1. Compilatore utilizzato
2. Caratteristiche del processore.
3. Ottimizzazioni manuali introdotte
4. Versione dei JIT del framework
5. Librerie incluse

ecc.

In generale si può dire che un codice nativo è più veloce di uno managed se le ottimizzazioni fatte a mano sono realizzate bene ... anzi molto bene.
Un codice VB.NET scritto in modo semplice e non ottimizzato a mano può essere manipolato dal JIT a livello tale da renderlo anche più veloce di un codice nativo non ottimizzato ( questo è un risultato noto da tempo e derivato da moltissimi test che trovi in rete ).

Comunque se dobbiamo essere sinceri fino in fondo, se non scrivi algoritmi con richieste computazionali esagerate è difficile accorgersi delle performance.
Di solito utilizzi il VB.NET perché è più facile gestire la parte di interfaccia GUI e non per la qualità del linguaggio di programmazione e le ottimizzazioni introdotte dal JIT.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
28,7k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3196
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

PrecedenteProssimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti