Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-10-2011, 19:11   #21
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Per quanto mi riguarda un programmatore deve saper risolvere i problemi che si pongono davanti, nel "migliore" (col miglior compromesso possibile in base alla sua esperienza e conoscenza) dei modi.
si ok, ma questo non ci dice se questo fantomatico programmatore conosce il dietro le quinte o meno

essendo io partito dal basic, so benissimo che si può essere dei mostri nell'implementare programmi senza sapere molto di come funziona il sistema a basso livello

però se si vuole conoscere quel "basso livello" non c'è altra strada se non sporcarsi le mani con C e assembly
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2011, 19:47   #22
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Conoscere i dettagli di basso livello non è più indispensabile, a meno che non si faccia un certo tipo di lavoro.

L'informatica tende sempre più verso l'alto livello, a raggiungere idealmente quello pseudocodice che da decenni viene usato per astrarre, eliminando proprio i dettagli di basso di livello.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2011, 19:57   #23
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da FabryHw Guarda i messaggi
Beh ma un prodotto che esce oggi, se fra 5 anni non ha subito evoluzioni non puoi dire che è morto "oggi".
Ok allora togli 4 anni e diciamo che è morto da 9 con l'uscita di Visual Studio 2002 e .Net 1.0

Quote:
Secondo il tuo ragionamento allora il C è morto nel 1990, perché saranno anche usciti gli aggiornamenti del 2000 più un altro atteso in questi anni, ma è anche vero che la maggior parte dei compilatori supporta al 100% solo il C90 ed il resto è implementato parzialmente.
Mi pare che gcc supporti alla perfezione C99. E' Microsoft che non implementa il C99 perchè non è di suo interesse.

Quote:
E cmq cosa intendi con mischiare il vecchio?
Nel senso che puoi parzialmente scrivere alla VB6.

Quote:
Fonte il sito commerciale di F. Balena & Co. (sorry non Battilana) dove parlavano del suo tool (a pagamento) di conversione da VB6 a VB.Net.
Secondo lui VB ha ancora molto spazio ed i programmatori VB6 al più dovrebbero pensare a migrare le loro conoscienze su VB.Net e non pensare di ricominciare da zero con altri linguaggi tra cui C#.
Scopo per cui è stato sviluppato VB.Net

