Newsgroup: it.comp.lang.c++
Titolo: c++17 - paper approvati

https://isocpp.org/blog/2016/03/jacksonville-approved-papers-and-issues



 
https://isocpp.org/blog/2016/03/jacksonville-approved-papers-and-issues




Grazie del link.



Ciao!



P.S.

Comunque è proprio vero.. più passa il tempo più ogni nuovo standard rende il

C++ un pochino più incomprensibile - e c'ho programmato metà della mia vita! :(



Non piu incomprensibile ma piu ricco.

Il vecchio vale sempre,e' sempre possibile usarlo

Solo qualche cosa,ma poco, e' stato reso obsoleto passando da c++98 a c++11.





Non è un problema l'usare il vecchio: posso sempre scrivere un codice in C90

e passarlo ad un compilatore C++11! :) (con le eccezioni che tutti conosciamo).



<IMHO>

E' proprio il fatto che il C++ non è mai stato tanto "friendly" quando si

trattava di leggere il codice altrui, ma abbiamo (almeno, io ho) sempre

compensato studiando a fondo gli standard.

Più passa il tempo, più.. mah - una funzione tipica scritta in C++[0x+] da,

mettiamo, un programmatore boost incallito (anche senza l'utilizzo di boost)

ci metto tempo per decodificarla.

Seriamente, dieci anni fa leggevo e scrivevo come in un linguaggio naturale,

oggi a volte mi sembra di far girare un compilatore nella testa! :)

Magari son solo troppo vecchio.. spero di no! :)

</IMHO>



Ciao!





Capisco quello che intendi,le novità introdotte da c++11 in poi sono 

molte ed in alcuni casi la lettura del codice e' tutt'altro che leggibile.

Per fortuna non si è obbligato a conoscere ed utilizzarle tutte quando 

si progetta sw.

Occorre andare con l'esperienza pratica,con il tempo si apprenderanno le 

future che servono piu o meno come lo si fa con qualsiasi linguaggio.

E' comunque C++,un linguaggio per professionisti,dove l'efficienza del 

codice è uno dei requisiti.








On 28/03/2016 16:12, enoquick wrote:

 > Per fortuna non si è obbligato a conoscere ed utilizzarle

 > tutte quando si progetta sw.



Ma se ti arriva tra le mani scritto da altri...



Si prende un libro o si cera su internet il significato o si ha fortuna 

di avere un collega esperto si chiede a lui.

E cosi si apprende qualcosa che non  si conosceva.





Quando un linguaggio si complica troppo, diventerà anche potente,

ma poi non lo usa più nessuno.

La sua promessa poi di riuso e manutibilita' nel tempo e' andata a farsi 

un giro e di fatto non esiste.

Ed è la ragione per cui il C++ da anni sta' decrementando la sua

base.

Per applicazioni gp, java,c# e altri lo hanno soppiantato da tempo

e nell' embedded il C e' ancora il più gettonato...

nonostante gli anni la sua relativa semplicità e flessibilita' lo 

mantengono vivo.

Il C++ dove e' usato per la maggiore e molto vicino al C :-)

Poi certo, ci sono le applicazioni che usano al massimo il C++ e

la sua potenza, ma ho la sensazione che siano relativamente poche.

almeno, questa e' la mia impressione...

A57







Naturalmente,la massa di programmatori non è composta da  tutti geni.

Un linguaggio che semplifica il modo di procedere avrà piu chance di 

essere usato.

Per il mio lavoro uso C,C++,vb6,perl,bash,java e altro.

Ma se fosse per me C,C++,perl e bash basterebbero.

Per fortuna non conosco C# e java se potessi farne a meno non lo userei.

Tutta questione di gusti personali naturalmente.






 Tutta questione di gusti personali naturalmente.

Si certo, pero' se la curva di apprendimento di un tool e' troppo

grande rispetto all' uso che se ne fa o si lavora prevalentemente

con quel tool e con tutte le sue funzioni, oppure lo sio usa solo

per una piccola percentuale della sua potenza, cosa che mi pare stia

capitando con il C++ (non che me ne lamenti, e' solo una osservazione).

Se pero' si usa solo una piccola parte del linguaggio, mi chiedo se

vale la pena di continuare ad estenderne le funzioni.... non e' che

tutti sono ricercatori universitari e anche in quell' ambito non so'

quanta parte del C++ viene effettivamente usato... :-)

AA,
















 so' quanta parte del C++ viene effettivamente usato... :-)



La qualità di un software scritto da un "ricercatore universitario" è

solitamente infima, anche più bassa di quella di un amatore. Tristitemente

è vero anche se la facoltà è strettamente correlata all'IT.

La scelta del C++ come linguaggio è solo tradizionale e, al contrario di

imprese o software agencies, velocità e semplicità di sviluppo non sono

caratteristiche importanti.



Ciao!








La carne al fuoco tra c++11,cc+14 e c++17 e' molta.

Per apprendere e sedimentare il tutto occorre tempo,molto tempo.

Nel frattempo non si e' certo obbligati ad apprendere il tutto per 

scrivere sw decente.







Appunto...prima o poi te lo devi studiare.







Come qualunque novità.

Con il tempo i costrutti aggiunti sia al linguaggio che nella std lib 

verranno usati e quindi prima o poi ci si sbatterà contro.

Fa parte della vita,solo la morte rimane immobile per l'eternità.




 Fa parte della vita,solo la morte rimane immobile per l'eternità.





Grazie, faro' tesoro.




 grande rispetto all' uso che se ne fa



E` l'annoso problema del C++. Non c'e` mai stata *UNA* implementazione 

