Newsgroup: it.comp.programmare
Titolo: Linguaggio X

Premetto che dopo aver letto gli innumerevoli thread sul Python, non
accetterò nessuna critica del tipo "Non abusare del NG"!
Che cosa ne pensate di un linguaggio del genere (di basso-medio livello):
add(a, b) = c
{
  c = a+b
}
idiv(a, b) = c, r
{
  .c = a / b
  r = a % b
}
Il punto indica "retrocessione" a int.
------------
(matrice a * :b) = :c        // : = stesso tipo
{
  (riga or colonna a * :b) = c    // c è un numero
  {
    c = 0
    for (every e in a, e2 in b)
      c += e*e2
  }
  for (every n, indici i, j in c)
  {
    n = a.riga(i) * b.riga(j)
  }
}
In questo linguaggio i tipi (per es. matrice) non vengono definiti mediante
una struttura ben precisa.
Di solito si sceglie una determinata struttura in modo da avere certe
caratteristiche. X si occuperà della struttura interna, ma permetterà di
definire le proprietà mediante funzioni, ecc...
Per esempio la matrice è stata definita come insieme di righe e colonne
ordinate dalla prima all'ultima (poco importa in che ordine siano nella
memoria, l'importante è che every segua un ordine coerente).
Every è una parola chiave, ma può essere definito in vari modi (ci penserò
poi).
Per es.
  for (every n, indici i, j in c)
sta per "every n" (le var. senza tipo sono numeri (interi e reali...è
indifferente)) ed every indici i, j.
"indici" è una qualità che verrà definita dal programmatore. Potrebbe essere
una funzione che enumera gli indici i e j (nel ciclo for possono assumere il
nome che si vuole) rispetto a n.
Ovviamente oltre a every serviranno anche altri enumeratori. Sarà possibile
anche definire enumeratori completamente nuovi.
Notare come modificare 'n' significhi modificare 'n' in 'c' e non una sua
copia.
Che cosa ne pensate?
Modifiche?
Suggerimenti?
Problemi?
Kiuhnm

 Problemi?
Non ne vedo, tranne che forse dovresti iniziare scrivendo un BNF del
linguaggio.
Ciao!
*** Azimuth ***
[1] ADT = Abstract Data Type, CDT = Concrete Data Type

 linguaggio.
Non ancora. Il formato BNF frena la creatività (almeno la mia!).
Per ora voglio che il linguaggio sia bello da vedere, facile da leggere, da
scrivere e potenzialmente efficiente.
Dovrà inoltre essere di medio livello proprio come il C (e il C++)
In questo momento usare il BNF frenerebbe soltanto la mia vena creativa :-)
(del resto anche in Matematica il risultato è MOLTO diverso dal procedimento
tramite il quale lo si è ottenuto)
Kiuhnm

 tramite il quale lo si è ottenuto)
Verissimo. Alcune volte, poi, neanche c'e' un procedimento con il quale lo
si e' ottenuto.
*** Azimuth ***

 per una sola ADT?
Problema interessante...
Ma perchè ti dovrebbero servire entrambe?
Fammi un esempio <semplice>, ma pratico e vediamo se si può risolvere in
modo ugualmente efficiente con gli iteratori.
Si potrebbero fare eccezioni, ma troppe eccezioni distruggono il
linguaggio...
(non ho seguito molto il thread dei test sul Python perchè non lo conosco
proprio per niente...)
Kiuhnm
P.S.
Ti va un piccolo questionario?
Tranne te, nessuno mi risponde perchè:
a) non ne hanno voglia
b) non gliene frega niente
c) sanno la teoria, ma non la sanno applicare
d) nessun ha insegnato loro a fare un linguaggio (come se ce ne fosse
bisogno)
e) sono davvero soltanto consulenti
f) si sentono superiori.
Per esempio tutti si sono buttati su quegli "inutili" thread sul Python, ma
in pochissimi hanno risposto a quesiti più tecnici tipo a quello "Parser
top-down" (in python).
Insomma da come parlano dovrebbero essere dei grandissimi luminari nonchè
esperti programmatori e poi si perdono in un bicchier d'acqua. Col mio C64
non sapevo un ca**o di teoria, ma potevo fare qualsiasi cosa ;-)
(se necessario studiavo, ma solitamente inventavo metodi miei prima di
leggerli sui libri...ovviamente non tutti!)
Kiuhnm

 f) si sentono superiori.