Quote:
Poi Balena da Guru VB6 e VB.Net (nonché esperto C#, ma qui forse non un guru) proponeva degli esempi, in cui mostrava che C# non era per nulla superiore a VB.Net ma che entrambi i linguaggi potevano assolvere gli stessi compiti e che le prestazioni del codice CLR (sotto Dot.Net) alla fine erano pure uguali o quasi.
Il runtime è lo stesso.
E' la sintassi veramente barbara il dramma del VB...

Quote:
Tra quegli esempi ne mostrava anche alcuni dove VB.Net aveva dei vantaggi su C# permettendo di fare cose non fattibili in C# (o fattibili solo con codice scomodo da scrivere).
Se ritrovo il link lo posto.
Sarei curioso di vederlo. In compenso io ne ho tanti altri in cui a scrivere in C# è l'IDE mentre in VB devo indovinare la mega stringona da scrivere (es. i delegati).

Quote:
Inoltre mi pare di aver letto in giro che VB.Net 2010 avrebbe già il supporto a DLR ma che Microsoft non lo abbia rilasciato solo perché non è (o era) in grado di rilasciarlo anche per C# e non voleva creare scompensi (rendendo VB.Net troppo in vantaggio su C#).
Strano dato che il DLR deve integrarsi con il CLR e quindi essere indipendente dal linguaggio.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2011, 20:14   #24
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Conoscere i dettagli di basso livello non è più indispensabile, a meno che non si faccia un certo tipo di lavoro.
appunto, ma è difficile che un informatico faccia per tutta la vita un lavoro che lo terrà lontano da quei dettagli a basso livello

detto questo, beh, se si dev'essere degli esperti bisogna esserlo....nessun corso di laurea salta architettura dei calcolatori
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2011, 21:15   #25
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Mi pare che gcc supporti alla perfezione C99.
L'ultima volta che ho controllato il manuale del GCC è stato un po' di mesi fa, e non era totalmente compliant col C99.
Quote:
E' Microsoft che non implementa il C99 perchè non è di suo interesse.
Non lo fa praticamente nessuno. Purtroppo lo standard di riferimento rimane l'ANSI C89.

Oltre, si va direttamente di C++.
Quote:
Originariamente inviato da pabloski Guarda i messaggi
appunto, ma è difficile che un informatico faccia per tutta la vita un lavoro che lo terrà lontano da quei dettagli a basso livello
Quando ne avrei bisogno li imparerai. Tantissime cose le ho imparate così: per necessità.
Quote:
detto questo, beh, se si dev'essere degli esperti bisogna esserlo....nessun corso di laurea salta architettura dei calcolatori
Se ti chiedessi la definizione di esperto?

Esperto <> laureato <> conoscente architettura degli elaboratori.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2011, 18:42   #26
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6333
Quote:
Originariamente inviato da Kralizek Guarda i messaggi
posso capire per VB6 e precedenti, ma VB.NET e C# hanno un bella base di posizioni aperte in tutto il mondo e, soprattutto, la comunitá open source si sta iniziando a dare da fare anche in ambito .NET con progetti sempre piú interessanti.
Il mio punto è che se si può scegliere (ed io spesso posso), sono da evitare per i motivi che avevo descritto.

Quote:
Originariamente inviato da Kralizek Guarda i messaggi
Tra l'altro, a differenza di altri linguaggi piú "consigliati", C# e VB.NET hanno un'evoluzione molto piú veloce cosa che tra l'altro invoglia i progetti open source a muoversi da un porting line-to-line ad un porting funzionalmente compatibile (tranne pochi casi, come lucene.net )
Uhm! Sbaglio o quando dici "porting" stai parlando di riscrittura completa dei sorgenti ?

Quote:
Originariamente inviato da Kralizek Guarda i messaggi
poi é vero che io sono un fanatico di LINQ e da poco in ufficio ci siamo creati una nostra libreria per eseguire alcune operazioni in maniera piú memory-efficient, peró non vedo nessuna tecnologia che nello stesso costrutto mi permette di definire una query sql anche complessa, filtrarla ulteriormente in memoria e trasformare tutto in xml: ovviamente, il tutto verrá poi eseguito solo quando il risultato sará veramente necessario.
Ci sono buoni motivi per cui cose simili sono da evitare, ma mi limiterò a farti notare che in realtà LINQ non fa altro che "integrare" a colpi di zucchero sintattico buona parte di SQL in C# e VB .Net facendo finta che siano un unico linguaggio.
Ti lega alla piattaforma in cambio di una maggior velocità di codifica di applicazioni "una botta e via".

Quote:
Originariamente inviato da Kralizek Guarda i messaggi
Ovviamente non voglio buttarla alla solita sterile guerra di quale piattaforma ce l'ha piú lungo. semplicemente non mi trovo daccordo sulla tua osservazione sull'utilizzabilitá dei lunguaggi .NET
Non è questione di "utilizzabilità" ma di vantaggi a medio e lungo termine.
Se "possiedi il software" (nel senso che è tuo o che ne hai la responsabilità) è meglio evitare di legarsi mani e piedi ad un "fornitore di tool" con priorità e precedenti come quelli di Microsoft.
LMCH è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2011, 20:53   #27
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
Quote:
Originariamente inviato da LMCH Guarda i messaggi
Il mio punto è che se si può scegliere (ed io spesso posso), sono da evitare per i motivi che avevo descritto.
Ecco questo è il concetto più importante: analizzare i requisiti che si devono soddisfare e, possibilmente, fare la scelta più funzionale.

Quote:
Uhm! Sbaglio o quando dici "porting" stai parlando di riscrittura completa dei sorgenti ?
Premesso che i porting di cui parlo sono di librerie OS disponibili per Java (Hibernate e Lucene, per spararne due) e che a poco a poco vengono portate su .NET o riscritte in toto usufruendo delle caratteristiche avanzate che questa piattaforma offre.

Non mi scandalizza tanto la riscrittura di librerie per un'altra piattaforma perchè se così non fosse saremmo ancora fermi a lavorare in C/C++ con i pro (pochi) ed i contro (tanti) che questo vuol dire.

Quote:
Ci sono buoni motivi per cui cose simili sono da evitare, ma mi limiterò a farti notare che in realtà LINQ non fa altro che "integrare" a colpi di zucchero sintattico buona parte di SQL in C# e VB .Net facendo finta che siano un unico linguaggio.
Ti lega alla piattaforma in cambio di una maggior velocità di codifica di applicazioni "una botta e via".
Onestamente non ti ho mai letto qui sul forum quindi non so bene quale piattaforma sia per te il "bene" visto che .NET è sicuramente il "male". Ad occhio azzarderei un fanatico dell'open source alla FSF-way.

So bene cosa ci sta dietro le quinte e cosa LINQ fa per me e forse proprio perchè lo so cosa fa posso dire di preferire la possibilità di scrivere una chiamata del genere al dover creare una routine che
1) esegua l'accesso al database, dopo aver validato i parametri da passare alla query e concatenato ad uopo le stringhe
2) esegua qualche elaborazione in memoria
3) crei il file xml