di C++ che fosse 100% compliant con lo standard. E questo perche` lo 

standard (non necessariamente le ultime versioni, ma anche quelli di 

molto precedenti) e` sempre stato un insieme di concetti troppo 

complessi da giustificare lo sforzo dei vendor per implementarlo. La 

verita` e` che oggi, per la stragrande maggioranza delle applicazioni, 

il C++ ha perso terreno e Java/C# fanno egregiamente il loro lavoro.



-- 

4ndre4



A livello commerciale, implementare tutto uno standard è un'idiozia: si

implementa solo l'intersezione dei subsets implementati dai competitors (per

compatibilità) e si aggiungono features proprietarie non presenti nello

standard (per fare lock-in degli utenti).

Se esistessero solo compilatori commerciali sarebbe una babilonia; grazie al

cielo esistono vari compilatori open-source, che alzano il livello per tutti gli

altri..



Ciao!


 A livello commerciale, implementare tutto uno standard è un'idiozia



Che senso ha stabilire uno standard, se poi e` un'idiozia implementarlo 

da parte dei vendors? Il convener del comitato di standardizzazione C++ 

e` Herb Sutter, impiegato Microsoft, e Microsoft produce compilatori C++ 

commerciali. Io, comunque, non parlavo solo di compilatori commerciali. 

Ho scritto "vendor" ma mi riferivo agli "implementers". Anche i 

compilatori open-source hanno sempre faticato molto a stare al passo con 

gli standard C++. L'idea di implementare solo "l'intersezione dei 

subsets implementati dai competitors" non e` che sia una grande 

strategia. Lo scopo di un implementatore dovrebbe essere quello di 

offrire quel che cercano gli utenti e gli utenti cercano le 

funzionalita` descritte negli standard.



-- 

4ndre4


 



Hai scritto bene, "dovrebbe" :)

Fai bene a fare la distinzione tra vendors e implementers: per quanto dici sui

secondi concordo, ma per i primi lo scopo è solo incrementare i guadagni.



Non sai quanto mi costa dirlo: i compilatori Microsoft (non solo C++) sono

sempre stati ottimi. Ma è un'eccezione. Nella grande maggioranza dei casi le

implementazioni proprietarie, di solito che fanno target su microcontrollori

della compagnia stessa, sono da mettersi le mani nei capelli..



Ciao!


 secondi concordo, ma per i primi lo scopo è solo incrementare i guadagni.



E` il contrario: non ho fatto nessuna distinzione tra vendors e 

implementers. Sono tutti implementers, che il loro prodotto sia 

commerciale o no. Incrementare i guadagni di certo non riesci a farlo se 

non implementi cio` che serve agli sviluppatori. Sono due cose 

strettamente legate. Il problema del mancato allineamento agli standard 

del linguaggio non e` dovuto a scelte commerciali, ma all'oggettiva 

complessita` di tenersi al passo. Gli standard del C++ sono sempre stati 

troppo complessi perche` si riuscisse ad implementarli completamente ed 

in tempi ragionevoli. D'altronde, quasi sempre nei comitati di 

standardizzazione dei linguaggi, ci sono membri di societa` private 

(vedi i tanti membri del JCP per Java).



-- 

4ndre4


 



Sui vari comitati andrei piano nelle generalizzazioni e guarderei sempre il

caso specifico: in alcuni casi più di una volta abbiamo assistito a teatrini

politici e scelte tecniche idiotiche (e.g. HTML, unicode, ma anche Java non

scherza), altre volte invece, a dispetto della provenienza dei componenti dei

comitati, il lavoro è stato ottimo.



Personalmente, sugli standard C++, ma soprattutto C, che ho più a cuore, ho già

estensivamente espresso il mio inutile parere sia qui su i.c.l.c++ che su

i.c.l.c. :)



Ciao!



Ma non sparare cazzate.

Per  giocherellare usa pure il tuo java e C#,per le cose serie si usa altro.

Naturalmente scherzo,ma dopo l'ultima esperienza (risolta a modo mio) 

con le applet sono sempre piu convinto che sono sistemi giocattolo.

Non li useranno mai per mission critical.





Saranno ottimi (i compilatori) ma ho provato progetti fatti VS e poi 

portati sotto g++

Alla faccia dello std,mi sono detto (MS ovviamente) e sui bachi 

(specialmente template)

Alla faccia del buon compilatore.




 altro.



Non posso raccomandare a te di non sparare cazzate perche` sei uno 

specialista in questo, come dimostri bene qui e su altri gruppi. La 

scemenza che hai scritto non la commento neanche. E` l'ennesima prova 

che NON conosci il mondo del software, ma vivi nella tua piccola realta`.



-- 

4ndre4


 portati sotto g++



I compilatori MS sono, come detto, sono degli ottimi compilatori.

L'aderenza allo standard e` piu` che buona ed e` in continua evoluzione:



https://msdn.microsoft.com/en-gb/library/hh567368.aspx




Tu, come sempre, non sai quel che dici.



-- 

4ndre4


 caso specifico



Non so a cosa ti stai riferendo. Non sto generalizzando. Sto parlando 

dei comitati di standardizzazione C++ e quelli del JCP. Nel primo (WG21 

e vari sottogruppi), ci sono persone del calibro di Sutter (Microsoft), 

Carruth (Google), e tanti altri (Intel, Qualcomm, Red Hat, etc.).



-- 

4ndre4


 il C++ ha perso terreno e Java/C# fanno egregiamente il loro lavoro.



Non so per quanto riguarda Java/C# ma sono d'accordo che il C++ abbia 

perso molto terreno da quando, alla sua nascita, sembrava potesse 

sostituire rapidamente il C. Secondo me è stato sempre un linguaggio 