Questo e' vero.
--------------------------------
Inviato via 
http://usenet.libero.it

 non sapevo un ca**o di teoria, ma potevo fare qualsiasi cosa ;-)
Anch'io, anch'io!!!
*** Azimuth ***

 Anch'io, anch'io!!!
Questa è una frase senza senso. Ricordati che la teoria altro non è che
studio ed applicazione. Tutta la teoria esistente si basa in gran parte sul
risultato di studi fatti da persone. Quel che hai fatto tu è tentare di fare
qualcosa e una volta riuscito avevi costruito la tua "teoria", probabilmente
molto simile a quella più conosciuta. Certo avresti potuto perdere meno
tempo con un po' di studio delle cose già fatte. Se tutti facessero come te,
il C64 sarebbe ancora una realtà!
Saluti,
--
----------------------------
Fulvio Esposito
"La differenza tra teoria e pratica e', in pratica, un po' piu' che in
teoria"
----------------------------

 realtà!
Sbagliato!
Perde tempo chi studia soltanto cose fatte da altri!
Non serve a niente studiare pedissequamente la teoria sviluppata da altri.
Prima bisogna provarci da soli e poi soltanto dopo vedere quanto si è
lontani dalla meta attuale. E' così che si diventa bravi programmatori. Il
bravo programmatore è colui che se la sa cavare senza libri ;-)
Appena serve qualcosa di nuovo gli Informatici corrono a comprare qualche
libro, invece il programmatore si rimbocca le maniche e usa il PROPRIO
cervello.
Magari giungerà a una soluzione meno efficiente, ma è SUA.
Bisogna allenare la mente a CREARE e non soltanto a CONTENERE altrimenti ci
si ridurrà sempre ad aspettare che altri pensino al posto nostro.
(e pensare non è soltanto servirsi di teorie pre-estistenti, ma inventarne
di nuove o modificare quelle esistenti secondo i propri scopi. Le teorie,
specialmente informatiche, non sono assolute (neanche quelle matematiche)).
...IMHO.
Kiuhnm

Kiuhnm is thinking....
PRESS PLAY ON TAPE
Kiuhnm

     for (every e in a, e2 in b)
solo una cosa: in inglese si dice "each", non "every" (lo so che sembra 
visual basic, pero` e` cosi`).
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

 sembra visual basic, pero` e` cosi`).
each = ogni, ciascuno
Babylon English-English:
every = each
Babylon English-Italian
every = ogni, ciascuno, tutti
Cerca con google:
"for every"
e
"for each"
Kiuhnm

: quanto non fate altro che dire uno il contrario dell'altro, senza che
: nessuno riesca ad ammutolire l'altro (vi assicuro che è successo in un
: intervista di un po' di tempo fa fatta da un esperto ad un altro).
Scusa ma l'hai lette le misurazioni effettuate da Azimuth? Io capisco che 
non sei ferrato in Python, ma almeno una letta a misurazioni in secondi 
dovrebbero essere comprensibili!
: Questa è una frase senza senso. Ricordati che la teoria altro non è che
: studio ed applicazione. Tutta la teoria esistente si basa in gran parte 
: sul risultato di studi fatti da persone.
Trascuri un piccolo particolare: la creativita'!
: molto simile a quella più conosciuta. Certo avresti potuto perdere meno
: tempo con un po' di studio delle cose già fatte. Se tutti facessero come 
: te, il C64 sarebbe ancora una realtà!
Se tutti facessero come dici, non ci si smuoverebbe granche' dal punto in 
cui siamo.
CIao!
Fed.

 cui siamo.