certo, lo posso scrivere anche così, ma cosa ci guadagno? la possibilità di migrare questo codice? ma forse questo non è mai stato un requisito e quindi mi trovo un codice portabilissimo da 40/50 linee di codice (dipende da quanto vuoi sporcare il tuo portabilissimo codice). Se la portabilità non è un requisito, quel zuccherino sintattico mi sta più che bene perchè aumenta la mia produttività e la qualità del mio codice visto che assumo che il codice terzo che utilizzo (microsoft e non) sia stato testato.

Quote:
Non è questione di "utilizzabilità" ma di vantaggi a medio e lungo termine.
Se "possiedi il software" (nel senso che è tuo o che ne hai la responsabilità) è meglio evitare di legarsi mani e piedi ad un "fornitore di tool" con priorità e precedenti come quelli di Microsoft.
Mettiamo che stai parlando con il mio capo, titolare di un'azienda con qualcosa come 500 siti web di varia grandezza nel mercato del marketing online dell'educazione (dalle high schools ai corsi di formazioni ed MBA passando per università).
Da un lato hai un framework che ti offre tantissima roba già pronta, una piattaforma web stabile ed in continua evoluzione, features sempre all'avanguardia che semplificano il lavoro di ogni giorno (per dirne una, abbiamo spostato un servizio remoto da una macchina remota alla stessa macchina e nel frattempo siamo passati da comunicazione SOAP a Named Pipes: 2 click on WCF), dall'altro hai la possibilità di avere il codice tuo e sapere che non verrà cambiato da qui all'estinzione della Città del Vaticano (perchè Microsoft ad ogni nuova release di .NET dà un 10 anni minimo di supporto, poca roba vero?).

Cosa scegliamo? una bella CGI scritta in C++?

Ripeto, non so con chi sto parlando, magari sei il CEO di Facebook o di chissà quale altro famoso sito, ma ad occhio mi sembra una di quelle discussioni che facevamo stesi a prendere il sole nel giardino dell'università dove i puristi del software libero e compilabile ovunque provavano a convincere quelli che con il software già ci portavano il pane a casa o comunque avevano una visione un po' più profonda della Lista a Puntatori fatta il giorno prima in laboratorio.

Ma sono felice di essere smentito.
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2011, 04:40   #28
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6333
Quote:
Originariamente inviato da Kralizek Guarda i messaggi
Premesso che i porting di cui parlo sono di librerie OS disponibili per Java (Hibernate e Lucene, per spararne due) e che a poco a poco vengono portate su .NET o riscritte in toto usufruendo delle caratteristiche avanzate che questa piattaforma offre.
Niente neolingua microsoftiana, per favore.
Una riscrittura è decisamente più radicale di un porting (in cui dove possibile si cercano di evitare le riscritture complete).
Ed in questo caso stai parlando pure di un cambio del linguaggio di codifica dei sorgenti.

Quote:
Originariamente inviato da Kralizek Guarda i messaggi
Non mi scandalizza tanto la riscrittura di librerie per un'altra piattaforma perchè se così non fosse saremmo ancora fermi a lavorare in C/C++ con i pro (pochi) ed i contro (tanti) che questo vuol dire.
"Saremmo ancora fermi a lavorare in C/C++" ?
Ci sono moltissime librerie scritte in C/C++ ed utilizzabili da altri linguaggi e pure dal runtime .Net senza essere costretti a riscrivere il tutto in C#.
Persino .Net si appoggia su un fottio di librerie scritte in C/C++, pensa un po.