troppo artificiosamente complesso e un programmatore che deve scrivere 

un software applicativo non ha tempo da perdere appresso alle 

sottigliezze del linguaggio. E' il linguaggio che deve essere semplice 

abbastanza da non influire negativamente sui tempi di sviluppo. Poi 

certo dipende anche dal tipo di software. Per alcuni tipi di software 

molto complessi magari il C++ è il linguaggio ideale.



EMG



--

http://www.emagsoftware.it


http://www.emagsoftware.it/emgmusic


http://www.emagsoftware.it/spectrum


http://www.emagsoftware.it/tbosg



 troppo artificiosamente complesso



Hai detto bene, e la parola "artificiosamente" ci sta tutta.





L'ultima perla

Oltre a non conoscere la differenza tra inizializzazione con valore e 

assegnamento ecco l'ultima perla oltre a quella che non esiste 

compilatore c++ completamente aderente allo std.

g++ e' uno di quelli

E non lo dico io, ma loro:



https://gcc.gnu.org/projects/cxx-status.html#cxx14


GCC has full support for the latest revision of the C++ standard, which 

was published in 2014.





Quindi hai mai provato a compilare in c++ sotto vs e portare in g++

Devo proprio arguire di no

Io lo faccio quasi sempre in quanto i miei progetti sono quasi tutti 

portabili tra win  e linux



Ha,e la parola supportare non significa che si comporti secondo lo std




 



Certo, ma se puoi produrre qualcosa di "ottima qualita` in un tempo ragionevole

e con costi ridotti" puoi anche produrre qualcosa di media qualità nella metà

del tempo ;)



Ciao!


 



Un appunto mi sento di farlo: un codice C++ scritto in maniera leggibile è

in effetti molto leggibile, anche da chi non conosce bene il linguaggio. Il

problema è che non è facile trovare programmatori abbastanza bravi (o umili)

da scrivere a modo.

Ad esempio io cerco sempre di non usare mai templates, operatori, tutti i

_cast<>, tutti i _ptr<>, di sicuro nulla che è nei nuovi standards, etc.etc.

Certo se lo facessi il mio codice sarebbe lungo meno della metà, ma se lo dessi

a qualcuno di poco esperto non lo potrebbe leggere. Se questo mi fa passare da

"stupido" o "poco esperto" pace, me ne farò una ragione: secondo me è quello

che dovrebbero fare tutti.



Per quanto riguarda la complessità rispetto a Java/C#: la complessità si può

solo spostare, non eliminare. In Java/C# hai in media la metà dei problemi

scrivendo e leggendo, ma in bocca al lupo per i problemi che vengono fuori da

J[VM|DK|RE]/.NET framework.



Ciao!


 Ha,e la parola supportare non significa che si comporti secondo lo std



LOL :) Sarebbe curioso fare veramente un giro nella tua testa per capire 

come elabori i concetti.



-- 

4ndre4


 del tempo ;)



E quindi?



-- 

4ndre4


 J[VM|DK|RE]/.NET framework.



Ovvero? Spiega. Sono curioso di sapere.



-- 

4ndre4


 ragione: secondo me è quello che dovrebbero fare tutti.



No, non è così semplice. Intanto è chiaro che puoi semplificare il C++ 

quanto vuoi, basta appunto non usare quello che offre, cosa che mi 

sembra un po' un controsenso. E poi, la semantica del C++ purtroppo è 

piena di trabocchetti e cambia a seconda della situazione. Secondo me è 

questo che spaventa un po'.







Se non hai mai avuto problemi di incompatibilità, configurazione, allocazione di

risorse o zero-day bugs con virtual machines si vede che c'hai lavorato sopra

troppo poco..



Ciao!



E quindi nulla: l'ingegneria è l'arte del compromesso. Non si può avere tutto,

spesso non si può nemmeno scegliere. A te danno sempre tutto il tempo che pensi

sia necessario per fare il lavoro a regola d'arte? A me spesso no.



Ciao!



Che il linguaggio lo devi conoscere almeno un po' è ovvio. Ma se non lo usi

da uno o due anni, sapere di poterlo leggere senza un manuale o lo standard

davanti è meglio, no? :)



Ciao!


 E quindi nulla: l'ingegneria è l'arte del compromesso.  Non si può avere tutto



Io credo che tu ti sbagli e anche di grosso. Io lavoro come ingegnere 

software e come bisogna fare quel che bisogna fare lo decido io. Da me 

si adotta Agile/Scrum e si lavora in un certo modo. Abbiamo un sistema 

di lavoro per cui la qualita` del codice prodotto e` sicuramente molto 

alta. Da noi non c'e` nessun compromesso. Se un compromesso c'e` e` sui 

requisiti: se qualcosa non si puo` fare in questa release, si fara` 

nella prossima. Di certo non mi metto a realizzarti qualcosa di 

raffazzonato solo perche` tu lo vuoi vendere.



-- 

4ndre4


 troppo poco..



Ah la solita, sana moda di sminuire la competenza dell'interlocutore 

quando non si hanno risposte :)



Che cosa c'entrano le "virtual machines" con Java e C#? Me lo spieghi? 

Problemi di incompatibilita` tra cosa? Configurazione di cosa? 

Allocazione di risorse in quale contesto? Sara` che nei miei 20 anni di 

lavoro, 2/3 abbondanti dei quali passati su certe tecnologie, ne devo 

aver visti troppo pochi, come dici tu.



-- 

4ndre4



Allora tieniti stretto quel lavoro, sei estremamente fortunato.



Ciao!


 Allora tieniti stretto quel lavoro, sei estremamente fortunato.



Ma no, non sono io ad essere fortunato. Sei tu ad essere sfortunato :) O 

forse troppo abituato al modo di fare italiano (io sono all'estero).

Nel contesto in cui sono io, sono diverse le realta` che lavorano allo 

