|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#41 | |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
Quote:
|
|
|
|
|
|
|
#42 | ||||
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
Quote:
certo se nella vita si andrà a buttare fuori gestionale dopo gestionale questo basta, ma per qualsiasi cosa un pò più complessa e/o legata all'hardware ti blocchi per la cronaca io ho cominciato proprio col basic, il basic v2 del c64, poi il gwbasic del dos, qbasic, quickbasic, pascal e poi il resto sapevo programmare ma ignoravo totalmente che quel codice che io scrivevo si traduceva anche in comandi inviati alle più svariati subunità presenti nel mio calcolatore, a partire dal pic fino all'alu, gpu, southbridge, ecc... ignoravo cose come i timings coinvolti nella programmazione delle varie periferiche, ignoravo il fatto che il tutto si traduceva in byte e word inviate ai registri dei vari chip chi vuol'essere SOLO programmatore magari può ragionare così, chi vuol'essere informatico non può ignorare come funziona la macchina Quote:
conoscere quei compromessi permette di sviluppare software ottimizzato e questo fa la differenza tra un programmatore qualunque e un drago della programmazione Quote:
il punto è che noi altri siamo informatici e non possiamo ignorare come funzionano le macchine che programmiamo non sarebbe bello avere a che fare con un medico che dice "io so solo come si usa il defibrillatore ma poi non ho la più pallida idea di quali effetti induca sul cuore" |
||||
|
|
|
|
|
#43 | |
|
Senior Member
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
|
Quote:
Poi puoi passare a Java, che è "simile" all'apparenza e utilizzarlo sarà più familiare. Così apprendi bene cosa vuol dire programmare ad oggetti. Poi puoi proseguire con VB.Net oppure C# .Net a seconda di quale preferisci a pelle. Magari il C# dopo Java e C++ ti sarà più familiare. Io invece preferisco il VB L'importate è avere delle basi solide altrimenti non capirai mai cosa stai facendo. Se ti interessa programmare io eviterei ingegneria elettronica. Potresti anche valutare informatica (non ingegeria) Tieni conto che i linguaggi .net limiteranno le tue aplicazioni in windows PS. Verifica che per gli studenti della tua scuola sia disponibile Visual Studio Professional 2010 gratuito su MS Dreamspark |
|
|
|
|
|
|
#44 |
|
Member
Iscritto dal: Apr 2011
Messaggi: 59
|
Io a scuola superiore (indirizzo informatica) ho fatto praticamente solo pascal per tre anni (i primi due erano "comuni", poi si sceglieva l'indirizzo).
In quinto anno ho fatto anche un pò di C++ (senza arrivare alla programmazione grafica). Questo mi ha permesso all'università (Sempre informatica) di essere molto agevolato per esami come programmazione, ingegneria del sw, ecc. Sembra strano dirlo, ma il linguaggio che mi ha preso più degli altri è stato l'assembly... sì, quello dove per fare qualcosa devi fare ottomila MOV. Per mia sfortuna sono riuscito ad arrivare solo alla creazione dei file, visto che il corso universitario si fermava prima, non ho mai trovato un buon libro e, soprattutto, imparare un linguaggio così richiede un bel pò di tempo che io non ho. Posso darti una sincera opinione però: Qualsiasi linguaggio deciderai di imparare, non usare editor visuali. Mi pare ovvio che il programma non è quello che vedi, ma per me meglio farsi sempre tutto con le proprie manine... poi non sò, ditemi pure che perdo solo tempo... Vorrei concordare con chi diceva che C e C++ costituiscono le fondamenta della programmazione, secondo me sono i primi due linguaggi che andrebbero imparati. Non concordo con chi dice che ormai non sono più in uso: per me è il contrario. Poi, se con C ti fermi a scrivere nella console... C#, VB.NET, ASP.NET, e tutto il .NET Framework li farei volentieri sparire dalla circolazione. Li uso solo per motivi di studio, diciamo però che mi fanno un bel pò ribrezzo. Ho trovato molto interessanti invece le librerie Qt basate su C++, compilate e multipiattaforma. Poi ricordati una cosa: il programma non basta "farlo", va anche fatta una adeguata manutenzione e per fare una adeguata manutenzione, devi metterti in condizioni di dividere i compiti di ciascun componente fin dal primo momento. Tutte cose che, comunque, ti verranno insegnate per bene all'università. Ultima modifica di Efem : 09-05-2011 alle 18:53. |
|
|
|
|
|
#45 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12919
|
Secondo il mio modesto parere al giorno d'oggi inizierei con linguaggi di più alto livello (ma non troppo), in particolare partendo subito dalla programmazione ad oggetti.
Il candidato ideale IMHO era e rimane ancora Java, principalmente per due motivi: - gestione della memoria a carico della VM - linguaggio fortemente tipato (per cui ho una certa preferenza) E aggiungo anche tra questi il fatto che la sua diffusione è tale per cui vale decisamente la pena impararlo. La gestione della memoria automatica consente inizialmente di non preoccuparsi con dettagli di basso livello e di concentrarsi solo ed esclusivamente sul problema (cosa secondo me fondamentale per avere una giusta forma-mentis). Avere un linguaggio tipato poi da un'idea delle problematiche sui tipi, che ci sono nella maggior parte dei linguaggi di programmazione (anche dinamici), e può servire come trampolino di lancio per imparare altri linguaggi. Iniziare subito con le classi poi rende secondo me il tutto più "concreto". Inoltre ciò dà la possibilità di mostrare la libreria di classi di cui dispone il linguaggio (cosa altrettanto fondamentale per un utilizzo proficuo del linguaggio) e mostrare anche come si realizzano quelle classi. Una volta approcciato in questo modo, si ha anche la giusta visione per realizzare software in C che sia "orientato agli oggetti" anche senza avere a disposizione gli strumenti per farlo! Riguardo la questione dell'IDE, può andare bene non usarlo per i primi programmi "Hello World"... ma man mano che vai avanti è necessario (sfido chiunque di voi a rinunciare a feature come l'auto-completamento). Specie se si vuole introdurre anche qualche cosa sul debugging (di cui nessuno ha parlato e su cui andrebbe speso tempo). Tutto ciò ovviamente non significa non approcciarsi poi con C/C++, ma secondo me è essenziale prima capire i concetti e poi il codice. Ciò non toglie che oggi come oggi se dovessi fare un software di una certa complessità andrei senza dubbio su Python. Ultima modifica di WarDuck : 28-06-2011 alle 19:51. |
|
|
|
|
|
#46 | |
|
Senior Member
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
|
Quote:
Ultima modifica di birmarco : 28-06-2011 alle 11:29. |
|
|
|
|
|
|
#47 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12919
|
Quote:
Io partirei prima dai concetti relativi all'object oriented (Classi, Tipi di accesso, public, private, protected, Metodi e quindi funzioni, Classi Astratte, Ereditarietà) e poi andrei a definire meglio gli altri concetti man mano che questi si presentano. Una cosa su cui purtroppo si da poco conto, specie all'inizio, sono i vari concetti che si riprendono anche nell'UML, come Aggregazione o Composizione, che spesso generano confusione tra gli studenti alle prime armi (quindi meglio fornire questi concetti, abbastanza semplici dopotutto, subito quando si parla di Classi). A questo punto farei esempi di applicazioni dei concetti, facendo implementare ad esempio le varie relazioni Studenti-Corsi-Esami e quant'altro applicando tutto ciò che si è visto e anche di più. Così facendo quando esce la necessità di creare delle collezioni di oggetti introdurrei i concetti di Lista, Vettore e quant'altro, mostrando come anche queste siano fondamentalmente classi (almeno nei linguaggi OO). Questo dà l'occasione di introdurre i concetti di ciclo e di iteratore. I template sono una di quelle cose che in C++ è fatta veramente da cani, li farei per ultimo onde generare confusione sulla sintassi. Questo almeno è quello che farei io se dovessi spiegare a qualcuno i concetti (e ribadisco che escluderei C++ inizialmente, per la sua sintassi orrenda e le implicazioni derivanti dalla gestione della memoria "manuale"). Ultima modifica di WarDuck : 28-06-2011 alle 19:51. |
|
|
|
|
|
|
#48 | |||||
|
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4739
|
Quote:
informatica o ing. informatica si studia all' università, ma impostare algoritmi non significa essere un informatico, è qualcosa che si impara a scuola (medie o superiori, o anche prima), come il 2+2 moving the goalposts much? Quote:
non c'è niente di male nel non sapere i dettagli del funzionamento di uno strumento che si usa in un dato momento, anzi... però, se ti fosse davvero interessato ti saresti informato già all' epoca e adesso non saresti qui a rinfacciare i tuoi rimpianti Quote:
Quote:
se io sviluppo un kernel, implemento un meccanismo (mettiamo la shared memory) e lo esporto con una certa api (mettiamo la libreria shmem), un altro programmatore può a quel punto scambiare dati tra la propria ed altre applicazioni o servizi in modo efficiente passando per i metodi della mia api api che dal momento in cui è resa pubblica, non può più essere modificata - così come l' implementazione sottostante non può essere alterata se ciò implica rompere un comportamento atteso dalle applicazioni sviluppate per quella api e potrebbe ben limitarsi a sapere dell' esistenza del meccanismo e ad usare la API, per il semplice motivo che comunque (nemmeno qualora fosse un programmatore migliore di me) non potrebbe intervenirvi nemmeno in senso migliorativo Quote:
il problema è che un tale sistema avrebbe molto probabilmente un' utenza di un solo elemento (lui stesso) per un certo tempo, quindi per la maggior parte dovrà probabilmente sviluppare per OS scritti da altri, miseri mortali in quei casi dovrà piegarsi alle loro scelte e convenzioni pur con ogni probabilità non condividendole, e appoggiarsi supinamente alle loro API, pur non gradendone il design
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
|
|||||
|
|
|
|
|
#49 | |||||||||||||||||||||||||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
Per maggiori informazioni, dai una rinfrescata a questo articolo che ho scritto tempo fa. Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Cosa intendi per eccezioni (non quelle che conosciamo usualmente ovviamente) e perché rappresenterebbero un problema? Quote:
Però è un concetto un po' tirato. Ti ricordi quando in passato parlavi di guardare il codice soltanto secondo la prospettiva a oggetti, funzionale, o strutturata? Ed esaltavi questo fatto. Scala da questo punto di vista ti consente di scrivere codice che è possibile guardare secondo la prospettiva a oggetti, oppure soltanto secondo quella funzionale, o ancora "miscelando" le altre due. Però adesso Scala va bene... Quote:
Tra l'altro le annotazioni sono diventate la via maestra, a quanto pare, per questo genere di operazioni. Quote:
Quote:
![]() A parte gli scherzi, da pythonista mi diverto a vedere scannarsi i fratelli / cugini di C & derivati, e non me ne frega più di tanto. Anche perché per la legge del contrappasso ho goduto troppo con Python e il mio futuro è sostanzialmente rappresentato da C#, Objective-C, Java, e ActionScript. Per cui vale poco "difendere" l'uno o altro, se non per questioni puramente pragmatiche. Insomma, di questi mi piacerà quello che mi renderà più produttivo e con meno mal di testa. Poi della filosofia / ideologia non me ne può fregar di meno, perché il mio linguaggio preferito (al momento) rimane sempre Python, e non c'è speranza, dopo 29 anni di programmazione, che un linguaggio C-like possa piacermi. ![]() Quote:
La CPU esegue programmi, usa la memoria per contenerli (assieme ai dati), ed eventualmente si collega con le periferiche per gestire l'input o l'output. E il tutto... senza bisogno di conoscere il C. Quote:
Solo per determinate operazioni di basso livello POTREBBE essere un limite, nel caso in cui un linguaggio non abbia costrutti linguistici o funzioni allo scopo. Ma è cosa che riguarda anche il C. Il mio articolo di cui ti ho fornito il link, commenti inclusi, è piuttosto eloquente sulla questione. Quote:
Vedi, prima parlavi di byte, di word. Ti sei mai chiesto quanto vale una word? 8, 16, 32, ecc. bit? E' necessario saperlo? No. L'unico comandamento a cui siamo votati noi informatici, programmatori inclusi (ma ne parlo dopo), è quello di algoritmo. Che non prevede obbligatoriamente la conoscenza di dettagli di basso livello. L'informatica nasce dalla contrazione di due parole: informazione e automatica. Va da sé si arriva presto al concetto di algoritmo, e da lì a quello di risoluzione di un problema tenendo conto di precisi requisiti. Tra l'altro in inglese si parla di computer science, e computer scientist. Non ci sono due figure distinte, quali l'informatico e il programmatore, e a buon ragione. A meno che non entriamo nel gergo popolare, dove per informatico s'intende una persona che s'interessa di informatica. Insomma, anche assemblare un PC. E' talmente generico come termine, che può rientrarci di tutto. Ed è inutile che dire non c'è alcun vincolo alla conoscenza di dettagli di basso livello. Quote:
Parlare di ottimizzazione senza nemmeno sapere se è necessario oppure no, è prematuro, come ha detto il buon Knuth: Premature optimization is the root of all evil - Donald Knuth E, manco a dirlo, ottimizzare non è nemmeno sinonimo di basso livello. Un buon programmatore, infatti, prova sempre la via algoritmica se il codice che ha scritto non soddisfa EVENTUALI (lo rimarco) requisiti prestazionali. Se questo non dovesse andare bene, si passa a un livello più basso. Quote:
Ecco, io immagino già un povero programmatore che va a spulciarsi i sorgenti del kernel o, peggio ancora, se li va a disassemblare per vedere com'è implementata la fopen. Sia mai che debba utilizzare un defibrillatore senza sapere com'è fatto... Beh, non basterebbe una vita per avere piena conoscenza di TUTTO. E siccome è del tutto inutile sapere com'è fatto un defibrillatore, ma saperlo utilizzare invece è fondamentale (e per saperlo usare bisogna anche sapere in quali condizioni e quali effetti ha o potrebbe avere), io penso che sia sufficiente fermarsi a questo livello per svolgere bene il proprio lavoro. Che poi è quello che ci si aspetta da un buon medico. Altrimenti avrebbe fatto l'ingegnere per progettare quell'apparecchio. Sennò non facciamo mettere un piede nell'abitacolo ad Alonso se non ha conseguito una laurea in ingegneria meccanica, una in elettronica, e un'altra in informatica (maledetta informatica: la infilano dappertutto ormai)... Quote:
C'è qualcuno che è in grado di darmene una definizione oggettiva e incontrovertibile. Io sono fermo qui: http://it.wikipedia.org/wiki/Algoritmo Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Il concetto di modularità del codice è assente, purtroppo.
__________________
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 |
|||||||||||||||||||||||||||||
|
|
|
|
|
#50 | |||
|
Member
Iscritto dal: Apr 2011
Messaggi: 59
|
Quote:
Certo, è una perdita di tempo... ma io non parlerei di perdita, piuttosto di "impiego" di tempo. Anche perchè generare codice pulito è importante e questa è una cosa oggettiva, anche senza arrivare a basso livello E' importante partire dalla partenza e non da metà strada. Almeno questo è il mio punto di vista. Quote:
Da contare anche che programmando in questa maniera non facciamo altro che allargare un monopolio che già così non può essere smontato (altro discorso... non approfondisco) Quote:
Solo che (e non dico niente di nuovo sicuramente) C è stato progettato per programmare utility a livello di sistema operativo e non certo programmi gestionali come poi è stato (purtroppo) fatto. Non ho mai parlato di C per fare programmi gestionali, e infatti non dovrebbe essere usato per quello. Ma dire che C è "sparito" o "sparirà" come sostengono in molti che guardano solo la "facciata" dei programmi (e parlo di gente che è uscita dalle università o che la ha frequentata), per me è un pò un delirio. In ogni caso sono mie idee, ho sicuramente meno anni di programmazione di te Ultima modifica di Efem : 09-05-2011 alle 21:51. |
|||
|
|
|
|
|
#51 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
Ti pare normale che nel 2011 se vai a scrivere: Codice:
Calendar startDate = Calendar.getInstance();
startDate.set(2011, 3, 31);
System.out.println("" + startDate.get(Calendar.YEAR) + startDate.get(Calendar.MONTH) + startDate.get(Calendar.DAY_OF_MONTH));
Ah, e tra l'altro anche se usi delle librerie esterne come joda hai lo stesso risultato osceno. A me tutte queste cose sembrano i sintomi di una obsolescenza del linguaggio che stanno disperatamente provando a svecchiare con java 7, ma che ormai non e' ne' carne ne' pesce. Hanno perso troppo tempo e da market makers si sono ritrovati ad essere inseguitori, e pure molto in difficolta'. Come dicevo java ad oggi si salva solo per l'ENORME mole di librerie, soprattutto in ambito enterprise, che sono state sviluppate. A livello di linguaggio puro c'e' MOLTO ma MOLTO di meglio.
__________________
|
|
|
|
|
|
|
#52 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
l'impossibilità di scrivere un programma senza usare classi,i package come qualificatori dei nomi, l'introduzione di due meccanismi separati per eredità ed estensione, l'introduzione dei primitivi per la gestione della concorrenza nella radice del typesystem, il collegamento dinamico come metodo predefinito per la risoluzione delle invocazioni di metodo (per un linguaggio staticamente tipato), il meccanismo di caricamento delle classi da stream. Ma non è detto che lo siano veramente perchè non conosco tutti i linguaggi precedenti a java. Sono praticamente certo invece che il linguaggio abbia innovato fortemente nella combinazione di caratteristiche principali, cioè il fatto di essere quello che è: staticamente tipato, concorrente, orientato agli oggetti, con gestione automatica della memoria, interpretato, con estensione singola ed eredità multipla, a collegamento dinamico, riflessivo e con caricamento in esecuzione delle classi. Sulla prospettiva, non ci capiamo. Colpa mia ma se mi fai l'esegesi dei periodi non mi aiuti .Scala mi piace perchè non [lo considero] un minestrone. Anche se le è. Ti confermo quindi la mia opinione sul mescolamento delle prospettive: è una pessima idea. Vale anche per Scala: è una tristezza che sia anche funzionale. A me piace perchè è orientato agli oggetti e considero alcune delle sue caratteristiche funzionali addolcimenti sintattici per il suo uso orientato agli oggetti. Le altre sue doti funzionali, ad esempio l'immutabilità o la composizione di funzioni, le vedo come una muffa potrebbe vedere il drago pulisan: più alla larga ci sto, meglio è. Dunque sì, purtroppo è anche funzionale: ma non è che si possa pretendere la luna. Annotazioni. Lo scopo delle annotazioni è quello di marcare elementi del codice a fini analitici. Il sorgente resta sempre uguale. Ad esempio nell'ambiente J2EE le annotazioni sono usate per generare automaticamente i descrittori di dispiegamento che i contenitori usano per fornire i servizi specificati nel codice. Non introducono la possibilità di cambiare il codice sorgente più di quanto non lo si possa fare con una commento ed un trasformatore ad hoc e sono parte della sintassi del linguaggio. Il preprocessore è diverso, esiste esattamente allo scopo di cambiare la sintassi del linguaggio. Può darsi che avesse un suo significato nel 1325 a.c. quando un elevamento a potenza era roba da far fumare le caldaie ma è un bel pezzo che abbiamo passato quella fase. Perchè le eccezioni - alle regole - sono cattive. E' un dato sperimentale assodato che il ragionamento umano funzioni bene in positivo (nel senso dell'affermazione) e malissimo in negativo (nel senso dell'affermazione di una negazione). Dovreste essere in grado di provarlo con un esemplare umano nella vostra disponibilità ed un sempice test. Oggetti nascosti, gliene proponente uno alla volta chiedendo di confermare o smentire, alternandole, le affermazioni: "è un [accendino-penna-pacchetto di sigarette-quello che è]" oppure "non è un [accendino-penna-pacchetto di sigarette-quello che non è]". Se è un umanione comune, le risposte alle forme positive saranno più pronte di quelle alla forme negative. Nel senso predetto, le eccezioni alle regole sono asserzioni negative. L'eccezione si genera quando due attribuzioni di qualità mutualmente esclusive si riferiscono ad uno stesso elemento. Nel linguaggio x ci sono variabili che sono staticamente tipate e variabili che sono dinamicamente tipate. Quindi ho due regole, due affermazioni positive? No, ho una regola e un'eccezione: tutte le variabili sono staticamente tipate salvo quello che sono dichiarate dinamiche (la regola è sempre quella che implica meno attribuzioni). C'è una sorta di dibattito in corso circa la complessità dei linguaggi che ha visto Java passare dalla parte dei facili a quella dei difficili. I più vecchi se lo ricorderanno: una volta Java era facilissimo, poi è diventato complicatissimo. Il punto intorno al quale si svolge la discussione in corso è esattamente quello delle eccezioni. Chi sostiene ad esempio che Scala sia "più facile" di Java lo fa proprio sottolineando il fatto che pur avendo il primo più regole del secondo ha un numero minore di eccezioni. Chi invece sostiene che Python sia più facile lo fa per partito preso ma queli sono irrecuperabili
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
|
#53 | |
|
Senior Member
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
|
Quote:
Chi non ha queste basi non può definirsi informatico. Un informatica di quel livello è indicata a chi fa altri lavori, come un matematico che si programma un SW che esegue un algoritmo. Un informatico che si rispetti sa su cosa sta programmando, sa come sfruttare le potenzialità del proprio HW dialogando con esso, se necessario inserendo blocchi di linguaggio macchina in un programa scritto in un linguaggio di alto livello. Cmq per iniziare come autodidatta consiglio di partire in alto e poi lasciare all'università il compito di scendere nel dettaglio. |
|
|
|
|
|
|
#54 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
Ritengo assurdo pensare che quel meglio (anche senza i molto) sia C# che è l'agglomerato di tutti i difetti dei linguaggi che l'hanno preceduto. Mi dicessi F# se ne potrebbe anche parlare ma C# neanche per idea. Circa la m@#, c'è un'altra divertente coincidenza Codice:
Calendar time = new StringExt("31.3.2011").toDate();
La necessità di usare le classi anonime. Eh, lì qualcosa che sa di vecchio c'è. Uno non dovrebbe dire che sia un problema di codice perchè fa tutto l'ide (fun1, fun2, fun3 + tab e netbeans mi piazza la funzione) ma visivamente anche io ne sono un po' inorridito. Ogni tanto cerco di dargli un aspetto diverso, tipo scrivere: Codice:
new VFunction1<Integer>() { public void apply(Integer x) {
...codice
}};
(x: Integer) => codice Sì. Mi piacerebbe quello che gli va dietro? Non ne sono tanto sicuro. Il fatto è che quando si inizia ad avere una forma contratta per le funzioni ti arrivano anche le funzioni di ordine superiore. E quando arrivano quelle allora ti puoi aspettare che capiti questo: (f: (a1) ⇒ (a2) ⇒ (a3) ⇒ (a4) ⇒ (a5) ⇒ b): (a1, a2, a3, a4, a5) ⇒ b Aggiungi i generici (che in C# sono molto più complicati di Java, che già è esoterico sull'argomento, pur essendo stati scritti da un genio assoluto - lo possino...) e fai i tuoi conti.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
|
#55 | |
|
Senior Member
Iscritto dal: Mar 2008
Città: Milano; 9 Vendite concluse -> Wilde; emmepi; Homerj81; cos1950; mariotanza; Benia; grigor; alekia; ARG0
Messaggi: 11160
|
Quote:
Cmq le "basi" sono la dimestichezza con variabili, tipi, if, for, while e compagnia. Il C++ è abbastanza semplice per poter pasticciare agevolmente con queste cose. Poi ci aggiungi array, puntatori, funzioni e se hai voglia anche la scrittura dei file. In C è davvero tutto molto banale e gli intoppi sono veramente pochi. Un puntatore che punta a zone errate di memoria è colpa del programmatore, ma dividere per 0, ad esempio, lo trovo un errore dello stesso tipo: distrazione. E può accadere in qualsiasi linguaggio... Non ho detto che deve riscrivere Photoshop, deve solo pasticciare con scanf e printf... tutto qui. Anche java è un buon inizio, ma è un linguaggio ad oggetti. IMHO, più difficile da comprendere di semplice programma sequenziale in C++. Java è comodo per fare il salto da C++ a linguaggi più moderni come il .net. E' "simile" a C ma ti introduce più semplicemente al cuore della programmazione ad oggetti. Poi puoi passare a C# e/o a VB.net. Sono passaggi piuttosto semplici e graduali In più facendo così ti ritrovi a conoscere 3/4 linguaggi. |
|
|
|
|
|
|
#56 | ||
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Quote:
Piu' in generale di implementare tramite il linguaggio stesso delle nuove funzionalita' senza aspettare che lo faccia il vendor, o di reimplementarle in modo corretto. Poi per carita', uno scampa lo stesso, si scarica lo xUnit di turno, si interfaccia a librerie native con Swig, e si scarica un generatore di codice per non scrivere SQL... finche' e' roba che ha gia' fatto qualcun altro... quando cominci a fare qualcosa di piu' innovativo, o quando magari sei una piccola startup che non puo' scanciare cifre a 5 zeri per un software, le cose cambiano un po'. Ma meglio ancora, permette di far crescere il linguaggio verso il problema che si deve risolvere invece che maltrattare il problema perche' sia rappresentabile nel linguaggio.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
||
|
|
|
|
|
#57 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Posso scriverti un metodo che prende 10 argomenti, oppure una catena di 30 chiamate Codice:
a.b().c().d().e()...
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#58 | |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21931
|
Quote:
__________________
"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 |
|
|
|
|
|
|
#59 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
In effetti è un caso esemplare di abusabilità. Idem per la concatenazione specilamente quando sia variante. E qui ammetto la debolezza: sono un grande appassionato di: Codice:
pippo
.metodo()
.metodo()
.metodo()
.metodo();
Codice:
pippo
.metodo(argomento
.metodo()
.metodo())
.metodo();
La sintassi può essere usato in questi casi per scoraggiare l'abuso. Considera le classi anonime di java: la sintassi è troppo "verbosa" perchè le si possano usare come funzioni di ordine superiore senza che ti venga il magone a guardarle. E per la verità sono troppo verbose anche per essere usate come funzioni singole C'è una libreria, functional java, che ben dimostra il problema: a usarla ti precipitano le cataratte eppure è "funzionalmente" ineccepibile. Per la sintassi e i preprocessori, giocare con la sintassi del linguaggio è certamente divertente. Quando uscì Java 5 scrissi un tutorial che usava le annotazioni esattamente per quello. Rinnego quell'atto di passione con veemenza Il linguaggio non è solo strumento di programmazione ma è anche strumento di comunicazione tra programmatori: tipicamente il giovannino che scrive e il pippo che deve manutenere/estendere. Non è raro che, pur nella rigidità della sintassi, tra i due nascano dissapori: uno che apprezza la concatenazione (io) può non essere benvisto da uno che la detesta (sempre io, è un disturbo bipolare). Se anzichè usare un costruttore con tre argomenti o un produttore faccio la genialata di usare i generici per implementare i numerali di Church coi quali verifico la completezza di una concatenazione di tre metodi, per consentire al compilatore di rigettare quelle parziali, non mi aspetto che mi dicano "che genio": mi aspetto che mi dicano "ma guarda 'sto stronzo". Perchè ho dimostrato di conoscere il linguaggio ma non la programmazione, che è tante cose, tra le quali anche la capacità di comunicare con altri programmatori. Per questo ritengo la presenza del preprocessore un grossolano errore: non c'è più l'esigenza di performance per cui è nato, restano solo i danni che può fare.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:10.














.