Non credo che Rubbia ai tempi dell'università abbia rifatto gli esperimenti
di termodinamica già fatti in precedenza, li ha semplicemente studiati, alla
fine quando è uscito dall'università ha utilizzato la sua creatività per
scoprire *nuove* cose e prendere il Nobel. Altrimenti alla fisica nucleare
non ci sarebbe arrivato ma cercherebbe ancora di spiegarsi perchè è la terra
che gira invece del sole!
Ciao


 ...IMHO.
Le parentesi potevi risparmiartele visto che l'unica cosa di assoluto sono
proprio le teorie matematiche. In matematica, le teorie sono qualcosa di ben
diverso dalle teorie scientifiche. Ogni risultato viene da un processo di
dimostrazione formale. Tale dimostrazione, nelle ipotesi fatte, vale sempre.
E' nelle scienze che le teorie vengono da dati sperimentali e la certezza
assoluta non ci può essere. C'è sempre la possibilirà che l'eccezione non si
sia ancora verificata.
Fulvio


 dimostrazione formale. Tale dimostrazione, nelle ipotesi fatte, vale
sempre.
Ahi, ahi, ahi: Godel si stara' centrifugando nella tomba!
Let's see..
    "In 1931, the Czech-born mathematician Kurt Gödel
    demonstrated that within any given branch of mathematics,
    there would always be some propositions that couldn't be
    proven either true or false using the rules and axioms ...
    of that mathematical branch itself. You might be able to
    prove every conceivable statement about numbers within
    a system by going outside the system in order to come
    up with new rules an axioms, but by doing so you'll only
    create a larger system with its own unprovable statements.
    The implication is that all logical system of any complexity
    are, by definition, incomplete; each of them contains, at
    any given time, more true statements than it can possibly
    prove according to its own defining set of rules."
Per maggori info: 
http://www.miskatonic.org/godel.html
 (ma, ovviamente, non
e' detto che sia la piu' "ufficiale").
*** Azimuth ***

 scoprire *nuove* cose e prendere il Nobel.
Non esiste solo la fisica. Comunque, anche Rubbia non ha "creato" nulla --
ha scoperto, e' diverso.
Per esempio, mi ricordo di un premio Nobel per la medicina che scopri' un
modo piu' economico di fabbricare la stessa sostanza (mi pare l'insulina).
Li' la creativita' che e' stata premiata e' quella di trovare il modo
migliore di fare le cose, e sapere come le hanno fatte gli altri aiuta fino
ad un certo punto.
*** Azimuth ***

     prove according to its own defining set of rules."
Infatti la mia prof. di Matematica era solita dire che in realtà
"La Matematica è un'opinione" (contrariamente al detto popolare).
L'importante è che sia coerente, non le si può chiedere di essere assoluta!
Kiuhnm

 prova, direi che tu quel messaggio manco l'hai letto.
Certo che hai una bella pazienza per ripetere sempre le stesse cose!
Kiuhnm

 Certo che hai una bella pazienza per ripetere sempre le stesse cose!
"La pazienza e' la virtu' dei forti" (c) Confucio
*** Azimuth ***

 Magari giungerà a una soluzione meno efficiente, ma è SUA.
Personalmente preferisco la soluzione più efficiente anche
se non è mia, per fortuna non sono così egocentrico.
--
Ciao
Brandy
Attenzione! Togli "leva" dall'indirizzo e-mail per rispondere in privato.
Mia home page:
http://digilander.libero.it/korhal/andyart/
Starcraft - La rivolta di Korhal -
http://digilander.libero.it/korhal/

 se non è mia, per fortuna non sono così egocentrico.
Tutti preferiamo la soluzione più efficiente.
Non travisare le mie parole.
Se devo fare qualcosa, prima provo (anche per una settimana!) a trovare un
algoritmo da solo e poi guardo se ne esiste uno migliore o se ne esiste
almeno uno! (non è detto che il problema sia già stato studiato).
Qualche volta mi è capitato di trovare algo. migliori di quelli esistenti...
Kiuhnm



Pubblicali.
 Raffaello

 Pubblicali.
