View Full Version : [C++] caricamento di un vettore, non funziona
CioKKoBaMBuZzo
26-07-2009, 22:23
ciao a tutti
premetto che sono molto poco esperto, ho giusto rispolverato oggi degli appunti vecchi di due anni (anni durante i quali non ho più usato nessun linguaggio di programmazione).
il mio problema è che non riesco a capire dove questo codice sia sbagliato, perchè credo che la matrice f[8][8][8] venga caricata in maniera corretta, ma poi il prog non mi fa visualizzare i suoi valori
help please :help:
int main(){
int n,h,j,i,g,p,w;
int f[8][8][8];
for(g=2;g==10;g++){
for(i=2;i==10;i++){
for(j=2;j==10;j++){
for(h=2;h==10;h++){
if((h==j)&&(h==i)&&(h==g)){
f[g-2][i-2][j-2]=3;}
else{
if((h==j)^(h==i)^(h==g)){
f[g-2][i-2][j-2]=1;}
else{
if(((h==j)&&(h==i))^((h==j)&&(h==g))^((h==i)&&(h==g))){
f[g-2][i-2][j-2]=2;}
else{
f[g-2][i-2][j-2]=0;}}}
}
}
}
}
for(g=0;g==8;g++){
for(i=0;i==8;i++){
for(j=0;j==8;j++){
cout<<f[g][i][j]<<endl;
}
}
}
return 0;
}
giusto per la cronaca, questo progamma dovrebbe simulare alcune situazioni di una mano di black jack.
praticamente vengono distribuite 3 carte (una al banco e due al giocatore, rispettivamente g, i, j) e successivamente ne viene data un'altra sempre al giocatore (h).
la varibaile f deve essere:
0 se tutte e tre le carte iniziali sono diverse da h
1 se una delle tre carte iniziali è uguale ad h
2 se due delle tre carte iniziali sono uguali ad h
3 se tutte e tre le carte iniziali sono uguali ad h
la situazione prende in esame solo l'uscita di carte dal 2 al 10 (compresi jack, donna, re che valgono 10), praticamente escluso l'asso che merita un discorso a parte.
in seguito dovrò calcolare la probabilità che, data una certa configurazione iniziale, esca una carta piuttosto che un'altra
edit: sbagliato il titolo..vabbè
edit2: piattaforma windows, mi ero dimenticato
le condizioni di tutti i cicli sono sbagliate: nessun enunciato viene eseguito.
se fai per esempio
for(i = 0; i == 5; ++i)
;
poni i uguale a zero confronti se i vale cinque, non vale cinque(false) quindi non entra nemmeno nel ciclo.
http://img16.imageshack.us/img16/9763/codinghorror.gif
CioKKoBaMBuZzo
27-07-2009, 09:51
eh uè ve l'ho detto che sono niubbo :D
ma scusate nel ciclo for la seconda condizione non è quella raggiunta la quale il ciclo si ferma? nel senso, riprendendo l'esempio:
for(i = 0; i == 5; ++i)
;
non significa: per i che vale 0, finchè non vale 5, esegui il ciclo e incrementa i di 1 ad ogni passaggio?
CioKKoBaMBuZzo
27-07-2009, 09:59
comunque ho modificato il codice, mi sono accorto anche di un altro errore tra l'altro
int main(){
int n,h,j,i,g,p,w;
int f[8][8][8][8];
for(g=2;g<11;g++){
for(i=2;i<11;i++){
for(j=2;j<11;j++){
for(h=2;h<11;h++){
if((h==j)&&(h==i)&&(h==g)){
f[g-2][i-2][j-2][h-2]=3;}
else{
if((h==j)^(h==i)^(h==g)){
f[g-2][i-2][j-2][h-2]=1;}
else{
if(((h==j)&&(h==i))^((h==j)&&(h==g))^((h==i)&&(h==g))){
f[g-2][i-2][j-2][h-2]=2;}
else{
f[g-2][i-2][j-2][h-2]=0;}}}
}
}
}
}
for(g=0;g<9;g++){
for(i=0;i<9;i++){
for(j=0;j<9;j++){
for(h=2;h<11;h++){
cout<<f[g][i][j][h]<<endl;
}
}
}
}
return 0;
}
però quando faccio partire il programma mi si impianta, non fa niente finchè non lo termino
Io credo che ci capiresti di più se scomponessi il tuo codice che so, in funzioni con un nome sensato :asd:
4 for uno dentro l'altro con complessi if dentro sono IL MALE :asd:
Prova quindi a scomporre tutto in funzioni semplici, tentando di capire ogni pezzetto di codice cosa fa, e come renderlo riutilizzabile.
L'errore uscirà fuori quasi da solo.
il ciclo va avanti fintanto che la condizione è vera
banryu79
27-07-2009, 12:05
4 for uno dentro l'altro con complessi if dentro sono IL MALE :asd:
Ho un amico cinese che programma così :asd:
ma qual è l'alternativa ai cicli?
http://img16.imageshack.us/img16/9763/codinghorror.gif
http://img16.imageshack.us/img16/9763/codinghorror.gif
non intendevo le conseguenze, lo sai bene :D
non intendevo le conseguenze, lo sai bene :D pardon, non mi riferivo a te, era il mio generico ulteriore contributo al topic :D
DanieleC88
27-07-2009, 14:33
http://4.bp.blogspot.com/_dcdi--LdAeQ/Sa1sWd8j4pI/AAAAAAAAEBg/BGX_vc32JHc/s400/wtf.jpg
yggdrasil
27-07-2009, 15:01
eh uè ve l'ho detto che sono niubbo :D
ma scusate nel ciclo for la seconda condizione non è quella raggiunta la quale il ciclo si ferma?
no, il for e il while in c ciclano per vero non per falso.
CioKKoBaMBuZzo
27-07-2009, 19:35
no, il for e il while in c ciclano per vero non per falso.
cazzo perchè nessuno me l'ha mai detto?
ok ho capito grazie :D
comunque continuerò a postare cose orribili in questo thread quindi state pronti :read:
se poia vete capito cosa voglio fare e avete un modo più semplice per farlo che non utilizzi matrici quadridimensionali ditemelo eh
Energy++
27-07-2009, 20:36
Io credo che ci capiresti di più se scomponessi il tuo codice che so, in funzioni con un nome sensato :asd:
4 for uno dentro l'altro con complessi if dentro sono IL MALE :asd:
Prova quindi a scomporre tutto in funzioni semplici, tentando di capire ogni pezzetto di codice cosa fa, e come renderlo riutilizzabile.
L'errore uscirà fuori quasi da solo.
Dopo aver fatto l'esame di programmazione 1 mi ero convinto del contrario, infatti il professore mi aveva penalizzato perchè avevo semplificato il codice utilizzando le funzioni...
Se lui non vedeva almeno 4-5 cicli for annidati non era contento :rolleyes:
Dopo aver fatto l'esame di programmazione 1 mi ero convinto del contrario, infatti il professore mi aveva penalizzato perchè avevo semplificato il codice utilizzando le funzioni...
Se lui non vedeva almeno 4-5 cicli for annidati non era contento :rolleyes:
Complimenti hai beccato un idiota :asd:
Da me invece, per fortuna, fanno esattamente il contrario (esagerando anche a volte).
si ma non mi avete detto ancora qual è l'alternativa ai cicli :O
DanieleC88
28-07-2009, 13:11
si ma non mi avete detto ancora qual è l'alternativa ai cicli :O
Non c'è "alternativa", sono uno dei costrutti fondamentali per ogni linguaggio di programmazione che sia Turing-completo (se non ricordo male, basta il while per implementare tutti i costrutti più complessi).
Anzi, tie', c'è proprio il teorema di Böhm-Jacopini (http://it.wikipedia.org/wiki/Teorema_di_B%C3%B6hm-Jacopini) a riguardo (visto che, da buon matematico, i teoremi saranno il tuo pane quotidiano :p).
banryu79
28-07-2009, 13:26
si ma non mi avete detto ancora qual è l'alternativa ai cicli :O
Le automobili :Prrr:
DanieleC88
28-07-2009, 13:29
:asd:
Non c'è "alternativa", sono uno dei costrutti fondamentali per ogni linguaggio di programmazione che sia Turing-completo (se non ricordo male, basta il while per implementare tutti i costrutti più complessi).
Anzi, tie', c'è proprio il teorema di Böhm-Jacopini (http://it.wikipedia.org/wiki/Teorema_di_B%C3%B6hm-Jacopini) a riguardo (visto che, da buon matematico, i teoremi saranno il tuo pane quotidiano :p).
ah ok, pensavo di essermi perso qualcosa. :p
speriamo davvero di essere un buon matematico :muro: :muro:
Le automobili :Prrr:
:Prrr:
malocchio
30-07-2009, 18:05
Propongo CMP e JMP :asd:
DanieleC88
30-07-2009, 18:58
Propongo CMP e JMP :asd:
E ti credo, senza CMP e JMP non esisterebbero cicli né computer. :O
rеpne scasb
30-07-2009, 20:16
■
Io un idea su come togliere da un linguaggio di programmazione cicli e if l'avrei.
siamo tutt'orecchi :p
yggdrasil
30-07-2009, 20:51
Io un idea su come togliere da un linguaggio di programmazione cicli e if l'avrei.
sentiamo un po' la genialata :asd:
rеpne scasb
30-07-2009, 21:13
■
astorcas
30-07-2009, 22:16
Io un idea su come togliere da un linguaggio di programmazione cicli e if l'avrei.
ho seguito qualche tuo intervento e so che non sei una sprovveduta, perciò... sono curioso anch'io perché quest'affermazione è un po' azzardata! :asd:
rеpne scasb
30-07-2009, 22:55
■
yggdrasil
30-07-2009, 23:25
Se lo sberleffo, la presa in giro e il dileggio, vuole essere il filo che segnera' i tuoi interventi nei miei confronti in questa discussione, sappi che allora non sentirai nulla.
non è uno sberleffo, è solo che mi stai dicendo che il teorema di bohm jacopini non è più valido e una cosa de genere deve essere dimostrata rigorosamente. stiamo parlando di una branca della matematica. le intuizioni qui non esistono come non esistono i metodi empirici. se non me lo dimostri la cosa non esiste. ;)
_Claudio
30-07-2009, 23:31
si ma non mi avete detto ancora qual è l'alternativa ai cicli :O
l'unrolling se hai una vita da perdere a scrivere un milione di istruzioni e il limite è fisso e finito.
_Claudio
30-07-2009, 23:41
x repne:
Ma l'implementazione di un eventuale compilatore di quello che tu dici necessita della generazione di codice con CMP e JMP questo perchè bisogna stare attenti che il teorema di JB non è un enunciato costruito sulla programmazione, sul codice, la sua dimostrazione rigorosa non centra un fico secco col codice, bensì sul ragionamento intrinseco che sta dietro ad un algoritmo e quindi DIETRO al codice.
La sua formulazione sarebbe da tradurre come ogni problema può essere risolto mediante l'uso di iterazioni logiche il cui FLUSSO è identificabile con: sequenza, selezione e ciclo.
Poi nell'evoluzione sono stati inventati altri formalismi e altre teorie (es. programmazione ad oggetti) che facilitano la sola progettazione e astrazione mentale del software (soluzione al problema). Guarda caso i programmi implementati ad oggetti non hanno prestazioni migliori rispetto quelli procedurali (assumendo che il programmatore che scrive entrambe le soluzioni sia perfetto), questo proprio perchè di base vale JB e il flusso di esecuzione nella soluzione ottima al problema e a parità di dati segue lo stesso FLUSSO di istruzioni a livello macchina nel caso di programma ad oggetti e di programma procedurale.
malocchio
30-07-2009, 23:57
a.is.monodimensional.array.whit.index.from.2.to.5000
b.is.monodimensional.array.whit.elements.from.2.to.c
assign.5000.divide.2.to.c
assign.zero.to.all.elements.of.a
assign.one.to.all.divisible.index.of.a.by.b.foreach.b
search.first.index.of.a.whit.element.set.to.zero
print.this
assign.this.to.b
Ma sinceramente mi sembra che sia come scrivere del codice SQL!
L'hai detto tu, le variabili sono da vedere come insiemi di dati, come nell'SQL. Ma questo non vuol dire che nell'esecuzione del codice non siano presenti dei normali cicli (torniamo ai CMP JNE :asd:).
E, se no, dove sta la differenza?
non è uno sberleffo, è solo che mi stai dicendo che il teorema di bohm jacopini non è più valido e una cosa de genere deve essere dimostrata rigorosamente. stiamo parlando di una branca della matematica. le intuizioni qui non esistono come non esistono i metodi empirici. se non me lo dimostri la cosa non esiste. ;)
La tua interpretazione del teorema che citi non è corretta. Non c'è nulla in quanto detto da repne che lo violi.
E' soltanto un idea....
Per come la metti l'idea è tutt'altro che congetturale. Tutta la programmazione funzionale, ad esempio, si basa sulla possibilità di rappresentare algoritmi attraverso sequenze di simboli strutturalmente identici. Ma non solo quella. Anche un programma orientato agli oggetti è strutturalmente ricorsivo. Ricorsività che poi ti permette di srotolare - coi limiti che conosci infintamente meglio di me - e sovrascrivere.
Di simile c'è parecchio ma direi solo visivamente. Ad esempio se al posto dei punti metti qualche due punti e un punto e virgola sembra smalltalk, però là le cose funzionano combinando strutture molto diverse. Probabilmente è la definizione ricorsiva del messaggio che porta a queste somiglianze visive.
Comunque l'idea di una grammatica che permetta di esprimersi naturalmente non è malvagia, anzi.
:D E se adesso salta fuori cdmauro con python gli tiro una makumba :D.
E' soltanto un idea....
Per come la metti l'idea è tutt'altro che congetturale. Tutta la programmazione funzionale, ad esempio, si basa sulla possibilità di rappresentare algoritmi attraverso sequenze di simboli strutturalmente identici. Ma non solo quella. Anche un programma orientato agli oggetti è strutturalmente ricorsivo. Ricorsività che poi ti permette di srotolare - coi limiti che conosci infintamente meglio di me - e sovrascrivere.
Di simile c'è parecchio ma direi solo visivamente. Ad esempio se al posto dei punti metti qualche due punti e un punto e virgola sembra smalltalk, però là le cose funzionano combinando strutture molto diverse. Probabilmente è la definizione ricorsiva del messaggio che porta a queste somiglianze visive.
Comunque l'idea di una grammatica che permetta di esprimersi naturalmente non è malvagia, anzi.
:D E se adesso salta fuori cdmauro con python gli tiro una makumba :D.
rеpne scasb
31-07-2009, 06:34
■
cdimauro
31-07-2009, 07:33
:D E se adesso salta fuori cdmauro con python gli tiro una makumba :D.
Salto fuori soltanto per evidenziare come tu abbia la passione per scrivere esattamente nel momento in cui il database del forum è in manutenzione (alle 4:22 circa), generando una moltitudine di messaggi. :asd:
Ma poi, dopo aver letto questo:
se mai è stato possibile tifare per un linguaggio, FORZA PYTHON, FACCI SOGNARE!!!
posso morire in beatitudine. :p
rеpne scasb
31-07-2009, 07:43
■
tomminno
31-07-2009, 07:51
z.is.square.bidimensional.array.whit.elements.from.-2.to.2
z.is.square.bidimensional.array.whit.index.from.1.to.256
r.is.monodimensional.array.whit.index.from.1.to.100
r.is.monodimensional.array.whit.elements.from.z
assign.z.to.c
sum.all.elements.of.quad.z.and.c.foreach.z.foreach.r
assign.this.to.z
Come si nota, l'intero l'algoritmo viene definito attraverso operazioni (sum,assign) di lettura/scrittura di dati (z,c,r).
Una domanda: come realizzeresti un "from.-2.to.2" senza un ciclo?
rеpne scasb
31-07-2009, 07:55
■
astorcas
31-07-2009, 08:36
Ma non sto dicendo questo. Sto supponendo che in realta' la sequenza, il ciclo e la selezione sono, in realta', un'unico insieme di simboli che ho chiamato: lettura.azione.scrittura
Se poi tutto questo e' una "boiata", o se qualcun'altro ci ha gia' pensato: pace.
Sto soltando condividendo un'idea, un pensiero, una "visione", senza alcuna pretesa di veridicita', ma magari con la speranza di un aiuto, un estensione, un ampliamento...
Per quanto scarsa sia la mia esperienza in materia, e per quanto da poco mi sia avvicinato al mondo dell'informatica, la tua idea non mi sembra affatto una boiata e così a freddo non avrei nessuna obiezione da fare (non ne sarei in grado). :)
astorcas
31-07-2009, 08:45
Una domanda: come realizzeresti un "from.-2.to.2" senza un ciclo?
Io credo che non sia questo il punto, è impossibile che sotto quell'istruzione non ci sia un ciclo. Ma nel linguaggio tu non ne scrivi nessuno
rеpne scasb
31-07-2009, 08:53
■
Esatto. Che sotto il "microprocessore" faccia loop, cmp, test, call, jmp, jcc non implica che nel linguaggio di "alto livello" che utilizziamo non si possa far a meno di un ciclo.
Allora non c'ho capito niente... :(
Non si fa già la stessa cosa con un linguaggio funzionale? Io quel "from.-2.to.2" lo potrei esprimere (con un linguaggio che esiste già, tra l'altro) come:
-2 2 [a,b]
Può c'entrare qualcosa? O sto divagando?
banryu79
31-07-2009, 09:39
@Shinya: dal basso della mia ignoranza (non possiedo conoscenze sufficienti e sufficientemente rigorose da seguirvi capendo tutto) a me pare di intuire che ciò che repne propone (visto anche il fatto che ha parlato di linguaggio semiotico) sia un linguaggio la cui forma sia più vicina (assomigli) al linguaggio naturale, quindi comunque diversa dai linguaggi funzionali (anche se pure a me li ricorda molto, ma sembra molto più , appunto, naturale da leggere)...
_Claudio
31-07-2009, 09:44
Esatto. Che sotto il "microprocessore" faccia loop, cmp, test, call, jmp, jcc non implica che nel linguaggio di "alto livello" che utilizziamo non si possa far a meno di un ciclo.
Come metafora, se si analizza il codice assembly di una cpu x86 (per esempio) si potranno trovare un numero tutt'altro che basso di jmp (salti incondizionati), equivalenti a dei veri e propri 'goto'. Cio' non implica che non si possa pensare ad un linguaggio di programmazione di alto livello di tipo strutturato che non ne faccia uso.
Certo, ma non ne capisco il valore aggiunto, senza contare la possibile perdita di espressività.
L'idea è buona in quanto consente di esprimere in una forma simile al linguaggio naturale le espressioni siano esse funzioni di libreria, cicli, if-else... ma cosa ne pensi dei break inseriti nei cicli, dei continue, e degli altri costrutti che modificano la linearità di un programma?
Poi lo so anche io che un algoritmo che fa uso di break, continue e quant'altro non è un buon algoritmo perchè c'è sicuramente un modo per evitarli (e modestamente posso dire che a parte nelle switch io non ne ho mai usato uno che sia uno di questi costrutti "ibridi").
@Shinya: dal basso della mia ignoranza (non possiedo conoscenze sufficienti e sufficientemente rigorose da seguirvi capendo tutto) a me pare di intuire che ciò che repne propone (visto anche il fatto che ha parlato di linguaggio semiotico) sia un linguaggio la cui forma sia più vicina (assomigli) al linguaggio naturale, quindi comunque diversa dai linguaggi funzionali (anche se pure a me li ricorda molto, ma sembra molto più , appunto, naturale da leggere)...
Boh non ho ancora le idee molto chiare...
A me ricorda molto un approccio tipo quello che si usa in un linguaggio concatenativo...cioè si parla di function composition e non di function application... anche se a guardare bene mi sembra quasi un approccio misto.
Forse possono interessare i joy papers... questo tanto per cominciare:
http://www.latrobe.edu.au/philosophy/phimvt/joy/j00rat.html
rеpne scasb
31-07-2009, 10:42
■
_Claudio
31-07-2009, 10:51
E' d'obbligo un chiarimento. Voglio un linguaggio che:
1) Sia costituito da un unico tipo di istruzione (nel mio caso lettura.azione.scrittura).
2) Abbia una sintassi "naturale".
Il primo punto nasce dalla congettura che: e' possibile scrivere qualsiasi tipo di algoritmo utilizzando la struttura lettura.azione.scrittura.
Il secondo punto nasce dal fatto di intravedere la lettura, l'azione e la scrittura come dei segni, e la supposizione di associazione segni<->linguaggio naturale.
-----------------
Che poi un siffatto linguaggio sia migliore/peggiore, piu' bello/brutto, piu' semplice/complesso, piu' espressivo/indespressivo.... io non ne ho idea. Potrebbe pure essere la personificazione del male assoluto.
Perchè non usare " " anzichè . così ogni istruzione diventa "lettura azione scrittura" ed è quanto di più simile al linguaggio naturale esista penso, tutto sta nell'implementare sapientemente il parser.
Quello che allontana un linguaggio di programmazione da quello naturale è proprio l'associazione segni<->linguaggio naturale.
La mia "critica" è che una cosa del genere nelle particolarità del linguaggio molto probabilmente può perdersi facilmente, è solo la mia umilissima opinione.
Però non bisogna sottovalutare proprio questo perchè sono le particolarità del linguaggio ad essere poi le più usate e a deciderne il successo o il fallimento.
Per farti un esempio quando si costruiscono i compilatori tutta la giovane teoria dei linguaggi formali vale fino ad un certo punto, poi si usa ancora la cara vecchia tecnica del "il cervellone si chiude per un mese in uno stanzino e accrocchia qualcosa di funzionante" questo proprio perchè la formalizzazione e le bellissime idee poi si scontrano con i meandri del cervello che tira fuori idee tutt'altro che lineari e sequenziali e un calcolatore deve essere "accrocchiato" per starci dietro.
Il primo punto nasce dalla congettura che: e' possibile scrivere qualsiasi tipo di algoritmo utilizzando la struttura lettura.azione.scrittura.
Io più ci penso più ci vedo una struttura tipo quella di Joy (o Factor, i principi esposti in quel paper che ho linkato sono gli stessi).
Secondo me "azione" si può ricondurre ad una funzione unaria che prende un input "lettura" (uno stack di oggetti nel caso di Joy) e lo mappa in qualcos'altro ("scrittura").
Per riprendere l'esempio che hai scritto tu, si potrebbe avere qualcosa tipo:
1 100 [a,b] r set
lettura azione scrittura
(input) (crea array) (setta la variabile 'r')
O no?
rеpne scasb
31-07-2009, 11:07
■
rеpne scasb
31-07-2009, 11:16
■
_Claudio
31-07-2009, 11:32
E perche' no, mi pare anche piu' naturale, senza tutti quei puntini (io pero' avevo pensato a quei puntini perche' volevo chiamare le variabili (per esempio): prezzo del petrolio, rotazioni per minuto, mele renette, nomi e cognomi ...
Non menu umile della mia. :D Pensa che l'idea di un simile linguaggio di programmazio mi e' venuta in mente leggendo una "ricetta di cucina", che a ben guardare e' una sorta di programma, con una serie di istruzioni. Nella ricetta c'era scritto:
Prendere mezza cipolla triturarla e farla soffriggere a fuoco vivace.
Non c'era scritto: Prendere una cipolla, tagliarla in due, triturare una delle due meta' tagliate finche' la cipolla non finisce...
Possibile non si possa scrivere un software con un linguaggio simile a quello di una ricetta di cucina? Che male c'e'?
Il male sta nel fatto che la nostra mamma non è un computer e viceversa. :D :D
malocchio
31-07-2009, 11:39
...
while (!acqua.bolle)
wait(1000);
acqua.put(pasta)
acqua.mescola()
timer.setTimer(pasta.tempoCottura)
...
Non è vorse più naturale così?? :D
astorcas
31-07-2009, 11:42
...
while (!acqua.bolle)
wait(1000);
acqua.put(pasta)
acqua.mescola()
timer.setTimer(pasta.tempoCottura)
...
Non è vorse più naturale così?? :D
repne traduci che confrontiamo :fagiano:
rеpne scasb
31-07-2009, 12:27
■
rеpne scasb
31-07-2009, 12:31
■
astorcas
31-07-2009, 15:02
wait water temperature is equal to 100
put pasta in the water
wait cooking time
eat pasta
scusa ma "the" a che serve?
tomminno
31-07-2009, 15:06
wait water temperature is equal to 100
put pasta in the water
wait cooking time
eat pasta
Che è come confrontare un linguaggio matematico con uno naturale, il linguaggio matematico è più conciso e tende ad essere decisamente meno ambiguo.
put pasta in the water
put pasta on the table
Come distingui le parole chiave del linguaggio? E soprattutto quante ne definiresti?
Come fai a sapere se temperature è un attributo valido per water?
Cosa ti consente di capire che quello che ho scritto qui sotto è un'istruzione non valida?
wait water leaf is equal to "mickey mouse"
scusa ma "the" a che serve?
Da quello che ho capito a niente :stordita:
Cmq l'idea mi sembra interessante, ma non vedo sostanziali vantaggi rispetto ai paradigmi esistenti per utilizzarlo nel "real world"...
cioè, l'idea del linguaggio naturale sulla carta è simpatico e tutto quanto, ma impatta col fatto che, anche se la sintassi sembra quella sciolta ed elastica del linguaggio naturale, la cosa viene tradotta in poco elastico linguaggio macchina...
quindi IMHO la produttività calerebbe decisamente, invece che salire:
-"the" ci va o no?
-non faccio prima a scrivere = rispetto ad "assign"?
-e coi verbi passivi che si fa?
-i cicli espliciti sono decisamente più intuitivi che un ciclo funzionale implicito in linguaggio naturale.
-una frase valida a vedersi potrebbe inspiegabilmente essere invalida.
D'altra parte, mentre il codice dato da malocchio ha uno ed un solo modo di essere eseguito, l'altro codice in linguaggio simil-naturale si pone nella difficile situazione di sembrare "liberamente interpretabile" come il linguaggio, quando invece ha dei pesanti limiti nella semantica che vanno studiati a parte.
In pratica, la cosa diventerebbe perfettamente inutile perchè ci si ridurrebbe a studiare un linguaggio informatico qualsiasi, con tutte le sue regole e difetti. Ma che confonde perchè scimmiotta un'altro linguaggio molto più evoluto.
quindi imho, più che un linguaggio a sintassi naturale servirebbe a semantica naturale.
Nel senso che io parlo, e lui interpreta... ma qui si sfocia nell'AI più avanzata.
EDIT: tomminno l'ha detto in maniera più sensata :asd:
astorcas
31-07-2009, 15:21
Tommo e tommino? :asd:
Cmq credo lei voglia permettere gli spazi nei nomi di variabili... funzioni... azioni, insomma non so come chiamarli.
Solo che se sparisce il punto mi sa che viene difficile distinguere il tutto.
A me cmq piace come idea anche se mi chiedo come funzionerebbe tutto il contorno (ad es. istanziare oggetti, definirli).
a is monodimensional array whit index from 1 to 100
assign random from 1 to 1000 to all elements of a
assign element of a to b
assign subsequent element of a to c
assign min of b and c to d
assign max of b and c to e
assign d to b foreach b different from d
assign e to c foreach c different from e
Il quicksort è un pò complicato.
Che ne dici di un altro esempio... (preso da Starting Forth)
: WASHER WASH SPIN RINSE SPIN ;
: RINSE FAUCETS OPEN TILL-FULL FAUCETS CLOSE ;
Dove 'Washer' e 'Rinse' sono due funzioni...
EDIT:
Navigando un pò tra la documentazione di Factor mi è tornato in mente questo thread. Salta fuori che questo è codice perfettamente valido:
4 days ago was-monday?
Alla faccia dell'illegibilità! :p
_Claudio
31-07-2009, 23:41
Che è come confrontare un linguaggio matematico con uno naturale, il linguaggio matematico è più conciso e tende ad essere decisamente meno ambiguo.
put pasta in the water
put pasta on the table
Come distingui le parole chiave del linguaggio? E soprattutto quante ne definiresti?
Come fai a sapere se temperature è un attributo valido per water?
Cosa ti consente di capire che quello che ho scritto qui sotto è un'istruzione non valida?
wait water leaf is equal to "mickey mouse"
Esiste la teoria dei linguaggi formali... che FORMALIZZA, appunto, ecco il limite rispetto la parlata comune.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.