Quote:
Originariamente inviato da Kralizek Guarda i messaggi
Onestamente non ti ho mai letto qui sul forum quindi non so bene quale piattaforma sia per te il "bene" visto che .NET è sicuramente il "male". Ad occhio azzarderei un fanatico dell'open source alla FSF-way.
Sopravvaluti .Net se pensi questo.
Dal mio punto di vista .Net non è "il male", ma più semplicemente sotto certi aspetti è nato male in origine e poi si sta evolvendo come è successo con il "vecchio" VB (tanto zucchero sintattico che con il tempo diventerà sempre più difficile da gestire).
Ad esempio, il team di .Net ha sottovalutato in modo clamoroso l'importanza del codice unmanaged (con tutti i casini che comporta, basta vedere quanto hanno faticato per supportare anche i 64bit con il loro nuovo runtime "nato per essere portabile"), potevano prevedere "puntatori nativi" in modo esplicito e gestirli in modo molto più sicuro e portatile ed invece non hanno saputo fare di meglio che consigliare di usare interi a 64bit per memorizzare puntatori unamanaged in modo "portabile".

Certo, se ti limiti a web application non ti accorgerai mai di simili limitazioni, ma ci sono e creano parecchi grattacapi quando ti devi interfacciare in modo non banale con codice unmanaged (ed in alcuni casi crea problemi anche quando la cosa in teoria sarebbe banale).

Quote:
Originariamente inviato da Kralizek Guarda i messaggi
So bene cosa ci sta dietro le quinte e cosa LINQ fa per me e forse proprio perchè lo so cosa fa posso dire di preferire la possibilità di scrivere una chiamata del genere al dover creare una routine che
1) esegua l'accesso al database, dopo aver validato i parametri da passare alla query e concatenato ad uopo le stringhe
2) esegua qualche elaborazione in memoria
3) crei il file xml

certo, lo posso scrivere anche così, ma cosa ci guadagno? la possibilità di migrare questo codice? ma forse questo non è mai stato un requisito e quindi mi trovo un codice portabilissimo da 40/50 linee di codice (dipende da quanto vuoi sporcare il tuo portabilissimo codice). Se la portabilità non è un requisito, quel zuccherino sintattico mi sta più che bene perchè aumenta la mia produttività e la qualità del mio codice visto che assumo che il codice terzo che utilizzo (microsoft e non) sia stato testato.
Ed è esattamente quello che avevo scritto:
Ti lega alla piattaforma in cambio di una maggior velocità di codifica di applicazioni "una botta e via".

Quote:
Originariamente inviato da Kralizek Guarda i messaggi
Mettiamo che stai parlando con il mio capo, titolare di un'azienda con qualcosa come 500 siti web di varia grandezza nel mercato del marketing online dell'educazione (dalle high schools ai corsi di formazioni ed MBA passando per università).
Da un lato hai un framework che ti offre tantissima roba già pronta, una piattaforma web stabile ed in continua evoluzione, features sempre all'avanguardia che semplificano il lavoro di ogni giorno (per dirne una, abbiamo spostato un servizio remoto da una macchina remota alla stessa macchina e nel frattempo siamo passati da comunicazione SOAP a Named Pipes: 2 click on WCF), dall'altro hai la possibilità di avere il codice tuo e sapere che non verrà cambiato da qui all'estinzione della Città del Vaticano (perchè Microsoft ad ogni nuova release di .NET dà un 10 anni minimo di supporto, poca roba vero?).

Cosa scegliamo? una bella CGI scritta in C++?

Ripeto, non so con chi sto parlando, magari sei il CEO di Facebook o di chissà quale altro famoso sito, ma ad occhio mi sembra una di quelle discussioni che facevamo stesi a prendere il sole nel giardino dell'università dove i puristi del software libero e compilabile ovunque provavano a convincere quelli che con il software già ci portavano il pane a casa o comunque avevano una visione un po' più profonda della Lista a Puntatori fatta il giorno prima in laboratorio.

Ma sono felice di essere smentito.
Visto che ne hai parlato per primo, quelli di Facebook usano pure PHP "compilato" in C con un tool di conversione automatica, fai un po te.

Più seriamente, io sviluppo applicazioni in ambito industriale, su Windows, Windows CE, Linux, ed anche firmware "senza sistema operativo" scritto in C ed assembly, attualmente dove possibile sui frontend utilizzo C++ e Qt, ma ho ancora parecchia roba legacy "in supporto prolungato" (inclusi frontend e tool vari scritti in VB6).
Un settore molto diverso dal tuo sotto parecchi aspetti ma dove puoi star certo che se si usa un certo software o un certo linguaggio non è certo per motivazioni ideologiche.
LMCH è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2011, 16:00   #29
!fazz
Moderatore
 
L'Avatar di !fazz
 