stesso modo.



-- 

4ndre4


 



Boh, io grazie al cielo su Java e .NET complessivamente non c'avrò passato più

di cinque, forse sei anni. Ma dei problemi elencati sopra n'ho visti a iosa.

Che ti devo dire, avremo lavorato sulle stesse cose ma in anni diversi e con

gradi di maturità di queste tecnologie diverse.



Ciao!


 



Ho lavorato in Italia, Spagna, Germania, e ora sono negli US - a me sembra uguale

ovunque. Quindi sì, non è la nazione, evidentemente è proprio sfortuna mia!

:D



Ciao!


 :D



Intendiamoci, sono tante le aziende che lavorano male, ma ce ne sono 

anche tante che lavorano bene - e anche negli US. La mia azienda, in 

realta`, e` americana, e il ns metodo di lavoro e` abbastanza diffuso in 

tutte le sedi.



-- 

4ndre4


 di cinque, forse sei anni.



Se mi facessi qualche esempio, te ne sarei grato.



-- 

4ndre4


 molto complessi magari il C++ è il linguaggio ideale.



Java e C# sono molto piu' chiari, in confronto la sintassi del C++ e' un 

gran pasticcio, il problema e' che hanno una destinazione diversa e non 

sono interscambiabili.

Io credo che la grande diffusione di questi linguaggi abbia preso il 

posto di quello che prima erano pascal/delphi e VB, e magari di alcune 

applicazioni che venivano scritte in C/C++ piu' per convenienza che per 

reale necessita'.

Poi e' naturale che oggi la percentuale di utilizzo di C/C++ si sia 

ridotta, gran parte del software sono (cr)app Android, non e' sceso 

l'utilizzo di C/C++, sono saliti gli altri.



PS: ben ritrovato Enrico ;-)


 



Più che altro hai risvegliato vecchi ricordi che stavo cercando di rimuovere! :D



Probabilmente, anche qui, c'è una parte di sfortuna mia: è logico che quando

prendi tecnologie abbastanza nuove e le porti al limite succedono cose

inaspettate. Probabilmente oggi alcuni dei problemi che ho avuto non esisteranno

più ma, per tornare al discorso iniziale sullo spostare la complessità, se ho un

problema sul mio codice l'aggiusto e pace, se ho un problema su una VM brancolo

nel buio. Per questo mi stanno antipatiche :)



Ciao!


 posto di quello che prima erano pascal/delphi e VB



Non direi. Delphi/VB erano tipicamente utilizzati per applicazioni 

desktop, che ormai sono in fortissimo declino.

-- 

4ndre4


 nel buio.



Ma che vuol dire? Non lo capisco. A parte che non mi hai convinto, con i 

tuoi esempi, che i sistemi basati su vm siano inaffidabili al punto da 

preferire un linguaggio compilato nativo, non capisco come la presenza o 

meno di una vm possa impattare sulla capacita` di risoluzione di un 

problema. E` un ambiente di esecuzione del codice come un altro. Sara` 

che ho lavorato su troppi sistemi importanti scritti in Java, e che 

funzionavano egregiamente, per credere a chiunque tiri fuori un "no 

Java, per carita`".



-- 

4ndre4



Mai detto "no Java, per carità", anzi magari lo sceglierò per qualche progetto

futuro se ce ne sarà l'occasione, non ho pregiudizi di questo tipo. Poi non è

che i sistemi su cui ho lavorato io in Java non funzionavano bene, eh! :) Ti

ho solo elencato una manciata di esempi su problemi, alla fine risolti, non

relativi al codice ma all'ambiente.



E' ovvio quello che dici, che una VM è "un ambiente di esecuzione del codice

come un altro" ma, per forza di cose, deve essere più complesso dell'ambiente di

esecuzione nativo. Tutto qui.



Come detto prima, anche se non ti piace la parola, tutto è un compromesso ;)



Ciao!


 Come detto prima, anche se non ti piace la parola, tutto è un compromesso ;)



Ma non capisco dove sia il "compromesso", su Java/C#. Boh.



-- 

4ndre4


 



Il mio punto era solo quello: Java è più "facile"/"rapido" perché quello che

fai a mano in C++ te lo fa invece "sotto" la VM. Chiaro che questo è un

compromesso: ottieni qualcosa (e.g. non deallochi a mano) e rinunci a qualcosa

(e.g. devi aggiungere un pezzo in più al sistema).



Ciao! 




 (e.g. devi aggiungere un pezzo in più al sistema).



Formalmente, questo non e` un compromesso. Aggiungere un pezzo in piu` 

al sistema non significa rinunciare a niente.



-- 

4ndre4


 davanti è meglio, no? :)



Sicuramente. Ma se per farlo devi usare un sottoinsieme del linguaggio 

allora forse per quello che devi fare non è il linguaggio giusto, no? Ad 

esempio, sicuramente è improponibile come linguaggio per sviluppare un 

gestionale (quello che faccio io di solito).



 PS: ben ritrovato Enrico ;-)



Altrettanto. Chi sei? Io seguo sempre. I messaggi spesso sono 

praticamente a zero e quei pochi non sono interessanti. Stavolta è 

uscito fuori un thread interessante. :-)



 desktop, che ormai sono in fortissimo declino.



Interessante. E da cosa sarebbero state sostituite? Da applicazioni web 

o che altro? Io, a differenza di voi ingegneri multinazionali, sono un 

semplice programmatore freelance romano di applicazioni gestionali 

(desktop e web) e sto lavorando molto poco... :-( Quindi mi interessa 

davvero capire dov'è andato a finire il mercato...



 desktop, che ormai sono in fortissimo declino.



Non vuol dir nulla, pure Java era nato con una certa idea in mente, ma 

non si puo' dire che l'utilizzo attuale la rispetti, anzi.

Non concordo sul declino dei desktop, quelli ci saranno sempre, semmai 

c'e' un altro mercato (smartphone, tablet, applicazioni internet) che e' 

diventato piu' grande.  Tra l'altro uno dei punti di forza di C# e' la 

piattaforma .Net, nata su desktop, ma passare da un'interfaccia 

all'altra non e' certo un problema.


 internet) che e' diventato piu' grande.



Sicuramente il mercato delle applicazioni internet è cresciuto molto in 

questi ultimi anni, me ne sono accorto anch'io dato che una parte 

considerevole del mio (ora poco) lavoro è migrata lì. Però non capisco 

il discorso smartphone e tablet. A me pare che quel mercato sia fatto 

solo di applicazioni più o meno entertainment e consumer, non certo 

professionali. E allora? Dov'è cavolo è andato a finire il mercato del 

software professionale? Forse dipende dalla crisi economica? Mah...



 uscito fuori un thread interessante. :-)



Una volta frequentavo attivamente c.l.clipper, ogni tanto ci passo 

ancora, ma in modalita' passiva. ;-)

Da qualche anno ho abbandonato xbase e sono passato al lato oscuro, 

faccio il "tuttofare" per un ecommerce, ma dovevo pure magna'. :-(


 non si puo' dire che l'utilizzo attuale la rispetti, anzi.



Tu dici? Io dico di no: Java era nato per essere portabile, e difatti e` 

