View Full Version : 19 anni sono troppi?
Digital_Style
21-02-2007, 14:27
salve a tutti.sono un ragazzo di 19 anni ma che ha da poco ha cominciato a scoprire il fantastico mondo della programmazione.la cosa che vorrei chiedervi, dato che fra di voi immagino ci sono molti esperti, è questa:19 anni sono troppi per iniziare?
magari vi potreste chiedere il perchè di questa domanda.semplice:leggendo riviste, andando su siti specializzati e leggendo molte news del mondo informatico ho visto che ci sono molti ragazzi, bambini direi, di 6/7 anni in su che già cominciano a conoscere il mondo della programmazione, anche semplicemente cominciando in dos o basic.per non parlare di ragazzi di 10/11 anni in su che già sanno programmare e si creano i propri programmi o programmini.io, che il mio sogno sarebbe diventare un affermato programmatore e ho comprato libri su libri, ormai cosa potrei combinare a questa età?
RaouL_BennetH
21-02-2007, 14:28
salve a tutti.sono un ragazzo di 19 anni ma che ha da poco ha cominciato a scoprire il fantastico mondo della programmazione.la cosa che vorrei chiedervi, dato che fra di voi immagino ci sono molti esperti, è questa:19 anni sono troppi per iniziare?
magari vi potreste chiedere il perchè di questa domanda.semplice:leggendo riviste, andando su siti specializzati e leggendo molte news del mondo informatico ho visto che ci sono molti ragazzi, bambini direi, di 6/7 anni in su che già cominciano a conoscere il mondo della programmazione, anche semplicemente cominciando in dos o basic.per non parlare di ragazzi di 10/11 anni in su che già sanno programmare e si creano i propri programmi o programmini.io, che il mio sogno sarebbe diventare un affermato programmatore e ho comprato libri su libri, ormai cosa potrei combinare a questa età?
Secondo me se la voglia è tanta e la passione è forte, non c'è nulla che ti vieti di diventare quello che desideri.
La programmazione è come il matrimonio: chiunque la tenti prima dei trent'anni dovrebbe essere dichiarato incapace di intendere e di volere.
trallallero
21-02-2007, 15:01
19 anni troppo ? :rotfl:
io ho iniziato a 28 :asd:
io ho votato l'ultima opzione: non è mai troppo tardi per inseguire i propri sogni. non concepisco la vecchiaia, per me uno può fare qualsiasi cosa a qualsiasi età :D
e parlo in generale, non solo per la programmazione.
basta vedere Ronnie Coleman, che c'avrà tipo 50 anni ormai :eek: :eek: :eek:
e non mi venite a tirare fuori doping di qua e doping di là, perché che sia dopato è praticamente certo ma che gli volete dire a uno che a quell'età fa quelle cose? :cool:
e in caso ho anche altri esempi (Lou Ferrigno? Stallone (:D)?)
sheijtan
21-02-2007, 15:40
hai giusto l' età per iscriverti all' università: facoltà di informatica o di ingegneria informatica. Imparerai a programmare per bene insieme ad un mucchio di altre cose e se hai pure passione per quello che studi imparerai anche di più :)
Ma sei matto? No! Anche io ho iniziato praticamente a 19 anni,
e anche io ti straconsiglio l'università, soprattutto ora che ci sono le triennali.
Tranquillo sei sempre in tempo...anzi...per iniziare a programmare credo che si sia sempre in tempo ;)
Io ho messo no,a mio parere non sono troppi,vai tranquillo :D
FagioloOne
21-02-2007, 17:31
No se no anche io sarei fregato ho la tua stessa età :D:D
OT
avevo trovato su un sito che cosa prendeva Ronnie Coleman una cosa assurda, forse peggio di un cavallo da corsa. Praticamente prendeva tutto quello esistente in sto mondo.
Digital_Style
21-02-2007, 17:33
trallallero e come ti sei trovato a iniziare a 28anni?
io ho intenzione di scrivermi all'università ma purtroppo non so quando dato che il liceo che faccio non mi piace e non mi incita a studiare.quando mi sono iscritto io non facevano niente, ora invece alla mia ragazza fanno fare i problemi di matematica con pascal.ci sono restato male.vorrei andare al liceo informatico, ma è troppo lontano da casa mia.2ore circa.come devo fare?
p.s. ho iniziato a studiare python(stando attento agli errori, alla sintassi, ai tipi ecc)ke ne dite?
e poi sapete cosa mi demoralizza?ad esempio:compro un dvd originale e voglio fare il backup e apro il programma.le prime cose ke penso sono:
1)ti rendi conto che questo programma esiste grazie ad un 17enne(dvd jon)ke ha sprotetto il dvd?
2)io qua a 19 anni non so fare un tubo..ma chi voglio prendere in giro?
3)e come si fa un programma del genere?nel mondo ci sono dei geni e delle persone che hanno una vita di esperienza e io non saprei fare nemmeno un programma che somma due numeri
queste sono alcune delle cose che penso quando apro un qualsiasi programma
anche a 60 anni non è troppo tardi se si ha buona volontà. Mai sottovalutare le capacità umane (ma neanche sopravvalutarle esageratamente), però si può capire se si è capaci ad affrantare una nuova sfida solo se ci si prova. Poi nn è mica come gli sport praticati a livello agonistico dove il corpo, raggiunta una certa età, cede. In tal caso l'unica cosa a cedere potrebbe essere la mente però mi pare che ci siano ancora arzilli signori di mezza età.
io qua a 19 anni non so fare un tubo..ma chi voglio prendere in giro?
Se mai si comincia mai si sa' fino a dove e in quanto ci si arriva.
Uno può avere una costanza con lo studio,un'altro ne ha una diversa.
Se uno inizia presto,ti dico per fare un esempio a 17 anni a programmare e si mette sotto come si deve a 19 anni sara' arrivato ad un certo livello.Se uno di 17 anni inizia a programmare così per hobby,va' avanti una volta alla settimana è molto probabile che la preparazione a 19 anni sara' molto inferiore dell'altro:mbe:
Poi nn è mica come gli sport praticati a livello agonistico dove il corpo, raggiunta una certa età, cede. In tal caso l'unica cosa a cedere potrebbe essere la mente però mi pare che ci siano ancora arzilli signori di mezza età. raggiunta una certa età il corpo "cede" solamente nel senso che smette di crescere, ma non nel senso che si indebolisce. si vedono tante persone anziane che non camminano, ma quanta attività sportiva fanno/facevano questi egregi ed immobili signori? :D e quanto era sana la loro alimentazione? ed inoltre avevano dei vizi (fumo o alcol)? ma parliamo piuttosto di altre persone anziane (e intendo tranquillamente anche ultrasessantenni), come gli arzilli signori che vedo correre per strada dalle mie parti :D
io stesso praticavo regolarmente la corsa come sport fino a qualche anno fa (poi mi sono convertito al nuoto :p), e ho avuto modo di conoscere dei "vecchi" che sapevano decisamente il fatto loro :|
roba che sulla pista riuscivano a correre più a lungo (o in alternativa addirittura più veloce) dei sedicenni!! :|
jappilas
21-02-2007, 19:18
io ho intenzione di scrivermi all'università ma purtroppo non so quando dato che il liceo che faccio non mi piace e non mi incita a studiare.quando mi sono iscritto io non facevano niente, ora invece alla mia ragazza fanno fare i problemi di matematica con pascal.ci sono restato male.vorrei andare al liceo informaticodomanda: esiste davvero un liceo "informatico"? :mbe:
da quando?
io ero rimasto ai normali classico, artistico, scientifico, oltre agli istituti tecnici, ragioneria, .. :stordita:
ma è troppo lontano da casa mia.2ore circa.come devo fare?secondo me cambiare liceo rischia di essere controproducente
da una parte per la tua età (rischiano di mancarti delle basi insegnate ai primi anni) dall' altra perchè un liceo solitamente inculca (almeno , ai miei tempi lo faceva) una cultura generale che all' università non avrai occasione di trovare... a meno che tu non scelga una facoltà umanistica, ma non a informatica o ingegneria informatica (esperienza personale)
la mancanza di cultura o interessi al di fuori dell' informatica a volte è un pesante handicap (con le elfe, ehm, con le persone di sesso opposto, solitamente, ma anche nella vita in senso lato)
p.s. ho iniziato a studiare python(stando attento agli errori, alla sintassi, ai tipi ecc)ke ne dite?è utile :)
e poi sapete cosa mi demoralizza?ad esempio:compro un dvd originale e voglio fare il backup e apro il programma.le prime cose ke penso sono:
1)ti rendi conto che questo programma esiste grazie ad un 17enne(dvd jon)ke ha sprotetto il dvd?
2)io qua a 19 anni non so fare un tubo..ma chi voglio prendere in giro?
3)e come si fa un programma del genere?nel mondo ci sono dei geni e delle persone che hanno una vita di esperienza e io non saprei fare nemmeno un programma che somma due numeri
queste sono alcune delle cose che penso quando apro un qualsiasi programmaio quando apro un qualsiasi programma osservo cosa fa, e cerco di pensare a quali soluzioni tecniche e quali algoritmi hanno implementato gli sviluppatori per ottenere quella certa interfaccia, e quel modo di funzionare - e a quali strutture dati e quali algoritmi implementerei io se dovessi realizzare un programma analogo
mi dico che l' usare SW scritto da altri è per comodità e in via temporanea - ma dedicando tempo e impegno a sufficienza potrei effettivamente farlo ...
non che sia necessariamente vero - ma è l' atteggiamento che conta (e comunque chi davvero ha intenzione di lavorare nell' informatica deve partire dal presupposto di potersi trovare a realizzare applicazioni di qualsiasi tipo)
Tieni conto che l' informatica non è mai magia, è analizzare i problemi e trovare un "design" che ne sia una soluzione algoritmica, e poi implementare quel design in un linguaggio adeguato (python, C++, java o quello che preferisci)
quando apri un programmma , piuttosto che demoralizzarti, prova a fare qualcosa del genere... osserva il programma, analizzalo, spezza le sue caratteristiche e il suo comportamento in funzioni elementari a te comprensibili
questo per quanto concerne una questione di mentalità - quindi a prescidere dal fatto che l' applicazione che ti capita abbia o meno i sorgenti disponibili da esaminare (tieni anche conto che non è detto che il codice open source sia intrinsecamente perfetto, a volte può essere stato progettato da qualcuno con meno capacità di astrazione e design di quanto potresti essere tu qualora messo a parte delle stesse conoscenze che aveva l' autore di un programma quando lo ha scritto)
e tieni presente che "le API non finiscono mai" ... API, cioè interfaccie di programmazione (cioè dichiarazioni di strutture dati e funzioni importabili da una libreria o un sistema) ne esistono molte e ne esisteranno sempre di nuove, quindi devi essere pronto a studiare ... acquisire e mantenere aggiornato un certo know how ti servirà, sia per avere delle basi su come interfacciarti con le fuznioni che il sistema operativo mette a disposizione (quindi per fare qualcosa giusto al di là del classico "hello world") sia per valutare dalla sua api una certa libreria, e usarla in modo da ottenere il risultato che cerchi in un dato momento...
Digital_Style
21-02-2007, 21:22
Se mai si comincia mai si sa' fino a dove e in quanto ci si arriva.
Uno può avere una costanza con lo studio,un'altro ne ha una diversa.
Se uno inizia presto,ti dico per fare un esempio a 17 anni a programmare e si mette sotto come si deve a 19 anni sara' arrivato ad un certo livello.Se uno di 17 anni inizia a programmare così per hobby,va' avanti una volta alla settimana è molto probabile che la preparazione a 19 anni sara' molto inferiore dell'altro:mbe:
appunto...io cominciando a studiare a questa età arriverò mai a sapere le stesse cose o più cose di certe persone che alla mia età hanno già fatto grandi cose nel mondo informatico?
jappilas:il liceo informatico c'è, almeno a quanto ne so io e per quanto riguarda quello ke hai scritto credo...bè non so che dire.è vero non ho mai studiato in una università, non ho fatto corsi, ma accidenti ci sono ragazzi alla mia età ke hanno rivoluzionato il mondo informatico e programmavano da quando bevevano ancora dal biberon.le conoscenze delle librerie, della API ecc verrà in automatico continuando a studiare ma sembra che nel mio inconscio mi demoralizzo al solo pensiero di capire come funziona un programma, è come se ho una paura ne profondo del mio inconscio che torna a galla anche soltanto quando guardo un film dove c'è la parola "programmatore" o simili.dai non so nemmeno fare un programmino che somma due numeri(anche se sono appena all'inizio di python)e vorrei diventare un famoso programmatore...forse sono solo un illuso.non c'è niente che mi incoraggi e mi stimoli.diciamo che mi sento "solo".
un piccolo esempio di questa sensazione è questo:poco fa per caso ho trovato dei codici sorgenti di un programma scritto da un utente di un forum,ho guardato ma sono dei file ke non avevo mai visto.come si fa
a modificare il codice?ci sono dei file con estensione frx,frm,bas,dll...ma nessuna linea di codice.questo già mi fa paura.
non so se potete capire o se qualcuno sa cosa "provo"
io ho iniziato da un po a buttare giù qualche riga con python.. ne faccio 34 a marzo.....:old: ...... :D
Schiariamoci un attimo le idee. Di gente che a rivoluzionato l'informatica a presunte età giovanili non è che ce ne sia molta. Diciamo pure nessuno, via. Turing, Dijkstra, Kay, Nygaard e ognuno ci metta il suo non mi pare fossero ragazzini quando fecero quel che oggi diamo per scontato. Per quanto sia apprezzabile il suo contributo, DvdJohn sta ai padri dell'informatica come Peppino il Mago della Porchetta alla nouvelle cuisine.
CoreDump
21-02-2007, 21:55
appunto...io cominciando a studiare a questa età arriverò mai a sapere le stesse cose o più cose di certe persone che alla mia età hanno già fatto grandi cose nel mondo informatico?
jappilas:il liceo informatico c'è, almeno a quanto ne so io e per quanto riguarda quello ke hai scritto credo...bè non so che dire.è vero non ho mai studiato in una università, non ho fatto corsi, ma accidenti ci sono ragazzi alla mia età ke hanno rivoluzionato il mondo informatico e programmavano da quando bevevano ancora dal biberon.le conoscenze delle librerie, della API ecc verrà in automatico continuando a studiare ma sembra che nel mio inconscio mi demoralizzo al solo pensiero di capire come funziona un programma, è come se ho una paura ne profondo del mio inconscio che torna a galla anche soltanto quando guardo un film dove c'è la parola "programmatore" o simili.dai non so nemmeno fare un programmino che somma due numeri(anche se sono appena all'inizio di python)e vorrei diventare un famoso programmatore...forse sono solo un illuso.non c'è niente che mi incoraggi e mi stimoli.diciamo che mi sento "solo".
un piccolo esempio di questa sensazione è questo:poco fa per caso ho trovato dei codici sorgenti di un programma scritto da un utente di un forum,ho guardato ma sono dei file ke non avevo mai visto.come si fa
a modificare il codice?ci sono dei file con estensione frx,frm,bas,dll...ma nessuna linea di codice.questo già mi fa paura.
non so se potete capire o se qualcuno sa cosa "provo"
Senti io programmo da quando avevo 12 anni ( ho iniziato sul vic-20 :old: ) e adesso ne ho 35, mi sono smazzato molti linguaggi e nmila
librerie e la sensazioni di paura come la chiami tu o di impotenza come la chiamo io :D cè l'ho ancora quando devo smazzarmi librerie
nuove ( per esempio da pochi giorni mi sto smazzando l'sdk della symbian perchè vorrei programmare anche qualcosina in quest'ambiente
e ci sto sbattendo la testa non poco :) e tieni conto che lo faccio la sera dopo essermi fatto 8-10 ore davanti al pc al lavoro ) alla fine per me non è solo lavoro è anche passione, una passione che m ha spinto negli anni a trovare un buon posto di lavoro che mi da molte soddisfazioni, se tu senti
veramente che vuoi fare il programmatore allora fai il programmatore perchè come diceva il mio ex datore di lavoro e attuale amico, mica te
lo ha prescritto il dottore che devi fare per forza quello :)
CoreDump
21-02-2007, 21:58
DvdJohn sta ai padri dell'informatica come Peppino il Mago della Porchetta alla nouvelle cuisine.
:sbonk:
sottovento
22-02-2007, 05:59
Schiariamoci un attimo le idee. Di gente che a rivoluzionato l'informatica a presunte età giovanili non è che ce ne sia molta. Diciamo pure nessuno, via.
Finalmente qualcuno che lo dice apertamente!!! Voto per PGI-Bis: 10+
Per quanto riguarda il questionario, sono propenso all'astensione. :)
Domanda per Digital_Style: sicuramente per iniziare non e' mai tardi.
Ma secondo me dovresti porti una domanda diversa: la passione che hai la vuoi sviluppare e diventare un professionista oppure un appassionato?
Anche se nessuno lo fa mai notare, le due situazioni sono completamente diverse, e la prima di obbliga anche ad avere un freno alla passione. Riflettici bene.
Ciao
appunto...io cominciando a studiare a questa età arriverò mai a sapere le stesse cose o più cose di certe persone che alla mia età hanno già fatto grandi cose nel mondo informatico?
Ma dicevo 17 anni per dire 20-30,era per fare un esempio.Io intendevo dire che dipende anche da come uno intende applicarsi.
Comunque quoto sia PGI-Bis che sottovento
trallallero
22-02-2007, 07:38
Di gente che a rivoluzionato l'informatica a presunte età giovanili non è che ce ne sia molta. Diciamo pure nessuno, via.
peró c'é sempre gente che cerca di rivoluzionare l'italiano :D
sottovento
22-02-2007, 08:14
peró c'é sempre gente che cerca di rivoluzionare l'italiano :D
Non me n'ero accorto! Per uno come PGI-Bis e' imperdonabile, per cui devo abbassare il voto: 6/7 (dal sei al sette, non ho mai capito cosa fosse esattamente) :D
Digital_Style
22-02-2007, 09:55
coredump voglio farti un sempio:tu programmi da quando avevi 12anni ora ne hai 35 quindi sono 23anni ke fai queste cose.io,sempre come esempio, cominciando adesso quando avrò la tua età non saprò le tue stesse cose ma di meno ed è questo quello ke voglio dire.sottovento ha detto che c'è differenza tra farlo per passione o voler diventare un professionista, ma io voglio fare il programmatore come lavoro, lavorare per qualche grande azienda, anche fuori italia, anche grandi e famose softwer house che sviluppano programmi che molti di noi hanno sul computer, ma oltre a questo è anche una grande passione.quando ho scoperto il mondo della programmazione ne sono restato talmente affascinato che ogni minina cosa che faccio vorrei capire come è stata scritta, in che linguaggio ecc...capite cosa voglio dire?il mio sogno è quello di lavorare per qualche grande softwer house, famosa in tutto il mondo, sviluppo linux, microsoft, sicurezza o qualsiasi altra cosa che possa rivoluzionare il mondo informatico o portare delle innovazioni...essere ricordato.ma la domanda è:ci arriverò mai?
trallallero
22-02-2007, 09:59
Non me n'ero accorto! Per uno come PGI-Bis e' imperdonabile ...
veramente! propongo di farlo bannare :O
un piccolo esempio di questa sensazione è questo:poco fa per caso ho trovato dei codici sorgenti di un programma scritto da un utente di un forum,ho guardato ma sono dei file ke non avevo mai visto.come si fa
a modificare il codice?ci sono dei file con estensione frx,frm,bas,dll...ma nessuna linea di codice.questo già mi fa paura. bas; apri quello, anche con Blocco Note (se contiene sorgenti è un file di solo testo).
coredump voglio farti un sempio:tu programmi da quando avevi 12anni ora ne hai 35 quindi sono 23anni ke fai queste cose. [cut]
L'informatica è settoriale e molto spesso i lavori lo sono ancora di più. C'è chi, per lavoro, programma 15 anni sullo stesso linguaggio o sullo stesso sistema, tanto per fare un esempio. Non è assolutamente detto che le conoscenze acquisite in 3, 4 anni di studio non siano sufficienti a trovare un ottimo lavoro, proprio perché i requisiti richiesti sono spesso settoriali. Io fino a 19 anni programmavo solo in C e Pascal, ho cominciato dopo con il C++. Quindi metti caso che il lavoro che trovo non richieda il C e il Pascal...ecco che parto allo stesso livello degli altri, nonostante abbia cominciato a programmare a 12 anni.
Quindi mettiti a studiare e non ti preoccupare. Ho visto gente che è uscita da ingegneria informatica con 110 senza conoscere adeguatamente un solo linguaggio...ed hanno trovato subito lavoro. Compra buoni libri e mettiti a studiare ;)
Quando avrai acquisito un po' di esperienza in Python (non ti consiglio di perderci troppo tempo, ma sarà utile sicuramente ad introdurti al mondo della programmazione), passa a Java (anche server side) e poi a C e C++.
A 19 anni non è certo tardi per iniziare a programmare, anzi... :muro:
Io ho iniziato a 20 anni ed a distanza di 8 anni...... faccio il sistemista! :asd:
Devo dire che la programmazione mi ha sempre appassionato tantissimo anche se alla lunga diventa noiosa, ma da quando ho scoperto la gestione sistemistica è tutta un'altra cosa. :sofico:
passa a Java (anche server side) e poi a C e C++.
Una domanda per curiosità personale.Ho 15 anni e da 2 anni mi interesso di programmazione.Da quasi 1 anno studio C++ (poco html per necessità).
Ma c'è differenza a partire prima con il Java?Cos'ha di diverso dal c++ oltre che a essere multipiattaforma?:help:
Grazie
Ciaoz
jappilas
22-02-2007, 11:00
6/7 (dal sei al sette, non ho mai capito cosa fosse esattamente) :Dallora:
- 6 e mezzo < dal 6 al 7 < 7 meno meno < 7 meno < 7, e
- un modificatore "meno" o "più" aggiunto a un voto numerico intero lo decrementava di un quarto di punto ("circa"), e
- il secondo modificatore uguale si applicava con criteri variabili ... poteva contribuire per metà rispetto al primo, quindi sottraeva o sommava un ottavo di punto ("circa") - o tanto quanto il primo
=> 7 -- assumerà un valore compreso tra 6.5 + (*) e 6.675
* che in questo caso significa "intorno destro di 6.5", o "6.5 venendo da destra sull' asse delle ascisse", approssimabile con il primo valore superiore alla precisione consentita, poniamo 6.51
=> poichè "dal sei al sette" si trova in un intervallo limitato inferiormente da 6.5, e superiormente dal minimo ottimistico dell' insieme dei valori validi per 7-- ...:sofico:
assolutamente no, neanche se parti da sottozero.
Digital_Style
22-02-2007, 11:33
cionci ho capito cosa vuoi dire, ma sono ancora un pò perplesso perchè non c'è solo il caso che hai esposto tu ma molti altri.inoltre vorrei chiederti come mai non devo perdere troppo tempo con python e passare agli altri linguaggi....
Quello che ti ho esposto non è solo un caso, ma è come funziona il mondo della programmazione: succede molto spesso che delle aziende si fossilizzino su un linguaggio per decenni, quindi se sai quello sei in grado di lavorare in quell'azienda.
Da un punto di vista lavorativo Python è meno richiesto di Java, C e C++, anche se è comunque un ottimo linguaggio. Quindi sfruttalo per quello che ti può servire: un ottimo modo per inserirti nel mondo della programmazione.
Visto che non sai se farai o meno l'università (ma una laurea di primo livello credo che sia ormai d'obbligo) ti ho consigliato i vari linguaggi in un ottica di richiesta lavorativa.
CoreDump
22-02-2007, 11:50
L'informatica è settoriale e molto spesso i lavori lo sono ancora di più. C'è chi, per lavoro, programma 15 anni sullo stesso linguaggio o sullo stesso sistema, tanto per fare un esempio. Non è assolutamente detto che le conoscenze acquisite in 3, 4 anni di studio non siano sufficienti a trovare un ottimo lavoro, proprio perché i requisiti richiesti sono spesso settoriali. Io fino a 19 anni programmavo solo in C e Pascal, ho cominciato dopo con il C++. Quindi metti caso che il lavoro che trovo non richieda il C e il Pascal...ecco che parto allo stesso livello degli altri, nonostante abbia cominciato a programmare a 12 anni.
Esattamente, io non avrei potuto rispondere meglio :), e tanto per chiudere il discorso posso dire al nostro amico che quando sette anni
fà circa ho inziato a lavorare nell'azienda dove attualmente lavoro, tutta la mia esperienza fatta negli anni precedenti mi è servita si
ma neanche tanto visto che mi sono trovato a lavorare su architetture e linguaggi di programmazione che non conoscevo affatto,
in pratica mi hanno dato due, tre libri da 1000 e più pagine e mi hanno detto studia, poi mi hanno buttato a lavorare su progetti portati
avanti da altri, della serie ti butto in mare se sai nuotare bene se no affoghi :D
Quindi mettiti a studiare e non ti preoccupare. Ho visto gente che è uscita da ingegneria informatica con 110 senza conoscere adeguatamente un solo linguaggio...ed hanno trovato subito lavoro. Compra buoni libri e mettiti a studiare ;)
Quoto, studia studia, io lo facevo tutte le volte che avevo un pò di tempo libero e lo faccio ancora visto che in questo campo bisogna sempre tenersi aggiornati, poi al giorno d'oggi cè a disposizione una risorsa preziosa come internet, magari avercela avuta tanti anni fà :p
Quando avrai acquisito un po' di esperienza in Python (non ti consiglio di perderci troppo tempo, ma sarà utile sicuramente ad introdurti al mondo della programmazione), passa a Java (anche server side) e poi a C e C++.
Ariquoto :)
jappilas
22-02-2007, 11:54
L'informatica è settoriale e molto spesso i lavori lo sono ancora di più.
...esatto :)....ti faccio un semplice esempio, un falegname
per lavorare il legno avrà un set di strumenti assortito (martello, chiodi, altri attrezzi manuali, oltre a trapano, levigatrice, fresa, seghetti.. ) poi avrà bisogno di un banco da lavoro
ma sorattutto dovrà sapere come si lavora il legno, come sagomare le parti come metterle assieme (cos'è un giunto a tenone e mortasa o un incastro a coda di rondine, ad esempio) e come rifinirle...
quindi avrà oltre agli attrezzi, un certo know how, e una certa manualità e destrezza nel loro uso - senza il quale anche gli attrezzi migliori, più affidabili e più ergonomici non producono risultati o ne producono di scadenti
lo stesso vale per l' informatico - il linguaggio è ne è più nè meno che un attrezzo, il resto viene da ciò che si impara per acquisire il know how relativo al settore di cui ci si occupa, e dall' esperienza
chi sviluppa un programma di grafica dovrà conoscere gli algoritmi legati alla rappresentazione e al processing di immagini, per un gioco quelli più comuni per l' intelligenza artificiale e per la grafica tridimensionale - oltre alle basi di matematica e spesso di geometria analitica su cui si fondano - chi sviluppa un kernel di un sistema operativo dovrà aver assimilato lui per primo i requisiti e i fondamenti di progettazione di un sistema operativo...
Questo vale praticamente sempre per quei "programmatori" che arrivano ad avere notorietà per via del loro lavoro, se ti affascina il mondo della programmazione e l' idea di avere successo quanto loro, secondo me devi tenerlo presente - perchè come dicevo prima, sapere un linguaggio vale poco senza una cultura informatica almeno attinente al dominio del problema che affronti e/o del settore in cui ti trovi
non per scoraggiarti, ovviamente... semmai per motivarti a studiare per formare ed espandere questo know how ;)
Digital_Style
22-02-2007, 12:45
cionci:certo che farò l'università. voglio prendere tutte le lauree, i master e fare i corsi disponibili per scienze e/o ingegneria informatica
coredump:se non conoscevi quelle architetture e linguaggi di programmazione come ti hanno assunto?
jappilas:vuoi dire che oltre a conoscere il linguaggio di programmazione dovrei anche studiare quello su cui devo programmare?tipo per sviluppare un programma che controlla la propria rete per vedere il livello di sicurezza(il cosiddetto sniffer) dovrei studiare i protocolli di comunicazione. le reti ecc?intendi dire questo?se è cosi avevo anche valutato questa cosa e mi sembra logico che conoscere solo il linguaggio di programmazione non basti!
Via, via, per una acca di meno. Un errore di battitura. Non è il caso di farne una tragedia. Il buon programmatore sa sempre come affrontare queste quisquilie con il giusto senso della misura. Ad esempio io ora sto coniugando il verbo avere con dei raudi infilati tra le dita dei piedi. Ogni volta che sbaglio ne accendo uno.
Ad esempio io ora sto coniugando il verbo avere con dei raudi infilati tra le dita dei piedi. Ogni volta che sbaglio ne accendo uno.
Hahaha allora ti conviene stare attento:D :mc:
CoreDump
22-02-2007, 12:55
coredump:se non conoscevi quelle architetture e linguaggi di programmazione come ti hanno assunto?
Per il semplice motivo che le architetture e i linguaggi di programmazione che uso io qui in azienda difficilmente si possono imparare al di fuori di quest'ambito, sono architetture proprietarie Nortel/Periphonics con linguaggi dedicati, alle volte coaudiuvati da toolset grafici
( tipo diagrammi di flusso per intenderci )
mi hanno assunto basandosi sulla mia esperienza generale, conoscenza di altri linguaggi tipo c e c++ sopratutto in ambito unix,
ho fatto il consulente presso questa azienda per quasi due anni, dopodichè visto che ormai mi occupavo io di buona parte
dello sviluppo del mio settore mi è stata fatta la proposta di assunzione e ovviamente ho accettato :)
yorkeiser
22-02-2007, 13:21
Premettendo che ho votato "forse", per il semplice motivo che se a 19 anni sei ancora al palo hai un bel po' di strada da fare, quello che alla fine conta è l'impegno e la passione che ci metti; progredisci di più in 5 anni di pura passione e accanimento (nel senso buono) che in 20 di lavoro svogliato fatto semplicemente per portare a casa il pane a fine mese.
Hai un punto a tuo favore: studiando su materiale buono e seguendo le metodologie corrette puoi imparare a fare direttamente le cose nel modo "giusto". Te lo dico da autodidatta pentito (imparai a programmare in tenera età su un vecchio Basic che usciva con l'Amiga 500, con un pessimo manuale in inglese che a 10 anni non comprendevo - vuoi per la lingua, vuoi perchè non avevo la minima idea del concetto di aggregazione dei dati, vuoi perchè il manuale non spiegava le metodologie ma solo la sintassi delle istruzioni - , ed in seguito è stata dura "sradicare" tutti i vizi che presi agli inizi. Anzi, devo ammettere che non sono mai riuscito a togliermeli totalmente).
Ma c'è differenza a partire prima con il Java?Cos'ha di diverso dal c++ oltre che a essere multipiattaforma?:help:
Grazie
Ciaoz
In partenza, non tantissima. Ci sono delle similitudini nella sintassi e nell'organizzazione che semplificano il salto dall'uno all'altro linguaggio. Alcune scelte di design del linguaggio di programmazione Java furono fatte proprio per facilitare la transizione da C/C++.
Tuttavia quanto più ti addentri nei meandri delle due lingue tanto più le loro strade si dividono. Di solito si punta molto sulla diversa gestione della memoria ma, a mio avviso, una differenza ben più notevole, spesso trascurata in nome di una difficoltà più presunta che reale, è che Java è un linguaggio concorrente.
Una volta si diceva che Java fosse più semplice. Trascurando l'arbitrarietà di questa dichiarazione d'amore, penso che si sia pienamente avverata la previsione di Stroustrup. Una volta gli chiesero se Java fosse veramente più semplice di C++. E lui, candidamente, rispose: "sì, ma solo perchè è appena nato. Aspettate qualche anno e vedrete".
Prima lo schiaffo dei tipi annidati, poi la mazzata dei generici e infine la futura bomba delle chiusure non fanno ben sperare.
jappilas
22-02-2007, 13:24
jappilas:vuoi dire che oltre a conoscere il linguaggio di programmazione dovrei anche studiare quello su cui devo programmare?in pratica sì ;)
tipo per sviluppare un programma che controlla la propria rete per vedere il livello di sicurezza(il cosiddetto sniffer) dovrei studiare i protocolli di comunicazione. le reti ecc?intendi dire questo?qualcosa del genere... in più magari metti in conto quelle cose che non dipendono dalla tipologia di programma ma ricadono nel suo design (ad esempio: il threading, cos'è e che problematiche porta; oppure le strutture dati, come scegliere quali impiegare o progettarne ad hoc per massimizzare l' efficienza di ricerca e inserzione di elementi; oppure in programmazione OOP, se usi un linguaggio che la supporta, come definire le responsabilità degli oggetti e progettare le classi relative ) oppure nel ciclo di sviluppo (associato a debug e testing - sono coinvolte alcune metriche e metodiche descritte e basate su crteri formali)
ma non temere che se entri a ingegneria informatica verrai "imparato" su questi aspetti (o quantomeno entrerai in contatto con buona parte di essi - a volte ti toccherà approfondire per tuo conto, ma quello è da mettere in conto comunque) :D
se è cosi avevo anche valutato questa cosa e mi sembra logico che conoscere solo il linguaggio di programmazione non basti!ottimo inizio allora imho :)
SlimSh@dy
22-02-2007, 13:30
Secondo me non è mai troppo tardi....diciamo che se si deve partire da 0 per entrare nell'ottica delal programmazione, ovvero non solo sapere fare ma sapere perchè!!!
non è tardi e non lo sarà mai!
...devo dire la verità che anch'io delle volte mi son sentito una nullità di fronte a certi blasonati giovani geni (o presunti tali) della programmazione che in tenera età sventolavano invenzioni che io neppure mi sognavo...togliti dalla testa ste cose va...
...io sinceramente penso che molte di queste storie siano leggende metropolitane, che di reale magari hanno anche qualcosa, ma di inventato hanno invece molto di più...se poi i geni esistono, non sono tali per far sentire te una nullità....pensa a tutti gli scienziati contemporanei di Einstein...cosa avrebbero dovuto fare? tagliarsi la gola dalla vergogna?
Non è tardi per iniziare!
Piuttosto prima di iscrievrti eventualmente all'università verifica che ti piaccia effettivamente e se sei minimamente portato. La programmazione a mio parere è nel sangue, nel dna e va oltre a tutti i problemi di sintassi che potresti avere nell'affrontare dei linguaggi nuovi. La programmazione è un'arte! Si può affinare, si può perfezionare ma è già dentro di te! :sofico:
Ok, basta dire stronz**... tuttavia c'è del vero in quello che ho detto :fagiano:
Ciao :sborone:
Digital_Style
22-02-2007, 17:19
jappilas sinceramente non ho capito molto di quello che hai scritto...spero che sia normale!!per quanto riguarda l'università vorrei sapere che facoltà sarebbe migliore:scienze informatiche o ingegneria informatica.detto questo vorrei soffermarmi su due punti(dolenti almeno per me!)dato che sono usciti in qualche messaggio:unix e i linguaggi di programmazione
per quanti riguarda i linguaggi di programmazione io appena ho scoperto questo affascinamte mondo ho fatto immediatamente una ricerca e ho visto che la maggior parte delle persone dice che python è ottimo per iniziare cosi ho stampato un e-book che parte da zero.la cosa che vorrei chiedervi è questa:ho fatto bene oppure mi consigliate di iniziare con un altro linguaggio?
per quanti riguarda unix invece io vorrei sostituirlo definitivamente a windows perchè oltre ad essere open source e credo che sia una cosa giustissima è anche più stabile e sicuro e si dice che i veri programmatori sbattono la testa su questo sistema, ma non ho avuto una bella esperienza la prima volta che l'ho usato(una slackware 10.1)
cosa mi dite riguardo questo?
comunque vi ringrazio tutti per le risposte che mi sono di grande aiuto e per i vostri ottimi consigli.un ragazzo come me che si trova in questa particolare situazione è davvero fortunato ad avere delle persone che dedicano un pò del loro tempo a rispondere.grazie a tutti
La domanda "va bene per iniziare" è delicata. Scegli qualcosa che abbia librerie ben documentate. "Ben" è soggettivo: se leggendo ti pare di capire allora è buona documentazione. Magari dice castronerie ma, a meno di eclatanti svarioni, è una cosa di cui puoi renderti conto dopo aver rimuginato un po' su.
Da questo punto di vista non conosco Python abbastanza bene per dirti se sia buono o no. Ne sento parlare bene, una ragione ci sarà.
In ogni caso entro cinque risposta da ora salterà fuori qualcuno a dire che C insegna le basi. Occhio ai radicali liberi e quando senti la locuzione "vero programmatore" guarda la barra del cialtrometro: c'è caso che segni valori elevatissimi :D.
se vuoi un consiglio: il "vero programmatore" inizia dal C perchè il C insegna le basi!! :asd::asd::asd::asd:
...a parte gli scherzi, io consiglierei il java perchè è indipendente dalla piattaforma usata, ma come hanno detto in molti potremmo star qui a discutere in eterno su sto fatto.
Per quanto riguarda linux, devo dire che hai iniziato con una distribuzione (slackware) che non è proprio la più a amichevole per un neofita...per cui se non vuoi spaventarti, ti consiglierei qualcosa di meno "settoriale" come ubuntu o giù di lì...anche se, a mio modestissimo parere, slackware è LA distribuzione (per caso si capisce dalla mia sign che distro uso? :))
SlimSh@dy
22-02-2007, 19:56
se vuoi un consiglio: il "vero programmatore" inizia dal C perchè il C insegna le basi!! :asd::asd::asd::asd:
...a parte gli scherzi, io consiglierei il java perchè è indipendente dalla piattaforma usata, ma come hanno detto in molti potremmo star qui a discutere in eterno su sto fatto.
Per quanto riguarda linux, devo dire che hai iniziato con una distribuzione (slackware) che non è proprio la più a amichevole per un neofita...per cui se non vuoi spaventarti, ti consiglierei qualcosa di meno "settoriale" come ubuntu o giù di lì...anche se, a mio modestissimo parere, slackware è LA distribuzione (per caso si capisce dalla mia sign che distro uso? :))
Secondo me per capire "bene" come funziona la programmazione è bene iniziare dalle basi dell'informatica!!Poi diventa molto più semplice apprendere qualsiasi linguaggio di programmazione...
trallallero
22-02-2007, 20:16
pensa a tutti gli scienziati contemporanei di Einstein...cosa avrebbero dovuto fare? tagliarsi la gola dalla vergogna?
parto da questa frase per dire la mia: secondo me non è più l'epoca dei geni alla Leonardo da Vinci, anche se sicuramente ed inevitabilmente ne nascono ancora di "malati" del genere e succederà per sempre perchè frutto dell'errore che sta alla base della selezione naturale, ma è l'era dello sviluppo cooperativo, perchè si è evoluta a livelli esponenziali la collaborazione tra gli uomini, anche tra distanze enormi, grazie alla facilità di comunicazione resa possibile da internet, telefonia mobile etc.
Quindi sentirsi inferiori perchè si immagina il super genio nerd che sta rinchiuso nella sua cameretta a creare il nuovo sistema operativo o programma rivoluzionario è assolutamente sbagliato ed anacronistico.
Digital_Style, ti piace l'informatica ? ti appassiona la programmazione ? ma buttati nella mischia e partecipa anche tu, fai quello che ti piace e che ti stimola e contribuisci come puoi ;)
SlimSh@dy
22-02-2007, 20:27
parto da questa frase per dire la mia: secondo me non è più l'epoca dei geni alla Leonardo da Vinci, anche se sicuramente ed inevitabilmente ne nascono ancora di "malati" del genere e succederà per sempre perchè frutto dell'errore che sta alla base della selezione naturale, ma è l'era dello sviluppo cooperativo, perchè si è evoluta a livelli esponenziali la collaborazione tra gli uomini, anche tra distanze enormi, grazie alla facilità di comunicazione resa possibile da internet, telefonia mobile etc.
Quindi sentirsi inferiori perchè si immagina il super genio nerd che sta rinchiuso nella sua cameretta a creare il nuovo sistema operativo o programma rivoluzionario è assolutamente sbagliato ed anacronistico.
Digital_Style, ti piace l'informatica ? ti appassiona la programmazione ? ma buttati nella mischia e partecipa anche tu, fai quello che ti piace e che ti stimola e contribuisci come puoi ;)
Quoto " Siamo tutti una famiglia :D "
Digital_Style
22-02-2007, 20:36
slimsh@dy da quali "basi" dell'informatica dovrei partire?
trallallero il punto non è immaginarsi il super genio nerd chiuso nella sua cameretta che scrive righe e righe di codice, ma il fatto di inseguire i propri sogni e la domanda che circola è questa:a questa età,con ragazzi ke a 19anni sono già osservati da grandi aziende,con ragazzini rinchiusi nella loro cameretta che faranno la storia io potrò mai arrivare ai loro livelli e vedere realizzato il mio sogno?
trallallero
22-02-2007, 20:41
Quoto " Siamo tutti una famiglia :D "
scherzi (ma so che sei serio ;) ) ma guarda l'open source! è l'apoteosi della rivoluzione comunicativa, informatica o come diavolo si può chiamare quella che stiamo vivendo adesso. Si può produrre qualcosa, ai livelli di Linux, Mule e bestie del genere, a distanza di ore di aereo, a distanza di culture diverse e tempi diversi senza il minimo problema.
E il prodotto è il risultato della cooperazione tra chiunque possa dare un contributo di qualsiasi valore, dal più geniale al più stupido ma indispensabile.
Secondo me è stupendo :O
trallallero
22-02-2007, 20:51
trallallero il punto non è immaginarsi il super genio nerd chiuso nella sua cameretta che scrive righe e righe di codice, ma il fatto di inseguire i propri sogni e la domanda che circola è questa:a questa età,con ragazzi ke a 19anni sono già osservati da grandi aziende,con ragazzini rinchiusi nella loro cameretta che faranno la storia io potrò mai arrivare ai loro livelli e vedere realizzato il mio sogno?
prova! ;)
Potrei sbagliarmi ma tu hai, o un complesso di inferiorità, o un'ambizione enorme ed una fretta eccessiva nel voler vedere i risultati, e penso che sia la seconda che ho detto.
Ma vista la tua età ti capisco, o quanto ti capisco :D
Hai alternative ? hai altre passioni ? se non scegli questo puoi indirizzare la tua ambizione verso altre mete ?
Se si fai bene a pensarci e a valutare, se no cosa aspetti ?
Di poterti chiedere a 50 anni: sarei potuto arrivare ai loro livelli e vedere realizzato il mio sogno?
Digital_Style
22-02-2007, 21:02
la mia UNICA passione è questa!!
ti faccio un esempio del perchè tutti questi "complessi":allora ho trov ato questo codice in C che calcola il teorema di pitagora
#include<stdio.h>
#include<math.h>
int main(){
float a,b,ipo;
scanf("%f%f",&a,&b);
ipo=sqrt(pow(a,2)+pow(b,2));
printf("Il risultato è: %f",ipo); }...
ma non ci capisco niente!!che significa %f?pow?ecc?
un altro esempio + pratico:ho visto del codie in pascal che calcola il teorema di pitagora.conoscendo cosa significa var,writeln,readl ecc ho capito perchè è stato scritto in quel modo ma se lo dovessi scrivere io non lo saprei fare...perchè?è questo quello ke mi chiedo
trallallero
22-02-2007, 21:22
la mia UNICA passione è questa!!
ti faccio un esempio del perchè tutti questi "complessi":allora ho trov ato questo codice in C che calcola il teorema di pitagora
#include<stdio.h>
#include<math.h>
int main(){
float a,b,ipo;
scanf("%f%f",&a,&b);
ipo=sqrt(pow(a,2)+pow(b,2));
printf("Il risultato è: %f",ipo); }...
ma non ci capisco niente!!che significa %f?pow?ecc?
un altro esempio + pratico:ho visto del codie in pascal che calcola il teorema di pitagora.conoscendo cosa significa var,writeln,readl ecc ho capito perchè è stato scritto in quel modo ma se lo dovessi scrivere io non lo saprei fare...perchè?è questo quello ke mi chiedo
ma come perchè ? non lo sai perchè per adesso non lo puoi sapere. Anche io non so perchè l'acido deossiribonucleico è un polimero organico ma se lo studiassi lo saprei ;)
A 19 anni c'è gente che già sa molte cose più di te e ti saprebbe, non solo spiegare cos'è sqrt(pow(a,2)+pow(b,2)), ma te la saprebbe rifare in assembler e più performante, ma chissene frega! Prendi il tuo tempo e impara anche tu.
C'ho preso, hai veramente fretta, troppa fretta :D
PS: quello che hai scritto in C è una stronzata, la capisci in 10 minuti a 19 anni. Facciamo così, se non te la spiega qualcun altro prima di me te la spiego io ma non prima di domani, adesso mi sconnetto. Se la capisci rapidamente sei fatto per l'informatica, sennò lascia perdere. E' un gioco, sto scherzando, ma chissà, potrebbe essere veramente un primo e significativo esame :D
Vabè non se lo può mica inventare cosa possono voler dire %f,pow etc...
E' un problema esclusivamente di sintassi non di concetto, non farti troppe seghe mentali :D
scanf("%f%f",&a,&b);
legge da tastiera due numeri (due float) e li assegna ale variabili a e b. %f indica che l'input deve essere interpretato come float appunto.
ipo=sqrt(pow(a,2)+pow(b,2));
l'ipotenusa è uguale alla radice quadrata della somma quadratica di a e b.
sqrt(...) --> radice quadrata dell'argomento
pow(a,n) --> potenza ennesima di a
Bye
ps: spero di non aver scritto vaccate.. il c non lo tocco da parecchio :D
SlimSh@dy
22-02-2007, 22:24
la mia UNICA passione è questa!!
ti faccio un esempio del perchè tutti questi "complessi":allora ho trov ato questo codice in C che calcola il teorema di pitagora
#include<stdio.h>
#include<math.h>
int main(){
float a,b,ipo;
scanf("%f%f",&a,&b);
ipo=sqrt(pow(a,2)+pow(b,2));
printf("Il risultato è: %f",ipo); }...
ma non ci capisco niente!!che significa %f?pow?ecc?
un altro esempio + pratico:ho visto del codie in pascal che calcola il teorema di pitagora.conoscendo cosa significa var,writeln,readl ecc ho capito perchè è stato scritto in quel modo ma se lo dovessi scrivere io non lo saprei fare...perchè?è questo quello ke mi chiedo
Scusami ma perchè non inizi con delle semplici guide che partono da 0?? su www.html.it ci sono tantissime guide e sono ottime per iniziare!!!E cmq ripeto secondo me devi prima sapere come "risolvere il problema"!!!La codifica è l'ultima cosa......io ad esempio sin dalle scuole superiori prima di passare alla codifica ho sempre fatto i CFC ovvero i diagrammi a blocchi.....una volta fatto quello poi puoi codificarlo nel linguaggio che vuoi!!!!
CoreDump
22-02-2007, 22:30
la mia UNICA passione è questa!!
ti faccio un esempio del perchè tutti questi "complessi":allora ho trov ato questo codice in C che calcola il teorema di pitagora
#include<stdio.h>
#include<math.h>
int main(){
float a,b,ipo;
scanf("%f%f",&a,&b);
ipo=sqrt(pow(a,2)+pow(b,2));
printf("Il risultato è: %f",ipo); }...
ma non ci capisco niente!!che significa %f?pow?ecc?
un altro esempio + pratico:ho visto del codie in pascal che calcola il teorema di pitagora.conoscendo cosa significa var,writeln,readl ecc ho capito perchè è stato scritto in quel modo ma se lo dovessi scrivere io non lo saprei fare...perchè?è questo quello ke mi chiedo
Come perchè? O_o, scusami ma non mi pare che nessuno nasca imparato no? tu sapresti leggere e scrivere in italiano se qualcuno non
ti avesse insegnato ? Quello che hai postato qui sopra è codice in C, tu hai studiato C? suppongo di no, quindi a parte andando un pò
ad intuito come pensi di capire ciò che non conosci? Se hai voglia di imparare potresti cominciare a comprarti un buon libro in C
( o in qualsiasi altro linguaggio tu voglia inziare ) cosi da farti almeno le basi, poi ti scarichi un qualsiasi ambiente o compilatore che più
ti aggrada e cominci a fare delle prove man mano che studi, per esempio potresti cominciare a compilare il codice che hai postato
e successivamente a modificarlo e via dicendo ;)
jappilas
22-02-2007, 22:39
...ero indeciso se introdurre l' inclusione degli header e l' uso delle funzioni di libreria (con il formato delle funzioni di stampa e scansione e i loro codici) per fargli capire da solo cosa faceva quel codice ,ma vedo che avete già concluso :O
La domanda "va bene per iniziare" è delicata. Scegli qualcosa che abbia librerie ben documentate. "Ben" è soggettivo: se leggendo ti pare di capire allora è buona documentazione. Magari dice castronerie ma, a meno di eclatanti svarioni, è una cosa di cui puoi renderti conto dopo aver rimuginato un po' su.
Da questo punto di vista non conosco Python abbastanza bene per dirti se sia buono o no. Ne sento parlare bene, una ragione ci sarà.per me è lo stesso... avendo fatto un percorso di studio (pascal > C > C++ || assembly > Java ) in cui Python non è ancora entrato, per ora non saprei confermare o smentire, ma ricordo l' esempio di un amico, ex frequentatore di questo forum, programmatore veterano, che affermava di essere molto più produttivo con python che con qualsiasi altro linguaggio, java incluso...
quindi il "problema" secondo me può essere quello di cui parlava cionci, che python sembrerebbe poco diffuso nel settore professionale/industriale - quindi poco richiesto come competenze nelle offerte di lavoro
In ogni caso entro cinque risposta da ora salterà fuori qualcuno a dire che C insegna le basi. in realtà il C, può insegnare le basi, ma anche l' assembly per quello... il problema è che lo fanno rendendo la curva di apprendimento più ripida il primo, verticale nonchè lucidata a specchio (:mc: ) il secondo :O
Occhio ai radicali liberi e quando senti la locuzione "vero programmatore" guarda la barra del cialtrometro: c'è caso che segni valori elevatissimi :D.:D
comunque, anche se l' abuso di cui è vittima lo sta rendendo una figura mitologica, in realtà esiste un "vero programmatore" ... come diceva un altro ex assiduo frequentatore di questo forum, il buon programmatore è quello efficiente nel suo lavoro, dotato della capacità di scegliere e usare gli strumenti migliori per quello che deve fare, e di produrre codice di qualità - ovvero elegante e leggibile, quindi manutenibile oltrechè funzionale ed efficiente... nessuna divinità ma una persona che cerca di applicare sani criteri ma soprattutto che pensa agli altri programmatori ( quelli che sul suo codice dovranno lavorare, o contestualmente o in secondo tempo)
jappilas sinceramente non ho capito molto di quello che hai scritto...spero che sia normale!!nulla di cui preoccuparsi - ora... col tempo imparerai molto (pure troppo ) :D
per quanto riguarda l'università vorrei sapere che facoltà sarebbe migliore:scienze informatiche o ingegneria informatica.io sono del vecchio ordinamento , quindi non faccio testo - ma considera che a ing. inf. c'è (o almeno c' era) anche parecchia matematica, e finanche chimica e fisica (sei sempre un ingegnere :O )
per quanti riguarda unix ... cosa mi dite riguardo questo?delle cose per cui verrei sicuramente linciato, quindi non le posso dire :O :D
invece io vorrei sostituirlo definitivamente a windows aspetto importante: di quello che userai per conto tuo non dovrai rendere conto a nessuno, ma sul / per lavoro c'è la concreta possibilità che tu debba assumere un atteggiamento pragmatico...
Il sw è prima di tutto un prodotto, avente lo scopo di svolgere un lavoro o funzione
A seconda del settore e del lavoro, ti potrà essere richiesto di adottare una specifica combinazione di sistema operativo e strumenti di sviluppo, oppure di programmare in funzione di specifiche API (diciamo "librerie" - esempio concreto, DX riguardo allo sviluppo di videogiochi) che l'azienda ha già valutato come la soluzione migliore per il proprio obiettivo ( che può essere tanto produrre una soluzione SW in tempi brevi quanto produrla per la piattaforma che potenzialmente consente le vendite più consistenti)
O tu stesso ti potrai trovare a dover compiere tali scelte per te stesso o per il resto del team, per massimizzare prima che il profitto , la produttività e l' efficienza
Questo, richiede una valutazione obiettiva delle opzioni e loro caratteristiche
Richiede che laddove la soluzione più rispondente alle esigenze precedenti , sia una commerciale, questa sia accettata e sfruttata
Non ti preoccupare se non sai leggere un sorgente C, io non saprei leggere una sorgente scritto da te in Python ;)
la mia UNICA passione è questa!!
ti faccio un esempio del perchè tutti questi "complessi":allora ho trov ato questo codice in C che calcola il teorema di pitagora
#include<stdio.h>
#include<math.h>
int main(){
float a,b,ipo;
scanf("%f%f",&a,&b);
ipo=sqrt(pow(a,2)+pow(b,2));
printf("Il risultato è: %f",ipo); }...
ma non ci capisco niente!!che significa %f?pow?ecc?
un altro esempio + pratico:ho visto del codie in pascal che calcola il teorema di pitagora.conoscendo cosa significa var,writeln,readl ecc ho capito perchè è stato scritto in quel modo ma se lo dovessi scrivere io non lo saprei fare...perchè?è questo quello ke mi chiedo
...mi sembra di vedere me stesso quando, prima di iscrivermi ad informatica, guardavo i temi che davano per esame (nota: mi sono iscritto a 23 anni...) dei vari corsi, per rendermi conto delle eventuali difficoltà che mi sarei trovato ad affrontare, e mi ripetevo: non ce la farò mai a capire quelle cose!! che cosa vogliono dire??!è troppo difficile!! non riuscirò mai!!
....come direbbe il sergente maggiore Hartman di full metal jacket "....sono tutte stronzate!!".....non puoi sapere le cose se nessuno te le hai mai spiegate...quindi non ti fasciare la testa prima di sbatterla...
P.S: Il sergente Hartman disse anche :"Io giuro che riuscirò a motivarti Palla di lardo, a costo di andare ad accorciare il cazzo a tutti i cannibali del Congo!"...quindi non prenderlo alla lettera come motivatore!!
io sono del vecchio ordinamento , quindi non faccio testo - ma considera che a ing. inf. c'è (o almeno c' era) anche parecchia matematica, e finanche chimica e fisica (sei sempre un ingegnere:O )
Per quanto riguarda la matematica ce n'è parecchia anche ad informatica... certo non c'è chimica... ma d'altra parte chettefrega della chimica :D
Un consiglio: stai alla larga dagli ingegneri, sono una brutta razza! :D :D
SlimSh@dy
23-02-2007, 12:35
IO faccio Informatica e Comunicazione Digitale a Bari e sono soddisfatto della scelta!!!Si studia quanto si deve e non bisogna rinunciare a qualsiasi altra cosa per lo studio!!!
jappilas
23-02-2007, 13:03
Un consiglio: stai alla larga dagli ingegneri, sono una brutta razza! :D :Dehm, non fosse per la mancanza di alcuni esami e della tesi sarei appunto ingegnere informatico vecchio ordinamento :fagiano:
quindi ti tocca starmi lontano :p
SlimSh@dy
23-02-2007, 13:31
Cmq non so se è la stessa cosa, ma anche io non facendo ING alla fine facendo l'esame di Stato posso iscrivermi all'albo degli Ingegneri :cool: :cool: :cool:
Digital_Style
23-02-2007, 16:04
ok, ho capito il sorgente in C(dopo ke lo ha spiegato griffo)anche se superficialmente, logicamente per capire bene la sintassi e il resto si deve studiare!!per quanto riguarda l'università vedrò tra scienze e ingegneria la differenza e poi voglio prendere più master e specializzazioni possibili!
poi trallallero ha scritto:
"A 19 anni c'è gente che già sa molte cose più di te e ti saprebbe, non solo spiegare cos'è sqrt(pow(a,2)+pow(b,2)), ma te la saprebbe rifare in assembler e più performante, ma chissene frega"
vorrei dire due cose
è importante conoscere assembler?e come farebbe a venire più performante un programma che calcola il teorema di pitagora?
sul fatto che si sono 19enni che sanno già più cose di me(mi sembra logico!!)è proprio questo quello ke voglio dire!!cioè loro a 30anni saranno a livello 10 e io si e no 5/6!!è questo il punto!cioè a me mi frega di questa cosa!non voglio essere inferiore a nessuno, voglio fare vedere quanto valgo ma cosi cavolo mi demoralizzo troppo!
P.S scusate per tutte queste domande ma ho voglia di sapere, di conoscere!!
Dubito cmq che prima dell'università si possano aquisire grossi vantaggi rispetto ad uno che parte da zero. Non farti troppe seghe mentali io stesso (che ho 20 anni) pur non avendo quasi mai programmato in vita mia prima dell'anno scorso ho preso 30 e lode in programmazione alla faccia di tutti i ragazzi che avevano fatto l'itis informatico :D :D :sofico:
L'assembler lo si impara all'uni in alcuni corsi...
Bye
Dubito cmq che prima dell'università si possano aquisire grossi vantaggi rispetto ad uno che parte da zero. Non farti troppe seghe mentali io stesso (che ho 20 anni) pur non avendo quasi mai programmato in vita mia prima dell'anno scorso ho preso 30 e lode in programmazione alla faccia di tutti i ragazzi che avevano fatto l'itis informatico :D :D :sofico:
L'assembler lo si impara all'uni in alcuni corsi...
Bye
ehhe...anch'io il primo esame che ho dato quando mi sono iscritto era programmazione, e ho preso 30 e lode...già iniziavo a fare salti di gioia e voli pindarici con la mente...fin quando non è arrivato l'esame di Calcolo differenziale e Intergale a farmi capire di essere un essere umano normale :asd: :asd: :asd:
Digital_Style
23-02-2007, 18:30
Dubito cmq che prima dell'università si possano aquisire grossi vantaggi rispetto ad uno che parte da zero. Non farti troppe seghe mentali io stesso (che ho 20 anni) pur non avendo quasi mai programmato in vita mia prima dell'anno scorso ho preso 30 e lode in programmazione alla faccia di tutti i ragazzi che avevano fatto l'itis informatico :D :D :sofico:
L'assembler lo si impara all'uni in alcuni corsi...
Bye
ci sono molti ragazzi ke prima dell'università hanno fatto degli ottimi programmi e credo che la maggior parte abbiano studiato da autodidatta...fai qualche conto!!
ritornando ad un esempio di poco fa..prendi dvdjonh..17 anni e sappiamo tutti che ha fatto!non credo andasse all'università!!
P.S. solo per curiosità...ma in che cosa consiste l'esame di programmazione?!siete dei geni che avete preso 30 e lode?!!?
SlimSh@dy
23-02-2007, 18:42
Secondo me prima di passare alla pratica dovresti fare tanta Teoria, mi ricordo alle superiori che il primo anno di programmazione non abbiamo mai scritto nessun programma, abbiam fatta tanta teoria anche se spesso era noioso. Ma oggi posso dire solo grazie al professore di quell'anno teorico perchè grazie a molti concetti reisco ad apprendere qualsiasi linguaggio di programmazione senza troppe difficoltà.......
Aridaje co 'sto dvdjohn :D. Che mi è anche simpatico ma se vuoi sceglierti una stella, punta il naso verso l'alto.
http://awards.acm.org/homepage.cfm?srt=all&awd=140
Vengono le lacrime agli occhi a scorrere quei nomi.
ci sono molti ragazzi ke prima dell'università hanno fatto degli ottimi programmi e credo che la maggior parte abbiano studiato da autodidatta...fai qualche conto!!
ritornando ad un esempio di poco fa..prendi dvdjonh..17 anni e sappiamo tutti che ha fatto!non credo andasse all'università!!
P.S. solo per curiosità...ma in che cosa consiste l'esame di programmazione?!siete dei geni che avete preso 30 e lode?!!?
evabbè che ti devo dire.... allora non iscriverti all'università tanto non diventerai mai Steve jobs II il ritorno!
Il mio esame di prog era su java, 18 crediti... consisteva nella programmazione in java appunto, scritto + progetto + orale...
siete dei geni che avete preso 30 e lode?!!?
io si :sofico:
ciao :D
ps: ma che ha fatto dvdjonh?
SlimSh@dy
23-02-2007, 20:16
evabbè che ti devo dire.... allora non iscriverti all'università tanto non diventerai mai Steve jobs II il ritorno!
Il mio esame di prog era su java, 18 crediti... consisteva nella programmazione in java appunto, scritto + progetto + orale...
io si :sofico:
ciao :D
ps: ma che ha fatto dvdjonh?
Quoto ma chi è sto dvdjohn?:D :D :ciapet: :ciapet: :ciapet:
trallallero
23-02-2007, 20:26
sul fatto che si sono 19enni che sanno già più cose di me(mi sembra logico!!)è proprio questo quello ke voglio dire!!cioè loro a 30anni saranno a livello 10 e io si e no 5/6!!è questo il punto!cioè a me mi frega di questa cosa!non voglio essere inferiore a nessuno, voglio fare vedere quanto valgo ma cosi cavolo mi demoralizzo troppo!
ma chi ti ha detto che a 30 anni loro saranno a livello 10 e tu no ? se loro son più lenti di te nell'apprendere ? mica siamo tutti uguali. Io ci ho messo un attimo a capire il C perchè mi veniva naturale ed ho iniziato a 28 anni ;)
prima ero musicista. Poi c'è il commercialista che cerca di spiegarmi certe cose sul funzionamento delle tasse e non riesco a capirle, è più forte di me! mi sembro scemo ogni tanto. Non ci sono portato per quell'argomento, non c'è niente da fare. Per quello ti converrebbe capire, visto che vuoi diventare il numero uno, se ci sei portato.
Poi parli di livello 10 ... è talmente vasto il mondo informatico che non puoi dire in maniera assoluta: quello è a livello 10 l'altro 5; perchè magari uno lavora per la Nasa in assembler l'altro ti fa un perfetto gestionale in Oracle Forms in 2 ore. Chi è meglio ? e perchè ? Il primo deve conoscere alla perfezione il funzionamento del pc a livello di stack, ram etc, l'altro deve conoscere a livello macroscopico l'ambiente per il quale fa il gestionale. Sono entrambi informatici, ottimi, ma fanno cose non paragonabili.
Comunque in bocca al lupo :mano:
trallallero
23-02-2007, 20:29
Quoto ma chi è sto dvdjohn?:D :D :ciapet: :ciapet: :ciapet:
non lo conoscevo neanche io ma ho trovato questo che fa capire ... grande! :asd:
http://www.p2pforum.it/forum/archive/index.php/t-144088.html
Digital_Style
24-02-2007, 13:20
allora non iscriverti all'università tanto non diventerai mai Steve jobs II il ritorno!
ps: ma che ha fatto dvdjonh?
grazie dell'icoraggiamento!
p.s.cosa sono questi 18crediti?
cmq dvdjohn è quel ragazzo 17enne che ha scritto un algoritmo per sproteggere i dvd e ha anche sprotetto il drm di itunes
poi però ho pensato una cosa:se uno ha esperienza di programmazione alla fine arrivati ad una certa età credo che siano allo stesso livello anche se uno comincia dopo dell'altro.cioè se uno inizia e 12 e uno a 20 a trent'anni credo che siano allo stesso livello, poi logicamente cambia il modo di ragionare, di affrontare i problemi e anche il campo d'applicazione.uno può lavorare per la nasa e l'altro sviluppare programmi per la scientifica...ho detto una fesseria?
riguardo assembler volevo chiederese è importante è utile studiarlo e in quale campo applicativo potesse servire
SlimSh@dy
24-02-2007, 13:42
grazie dell'icoraggiamento!
p.s.cosa sono questi 18crediti?
cmq dvdjohn è quel ragazzo 17enne che ha scritto un algoritmo per sproteggere i dvd e ha anche sprotetto il drm di itunes
poi però ho pensato una cosa:se uno ha esperienza di programmazione alla fine arrivati ad una certa età credo che siano allo stesso livello anche se uno comincia dopo dell'altro.cioè se uno inizia e 12 e uno a 20 a trent'anni credo che siano allo stesso livello, poi logicamente cambia il modo di ragionare, di affrontare i problemi e anche il campo d'applicazione.uno può lavorare per la nasa e l'altro sviluppare programmi per la scientifica...ho detto una fesseria?
riguardo assembler volevo chiederese è importante è utile studiarlo e in quale campo applicativo potesse servire
Non si smette mai di imparare!!!Sopratutto nella programmazione e nell'informatica in generale!!!Quindi il discorso che a 30 anni si è allo stesso livello non regge.....siamo uno diverso dall'altro sia come capacità, sia come conoscenze e sia come tanti altri fattori!!!Cmq la cosa che ti consiglio io e PENSA solo A TE STESSO!!!Lascia stare i paragoni!!!Pensa a realizzarti TU!!E metterti alla prova secondo le tue capacità!!!Insomma dai il massimo di ste stesso ma non tenere in testa sempre questi paragoni.......TU SEI TU gli altri sono gli altri!!!;) ;) ;) ;) Chissà magari potresti anceh essere MIGLIORE.....nulla è impossibile
jappilas
24-02-2007, 14:25
grazie dell'icoraggiamento! è che sai cosa? quando Steve Jobs e Bill Gates hanno iniziato, erano dei pionieri e la scena informatica era radicalmente diversa, la tecnologia era diversa, il mercato era diverso
Quello che li ha portati dove sono è dovuto a una combinazione di tempismo, fortuna per certi aspetti, capacità di vendere e "vendersi", e un percorso di scelte strategiche e di marketing (alcune tali da attirare l' inimicizia) ... combinazione che probabilmente nessuno riuscirebbe a ripetere partendo da zero, ora e con degli ideali
imho, se si vuole diventare ricco si deve essere un abile e meglio se bieco affarista prima che un bravo tecnico ...
poi però ho pensato una cosa:se uno ha esperienza di programmazione alla fine arrivati ad una certa età credo che siano allo stesso livello anche se uno comincia dopo dell'altro.cioè se uno inizia e 12 e uno a 20 a trent'anni credo che siano allo stesso livello, poi logicamente cambia il modo di ragionare, di affrontare i problemi e anche il campo d'applicazione.uno può lavorare per la nasa e l'altro sviluppare programmi per la scientifica...ho detto una fesseria?no, ma c'è da tenere in conto che 8 anni se dedicati a un solo interesse sono parecchi... e quello che inizia prima aprte avvantaggiato per due motivi: perchè si dà prima una forma mentis orientata alla logica e alla sequenziazione di comandi destinati al calcolatore
perchè in quegli 8 anni ha maggiori opportunità di passare in rassegna linguaggi di programmazione e relativi paradigmi concettuali, differenti - e più avanti magari in università, di interiorizzare a un livello superiore non solo metodiche e strumenti di sviluppo più evoluti, ma anche le basi teoriche su cui queste si appoggiano (cosa che gli consentirebbe magari di analizzarli e adattarli alle proprie esigenze lavorative piuttosto che servirsene passivamente...)
insomma prima si inizia più possibilità ci sono di arrivare a una formazione a tutto campo piuttosto che restare per forza di cose limitati a quella necessaria e sufficiente per il settore in cui si lavora...
quindi suggerisco di seguire il consiglio di slimsh@dy , non ci pensare e segui la tua strada ;)
Digital_Style
24-02-2007, 14:31
slimsh@dy hai ragione!devo pensare a me e andare avanti per la mia strada..niente è impossibile!!
@jappilas:per me sbagli perchè è vero ke 8anni sono sempre 8 anni, ma è anche vero che anche se uno comincia dopo alla fine se andrò all'università non è detto ke debba restare per forza con le conoscenze per un certo settore.capendo il ragionamento, ampliando anche autonomamente le proprie conoscenze poi si possono apprendere più facilmente altri linguaggi e non si resta al solo campo di lavoro.uno che ha 8anni alle spalle non vuol dire che non possa essere raggiunto da uno che ne ha 1 capisci che voglio dire?basta capire il concetto, la mentalità.ognuno ha il proprio modo di affrontare i problemi e risolverli ed è questo che ci distingue l'uno dagli altri!
p.s. per quanto riguarda l'assembler ke mi dite?!
SlimSh@dy
24-02-2007, 14:47
slimsh@dy hai ragione!devo pensare a me e andare avanti per la mia strada..niente è impossibile!!
@jappilas:per me sbagli perchè è vero ke 8anni sono sempre 8 anni, ma è anche vero che anche se uno comincia dopo alla fine se andrò all'università non è detto ke debba restare per forza con le conoscenze per un certo settore.capendo il ragionamento, ampliando anche autonomamente le proprie conoscenze poi si possono apprendere più facilmente altri linguaggi e non si resta al solo campo di lavoro.uno che ha 8anni alle spalle non vuol dire che non possa essere raggiunto da uno che ne ha 1 capisci che voglio dire?basta capire il concetto, la mentalità.ognuno ha il proprio modo di affrontare i problemi e risolverli ed è questo che ci distingue l'uno dagli altri!
p.s. per quanto riguarda l'assembler ke mi dite?!
L'assembler è ottimo saperlo!!!Diciamo che riesci un pò a capire come "ragiona" il calcolatore dato che un linguaggio di programmazione "più vicino alla macchina". Diciamo che se sei appassionato di "crack e company":ciapet: :ciapet: :ciapet: è il linguaggio che devi sapere perfettamente!! Io l'ho fatto sia alle superiori e sia all'Università anche se cmq ad un livello scolastico e non professionale.
Digital_Style
24-02-2007, 15:11
l'assembler viene usato principalmente per crack e company?le crack non si possono fare anche con gli altir linguaggi?l'assembler potrebbe servire saperlo se ad esempio con un disassemblatore vuoi capire cosa fa un programma quando è in funzione...è difficile questo linguaggio vero?
SlimSh@dy
24-02-2007, 15:13
l'assembler viene usato principalmente per crack e company?le crack non si possono fare anche con gli altir linguaggi?l'assembler potrebbe servire saperlo se ad esempio con un disassemblatore vuoi capire cosa fa un programma quando è in funzione...è difficile questo linguaggio vero?
Non sò gli altri utilizzi, però sò che per fare crack e roba simile si lavor amolto di assembler...
Gli assembly sono difficili solo se sei un essere umano. Sono tabelle interminabili di simboli. Li impari a memoria poi li accatasti uno dietro l'altro in quantità colossali e hai fatto. Essendo la vita troppo breve per perdere tempo a fare una cosa tanto stupida, gli esseri umani hanno (si noti la acca :D) inventato i compilatori.
SlimSh@dy
24-02-2007, 15:38
Gli assembly sono difficili solo se sei un essere umano. Sono tabelle interminabili di simboli. Li impari a memoria poi li accatasti uno dietro l'altro in quantità colossali e hai fatto. Essendo la vita troppo breve per perdere tempo a fare una cosa tanto stupida, gli esseri umani hanno (si noti la acca :D) inventato i compilatori.
:D :D :D :D
Digital_Style
24-02-2007, 16:38
Gli assembly sono difficili solo se sei un essere umano. Sono tabelle interminabili di simboli. Li impari a memoria poi li accatasti uno dietro l'altro in quantità colossali e hai fatto. Essendo la vita troppo breve per perdere tempo a fare una cosa tanto stupida, gli esseri umani hanno (si noti la acca :D) inventato i compilatori.
ma ci saranno alcuni casi in cui potrebbe tornare utile, magari se ci sono cose che con gli altri linguaggi non si può fare
riguardo alla risposta che ho dato a jappilas che dite?
ma ci saranno alcuni casi in cui potrebbe tornare utile, magari se ci sono cose che con gli altri linguaggi non si può fare casi ragionevolmente trascurabili: solo i programmatori di kernels usano (e quasi mai) stubs di assembly. è piuttosto stupido dire che bisogna imparare l'assembly per poterlo usare in quelle situazioni praticamente inesistenti. va imparato si, ma solo per cultura personale e per capire a fondo come funzionano i computers.
Concordo...per carità i casi particolari ci sono e ci saranno sempre (assembly per i microcontrollori ad esempio), ma per l'uso che ne farà il 90% delle persone in questa sezione, l'assembly è solo un mezzo per capire come funziona un processore...
SlimSh@dy
24-02-2007, 17:43
Concordo!!!
Circa il poter raggiungere in corsa chi abbia iniziato prima mi sembra matematicamente impossibile ma approssimativamente realistico.
Credo che sia ragionevole affermare che più sai e più è dispendioso sapere nuove cose. Così mentre l'apprendista passeggia spedito lungo la strada delle basi, l'esperto arranca con fatica sul pendio dell'approfondimento. L'apprendista impara mille cose al giorno, l'esperto una se gli va di lusso. Man mano che i due procedono, il divario tra ciò che sa l'apprendista e quel che sa l'esperto si riduce. Tende a zero ma è nullo solo quando entrambi abbiano speso infinite energie.
Nel mondo reale la cosa è meno complicata. Il momento in cui pensi di poter far fare al computer quello che vuoi arriva molto prima del dolore ai polpacci. Quello in cui il computer fa effettivamente quello che vuoi...mai! :D.
jappilas
24-02-2007, 21:19
l'assembler viene usato principalmente per crack e company?no
come si diceva, certi settori lavorano in assembly per via di fattori che vanno dall' ottimizzazione manuale del codice all' eventuale ristrettezza delle risorse nella piattaforma target
poi per dire, lo sviluppo dei tool di sviluppo stessi (compilatore, assemblatore, debugger) richiede l' utilizzo di assembly, o almeno una conoscenza della piattaforma abbastanza profonda da in pratica equivalere alla se non conoscenza, almeno comprensione dell' assembly di quella piattaforma
a parte ciò vale quello che diceva cionci - come linguaggio è quello che insegna di più sul funzionamento del sistema, ma è per forza di cose quello che per un uso diretto in un ambito dove la produttività si misura in termini di righe di codice, si tende a escludere...
le crack non si possono fare anche con gli altir linguaggi?in pratica no
quello che se non sbaglio fanno i crackers (e che io non ho mai fatto, per inciso :O) per sproteggere un programma chiuso, quando questo è compilato in linguaggio macchina, implica solitamente trovare una sequenza di istruzioni corrispondenti al controllo di validità dell' applicazione e all' ingresso nel corpo del programma vero e proprio, per crearne una corrispodente a un bypass del controllo - oppure per estrapolare gli algoritmi di generazione dei codici validi
trovandosi davanti puro codice binario (in certi casi composto da istruzioni sequenziate in modo ancora meno chiaro o per le ottimizzazioni apportate dal compilatore c/c++, o per l' utilizzo di tool apposti di offuscamento tesi a rendere più difficile il reverse engineering )
l'assembler potrebbe servire saperlo se ad esempio con un disassemblatore vuoi capire cosa fa un programma quando è in funzione...anche... o meglio, afaik un disassembler opera in modo statico (su un file binario programma non in esecuzione)
mentre un disassembler che è anche debugger, o il debugger che fa parte dell' ambiente di sviluppo, solitamente potrà mostrare insieme allo stato dei registri , anche la sequenza assemblata in cui ci si trova ad esempio in corrispondenza di un breakpoint o di un' eccezione
è difficile questo linguaggio vero?è un linguaggio che mappa uno a uno le sequenze di bit riconoscibili dal processore come istruzioni (in quanto aggreganti i codici dell' operazione e quelli dei relativi argomenti e flags) su dei mnemonici, cioè "nomi" letterali ad uso del programmatore
semplificando parecchio, le istruzioni ( che sono appunto quelle del processore "obiettivo" nonchè dell' architettura/ famiglia di architetture a cui appartiene) sono del tipo:
operazione matematica o logica (somma, shift,....) tra o su valori contenuti in registri (sui risc - macchine con set di istruzioni ridotto, cioè semplificato) o (su macchine CISC - architetture con istruzioni complesse) recuperabili da un registro o da una locazione di memoria a sua volta referenziata in modo assoluto (cella all' indirizzo X) o relativo (cella all' indirizzo "X+offset")
controllo di flusso con salto all' istruzione contenuta all' indirizzo X o ripetizione di una subroutine
trasferimento di valore da un registro alla memoria (store) o viceversa (load) soprattutto su macchine risc, su quelle CISC questo è reso superfluo dalla possibilità spesso presente di avere un indirizzo di memoria come locazione di un operando o del risultato
scansione di stringhe
eccetera eccetera
@jappilas:per me sbagli perchè è vero ke 8anni sono sempre 8 anni, ma è anche vero che anche se uno comincia dopo alla fine se andrò all'università non è detto ke debba restare per forza con le conoscenze per un certo settore.capendo il ragionamento, ampliando anche autonomamente le proprie conoscenze poi si possono apprendere più facilmente altri linguaggi e non si resta al solo campo di lavoro.uno che ha 8anni alle spalle non vuol dire che non possa essere raggiunto da uno che ne ha 1 capisci che voglio dire?basta capire il concetto, la mentalità.ognuno ha il proprio modo di affrontare i problemi e risolverli ed è questo che ci distingue l'uno dagli altri!sulla teoria ti posso anche dare ragione, nel senso: se quello che inizia dopo, mette un impegno in proporzione, molto maggiore di quello che ha iniziato prima, alla fine lo potrà raggiungere (come nozioni acquisite ) ;)
però, c'è da una parte l' aspetto della pratica e quindi dell' esperienza sul campo (che non so fino a che punto sia "recuperabile")
dall' altra, il fatto che l' informatica - o meglio, le combinazioni di: diramazioni della teoria informatica pura / linguaggi e tecnologie dedicate allo sviluppo / metodiche impiegabili dai progettisti SW / ambiti applicativi in cui tecnologie e metodiche contribuiscono a sfornare nuovi prodotti SW , cioè applicazioni, siano in numero tale, anche se finito, da rendere possibile per chiunque abbia tempo e dedizione, una pressochè continua esplorazione al di là di quella di partenza
anche per questo ti dicevo di non pensarci - sono cose che potrebbero demotivarti, ma se la tua passione è forte non devi lasciare che lo facciano
jappilas
24-02-2007, 21:51
edit - post doppio sorry :O
jappilas
24-02-2007, 21:56
edit - post ridondante :O
ehm, veramente... :O
certi settori lavorano in assembly per via di fattori che vanno dall' ottimizzazione manuale del codice all' eventuale ristrettezza delle risorse nella piattaforma target al giorno d'oggi l'ottimizzazione manuale del codice non è più possibile: se qualcuno riesce veramente a scrivere codice assembly che richiede meno cicli di clock di quello generato da un buon compilatore (ammesso che sia possibile...) allora è un fesso perché impiega N volte il tempo-uomo necessario a scrivere direttamente in C, C++ o nel linguaggio d'alto livello quale che sia. con N grande a piacere e velocemente divergente. :D
discorso simile circa la ristrettezza di risorse: non è assolutamente necessario programmare in assembly quando si vuole produrre un eseguibile dalle dimensioni ridotte. sono solo necessarie alcune accortezze nel settaggio delle opzioni sia del compilatore che del linker.
poi per dire, lo sviluppo dei tool di sviluppo stessi (compilatore, assemblatore, debugger) richiede l' utilizzo di assembly, compilatori assemblatori e debuggers di per se' non sono scritti in assembly, se non in fase molto primordiale, e probabilmente per sviluppare il debugger la conoscenza dell'assembly neanche serve; ma per sviluppare compilatore e assemblatore può servire conoscere l'assembly del processore solo perché si tratta di programmi che ne devono produrre.
è un linguaggio che mappa uno a uno [...] NO!! :Prrr: :Prrr: :Prrr:
questa è una storia trita e ritrita :D
i mnemonics dell'assembly della (suppongo) stragrande maggioranza dei processori non è un mapping 1:1 :O
vedi per esempio sui manuali Intel come si codifica l'istruzione MOV :D
jappilas
25-02-2007, 11:53
al giorno d'oggi l'ottimizzazione manuale del codice non è più possibile: se qualcuno riesce veramente a scrivere codice assembly che richiede meno cicli di clock di quello generato da un buon compilatore (ammesso che sia possibile...) allora è un fesso perché impiega N volte il tempo-uomo necessario a scrivere direttamente in C, C++ o nel linguaggio d'alto livello quale che sia. con N grande a piacere e velocemente divergente. :Din realtà anche se non sono in grado di spiegarlo come te, per quanto mi riguarda lo so
quando scrivevo pensavo all' ottimizzazione di specifiche routine di calcolo o di i/o aggiunte poi come assembly inline in progetti realizzati in linguaggi di alto livello (ho davanti il codice di VirtualDub, C++ con inline assembly ... :O
discorso simile circa la ristrettezza di risorse: non è assolutamente necessario programmare in assembly quando si vuole produrre un eseguibile dalle dimensioni ridotte. sono solo necessarie alcune accortezze nel settaggio delle opzioni sia del compilatore che del linker.... e al caso di applicazioni (sempre più rare anche nel settore embedded in effetti) ove proprio non ci si può permettere quel pur minimo overhead dato dall' occupazione del runtime di un linguaggio di alto livello...
compilatori assemblatori e debuggers di per se' non sono scritti in assembly, se non in fase molto primordiale, l' ho già detto, non mi spiego bene
stavo appunto pensando alla fase di realizzazione iniziale di un compilatore, o di un compilatore per una nuova ISA ... :O
NO!! :Prrr: :Prrr: :Prrr:
questa è una storia trita e ritrita :D
i mnemonics dell'assembly della (suppongo) stragrande maggioranza dei processori non è un mapping 1:1 :Oin pratica da un unico menmonic (*) un compilatore potrebbe produrre un numero variabile di istruzioni ?
(* nota: io intendo mnemonic il codice simbolico di un' istruzione in un formato di parametri, quindi uno tra gli n che si possono avere per quella istruzione - che sarà in effetti una famiglia di opcode - e non si ha nulla a che vedere con la opcode redundancy, nè con la lunghezza in bit variabile della singola istruzione x86)
questo vorrebbe dire disaccoppiare il set di istruzioni implementato a livello binario e di cpu decoder e quello a livello di programmazione assembly: a che scopo e su quale architettura si farebbe qualcosa del genere?
vedi per esempio sui manuali Intel come si codifica l'istruzione MOV :Dah le MOV e CMOVxx ... :D
sul manuale intel , volume 2a pagina 3-591/592 ci sono una ventina di possibili opcode diversi per la sola istruzione MOV,
del tipo
Opcode Instruction 64-Bit Mode Compat/Legay Mode Description
88 /r MOV r/m8,r8 Valid Valid Move r8 to r/m8.
REX + 88 /r MOV r/m8***, *** Valid N.E. Move r8 to r/m8.
89 /r MOV r/m16,r16 Valid Valid Move r16 to r/m16.
89 /r MOV r/m32,r32 Valid Valid Move r32 to r/m32.
REX.W + 89 /r MOV r/m64,r64 Valid N.E. Move r64 to r/m64.
8A /r MOV r8,r/m8 Valid Valid Move r/m8 to r8.
REX + 8A /r MOV r8***,r/m8*** Valid N.E. Move r/m8 to r8.
8B /r MOV r16,r/m16 Valid Valid Move r/m16 to r16.
8B /r MOV r32,r/m32 Valid Valid Move r/m32 to r32.
REX.W + 8B /r MOV r64,r/m64 Valid N.E. Move r/m64 to r64.
8C /r MOV r/m16,Sreg** Valid Valid Move segment register to r/m16.
.... e molti di più da pagina 3-116 per le varie move condizionali ... ma :
che le istruzioni del set x86 siano a lunghezza variabile,
che la MOV sia una delle istruzioni più complesse della ISA x86 e più complesse anche in assoluto,
che si debba sapere quali operazioni compia, al fine di crearne un' implementazione più efficiente via SW (bypass, abbinato a assembly inline nel programma) o in un processore compatibile, o in un processore (magari lo stesso ) che la emuli scomponendola in operazioni più semplici e atomiche (a proposito, cercando MOV sono incappato in un brevetto per l' implementazione della variante condizionale in processori con esecuzione out of order),
sono discorsi a latere, che non dovrebbero inficiare il numero di opcode emessi dal compilatore per una singola istruzione e il fatto che ognuno di essi sia un codice atomicamente identificabile e trattabile dal decoder del processore
Digital_Style
25-02-2007, 13:15
scusate se mi intrometto ma non ho capito un tubo!!mi sembra arabo...cavolo se non capisco queste cose forse vuol dire ke non sono portato per la prgorammazione e/o computer e informatica in generale.
@jappilas:ho letto post in questa sezione di persone ke hanno inizato tardi, molto tardi, ma dopo anni di esperienza lavoravano con persone che aveva il doppio degli anni di esperienza alle spalle.cioè se uno capisce il ragionamento e ha delle basi solide può arrivare dove vuole.sempre imho logicamente
scusate se mi intrometto ma non ho capito un tubo!!mi sembra arabo...cavolo se non capisco queste cose forse vuol dire ke non sono portato per la prgorammazione e/o computer e informatica in generale.
Oh non ti preoccupare. Ho programmato per 15 anni e non l'ho capito neanche io :D.
Vai via liscio, sotto coi libri, tutorial, whitepapers e picchia quelli dita sulla tastiera!
jappilas
25-02-2007, 14:17
scusate se mi intrometto ma non ho capito un tubo!!posto che la tabella nel mio post di ieri sera la puoi tranquillamente ignorare (se 71104 mi tirava in ballo la MOV, dovevo citargliela pari pari dal manuale :D) non ti devi scusare ;)
mi sembra arabo...cavolo se non capisco queste cose forse vuol dire ke non sono portato per la prgorammazione e/o computer e informatica in generale.non ti preoccupare... se ti metti a studiare architetture di elaborazione e programmazione, in breve tempo la terminologia ti sembrerà banale (se vuoi posso cmq scrivere un glossarietto, qui o in mesaggio privato ) ;)
l' assembly dal canto suo richiede di pensare in modo "meccanico", ma una volta presa confidenza credo che anche quello non sia nulla di trascendentale...
ho letto post in questa sezione di persone ke hanno inizato tardi, molto tardi, ma dopo anni di esperienza lavoravano con persone che aveva il doppio degli anni di esperienza alle spalle.cioè se uno capisce il ragionamento e ha delle basi solide può arrivare dove vuole.sempre imho logicamentema quello senza dubbio...
quello che dicevo nei post precedenti era la motivazione per cui secondo me, potendo decidere, sia sempre meglio cominciare prima (dovunque tu vada, puoi sempre trovare quello che ha iniziato prima di te ad appassionarsi a qualcosa, a prescidere dall' informatica, e quindi sia un passo avanti a te in quell' ambito ... io per primo me ho dovuto fare i conti con questo -entrando in università- e alla fine accettarlo senza permettere che inficiasse la mia autostima e il mio modo di pensare)
Oh non ti preoccupare. Ho programmato per 15 anni e non l'ho capito neanche io :D.ah bene... :D
Vai via liscio, sotto coi libri, tutorial, whitepapers e picchia quelli dita sulla tastiera!ma non picchiare con troppa forza, altrimenti dovrai cambiare spesso tastiera :O
Digital_Style
25-02-2007, 17:03
@PGI-bis:cosa è questo whitepaper(carta bianca?!?)
@jappilas:il glossarietto se lo puoi fare credo sia meglio metterlo qua nel post cosi è disponibile per tutti!!
r
iguardo il discorso della motivazione hai ragione.purtroppo io ho dovuto scoprirla solo ora la programmazione(sfortunatamente)ma ritorniamo sempre a quello ke ho detto prima:se uno ha le basi può arrivare dove vuole.cioè capendo il funzionamento e sapendo ragionare correttamente si fila liscio come l'olio!è la stessa cosa che quando sai un linguaggio viene più facile imparare gli altri!è come se uno laureato in matematica che ha anni di esperienza alla fine sia allo stesso livello di preparazione di uno che ha cominciato a farla a 30anni(sempre che quest'ultimo abbia studiato bene e abbia le basi giuste)!o mi sbaglio?certo cominciando presto è meglio ma uno che parte tardi e studia si impegna al massimo e si costruisce delle basi solide poi non è un problema costruire una casa come chiunque altro su questa base!
l'unica differenza credo sia nel fatto che uno partendo prima non deve fare "meno" sacrifici e fare le cose con più calma rispetto ad uno che deve recuperare il tempo perso, ma per amore questo e altro!giusto?
Un whitepaper è un ...whitepaper :D Sono pubblicazioni individuali che presentano specifiche soluzioni di carattere tecnico applicabili ad un certo insieme di problemi o esaminano un particolare aspetto di una tecnologia più generale.
jappilas
25-02-2007, 17:58
il glossarietto se lo puoi fare credo sia meglio metterlo qua nel post cosi è disponibile per tutti!! non sono così sicuro che gli altri ne abbiano bisogno, sono tutti programmatori navigati che "danno la paga" anche a me... :D
comunque lo scrivo...
riguardo il discorso della motivazione hai ragione.purtroppo io ho dovuto scoprirla solo ora la programmazione(sfortunatamente)ma ritorniamo sempre a quello ke ho detto prima:se uno ha le basi può arrivare dove vuole.cioè capendo il funzionamento e sapendo ragionare correttamente si fila liscio come l'olio!
...giusto?credo di sì :) alla fine, il motivo per cui mi impuntavo era dato dalla mia esperienza personale in base a cui mi sentivo di metterti in guardia ;)
quando scrivevo pensavo all' ottimizzazione di specifiche routine di calcolo o di i/o aggiunte poi come assembly inline in progetti realizzati in linguaggi di alto livello (ho davanti il codice di VirtualDub, C++ con inline assembly ... :O ... :|
ipotizzo tre possibilità:
1) VirtualDub è talmente vecchio che i compilatori di allora non erano scafati come oggi, e può pure essere visto che VD lo conosco da na vita :p
2) hanno voluto utilizzare istruzioni particolari, tipo MMX, SSE... di quelle che manco sai se ci stanno sul processore in uso :D ancora una volta, il tutto va rapportato ai tempi: allora magari DirectShow non era troppo evoluto :) l'alternativa poi erano quelle schifezze di librerie multimediali di Win32 (http://msdn2.microsoft.com/en-us/library/ms713771.aspx) :Puke:
3) il team è composto da idioti :read: può pure essere eh! :O
... e al caso di applicazioni (sempre più rare anche nel settore embedded in effetti) ove proprio non ci si può permettere quel pur minimo overhead dato dall' occupazione del runtime di un linguaggio di alto livello... a parte che oggi i cellulari hanno pure la JVM :Prrr: comunque non è un problema del C e nemmeno del C++, perlomeno con qualsiasi compilatore che io conosca: basta che nelle opzioni di linking ridefinisci l'entry point evitando di settare quello delle librerie predefinite. vuoi che ti produca l'hello world più piccolo che riesco a fare?? :D
in pratica da un unico menmonic (*) un compilatore potrebbe produrre un numero variabile di istruzioni ? ehm, no... *arrossisce*
ho frainteso :D
chiaramente una singola istruzione assembly si dovrebbe supporre essere sempre atomica e quindi codificabile in un unico opcode :D
però uno stesso mnemonic può tranquillamente venir codificato con un opcode o con un altro a seconda della situazione :O
per questo ti rimandavo alla tabella dei vari opcodes dell'istruzione MOV :read:
poi per completezza diciamo che esistono anche degli assemblatori molto evoluti che oltre ai mnemonics dell'assembly del processore definiscono anche degli statements che permettono di svolgere rapidamente compiti comuni :O
il MASM per esempio ha una sorta di IF, e mi sa che ha pure i cicli.
il MASM per esempio ha una sorta di IF, e mi sa che ha pure i cicli. oppure può emularli: supponiamo che un programmatore non riesca a capire come mai il suo intricatissimo programma in assembly non funziona; alla lunga si incazzerà talmente tanto da sembrare una donna al primo giorno di m :rotfl: :rotfl: :rotfl:
ok, era pessima :|
scusate :ops2:
Ma quegli if dipendono dall'assemblatore e non sono definiti nel linguaggio assembly ;) Sono una specie di macro...
scusate se mi intrometto ma non ho capito un tubo!!mi sembra arabo...cavolo se non capisco queste cose forse vuol dire ke non sono portato per la prgorammazione e/o computer e informatica in generale. basta così :O
anziché stare lì a piangerti addosso senza motivo alcuno, comincia a studiare qualsiasi cosa (come un linguaggio di programmazione, tanto per cominciare...) e vedrai che già ti sembrerà di capirne molto di più :O :O :O
studia un'altra cosa e ne capirai moolto di più (con due O)
studiane un'altra e diventerà mooolto di più (con tre)
continua così e finirai per capirne mo{N volte}olto di più :read: :read: :read:
Digital_Style
26-02-2007, 13:12
@71104:su questo avete ragione tutti, infatti ho già cominciato a studiare python da questa guida http://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm presa in un post di un altor utente e sono arrivato (in poco tempo!)al quinto capitolo!sto cercando di capire il paragrafo 5.1 e la funzione \linebreak raw_imput dato che non c'è nessun esempio che la esponga.
@@71104:per curiosità perchè non posti il codice del più piccolo hello world che sai fare?!
il mio più piccolo hello world è questo:
print "Hello World!!"
(in python logicamente!!)
Scommetto un soldo (virtuale, non esigibile) che io riesco a farlo più corto di tutti :Prrr:
RaouL_BennetH
26-02-2007, 14:32
Scommetto un soldo (virtuale, non esigibile) che io riesco a farlo più corto di tutti :Prrr:
dimostralo allora :O
:D
Scommetto un soldo (virtuale, non esigibile) che io riesco a farlo più corto di tutti :Prrr:
Io lo faccio più corto e portabile !!!
echo Hello World !!!
:D
Ancora pià corto!
HelloWorld Language Specifications, v. 0.1 rev. a
Se il file sorgente non esiste, l'eseguibile stampa
sullo standard output la stringa: "Hello World!"
Ho anche scritto il compilatore per Windows:
hwc UnFileCheNonEsiste.hw
che, in perfetto accordo con le specifiche del linguaggio, genera l'eseguibile
UnFileCheNonEsiste.exe
il quale stampa sullo standard output la stringa:
Hello World!
E mo' provate a farlo più corto! :D
Digital_Style
26-02-2007, 15:57
mhhh....
print "Hello World!!"
avete frainteso tutti :read:
io parlavo di dimensioni ridotte a livello di eseguibile, i sorgenti possono essere anche da 4 mega :Prrr:
il codice dell'hello world più piccolo che riesco a produrre è normalissimo:
int main(void) {
printf("Hello world!");
return 0;
}
ma chi, da questo codice, riesce a generare l'eseguibile più piccolo? :Prrr:
ora faccio il mio...
EDIT - ve lo faccio anche con portabilità Unicode, così si può compilare con Unicode che su Windows è più performante :Prrr:
#include <stdlib.h>
#include <stdio.h>
#include <tchar.h>
int _tmain(void) {
_tprintf(_T("Hello world!\n"));
_gettchar();
return 0;
}
EDIT2 - dimensioni dell'eseguibile di partenza: 40 kb. strippando le informazioni di debug: 6 kb. ora vediamo a quanto lo faccio arrivare :Prrr:
EDIT3 - senza il manifest scende a 5 kb, però non funziona :D
non funziona perché usa la DLL del runtime di Visual C++ (printf e getchar...), il cui path però era scritto nel manifest :O
di conseguenza... tolgo l'uso della printf e della getchar, che così tolgo anche due bei freschi di codice :read:
EDIT4 -
#include <windows.h>
INT main(VOID)
{
CONST TCHAR pszMessage[] = TEXT("Hello world!\n");
HANDLE hStdIn, hStdOut;
DWORD dwDummy;
hStdIn = GetStdHandle(STD_INPUT_HANDLE);
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
WriteConsole(hStdOut, pszMessage, sizeof(pszMessage) / sizeof(TCHAR) - 1, &dwDummy, NULL);
ReadConsole(hStdIn, &dwDummy, 1, &dwDummy, NULL);
return 0;
}
2 KB!! :yeah: :yeah: :yeah:
Digital_Style
27-02-2007, 12:55
emh...non c'ho capito NIENTE!!!!portabilità Unicode, manifest,il codice che hai scritto...proprio niente!!
E' normale...non ti preoccupare ;) Sono cose abbastanza avanzate...
mindwings
27-02-2007, 13:20
emh...non c'ho capito NIENTE!!!!portabilità Unicode, manifest,il codice che hai scritto...proprio niente!!
una gara a chi ce l'ha più lungo...
abbastanza inutile...:)
emh...non c'ho capito NIENTE!!!!portabilità Unicode, manifest,il codice che hai scritto...proprio niente!!
Oh non ti preoccupare. Ho programmato per 15 anni e non l'ho capito neanche io :D (e due).
Qualcuno riesce ad usare meno caratteri per stampare su schermo "hello world"?? :D :D
++++++++++
[
>+++++++>++++++++++>+++>+<<<<-
]
>++.
>+.
+++++++.
.
+++.
>++.
<<+++++++++++++++.
>.
+++.
------.
--------.
>+.
>.
ps: linuguaggio usato: Brainfuck
#include "iostream"
using namespace std;
int main()
{
cout<<"Hello World";
cin.get();
return 0;
}
Lo stampa in console comunque è sempre nello schermo :D
----EDIT----
Ops,non avevo letto il linguaggio scritto sotto:D :muro:
Sorry,ho provato a toglierlo ma non c'è l'opzione "cancella mess":cry:
Ps:hai copiato e incollato il codice da wikipedia? :D
... :|
a parte che oggi i cellulari hanno pure la JVM
Vero, ma la parte che gestisce la fonia non e' sicuramente scritta in Java. Nei sistemi embedded di questo tipo hai spesso dei vincoli temporali non trascurabili. Inoltre, anche se ormai i cellulari hanno decine di megabyte di memoria, lo stesso non si puo' dire di altre periferiche come videoregistratori o lettori mp3 portatili. Trattandosi di oggetti che costano 50-100 Euro e che vengono venduti a carrettate, anche uno o due euro risparmiati sui componenti costituiscono un guadagno non banale per il produttore.
[/QUOTE]
avete frainteso tutti :read:
io parlavo di dimensioni ridotte a livello di eseguibile, i sorgenti possono essere anche da 4 mega :Prrr:
#!/usr/bin/python
print "Hello World!"
Nel mio caso sorgente ed eseguibile coincidono (basta un bel chmod +x) per cui vinco io e non se ne parli piu': 39 byte
:doh:
(sorry, non mi sembra fosse specificato eseguibile binario :p )
edit: finche' perlomeno non arriva qualcuno che me lo scrive in perl e risparmia
a - 2 caratteri sul nome dell'eseguibile :D
b - mi accorcia la keyword con il classico rumore di fondo del perl :P
una gara a chi ce l'ha più lungo...
abbastanza inutile...:) pretenderesti con questa frase lapidaria di essere tu ad avercelo più lungo? :O
segui la discussione dall'inizio: la "gara" è saltata fuori a dimostrazione del fatto che quell'hello world poteva anche non essere scritto in assembly per essere il più possibile piccolo e performante. è bastato scriverlo in C, con interazione diretta con le API Win32, e con qualche accortezza nel compilarlo. tutto questo per dire che oggi usare direttamente l'assembly non serve più a nulla (se non in situazioni di frequenza praticamente nulla relative alla scrittura di kernels -- neanche di drivers, nota...)
PS: e intanto ce l'ho lungo :Prrr: :Prrr: :Prrr:
emh...non c'ho capito NIENTE!!!!portabilità Unicode, manifest,il codice che hai scritto...proprio niente!! ribadisco post #106 :P
lascia perdere il mio hello world, era una discorso tra me e jappilas ^^
Digital_Style
27-02-2007, 18:00
pgi-bis tu è da 15anni che programmi e sei cosi tranquillo e io mi preoccupo che non lo capisco!!
tornando a qualche post fa vorrei chidervi due cose:
1)ho capito che la funzione raw_imput serve per inserire un impute, in questo caso stringhe infatti se si inserisce un numero darà errore invece la funzione input serve per inserire un intero e se si inserisce una stringa da errore.la funziona che non capisco è \linebraek raw_imput.cioè l'ho capita, ma non essendoci nessun esempio su come si usa non so come usarla
2)nel capitolo 4.8(sempre della guida linkata sopra)ho studiato l'istruzione "return".ho capito come funzione(anche se mi avrebbe fatto comodo avere qualche esempio in più), ma nel capitolo 5.1 il funzionamento mi sembra diverso, non come l'ho studiato io.ad esempio in questo pezzo di codice
import math
def AreaDelCerchio(Raggio):
temp = math.pi * Raggio**2
return temp
perchè è stato inserito return?se l'area del cerchio è stata calcolata che motivo c'è di ritornare all'inizio della funzione?oltretutto perchè math.pi * raggio**2 è una variabile temporanea?come ultima cosa vorrei chiedere se è necessario mettere lo spazio prima dell'asterisco o se si può scrivere anche senza.cioè se invece di scrivere come sopra scrivessi
import math
def AreaDelCerchio(Raggio):
temp = math.pi * Raggio **2
return temp
sarebbe la stessa cosa?
repne scasb
27-02-2007, 18:09
pretenderesti con questa frase lapidaria di essere tu ad avercelo più lungo? :O
segui la discussione dall'inizio: la "gara" è saltata fuori a dimostrazione del fatto che quell'hello world poteva anche non essere scritto in assembly per essere il più possibile piccolo e performante. è bastato scriverlo in C, con interazione diretta con le API Win32, e con qualche accortezza nel compilarlo. tutto questo per dire che oggi usare direttamente l'assembly non serve più a nulla (se non in situazioni di frequenza praticamente nulla relative alla scrittura di kernels -- neanche di drivers, nota...)
PS: e intanto ce l'ho lungo :Prrr: :Prrr: :Prrr:
Non posso resistere:
Hello world in ASM: 21 byte (rinominare .ZIP in .EXE/.COM).
Non posso resistere:
Hello world in ASM: 21 byte (rinominare .ZIP in .EXE/.COM). se volevi toglierci gli headers e farlo "pure binary" allora potevi scriverlo sempre in C e convertirlo poi con objcopy :read:
confesso di aver fatto or ora qualche vano tentativo di uso di objcopy (non l'ho mai usato) :fagiano:
EDIT - a, ehm... fesso che sono :fagiano:
ovviamente, non si può convertire in pure binary :D
poiché per averlo compilato in quel formato non puoi aver usato API Win32, e di conseguenza hai usato una int del BIOS, cosa che (AFAIK) non su tutte le piattaforme Windows è emulata :Prrr:
in sostanza il mio vince di portabilità :O
a meno che non mi freghi l'"AFAIK" :|
repne scasb
27-02-2007, 18:44
e di conseguenza hai usato una int del BIOS
Nessuna INT del BIOS, giuro.
Digital_Style
27-02-2007, 19:18
ribadisco post #106 :P
lascia perdere il mio hello world, era una discorso tra me e jappilas ^^
ma prima o poi spero di capire!il codice scritto fino ad ora da 71104 non l'ho cpaito niente, come gli altri del resto!!
pgi-bis tu è da 15anni che programmi e sei cosi tranquillo e io mi preoccupo che non lo capisco!!
tornando a qualche post fa vorrei chidervi due cose:
1)ho capito che la funzione raw_imput serve per inserire un impute, in questo caso stringhe infatti se si inserisce un numero darà errore invece la funzione input serve per inserire un intero e se si inserisce una stringa da errore.la funziona che non capisco è \linebraek raw_imput.cioè l'ho capita, ma non essendoci nessun esempio su come si usa non so come usarla
2)nel capitolo 4.8(sempre della guida linkata sopra)ho studiato l'istruzione "return".ho capito come funzione(anche se mi avrebbe fatto comodo avere qualche esempio in più), ma nel capitolo 5.1 il funzionamento mi sembra diverso, non come l'ho studiato io.ad esempio in questo pezzo di codice
import math
def AreaDelCerchio(Raggio):
temp = math.pi * Raggio**2
return temp
perchè è stato inserito return?se l'area del cerchio è stata calcolata che motivo c'è di ritornare all'inizio della funzione?oltretutto perchè math.pi * raggio**2 è una variabile temporanea?come ultima cosa vorrei chiedere se è necessario mettere lo spazio prima dell'asterisco o se si può scrivere anche senza.cioè se invece di scrivere come sopra scrivessi
import math
def AreaDelCerchio(Raggio):
temp = math.pi * Raggio **2
return temp
sarebbe la stessa cosa?
attendo risposta
p.s. io volevo in futuro anche studiare C per programmare su psp(in un futuro prossimo, molto prossimo dato che sto studiando python!)ma ho scoperto ke si può programmare su psp anche con python e anche su cel symbian!!logicamente è diverso quasi tutto ma è già una cosa!
Nessuna INT del BIOS, giuro. se non hai usato il BIOS penso che tu possa aver fatto solo peggio dal punto di vista della portabilità: int del DOS? il kernel NT per definizione è progettato senza la compatibilità con MS-DOS come primary goal; scrittura diretta sulla memoria video? potrebbero esistere schede video che non supportano le memory ranges che hai usato tu, e comunque ritorniamo nuovamente sul discorso della modalità virtuale x86.
a sto punto però sarei anche curioso di vedere il sorgente :P
EDIT: l'ho disassemblato; hai usato la int 21h :Prrr:
domanda: esiste ancora su Windows XP 64? (io non lo so eh)
Avanti signori, se c'è qualcuno che conosce Python, risponda a Digital_Style. Animo, animo!
repne scasb
27-02-2007, 20:03
potrebbero esistere schede video che non supportano le memory ranges che hai usato tu
Mai vista, una scheda video CGA o superiore che non utilizzi l'intevallo 0b800:0000-0b800:7FFF in modalita' testo. Devi tornare indietro di oltre 20 anni fino ad una MDA/Hercules...
domanda: esiste ancora su Windows XP 64? (io non lo so eh)
No, non c'e' piu'. Puoi sempre installare questo pero': http://dosbox.sourceforge.net/news.php?show_news=1
(Non l'ho mai provato con WinXP64).
jappilas
27-02-2007, 20:35
ad esempio in questo pezzo di codice
.....
perchè è stato inserito return?se l'area del cerchio è stata calcolata che motivo c'è di ritornare all'inizio della funzione?perchè (o meglio, proprio perchè) è una funzione... che dopo essere stata definita una volta, verrà richiamata in altri punti del programma passandogli di volta in volta un valore, o un espressione riconducibile a un valore, come argomento - nè più nè meno di quando calcoli la f(x) per trovare la y
in un' operazione di assegnazione tipo areaCalcolata = AreaDelCerchio( 25 ) <- valore di esempio,
è necessario che il contenuto del "membro destro" dell' espressione sia risolvibile a un valore definito, il nome di una funzione non è un valore unico e definito, quindi l' esecuzione del programma, una volta giunta alla valutazione del secondo membro dell' assegnazione, "entra" nella funzione e la esegue - quando ne esce, cioè appunto "ritorna" dalla funzione al punto in cui è stata invocata, al posto dell' espressione viene sostituito il valore che la funzione ha calcolato e restituito (tramite quel comando return, che sta sia per "ritorna" che per "restituisci") - questo discorso, molto semplificato, prescinde dal linguaggio
oltretutto perchè math.pi * raggio**2 è una variabile temporanea?ipotizzo, per chiarezza :O
in altri linguaggi è fattibile un corpo di funzione di questo tipo, penso in python sia lo stesso
funzione1(argomento)
{
return funzione2(funzione3(argomento));
}
>>EDIT: scusa , avevo capito "perchè è stata usata una variabile temporanea" :p
vedi la risposta di marco.r
come ultima cosa vorrei chiedere se è necessario mettere lo spazio prima dell'asterisco in quasi tutti i linguaggi (che io sappia, tutti tranne uno che adesso non ci serve :D) i caratteri cosiddetti "whitespace" (quelli non visibili, spazio, tab...) dovrebbero essere ignorati dal compilatore, quindi la presenza di spazi e l' indentazione (il rientro a destra di parti di codice tra {} o begin-end) dipende solo dalle preferenze o linee guida a cui il programmatore si attiene ma non modifica funzionalemnte il codice :O
Mai vista, una scheda video CGA o superiore che non utilizzi l'intevallo 0b800:0000-0b800:7FFF in modalita' testo. Devi tornare indietro di oltre 20 anni fino ad una MDA/Hercules... potrebbero farla :Prrr: magari potrebbe trattarsi di hardware proprietario che viene utilizzato da una sola azienda e solo con software che dimostra di non avere problemi con quella specifica mancanza :O
ed inoltre penso che raramente le aziende rendano pubbliche le specifiche hardware delle schede grafiche: analizzando i drivers puoi anche scoprire che quella scheda grafica utilizza di fatto quella risorsa hardware, ma che ne sai che la usa ancora secondo gli standard? per dire, magari in quell'area di memoria qualche moderna scheda grafica non ci memorizza più il testo della console. non lavoro ne' nel settore dell'hardware grafico ne' in quello del software grafico accelerato, ma come scenario mi pare realistico anche se forse improbabile.
^TiGeRShArK^
27-02-2007, 23:11
Non posso resistere:
Hello world in ASM: 21 byte (rinominare .ZIP in .EXE/.COM).
spettacolo! :D
e x completezza eccovi anke il dump dell'eseguibile di repne :O
B4 09 BA 08 01 CD 21 C3 48 65 6C 6C 6F 20 77 6F 72
6C 64 21 24
´ ºÍ!ÃHello world!$
direi ke x ora ce l'ha + lungo lei :O (e mi preoccuperei anke dato ke è una donna e si suppone gli manki quell'attributo particolare che dovrebbe essere + lungo :Prrr: )
:D
Ammazza che francesismo!
Iscrizioni aperte per la gara di rutti delle 2:30.
jappilas
27-02-2007, 23:26
direi ke x ora ce l'ha + lungo lei :O (e mi preoccuperei .. )
:Dladdove il discorso resti metaforico, la parità dei sessi sancisce che anche una donna possa servirsi della stessa locuzione senza insorgenza di ambiguità :O
jappilas
27-02-2007, 23:28
Ammazza che francesismo!
Iscrizioni aperte per la gara di rutti delle 2:30.
tra questo e il post di tiger, il thread è a serio rischio di degenerazione.. :p :D
pgi-bis tu è da 15anni che programmi e sei cosi tranquillo e io mi preoccupo che non lo capisco!!
2)nel capitolo 4.8(sempre della guida linkata sopra)ho studiato l'istruzione "return".ho capito come funzione(anche se mi avrebbe fatto comodo avere qualche esempio in più), ma nel capitolo 5.1 il funzionamento mi sembra diverso, non come l'ho studiato io.ad esempio in questo pezzo di codice
import math
def AreaDelCerchio(Raggio):
temp = math.pi * Raggio**2
return temp
perchè è stato inserito return?se l'area del cerchio è stata calcolata che motivo c'è di ritornare all'inizio della funzione?
Non so se intendevi diversamente, ma con return non ritorno all'inizio della funzione, ma al punto in cui l'hai usata, ad esempio nel codice
def areaDelCerchio(raggio):
temp = math.pi * Raggio**2
return temp
print "Area del cerchio unitario:"
print areaDelCerchio(1.0)
In questo caso quando ritorni temp, passi il valore al punto in cui hai scritto print areaDelCerchio(1.0)[/code], col risultato appunto che stampi il valore dell'area
oltretutto perchè math.pi * raggio**2 è una variabile temporanea?
E' temporanea perche' una volta che "esci" dalal funzione (nell'esempio precedente torni alla seconda [i]print quella variabile sparisce.
come ultima cosa vorrei chiedere se è necessario mettere lo spazio prima dell'asterisco o se si può scrivere anche senza.cioè se invece di scrivere come sopra scrivessi
import math
def AreaDelCerchio(Raggio):
temp = math.pi * Raggio **2
return temp
sarebbe la stessa cosa?
Si'.
...senza indorgenza di ambiguità :O
tra questo e il post di tiger, il thread è a serio rischio di degenerazione..
Speriamo solo che non indorgano ambiguità.
(:D:D Noi H-Dimenticanti coviamo sempre vendetta :D:D)
Ps:hai copiato e incollato il codice da wikipedia? :D
Non è vero!!! Il codice di wiki ha anche dei commenti!!:D :D :D
Per la gara di rutti se volete vi porto un mio amico che recita il primo canto della divina commedia in un solo fiato :sofico:
jappilas
27-02-2007, 23:57
Speriamo solo che non indorgano ambiguità.di solito le ambiguità insorgono, ma se a scrivere è uno che per non guardare la tastiera sbaglia sistematicamente tasto, allora indorgono :O :asd:
(:D:D Noi H-Dimenticanti coviamo sempre vendetta :D:D)/me inizia a preoccuparsi... :p
in quasi tutti i linguaggi (che io sappia, tutti tranne uno che adesso non ci serve :D) i caratteri cosiddetti "whitespace" (quelli non visibili, spazio, tab...)
E' ancora abbastanza usato e tra l'altro ha alcune cosette interessanti non disponibili in linguaggi "moderni" (multi-methods ad esempio). E poi vuoi mettere la soddisfazione di poter chiamare una variabile "x+y" ? :D
edit: dimenticavo: c'e' anche il Dylan :P
tra questo e il post di tiger, il thread è a serio rischio di degenerazione.. :p :D
Piu' che altro si sta allungando a dismisura, un altro po' e a vincere e' il thread stesso :D
Digital_Style
28-02-2007, 10:04
allora mettiamo un pò di chiarezza:
Non so se intendevi diversamente, ma con return non ritorno all'inizio della funzione, ma al punto in cui l'hai usata, ad esempio nel codice
nel caso della circonferenza dove tornerei?
In questo caso quando ritorni temp, passi il valore al punto in cui hai scritto [i]print areaDelCerchio(1.0)[/code], col risultato appunto che stampi il valore dell'area
non ho capito sinceramente
E' temporanea perche' una volta che "esci" dalal funzione (nell'esempio precedente torni alla seconda print quella variabile sparisce.
se è per questo crtedo che qualsiasi variabile finita la funzione sparisce.o no?
dump dell'eseguibile
cosa è? e come si fa?
perchè (o meglio, proprio perchè) è una funzione... che dopo essere stata definita una volta, verrà richiamata in altri punti del programma passandogli di volta in volta un valore, o un espressione riconducibile a un valore, come argomento - nè più nè meno di quando calcoli la f(x) per trovare la y
in un' operazione di assegnazione tipo areaCalcolata = AreaDelCerchio( 25 ) <- valore di esempio,
è necessario che il contenuto del "membro destro" dell' espressione sia risolvibile a un valore definito, il nome di una funzione non è un valore unico e definito, quindi l' esecuzione del programma, una volta giunta alla valutazione del secondo membro dell' assegnazione, "entra" nella funzione e la esegue - quando ne esce, cioè appunto "ritorna" dalla funzione al punto in cui è stata invocata, al posto dell' espressione viene sostituito il valore che la funzione ha calcolato e restituito (tramite quel comando return, che sta sia per "ritorna" che per "restituisci") - questo discorso, molto semplificato, prescinde dal linguaggio
non credo di aver capito
funzione1(argomento)
{
return funzione2(funzione3(argomento));
}
che significa?
l'ho disassemblato; hai usato la int 21h
come lo hai disassemblato?
in quasi tutti i linguaggi (che io sappia, tutti tranne uno che adesso non ci serve ) i caratteri cosiddetti "whitespace" (quelli non visibili, spazio, tab...) dovrebbero essere ignorati dal compilatore, quindi la presenza di spazi e l' indentazione (il rientro a destra di parti di codice tra {} o begin-end) dipende solo dalle preferenze o linee guida a cui il programmatore si attiene ma non modifica funzionalemnte il codice
in python l'indentazione lo modifica eccome il codice!non serve solo per leggibilità, ma anche per definire la priorità delle istruzioni
se scrivessi:
if x<y
print x, "è minore di", y
else
print x, "è maggiore di", y
e diverso dal scrivere
if x<y
print x, "è minore di", y
else
print x, "è maggiore di", y
per quello ke ho studiato credo sia cosi.
comunque sicuramente vi starete stancando con tutte queste domande e penserete che la programmazione non è cosa per me.bè sinceramente sto cominciando a pensarlo anche io...
comunque sicuramente vi starete stancando con tutte queste domande e penserete che la programmazione non è cosa per me.bè sinceramente sto cominciando a pensarlo anche io...
Sei nella fase sconforto. Normalissima. Stringi i denti e insisti :boxe: ! Prova a guardare anche un altro tutorial. Confronta i capitoli dove parlano degli stessi argomenti, vedi cosa ne pensano più persone: magari uno dice le stesse cose ma in un modo che per te è più chiaro (capita spesso).
Quanto allo stancarsi di spiegare, è facile insegnare a chi già sa. La vera sfida è insegnare a chi non sa.
RagingBull
28-02-2007, 11:13
salve a tutti.sono un ragazzo di 19 anni ma che ha da poco ha cominciato a scoprire il fantastico mondo della programmazione.la cosa che vorrei chiedervi, dato che fra di voi immagino ci sono molti esperti, è questa:19 anni sono troppi per iniziare?
magari vi potreste chiedere il perchè di questa domanda.semplice:leggendo riviste, andando su siti specializzati e leggendo molte news del mondo informatico ho visto che ci sono molti ragazzi, bambini direi, di 6/7 anni in su che già cominciano a conoscere il mondo della programmazione, anche semplicemente cominciando in dos o basic.per non parlare di ragazzi di 10/11 anni in su che già sanno programmare e si creano i propri programmi o programmini.io, che il mio sogno sarebbe diventare un affermato programmatore e ho comprato libri su libri, ormai cosa potrei combinare a questa età?
ho votato un semplicissimo NO......io ho cominciato a 18 anni (ora sono a quota 24) per pura curiosità...vedendo all'opera il fratello della mia ragazza.
essendo già da tempo appassionato di computer mi sono detto: "perchè lui lo deve saper fare e io no?"
così ho iniziato a programmare prima in pascal. la cosa mi ha preso talmente tanto che mi sono buttato su altri linguaggi. e attualmente sono iscritto alla facoltà di informatica dove sto continuando a fare esperienza.
ancora oggi ho delle lacune...ma chi non ne ha? ;)
in conclusione posso dirti....vai tranquillo...se hai passione per qualcosa...nel caso specifico per la programmazione...riesci ad arrivare ovunque. non ti lasciare intimidire dai presunti geni! come ho letto, giustamente, in alcuni post del topic....molte cose che oggi diamo per scontate sono state fatte da persone non proprio giovani come me e te.
però scusate ma il sondaggio è di difficile risposta: io sono convinto di "no" , però l'ultima risposta è un pò troppo "generica"
ciao e auguri per la tua nuova passione
Digital_Style
28-02-2007, 12:21
grazie ragingbull!e benvenuto nel thread!!
pgi-bis sei il mio idolo!UN AUTOGRAFO!!!!!!:read:
p.s. ehm....dove trovo un altro tutorial fatto bene in italiano!?!
grazie ragingbull!e benvenuto nel thread!!
pgi-bis sei il mio idolo!UN AUTOGRAFO!!!!!!:read:
p.s. ehm....dove trovo un altro tutorial fatto bene in italiano!?!
Meglio se resti su dvdjohn :D
Prova a scartabellare questo sito:
http://www.python.it/
Sembra che abbia un bel po' di tutorial, per tutte le età:
http://www.python.it/doc/newbie.html
Digital_Style
28-02-2007, 18:52
il tuo autografo lo voglio sempre!!
spettacolo! :D sentimpò tu e repne scasb, se vogliamo giocare a interpretare le regole del contest allora io sono anche capace di farvelo da 13 bytes:
hello world
newline finale incluso. salvalo come .bat ed eseguilo. si, la shell da errore, embè? intanto a stampare stampa :D :D :D
e così vinco definitivamente io :O :Prrr:
@Digital_Style: esiste un assemblatore opensource un po' minimale (perlomeno per quello che lo conosco io) che si chiama NASM e che viene distribuito assieme ad un disassemblatore, NDISASM, ovvero un programma che piglia molto semplicemente un file binario e sputa in output sulla console i suoi bytes in esadecimale con le rispettive traduzioni in mnemonics di assembly x86 (in formato Intel se non erro). credo che smanazzando con le opzioni di NDISASM sia anche possibile disassemblare files eseguibili oltre che "pure binaries" come quello postato da repne scasb. comunque oltre ad NDISASM esistono molti altri disassemblatori più completi, anche con interfaccia grafica, che disassemblano sicuramente anche files eseguibili.
il punto è che a te sta roba non serve: un disassemblatore, nella mia humble opinion (:p), ha ben pochi utilizzi concreti: basta poco a realizzare un programma che inizi ad essere di comprensione più o meno difficile per chi ha a disposizione solamente il disassemblato. ben più utile potrebbe essere invece un decompilatore, ovvero un programma che oltre a leggere il codice macchina dell'eseguibile tenta anche (conoscendo il linguaggio d'alto livello in cui tale eseguibile è stato presumibilmente scritto, tipo C, C++, Pascal, ecc.) di dedurre il codice originario, o un codice che sia semanticamente equivalente, analizzando magari schemi di opcodes comunemente utilizzati dai compilatori per generare codice macchina. i decompilatori funzionano particolarmente bene con linguaggi compilati in bytecode piuttosto che in codice macchina; i linguaggi compilati in bytecode sono quelli i cui binari sono eseguibili virtualmente su qualsiasi piattaforma grazie ad una qualche virtual machine; ovvi esempi: .NET e Java.
repne scasb
01-03-2007, 09:06
sentimpò tu e repne scasb, se vogliamo giocare a interpretare le regole del contest allora io sono anche capace di farvelo da 13 bytes:
hello world
newline finale incluso. salvalo come .bat ed eseguilo. si, la shell da errore, embè? intanto a stampare stampa :D :D :D
e così vinco definitivamente io :O :Prrr:
Ti rode? Certo che ti rode! Quanto sei sollazzante.
sentimpò tu e repne scasb, se vogliamo giocare a interpretare le regole del contest allora io sono anche capace di farvelo da 13 bytes:
hello world
newline finale incluso. salvalo come .bat ed eseguilo. si, la shell da errore, embè? intanto a stampare stampa :D :D :D
e così vinco definitivamente io :O :Prrr:
:old:
echo Hello World
E' anche portabile ;)
Digital_Style
01-03-2007, 13:02
@71104:diciamo ke la tua spiegazione è eccellente ma per me poco comprensibile,per non dire totalmente.....mnemonics,pure binaries,assembly x86 ecc(spero ke non li capisco solo per il momento e non per sempre!)
l'ASM è un linguaggio pure binaries?
jappilas
01-03-2007, 13:47
@71104:diciamo ke la tua spiegazione è eccellente ma per me poco comprensibile,per non dire totalmente.....mnemonics,pure binaries,assembly x86 ecc(spero ke non li capisco solo per il momento e non per sempre!)
l'ASM è un linguaggio pure binaries?ASM = assembly , linguaggio ;)
un programma scritto in assembly non è eseguibile e non è nemmeno binario, perchè sempre testo, solo che le istruzioni sono invece che le print , while, ecctera, di un linguaggio cosiddetto ad alto livello ( all' incirca, "facile per il programmatore"), altre che corrispondono a quelle che la macchina esegue: quelle che la macchina, cioè il processore, esegue sono in linguaggio macchina (diciamo "sequenza di zeri e uni"), quelle in assembly sono espresse dai cosiddetti mnemonici, in pratica abbreviazioni di quello che l' istruzione stessa "fa" e su che genere di operandi (*)
[esempio di assembly](*) repne scasb (non me ne voglia la stimata utente di questo forum :) ) è proprio un esempio di (complessa) istruzione in assembly x86 (vedi dopo): i due mnemonici stanno (se non ricordo male quel che mi insegnarono) per
repeat (while) not equal, scan compare and set, (on) byte
(per distinguere da scasw per la quale l' unità operativa non è il byte ma la word, cioè 16 bit )
e in pratica itera su una stringa di bytes finchè un certo bit di stato non è settato a 1 (indice che il confronto, tra il byte in esame e quello di riferimento, è riuscito - la sottrazione tra i due dà risultato nullo) : in pratica cerca un carattere in una stringa [/esempio di assembly]
assembler (assemblatore): programma che traduce un programma scritto in assembly, nella sua versione eseguibile in linguaggio macchina
assembly X86: l' assembly della ISA (diciamo "famiglia di processori") x86, in cui a X sostituisci 3,4,5,6... detto in parole povere, i pentium e gli athlon, sono processori di classe X86 in quanto fanno girare il SW compilato per processori "386" e successivi
pure binary: a questo proposito 71104 credo si riferisse alla scrittura di programmi operata tramite sequenziazione diretta degli zeri e uni, fattibile qualora si sappia non solo programmare in assembly, ma anche che sequenze binarie i mnemonici generino (in pratica ci si sostituisce all' assemblatore)
bytecode: il bytecode è (semprche semplificando) un formato di rappresentazione delle istruzioni, più compatto che non il normale testo, e per questo più maneggevole da parte di un interprete - motivo per cui ad esempio Java viene compilato, cioè tradotto, in una versione bytecode per la sua esecuzione
per l' identazione : scusa... mi pareva ci fosse un linguaggio in cui il rientro valeva per indicare i blocchi di codice, ma non ricordavo fosse proprio python , che in effetti non ho mai usato, mea culpa :p
ah, nel tuo post non c'è differenza tra le due scritture, perchè il forum elimina gli spazi e le tabs nei post , a meno che la parte di testo non sia racchiusa in una tag CODE , cioè quello indicato da " # " nella finestra di scrittura del messaggio ;)
PS : c'è una cosa che stavo pensando di chiederti ... ma cosa esattamente conosci (come terminologia, concetti...) allo stato attuale? scusami se ti faccio questa domanda - ma è necessario: secondo me in questo caso è basilare capire come impostare la spiegazione - e ti chiedo scusa, perchè non essendo un insegnante di professione non ho molta esperienza nell' adeguare il modo di esprimermi in funzione del pubblico...:stordita:
"Aiutami, ad aiutarti " (cit)
Digital_Style
01-03-2007, 18:31
siete tutti davvero molto gentile e vi ringrazio di cuore.detto questo tutti voi potreste fare gli insegnanti ma ci sono(purtroppo)ancora termini ke non capisco.cioè io come ho detto è da poco che ho scoperto la programmazione, so molte cose in generale sui computer, termini tecnici intendo, ma sulla programmazione ben poco.praticamente quello ke ho letto sulla guida che sto studiando e qualche altra cosa che ho imparato in qualche post di questo thread(un esempio è proprio l'ultimo post di jappilas)sono troppo indietro vero?lo dicevo io ke non avrebbe avuto senso cominciare a questa età...
p.s.non sapevo ke il tag "CODE" permettesse di inserire spazi o rientri e non sapevo nemmeno ke il forum non lo consente normalmente.infatti io il blocco di istruzioni lo avevo scritto subito(l'ho fatto girare e va!)
jappilas
01-03-2007, 20:19
...
lo dicevo io ke non avrebbe avuto senso cominciare a questa età...senti: al di là del fatto che questa frase di PGI BIS Quanto allo stancarsi di spiegare, è facile insegnare a chi già sa. La vera sfida è insegnare a chi non sa.sia da incorniciare, devo dirtelo :O
[FEK MODE]
se continui a dire di non essere in grado e non inizi nulla, non sarai in grado e non concluderai nulla, punto
quindi se è per piangerti addosso, non parlare, invece studia e scrivi codice :)
[/FEK MODE]
* fek: famoso utente di questo forum purtroppo da un po' di tempo mancante ma, all' epoca grande mentore per me e altri (da cui la mia volontà di metterne in pratica gli insegnamenti e l' eredità, anche se finora con ben miseri risultati :stordita: ), nonchè famoso per il suo atteggiamento fatto di pragmatismo e priorità al "fare" :O
ci sono(purtroppo)ancora termini ke non capisco.quali non capisci? e quali invece capisci? basta saperlo e quelli che non capisci ti vengono spiegati (in effetti è importante sapere anche quali capisci per impostare la spiegazione - su questo io posso fare del mio meglio, poi magari altri spiegano meglio di me..)
ma per nessuna ragione al mondo devi continuare a dire "non sono in grado", non capisco" eccetera ... sai perchè? perchè c'è il rischio che qualcuno che non ti conosce e non sa cosa hai dentro nè le tue potenzialità, arrivi a darti ragione
p.s.non sapevo ke il tag "CODE" permettesse di inserire spazi o rientri e non sapevo nemmeno ke il forum non lo consente normalmente.ti dirò, nemmeno io lo immaginavo all' inizio, finchè non ho provato a postare un pezzo di codice e non h ovisto che sballava la formattazione :p
infatti io il blocco di istruzioni lo avevo scritto subito(l'ho fatto girare e va!)non ne dubitavo ;)
Ti rode? Certo che ti rode! Quanto sei sollazzante. ... :|
si può sapere che hai? :|
cioè non la trovo normale come reazione ad una fesseria del genere, nata tra l'altro da una discussione tra me e un'altra persona...
posto ovviamente che credo nessuno qui ti trovi normale
:old:
echo Hello World
E' anche portabile ;) si l'avevo letto, ma "hello world" è inequivocabilmente più breve :O
@71104:diciamo ke la tua spiegazione è eccellente ma per me poco comprensibile,per non dire totalmente.....mnemonics,pure binaries,assembly x86 ecc(spero ke non li capisco solo per il momento e non per sempre!) mini-glossario:
mnemonic - in assembly, simbolo da associare mnemonicamente ad un'operazione atomica (se ne è parlato anche prima con jappilas).
pure binary - file eseguibile contenente solo codice macchina, contrariamente ad altri formati eseguibili, come PE, che aggiungo svariati headers nonché virtualmente qualsiasi tipo di contenuto oltre al codice macchina.
assembly x86 - ormai dovrebbe esserti chiaro :p
l'ASM è un linguaggio pure binaries? ehm... :|
no allora, chiariamo :fagiano:
la dicitura "pure binary" si riferisce semplicemente al formato del file eseguibile: un file "binario puro" è un file contenente solo opcodes direttamente eseguibili dall'inizio alla fine. non tutti i programmi eseguibili (anzi quasi nessuno) sono codificati in questo formato: molto più spesso si usa un formato più complesso come PE (per piattaforme Windows) o ELF (per i *nix, ovvero i derivati di Unix) che offra features come divisione in sezioni, rilocazione, binding ad altri moduli, e un bel po' di altra roba che direi che per ora puoi anche tranquillamente lasciar perdere.
a tutto ciò ovviamente si aggiungono anche i formati dei files eseguibili non nativi, cioè eseguibili tramite una virtual machine come può essere il framework di .NET o la JVM di Java. si tratta di bytecode, ne avevo accennato prima.
il discorso del formato dell'eseguibile finale è indipendente dal linguaggio di programmazione: è possibile scrivere i sorgenti di un programma in qualsiasi linguaggio e compilarlo in qualsiasi formato eseguibile supportato dal compilatore.
Ci vuole pazienza, Digital_Style. Studio ed esercizio. E fiducia in sè stessi.
Lascia da parte i i vaneggiamenti sugli opcode, i pure binaries, il bytecode, Java, .NET e chi più ne ha più ne metta.
Leggi libri su Python e considera importante solo quello che trovi scritto lì dentro. Leggi e rileggi, prova e riprova.
Non farti la strana idea che la programmazione richieda chissà quali capacità. Potrebbe farlo anche mia nonna.
Può farlo chiunque abbia un bel po' di tempo da investire in...studio ed esercizio (che sorpresa!).
Non farti la strana idea che la programmazione richieda chissà quali capacità. Potrebbe farlo anche mia nonna. àpperò: devi avere una nonna arguta e di mente assai aperta :| :Prrr:
repne scasb
02-03-2007, 08:36
... :|
si può sapere che hai? :|
cioè non la trovo normale come reazione ad una fesseria del genere, nata tra l'altro da una discussione tra me e un'altra persona...
posto ovviamente che credo nessuno qui ti trovi normale
:blah: :blah:
P.S. Anormale dillo a tua sorella.
71104 e repne scasb: perché non continuate a punzecchiarvi in privato ?
Digital_Style
02-03-2007, 18:27
vero ragazzi, non litigate nè in pubblico nè in privato!cmq io sto studiando python ma già ho incontrato alcune difficoltà...uffa
Digital_Style
03-03-2007, 12:43
ragazzi dite qualche cosa!!
Non so cosa potremmo dire. All'inizio si annaspa un po', è normale. Persevera e vedrai che anche tu imparerari ad affogare con stile :D.
non ho capito, che dovremmo dire? :confused:
chiedi qualcosa e ti si risponderà :read:
Ci vuole pazienza, Digital_Style. Studio ed esercizio. E fiducia in sè stessi.
Lascia da parte i i vaneggiamenti sugli opcode, i pure binaries, il bytecode, Java, .NET e chi più ne ha più ne metta.
Leggi libri su Python e considera importante solo quello che trovi scritto lì dentro. Leggi e rileggi, prova e riprova.
Non farti la strana idea che la programmazione richieda chissà quali capacità. Potrebbe farlo anche mia nonna.
Può farlo chiunque abbia un bel po' di tempo da investire in...studio ed esercizio (che sorpresa!).
Bhe qualunque cosa è semplice se ci si può investire tempo in studio ed esercizi.
Digital_Style
03-03-2007, 21:40
io ho tempo ed esercizio da dedicarci....ma sinceramente mi sento un fallito.le cose che abbiamo detto in questo postavrei dovuto capirle invece....
ti diverti ad autocommiserarti o cosa? continua così e sarai un fallito solo per non aver mai smesso di pensarlo. eh si, perché quando ripeti a te stesso una cosa fino alla nausa finisci per convincertene; ciò non ti suggerisce forse che ti stai ripetendo la cosa sbagliata? poi fai come vuoi, la gente del forum non continuerà per molto a rispondere alle tue autocommiserazioni. io per esempio smetto qui perché per me è già la terza volta.
Per esperienza professionale posso assicurarti che all'inizio di un percorso formativo riguardante la programmazione, è normalissimo sentirsi inadeguati al compito.
In parte è dovuto alla quantità delle nozioni da acquisire.
La difficoltà della quantità si risolve con la pazienza necessaria ad imparare una cosa per volta. E' una pazienza che si misura in anni. L'ho dato per scontato e ora lo esplicito: ti sei imbarcato in un'impresa di lungo periodo, benvenuto a bordo.
In parte è dovuta alla qualità delle informazioni che incontri. Qualità nel senso del tipo. La programmazione è una materia interdisciplinare. Se riuscissimo a mettere in un insieme tutte le discipline del sapere umano che sono divertenti, belle, affascinanti, avvincenti, quelle coinvolte nella programmazione sarebbero tutte le altre. La soluzione sta ancora nell'impegno e nella determinazione volte ad affrontare la naturale, quasi ricercata ignoranza dell'uomo per cose tanto pallose.
Naturalmente quest'ultimo punto dipende dai gusti personali. Conosco un tizio sinceramente appassionato dalla teoria dei tipi. Si chiama Zorg e viene da un pianeta di Alpha Centauri, SegoMentalis, dove avere una vita sociale è reato.
Appurato che la faccenda richiede impegno, puoi trovare uno stimolo nell'autocritica. La costante insoddisfazione per ciò che si sa, il pungolo che ti spinge a desiderare di sapere di più. E' storia vecchia. Saggio è colui che sa di non sapere, diceva un greco morto e sepolto da mill'anni. L'importante è mantenere un certo equilibro. Qualche colpetto di stuzzicadenti aiuta a stare svegli. Ma se ti chiudi in una vergine di norimberga rischi di non saltarne più fuori.
Ci vuole un po' di grinta. Non subire la materia, aggrediscila. Cerca degli spunti di interesse in quello che leggi. Non è propriamente facile trovarli nel genere letterario che devi affrontare. Sono penne di piombo che scrivono su pagine di granito. Aiuta il training autogeno: "ohh, sii, l'array, come godo!". Ripetilo cento volte. A voce bassa, meglio ancora a mente.
Se hai difficoltà a capire qualche argomento, non esitare a chiedere.
E per le ciabatte di giosafatte, lascia perdere la storia dell'HelloWorld più corto del mondo. Conoscere l'assembly è come avere un paio di chiappe sulla fronte: utile solo a chi piace camminare sulle mani.
Digital_Style
04-03-2007, 09:12
@71104:scusa se ti ho fatto arrabbiare...
@pgi-bis:che dire...grazie.a tutti
Dannazione ieri ho sprecato un giorno intero davanti al pc per trovare un algoritmo decente per il mio stupidissimo programmino ma alla fine è come se non avessi fatto nulla!! :muro:
ps: non sapevo dove postare... tanto ormai questa discussione sembra essere andata un pò ot :D
Digital-Style ho trovato un libro molto completo per la programmazione in java (sono 700 pagine!), magari ti può interessare...
Ne parlo qui (http://www.hwupgrade.it/forum/showthread.php?t=967817&page=6)
ciao
Digital_Style
05-03-2007, 12:10
ciao griffo!grazie per avermi informato del libro, ma ormai ho cominciato con python e credo che la cosa migliore sia continuare con questo altrimenti potrei creare solo confusione!
p.s.riguardo l'algoritmo, io so cosa è, ma la cosa che non capisco è ad esempio come implementarlo in un programma, tipo quello che stai facendo tu.cioè nella programmazione, un algoritmo si scrive con il linguaggio con il quale stai facendo il programma?e in che cosa consiste precisamente?io conosco la definizione generale di algoritmo, ma una conoscenza approfondita non c'è l'ho.ad esempio tu che programmino stai facendo?e che algoritmo ti serviva?
Ho fatto un programmino in java per iniziare a famigliarizzare con le javax.swing (librerie per l'interfaccia grafica).
Un algoritmo è una serie di istruzioni elementari che nell'inisime permette di fare qualcosa di più o meno complesso. Un'algoritmo può essere implementato in vari linguaggi, quello che cambia in linea generale è la sintassi.
Questo consisteva in una simulazione di combattimento tra... ehm... un branco di topi e un branco di gatti...:stordita:
Ogni topo e ogni gatto ha un tot di punti ferita più random e un tot di forza più random. Il combattimento è diviso in round. Dati n topi ed m gatti in un round ci saranno x "gruppi di combattimento" dove x è il minore tra m ed n. Ad esempio con 7 topi e 3 gatti i gruppi di combattimento saranno 3, il primo gatto si scontra contro tre topi mentre gli altri due combatteranno contro 2 topi ciascuno. Ad ogni round vengono poi determinati i punti ferita di ciascuno secondo lo scontro che ha ingaggiato. Il tutto doveva essere fatto in modo da gestire le eventuali morti e riformulare i gruppi di combattimento fino a quando un branco prevale sull'altro... :fagiano:
Questo era l'algoritmo che dovevo trovare, la gestione automatica del combattimento... e poi avevo un problemino con netbeans riguardo alle righe di codice che non mi permette di modificare...
ps: forse avrete notato che ha un piccolo bug, i gatti dovrebbero essere 6 ma sono 7 perchè c'è anche lo zero, avrò messo un +1 di troppo che frega..ghgh
http://img236.imageshack.us/img236/9071/progbl0.jpg (http://imageshack.us)
RagingBull
06-03-2007, 09:30
ciao griffo!grazie per avermi informato del libro, ma ormai ho cominciato con python e credo che la cosa migliore sia continuare con questo altrimenti potrei creare solo confusione!
p.s.riguardo l'algoritmo, io so cosa è, ma la cosa che non capisco è ad esempio come implementarlo in un programma, tipo quello che stai facendo tu.cioè nella programmazione, un algoritmo si scrive con il linguaggio con il quale stai facendo il programma?e in che cosa consiste precisamente?io conosco la definizione generale di algoritmo, ma una conoscenza approfondita non c'è l'ho.ad esempio tu che programmino stai facendo?e che algoritmo ti serviva?
Un algoritmo, come già sai, è tutta quella serie di passaggi che tu compi per risolvere un determinato problema.
Nel caso specifico della programmazione, devi scrivere queste istruzioni in un linguaggio "non ambiguo" definito meta-linguaggio, esplicitando anche il singolo passaggio che tu dai per scontato. tutta questa procedura viene eseguita prima ancora di scrivere il codice vero e proprio.
Personalmente preferisco eseguire questo passaggio con carta e matita.
A questo punto ci sono due possibili vie:
la prima è quella di usare i cosidetti flowchart. ovvero una rappresentazione visuale di tutti i passaggi (ti basta usare la ricerca immagini di google per fartene un'idea)
la seconda è quella di scrivere in un italiano che io definisco "robotizzato". ovvero scrivere tutti i passaggi in un improbabile linguaggio di programmazione con sintassi in italiano. per farti un esempio:
inizio programma nome="hello world";
Variabile: nome=contatore; tipo=intero; valore=1;
Variabile: nome=frase; tipo=stringa; valore="hello world";
fino a quando (contatore<=5)
stampa frase;
contatore=contatore+1;
fine.
personalmente credo siano più chiari i flowchart. per progetti di grandi dimensioni ti conviene imparare l'UML. All'inizio ti sembrerà una rottura inutile eseguire tutta questa procedura. ma quando passerai a progetti di grandi dimensioni la reputerai una mano santa! anche perkè così facendo ti crei una documentazione del lavoro che ti consente in futuro di apportare modifiche senza stare a fare sforzi di memoria per ricordarti dove va implementata o tolta una certa funzione.
spero di essere stato chiaro e di non aver detto fesserie...nel caso correggetemi, ne va anche della mia preparazione in materia :D
^TiGeRShArK^
06-03-2007, 09:41
e poi avevo un problemino con netbeans riguardo alle righe di codice che non mi permette di modificare...
Netbeans non permette di modificare le linee di codice generate dall'editor grafico.
Se non ti fa modificare una classe intera controlla l'attributo read-only di quel file.
Digital_Style
06-03-2007, 21:36
@griffo e @ragingbull: siete stati tutte e due chiari!!griffo magari riuscissi io a fare quella cosa che hai fatto tu!per me già mi sembra impossibile farla!ti chiederei se potresti farmi vedere il sorgente, ma sto studiando python e non capirei java(anche se ho un manuale di javascript!) da quanto tempo programmi?e dove hai imparato?
RagingBull
06-03-2007, 21:59
lascia perdere i sorgenti altrui per ora...impara a usare il linguaggio che stai studiando...e pensa positivo...sii umile ma pensa positivo altrimenti non andrai da nessuna parte
Netbeans non permette di modificare le linee di codice generate dall'editor grafico.
Se non ti fa modificare una classe intera controlla l'attributo read-only di quel file.
Si infatti l'avevo notato, era la prima volta che usavo netbeans.. ma poi ho risolto cmq. thx
@dygital-style: non penso che potresti capire il codice se non hai mai visto un programma in java. javascript non c'entra con java, sono due cose diverse...
cmq se proprio insisti te lo passo...
^TiGeRShArK^
06-03-2007, 22:25
@griffo e @ragingbull: siete stati tutte e due chiari!!griffo magari riuscissi io a fare quella cosa che hai fatto tu!per me già mi sembra impossibile farla!ti chiederei se potresti farmi vedere il sorgente, ma sto studiando python e non capirei java(anche se ho un manuale di javascript!) da quanto tempo programmi?e dove hai imparato?
ehmm...
javascript e java sono due cose completamente diverse :fagiano:
clockover
07-03-2007, 01:30
caspita questo sondaggio fa proprio per me :D
non ho letto tutti i messaggi perchè sono tanti ma il mio parere è che non è mai troppo tardi!:O
Prendi me, 24 anni, lavoro, ho una ragazza rompi, e mi sono iscritto alla facoltà di ingegneria informatica! :cry:
Che altro posso dire.... che sono fuori di testa!
:muro:
Pensa che mi devo confrontare con ragazzetti che non hanno visto un pelo di *()* per anni e hanno conosciuto solo la tastiera di un computer!!
Io invece mi sono divertito e ora sto mi sto facendo il :ciapet:
Digital_Style
07-03-2007, 13:02
@griffo:non preoccuparti, non fa niente!ma da quanto programmi?e come hai iniziato?
@clockover:come va il confonto con questi "ragazzetti"?!ti sento a disagio, inferiore, ritieni di poter arrivare ai loro livelli o superarli ecc??
ora torno un attimo IT.poco fa pensavo a quando ho studiato la ricorsione e c'è un esempio nella guida che sto studiando che non mi quadra:
prima c'è questo esempio:
def ContoAllaRovescia(n):
if n==0:
print "Partenza!"
else:
print n
ContoAllaRovescia(n-1)
e questo l'ho capito, ma questo esempio no:
def NRigheVuote():
if n>0:
print
NRigheVuote(n-1)
che senso ha diminuire di uno il valore iniziale?se io ad esempio voglio 30 righe vuote che senso ha poi tornare all'inizio con un valore diminuito di 1, cioè 29?
@griffo:non preoccuparti, non fa niente!ma da quanto programmi?e come hai iniziato?
@clockover:come va il confonto con questi "ragazzetti"?!ti sento a disagio, inferiore, ritieni di poter arrivare ai loro livelli o superarli ecc??
ora torno un attimo IT.poco fa pensavo a quando ho studiato la ricorsione e c'è un esempio nella guida che sto studiando che non mi quadra:
prima c'è questo esempio:
def ContoAllaRovescia(n):
if n==0:
print "Partenza!"
else:
print n
ContoAllaRovescia(n-1)
e questo l'ho capito, ma questo esempio no:
def NRigheVuote():
if n>0:
print
NRigheVuote(n-1)
che senso ha diminuire di uno il valore iniziale?se io ad esempio voglio 30 righe vuote che senso ha poi tornare all'inizio con un valore diminuito di 1, cioè 29?
La tua funzione non stampa n righe vuote, ma una sola.
Richiamandola tu fai stampare un altra linea vuota, decrementando l'argomento fai si che fatte le n righe il tuo argomento arrivi a 0 facendo terminare la ricorsione
Digital_Style
07-03-2007, 13:32
questa funzione sinceramente non l'ho capita...cioè se stampa una riga sola che argomento deve decrementare?questo esempio è nella guida che hai postato ma non mi sembra abbia molto senso
FlavioMaster
07-03-2007, 21:19
caspita questo sondaggio fa proprio per me :D
non ho letto tutti i messaggi perchè sono tanti ma il mio parere è che non è mai troppo tardi!:O
Prendi me, 24 anni, lavoro, ho una ragazza rompi, e mi sono iscritto alla facoltà di ingegneria informatica! :cry:
Che altro posso dire.... che sono fuori di testa!
:muro:
Pensa che mi devo confrontare con ragazzetti che non hanno visto un pelo di *()* per anni e hanno conosciuto solo la tastiera di un computer!!
Io invece mi sono divertito e ora sto mi sto facendo il :ciapet:
anch'io fino all'estate scorsa non ho mai pensato neanche lontanamente all'informatica,usavo il computer solo per navigare un pò,posta e cose del genere...ora sono all'uni(informatica!)e sto imparando qualcosa di programmazione,anche partendo da buone basi teoriche..spero anch'io che non sia troppo tardi rispetto a chi ha iniziato a 12/13 anni..
_Claudio
07-03-2007, 23:42
Io ho iniziato a 16 anni circa e avevo gli stessi dubbi.
Poi mi sono iscritto ad ing. informatica a Milano (che come tutti sanno non è una passeggiata) e ho imparato una cosa fondamentale: l'importante non è tanto programmare giusto per dire:"questo l'ho fatto io" o come quell'esercito di smanettoni che risolvono i problemi "as is" (e per fortuna ci sono anche loro) ma imparare quei concetti/ragionamenti e basi che ti permettono di affrontare qualsiasi problema indipendentemente dalla piattaforma, linguaggio o tecnologia, e questo è il particolare principale che differenzia un ing. informatico da un informatico semplice. Ad ingegneria i linguaggi li vedi col binocolo, proprio per non farti affezionare troppo forse. Ma questi concetti non sono scritti in nessun libro di programmazione, ma in libri di algebra, elettronica di base ecc... che solo frequentando corsi universitari di "alto livello" impari. Poi, come diceva la mia prof. di informatica 1:"una cosa è programmare, un'altra è programmare BENE" e avreste dovuto vedere come si incazzava quando, dato un problema, qualcuno lo risolveva con un algoritmo specifico al problema e gli diceva:"si ma funziona lo stesso" e lei dietro ad urlargli:"e l'astrazione dov'è??????" poi con l'andare avanti negli anni ho capito che certi concetti sono basilari per creare un software solido, dinamico, estendibile, portabile e tutte le altre belle cose
Quindi se vuoi iniziare a programmare e indirizzarti verso una preparazione veramente completa non tuffarti ad occhi chiusi tra montagne di libri di programmazione ma usa UN linguaggio completo (tipo C++ o Java) imparalo bene e costruisciti una base matematica con i controca**i (iscrivendoti ad ing. ad esempio) che poi il linguaggio di programmazione diventerà solo un mezzo, non il fine.
clockover
08-03-2007, 02:20
@clockover:come va il confonto con questi "ragazzetti"?!ti sento a disagio, inferiore, ritieni di poter arrivare ai loro livelli o superarli ecc??
Dicevo ragazzetti per essere ironico, anche perchè ci sono persone molto più grandi di me!!
Comunque ad essere sincero non ci penso al confronto con loro! Anzi cerco di sfruttare al massimo l'amicizia con i più bravi di loro, imparando da loro, e a volte riesco anche ad imparargli qualcosa! La mia è sempre stata una passione, ma che ci vuoi fare, ho fatto la ragioneria, e quando vivi vicino al mare, hai più della metà dell'istituto di ragazze, ditemi voi come fate a pensare alla tastiera di un computer....:D :D
E comunque ragazzi miei.....se non sono già ai loro livelli, ci arriverò molto presto....:sofico:
Ho una sola cosa che mi rallenta ulteriormente: il mio lavoro stressante! Ci sono dei momenti in cui quando torni da lavoro, magari ti piazzi davanti alla tastiera del computer, e cominci a vedere ovunque parentesi.....{....(...[....e sembra che ne hai messe troppe, ed è li che capisci che oggi non combinerai un bel niente!:confused: :confused:
FlavioMaster
08-03-2007, 08:04
Io ho iniziato a 16 anni circa e avevo gli stessi dubbi.
Poi mi sono iscritto ad ing. informatica a Milano (che come tutti sanno non è una passeggiata) e ho imparato una cosa fondamentale: l'importante non è tanto programmare giusto per dire:"questo l'ho fatto io" o come quell'esercito di smanettoni che risolvono i problemi "as is" (e per fortuna ci sono anche loro) ma imparare quei concetti/ragionamenti e basi che ti permettono di affrontare qualsiasi problema indipendentemente dalla piattaforma, linguaggio o tecnologia, e questo è il particolare principale che differenzia un ing. informatico da un informatico semplice. Ad ingegneria i linguaggi li vedi col binocolo, proprio per non farti affezionare troppo forse. Ma questi concetti non sono scritti in nessun libro di programmazione, ma in libri di algebra, elettronica di base ecc... che solo frequentando corsi universitari di "alto livello" impari. Poi, come diceva la mia prof. di informatica 1:"una cosa è programmare, un'altra è programmare BENE" e avreste dovuto vedere come si incazzava quando, dato un problema, qualcuno lo risolveva con un algoritmo specifico al problema e gli diceva:"si ma funziona lo stesso" e lei dietro ad urlargli:"e l'astrazione dov'è??????" poi con l'andare avanti negli anni ho capito che certi concetti sono basilari per creare un software solido, dinamico, estendibile, portabile e tutte le altre belle cose
Quindi se vuoi iniziare a programmare e indirizzarti verso una preparazione veramente completa non tuffarti ad occhi chiusi tra montagne di libri di programmazione ma usa UN linguaggio completo (tipo C++ o Java) imparalo bene e costruisciti una base matematica con i controca**i (iscrivendoti ad ing. ad esempio) che poi il linguaggio di programmazione diventerà solo un mezzo, non il fine.
vuoi dire che solo ing.informatica è un corso universitario di alto livello?
... ma imparare quei concetti/ragionamenti e basi che ti permettono di affrontare qualsiasi problema indipendentemente dalla piattaforma, linguaggio o tecnologia, e questo è il particolare principale che differenzia un ing. informatico da un informatico semplice...
Immagino che tu abbia seguito entrambi i corsi di laurea per dire
che un informatico "semplice" non impara "quei concetti/ragionamenti e basi".
_Claudio
08-03-2007, 09:31
Beh, direi di sì, nel ramo informatico non conosco altri corsi che non siano ing. informatica o per chi vuol veramente trattare questa materia dalle basi ing. matematica. Scienze Informatiche (e c'è scritto anche nel "prospetto informativo") "forma informatici che lavoreranno a supporto di ingegneri" e difatti il carico di studi è minore sui 3 e i 5 anni.
Ma questo ovviamente vale solo per un discorso prettamente accademico, se una persona è sveglia e ha passione può anche aver studiato poco e raggiungere livelli altissimi e imparare a programmare "BENE".
Aver scritto ing. davanti al nome non fa una persona più intelligente o migliore di altri, se uno è un deficiente diventerà semplicemente un ingegnere deficiente (che è pure peggio).
FlavioMaster
08-03-2007, 10:17
Beh, direi di sì, nel ramo informatico non conosco altri corsi che non siano ing. informatica o per chi vuol veramente trattare questa materia dalle basi ing. matematica. Scienze Informatiche (e c'è scritto anche nel "prospetto informativo") "forma informatici che lavoreranno a supporto di ingegneri" e difatti il carico di studi è minore sui 3 e i 5 anni.
Ma questo ovviamente vale solo per un discorso prettamente accademico, se una persona è sveglia e ha passione può anche aver studiato poco e raggiungere livelli altissimi e imparare a programmare "BENE".
Aver scritto ing. davanti al nome non fa una persona più intelligente o migliore di altri, se uno è un deficiente diventerà semplicemente un ingegnere deficiente (che è pure peggio).
Da quello che dici non mi sembra tu possa fare affermazioni del genere per il semplice fatto che conosci bene solo ing.informatica..e poi io non frequento Scienze Informatiche(che conosci solo dal prospetto informativo)ma Informatica pura a Pisa,che ha un programma di studi che è equiparato a Matematica.Infatti se vai sul sito puoi vedere che con la Laurea Triennale in Informatica puoi accedere direttamente,senza sostenere ulteriori esami,alla Laurea specialistica in Matematica.Il fatto poi che un laureato in Informatica lavori a supporto degli ingegneri è un'idea tutta tua e forse anche indice di una mentalità non troppo aperta..da noi non funziona cosi.
_Claudio
08-03-2007, 13:14
Qui a Milano abbiamo politecnico e statale praticamente attaccati. Non è poca la gente che vedo che lascia ing. informatica per passare a Scienze Informatiche (o Informatica) e mi dice che molto più leggera, ho valutato anche io all'iscrizione le varie possibilità e non penso di essere stato uno dei quasi 1200 "fessi" (così veniamo definiti... ma solo da chi studia, non da chi lavora da tempo) che scelgono ingegneria al posto che l'"equivalente" alternativa. I piani di studio sono totalmente diversi, hanno qualche esame in comune e non penso che gli interminabili e impossibili esami di algebra (da cui passano in 20/180 ad ogni appello...) siano messi lì giusto per niente ad ingegneria, per non parlare di analisi 1 e 2, equazioni differenziali, elettronica ecc... e altre belle cose che una persona proprio non si diverte a studiare. Sono tutti esami guardacaso che estendono le capacità di astrazione e modellizzazione o aumentano la consapevolezza di ciò che si fa. Esami molto meno specifici, di base per la preparazione di un ingegnere.
Poi beato te se frequentando Informatica avrai una preparazione pari ad un ingegnere o pensi di averla. Tutto questo sulla carta ovviamente, e ci tengo a ribadirlo la realtà è ben diversa per fortuna perchè ci sono molti ingegneri stupidi e molti semplici diplomati che sanno il fatto loro.
Un'altra cosa che sostiene ciò che dico è che le grandi aziende (di informatica e non) prima di commercializzare qualcosa si affidano sempre alla supervisione di ingegneri, e ci sono imprese che spesso fanno proprio questo come lavoro. Un esempio: quando un architetto progetta qualcosa di bello stilisticamente spesso l'ing. civile deve modificare delle parti, l'edificio sarà meno bello ma almeno starà in piedi... è per questo che ti dico che spesso (non sempre certamente) trovi informatici che ricevono direttive da ing.
Non entriamo in questo discorso perché non se ne esce più ;)
jappilas
08-03-2007, 15:46
vuoi dire che solo ing.informatica è un corso universitario di alto livello?secondo me il punto del suo discorso era un altro... più sulla differenza tra i metodi e contenuti formativi e tra gli approcci alla risoluzione di problemi instillati nella mentalità dell' allievo, secondo me...
Non entriamo in questo discorso perché non se ne esce più ;)stavo pensando la stessa cosa ;)
sul lavoro l' unica cosa che conta è il bagaglio di conoscenze che si possiede e quello che si è concretamente in grado di fare, punto :)
come si acquisiscono quelle conoscenze e capacità è un problema a latere - dai molti thread passati sul tema credo si possa dare per appurato che la sola conoscenza impartita dall' università non sia in media sufficiente, o quantomeno non sia certo un punto di arrivo ma uno di partenza...
questa funzione sinceramente non l'ho capita...cioè se stampa una riga sola che argomento deve decrementare?questo esempio è nella guida che hai postato ma non mi sembra abbia molto sensocredo ti manchi il concetto di ricorsione, e i post più in alto (vedevo quello di wisher ad es) non lo esplicitavano ma lo sottintendevano ;)
qui http://www.soft-land.org/cgi-bin/doc.pl?doc=articoli/recurse è spiegato in modo più chiaro di quello che potrei fare io ;)
_Claudio
08-03-2007, 18:05
secondo me il punto del suo discorso era un altro... più sulla differenza tra i metodi e contenuti formativi e tra gli approcci alla risoluzione di problemi instillati nella mentalità dell' allievo, secondo me...
sul lavoro l' unica cosa che conta è il bagaglio di conoscenze che si possiede e quello che si è concretamente in grado di fare, punto :)
come si acquisiscono quelle conoscenze e capacità è un problema a latere - dai molti thread passati sul tema credo si possa dare per appurato che la sola conoscenza impartita dall' università non sia in media sufficiente, o quantomeno non sia certo un punto di arrivo ma uno di partenza...
hai colto perfettamente nel segno, l'università impartisce solo quel bagaglio culturale di validità temporale di lungo/lunghissimo termine su cui inserire altri strati in ambito lavorativo specifici di durata temporale minore, spesso è determinante avere buone fondamenta, ma non è detto a priori.
def NRigheVuote(): <---non ci andrebbe NRigheVuote(n):?? (phyton non l'ho mai usato)
if n>0:
print "riga"
NRigheVuote(n-1)
La funzione funziona (giro di parole) così:
chiamandola con NRigheVuote(30) (n=30) controlla che n>0 e scrive:
riga
poi chiama se stessa con NRigheVuote(29) (n=29) controlla che n>0 e scrive:
riga
poi chiama se stessa con NRigheVuote(28)... e così via
quando arriva a chiamare se stessa con NRigheVuote(0)
n=0 e la condizione è falsa allora esce dalla funzione ritornando a chi l'aveva chiamata ossia
NRigheVuote(1) la quale continua dalla riga successiva alla chiamata di NRigheVuote(0) ossia la riga successiva di NRigheVuote(n-1) che fa terminare anche NRigheVuote(1) passando a NRigheVuote(2) e così via finchè anche la funzione NRigheVuote(30) viene terminata.
Se per esempio il codice era:
def NRigheVuote(): <---non ci andrebbe NRigheVuote(n):?? (phyton non l'ho mai usato)
if n>0:
print "riga"
NRigheVuote(n-1)
print "termino"
stampava prima 30 volte riga:
riga
riga
riga
...
e poi 30 volte termino:
termino
termino
...
Comunque, appunto per il discorso che facevo ed era fuorviante alle richieste di digital, più avanti ti consiglio di leggere qualcosa su come vengono salvate in memoria (RAM per i praticoni) le funzioni e come vengono eseguite e ti si apriranno le idee, capirai appieno come funziona la ricorsione e altre cosette interessanti. Non stare però ad imparare specificatamente cosa succede su una data macchina ma fanne una lettura generale, poca roba, ma diretta ed efficace. (Queste cose io personalmente le avevo viste velocemente come autodidatta ma poi le ho approfondite ad informatica 3 all'università)
Spero di essere stato esaustivo.
Buono studio.
Digital_Style
08-03-2007, 19:21
@claudio:non ho capito bene.l'esempio della guida non era di stampare la scritta "riga", ma quello di stampare una riga vuta, un invio praticamente, per questo l'argomento è vuoto e poi che senso ha (prendendo per giusto il tuo esempio)andare da 30 a 0 e poi da 0 a 30?
@jappilas:il tuo link è ok però non fa esempi con python ma con un altro linguaggio che non conosco
_Claudio
08-03-2007, 19:35
Io ho messo print "riga" sperando di essere più chiaro, non cambia nulla se non a livello di output mettere semplicemente print che stamperà una riga vuota al posto che la stringa "riga", quello è un esempio di ricorsione devi giusto capire come funziona.
Per capire a fondo come mai si passa da 30 a 0 e da 0 a 30 devi capire la ricorsione, non è il programmatore che decide che si va da 30 a 0 e da 0 a 30, o meglio, ora ti faccio uno schema su cosa fa il programma:
NRigheVuote(30) chiama NRigheVuote(29) ... chiama NRigheVuote(0)
e va quindi da 30 a 0.
Ora, nelle tue prime letture avrai capito che se da una funzione
A() chiamo la funzione B() la funzione B() tornerà dei valori (o nulla, anche nulla è un valore) alla funzione A() quest'ultima continuerà la sua esecuzione, la stessa cosa succede nella ricorsione, quando chiamo NRigheVuote(0) il controllo n>0 fallisce, non chiamerà quindi NRigheVuote(-1) non eseguendo l'if ma proseguirà nella sua esecuzione terminando, pertando NRigheVuote(0) termina e ritornerà un valore (in questo caso nulla) alla funzione che l'ha chiamata ossia NRigheVuote(1) che continuerà la sua esecuzione dall'istruzione successiva alla chiamata che ha fatto eseguire NRigheVuote(0), ma siccome non ci sono istruzioni successive anche NRigheVuote(1) terminerà tornando alla funzione che l'ha chiamata ossia NRigheVuote(2) e così via fino a 30. Se riguardi il mio esempio dove all'interno dell'if dopo l'istruzione di chiamata NRigheVuote(n-1) c'è l'istruzione print "termina" ti è più chiaro da che punto la funzione continua la sua esecuzione dopo che la sottofunzione chiamata termina.
Non vi è nessuna correlazione tra l'argomento passato alla funzione (vuoto) e ciò che stampa il print, se vuoi fargli stampare una riga vuota chiami print e basta, altrimenti print "quello che vuoi stampare", sempre rispettando sintassi e semantica del linguaggio.
@claudio:non ho capito bene.l'esempio della guida non era di stampare la scritta "riga", ma quello di stampare una riga vuta, un invio praticamente, per questo l'argomento è vuoto e poi che senso ha (prendendo per giusto il tuo esempio)andare da 30 a 0 e poi da 0 a 30?
Ovviamente quello è solo un esempio...la ricorsione si ha quando una funzione chiama se stessa. Con questo metodo si possono implementare algoritmi in modo molto più semplice della rispettiva implementazione iterativa (con i cicli per intendersi), ma ha anche dei limiti che magari dopo ti spiego.
L'esempio basilare di ricorsione che si fa la prima volta è il fattoriale.
Per ottenere il fattoriale di un numero n si deve moltiplicare il numero n per tutti i numeri che lo precedono: fattoriale(n) = n * n-1 * n-2 * ...... * 1
Per definizione il fattoriale(1) e fattoriale(0) sono uguali a 1.
Ora abbiamo detto che si ha ricorsione quando una funzione richiama se stessa.
Ti scrivo in psudocodice l'algoritmo fattoriale ricorsivo:
funzione fattoriale(intero n)
se (n uguale a 1) o (n uguale a 0) <---questa è chiamata condizione di arresto della ricorsione
ritorno 1
altrimenti
ritorno n * fattoriale(n-1)
fine funzione
Ecco come effettivamente viene eseguito il codice dopo la chiamata di fattoriale(3):
fattoriale(n=3)
n non è uguale a 0 o 1 quindi:
ritorno 3 * fattoriale(3-1) <--viene effettuata la chiamata ricorsiva con n=2
fattoriale(n=2)
n non è uguale a 0 o 1 quindi:
ritorno 2 * fattoriale(2-1) <--viene effettuata la chiamata ricorsiva con n=1
fattoriale(n=1)
n è uguale a 1 quindi ritorno 1 <--a questo punto si ritorna al punto in cui è stata chiamata la ricorsione precedente
ritorno 2 * 1 <--fattoriale(2-1) ha ritornato 1, torno alla chiamata di fattoriale(2)
ritorno 3 * 2 <--fattoriale(3-1) ha ritornato 2, torno a chi ha chiamato fattoriale(3)
Quindi fattoriale(3) ritorna 6.
Le chiamate:
fattoriale(3)
fattoriale(2)
fattoriale(1)
Sono chiamate annidate alla stessa funzione. La ricorsione si deve fermare sulla condizione di arresto.
Quando si scrive un algoritmo ricorsivo si deve prima di tutto implementare la/le condizioni di arresto, poi ci si mette nella condizione in cui siamo ad un passo generico della ricorsione e si implementa questo passo (senza pensare a varie implicazioni tipo: ma se questo chiama questo e poi chiama quest'altro...) ed a quel punto solitamente l'algoritmo "nasce" quasi da solo ;)
Gli svantaggi principali della ricorsione sono due:
- velocità minore rispetto alla rispettiva implementazione iterativa: non sempre, ma spesso la versione ricorsiva necessita di un maggiore accesso alla memoria rispetto alla versione iterativa. Principalmente è dovuto alla chiamata alle funzioni ed al passaggio dei parametri delle funzioni
- limitazioni della profondità di ricorsione (nel caso sopra la profondità delle chiamate annidate è 3) dovuti ad una particolare zona di memoria chiamata stack (te prendila per buona) in cui vengono mantenuti i parametri (e non solo) di una chiamata a funzione. Solitamente questa zona di memoria viene liberata solo quando la funzione ritorna, mentre ovviamente con la ricorsione, se siamo ad un profondità N significa che ci sono N set di parametri (e non solo) nello stack (visto che ogni chiamata a funzione termina solo dopo che sono terminate le chiamate "figlie").
Oltre una certa profondità non si potrà andare perchè lo stack si riempirà (stack overflow). Questo limite dipende dalla dimensioni dei parametri delle chiamate ricorsive.
E' nel dna degli ingegneri ritenersi gli "unici detentori della conoscenza" :sofico:
Riguardo al livello di difficoltà io avrei una controprova cmq... dei miei amici informatici tempo fa avevano un problema riguardo a statistica (che da noi è un esame molto tosto anche a causa del professore). Avevano degli amici di ingegneria informatica e uno di questi si è proposto di dargli una mano perchè a detta sua "è un esame che si passa normalmente, ho preso 26". Gli ha dato in mano l'esercitazione che veniva proposta ad ingegneria e i miei amici hanno detto che quasi si risolvevano a mente in confronto a quelli di informatica.
Certo questo è un esempio specifico e c'è da dire che statistica è forse il più difficile del triennio.
Riguardo alla specialistica si può dire poi che ad info ci sono tantissimi esami a scelta libera e se uno sceglie quelli fuffa tipo informatica applicata alla comunicazione scritta :doh: è ovvio che poi non risulta difficile...
ps: giusto giusto è arrivata a dicembra una ragazza che proveniva da ingengeria informatica... non ha passato mezzo esame
Come dicevo non è il thread adatto per parlare di questa cosa...ci sono stati thread chilometrici che non hanno cavato un ragno dal buco.
_Claudio
08-03-2007, 23:40
L'unico detentore della conoscenza è Dio.
Resta solo il fatto che molti scelgono di passare da ingegneria a una facoltà scientifica e spesso si trovano meglio e non esiste nessuno che fa il percorso inverso.
Ma come dice cionci non è il thread adatto e comunque non ne caveremmo mezzo ragno dal buco visto che la questione è molto soggettiva e cambia da università in università. Piuttosto consigliamo qualche buona risorsa per comprendere le basi a digital e altri nuovi nel campo, a mio avviso andrebbe abbinato un buon libro di informatica di base (e possibilmente il più teorico possibile) ad uno che tratta un linguaggio specifico. Si rischia di comprendere regole basilari di quel linguaggio per poi considerarle universali in qualsiasi situazione, come ad esempio il passaggio di variabili ad una funzione, visibilità e altre belle cosette che spesso cambiano modo di funzionamento da un linguaggio (o architettura) usata.
Digital_Style
09-03-2007, 07:53
sarò ignorante io ma non ho capito molto bene.alcune cose si ma altre no.
n è uguale a 1 quindi ritorno 1 <--a questo punto si ritorna al punto in cui è stata chiamata la ricorsione precedente
ritorno 2 * 1 <--fattoriale(2-1) ha ritornato 1, torno alla chiamata di fattoriale(2)
ritorno 3 * 2 <--fattoriale(3-1) ha ritornato 2, torno a chi ha chiamato fattoriale(3)
perchè si "ritorna" in questo modo?(l'esempio del fattoriale l'ho studiato sulla guida di python e l'ho capito, ma non capisco questa parte, cioè quando finisce la ricorsione e deve "ritornare" indietro.
ritornerà un valore (in questo caso nulla) alla funzione che l'ha chiamata ossia NRigheVuote(1)
perchè ritorna NRugheVuore(1)?
non so se sono ignorante io o è normale all'inizio non capire...mi sto convincendo sempre di più che forse non è per me la programmazione e andare ad ingegneria informatica o scienze informatiche(a proposito, non ho capito quale è meglio!)non avrebbe senso...bho.sono confuso
_Claudio
09-03-2007, 09:07
Per capire il ritorno pensa a due funzioni generiche, come ti ho scritto qualche post fa ossia: A() chiama B(), B() esegue le sue istruzioni, poi termina e ritorna ad A().
Oppure quando crei un semplice programma senza chiamate a sottofunzioni:
l'utente clicca sull'iconcina, il sistema operativo "esegue" il programma, il programma esegue le sue istruzioni e termina quindi ritorna al sistema operativo.
In questo caso hai (non pensare per un attimo al fatto che la funzione chiami se stessa)
NRigheVuote(30) chiama NRigheVuote(29) e così via fino a NRigheVuote(0)
È un po' come se A() chiama B() che chiama C(), quando C() termina torna a B(), quando anche B() termina torna ad A().
Quindi NRigheVuote(0) termina e torna a NRigheVuote(1) che quando termina torna a NRigheVuote(2) e così via...
Riguardo la scelta di indirizzo dipende dalla preparazione che vuoi, se vuoi una preparazione più astratta, matematica e con maggiori nozioni di modellizzazione vai ad ingegneria (dove per mesi/anche un anno non vedi mezza riga di codice), se invece vuoi una preparazione più focalizzata alla programmazione e al funzionamento scegli Scienze Informatiche. Informatica pura non so di preciso ma dovresti trattare tutto sull'informatica senza però alcune materie ingegneristiche di base tipo elettronica, automatica e derivati.
Comunque per adesso finisci le superiori poi segui gli orientamenti delle varie università e decidi quello che ti senti di fare.
È normale sentirsi confusi quando si intraprende qualcosa di nuovo e non si sa da che parte inziare perchè si vorrebbe una visione di insieme immediata e precisa di tutto, ma questo non è possibile neanche per chi ci sta una vita. Soprattutto in una materia come l'informatica che è immensa e in continua evoluzione.
Digital_Style
09-03-2007, 17:19
ora ho capito!grazie!
secondo te è davvero una cosa normale?oppure sono io che non sono portato per la programmazione?
riguardo la facoltà, bhè...io vorrei diventare un esperto di sicurezza informatica, ma non credo che si siano facoltà su questo!
Ad ing informatica a Pisa c'è un corso che si chiama "Sicurezza nelle Reti", inoltre sono attivi i corsi Cisco CCNA e CCNP che non solo vengono offerti gratuitamente, ma ti valgono anche crediti ;)
ok scusate mi ero un pò infiammato, però quando sento dire che informatica è l'altrnativa semplice di ingegneria informatica per quelli che non vogliono studiare un pò mi girano... almeno, non è così per quelli che vogliono studiare seriamente
Rispondendo a digital: ad info triennale c'è un esame complementare (che è un pò una mazzata) che si chiama sicurezza e mi sembra che esista anche una specialistica.
Il professore tiene una squadra composta dall'elite dei sui studenti per il campionato nazionale di sicurezza.
In pratica hanno 24 (o 48 non ricordo) ore per introdursi in un server e cercare più bug possibili alternandosi nel dormire e el mangiare.
L'esame è molto simile solo che è individuale e dura 12 ore...
jappilas
09-03-2007, 20:33
ok scusate mi ero un pò infiammato, però quando sento dire che informatica è l'altrnativa semplice di ingegneria informatica per quelli che non vogliono studiare un pò mi girano... almeno, non è così per quelli che vogliono studiare seriamentetranquillo, non si vuole sminuire l' impegno e la serietà degli informatici puri ;)
...
In pratica hanno 24 (o 48 non ricordo) ore per introdursi in un server e cercare più bug possibili alternandosi nel dormire e el mangiare.
L'esame è molto simile solo che è individuale e dura 12 ore...e prevedrebbe che uno si dedichi allo sfondamento di un solo server per 12 o 24 ore consecutive con interazione diretta e procedure manuali? :eek:
lo facessi io (ti dico come affronterei "io" una cosa del genenre, poi non è detto che anche un altro ing la veda come me) passerei le prime 4 ore (o anche meno, se lo si può realizzare preventivamente nel mese di preparazione all' "esame", mese che cmq sarà intenso) a creare un programma che poi effettui il port scan e i possibili tentativi di intrusione previsti dal test, in modo automatizzato e adottando strategie dipendenti dalla versione e configurazione dell' OS rilevata (magari sfruttando un DB delle vulnerabilità note - se non quello di secunia, per il quale andrebbe previsto un modo di "importare" la knowledge base scritta in linguaggio naturale in una forma accessibile all' engine del programma, quantomeno una versione locale preparata preventivamente ) per poi alla fine generare un report perfettamente formattato - mentre le restanti 8 ore saranno passate sul forum o su qualche attività più remunerativa e/o rilassante (lettura del Signore degli Anelli, realizzazione di pagine web in php, varie ed eventuali...) :D
fine divagazione
secondo te è davvero una cosa normale?oppure sono io che non sono portato per la programmazione?smettila :D
quanto è passato dall' apertura di questo thread, una settimana ? e già sei entrato in contatto con python e svariati termini e concetti... dai tempo al tempo e non dire più "non sono portato"
se andando avanti con lo studio e l' impegno , sentirai di esserti stufato di imparare, e che la materia non ti darà più l' entusiasmo che ti dà (mi pare di capire) ora, allora potrà essere che la materia non sia quella ideale per te ...
ma è una cosa che credo sia troppo prematuro decretare ora, e soprattutto qualcosa che solo da te stesso potrai capire... non essendo nella tua testa, nessuno, da qui, può dirti cosa sia o non sia adatto per te
(questa frase va letta con un tono il più amichevole immaginabile) fossi in te non porrei nemmeno più la domanda... l' unico effetto che ha è demoralizzarti ulteriormente e dare l' idea di una persona demoralizzata - pensa positivo ;)
e prevedrebbe che uno si dedichi allo sfondamento di un solo server per 12 o 24 ore consecutive con inerazione diretta e procedure manuali? :eek:
lo facessi io (ti dico come affronterei "io" una cosa del genenre, poi non è detto che anche un altro ing la veda come me) passerei le prime 4 ore (o anche meno, se lo si può realizzare preventivamente nel mese di preparazione all' "esame", mese che cmq sarà intenso) a creare un programma che una poi effettui il port scan e i possibili tentativi di intrusione previsti dal test, in modo automatizzato e adottando strategie dipendenti dalla versione e configurazione dell' OS rilevata (magari sfruttando un DB delle vulnerabilità note - se non quello di secunia, per il quale andrebbe previsto un modo di "importare" la knowledge base scritta in linguaggio naturale in una forma accessibile all' engine del programma, quantomeno una versione locale preparata preventivamente ) per poi alla fine generare un report perfettamente formattato - mentre le restanti 8 ore saranno passate sul forum o su qualche attività più remunerativa e/o rilassante (lettura del Signore degli Anelli, realizzazione di pagine web in php, varie ed eventuali...) :D
Guarda non lo sò... io sono ancora al primo anno e sinceramente non ho compreso tutte le tue parole, ho solo riferito quello che mi hanno detto dei miei amici laureandi...
@digital: Riguardo alla facoltà ti posso dire la mia esperienza. Anche io ero indeciso se fare ingegneria o informatica pura, tuttavia ho avuto la fortuna di avere molte discussioni con gente ormai laureanda sia ad info che ad ingegneria. Concordo sostanzialemente con quello che ha detto claudio. Ad informatica pura (milano statale) l'impostazione è incentrata sulle tecnologie informatiche pure come la programmazione, basi di dati, sitemi operativi etc con ovviamente una forte base matematica anche se non pari a quella che potresti ricevere ad ingegneria. L'unico vero esame che parla di elettronica è architettura e non si studiano alcuni esami comuni a tutti i corsi di ingegneria come per es chimica & co. Tuttavia è possibile fin da subito scegliere esami complementari per specializzarsi in quello che più interessa (tra cui i già citati esami fuffa). Per esempio si possono approfondire le proprie conoscenze in sicurezza, intelligenza artificiale, fisica, statistica, matematica e chi più ne ha più ne metta.
A mio parere non è meglio ingegneria od informatica pura, tutto dipende da quello che vuoi fare te.
^TiGeRShArK^
10-03-2007, 00:46
ok scusate mi ero un pò infiammato, però quando sento dire che informatica è l'altrnativa semplice di ingegneria informatica per quelli che non vogliono studiare un pò mi girano... almeno, non è così per quelli che vogliono studiare seriamente
Rispondendo a digital: ad info triennale c'è un esame complementare (che è un pò una mazzata) che si chiama sicurezza e mi sembra che esista anche una specialistica.
Il professore tiene una squadra composta dall'elite dei sui studenti per il campionato nazionale di sicurezza.
In pratica hanno 24 (o 48 non ricordo) ore per introdursi in un server e cercare più bug possibili alternandosi nel dormire e el mangiare.
L'esame è molto simile solo che è individuale e dura 12 ore...
alla faccia :D
12 ore x bucare un server? :asd:
Nella realtà ce ne vogliono molte di meno (certo...poi dipende dal server, dalla configurazione e da un numero pressochè infinito di variabili....) perchè se è bucabile lo buchi nel giro di molto meno.
Se non è bucabile per nulla e devi usare attacchi di tipo brute force allora ti serve MOLTO + tempo.
E poi a metà strada ci sono gli attacchi di tipo dictionary...
Ma immagino (anzi spero) che l'esame sia un pò + sofisticato del semplice uso del brute force o del dictionary :mbe:
EDIT:
Ehm....ovviamente stiamo parlando sempre in via teorica :fiufiu:
anchè perchè bucare server è un pò illegale :stordita:
D4rkAng3l
10-03-2007, 10:37
facoltà di informatica: buona parte della gente che entra al primo anno non ha alcuna esperienza in programmazione e chi la ha in genere è perchè viene dall'istituto tecnico che si ti darà delle basi di programmazione...ma in finale è poca roba...
alla faccia :D
12 ore x bucare un server? :asd:
Nella realtà ce ne vogliono molte di meno (certo...poi dipende dal server, dalla configurazione e da un numero pressochè infinito di variabili....) perchè se è bucabile lo buchi nel giro di molto meno.
Se non è bucabile per nulla e devi usare attacchi di tipo brute force allora ti serve MOLTO + tempo.
E poi a metà strada ci sono gli attacchi di tipo dictionary...
Ma immagino (anzi spero) che l'esame sia un pò + sofisticato del semplice uso del brute force o del dictionary :mbe:
EDIT:
Ehm....ovviamente stiamo parlando sempre in via teorica :fiufiu:
anchè perchè bucare server è un pò illegale :stordita:
ma.. sinceramente non lo sò... ho provato a vedere sul sito del corso ma per sicurezza l'esame sembra essere diverso..
# Teoria: domande a risposta libera
# Laboratorio: in base al numero di iscritti sono previste due modalità:
1. numero di iscritti <= 20
* orale
2. numero di iscritti > 20
* "Gioco" a livelli nel quale si useranno i tool visti/spiegati nella parte di laboratorio.
* Quiz a risposte multiple, sugli argomenti visti nella parte di laboratorio.
Parlavano si vede del corso della specialistica tenuto dallo stesso prof, ma di questo non viene specificata la modalità d'esame...
boooh... :rolleyes:
Digital_Style
10-03-2007, 15:58
sarebbe bello poter arrivare all'università e fare parte della squadra scelta dal prof!!
restando in tema di prof, questa mattina in classe mentre leggevo Hj ho visto la lettera di un ragazzo che ha come prof Massimo Marchiori, la persona che ha contribuito alla creazione del WWW e che ha creato l'algoritmo che sta alla base del pagerank di google.leggendo il sito creato dai suoi fan nonchè "allievi"(www.mmfanclub.altervista.org)oltre a scoprire che ne hanno parlato in tv e che ha ricevuto il premio TR100 della Technology Review che va ai milgiori 100ricercatori è si è laureato con il massimo dei voti in matematica e conosce XML e altri linguaggi e sta collaborando allo sviluppo di nuovi motori di ricerca di terza generazione, lavora al MIT di Dublino ecc(è tutto nel link ke vi ho dato).venendo al punto la mia domanda è questa: uno dovrebbe essere anche molto, molto bravo in matematica per fare il programmatore o basta conoscere la matematica che serve alla programmazione?
Digital_Style
10-03-2007, 21:11
up
uno dovrebbe essere anche molto, molto bravo in matematica per fare il programmatore o basta conoscere la matematica che serve alla programmazione?
Si e no...dipende da quello che andrai a fare (o da quello che ti interessa fare) ;)
Digital_Style
12-03-2007, 12:04
emh...se vi dico una cosa allora non mi rivolgerete più la parola...due anni fa ho bocciato e quest'anno è moolto probabile che accada di nuovo...sempre er lo stesso motivo...sto giornate e nottate al computer.comunque io non voglio solo implementare del codice non mio ma creare dei programmi "importanti" e anche "auto-crearmi" i programmi che mi servono...
_Claudio
12-03-2007, 20:17
emh...se vi dico una cosa allora non mi rivolgerete più la parola...due anni fa ho bocciato e quest'anno è moolto probabile che accada di nuovo...sempre er lo stesso motivo...sto giornate e nottate al computer.comunque io non voglio solo implementare del codice non mio ma creare dei programmi "importanti" e anche "auto-crearmi" i programmi che mi servono...
Effettivamente non è una buona pratica perdere anni inutili alle superiori, tieni anche conto che se ti inserisci da laureato nel mondo del lavoro conta tanto anche in quanti anni hai finito gli studi...
Per il resto non preoccuparti, dacci dentro con lo studio e non esagerare con i computer, per adesso pensa a farti delle solide basi di cultura generale, dedicati certo alla programmazione ma non perderci le nottate.
Se frequenterai il corso di laurea che più fa per te imparerai le cose a loro tempo, bene e senza perdere nottate e anni scolastici. Soprattutto se vuoi diventare veramente preparato in questo campo.
Leggi la mia firma qui sotto...
"auto-crearmi" i programmi che mi servono...
Cosa intendi con questa frase? Perchè messa giù così sembra un pò un utopia...
Secondo me piuttosto che metterti ad imparare un linguaggio di programmazione ti conviene studiare per finire il prima possibile le superiori, poi dedicati a tutti gli hobby che vuoi.
Così, scusa se te lo dico, ma è solo una perdita di tempo :rolleyes:
Digital_Style
13-03-2007, 19:07
cioè se uno ad esempio si laurea in uno/due anni di ritardi rispetto al normale è svantaggiato?per il resto avete ragione e la firma di griffo la quoto in pieno, ma io oltre a pensare allo studio posso anche pensare ad imparare la programmazione, ad esempio studiandola nel tempo libero, quando sono nella vasca da bagno o quando non ho niente da fare....che dite?
oltre a questo leggendo in giro ho visto che forse mi converrebbe iniziare con il C o addirittura con Java...voi che ne pensate?
Digital_Style
14-03-2007, 13:00
qualche consiglio?
1. continua con python
2. l'acquisizione di conoscenza, a prescindere dallo scopo, non è mai una perdita di tempo
^TiGeRShArK^
14-03-2007, 15:45
1. continua con python
2. l'acquisizione di conoscenza, a prescindere dallo scopo, non è mai una perdita di tempo
però se al posto di studiare x la scuola passa le nottate al pc x imparare a programmare, quello si che è una perdita di tempo, dato che essendo bocciato si ritroverà a perdere un altro anno.
Probabilmente io attribuisco alla locuzione "perdere tempo" un significato diverso.
beppegrillo
14-03-2007, 18:05
Io vedo le cose secondo due filoni.
L'acquisizione di conoscenze pratiche, che si ottengono solo sbattendoci la testa e "perdendo" tempo. E l'aquisizione di conoscenze teoriche che oltre a rendere più elastico il cervello in situazioni ostiche, elevano la persona da semplice smanettone a qualcosa in più.
Entrambe le cose , prese singolarmente sono insoddisfacenti. Avrai da una parte quegli inutili saccenti accadamici e dall'altra, gli smanettoni della domenica pomeriggio.
Il tutto imho.
^TiGeRShArK^
14-03-2007, 18:40
Probabilmente io attribuisco alla locuzione "perdere tempo" un significato diverso.
x me essere bocciati a scuola equivale alla perdita in toto di un anno di vita :p
poi ognuno ha le sue visioni :D
Io dal canto mio preferisco "perderlo" in altro modo il tempo piuttosto che rifare le stesse cose che avrei già dovuto fare l'anno prima :p
_Claudio
14-03-2007, 18:50
Devi sicuramente conciliare le due cose, studio e interesse alla programmazione, dando precedenza ai saccenti che girano per i corridoi scolastici. Buttarsi a capofitto da smanettone può solo darti soddisfazioni a breve termine e farti acquisire conoscenze approssimative, spesso errate e di dubbia utilità generale.
Phyton l'ho visto di striscio in un corso all'università e non mi sembrava così "amichevole" e maneggevole, se ti trovi bene continua pure con quello certo è che C (meglio C++, è più recente e completo) o Java sono più diffusi, a mio avviso anche più potenti e trattano "internamente" la programmazione grafica che secondo me è cruciale per un linguaggio di programmazione al giorno d'oggi.
Io uso Java in tutto e per tutto, ho usato C++ ma pur essendo potente (a volte troppo e inutilmente) paga in termini di maneggevolezza e immediatezza.
La cosa principale che devi sapere è di non affidarti a tutorial o guide scaricate chissà dove da internet, usa i manuali in italiano e ufficiali che trattano tutto. Io per Java ad esempio ho i Core Java vol.I e II sono completi e ufficiali e sono un ottimo investimento per il futuro.
Scegli un linguaggio completo, ad oggetti, che arriva anche agli strati più bassi del S.O., il più portabile possibile ma soprattutto libero, evita roba .NET in cui il programmatore non è al centro della progettazione ma lo è la licenza che esso stipula per avere il software per sviluppare.
A mio avviso linguaggi tipo Visual Basic sono una presa in giro in quanto, pur essendo all'insegna dell'immediatezza e lode a loro per la quantità di software sviluppato a basso costo (anche se questa si è rivelata un'arma a doppio taglio), il programmatore non ha accesso a profondi livelli sul S.O. e altre cose che è meglio che non ti dica per non confonderti ancora di più le idee.
Devi comunque valutare te.
^TiGeRShArK^
14-03-2007, 18:53
Devi sicuramente conciliare le due cose, studio e interesse alla programmazione, dando precedenza ai saccenti che girano per i corridoi scolastici. Buttarsi a capofitto da smanettone può solo darti soddisfazioni a breve termine e farti acquisire conoscenze approssimative, spesso errate e di dubbia utilità generale.
Phyton l'ho visto di striscio in un corso all'università e non mi sembrava così "amichevole" e maneggevole, se ti trovi bene continua pure con quello certo è che C (meglio C++, è più recente e completo) o Java sono più diffusi, a mio avviso anche più potenti e trattano "internamente" la programmazione grafica che secondo me è cruciale per un linguaggio di programmazione al giorno d'oggi.
Io uso Java in tutto e per tutto, ho usato C++ ma pur essendo potente (a volte troppo e inutilmente) paga in termini di maneggevolezza e immediatezza.
La cosa principale che devi sapere è di non affidarti a tutorial o guide scaricate chissà dove da internet, usa i manuali in italiano e ufficiali che trattano tutto. Io per Java ad esempio ho i Core Java vol.I e II sono completi e ufficiali e sono un ottimo investimento per il futuro.
Scegli un linguaggio completo, ad oggetti, che arriva anche agli strati più bassi del S.O., il più portabile possibile ma soprattutto libero, evita roba .NET in cui il programmatore non è al centro della progettazione ma lo è la licenza che esso stipula per avere il software per sviluppare.
A mio avviso linguaggi tipo Visual Basic sono una presa in giro in quanto, pur essendo all'insegna dell'immediatezza e lode a loro per la quantità di software sviluppato a basso costo (anche se questa si è rivelata un'arma a doppio taglio), il programmatore non ha accesso a profondi livelli sul S.O. e altre cose che è meglio che non ti dica per non confonderti ancora di più le idee.
Devi comunque valutare te.
Non amo particolarmente VB e sono certo che VB 6 era una discreta schifezza.
Ma cmq il .Net ha il suo perchè, specie il c#.
_Claudio
14-03-2007, 20:41
Non amo particolarmente VB e sono certo che VB 6 era una discreta schifezza.
Ma cmq il .Net ha il suo perchè, specie il c#.
Personalmente, pur non essendo molto ferrato in materia, ammetto la mia ignoranza (dovuta soprattutto a mancanza di tempo per via dello studio) ma mi sono bastati pochi elementi per giungere ad una conclusione sulla piattaforma .NET (perdonatemi la presuntuosità).
È proprietaria.
E questo dice tutto, è un po' come se ad un artigiano gli dici: gli strumenti te li fornisco io, lavori solo nel contesto che ti dico io (solo su un certo sistema operativo) e paghi quello che dico io. A differenza di borland, sun e altri che hanno anche loro sviluppato i loro ambienti/linguaggi più o meno di successo ma a parte un primo periodo successivamente li hanno resi disponibili alla grande massa (distribuendo i sorgenti/ambienti di sviluppo e altro), al contrario di chi fornisce la piattaforma .NET.
Inoltre il linguaggio di programmazione non è il fine, ma bensì il mezzo (come ha detto oggi un mio professore) e il mezzo, in questo caso necessario a creare ingegno, deve per forza essere libero e fruibile in tutte le sue forme e agevolazioni, nulla deve essere ristretto per nessuna distinzione di alcun genere (soprattutto per differenza di reddito). In particolare deve esistere un ambiente di sviluppo di libero accesso che permetta di avere le stesse potenzialità di base di quelli a licenza, poi se quelli a licenza vogliono implementare qualcosa di più sono fatti loro, ma in sostanza anche lo sviluppatore "povero" deve avere gli stessi strumenti di base degli altri.
E mentre questo per Java o C++ esiste (soprattutto Java di cui addirittura esiste un editor IDE sviluppato dalla sun stessa e gratuito) per C# non esiste nulla libero e al pari di Visual Studio (parlo sempre di una versione base), o almeno così mi sembra.
beppegrillo
14-03-2007, 21:07
Personalmente, pur non essendo molto ferrato in materia, ammetto la mia ignoranza (dovuta soprattutto a mancanza di tempo per via dello studio) ma mi sono bastati pochi elementi per giungere ad una conclusione sulla piattaforma .NET (perdonatemi la presuntuosità).
È proprietaria.
java era altrettanto proprietario, quindi a meno che non hai deciso di utilizzarlo solo recentemente, hai usato anche te un linguaggio proprietario.
Onestamente non credo che il termine di paragone tra i linguaggi si debba cercare se hanno o meno un ide gratuito..
Considerando che basterebbe il buon vecchio notepad o vim,emacs ecc :P
Digital_Style
14-03-2007, 21:53
ragazzi forse non mi avete capito. è vero perdere un anno(o anche due) della propria vita è bruttissimo e non immaginate come sto male a pensare che ho perso già un anno e rischio di perdere anche questo, però il fatto è che ho voglia, troppa voglia di sapere. la scuola è importante ed è al primo posto infatti mi sto mettendo sotto per recuperare ma ogni minimo millesimo di secondo disponibile sono allo schermo a studiare programmazione o stampo i fogli e me li porto anche quando esco!! la mia situazione è delicata perchè ho un'età nella quale ci sono già ragazzi che sono dei guru della programmazione e io so per forza le basi, vorrei realizzare i miei sogni e recuperare tutti gli anni persi(colpa dei miei che non mi hanno comprato il computer prima!!!).leggendo in giro, su giornali e riviste ho visto che java e c/c++ sono linguaggi molto potenti e che ti danno un controllo sulla macchina diverso rispetto ad esempio a python. è vero, sono difficili, ma credo che sia meglio fare qualche sacrificio in più all'inizio imparando uno di questi linguaggi che non in futuro quando magari ci possono essere e creeranno problemi le lacune lasciate all'inizio degli studi di programmazione.detto questo vorrei sapere se posso passare a c(e poi logicamente a c++)e poi a java oppure prima a java e poi c/c++.se siete d'accordo con me vi fareste un favore anche a linkarmi una guida per questi linguaggi che parta proprio da 0. grazie
@claudio: questi Core Java vol.I e II sono cartacei o si trovano on-line?e sono buoni per uno che parte proprio da 0 come me?
^TiGeRShArK^
14-03-2007, 22:47
Personalmente, pur non essendo molto ferrato in materia, ammetto la mia ignoranza (dovuta soprattutto a mancanza di tempo per via dello studio) ma mi sono bastati pochi elementi per giungere ad una conclusione sulla piattaforma .NET (perdonatemi la presuntuosità).
È proprietaria.
E questo dice tutto, è un po' come se ad un artigiano gli dici: gli strumenti te li fornisco io, lavori solo nel contesto che ti dico io (solo su un certo sistema operativo) e paghi quello che dico io. A differenza di borland, sun e altri che hanno anche loro sviluppato i loro ambienti/linguaggi più o meno di successo ma a parte un primo periodo successivamente li hanno resi disponibili alla grande massa (distribuendo i sorgenti/ambienti di sviluppo e altro), al contrario di chi fornisce la piattaforma .NET.
Inoltre il linguaggio di programmazione non è il fine, ma bensì il mezzo (come ha detto oggi un mio professore) e il mezzo, in questo caso necessario a creare ingegno, deve per forza essere libero e fruibile in tutte le sue forme e agevolazioni, nulla deve essere ristretto per nessuna distinzione di alcun genere (soprattutto per differenza di reddito). In particolare deve esistere un ambiente di sviluppo di libero accesso che permetta di avere le stesse potenzialità di base di quelli a licenza, poi se quelli a licenza vogliono implementare qualcosa di più sono fatti loro, ma in sostanza anche lo sviluppatore "povero" deve avere gli stessi strumenti di base degli altri.
E mentre questo per Java o C++ esiste (soprattutto Java di cui addirittura esiste un editor IDE sviluppato dalla sun stessa e gratuito) per C# non esiste nulla libero e al pari di Visual Studio (parlo sempre di una versione base), o almeno così mi sembra.
Appunto nel framework .Net il linguaggio è solo il mezzo e non il fine dato che i vari linguaggi sono perfettamente interscambiabili tra loro.
Le implementazioni del .net framework sono free e ce n'è anke una x linux kiamata mono (certo rimasta parecchio indietro rispetto all'equivalente MS).
Il top per programmare con .Net è indubbiamente il visual Studio.
E infatti c'è una versione free dei vari editor, la versione express, utilizzabile gratuitamente, le cui carenze fondamentali se non erro sono il supporto ai team (cose che cmq con un buon server svn o cvs vengono fatte + ke adeguatamente)
Digital_Style
14-03-2007, 23:18
per info...ho letto sempre in questa sezione di un utente che sembra avere i miei stessi complessi.ha postato un link http://ctrlaltcanccorp.altervista.org/flatnuke-2.5.8.1/index.php. questo ragazzo ha 15 anni e guardate, ha fatto 40programmi tutti suoi e che programmi...io nei sogni farò queste cose...19anni di vita sprecata.bha
Se ti piacciono quei programmi studiali, cerca di capire come sono fatti, prova a farli tu stesso eccetera eccetera. Animo, fiducia in sè stessi e coltello tra i denti.
h1jack3r
15-03-2007, 13:01
Do anche io il mio piccolo contributo alla discussione, cercando di trarre una sorta di somma di quello che si è detto finora.
Quello che più è importante non è saper programmare in maniera perfetta a 19 o 20 anni. Ogni cosa che fai devi sapere che c'è qualcuno che nel mondo la saprà fare meglio di te, o che comunque ha le capacità per svolgere quel lavoro meglio di te. Se ti butti giù sapendo questo rimarrai sempre indietro, crederai sempre di essere un fallito e non andrai da nessuna parte.
Quello che più è importante non è diventare il guru di un certo linguaggio di programmazione, o saper fare benissimo una cosa sola. Questo vale maggiormente nel campo dell'informatica, uno dei mondi più mutevoli che esistano.
Cosa fare allora? Per prima cosa sono importantissime le basi, e se fai una buona scuola superiore (liceo o quant'altro) che ti dà una preparazione e un'elasticità mentale ampia sarai avvantaggiato in ogni giorno della tua vita. In Italia abbiamo ancora una forte impronta umanistica nei licei, cerchiamo di sfruttarla al meglio! Ricordo che nelle migliori scuole del mondo il latino rientra negli insegnamenti che si è tenuti a fare.
Una volta preso il tuo diploma puoi seriamente dedicarti all'informatica, ma non credere di andare a seguire un corso di laurea in informatica o in ingegneria informatica e di programmare tutto il giorno. Ti troverai davanti ad esami che ti forniscono le basi per capire in che mondo ti stai affacciando e ti daranno gli strumenti per capire. Allora potrai fare la scelta per specializzarti in un ambito o in un altro dell'informatica.
Per "farti i programmini da solo" ti scarichi una versione express del .NET di Microsoft e segui un tutorial, farai magari anche programmi complessi, senza sapere minimamente cosa c'è sotto. Quello hce voglio dire è: se l'informatica è una tua passione, ci vuoi vivere, ci vuoi lavorare, vuoi CAPIRE, non hai paura dell'enorme studio che porta...allora buttati a capofitto in un'università. Se quello che vuoi fare è passare il tempo libero creando programmini più o meno utili e toglierti qualche soddisfazione, allora da autodidatta ce la puoi fare benissimo.
In ogni caso sappi che troverai sempre gente che sarà capace di stupirti per le sue conoscenze in questo campo.
spero di no anche io ho iniziato a 19.. :) è il mio primo messaggio, qui..
_Claudio
15-03-2007, 14:40
ragazzi forse non mi avete capito. è vero perdere un anno(o anche due) della propria vita è bruttissimo e non immaginate come sto male a pensare che ho perso già un anno e rischio di perdere anche questo, però il fatto è che ho voglia, troppa voglia di sapere. la scuola è importante ed è al primo posto infatti mi sto mettendo sotto per recuperare ma ogni minimo millesimo di secondo disponibile sono allo schermo a studiare programmazione o stampo i fogli e me li porto anche quando esco!! la mia situazione è delicata perchè ho un'età nella quale ci sono già ragazzi che sono dei guru della programmazione e io so per forza le basi, vorrei realizzare i miei sogni e recuperare tutti gli anni persi(colpa dei miei che non mi hanno comprato il computer prima!!!).leggendo in giro, su giornali e riviste ho visto che java e c/c++ sono linguaggi molto potenti e che ti danno un controllo sulla macchina diverso rispetto ad esempio a python. è vero, sono difficili, ma credo che sia meglio fare qualche sacrificio in più all'inizio imparando uno di questi linguaggi che non in futuro quando magari ci possono essere e creeranno problemi le lacune lasciate all'inizio degli studi di programmazione.detto questo vorrei sapere se posso passare a c(e poi logicamente a c++)e poi a java oppure prima a java e poi c/c++.se siete d'accordo con me vi fareste un favore anche a linkarmi una guida per questi linguaggi che parta proprio da 0. grazie
@claudio: questi Core Java vol.I e II sono cartacei o si trovano on-line?e sono buoni per uno che parte proprio da 0 come me?
Se vuoi un consiglio non stare a guardare troppo gli altri, va bene ci saranno 15enni "genietti" ma lascia perdere, che ti frega, guarda quello che vuoi fare te e non avere troppa foga nelle cose, come ti ho detto dai tempo al tempo.
Soprattutto se fai qualcosa falla bene e fino in fondo, ossia se inizi con Java o C++ (se vuoi imparare C++ non iniziare dal C è come studiare 2 volte la stessa cosa) impara a fondo quello che scegli, come campo d'azione sono uguali (forse un po' più ampio il C++) e come difficoltà anche (forse un po' più semplice e usabile Java). Non affidarti a comodi manuali on-line o miniguide da 7€. Dei Core Java ci sono versioni su internet in inglese (ma ovviamente non legali) io ti consiglio di acquistarli tutti e due, spenderai 100€ circa ma hai una buona base da cui iniziare. Non leggerli come fosse un libro di racconti, i libri di programmazione non vanno "usati" così, leggi sempre tutti i primi capitoli e studiali bene, ossia di solito quelli che ti spiegano i fondamenti del linguaggio, dei restanti dai un'occhiata veloce ai titoli e quando ti serve qualcosa leggi ciò che ti interessa. Inizia poi magari a fare un programma che interessa a te e quando ti serve qualcosa di diverso (tipo l'implementazione di una interfaccia grafica o l'uso di tecniche avanzate) leggi il capitolo che ti serve. Sui Core Java trovi il 90% di Java (e sono anche i libri ufficiali).
Per quanto riguarda ambienti&libertà so benissimo che Java fino a poco tempo fa era proprietario ma dava comunque molto ascolto a quello che la comunità di sviluppatori desiderava, ed ora difatti è libero, cosa che non succede in altri contesti.
Un ambiente di sviluppo IDE disponibile gratuitamente è molto importante poichè semplifica ed evita molti rompicapo dando una visione immediata a di insieme di ciò che accade (soprattutto per lo sviluppo ad oggetti), cosa che un semplice editor testuale con supporto al linguaggio non offre assolutamente.
Le versioni express di Visual Studio sono una gran cosa, senza dubbio, ma avreste dovuto vedere quante remore da parte di microsoft per pubblicarle e soprattutto mantenerle nella loro versione gratuita (è risaputo che in un'azienda per massimizzare i profitti si devono limitare i servizi "free") e inoltre, entrambo in ambito molto più generale se si vuole fare progresso e ricerca questo deve essere per forza di cose independente da politiche di bilancio ecc... per una serie di motivi che non sto qui ad elencare perchè sono ovvi e palesi.
Per questi motivi diffido fortemente dalla piattaforma .net, ma è una mia personale sensazione (condivisa poi dalla quasi totalità dell'ambiente accademico).
h1jack3r
15-03-2007, 15:35
Per questi motivi diffido fortemente dalla piattaforma .net, ma è una mia personale sensazione (condivisa poi dalla quasi totalità dell'ambiente accademico).
Non voglio fare flame... ma non posso non notare "accademico"
C'è questa sorta di frattura... la piattaforma .NET è molto usata nell'industria ed è giustamente snobbata dal mondo accademico in quanto è proprietaria, indi per cui per l'insegnamento e la ricerca si tende ad usare altre piattaforme free. Resta il fatto che con .NET puoi creare da subito programmini a volte anche abbastanza complessi (magari poco efficenti :) ) con un feedback immediato e senza grandi conoscenze di programmazione.
_Claudio
15-03-2007, 16:08
Non voglio fare flame... ma non posso non notare "accademico"
C'è questa sorta di frattura... la piattaforma .NET è molto usata nell'industria ed è giustamente snobbata dal mondo accademico in quanto è proprietaria, indi per cui per l'insegnamento e la ricerca si tende ad usare altre piattaforme free. Resta il fatto che con .NET puoi creare da subito programmini a volte anche abbastanza complessi (magari poco efficenti :) ) con un feedback immediato e senza grandi conoscenze di programmazione.
Quello che dici è verissimo, sono d'accordissimo con te, difatti spesso e volentieri quello sviluppato con una pura ottica di profitto immediatamente e senza troppa "cura" o conoscenza reale risulta essere scadente e genera profitto a brevissimo termine, spesso non funziona neanche e il committente risulta insoddisfatto. Secondo me, per tenere in piedi la baracca bisognerebbe fare un 50% e 50%, metà delle risorse per ricerca e risorse free e l'altra metà per il profitto (senza soldi purtroppo non si campa), ma questo non succede e come nell'informatica in molti altri campi (soprattutto in italia). Ma con questo entreremmo in un discorso sociale e politico dalla quale non ne usciremmo più e non basterebbe tutto il forum per svilupparlo. Purtroppo anche un po' fine a se stesso visto che la classe politica non fa e non farà nulla.
h1jack3r
15-03-2007, 16:46
Purtroppo anche un po' fine a se stesso visto che la classe politica non fa e non farà nulla.
Spesso la classe politico-accademica stessa :D
Digital_Style
15-03-2007, 19:59
allora volevo dire due cose:
1)nel mondo nessuno sa tutto su un certo campo e c'è sempre da imparare da tutti, anche dai meno esperti o dai principianti e l'idea di sapere che ci sono persone più brave di te ti spinge a dventare sempre più bravo perchè speri un giorno di superarle e questo è un motivo per andare avanti
2)allora... C++, Java, Visual Basic e Visual C#. se vi ricordate, il link che ho messo qualche post dietro, del sito di quel ragazzo che ha 15anni ha fatto già molti programmini interessanti, se avete letto la sua "storia" c'è messo che ha iniziato per caso e adesso eccolo qua. non credo sia un genio eppure fa quello che avete visto ed è stato pubblicato anche un pò di volte su hj. sapete in che linguaggio programma? visual basic. io non dico che python sia da buttare, ma credo che sia meglio iniziare con un linguaggio più difficile anche se avrò più difficoltà.avevo detto prima C/C++ e java.adesso dato che avete detto ke sarebbe meglio iniziare dal c++ dato che è come il c ma più avanzato restano c++ e java, ma ho aggiunto anche visual basic e visual c# dato che si è preso discorso di piattaforma microsoft.alla fine tra questi 4 linguaggi quale è il più potente, difficile, che mi permette poi di imparare più semplicemente altri linguaggi, che è adatto ad una persona che non ha mai programmato e parte da zero come me?visual basic o visual c# come vi sembra per iniziare per poi passare a c++ o java?(dipende che devo fare logicamente!)
edit:guardando nel sito che ho linkato qualche post prima ho visto che il visual basic è ottimo per iniziare a programmare e si possono fare anche molte cose.la domanda che mi pongo è questa?se volessi poi passare ad imparare un altro linguaggio mi verrebbe facile il "trasferimento"? nel frattempo guardando sul sito della microsoft ho trovato il download della piattaforma per sviluppo, la express(e credo che sia gratuita questa)ecco il link http://www.microsoft.com/italy/msdn/prodotti/vs2005/editions/stdexp.mspx guardate alla destra della pagina, dove c'è messo Download, ci sono tante piattaforme, quale dovrei scaricare?
Se Visual Basic ti attira, provare a vedere com'è non costa nulla :).
_Claudio
15-03-2007, 21:15
allora volevo dire due cose:
1)nel mondo nessuno sa tutto su un certo campo e c'è sempre da imparare da tutti, anche dai meno esperti o dai principianti e l'idea di sapere che ci sono persone più brave di te ti spinge a dventare sempre più bravo perchè speri un giorno di superarle e questo è un motivo per andare avanti
2)allora... C++, Java, Visual Basic e Visual C#. se vi ricordate, il link che ho messo qualche post dietro, del sito di quel ragazzo che ha 15anni ha fatto già molti programmini interessanti, se avete letto la sua "storia" c'è messo che ha iniziato per caso e adesso eccolo qua. non credo sia un genio eppure fa quello che avete visto ed è stato pubblicato anche un pò di volte su hj. sapete in che linguaggio programma? visual basic. io non dico che python sia da buttare, ma credo che sia meglio iniziare con un linguaggio più difficile anche se avrò più difficoltà.avevo detto prima C/C++ e java.adesso dato che avete detto ke sarebbe meglio iniziare dal c++ dato che è come il c ma più avanzato restano c++ e java, ma ho aggiunto anche visual basic e visual c# dato che si è preso discorso di piattaforma microsoft.alla fine tra questi 4 linguaggi quale è il più potente, difficile, che mi permette poi di imparare più semplicemente altri linguaggi, che è adatto ad una persona che non ha mai programmato e parte da zero come me?visual basic o visual c# come vi sembra per iniziare per poi passare a c++ o java?(dipende che devo fare logicamente!)
edit:guardando nel sito che ho linkato qualche post prima ho visto che il visual basic è ottimo per iniziare a programmare e si possono fare anche molte cose.la domanda che mi pongo è questa?se volessi poi passare ad imparare un altro linguaggio mi verrebbe facile il "trasferimento"? nel frattempo guardando sul sito della microsoft ho trovato il download della piattaforma per sviluppo, la express(e credo che sia gratuita questa)ecco il link http://www.microsoft.com/italy/msdn/prodotti/vs2005/editions/stdexp.mspx guardate alla destra della pagina, dove c'è messo Download, ci sono tante piattaforme, quale dovrei scaricare?
Guarda, secondo me VB è una presa in giro, praticamente è un giocattolo, è facile sì costruire applicazioni ma distoglie da quelli che sono i problemi teorici che una persona che deve sviluppare software si deve porre per renderlo efficiente. Non è facile da spiegare la fregatura che si cela dietro VB, specie se non hai solide basi e non hai mai visto VB. E poi soprattutto è chiuso alla piattaforma .NET o comunque al mondo windows, e questa mi sembra una forte limitazione.
Se vuoi iniziare dal più completo e difficile inizia da C++, che racchiude tutta la logica della programmazione, dalle classi ai puntatori.
^TiGeRShArK^
15-03-2007, 21:50
Guarda, secondo me VB è una presa in giro, praticamente è un giocattolo, è facile sì costruire applicazioni ma distoglie da quelli che sono i problemi teorici che una persona che deve sviluppare software si deve porre per renderlo efficiente. Non è facile da spiegare la fregatura che si cela dietro VB, specie se non hai solide basi e non hai mai visto VB. E poi soprattutto è chiuso alla piattaforma .NET o comunque al mondo windows, e questa mi sembra una forte limitazione.
Se vuoi iniziare dal più completo e difficile inizia da C++, che racchiude tutta la logica della programmazione, dalle classi ai puntatori.
Se già si sta scoraggiando con python dirgli di passare al C++ è come condannarlo a morte certa :asd:
Io dal canto mio ho iniziato in illo tempore (e si...anke ai miei tempi si parlava latino PGI :asd: ) col BASIC e col QUICK BASIC (non il VISUAL basic ke è tutt'altra cosa :p).
E cmq alla fine non è tanto il linguaggio utilizzato ma quello che riesci a fare che ti da soddisfazioni.
A me personalmente dava + soddisfazione buttare sangue per fare una programma di grafica vettoriale MOLTO rudimentale in basic che catturare video dal cellulare.
Comunque IMHO come apertura mentale il Visual Basic non lo consiglio.
E' concettualmente un pò troppo diverso dagli altri linguaggi...
e se 15 anni fa il BASIC dava le sue soddisfazioni, magari oggi il visual basic ne darà un pò meno rispetto ad altri linguaggi IMHO ben + evoluti.
Alla fine l'importante è imparare a PROGRAMMARE non imaprare UN LINGUAGGIO.
sono due cose completamente distinte e separate :p
Digital_Style
16-03-2007, 07:46
tigershark devo correggerti su una cosa.io non mi sono scoraggiato con python, ma semplicemene ho deciso di riflettere meglio con quale linguaggio iniziare. facile o difficile che sia non importa perchè non c'è nulla di facile nel mondo, sopratutto nel mondo dell'informatica e più specificamente della programmazione. io credo che come ha detto tigershark l'importante non è il linguaggio ma saper programmare. forse per un principiante il vb è ottimo ma come ha detto claudio distoglie da quelli che sono i problemi teorici che una persona che deve sviluppare software si deve porre per renderlo efficiente. ora la domanda finale(dato che ho perso davvero troppo tempo a pensare!!)è questa:il vb è buono per iniziare?avrò difficoltà in futuro passare ad un altro linguaggio tipo c++ o java?oppure mi conviene iniziare direttamente da java o c++?
p.s.volevo fare un'altra precisazione a claudio.il .net non è solo per windows ma c'è anche lo sharpdevelop per linux che ti permette di programmare in .net anche sul pinguino
Penso che VB sia un linguaggio adatto per iniziare solo se vuoi essere da subito produttivo. Tutti i libri di VB che ho visto hanno un'impronta molto pratica e poco teorica. Per questo penso che sia sconsigliabile per uno, come te, che mi sembra voglia fare un certo percorso di apprendimento.
Come ti avevo già detto il Python va benissimo per imparare, ma non per starci sopra anni, semplicemente perché il mercato del lavoro richiede altro. Ti consiglio di imparare questo linguaggio perché su Linux sta prendendo davvero piede (nota che se disinstalli l'interprete Python su alcune distribuzioni porti via mezzo sistema con le dipendenze).
A maggior ragione ti consiglio di continuare perché se andrai a fare una facoltà informatica il Python probabilmente non lo vedrai. Quindi per te sarebbe sicuramente un vantaggio rispetto alle altre persone ;)
_Claudio
16-03-2007, 08:48
tigershark devo correggerti su una cosa.io non mi sono scoraggiato con python, ma semplicemene ho deciso di riflettere meglio con quale linguaggio iniziare. facile o difficile che sia non importa perchè non c'è nulla di facile nel mondo, sopratutto nel mondo dell'informatica e più specificamente della programmazione. io credo che come ha detto tigershark l'importante non è il linguaggio ma saper programmare. forse per un principiante il vb è ottimo ma come ha detto claudio distoglie da quelli che sono i problemi teorici che una persona che deve sviluppare software si deve porre per renderlo efficiente. ora la domanda finale(dato che ho perso davvero troppo tempo a pensare!!)è questa:il vb è buono per iniziare?avrò difficoltà in futuro passare ad un altro linguaggio tipo c++ o java?oppure mi conviene iniziare direttamente da java o c++?
p.s.volevo fare un'altra precisazione a claudio.il .net non è solo per windows ma c'è anche lo sharpdevelop per linux che ti permette di programmare in .net anche sul pinguino
cionci ha perfettamente ragione su VB, programmare in .net su linux è come partecipare ad un gran premio con la 500 (con tutto il rispetto per questo modello che è una figata), è pur sempre qualcosa di adattato e non progettato per essere portabile.
Riguardo python se ti trovi bene continua pure, è un linguaggio come altri. Il mio consiglio rimane di orientarsi più a C++ o Java che sono più completi.
Digital_Style
16-03-2007, 15:00
a quanto ho capito il vostro consiglio è di escludere il Vb, ma non capisco molto bene perché dato che ho visto(prendendo sempre come esempio il sito di qualche post fa) che si possono fare molte applicazioni molto interessanti e anche velocemente. Arrivati a questo punto credo che ho solo due possibilità
1)iniziare con vb SOLO se poi mi verrebbe facile passare ad un altro linguaggio, dato che come ha detto cionci il mercato del lavoro credo che richieda altro(e non credo che richieda python)almeno per il momento
2)iniziare direttamente da c++ o java
quale dovrei scegliere?io ho sempre ritenuto che non è importante gli strumenti che si hanno ma come si utilizzano.potrei avere tutti gli strumenti di questo mondo ma non saperli usare oppure avere poco ma saper sfruttare il massimo da questo poco. siccome ci sono molti di voi che hanno esperienza mi farebbe piacere avere una vostra opinione e specifico che non voglio abbandonare python perchè non lo capisco o mi sembra difficile ma semplicemente perchè vorrei valutare la scelta di un linguaggio usato multipiattaforma e che mi permetta di fare ciò che voglio.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.