Iscritto dal: Nov 2006
Messaggi: 21933
Quote:
Originariamente inviato da LMCH Guarda i messaggi
Niente neolingua microsoftiana, per favore.
Una riscrittura è decisamente più radicale di un porting (in cui dove possibile si cercano di evitare le riscritture complete).
Ed in questo caso stai parlando pure di un cambio del linguaggio di codifica dei sorgenti.



"Saremmo ancora fermi a lavorare in C/C++" ?
Ci sono moltissime librerie scritte in C/C++ ed utilizzabili da altri linguaggi e pure dal runtime .Net senza essere costretti a riscrivere il tutto in C#.
Persino .Net si appoggia su un fottio di librerie scritte in C/C++, pensa un po.



Sopravvaluti .Net se pensi questo.
Dal mio punto di vista .Net non è "il male", ma più semplicemente sotto certi aspetti è nato male in origine e poi si sta evolvendo come è successo con il "vecchio" VB (tanto zucchero sintattico che con il tempo diventerà sempre più difficile da gestire).
Ad esempio, il team di .Net ha sottovalutato in modo clamoroso l'importanza del codice unmanaged (con tutti i casini che comporta, basta vedere quanto hanno faticato per supportare anche i 64bit con il loro nuovo runtime "nato per essere portabile"), potevano prevedere "puntatori nativi" in modo esplicito e gestirli in modo molto più sicuro e portatile ed invece non hanno saputo fare di meglio che consigliare di usare interi a 64bit per memorizzare puntatori unamanaged in modo "portabile".

Certo, se ti limiti a web application non ti accorgerai mai di simili limitazioni, ma ci sono e creano parecchi grattacapi quando ti devi interfacciare in modo non banale con codice unmanaged (ed in alcuni casi crea problemi anche quando la cosa in teoria sarebbe banale).



Ed è esattamente quello che avevo scritto:
Ti lega alla piattaforma in cambio di una maggior velocità di codifica di applicazioni "una botta e via".



Visto che ne hai parlato per primo, quelli di Facebook usano pure PHP "compilato" in C con un tool di conversione automatica, fai un po te.

Più seriamente, io sviluppo applicazioni in ambito industriale, su Windows, Windows CE, Linux, ed anche firmware "senza sistema operativo" scritto in C ed assembly, attualmente dove possibile sui frontend utilizzo C++ e Qt, ma ho ancora parecchia roba legacy "in supporto prolungato" (inclusi frontend e tool vari scritti in VB6).
Un settore molto diverso dal tuo sotto parecchi aspetti ma dove puoi star certo che se si usa un certo software o un certo linguaggio non è certo per motivazioni ideologiche.
questioni di preferenze
io personalmente piuttosto che imbarcamenarmi con qt e c++ uso tranquillamente .net per i backend e il c++ lo relego al firmware
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX)
Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000
!fazz è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2011, 19:38   #30
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6333
Quote:
Originariamente inviato da !fazz Guarda i messaggi
questioni di preferenze
io personalmente piuttosto che imbarcamenarmi con qt e c++ uso tranquillamente .net per i backend e il c++ lo relego al firmware
Dipende da che target hai in termini di clientela e tipologie di pacchetti software e soluzioni che proponi, non puoi "preferire" .Net se non può girare sull'hardware che ti permette di essere più competitivo sui grandi numeri, tanto per fare un esempio.
LMCH è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2011, 20:31   #31
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Dipende, appunto, dai requisiti che hai, come diceva giustamente Kralizek. Se non ci sono impedimenti, e per un progetto puoi utilizzare strumenti più produttivi, perché non usarli? Solo perché sono diffusi su Windows? Non ha alcun senso.

Riguardo allo zucchero sintattico, poi, mi sembra una scusa oltre che un'argomentazione surreale. Qualunque linguaggio offre costrutti sintattici per semplificare la vita degli sviluppatori. E' la differenza che passa anche fra linguaggi di più basso livello e quelli di livello più alto.

Te la sentiresti di sviluppare un'applicazione web in brainfuck? E' disponibile per qualunque piattaforma, dunque perché non adottarlo?

Tra l'altro la teoria della computazione ha dimostrato che per essere Turing-completi basta una macchina in grado di eseguire tre sole istruzioni (incremento di un registro, azzeramento di un registro, salto se due registri sono diversi; ad esempio, ma ce possono essere altre "architetture" dotate sempre di 3 istruzioni, ma diverse).

Se oggi uso (Iron)Python piuttosto che l'assembly x86, penso che avrò i miei buoni motivi. E se a lavoro mi diverto con le query di LINQ quando manipolo collezioni di dati, avrò anch'io i miei buoni motivi.