uno dei sistemi piu` portabili che esistano. Il declino delle 

applicazioni desktop e` sotto gli occhi di tutti. Oggi si preferisce di 

gran lunga web e mobile.



-- 

4ndre4



Non è la stessa cosa. E' un pezzo in più fuori dal tuo controllo diretto, se

fa cose diverse da come le vuoi fare te o ha dei bug non ci puoi mettere mano.

Ma stessa cosa vale per le librerie standard, per il kernel dell'OS e,

naturalmente, dai vari livelli hardware: ogni pezzo che aggiungi deleghi

qualcosa, rinunci alla possibilità di modificarne le funzioni e aumenti la

possibilità che qualcosa si rompa (più pezzi ci sono, più pezzi si rompono :) ).



Non ne sto facendo una guerra di religione o cercando di far partire un flame,

per come la vedo io è semplicemente la logica dell'astrazione all'opera.



Ciao!


 (desktop e web) e sto lavorando molto poco... :-(



Mi dispiace molto di questo.



-- 

4ndre4


 



Certamente, ma i requisiti da prendere in considerazione nella scelta di un

linguaggio sono tanti, e a volte non si può neppure scegliere (e.g. adattare

codice legacy).



Ciao!


 naturalmente, dai vari livelli hardware



Appunto, quindi di che stiamo parlando? Ovviamente la JVM puo` avere dei 

bug, ma quanto sono frequenti i bug in una JVM? Un sistema operativo 

puo` avere dei bug, ma quanto frequenti sono i bug in un sistema 

operativo? Una CPU puo` avere bug, ma quanto frequenti sono i bug in una 

CPU? Personalmente, non mi e` mai capitato di desiderare di fare cose 

diversamente da come sono implementate dalla JVM. A te si`? E se si`, 

cosa? Chiedo per capire.



-- 

4ndre4


 



Sì, tecnologie web, principalmente HTML5 e JS, fatti girare o compilati in

tutte le possibili salse.

Se sei un programmatore vecchia scuola e vuoi fare "lo switch" non ti ci vuole

nulla a metterti al passo, solo un po' di studio: la complessità di un sistema

medio di oggi è nulla rispetto a quella di una applicazione gestionale media di

una ventina d'anni fa, IMHO.



Ciao!


 software professionale? Forse dipende dalla crisi economica? Mah...



Il professionale c'e' ancora, ma buona parte e' migrata su database, 

spesso con (poco funzionali) interfacce web, il fatto che si veda poco 

e' perche' oscurato dal marasma web-based che e' in forte espansione.

Le ditte che fanno gestionale i loro programmatori li hanno gia', i 

nuovi assunti devono fare la parte web perche' cosi' l'impiegata puo' 

consultare le fatture tramite una app, tra un pokemon e l'altro. :-P



Dipende dai requisiti del progetto, non c'è la soluzione universale. Se devo

fare una centralina di un'auto non ci metto una scheda intel con linux e sopra

un programma Java. E tra la suddetta centralina e un'applicazione Android ci

sono milioni di possibli sfumature e scelte progettuali possibili.



In generale non lo so, cerco sempre di valutare la situazione.



Ciao!


 qualunque sistema di sviluppo desktop, sono innumerevoli.



Che ci siano vantaggi e' fuori discussione, specialmente per quanto 

riguarda l'accessibilita' praticamente con qualunque dispositivo, ma ci 

sono anche grosse limitazioni e in pratica prestazioni limitate.


 sono milioni di possibli sfumature e scelte progettuali possibili.



Appunto, stai parlando del niente ;)



-- 

4ndre4


ci sono anche grosse limitazioni e in pratica prestazioni limitate.



Hummm... no, non mi sembra, sulla base della mia esperienza. Quali 

limitazioni?



-- 

4ndre4



Al contrario, stavo cercando di mettere le cose in prospettiva. Se ritieni che

Java sia la panacea per tutti i mali in bocca al lupo! :)