Ti risulta che ci sia un qualche meccanismo di protezione[1] per evitarne
l'uso "non autorizzato" da parte di altri?
*** Azimuth ***
[1] Esempio: brevetti software.


Meglio che non esistano i brevetti per gli algoritmi, altrimenti per
qualsiasi e dico *qualsiasi* algiritmo si usi ci sarà sempre qualcuno che ti
viene a rompere le palle...
(per esempio se converti un numero da Hex ad Ascii usando il metodo più
ovvio violi senz'altro un brevetto!)
Kiuhnm

:: [1] Esempio: brevetti software.
: Meglio che non esistano i brevetti per gli algoritmi, altrimenti per
: qualsiasi e dico *qualsiasi* algiritmo si usi ci sarà sempre qualcuno 
: che ti viene a rompere le palle...
Beh, io sono sempre stato motlo in dubbio rispetto a questo punto; ad 
esempio, riterrei opportuno estendere i brevetti al software non "banale".
Fed.

 riterrei opportuno estendere i brevetti al software non "banale".
Non "banale"? E cioč? La vedo molto dura a stabilire cosa č banale e cosa 
no.
-- 
Marco Barisione (ICQ 84277092)


Tanto per farti un esempio: lo sai che il metodo o meglio l'idea di usare
colorazioni diverse a seconda del livello di annidamento di un espressione è
già stato brevettato?
Kiuhnm

:: riterrei opportuno estendere i brevetti al software non "banale".
:
: Non "banale"? E cioč? 
Cioč che non si appoggi a concetti di pubblico dominio oppure giŕ 
utilizzati in precedenza largamente senza essere stati preventivamente 
brevettati. Esempio: non si puň brevettare il formato grafico bitmap, 
oppure il modo di strutturare la documentazione con uso di codici 
"embedded" (tipo HTML).
Fed.

: Tanto per farti un esempio: lo sai che il metodo o meglio l'idea di 
: usare colorazioni diverse a seconda del livello di annidamento di un 
: espressione è già stato brevettato?
Urgh! :-(((
Fed.

 già stato brevettato?
Poi mi chiedono perché sono contro il brevetto degli algoritmi...
Hai maggiori informazioni su questa notizia?


 "embedded" (tipo HTML).
Se però creassi un nuovo algoritmo mai usato e banale potrei usarlo? Non mi 
sembra giusto.



No, comunque ti posso dire che ne ho discusso su it.scienza.matematica.
Puoi vedere l'intero thread a questo link:
http://groups.google.com/groups?hl=it&lr=&ie=UTF-8&threadm=alogbb%241rn1fj%2
41%
40ID-153670.news.dfncis.de
&rnum=1&prev=/groups%3Fq%3Dbrevetto%2Bgroup:it.
scienza.matematica%26hl%3Dit%26lr%3D%26ie%3DUTF-8%26selm%3Dalogbb%25241rn1fj
%25241%
2540ID-153670.news.dfncis.de
%26rnum%3D1
Ho paura che dovrai ricomporlo un po'!!!
Ecco un estratto di un messaggio del thread:
(scritto da non mi ricordo chi)
---
Sappi che:
Non puoi usare colori diversi per diversi livelli di annidamento di
espressioni. Violeresti il brevetto #4,965,765
Dato un calendario di appuntamenti, non puoi generare un grafico a barre
riguardante la durata degli appuntamenti. Violeresti il brevetto #5,257,347.
In un word processor non puoi includere	un "modalita` separata selezionabile
dall'utente per l'inserimento di formule matematiche". Violeresti il
brevetto
#5,122,953.
In un compilatore parallelo non puoi scegliere la migliore possibile
parallellizzazione in base a una stima sui tempi di esecuzione. #5,151,991.
(sorvoliamo sul classico brevetto dello xor)
( si veda 
http://www.base.com/software-patents/examples.html
 )
---
Kiuhnm

 ovvio violi senz'altro un brevetto!)
Sicuramente non in Europa.
Ciao!
*** Azimuth ***


Se dovesse passare la legge sui brevetti di algoritmi o "idee" allora
varrebbero automaticamente anche tutti quelli già validi in America.
Kiuhnm

 varrebbero automaticamente anche tutti quelli già validi in America.
Spero di no e spero di si', in ogni caso in Italia sicuramente non avrebbe
molto seguito[1].
Ciao!
*** Azimuth ***
[1] Con la lunghezza dei processi...

 quelli esistenti...
ad esempio? Non dirmi la soluzione, basta che dici quale era il problema 
e in cosa consiste la miglioria...
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra


C'è giusto un articolo di oggi su punto-informatico dei *brevetti
impossibili ma veri* (il testo tra asterischi è brevettato; anche il metodo
di asteriscamento è brevettato ;)
Andate su questo indirizzo:
http://punto-informatico.it/p.asp?i=41774
Da notare anche il brevetto su un *device* circolare...
http://punto-informatico.it/p.asp?i=37531
Martino

 
http://punto-informatico.it/p.asp?i=37531
:-)
Premio meritato!
Kiuhnm

 problema e in cosa consiste la miglioria...
L'ultimo è un RSA senza numeri primi...ma ancora non sono sicuro che sia
inattaccabile.
Un altro algo. lo uso nel mio debugger che è inrittracciabile al 99% e può
debuggare programmi che debuggano altri programmi tramite int1, in3, DRX,
ecc... in particolare usa breakpoint chiamati "pseudo hardware break point"
e vari sistemi di virtualizzazione per mantenere il controllo sul sistema
operativo (Windows).
Il debugger utilizza anche un multitasker ibrido in via di testing...il
problema della "starvazione" è stato eliminato senza l'aggiunta di
fastidiosi ritardi...
Ecc... alcuni li ho anche dimenticati...tanto non voglio brevettarli (ne
anche quando sarà possibile per legge) e se mi serviranno mi riverranno in
mente...
Kiuhnm

 sia inattaccabile.
spero che tu ti renda conto di quello che stai dicendo: se quel che dici 
e` vero (ma ne dubito - e non per scarsa fiducia nei tuoi confronti) 
meriteresti come minimo un Turing Award; non e` necessario brevettare 
l'algoritmo: basta che scrivi un paper e lo invii a qualche rivista 
scientifica: il tuo nome sara` ricordato per sempre come uno dei piu` 
grandi dell'informatica.


 come uno dei piu` grandi dell'informatica.
Esistono già algo. migliori dell'RSA, ma semplicemente non sono usati perchè
ancora in fase di analisi.
Per es. ce n'è uno di Goldwasser e Micali (se non sbaglio i nomi) che, a
differenza dell'RSA, è probabilistico (i messaggi codificati con la stessa
chiave pubblica sono sempre diversi) [però continua a usare numeri primi
molto grandi].
Inoltre esistono già metodi a chiave pubblica che non usano i numeri primi
anche se molti di essi si sono dimostrati poco robusti.
Lo sapevi che l'RSA non è nemmeno il primo metodo a chiave pubblica?
Comunque i vantaggi del mio sono che:
1) la generazione delle chiavi è istantanea (un po' di moltiplicazioni,
niente di più)
2) la codifica non richiede elevamenti, ma qualche moltiplicazione
3) la decodifica è complessa, ma più veloce di quella dell'RSA.
Gli svantaggi:
1) non so ancora se è abbastanza robusto [prima o poi dovrò decidermi a
farlo vedere a qualcuno].
Cmq. ho scaricato una lista di ben 100 problemi NP-completi in modo da
vedere se trovo qualche spunto per un altro metodo a chiave pubblica :-)
Kiuhnm

 perchč ancora in fase di analisi.
giusto, non stavo dicendo che l'RSA e` il migliore in assoluto (tra 
l'altro non sono neppure preparato per una discussione del genere). 
Stavo solo dicendo che se e` vero che hai compiuto delle ricerche in 
questo senso e *se* e` vero che hanno portato grossi miglioramenti come 
sostieni dovresti per lo meno pubblicarli, IMHO.


 come sostieni dovresti per lo meno pubblicarli, IMHO.
Prima o poi lo farò...
Kiuhnm