Forse non mi piace scrivere PAPIRI per fare cose che si risolvono con un paio di righe LINQ, per pattern abbastanza ricorrenti nella programmazione di tutti giorni.

Con ciò NON voglio dire che i linguaggi dovrebbero implementare qualunque costrutto sintattico; tutt'altro. Ma se la pratica dimostra la ricorrenza di certe situazioni, offrire uno strumento per risolvere velocemente il problema può essere una gran comodità, che comporta un miglioramento della produttività e, quindi, del time-to-market.

D'altra parte il riuso del codice è un fondamento della programmazione. Si fa di tutto per astrarre e riutilizzarlo il più possibile. Strumenti come LINQ nascono apposta allo scopo: non reinventare ogni volta la ruota, ma semplificare notevolmente la scrittura di pattern comuni.

In tutto ciò, pur con tutta la fantasia e la buona volontà, non riesco a capire come si possa parlare di maggior difficoltà di gestione del codice, quando il risultato ottenuto è l'esatto contrario: fra manutenere un paio di righe di codice, peraltro estremamente leggibili, col papiro equivalente, non c'è proprio paragone; ma a favore della prima soluzione!

Questo "lega" a una determinata piattaforma? A parte che l'esistenza di progetti come Mono dimostra il contrario, mi viene in mente il ritornello di una celebre canzone di Celentano e di sua moglie: "siamo la coppia più bella del mondo, e ci dispiace per gli altri..."

Come dicevo, se non vincoli di piattaforma e devo risolvere un problema prima possibile, non mi faccio alcuno scrupolo a utilizzare strumenti come questi. Sarei, al contrario, stupido a non farlo.

Ovviamente si tratta di scelte che DEVONO tener conto della prospettiva futura in termini di supporto, manutenibilità ed estensione del codice. Cose che può garantire Microsoft per un lungo arco di tempo, come dimostra la storia.

Non mi è nemmeno chiara la questione del codice unmanaged, dei 64 bit, e della memorizzazione dei puntatori. Anche perché fin dall'inizio .NET mette a disposizione un tipo intero (intptr, se non ricordo male il nome) che nasce proprio allo scopo.

E anche la gestione del codice unmanaged non mi sembra roba dell'altro mondo (sebbene NON ne abbia mai fatto uso: mai sentita questa necessità, anche grazie alle reference e ai parametri di input/output).

Pertanto condivido, e chiudo, anche il messaggio di !fazz.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2011, 20:43   #32
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
Quote:
Originariamente inviato da LMCH Guarda i messaggi
Più seriamente, io sviluppo applicazioni in ambito industriale, su Windows, Windows CE, Linux, ed anche firmware "senza sistema operativo" scritto in C ed assembly, attualmente dove possibile sui frontend utilizzo C++ e Qt, ma ho ancora parecchia roba legacy "in supporto prolungato" (inclusi frontend e tool vari scritti in VB6).
Un settore molto diverso dal tuo sotto parecchi aspetti ma dove puoi star certo che se si usa un certo software o un certo linguaggio non è certo per motivazioni ideologiche.
vabbè in quest ambito, se mi permetti, è .net a non fare proprio al caso tuo
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2011, 00:40   #33
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6333
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Non mi è nemmeno chiara la questione del codice unmanaged, dei 64 bit, e della memorizzazione dei puntatori. Anche perché fin dall'inizio .NET mette a disposizione un tipo intero (intptr, se non ricordo male il nome) che nasce proprio allo scopo.
Il nome dice tutto: IntPtr ... ed invece è una struct (per serie: cominciamo beeene!)
E' un escamotage aggiunto dopo che si sono accorti che a troppi sviluppatori (pure ai loro che mangiano pane e volpe) era necessario interfacciarsi in modo portabile con codice unmanaged.

La prima soluzione ufficiale di Microsoft era stata del tipo: "Veh! Se volete la portabilita dei puntatori unamanaged usate interi a 64bit per memorizzarli in codice managed"