Ciao!


 gran lunga web e mobile.



Se per "desktop" intendi il tipo di interfaccia, sicuramente c'e' stata 

una grande diffusione di dispositivi mobili, questo pero' non significa 

che il desktop sia morto, solo che non e' piu' la fetta grossa del 

mercato.  Pero' lo sviluppo di applicazioni non e' solo quello, ad 

esempio i server che tengono su tutta la baracca (web) sono ancora 

sviluppati con linguaggi convenzionali (C/C++), lo stesso vale per altri 

software che necessitano di una certa efficienza.


 allora forse per quello che devi fare non è il linguaggio giusto, no?



Il problema e` anche la difficolta` di penetrazione di certi concetti 

avanzati del linguaggio tra la base di sviluppatori. Il C++ potrebbe 

anche avere una marcia in piu`, in certi casi, ma se non ti viene 

spiegato come innestarla, non la userai mai. Non vale solo per il C++. 

Per forza di cose, la ricezione di certi aspetti del linguaggio e` 

lenta: gli sviluppatori non hanno di solito tempo e/o voglia di 

aggiornarsi, leggersi un libro nuovo sul C++, tenersi in linea con le 

ultime novita`. Ma c'e` anche da dire che spesso certe discussioni 

rimangono appannaggio di elite. Per quanto ci si sforzi di tenersi al 

passo, alla maggioranza degli sviluppatori manca tutta il bagaglio di 

discussioni tra specialisti, che hanno portato all'introduzione di certi 

concetti. Per esempio, leggere Modern C++ Design di Alexandrescu ti 

risulta sicuramente interessante nell'immediato, ma hai comunque bisogno 

di qualcuno che ti spieghi come applicare certi concetti nella tua 

realta` di tutti i giorni - o comunque lavorare in un contesto in cui 

hai la possibilita` di applicarli. Altrimenti e` facile che tu ti 

rinchiuda nella tua zona di comfort e continui ad usare quelle "quattro" 

cose che conosci, che comprendi, e che sei sicuro facciano il loro 

dovere nel tuo contesto.



-- 

4ndre4


 limitazioni?



Un'interfaccia web, pur coadiuvata con ajax e' pur sempre limitata oltre 

che poco efficiente riguardo allo spreco di banda sulla rete.

E se da un lato e' vero che in teorie e' possibile implementare tutta 

una serie di stored procedure per migliorare questi aspetti, e' anche 

vero che nella pratica comune questo non si fa, si punta tutto su query 

"pesanti" con grande spreco di risorse, ma veloci da realizzare.






"Java è compatibile" è solo marketing, naturalmente. Qualsiasi codice C scritto

seguendo lo standard e compilato sul target è molto più compatibile.



Ciao!


 Gli ARM con Jazelle (tipo v5,v7)



Errata: v5 solo i marchiati J, v7 tutti (ma con set ridotto).



Ciao!


 Java sia la panacea per tutti i mali in bocca al lupo! :)



MAI affermato questo. Se lo scopo dei tuoi messaggi e` di dimostrare che 

nessun linguaggio e` la panacea di tutti i mali, possiamo anche 

concordare e chiudere il discorso qui.



Io, pero`, sto cercando di capire quel che hai scritto. Tu hai parlato 

di "complessita`" che si sposterebbe, in Java/C#, nella virtual machine, 

e hai alluso a problemi che verrebbero fuori dall'uso della JVM per via 

di tale complessita`.



Ti ho chiesto quali fossero i problemi che renderebbero lo spostamento 

di tale complessita` un problema. Citi vaghi problemi di 

incompatibilita`/configurazione/allocazione risorse. Ora, io rispetto la 

tua esperienza, ma ammetterei che gli esempi che hai portato non sono 

molto convincenti. Su Java e .NET non ci hai passato piu` di 5 anni. Io 

uso queste tecnologie da piu` di 15 anni e problemi insormontabili non 

ne ho trovati. Fortunato? Dal momento che Java domina il mercato dei 

linguaggi, direi che non sono il solo.



Ribadisco che il motivo per cui Java e C# sono meno complicati del C++ 

non e` soltanto perche` la JVM incorpora una complessita` che in C++ e` 

manuale (in fin dei conti, c'e` solo la garbage collection a fare la 

differenza). Il problema e` che il C++ e` assurdamente complesso a 

livello di linguaggio, non di implementazione.



Con questo, ripeto, non voglio dire che Java sia la panacea per tutti i 

mali. Dico solo che i motivi paventati per cui sarebbe cosi` terribile 

non mi sono stati ancora spieati.



-- 

4ndre4


 "pesanti" con grande spreco di risorse, ma veloci da realizzare.



Cosa c'entrano le query e le stored procedure? Spiegami quel che hai 

scritto con un esempio concreto. Mi fai un esempio di un'applicazione 

desktop che sarebbe molto inefficiente da costruire come web app? Chiedo 

per capire, non per polemica.



-- 

4ndre4


 mercato.  Pero' lo sviluppo di applicazioni non e' solo quello



Parlavo di applicazioni desktop.



-- 

4ndre4


 seguendo lo standard e compilato sul target è molto più compatibile.



LOL :) "Compatibile" che cosa significa? Ti ci voglio vedere a far 

qualunque cosa di concreto con il C standard. Lo standard non dice 

niente riguardo a thread, networking, database, crittazione, etc.

Devi comunque ricorrere a librerie esterne. In Java, tutto questo e` 

gia` fornito in maniera pienamente portabile. Non e` roba da poco.



-- 

4ndre4






Non è terribile, dico solo che il suo campo d'applicazione è più limitato di

quanto non si pensi.



