|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#41 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Uagliù.... Il povero Cristo del primo post voleva un consiglio tra vb e c per iniziare a programmare da zero perché non ne sa nulla e voi vi mettete a parlare di LINQ e puntatori a 64 bit e codice unmanaged?
Facciamolo un piccolo sunto: 1) Tra i due linguaggi del post originario io suggerisco C. Trovo assolutamente che sia fattibile partire da li soprattutto leggendo il libro "Il linguaggio C: principi di programmazione e manuale di riferimento" di Brian W. Kernighan, Dennis M. Ritchie (buon anima). Ovviamente questa è anche la base per poi apprendere Objective-C e C++ che ti possono servire per gli iCosi (iPhone, iPod, iTostapane, ecc...). 2) Se invece hai più ampie vedute parti da Python che è molto meglio e ti risparmia tanti grattacapi, soprattutto se non sei un grande smanettone e poi è molto molto molto più didattico. Anche qui puoi comprare "Imparare Python" di Mark Lutz, seguire il consiglio del libro in firma a cdmauro, cercare su internet. L'unica cosa che non manca in Python e proprio la documentazione per principianti. 3) Per quanto riguarda .Net... A me non piace legarmi a una ditta in particolare... Vedi XNA, ci sono un sacco di persone che hanno studiato e fatto giochi in C# con XNA, ora pare XNA non verrà mai più aggiornato e la 4 sarà l'ultima versione (basata per altro su directx 9) :-/. In ogni caso C# è uno standard ECMA quindi puoi stare tranquillo che non verrà abbandonato. 4) Java è il futuro! Ma probabilmente non sarà mai il presente XD Ad oggi sono molto poche le applicazioni desktop scritte in Java, idem per i giochi. Sicuramente è molto friendly per i principianti, io all'uni ho iniziato con Java e probabilmente è un buon compromesso. Non so a livello di mac come siete messi in ambito Java. Se hai voglia potrebbe essere tranquillamente un'alternativa valida agli altri succitati linguaggi e soprattutto ti apre abbastanza porte nel mondo del lavoro (così come C#). In bocca al lupo! Poi ci sono anche linguaggi simpatici eh... http://www.bigzaphod.org/cow/
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
|
#42 | |||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Cos'altro dovevano usare? Quote:
Che non puoi scrivere codice .Net 1.0 portabile sui 64bit? Infine se per te è così importante l'unmanaged Microsoft ha subito fornito la risposta: C++/CLI. Quote:
In un applicativo a 32 bit i puntatori sono sempre a 32bit e non puoi mischiare codice a 32 bit con codice a 64bit. E dato che .Net 1.0 c'era solo a 32bit non vedo dove possa essere il problema. Per .Net 1.1 il problema era stato risolto con IntPtr, ma comunque non poteva girare a 64bit. Solo con il 2.0 puoi scrivere applicativi "portabili", ma in questo caso hai tutti gli strumenti per farlo. Se vuoi considera .Net 1.0 la alfa, 1.1. la beta e la 2.0 la versione definitiva che offre tutte le funzionalità come devono essere. Anche Microsoft ha risorse limitate, hanno aggiunto funzionalità nel tempo come fanno tutte le aziende che producono software. |
|||
|
|
|
|
|
#43 | |
|
Member
Iscritto dal: Apr 2009
Messaggi: 253
|
Quote:
Ciao e grazie per la considerazione!! Io infatti volevo procurarmi il libro di Brian & Dennis, ma molti dicono che non sia attuale (è stato scritto nel 1978 da quanto ne so) e quindi poco consono per lo sviluppo nel presente/futuro; altri sostengono che sia un buon punto di partenza anche per i novizi. Tu cosa ne pensi? E' vero poi che imparare C ti aiuta a comprendere il funzionamento della macchina e cosa vuol dire programmare? (Se tutto questo fosse vero io propenderei per questo linguaggio, come inizio, perchè non mi piace fare le cose a metà e perchè un vero informatico, come sosteneva un altro utente intervenuto in questo thread, secondo me deve anche capire cosa si cela dietro quello che sta facendo, carpirne l'essenza) P.s.: crepi il lupo!!! Ultima modifica di -sparkster- : 15-10-2011 alle 19:51. |
|
|
|
|
|
|
#44 | ||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
Quote:
__________________
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 |
||||
|
|
|
|
|
#45 | |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 6322
|
Quote:
Quello che ho continuato a ripetere nei post precedenti è che le varie "pezze" non risolvono davvero il problema di base che ha portato alla loro introduzione. Ultima modifica di LMCH : 15-10-2011 alle 23:06. |
|
|
|
|
|
|
#46 | ||
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 6322
|
Quote:
Ho già scritto più volte che puntatori ed handle dovevano essere gestiti come tipi nativi (quelli che in netspeak sono chiamati "tipi primitivi"). http://msdn.microsoft.com/it-it/libr...=vs.71%29.aspx Quote:
Azz! Persino il C gestisce i puntatori come tipi nativi, non è che gli esempi non mancassero, con .Net dovevano solo fare la stessa cosa per puntatori ed handle e fornire maggiori controlli e validazioni a livello di compilatore e runtime (che potevano poi essere migliorati e resi più efficaci nelle release successive senza dover introdurre nuovi tipi, ecc. ecc.). La cosa più fastidiosa è che Microsoft con la versione successiva di .Net poteva tranquillamente ridefinire il CLR per gestire la cosa a livello di tipi primitivi ma ha scelto di mettere pezze più ad alto livello che non risolvevano completamente il problema. Si tratta della soluzione che sceglierebbe un programmatore "che non ha controllo sul runtime" (e quindi non può fare altro che introdurre dei wrapper "per metterci una pezza parziale sopra"), quando lo fa chi ha il pieno controllo del runtime non è una bella cosa. Ma del resto, se si fa attenzione alle modifiche introdotte con Windows 8 è evidente che pure all'interno di Microsoft c'è parecchia insoddisfazione riguardo il modo in cui è stato gestito lo sviluppo iniziale e l'evoluzione di .Net. A parole .Net "era il futuro" ma con l'introduzione di WinRT è sin troppo evidente che in realtà .Net è "solo" il successore di Visual Basic (quello precedente a .Net). Sia ben chiaro, .Net è un ottima scelta per un certo tipo di applicazioni ma pensare che sia davvero la panacea che Microsoft dice che sia è un grave errore. |
||
|
|
|
|
|
#47 | ||||||||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Forse sarebbe il caso di dare una ripassatina alle basi del .Net prima di pontificare errori di progettazione dell'intero sistema. Quote:
Se vuoi il nativo in .Net c'è C++/CLI. Ti fai il tuo layer e poi lo usi in C#. C# non fatto per lavorare in nativo. Se cerchi il nativo in C# stai sbagliando linguaggio. E questo non è colpa di Microsoft, sei te che stai usando lo strumento sbagliato. .Net fa di tutto per cercare di tenere lontane le persone dalle magagne dello sviluppo "nativo". Quote:
Che non erano presenti nella versione 1.0 del runtime? E chi se ne frega! Non mi sembra che abbiano dovuto fare chissà quali strvolgimenti per introdurli. Quote:
SafeHandle no, ma è ovvio il perchè: implementa IDisposable. Quote:
Quote:
.Net non ha mai fatto presa sul team che sviluppa Windows, perchè per lo sviluppo del sistema operativo non serve a niente. Quote:
Windows è qualcosa in più di una interfaccia grafica. .Net è un modo comodo per sviluppare in Windows, ma le basi rimarranno sempre e soltanto native, fintanto che avremo a che fare con Windows. E poi sicuramente ci sarà modo di usare WinRT da .Net, quindi non vedo il problema. Quote:
Sinceramente mi suona strano aver tutta questa necessità di accedere in nativo: quali componenti di Windows non mappate in .Net stavi cercando di usare? |
||||||||
|
|
|
|
|
#48 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Quote:
Quindi, impara la logica prima. Il mio consiglio si associa alla voce di Cesare, impara col Python. Ti risparmia un sacco di grattacapi e ti fa concentrare sulla logica più che sul linguaggio. Quando poi sarai pratico tutto il resto verrà dopo. Se vuoi imparare qualcosa di più C-like puoi provare con Java usando ad esempio "Concetti di informatica e fondamenti di Java" (http://www.apogeonline.com/libri/9788850323180/scheda ) di Cay Horstmann oppure col C oppure col C# (ma qui non so consigliarti perché non l'ho mai studiato). Per quanto riguarda la storia del dietro le quinte... Quella viene col tempo, considera che la maggior parte degli informatici non ha idea di cosa ci sia dietro le quinte, quello è in genere territorio degli elettronici. L'importante è avere le idee abbastanza chiare sul funzionamento della macchina e quello verrà col tempo e con lo studio. Se proprio ti interessa come è fatto un computer mi permetto di consigliarti "Reti logiche e calcolatori" (http://www.libreriauniversitaria.it/.../9788833954875) di Fabrizio Luccio e Linda Pagli, oppure "Architettura dei calcolatori. Un approccio strutturale. Con CD-ROM" di Andrew S. Tanenbaum (http://www.libreriauniversitaria.it/...9788871922713). Ma sono libri successivi. Prima impara a programmare e poi approfondisci gli aspetti che più ti interessano, magari iscrivendoti a un corso universitario. Soprattutto poniti degli obiettivi alla tua portata, chi dopo il tipico "Hello world" cerca di rifare World of Warcraft ci resta male
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
|
|
#49 |
|
Junior Member
Iscritto dal: Sep 2009
Messaggi: 18
|
scusami cdimauro, io faccio ing. informatica e da quello che ho potuto studiare sull'informatica ho potuto constatare una tua affermazione davvero errata...io non so se conosci il C (perchè mi sembra proprio di no) ma ti posso dire che un requisito necessario per conoscere il funzionamento di un computer è proprio avere almeno le basi su quel linguaggio...in architettura dei calcolatori se non conosci il C è come andarti a seguire una messa in latino, spiegami come fai se non conosci quella lingua??? se vogliamo parlare di programmatori sotto alienazione che non capiscono le conseguenze dei loro input allora spero che chi lo è si accontenti di questo...chi vuole avere ambizioni e quindi conoscere il loro operato allora si parte dal basso livello per poi salire in alto...io ho cominciato dal python non conoscendo nulla di programmazione...poi sono passato al C e ho provato la stessa sensazione di quando non sapevo nulla e ho fatto il primo hello world in python....poi dal C sono passato al java e in solo 3 giorni mi sono impadronito del linguaggio...il python è bello da usare e ti fa risparmiare tempo....ma un esperto sa sempre quello che sta facendo...non so come ragionano i programmatori ma gli aspiranti ingegneri (come me) o ingegneri non si fermano alla superficialità....e a chiunque voglia iniziare un linguaggio si ponga la domanda per cui nelle facoltà informatiche si inizia con un linguaggio come C e non un linguaggio a interprete come python...
|
|
|
|
|
|
#50 | ||||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Quando definisci un workflow di business non stai a pensare a quale valore assumerà un determinato registro di una CPU di un cluster. Quote:
Quote:
E poi hai una visione distorta dei linguaggi di programmazione. Non sono il fine ma il mezzo con cui costruire altro. Una persona che non si ferma alla superficialità utilizza il linguaggio migliore per risolvere il problema a cui deve dare una risposta. Poi nella realtà nascono ostacoli per cui uno è costretto ad usare il linguaggio per cui riesce a trovare skill all'interno dell'azienda. Ma qui nasce il capitolo di gestione dei progetti software che esula dalla programmazione spicciola. Quote:
|
||||
|
|
|
|
|
#51 | ||||||||
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 6322
|
Quote:
Ad esempio infatti leggi sul link che avevo riportato ( http://msdn.microsoft.com/it-it/libr...=vs.71%29.aspx ) trovi le seguenti affermazioni: Quote:
Quote:
Questo ha anche notevoli ripercussioni sulla possibilità di scrivere codice managed "malevole" e scusa se è poco. Quote:
Quote:
Quote:
Quando parte delle competenze che in precedenza erano del team che curava lo sviluppo di .Net vengono passate al team del SO, quando al tempo stesso il team del SO sviluppa un nuovo runtime "di base" e quando viene presentato c'è maggior riguardo verso tool di sviluppo alternativi a .Net ... Beh! Il messaggio mi sembra sin troppo chiaro. Quote:
Quote:
Specialmente se Windows-qualcosa non è l'unico target. |
||||||||
|
|
|
|
|
#52 | ||
|
Senior Member
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
|
Quote:
http://msdn.microsoft.com/en-us/libr...primitive.aspx The primitive types are Boolean, Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64, IntPtr, UIntPtr, Char, Double, and Single. Quote:
http://tirania.org/blog/archive/2011/Sep-15.html .Net è uno dei 3 ambienti per utilizzare e creare componenti WinRT, insieme a C++ e Javascript Come ha detto tomminno, WinRT è una enorme rivoluzione che permette di fatto di creare applicazioni mobili per i futuri tablet Windows (e non solo)
__________________
In a world without fences, who needs Gates? Power by: Fedora 8 - Mac OS X 10.4.11 Ultima modifica di nico159 : 16-10-2011 alle 19:33. |
||
|
|
|
|
|
#53 | |||||||||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Console.WriteLine(typeof(IntPtr).IsPrimitive); A me dice true. Ovvero IntPtr è un tipo primitivo. Di cosa stai discutendo quindi? Tra l'altro mi sono riguardato il supporto. IntPtr è presente fin dal .Net 1.0 Quote:
Poi ti lamenti che IntPtr non è primitivo (mentre lo è) e quindi pontifichi che in .Net non sono state affrontate le problematiche di interfacciamento. Quote:
Certo che se il codice gira in FullTrust, puoi fare gli stessi danni che faresti in C++. Ma non mi pare proprio che .Net sia stato pensato per non far scrivere codice malevolo. Anche perchè gli applicativi desktop girano di default in FullTrust... Quote:
Quote:
Quote:
Che poi .Net non abbia fatto presa sul dev team di Windows è risaputo. Probabilmente quando hanno dovuto resettare lo sviluppo di Vista perchè dall'alto volevano a tutti i costi usare .Net si sono ricreduti un pò tutti all'interno di Microsoft. Se per questo anche gli installer di software come SqlServer e BizTalk sono delle applicazioni MFC... Quote:
Quote:
Se devi andare a leggere la configurazione della rete usi ancora le care vecchie Win32... Quote:
Tanto vale andare di C++ e rimanere con un software unico per differenti sistemi operativi (tralascio appositamente Java per compassione). |
|||||||||
|
|
|
|
|
#54 | |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 6322
|
Quote:
Infatti, se ad esempio guardi in: http://msdn.microsoft.com/en-us/libr...em.intptr.aspx Trovi scritto esplicitamente: "The IntPtr type is designed to be an integer whose size is platform-specific." Mentre ad esempio in C i puntatori NON SONO interi ed hanno una semantica separata. Se ci pensi, è un pochino grottesco che il C gestisca i puntatori in modo più sicuro di quando faccia .Net con gli IntPtr. |
|
|
|
|
|
|
#55 | ||||||
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 6322
|
Quote:
Solo perchè è mappato su un intero (che è considerato un tipo primitivo) non lo trasforma automagicamente in un tipo primitivo distinto con semantica distinta. Se non ti è chiaro il motivo, considera ad esempio cosa succede quando sommi un intero ad un puntatore in C e cosa succede in .Net quando sommi un intero ad un IntPtr. Quote:
Quote:
Poi (messaggio #37) avevo scritto ancora più chiaramente: Quote:
Quote:
Nella presentazione durante Build 2011 c'era questo schemino che dovrebbe essere autoesplicativo: A parte questo, solo perchè il programma di configurazione usa win32 non significa che non puoi fare la stessa cosa anche via WinRT ad esempio usando questo: http://msdn.microsoft.com/en-us/libr...formation.aspx Ad occhio e croce il motivo principale per usare ancora win32 per certe cose è che attualmente la documentazione di WinRT lascia parecchio a desiderare (senza contare possibili bug ancora da sistemare) e visto che win32 c'è ancora, non credo abbiano fretta di portare tutto e subito sotto WinRT. Quote:
In precedenza facevo lo stesso con VB4/5/6 al posto di .Net per le stesse ragioni. |
||||||
|
|
|
|
|
#56 | ||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Veramente IntPtr non è nato per gestire i puntatori. In C# (e in altri linguaggi .NET che supportano il concetto) i puntatori si gestiscono come faresti in C (con qualche differenza in alcuni casi), usando la keyword unsafe.
IntPtr nasce per gestire casi in cui t'interessa conservare interi o puntatori usando lo stesso tipo di dato, ma senza tanti sbattimenti riguardo alla sua dimensione a causa delle architetture a 32 o 64 bit, perché ci pensa il .NET a risolverti il problema, appunto. In passato con Delphi ho avuto quest'esigenza (per memorizzare numeri o puntatori, a seconda del contesto, nel campo Tag degli elementi di alcune TreeView), e ho sentito la mancanza di un tipo come IntPtr, che m'avrebbe risolto il problema banalmente. Quote:
Quote:
Quote:
Quote:
Scritto: data una procedura in Pascal che eseguiva alcune operazioni su array, convertirla in assembly 8086. Orale: si parlava di diversi aspetti delle architetture degli elaboratori, fra cui, ad esempio, come sono implementati i singoli bit di memoria a livello di porte logiche / flip-flop. Del C non c'era nessuna traccia. Lo scritto l'ho passato senza usare alcuna variabile temporanea allocata sullo stack (professore e assistente non riuscivano a crederci), e all'orale all'ultima domanda bastarda dell'assistente (che, diciamo, non era molto rinomato fra gli studenti ) mi sono permesso di rispondere con aria di sufficienza "ovviamente è così...".Il risultato lo puoi immaginare da solo. Adesso mi aspetto che mi dimostri la necessità della conoscenza del C per quella dell'architettura degli elaboratori. ![]() Sul resto concordo con tomminno.
__________________
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 |
||||
|
|
|
|
|
#57 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Architettura dei calcolatori:
- Scritto: 3 procedure da implementare in assembly 8086 - Orale: Ricerca binaria sempre in Assembly Calcolatori elettronici: -Scritto: automi a stati finiti + date 3 istruzioni assembler per JVM implementare la microarchitettura. - Orale: porte logiche, flip/flop, architettura JVM (seguimmo il libro di Tanenbaum) Architetture innovative: -Scritto: Dato l'assembler (non completo, 3 o 4 istruzioni) progettare la microarchitetture + circuito per eseguirle -Orale: Pipeline, Interrupt, Architettura Ultra SPARC II, Architettura Pentium 4, qualche altra cosa che non ricordo su circuiti aritmetici e confronto tra RISC e CISC con esempi di implementazione + qualcosa sugli automi. C l'ho studiato per conto mio tra il terzo e il quarto anno di uni per un progetto personale, mai visto senno' a lezione in nessun corso.
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:46.




