Cioè avevano progettato una virtual machine ed un runtime "da zero" e non avevano minimamente considerato che prima o poi capita di dover "uscir fuori la dove ci sono puntatori ed handle" e che doveva essere fatto in modo portabile ed indipendente dalla piattaforma visto che .Net doveva essere multipiattaforma (all'interno delle piattaforme di Microsoft).

Dopo hanno cercato di metterci una pezza proprio con IntPtr come "tipo standard per rappresentare puntatori ed handle" e non contenti hanno pure aggiunto UIntPtr ... sconsigliandone l'uso (per la serie: complichiamo anche la pezza).
Non sto scherzando, nella documentazione si trova scritto:
"Il tipo IntPtr è conforme a CLS, mentre il tipo UIntPtr non lo è. Solamente il tipo IntPtr viene utilizzato in Common Language Runtime. Il tipo UIntPtr viene fornito principalmente allo scopo di mantenere la simmetria di architettura con il tipo IntPtr."

In ogni caso IntPtr serve solo come promemoria di "questo in realtà è un handle o un puntatore", ma non hai nessuna vera protezione o check aggiuntivo.

Questa non-gestione è anche uno dei motivi per cui era usciti parecchio in ritardo con la versione a 64bit di .Net (tante bug legate alla dimensione dei puntatori).
LMCH è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2011, 07:13   #34
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Scusami, ma io leggo questo:
Codice:
.NET Framework 1.1

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework
Ricordavo bene, dunque: questo tipo (definito come struttura, ma è indifferente: l'importante è che sia utile allo scopo) esiste da una vita. Certo, non dalla prima versione, ma già dalla seconda.

Se consideri tutte le versioni che ci sono state e quanto tempo è passato, non mi sembra una tragedia il fatto che sia stato messo a disposizione dalla 1.1, cioè circa UN anno dopo la 1.0.

UIntPtr, poi, non è una pezza. In .NET tutti i tipi interi, di qualunque dimensione, sono disponibili signed o unsigned. Per cui è stato aggiunto anche questo, per "simmetria", come hanno sottolineato.

Ma per lo scopo per cui è nato IntPtr, è sufficiente far uso soltanto di questo tipo. Anche qui, non mi sembra il caso di stracciarsi le vesti. Devi usare codice unmanaged? Usa IntPtr per infilarci i puntatori.

Poi qual è il problema con la mancanza di protezione? Cosa ti saresti aspettato?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2011, 18:10   #35
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6333
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Poi qual è il problema con la mancanza di protezione? Cosa ti saresti aspettato?
Hai presente i vari patch (inclusi quelli di questa settimana) per .Net nelle sue varie versioni relativi a problemi di sicurezza ?
In buona parte sono dovuti a quella enorme svista iniziale che ha portato poi all'introduzione di IntPtr tra i vari rimedi "post-disastro".
L'accesso a puntatori ed handle poteva essere reso più sicuro (e pure più semplice) ma erano troppo presi dal realizzare la loro "risposta a Java" (perchè .Net quello è in ultima analisi) e come è successo con Java hanno sottovalutato le esigenze (e le problematiche) di chi ha necessità di interfacciarsi con codice unmanaged/nativo/legacy (in primo luogo chi dentro Microsoft deve interfacciarsi con il codice di più basso livello e mixare dati managed con dati unmanaged).

Tieni comunque presente che per me non è un problema visto che nel mio settore mi da un notevole vantaggio sulla concorrenza.
LMCH è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2011, 21:56   #36
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Non m'è ancora chiaro cosa e come avrebbero dovuto fare.

Comunque .NET è senza dubbio una risposta a Java (Microsoft fu costretta a eliminare la sua JVM e le estensioni a essa apportate), ma fortunatamente è diverso.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2011, 17:48   #37
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6333
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Non m'è ancora chiaro cosa e come avrebbero dovuto fare.
Gestire come tipi nativi distinti puntatori ed handle ed impedire che si possa manipolarli in modo incontrollato dal lato managed.

Attualmente con IntPtr viene esposto al programmatore se si tratta di puntatori o handle a 32bit oppure a 64bit e li puoi manipolare in tutti i modi possibili con degli interi.

Le operazioni "corrette" su puntatori ed handle sono un sottoinsieme più facile da controllare rispetto a quelle su generici interi e quindi (se ci avessero pensato mentre definivano la VM ed il runtime) in primo luogo avrebbero implementato handle e puntatori come due tipi separati con metodi ed operatori specifici (es: sugli handle non si dovrebbero fare operazioni di aritmetica dei puntatori) ed in secondo luogo avrebbero anche potuto includere nei puntatori informazioni sui range di indirizzi validi per operazioni su di esse (es: se la funzione nativa restituisce un puntatore ad una struct, il "puntatore" del CLR include indirizzo base e dimensione della struct in modo da impedire letture/scritture al di fuori di essa).

Dal punto di vista computazionale l'aggravio sarebbe quasi nullo e tutto il runtime sarebbe stato molto più robusto nei confronti di codice malevole o semplicemente di errori di programmazione nell'accesso a dati e/o codice unmanaged.
LMCH è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2011, 00:12   #38
nico159
Senior Member
 
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
Quote:
Originariamente inviato da LMCH Guarda i messaggi
Gestire come tipi nativi distinti puntatori ed handle ed impedire che si possa manipolarli in modo incontrollato dal lato managed.

Attualmente con IntPtr viene esposto al programmatore se si tratta di puntatori o handle a 32bit oppure a 64bit e li puoi manipolare in tutti i modi possibili con degli interi.

Le operazioni "corrette" su puntatori ed handle sono un sottoinsieme più facile da controllare rispetto a quelle su generici interi e quindi (se ci avessero pensato mentre definivano la VM ed il runtime) in primo luogo avrebbero implementato handle e puntatori come due tipi separati con metodi ed operatori specifici (es: sugli handle non si dovrebbero fare operazioni di aritmetica dei puntatori) ed in secondo luogo avrebbero anche potuto includere nei puntatori informazioni sui range di indirizzi validi per operazioni su di esse (es: se la funzione nativa restituisce un puntatore ad una struct, il "puntatore" del CLR include indirizzo base e dimensione della struct in modo da impedire letture/scritture al di fuori di essa).

Dal punto di vista computazionale l'aggravio sarebbe quasi nullo e tutto il runtime sarebbe stato molto più robusto nei confronti di codice malevole o semplicemente di errori di programmazione nell'accesso a dati e/o codice unmanaged.
Scusa ma non esiste
http://msdn.microsoft.com/it-it/libr...afehandle.aspx
http://blogs.msdn.com/b/bclteam/arch...15/396335.aspx

?
__________________
In a world without fences, who needs Gates?
Power by: Fedora 8 - Mac OS X 10.4.11

Ultima modifica di nico159 : 15-10-2011 alle 00:28.
nico159 è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2011, 02:21   #39
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6333
Appunto.

Notare come nella documentazione stessa di Safehandle sia scritto esplicitamento che serve per porre rimedio a certi "problemini" di IntPtr.

Notare anche come serve al programmatore per rendere "più sicuro" il proprio codice, ma non rende il runtime più sicuro e robusto come sarebbe stato se la cosa fosse gestita come tipi nativi del runtime (quindi da codice managed puoi ancora fare un sacco di porcate con handle e puntatori se è quello l'obiettivo come succede con codice malevole).

Notare infine come Safehandle è presente solo a partire da .Net 2.0 quando invece il problema doveva essere decisamente ovvio già durante la progettazione iniziale di .Net (con tutto quel codice unmanaged su cui si appoggiavano era decisamente difficile non accorgersene, solo che come al solito hanno preferito prendere qualche scorciatoia).
LMCH è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2011, 07:30   #40
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
OK, ma la 2.0 ha già 6 anni sulle spalle, ed è nata per rimpiazzare completamente le precedenti 1.x (o sviluppi per 1.x oppure 2.0+), rimediando anche ad altri errori di progettazione.

Comunque non mi sembra che SafeHandle crei problemi, per lo meno da quel che ho letto, e il codice rimane "safe" / managed.

Mentre quando usi IntPtr il codice è necessariamente "unsafe" / unmanaged. Fermo restando che questo tipo avrebbero potuto implementarlo in modo migliore, come dicevi prima.

Le differenze e, soprattutto, la "divisione" del codice nell'uso dei due tipi sono nette.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
La NASA ha discusso le problematiche del...
Il razzo spaziale NASA SLS e la capsula ...
Stazione Spaziale Internazionale: Crew-1...
Samsung Galaxy S26 Ultra: la ricarica de...
Apple ha un nuovo partner per la sua App...
Trenitalia introduce il prezzo dinamico ...
OnePlus non si ferma più: c'&egra...
DAZN sconta il piano Full per 6 mesi, se...
L'uso dell'IA nei giochi è cancer...
Meta punta sul nucleare USA per alimenta...
Le migliori offerte Amazon del weekend: ...
La crisi dell'hardware spinge i negozi g...
Apple Watch SE 3 scontato su Amazon: il ...
Robot aspirapolvere davvero scontati: si...
DDR5 troppo cara: il passato di AMD potr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:39.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v