Ciao!


 quanto non si pensi.



Ovvero?



-- 

4ndre4



Rispondo nell'altro ramo del thread ;)



Ciao!



Dove se dici "Java" ti guardano strano (se non addirittura ti prendono in giro)?

Tutto il mondo embedded, applicazioni di sistema, machine learning, number

crunching, servizi web, qualsiasi cosa mission critical, prototipazione GUI,

e, oddio, milioni di altri. Nella mia carriera, come t'ho detto, l'ho visto

usare veramente poco.



Ciao!


 trasferire dati. Non vedo dove sia la differenza.



Le query SQL scambiano grosse quantita' di dati, ad esempio quando devi 

popolare una datagrid multi livello.  Con javascript porre dei limiti e' 

molto macchinoso e non si fa, piuttosto si tende a fare schermate piu' 

semplici, con minore interazione, quando questa comporta una 

comunicazione client-server.


 seguendo lo standard e compilato sul target è molto più compatibile.



Guarda che non lo dicevo mica con ironia, secondo me il codice Java e' 

piu' portatile che il codice C, in entrambi i casi ci sono delle 

precauzioni e magari occorrera' rinunciare a qualcosa o scrivere piu' 

codice per gestire le differenze tra i sistemi target.  Resta il fatto 

che per il C c'e' una buona portabilita' solo per il linguaggio (che e' 

poca cosa), con l'ambiente e' quasi un disastro, con Java questo 

problema e' molto minore.


 un fischio. Credo ci metterai un po' ;)



Beh, quelle ci sono sempre.






Li elaboro correttamente,supporto non significa per forza std.

MS C++ supporta i template ad esempio,ma in alcuni punti e' non std nel 

supporto.

E cosi per altre cose.

E non parlo di una versione di 10 anni fa,ma proprio dell'ultima stabile 

(Visual Studio 2015).








Avendo la libreria per gui che ti piace di piu (c'e ne sono un po) si 

puo tranquillamente fare (e lo fatto un po di anni fa).

E' piu un problema di padronanza del linguaggio che altro,secondo me.






 Li elaboro correttamente,supporto non significa per forza std.



Non elabori correttamente un cazzo. Supportare lo standard significa essere compliant. 


 Dove se dici "Java" ti guardano strano (se non addirittura ti prendono in giro)?



Eh, ma caro "fmassei", il fatto che tu abbia usato o visto usare pochissimo Java nella tua carriera non vuol affatto dire che "il campo di applicazione di Java e` piu` limitato di quanto si pensi". E` che *tu* sei sempre rimasto confinato in ambienti in cui Java non si usa. La verita` e` che Java e` il linguaggio piu` usato al mondo: piu` di 3 volte il C++. Non e` affatto vero che Java non si usi per il machine learning o per number crunching. Dove lo avresti tirato fuori? Dire poi che non si usi per i servizi web, o mission critical significa bestemmiare: 



http://www.cinnober.com/newsletter/java-leads-highperformance-mission-critical-financial-applications




Addirittura esistono JSR per l'utilizzo di Java real-time:

http://www.oracle.com/technetwork/articles/java/nilsen-realtime-pt1-2264405.html




Insomma, potrei continuare a citare. Io credo che tu, con tutto il rispetto, conosca Java molto poco ;)




 popolare una datagrid multi livello.



Ma questo e` sbagliato a prescindere, nel client/server. Non c'entra il web o JavaScript. Come principio architetturale, e` sempre sbagliato inviare al client una molte spropositata di dati. Io ho lavorato su progetti dove si arrivava facilmente a 30 milioni di record. Su altri progetti, venivano elaborate 150 milioni di transazioni al giorno. Pensare di costruire un client desktop che mostrasse a video un datagrid era semplice follia. Piuttosto, si stabiliscono dei criteri di ricerca e si lavora su un subset minuscolo di dati. Questo prescinde da web/desktop. 






Sì, vabbè, che ti devo dire.. Hai ragione.



Ciao!


 faccio il "tuttofare" per un ecommerce, ma dovevo pure magna'. :-(



Se continua così dovrò farlo anch'io... :-(



EMG



--

http://www.emagsoftware.it


http://www.emagsoftware.it/emgmusic


http://www.emagsoftware.it/spectrum


http://www.emagsoftware.it/tbosg



 per come la vedo io è semplicemente la logica dell'astrazione all'opera.



Detto così è sicuramente vero. E penso che tutti, chi più chi meno, 

abbiano qualche volta imprecato contro un bug non dipendente dal proprio 

codice e quindi non risolvibile a meno di salti mortali tripli con 

avvitamento...



 Mi dispiace molto di questo.



Vorrei capire perché è successo tutto questo. Per me la "crisi" è 

iniziata nel 2012. Fino al 2011 lavoravo benissimo...



 codice legacy).



Chiaro.



 CPU?



Non uso VM e sono d'accordo per quanto riguarda le CPU. Ma per i sistemi 

operativi (parlo di Windows, l'unico che conosco) i bug sono purtroppo 

più frequenti di quello che uno vorrebbe, anche se a volte più che di 

bug si tratta di rottura di compatibilità con il comportamento 

precedente (oltre a rottura di qualcos'altro...).



 una ventina d'anni fa, IMHO.



Immagino però che tu stia parlando di ampliare il proprio curriculum 

vitae da sottoporre alle aziende per eventuale assunzione. Il mio 

problema però è diverso: io ho (quasi) sempre lavorato da solo a casa (e 

mi piace lavorare così) e solo dal 2012 in poi ho visto sfumare tutto il 

lavoro che avevo con i clienti finali. E' questo che mi chiedo dove sia 

finito. I clienti finali non sanno niente di HTML5, JS, etc. Vogliono un 

programma funzionante e basta. A chi si stanno rivolgendo ora? Per me è 

attualmente un mistero...



 spesso con (poco funzionali) interfacce web,



Tutte cose che io posso fare. Allora perché non si rivolgono più a me? 

Dici che sono stati allettati da offerte di aziende grandi?



EMG



--

http://www.emagsoftware.it


http://www.emagsoftware.it/emgmusic


http://www.emagsoftware.it/spectrum


http://www.emagsoftware.it/tbosg



 E' piu un problema di padronanza del linguaggio che altro,secondo me.



Sì, alla fine qualsiasi applicazione la puoi fare con qualsiasi 

linguaggio. Ma ci sono linguaggi molto più adatti di altri a certi tipi 

di applicazioni. Il C++ è un linguaggio generico e già per quello perde 

punti rispetto a linguaggi specializzati (cioè creati per un certo tipo 

di applicazioni). Inoltre, come già si è detto, è anche molto complesso 

e non basta una libreria per farlo diventare comodo come un linguaggio 

specializzato.



 minuscolo di dati. Questo prescinde da web/desktop.



Perfettamente d'accordo. Per questo preferisco il file sharing. :-) Con 

quello puoi mostrare anche una lista di 150 milioni di record senza 

problemi, visto che vengono scaricati solo quelli effettivamente 

mostrati a video. E' anche vero che qualcosa di simile si può fare anche 

con il client/server ma è più complicato e meno efficiente.



E poi visto il continuo aumentare della velocità delle reti forse alla 

fine il client/server perderà il suo scopo. :-)



 Dici che sono stati allettati da offerte di aziende grandi?



E' probabile, magari non aziende "grandi" ma semplicemente aziende che 

riescono a farsi conoscere piu' facilmente.  Sai meglio di me che non e' 

facile vendersi lavorando in proprio, io per parecchio tempo ho lavorato 

per sub appalto e non di rado le stesse ditte che mi davano lavoro 

lavoravano a loro volta per sub appalto.


 iniziata nel 2012. Fino al 2011 lavoravo benissimo...



Molte piccole aziende hanno chiuso, o hanno cambiato mestiere, 

sopratutto cercando di abbattere quei costi (rivolgersi a ditte esterne) 

che non sono piu' sostenibili.  Non dico che la causa sia tutta li', ma 

di certo incide in buona parte.


 appalto.



Anch'io, anch'io. E naturalmente noi che lavoriamo siamo quelli che 

guadagnano di meno... :-(



 semplice follia.



Dipende molto dal contesto, un conto e' un'interfaccia web che ti 

consente di accedere ai dati alla meno peggio, un altro e' un sistema su 

LAN dove hai la necessita' di scambiare grandi quantita' di dati in 

tempo reale con selezioni e/o elaborazioni piuttosto complesse.



In pratica se usi un'interfaccia web, che sia su php piuttosto che jsp o 

asp, sei obbligato ad usare determinati strumenti che impongono certe 

rigidita', come ad esempio il database piuttosto che il protocollo, 

perche' ben supportati, a scapito della flessibilita' che avresti con 

altre soluzioni.






La parola supportare non significa necessariamente std

Le parole supportare std invece significa quelle c'e scritto.

Ma a parte le disquisizioni:

Visual C++ implements the vast majority of features in the C++11 core 

language specification,



Infatti ci credo subito (toccato con mano)

MS semplicemente mente

Oppure sono quelli del gcc che mentono

A te la scelta









Diciamo che non  e' il massimo per fare gestionali

La lib std e' quella che è rispetto ad altri linguaggi (pensiamo alla 

lib java ad esempio).

I suoi punti di forza sono ben altri

Efficienza del codice,compatibilità a livello source con il C quasi al 

100%,un tipo di progettazione sw sui template che pochi linguaggi 

hanno,la non dipendenza da tutto uno strato di sw che altri linguaggi hanno




 hanno,la non dipendenza da tutto uno strato di sw che altri linguaggi hanno



Sì, è vero. Ma, secondo me, se il prezzo da pagare nel C è accettabile, 

per il C++ è troppo alto. Quindi va usato solo in quegli ambiti nei 

quali è davvero utile.




Come qualsiasi linguaggio.




 Come qualsiasi linguaggio.



Sì, a parte il fatto che il C++ dovrebbe essere un linguaggio generico e 

quindi non dovrebbe avere un suo ambito speciale.




Lo sono anche altri (perl,python,java,ecc..)

Ma comunque il campo di applicazione e' quello che e'

In pratica,pur essendo linguaggi generici ci si scontra con la realta' e 

si preferisce scegliere.




 Insomma, potrei continuare a citare. Io credo che tu, con tutto il rispetto, conosca Java molto poco ;)

Citare va bene, millantare funzioni che java non ha e' altro :-)

comunque va bene tutto, basta che faccia quello che deve :-)



AA,










 Trattasi in realtà di soft real time



Il tuo problema e` che non sai neanche di cosa si sta parlando.



http://www.rtsj.org/


https://www.aicas.com/cms/rtsj




"RTSJ is designed to support both hard and soft real-time applications. Among its major features are: scheduling properties suitable for real-time applications with provisions for periodic and sporadic tasks, support for deadlines and CPU time budgets, and tools to let tasks avoid garbage collection delays"



Non sei informato, ma butti merda su Java tanto per farlo. 



Contento tu. Nessuno sta millantando niente. Semmai sei tu che millanti una conoscenza che non hai.



http://www.ibm.com/developerworks/library/j-rtj1/index.html




...e potrei continuare a citare.