Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Decompilatore vb6

435 views
Skip to first unread message

C1P8

unread,
Sep 1, 2002, 4:46:11 AM9/1/02
to
guardate un po' qua

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId
=38543

"DoDi's vb3 decompiler has been decompiled and converterd to vb6 source
code.needs to be completed but I figured with the assistance of you we could
actually get a real vb6 decompiler would appriciate your feedback
rons_...@yahoo.com"

io sono MOLTO dubbioso su questo progetto anche se il decompilatore di Dodi
č stato effetivamente decompilato. Ma non č impossibile decompilare un
programma in Vb6?


C1P8

unread,
Sep 1, 2002, 4:51:35 AM9/1/02
to

> io sono MOLTO dubbioso su questo progetto anche se il decompilatore di
Dodi
> č stato effetivamente decompilato. Ma non č impossibile decompilare un
> programma in Vb6?

forse puň essere frainteso: non č impossibile decompilare un programma VB6
(Dodi č in vb3 o giů di li...)?


Lord Rayden

unread,
Sep 1, 2002, 7:15:29 AM9/1/02
to
On Sun, 1 Sep 2002 10:51:35 +0200, "C1P8" <NOSPAM...@supereva.it>
wrote:

>> io sono MOLTO dubbioso su questo progetto anche se il decompilatore di
>Dodi
>> č stato effetivamente decompilato. Ma non č impossibile decompilare un
>> programma in Vb6?

IN VB6 forse... ;)

>forse puň essere frainteso: non č impossibile decompilare un programma VB6
>(Dodi č in vb3 o giů di li...)?

Se compilato in P-Code dovrebbe essere possibile... altrimetni no...
da quel che ne so ottieni solo i form senza codice...

Ciao
--
Visita il sito comune del NG: http://www.it-lang-vb.net
Visit: http://www.hardwaretips.com

Zanna

unread,
Sep 1, 2002, 8:32:21 AM9/1/02
to
"Lord Rayden" <ray...@h.a.r.d.w.a.r.e.t.i.p.s.com> wrote in message

> >forse puň essere frainteso: non č impossibile decompilare un programma
VB6
> >(Dodi č in vb3 o giů di li...)?
> Se compilato in P-Code dovrebbe essere possibile... altrimetni no...
> da quel che ne so ottieni solo i form senza codice...

VB3 accodava all'exe un mucchio di info inutili ai fini dell'exe stesso, tra
queste, praticamente quasi in chiaro, c'erano addirittura i commenti.

Dal vb4 nada! nemmeno in PCode.

Questo č quanto mi risulta, poi si sa, l'informatica non č una scienza
perfetta, č "empirica".

Ciao

--

' // Initialize the expression evaluator
Engines.Evaluator = CreateObject("http://www.neodatatype.net")

' // you can find resources for and from the NG here!
Me.SitoComune = "http://www.it-lang-vb.it"

C1P8

unread,
Sep 1, 2002, 9:03:37 AM9/1/02
to
> VB3 accodava all'exe un mucchio di info inutili ai fini dell'exe stesso,
tra
> queste, praticamente quasi in chiaro, c'erano addirittura i commenti.

questo lo sapevo :)

> Dal vb4 nada! nemmeno in PCode.
>

> Questo è quanto mi risulta, poi si sa, l'informatica non è una scienza
> perfetta, è "empirica".

quindi 'sto progetto (almeno per ora) è destinato ad andare a vuoto!


Fabio Guerrazzi

unread,
Sep 1, 2002, 10:09:18 AM9/1/02
to
>
> Dal vb4 nada! nemmeno in PCode.
>

A me risulta di si.

Non l'ho mai visto questo decompilatore per VB6 ma riporto testuale una
conversazione telefonica avuta con un collega:
"a voglia se si decompilano. Il programma ce l'ho. L'ho comprato, da un
produttore americano, e funziona: decompila tutti i VB6 in pcode.
Ricostruisce esattamente il progetto, senza commenti ma rigenera tutto,
compresi i *.res, *frm, *frx, *cls * ctl e *.bas"

Non ho approfondito, ma che sia bufala o no, io compilo in nativo.


--
Fabio Guerrazzi
http://www.sourcecode4free.com/cgt
fab...@libero.it

Zanna

unread,
Sep 1, 2002, 10:22:13 AM9/1/02
to
"Fabio Guerrazzi" <fab...@libero.it> wrote in message news:icpc9.134816

> A me risulta di si.
>

Piuttosto questo è preoccupante :)

http://www.remotesoft.com/salamander/

Forse hai ragione per il PCode, con tutte ste versioni e varianti inizio a
confondermi :)

Andrea Saltarello

unread,
Sep 1, 2002, 12:36:07 PM9/1/02
to
> Piuttosto questo è preoccupante :)
>
> http://www.remotesoft.com/salamander/
>
dai un occhio qui:
http://www.ugidotnet.org/goodies/goodies_category.aspx?ID=2
trovi il link ad Anakrino... IMHO è il miglior decompilatore per .NET
Se ti preoccupa la facilità con la quale è possibile "decompilare", potresti
ricorrere ad un obfuscator:
http://www.ugidotnet.org/goodies/goodies_category.aspx?ID=5
Anche altre piattaforme (vedi Java) non sono da meno... Probabilmente
dovremmo iniziare a riconsiderare le nostre idee in merito alla "chiusura"
del codice...
> Ciao
>
ciao,
A.
UGIdotNET - http://www.ugidotnet.org

Fabio Guerrazzi

unread,
Sep 1, 2002, 1:38:19 PM9/1/02
to
dai! ditemi che .NET è più reversibile di VB6 nativo che mi faccio 2 risate!

Fabio Guerrazzi

unread,
Sep 1, 2002, 1:44:27 PM9/1/02
to
>
>
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId
> =38543
>
> "DoDi's vb3 decompiler has been decompiled and converterd to vb6 source
> code.needs to be completed but I figured with the assistance of you we
could
> actually get a real vb6 decompiler would appriciate your feedback
> rons_...@yahoo.com"
>
> io sono MOLTO dubbioso su questo progetto anche se il decompilatore di
Dodi
> è stato effetivamente decompilato. Ma non è impossibile decompilare un
> programma in Vb6?
>
>

Don't worry. DoDi rimarrà così. Ma hai visto il codice? mi si è obfuscato il
cervello :)

PSC è il posto di catturatori a sbafo per eccellenza. Dubito che possa
nascere una cooperazione per lo sviluppo di un progetto pubblicato su PSC.

Fabio

Andrea Saltarello

unread,
Sep 1, 2002, 2:01:53 PM9/1/02
to
> dai! ditemi che .NET è più reversibile di VB6 nativo che mi faccio 2
risate!
>
certo che .NET è "+ decompilabile di VB6"! .NET prevede la compilazione in
un bytecode intermedio che viene compilato nativamente dal CLR della
macchina di destinazione. Non capisco, però, le motivazioni della tua
"risata ironica"...

Paperino

unread,
Sep 1, 2002, 2:16:04 PM9/1/02
to
"Fabio Guerrazzi" ha scritto nel messaggio

> dai! ditemi che .NET è più reversibile di VB6 nativo che mi faccio 2 risate!

Ridi pure... Io non ci ho riso tanto, quando ho scoperto Ildasm.exe. :-(

Bye, G.


Fabio Guerrazzi

unread,
Sep 1, 2002, 4:46:58 PM9/1/02
to
> > dai! ditemi che .NET è più reversibile di VB6 nativo che mi faccio 2
> risate!
> >
> certo che .NET è "+ decompilabile di VB6"! .NET prevede la compilazione in
> un bytecode intermedio che viene compilato nativamente dal CLR della
> macchina di destinazione. Non capisco, però, le motivazioni della tua
> "risata ironica"...
>


Perché forse sarebbe bene smettere di puntare sulla quantità piuttosto che
la qualità (mi riferisco a MS).

*Sicurezza* appartiene alla fascia *qualità*
*Compatibilità* alla *quantità*

Suppongo a priori che NET abbia mille punti a favore rispetto a VB6. Da
questo punto di vista sembra di no... sorrido, certo... essendo sorpreso
della vulnerabilità di NET e non essendo daccordo non mi resta molto da
fare.


Fabio


KJK::Hyperion

unread,
Sep 1, 2002, 11:14:39 PM9/1/02
to
Andrea Saltarello ha scritto:

[...]


> Probabilmente dovremmo iniziare a riconsiderare le nostre idee in
> merito alla "chiusura" del codice...

ti interessa la mia opinione? i programmatori Visual Basic sono un po'
una razza a parte. Essenzialmente perchè per fare qualsiasi cosa, anche
la più banale, devono fare una fatica immane. Scrivere un programma
serio, anzi, peggio, implementare algoritmi seri senza usare funzioni
del sistema operativo è praticamente impossibile, e già questo la dice
lunga. Seriamente: se decompilassero il tuo ultimo programma, cosa ne
ricaverebbero? cosa che non potrebbero ottenere comunque in mezzoretta
di Google, o dieci minuti con Delphi, o cinque minuti con Perl, o che
comunque non è già stato sviscerato nei minimi dettagli da quando è
uscito VB 1 o anche prima?

Premetto, anzi, intrometto che sono stato programmatore Visual Basic
anch'io, e per abbastanza tempo e con abbastanza dedizione da poter
esprimere pareri. Non ci ho mai lavorato (potrei dire che non credo
nella schiavitù <g>), ma ci ho fatto cose che molti programmatori VB
non immaginano nemmeno di poter fare, e imparando tutto da solo. Quindi
non accetto critiche rivolte alla mia persona (non che le accetterei
altrimenti)

Diamo un'occhiata al sito comune. Anche qui intrometto: non ho mai
contribuito nulla, perchè quando ho iniziato ad esserne capace avevo
già cambiato linguaggio. Sezione binari, peschiamo a caso. "ActiveX
strumenti TCP/IP". Rispondo semplicemente con "BSD" - ossia "o dove
credete che li abbia presi Microsoft?"

"Stampa etichette": cioè, fatemi capire, una riscrittura dei device
context di Windows? perchè dove dice "impostare la dimensione delle
etichette" io leggo "CreateRectRgn, SelectObject", dove dice "possono
contenere testo, immagini,"ecc. io leggo "TextOut, BlitBlt, ecc."? E
dove dice "creazione di codice a barre" mi piacerebbe poter leggere
"Function BarCodeDraw(ByVal dc As Long, ByVal font As Long, ByRef
constraints As RECT, ByRef data As TBarCodeData, ByVal type As
TBarCodeType, ByVal opts as TBarCodeOpts) As Boolean", ma so già che
non è così, perchè ricordo le parole immortali e lapidarie del
compianto professor Djikstra

"DLL per il riavvio del sistema"? cosa c'è da mettere in DLL qui? in
quanti posti nel tuo programma devi riavviare il sistema che ti serve
una DLL e non un modulo, ma che dico, una dichiarazione di funzione
API? ma soprattutto, che wrapper devi mettere ad una funzione che fa
già tutto da sola? cosa di tanto segreto da non rilasciare il codice?

Salto completamente qualsiasi cosa relativa al subclassing, dico solo
che se devi programmare in C, programmi in C, non in Visual Basic, e
ricordo che VB supporta pur sempre le DLL.

Conversione in JPEG? a che pro, dico io, quando il JPEG (il gruppo
responsabile dello standard, intendo) ha apposta rilasciato il proprio
codice per libero uso? perchè il fatto che qualcosa non lo faccia già
la runtime deve essere un blocco psicologico così forte?

Sul registro di Windows direi di stendere un velo pietoso. Incredibile
quante craniate ci prendano i programmatori VB (non solo loro, ma sono
gli unici che ne siano ossessionati. O almeno così era, forse i tempi
sono cambiati). Consiglierei prima di capire come funziona, com'è
strutturato, perchè l'API del registro richiede sempre un handle come
primo argomento ("ma uffa, ma che palle, ma ora scrivo una funzione che
mi prenda una stringa e basta, così è più comodo"), e come scriverne un
wrapper ad oggetti efficiente

Qui vedo anche gente che si spara in un piede con i mutex ("Gestire
l'avvio di una singola istanza dell'applicazione"), che riscrive l'API
di Windows ("Gradient OCX", scommetto scritto in VB5 con tanto di hwnd
proprio), una "DLL molto veloce equivalente alla funzione GET di Visual
Basic" (la "mia DLL molto veloce" si chiama kernel32.dll, perchè so
dell'esistenza di LenB e ByRef As Any, e so cosa significano), e un
"MAIN RegisterIT", che suppongo essere un programma per registrare DLL
ActiveX, che mi fa sorridere ("Grafica più accattivante. Possibilità di
registrare più componenti contemporaneamente.". Ne ho scritto uno io in
Delphi che manca poco faccia pure il caffè, ma non ha grafica, quindi
deve fare davvero schifo!)

Qual è il punto? I programmatori VB (almeno, lo stereotipo che ho
imparato ad amare ed odiare mentre ne crescevo fuori io stesso)
necessitano di essere ridimensionati. Per il loro bene. Sono più
fiducioso di Djikstra, credo ci sia luce alla fine del tunnel

E ora fatemi andare a dormire, chè tra un'ora è domani

C1P8

unread,
Sep 1, 2002, 2:29:03 PM9/1/02
to
> Don't worry. DoDi rimarrà così. Ma hai visto il codice? mi si è obfuscato
il
> cervello :)

pure il mio ma ho paura che esista un pazzo pieno di buona volonta

> PSC è il posto di catturatori a sbafo per eccellenza. Dubito che possa
> nascere una cooperazione per lo sviluppo di un progetto pubblicato su PSC.

questo è vero ma "mai dire mai" ;) scherzi a parte, spero che non nasca
nulla!


Zanna

unread,
Sep 2, 2002, 5:34:36 AM9/2/02
to
"KJK::Hyperion" <no...@libero.it> ha scritto nel messaggio

> Qual è il punto? I programmatori VB (almeno, lo stereotipo che ho
> imparato ad amare ed odiare mentre ne crescevo fuori io stesso)
> necessitano di essere ridimensionati.

Per quanto poco possa permettermi di dire io, sono completamente d'accordo.
In particolare è da quando ho visto la "DLL per convertire una stringa in un
array di byte" (ma non c'era la StrConv()?) che ripeto chiedo, a costo di
risultare impopolare, una _grossa_ pulizia del Sito Comune.

Ma a quanto pare nessuno ne ha il coraggio, anzi, si continuano ad accettare
i progetti più assurdi.
C'è anche da dire che i progetti che vengono pubblicati sono "la crema" di
quelli arrivati, poichè il WM fa già una grande opera di selezione :(

Forse conviene cambiare la mentalità del programmatore VB: non mi interessa
il programma che usa i più avanzati algoritmi grafici per rendere il desktop
psikedelico, piuttosto mi servirebbe qualcosa che mi aiuti e semplifichi la
stesura e la progettazione del codice, anche se fosse qualcosa di molto
semplice e scritto in puro VB.

Ciao


Lord Rayden

unread,
Sep 2, 2002, 7:45:49 AM9/2/02
to
On Mon, 2 Sep 2002 11:34:36 +0200, "Zanna" <znt....@virgilio.it>
wrote:

>> Qual è il punto? I programmatori VB (almeno, lo stereotipo che ho
>> imparato ad amare ed odiare mentre ne crescevo fuori io stesso)
>> necessitano di essere ridimensionati.
>Per quanto poco possa permettermi di dire io, sono completamente d'accordo.
>In particolare è da quando ho visto la "DLL per convertire una stringa in un
>array di byte" (ma non c'era la StrConv()?) che ripeto chiedo, a costo di
>risultare impopolare, una _grossa_ pulizia del Sito Comune.
Per me andrebbe anche bene... preparate una lista di cose da togliere
con la relativa motivazione... poi si fa una votazione e si vede cosa
togliere.

>Ma a quanto pare nessuno ne ha il coraggio, anzi, si continuano ad accettare
>i progetti più assurdi.

Grazie sai! ;-)

>C'è anche da dire che i progetti che vengono pubblicati sono "la crema" di
>quelli arrivati, poichè il WM fa già una grande opera di selezione :(

Beh... le mie problematiche e opinioni le sai già... c'è da dire che
in questo periodo grande selezione da fare non c'è! :(

>Forse conviene cambiare la mentalità del programmatore VB: non mi interessa

Forse conviene cambiare linguaggio... pochi sviluppatori opensource (e
quindi più porpensi a condividere codice "importante") programmano in
VB... fore perhè è poco portabile ed i mano al"nemico"! ;)

>il programma che usa i più avanzati algoritmi grafici per rendere il desktop
>psikedelico, piuttosto mi servirebbe qualcosa che mi aiuti e semplifichi la

Anzi meno psichedelico è meno va in crash... a quello ci pensa già
windows! ;)

>stesura e la progettazione del codice, anche se fosse qualcosa di molto
>semplice e scritto in puro VB.

mztools? ;-)

Moreno Sirri

unread,
Sep 6, 2002, 1:25:42 PM9/6/02
to
On Sun, 1 Sep 2002 10:46:11 +0200, "C1P8" <NOSPAM...@supereva.it>
wrote:

>"DoDi's vb3 decompiler has been decompiled

Hanno decompilato un decompilatore? Quindi hanno compilato... Beh, che
c'è di strano? E' una cosa che facciamo tutti centinaia di volte al
giorno.... :-)
Ok, scusate...

Ciao,
Moreno

--
sirri at morenosoft dot com

Moreno Sirri VB Site - http://www.msvbsite.net

---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
http://www.it-lang-vb.net
---------------------------------------------------------------------------

Moreno Sirri

unread,
Sep 6, 2002, 2:25:17 PM9/6/02
to
On Mon, 02 Sep 2002 03:14:39 GMT, "KJK::Hyperion" <no...@libero.it>
wrote:

>Andrea Saltarello ha scritto:
>
>[...]
>> Probabilmente dovremmo iniziare a riconsiderare le nostre idee in
>> merito alla "chiusura" del codice...
>
>ti interessa la mia opinione? i programmatori Visual Basic sono un po'
>una razza a parte. Essenzialmente perchè per fare qualsiasi cosa, anche
>la più banale, devono fare una fatica immane.

Ni. Se la guardi dal punto di vista della macchina, ovvero se consideri
tutto quello che deve subire perché il codice VB alla fine produca un
"Hello World", ok, però se la guardi dal punto di vista del
programmatore (mmm... dicicamo di chi ha scritto il codice), il più
delle volte no.
Sottolineo "il più delle volte": ci sono dei casi in cui veramente la
semplicità di VB è di una complessa spaventosa (permettimi il gioco di
parole): senza scendere ad un basso livello di interazione con il SO,
prova molto semplicemente a voler estendere le funzionalità di un
controllo VB standard...

>Scrivere un programma
>serio, anzi, peggio, implementare algoritmi seri senza usare funzioni
>del sistema operativo è praticamente impossibile, e già questo la dice
>lunga. Seriamente: se decompilassero il tuo ultimo programma, cosa ne
>ricaverebbero?

Beh, molto probabilmente più di quanto abbia guadagnato io nel
scriverlo...:-)

>cosa che non potrebbero ottenere comunque in mezzoretta
>di Google, o dieci minuti con Delphi, o cinque minuti con Perl,

Beh, farei una precisazione che sono certo hai volutamente ignorato:
il fatto che VB sia un linguaggio semplice da apprendere, non significa
che è destinato esclusivamente a programmi banali.
E ti dirò, sarà semplice da imparare, ma lo trovo piuttosto difficile da
"modellare": appena varchi quella soglia delimitata da necessità che
apparentemente in VB sono difficili da soddisfare, vedi subito se sei
uno scrittore di codice VB o uno sviluppatore. Ogni giorno vedo
programmatori che si fermano di fronte a qualche difficoltà dicendo "in
VB è impossibile": E' possibile, eccome, basta solo sapere come
arrivarci. E molto spesso ti devi fare delle pippe mentali
ultragalattiche, per ottenere un risultato che magari in C++ ti
sarebbero bastate 10 righe di codice. Sì, ma delle signore 10 righe che
devi saperle scrivere... e poi, in altri casi, te ne sarebbero servite
1000, per raggiungere lo stesso risultato delle 100 di VB...
Giusto per sparare qualche cifra più o meno a caso...
Molto spesso il limiti del programmatore sono molto inferiori a quelli
del linguaggio. E quando raggiungi quelli del linguaggio... beh, a me da
soddisfazione (e rabbia allo stesso tempo, ma per fortuna non è mica
detto che tutta l'architettura debba per forza essere basata su VB...
:-P)

>o che
>comunque non è già stato sviscerato nei minimi dettagli da quando è
>uscito VB 1 o anche prima?

Beh, qui mi permetto di dissentire... ma giacché so che l'hai detto con
tono sarcastico, passi pure.

>Premetto, anzi, intrometto che sono stato programmatore Visual Basic
>anch'io, e per abbastanza tempo e con abbastanza dedizione da poter
>esprimere pareri. Non ci ho mai lavorato (potrei dire che non credo
>nella schiavitù <g>),

Eccolo lì, open source fino al midollo... :-P

> ma ci ho fatto cose che molti programmatori VB
>non immaginano nemmeno di poter fare, e imparando tutto da solo.

Visto? E' spesso il programmatore, non il linguaggio il vero problema...

>Quindi
>non accetto critiche rivolte alla mia persona (non che le accetterei
>altrimenti)

:-P

>Diamo un'occhiata al sito comune. Anche qui intrometto: non ho mai
>contribuito nulla, perchè quando ho iniziato ad esserne capace avevo
>già cambiato linguaggio. Sezione binari, peschiamo a caso. "ActiveX
>strumenti TCP/IP". Rispondo semplicemente con "BSD" - ossia "o dove
>credete che li abbia presi Microsoft?"
>
>"Stampa etichette": cioè, fatemi capire, una riscrittura dei device
>context di Windows? perchè dove dice "impostare la dimensione delle
>etichette" io leggo "CreateRectRgn, SelectObject", dove dice "possono
>contenere testo, immagini,"ecc. io leggo "TextOut, BlitBlt, ecc."?

Ok, il programmatore è chiaro (mmm... no, purtroppo non sempre) che
legge così, però defi focalizzarti sullo scopo: lo scopo era di
illustrare e fornire un esempio su come funzionano i DC, cu come usare
quelle funzioni? Ottimo, didatticamente interessante. Lo scopo era di
vedere il proprio nome sul SC? Ok, probabilmente quelle funzioni manco
ce le trovi nel codice... :-P ghghg
(premetto che non riordo il materiale in questione, lo prendo solo come
esempio)

>E
>dove dice "creazione di codice a barre" mi piacerebbe poter leggere
>"Function BarCodeDraw(ByVal dc As Long, ByVal font As Long, ByRef
>constraints As RECT, ByRef data As TBarCodeData, ByVal type As
>TBarCodeType, ByVal opts as TBarCodeOpts) As Boolean", ma so già che
>non è così, perchè ricordo le parole immortali e lapidarie del
>compianto professor Djikstra
>
>"DLL per il riavvio del sistema"? cosa c'è da mettere in DLL qui? in
>quanti posti nel tuo programma devi riavviare il sistema che ti serve
>una DLL e non un modulo, ma che dico, una dichiarazione di funzione
>API? ma soprattutto, che wrapper devi mettere ad una funzione che fa
>già tutto da sola? cosa di tanto segreto da non rilasciare il codice?

Concordo.

[...]

>Qual è il punto? I programmatori VB (almeno, lo stereotipo che ho
>imparato ad amare ed odiare mentre ne crescevo fuori io stesso)
>necessitano di essere ridimensionati. Per il loro bene. Sono più
>fiducioso di Djikstra, credo ci sia luce alla fine del tunnel

Secondo me il problema è che il linguaggio, semplice da apprendere come
detto, porti a pensare chiunque wizard people, cut&paster et similia di
essere programmatori. Scoprono di non esserlo solo dipo aver varcato la
soglia di cui sopra... anzi, magari il realtà lo sono e pure bravi...
però pigri.
Il guaio è che poi questi non scrivono solo codice per diletto, ma
spesso te li ritrovi a partecipare allo sviluppo di soluzioni su cui
magari si basa l'informatizzazione di un'intera azienda... e speri che
maturino in fretta, sennò son c****.
Altri linguaggi, invece, ti portano ad un approcio diverso e ad una
considerazione forse più reale e sincera delle tue capacità, delle tue
conoscenze, di quanto hai imparato e di quanto devi ancora imparare per
raggiungere il tuo prossimo obiettivo. Io programmo in VB e continuo ad
imparare giorno dopo giorno. Non più VB, quello è uno strumento, però
purtroppo quelli che non hanno mai varcato quella soglia, che credono
che quello che sanno fare con VB sia tutto quello di cui possono aver
bisogno, non so perché ma cessano di imparare e si credono ormai
arrivati. Però poi i problemi glie li risolvi tu. :-/
Sarà l'apparente semplicità del linguaggio la causa, poiché è un
problema che non ho mai riscontrato nei programmatori C++ ad esempio.
Pazienza, imparo io anche per loro... e loro guadagnano anche per me...
:-/
Vabbé... magari .NET farà da filtro...

>E ora fatemi andare a dormire, chè tra un'ora è domani

:-P

stefano

unread,
Sep 6, 2002, 3:36:28 PM9/6/02
to
A parte il fatto che una routine, banale quanto vuoi, se mi fa risparmiare
per ogni chiamata 3 righe di codice è già tanto - senza poi considerare
quanto più leggibile e sicuro diventa il codice: una volta testata, sono
ragionevolmente certo che non mi farà scherzi, non devo ogni volta mettere
di nuovo in discussione anche quelle 3 righe. Se poi la metto in una DLL, mi
scordo perfino che esiste del codice sottostante.
Ma a parte questo, non vedo perché scrivere una funzione 'scema' - che cioè
chiama, in forma magari più basic-like, una funzione di un'altra libreria -
debba essere così ripugnante. Se la mia funzione "pippo" è in realtà un modo
un po' più semplice per chiamare la sequenza RegOpenKeyEx / RegQueryValueEx
/ RegQueryValueEx / RegCloseKey non vedo perché questo debba essere abietto.
Il fatto che io non abbia costantemente presente la sintassi di queste
funzioni, sinceramente, non è altro che un bene, perché altrimenti dovrei
tenermi a mente migliaia di funzioni del kernel delle quali non mi frega
proprio niente - mi basta sapere che esistono, come so che Ludwig
Wittgenstein è nato, vissuto e morto, so in che secolo tutto ciò è avvenuto,
so in quale libro cercare la sua data di nascita, ma a che mi serve
ricordamela? Veramente, non è questa la cosa più importante!
In basic esistono funzioni di alto livello per aprire i file, benché le api
di Windows consentano di fare la stessa cosa. Se ho ben capito, la tua
posizione è che usare "open" sarebbe da checche, mentre i veri uomini usano
CreateFile. Ma CreateFile, a sua volta, non fa che chiamare un servizio a
più basso livello del SO, quindi qualcuno potrebbe considerare CreateFile un
modo triviale di aprire i file. Così si potrebbe dire che un'istruzione che
cerca un carattere in una stringa (tipo Instr o IndefOf) è una carnevalata
alla quale il vero programmatore sostituisce il codice:
push ds
push si
lds si,string
... etc.
Di questo passo, sofisma dopo sofisma, si potrebbe convenire che non serve
proprio scrivere i programmi, perché li ha già scritti e meglio qualcun
altro, e così via, ad infinituum.
In definitiva, questo è un mestiere artigianale e c'è chi lo fa meglio o
peggio di altri, ma alla fine come in tutti i mestieri la cosa che forse
conta di più è avere degli strumenti adatti in ogni circostanza. La
peculiarità del programmatore sta proprio nel fatto che può fabbricarsi i
suoi stessi strumenti - e molto spesso la sua bravura sta proprio in questo,
spesso i suoi strumenti sono i migliori programmi che abbia mai scritto.
Tuttavia molti artigiani sono ben felici di comprare strumenti già fatti -
magari da un altro artigiano che sapeva il fatto suo. Perché scoprire
l'acqua calda?
Discussioni sul linguaggio migliore ne sento da un bel po' - mi ricordo
quando si *doveva* conoscere il C perché era portabile, ma poi non si sapeva
dove portarlo perché c'erano 3 modelli di computer - ma alla fine hanno la
durata e il rilievo delle discussioni su chi ce l'ha più lungo. Sembra un
po' come se un fabbro e un falegname discutessero su quale sia il sistema
migliore per chiudere una porta: entrambi hanno ottimi argomenti a loro
favore e alla fine sono talmente infervorati che si prendono a colpi di
martello, trascurando completamente il povero diavolo del cliente che voleva
solo che gli chiudessero 'sto cavolo di porta.
Infine (e mi scuso per la prolissità) anche il luogo comune che vuole che il
basic non sia un linguaggio professionale, sinceramente, è non solo un po'
scaduto (viste le ultime release di vb) ma privo di reale fondamento.
Conosco programmi composti anche da un milione di righe di codice,
installati presso grandi aziende o che hanno una grossa distribuzione o che
svolgono mansioni critiche, che sono scritti interamente in vb. La scelta
del linguaggio raramente ha a che fare con la specificità del software da
realizzare - o per lo meno, in tanti anni a me è capitato veramente poche
volte di dover scegliere un linguaggio come conditio sine qua non.

Saluti,
stefano.

KJK::Hyperion

unread,
Sep 9, 2002, 3:22:20 AM9/9/02
to
stefano ha scritto:

> A parte il fatto che una routine, banale quanto vuoi, se mi fa
> risparmiare per ogni chiamata 3 righe di codice è già tanto -
> senza poi considerare quanto più leggibile e sicuro diventa il
> codice: una volta testata, sono ragionevolmente certo che non mi
> farà scherzi, non devo ogni volta mettere di nuovo in discussione
> anche quelle 3 righe.

e va bene. E l'acqua è bagnata e il cielo è azzurro. Però non stiamo
parlando di questo. Te lo dico qua e non lo ripeto più negli altri
cinque-dieci paragrafi in cui pisci puntualmente fuori dal vaso con i
tuoi pleonasmi

> Se poi la metto in una DLL, mi scordo
> perfino che esiste del codice sottostante. Ma a parte questo, non
> vedo perché scrivere una funzione 'scema' - che cioè chiama, in
> forma magari più basic-like, una funzione di un'altra libreria -
> debba essere così ripugnante.

visto che ne ho accennato, riporto cosa disse Dijkstra (sai almeno chi
è?) a riguardo dei programmatori BASIC:

"It is practically impossible to teach good programming style to
students that have had prior exposure to BASIC: as potential
programmers they are mentally mutilated beyond hope of regeneration."

Lui si riferiva al BASIC originale, quello degli anni '80, ma confronta
VisualBasic con Delphi, con C, anzi, meglio, impara il Delphi e il C, e
quando leggerai "basic-like" anche a te scenderanno i brividi freddi
lungo la schiena

> Se la mia funzione "pippo" è in
> realtà un modo un po' più semplice per chiamare la sequenza
> RegOpenKeyEx / RegQueryValueEx / RegQueryValueEx / RegCloseKey non
> vedo perché questo debba essere abietto.

perchè è la ricetta per un programma condannato alla lentezza. Quando
poi a pippo() si aggiungono anche blah(), doh(), etc(). tutte scritte
alla stessa BASIC-maniera, beh, vedrai (c'è chi, su altre scale di
misura, riesce a programmare alla carlona anche in C++, pur avendo a
disposizione fior di programmatori - esempio: OpenOffice per Windows,
un fulgido esempio di completa ignoranza della piattaforma)

> Il fatto che io non abbia
> costantemente presente la sintassi di queste funzioni,
> sinceramente, non è altro che un bene,

se tu sapessi i *concetti* che stanno dietro a quelle funzioni e che si
limitano a *trasparire* dalla sintassi, non ti sogneresti di fare
questa affermazione. La possibilità di aprire un oggetto relativamente
ad un altro oggetto è una funzionalità potentissima, che quasi solo
Windows espone ad un livello così alto, e di cui bisogna approfittare
il più possibile

> Veramente, non è questa la
> cosa più importante! In basic esistono funzioni di alto livello
> per aprire i file, benché le api di Windows consentano di fare la
> stessa cosa. Se ho ben capito, la tua posizione è che usare "open"
> sarebbe da checche, mentre i veri uomini usano CreateFile.

prima di tutto: non mi oserei MAI a dare della "checca" come insulto a
chicchessia, e scommetto, senza timore di mancare troppo il bersaglio,
che tu sei uno di quelli che quando sente dei gay picchiati per strada
con la polizia a dieci metri che "ma noi non abbiamo sentito niente",
pensa "ma che bastardi", però non si rende conto di essere proprio lui
la causa di quello che è successo, che succede e che succederà

secondo: non sto scherzando

terzo: tu non hai la più pallida idea di cosa puoi fare con CreateFile.
Anche in C nessuno ti costringe ad usare open, read e write, puoi usare
fopen, e le varie funzioni della Standard I/O, ma lo fai comunque con
cognizione di causa, sapendo che se ci tieni all'integrità del file
ogni tanto devi fare un fflush, che caricare un file intero in memoria
è stupido, eccetera eccetera eccetera

> Ma
> CreateFile, a sua volta, non fa che chiamare un servizio a più
> basso livello del SO, quindi qualcuno potrebbe considerare
> CreateFile un modo triviale di aprire i file.

lo è, in molti casi. E la documentazione di CreateFile è a dir poco
disorientante. Piuttosto studiati NtCreateFile, approfitta che è stata
documentata. Per documentazione non ufficiale e un sacco di codice (di
cui un po' - poco - scritto da me), www.reactos.com

> La peculiarità del programmatore sta proprio nel
> fatto che può fabbricarsi i suoi stessi strumenti - e molto spesso
> la sua bravura sta proprio in questo, spesso i suoi strumenti sono
> i migliori programmi che abbia mai scritto. Tuttavia molti
> artigiani sono ben felici di comprare strumenti già fatti - magari
> da un altro artigiano che sapeva il fatto suo.

provo a reiterare il concetto: una parte impressionante del codice
scritto in e per VisualBasic è monnezza, perchè una parte altrettanto
impressionante dei programmatori VB si crede un "artigiano che sa il
fatto suo", mentre sono semplicemente programmatori VB e basta (come i
sysadmin che si occupano di Windows e basta in genere sono cialtroni).
Io LO SO, io ci sono passato, io lo sono stato, e visto che non lo sono
più dico di essere più ottimista di Dijkstra. Ora ho imparato a tacere
quando so che parlando farei solo danni

stefano

unread,
Sep 9, 2002, 8:03:03 AM9/9/02
to
Forse dovrei lasciar perdere, ma...

(a) On the Topic


> perchè è la ricetta per un programma condannato alla lentezza.

Ma dai! In Windows ormai non si sa più quante chiamate fa., al suo interno,
una funzione elementare, figuriamoci se mi preoccupo di un paio di chiamate
in più. Non è che metto una funzione di modifica del registry in un loop
stretto che cicla un milione di volte (e anche se fosse, chiamare una
funzione vb in più mi costerebbe qualche millisecondo sull'intero loop). Se
parliamo di ottimizzazione, allora anche i linguaggi che usi tu, sia detto
chiaramente, fanno schifo. Tu prova a scrivere una routine veramente tosta -
p.es. una codifica jpeg o g4, per non parlare di routine garfiche - in C e
confrontarla con una scritta in assembler. Hai voglia ad ottimizzare il C!
(E qui potrei citare J.L. Bentley, o forse Groucho Marx, non ricordo quale
dei due!-)
Insomma, non capisco perché io debba sempre avere tra i piedi dei rompiballe
di funzioni (di Windows come pure di Gianni o Luca) quando la moderna
tecnologia ci ha messo a disposizione risorse meravigliose come le funzioni.
Non capisco perché dovrei ammazzarmi con le funzioni grafiche di Windows
quando Microsoft mi offre gentilmente l'oggetto PictureBox. Forse tu lo fai,
ma allora vuoi dirmi che tu non usi ADO, non usi Oracle o SQL Server, tu ti
scrivi direttamente un DBMS tuo proprio! La maggior parte dei programmatori
non ha che una pallida idea di come sia strutturato fisicamente un database
e di quali algoritmi siano implicati nella sua gestione, tuttavia usano ADO,
etc. Forse dirai che non volevi dire questo, ma perché non posso portare
l'argomento alle estreme conseguenze? Tu lo fai e una volta che l'hai fatto
la regola vale anche per me.


> terzo: tu non hai la più pallida idea di cosa puoi fare con CreateFile.

Ah! Ah! Ah! Quando la racconto agli amici!


>Per documentazione non ufficiale e un sacco di codice (di
> cui un po' - poco - scritto da me), www.reactos.com

La prossima volta ci venderai anche un aspirapolvere.


> provo a reiterare il concetto: una parte impressionante del codice
> scritto in e per VisualBasic è monnezza, perchè una parte altrettanto
> impressionante dei programmatori VB si crede un "artigiano che sa il
> fatto suo", mentre sono semplicemente programmatori VB e basta (come i
> sysadmin che si occupano di Windows e basta in genere sono cialtroni).

Vabbè, questo è vero di qualsiasi linguaggio. Non è che il C sia
intrinsecamente idoneo a bravi programmatori e il basic a pessimi.
Sicuramente il basic è più abbordabile per i neofiti e i programmatori della
domenica, ma ci sono programmatori assembler che non sono dei geni, eppure
non dirai che è un linguaggio popolare. Del resto, il C fu realizzato come
linguaggio da K&R perché R non conosceva l'assembler del PDP11 e quindi non
potevano lavorare assieme alla stesura di UNIX. Anche molti medici sono
degli incompetenti che strappano prescrizioni - e magari hanno un ruolo in
questa siocietà: se solo i geni facessero i medici, per trovarne uno si
dovrebbe fare domanda sei mesi prima - però non è che i neurochirurghi siano
per forza più intelligenti e bravi dei medici di base (il mio medico di base
è conosciuto in tutta la città, mentre abbiamo neurochirurghi che non godono
di altrettanta stima).
Insomma, la maggior parte delle persone sono cialtroni - siamo umani, non
replicanti!


> Io LO SO, io ci sono passato, io lo sono stato, e visto che non lo sono
> più dico di essere più ottimista di Dijkstra.

Avresti potuto chiudere. mutatis mutandis, con le parole di Roy Batty (Nexus
6): "Io ne ho viste cose che voi programmatori basic non potreste
immaginarvi. Oggetti da combattimento in fiamme al largo dei bastioni di
Redmond... e ho visto le funzioni C balenare nel buio vicino alle porte dei
Bell Laboratories... e tutti quei momenti andranno perduti nel tempo come
lacrime nella pioggia. E' tempo di morire."
Io ho sempre creduto che l'arte della programmazione richieda molta umiltà.

(b) Personal matter

> visto che ne ho accennato, riporto cosa disse Dijkstra (sai almeno chi
> è?) a riguardo dei programmatori BASIC:

E Clint Eastwood (sai chi è?) ha detto: "Le opinioni sono come le palle,
ognuno ha le sue".
Noi tutti poveri programmatori basic (io non mi sono definito tale, ma non
mi fa schifo finirci dentro) dovremmo imparare un po' di C, ma è certo che
tu dovrtesti fare un po' di esercizi di dialettica. Hai una vena polemica
troppo lontana dalla sana discussione. Tu vuoi vincere, vuoi dirci quanto
sei bravo e lo dimostri facendo continui appelli all'autorità. Non sai
neppure con chi stai parlando, ma buttì lì frasi pesanti come "impara il
Delphi e il C", "se tu sapessi [sic! - si dice 'conoscessi'] i *concetti*


che stanno dietro a quelle funzioni e che si limitano a *trasparire* dalla

sintassi, non ti sogneresti di fare questa affermazione" e così via.
Dovresti stare più attento quando spari a zero, perché guru come te - che si
concede generosamente a questo NG - magari ce ne sono altri (e magari sono
di quelli che scrivono codice sicuramente un po' più bruttino ma che
costituisce dei veri programmi, non le funzioncine belle belle per il
circolo dei programmatori bravini.
Resta il fatto che di tutti i cialtroni che scrivono in basic, alcuni
mandano avanti le loro povere aziende e i loro programmucci sbarcando il
lunario chi meglio chi peggio. Il che non è dato a tutti. E qui vorrei
buttare quella che potrebbe sembrare una cattiveria, ma non vuole esserlo.
Visto che secondo te non ci possono essere in questo ng programmatori in
gamba, mettiamo le carte in tavola e vediamo cosa abbiamo realizzato noi in
vb e tu in C/Delphi. Dal momento che *tu* dici di aver fatto cose che noi
neppure immaginiamo, vediamole! Noi faremo lo stesso e così ognuno si farà
un'idea.


> prima di tutto: non mi oserei MAI a dare della "checca" come insulto a
> chicchessia, e scommetto, senza timore di mancare troppo il bersaglio,
> che tu sei uno di quelli che quando sente dei gay picchiati per strada
> con la polizia a dieci metri che "ma noi non abbiamo sentito niente",
> pensa "ma che bastardi", però non si rende conto di essere proprio lui
> la causa di quello che è successo, che succede e che succederà

A dire il vero l'ho scritto proprio perché mi sembravi il tipo che dà della
"checca". Mi ti raffiguro un po' come il commissario di "Indagine su un
cittadino al di sopra di ogni sospetto". Scusa, sai...
Resta il fatto che non sai con chi stai parlando. (Sei furioso con tutto il
mondo.) Io *sono* gay.


> secondo: non sto scherzando

Io sì. E' una delle poche libertà che mi sono rimaste.

ciao,
stefano.

KJK::Hyperion

unread,
Sep 9, 2002, 6:53:20 PM9/9/02
to
stefano ha scritto:

> Vabbè, questo è vero di qualsiasi linguaggio. Non è che il C sia
> intrinsecamente idoneo a bravi programmatori e il basic a pessimi.

ok, non sai di cosa stai parlando. Poi mi spiegherai perchè Visual C++
è stato scritto con Visual C++ e Delphi con Delphi, mentre Visual Basic
non è scritto con Visual Basic. Perchè per C e Delphi esistono libri
che ti spiegano come farci anche il caffè, mentre uno dei libri più
popolari sulla programmazione in Visual Basic spiega perchè fa così
schifo e come rimediare (usando - guardacaso! - concetti del C++ e
teoria degli algoritmi)

> Io ho sempre creduto che l'arte della programmazione richieda molta
> umiltà.

tu non mi conosci, non capisci una parola di quello che dico, e - sarà
un caso? - non leggo un solo tuo post, a parte quelli in risposta a me
e ad un paio di off-topic. Ma sei tornato da poco (nostalgia?) come me,
sei perdonato

Stringi stringi, il succo dei tuoi messaggi si riduce a quelle cinque-
sei righe che quoto io, in cui peraltro non dici nulla, solo ovvietà. E
giochi al finto tonto, ma io non abbocco, perchè non sono qui per fare
polemica. E qui mi conoscono, e io ho dato qualcosa a questo newsgroup
(non molto, ma è un mio problema patologico), e io facevo parte di
questo humus (compost?) da cui, se dio vuole, germina nuova vita,
quindi, per una volta, lascio da parte l'umiltà (pure troppa), e mi
sento in diritto di parlare e fare pure la voce grossa

Tornando al discorso tecnico. Io ho studiato Algoritmi all'università
(nastro registrato: "oooooh! aaaaah!"), e so il significato di cose
come la complessità computazionale, e tu puoi continuare quanto ti pare
a sostenere che non è necessario capire, che il "bello" del Basic è
quello, che "dopotutto i computer diventano sempre più veloci" (non
l'hai detto, ma fa lo stesso, è rivolto a tutti), io continuerò ad
inorridire di fronte alla bieca ignoranza (chè poi, perchè ti schieri
proprio tu non lo capisco). Conosci la storiella di Shlemiel?

> A dire il vero l'ho scritto proprio perché mi sembravi il tipo che
> dà della "checca". Mi ti raffiguro un po' come il commissario di
> "Indagine su un cittadino al di sopra di ogni sospetto". Scusa,
> sai... Resta il fatto che non sai con chi stai parlando.

posso dire la stessa cosa io. Potrei anche aggiungere che dieci minuti
di Google valgono mille parole (lo stesso vale per una home page che sa
di tuffo nei '90 - solo che queste mille parole non sono adatte ad un
newsgroup per famiglie)

> (Sei furioso con tutto il mondo.) Io *sono* gay.

bene, allora comincia con il non buttare legna sul tuo stesso rogo. Di
KJK::Hyperion ce n'è uno, ma di Ispettori ce n'è un mondo (il film non
l'ho visto, ma scommetto che da uno come me te lo aspettavi già), e
l'ironia è una gran qualità se non scava la fossa a qualcuno

cisab

unread,
Sep 9, 2002, 8:48:30 PM9/9/02
to
Questo gioco sta diventando noioso e io non ho tutto questo tempo, perché ho
del codice da scrivere e manutenere (pensa un po' gli altri!).
Una cosa l'ho capita: a te piace molto buttar via il bambino con l'acqua
sporca, critichi tutto e tutti con toni pesanti, ma di te non ci dici nulla,
non abbassi la guardia. Mi fai capire di aver fatto ricerche su di me
(capirai! non sarò Gates, ma non ho mai nascosto la mia identità)
confermando i miei sospetti: sei davvero un commissario paranoico. Però,
visto che hai cercato di sbirciare le mie carte (il gioco era di abbassarle
insieme, brutto baro!), devi dirci dove possiamo vedere i tuoi programmi, il
tuo sito web, etc. Mica puoi esser così scorretto. Te la tiri come pochi ma,
stringi stringi, non ci hai detto che ne fai di tutta questa boria. Quindi,
appena ti dimettono dalla neuro-deliri, facci sapere quali sono i programmi
che si fregiano del tuo logo! Dovrebbero essere meravigliosi! O non credi
che questo sia importante? (Sì, dev'essere così: tu pensi che l'importante
sia la 'teoria' e che il software usato dagli utenti sia una cosa sporca,
alla quale non è necessario abbassarsi.) Se non è così, rivelati a noi! Se è
così, invece, non sei un programmatore, sei un misero insegnante o -
peggio - un ideologo (brrrr! - come si dice: chi sa fa...).
Non pensare poi di tirarmi dalla tua. Io non mi schiero con nessuno. E' vero
che io sto scherzando, ma davvero non condivido il tuo atteggiamento: io
cazzeggio, ma tu hai l'aria di fare sul serio. Insomma, questo atteggiamento
da filosofo fin de siecle ha veramente rotto. Ma davvero ti credi così al di
sopra del volgo? Ma dai! Mi fai strappare le brache dal ridere!

stefano
(ps - poi mi fai un pacchetto di tutto quello che hai trovato su Google? Da
solo non ci avrei mai pensato, ma a questo punto hai stuzzicato la mia
vanità!-)
(ppss - se vuoi mettiamo tutto a tacere: posso trovarti un posto di
agrimensore - o quantomeno di bidello - all'Università.)

KJK::Hyperion

unread,
Sep 9, 2002, 9:04:36 PM9/9/02
to
stefano ha scritto:

> Forse dovrei lasciar perdere, ma...

idem, ma mi sono accorto di aver dimenticato un paio di cose. E poi
sono annoiato

> Non capisco perché dovrei ammazzarmi con le funzioni grafiche di
> Windows quando Microsoft mi offre gentilmente l'oggetto PictureBox.

non vorrei fare polemica, ma:
- su quel "gentilmente" ho i miei dubbi
- la VCL di Delphi offre di meglio, se proprio s'ha da fare grafica
(personalmente me ne tengo alla larga, ma capirne qualcosa torna
sempre utile)

> Forse tu lo fai, ma allora
> vuoi dirmi che tu non usi ADO, non usi Oracle o SQL Server, tu ti
> scrivi direttamente un DBMS tuo proprio!

incredibilmente per l'immagine distorta che ti sei fatto di me, tollero
ADO e arrivo anche ad evangelizzarne (pur non capendone un'acca, finora
ho solo usato MySQL da PHP, e un po' di Oracle per la scuola)

> La maggior parte dei
> programmatori non ha che una pallida idea di come sia strutturato
> fisicamente un database e di quali algoritmi siano implicati nella
> sua gestione, tuttavia usano ADO, etc. Forse dirai che non volevi
> dire questo, ma perché non posso portare l'argomento alle estreme
> conseguenze?

io non lo faccio. Io parlo di correttezza programmatica e tu parli di
velocità (il che mi inquieta, forse sto diventando ingegnere)

>> terzo: tu non hai la più pallida idea di cosa puoi fare con
>> CreateFile.
> Ah! Ah! Ah! Quando la racconto agli amici!

spiegami il significato dell'accesso GENERIC_EXECUTE e quando andrebbe
usato. Perchè dovresti aprire tutti i file con FILE_SHARE_DELETE e
perchè questo non dovrebbe avere effetto sul tuo programma. Perchè una
funzione che accetta un nome di file è generalmente un errore di design
(beninteso, Windows stesso ne ha tanti, a livello di Win32. Scendi a
livello NT e la sua bellezza ti abbaglia. Quasi. Ci sono cose che fanno
accapponare la pelle comunque). Perchè gli handle a file sono tutti
multipli di 4 e gli handle a buffer di console no

oddio, non dico certo che sono tutte cose indispensabili, se già ci
spostiamo su Winsock - che è pure di basso livello - non saprei dirti
nulla, non per questo mi sento meno un "vero uomo" (altra espressione
orribile, se mai avremo altre conversazioni promettimi di non usarla
più) ma fanno la differenza. Io dico: Windows è documentato, o almeno
prevedibile, fino ad un livello molto basso (e in questo Windows è
unico), e c'è un solo produttore, approfittiamone! anche considerando
che la maggior parte di queste cose è documentata officialmente, e se
non lo è, è abbastanza prevedibile, il che ci porta a...

>>Per documentazione non ufficiale e un sacco di codice (di
>> cui un po' - poco - scritto da me), www.reactos.com
> La prossima volta ci venderai anche un aspirapolvere.

io non sputerei sopra a ReactOS, sai. Va a rilento per carenza cronica
di sviluppatori, o per l'inerzia/pigrizia di quelli che ci sono (mea
culpa, mea culpa), ma va, e alla grande. Deve solo riempire il gap che
lo separa dal progetto complementare, WinE, e poi solo un intervento
divino lo potrà fermare

per ora è "solo" una fonte di documentazione unica su Windows, e io lo
sfrutto spesso e volentieri, e il mio è un invito a fare altrettanto

>> Io LO SO, io ci sono passato, io lo sono stato, e visto che non
>> lo sono più dico di essere più ottimista di Dijkstra.
> Avresti potuto chiudere. mutatis mutandis, con le parole di Roy
> Batty

scelgo le mie citazioni da poche, fidate fonti, grazie

> E Clint Eastwood (sai chi è?) ha detto: "Le opinioni sono come le
> palle, ognuno ha le sue".

vedi sopra

> "se tu sapessi [sic! - si dice 'conoscessi']

grazie per avermelo fatto notare, sul serio. La metà del cervello che
uso per l'italiano mi si sta arrugginendo un po', ultimamente. Peccato
che si debba sempre litigare per avere delle critiche sul proprio
lessico/sintassi/ortografia

> Il che non è dato a tutti. E qui vorrei buttare quella che
> potrebbe sembrare una cattiveria, ma non vuole esserlo. Visto che
> secondo te non ci possono essere in questo ng programmatori in
> gamba, mettiamo le carte in tavola e vediamo cosa abbiamo
> realizzato noi in vb e tu in C/Delphi.

qui si va sul personale, mi spiace. Qualcosina di funzionante l'ho
scritto, per carità. Ho un programma che fa la copia a blocchi da e
verso file e device (non crederesti a quanto è utile), un clone (mille
volte migliore) di regsvr32 - di cui ho scoperto un bug proprio ieri ma
non ho un Delphi a portata di mano per correggerlo - un complicatissimo
programma Unix che usa raffinate tecniche di programmazione (memoria
condivisa, IPC, locking di file) per non fare nulla (trovo ironico che
sia il mio unico programma completo), una manciata di file batch per
uso personale quotidiano che fanno un po' di tutto (tra cui uno che ora
mi sta scaricando il PSDK in background), e poi il lavoro che ho fatto
per ReactOS: psapi.dll, CreateFile (ironia della sorte, eh?), e un
sottosistema POSIX per Windows partito fiero come il Titanic, finito
come il Titanic con il muso contro un iceberg, attualmente fermo in
cantiere in fase di ricostruzione. Poi non saprei, perchè ho la
sindrome di Lovecraft e periodicamente distruggo quasi tutti i miei
vecchi lavori (ai bei tempi degli OCX avevo scritto parecchio, pure
programmi che riscuotevano un certo successo nel circondario, ma non
trovo più nulla)

non parlerò delle ragioni per cui, perchè è una cosa personale, non
sono mazzi vostri, non voglio influenzare la giuria, ecc. ecc. ecc. ma
non ha a che fare con le mie capacità o mancanza di (forse il fatto che
sono troppo bravo per il mio stesso bene ha la sua importanza, però)

>> secondo: non sto scherzando
> Io sì

"tutto quello che ho detto è falso, inclusa questa stessa frase"?

Lupo

unread,
Sep 9, 2002, 9:05:37 PM9/9/02
to

"cisab" <ci...@msn.com> ha scritto

> Perň, visto che hai cercato di sbirciare le mie carte (il gioco era di


abbassarle
> insieme, brutto baro!), devi dirci dove possiamo vedere i tuoi programmi,
il

> tuo sito web, etc. Mica puoi esser cosě scorretto. Te la tiri come pochi


ma,
> stringi stringi, non ci hai detto che ne fai di tutta questa boria.
Quindi,
> appena ti dimettono dalla neuro-deliri, facci sapere quali sono i
programmi
> che si fregiano del tuo logo! Dovrebbero essere meravigliosi! O non credi
> che questo sia importante?

Occhio, per la strada si trova di tutto.
Groucho Marx forse ci metteva la buccia di banana, oggi si puň scivolare
pestando su altro...

http://www.reactos.com


cisab

unread,
Sep 9, 2002, 9:13:46 PM9/9/02
to
Ma poi: chi è Shlemiel del quale dovrei conoscere la 'storiella'?
Insomma, tu ci rovini addosso perché non siamo alla tua altezza e poi mi
chiedi una cosa simile? Io sono troppo ignorante per saperlo, no? Al massimo
io conosco la "Storia meravigliosa di Peter Schlemihl" (di Chamisso), ma
certo tu non puoi aver sbagliato nello scrivere. In ogni caso, non capisco
come si adatti la storia di Peter Schlemihl al nostro caso. In realtà forse
tu alludevi alla storia di Rumplestiltskin dei fratelli Grimm. Se così è,
prova a dire il mio nome per vedere se si svela l'incantesimo! Ovviamente,
se però hai sbagliato (potrei star usando computer di chiunque, potrei
essere l'addetto alle pulizie di quest'azienda e di fatto ho usato molti
nicknames e indirizzi di posta, tutti buoni se controlli) potresti far
incavolare di brutto qualche guru di quelli che abitano qui e finire come
Hansel e Gretel. Ti conviene seminare le mollichine sul percorso prima di
addentrarti ancora.

s.

cisab

unread,
Sep 9, 2002, 9:19:10 PM9/9/02
to
Non mi dire cha alla fine ci scambiamo pure un bacino!
Non ho nulla da quotare, cazzo!
Hai vinto.
Ciao.
(La prossima volta però ce le diamo su qualcosa non OT.)

s.

KJK::Hyperion

unread,
Sep 9, 2002, 10:02:45 PM9/9/02
to
cisab ha scritto:

> Questo gioco sta diventando noioso e io non ho tutto questo tempo,
> perché ho del codice da scrivere e manutenere

a quest'ora?

> Mi fai capire di aver fatto ricerche su di me

se dai in giro nome, cognome e ragione sociale, devi aspettartelo prima
o poi. Comunque era solo perchè continuavi a dire che non so chi sei,
ed era vero, quindi ho controllato

> Però, visto che hai cercato di sbirciare le mie carte (il gioco era
> di abbassarle insieme, brutto baro!), devi dirci dove possiamo vedere
> i tuoi programmi, il tuo sito web,

Google ancora non me lo indicizza, spiacente, trovi solo un paio di
siti che ho fatto negli anni scorsi per beneficenza. Dovrai aspettare
che i robottini lo trovino o che qualcuno faccia la spia

> Insomma, questo atteggiamento da filosofo fin de siecle ha veramente
> rotto.

non conosco filosofi fin de siecle, non so come potrei atteggiarmi
tale. Sarà che sono fatto così

> (ps - poi mi fai un pacchetto di tutto quello che hai trovato su
> Google? Da solo non ci avrei mai pensato, ma a questo punto hai
> stuzzicato la mia vanità!-)

il tuo sito, il sito della tua società, una presentazione (senza
offesa, ma è un po' trita) della tua società scritta da te e il tuo
socio, i tuoi messaggi su Google, poco altro. Di me, se ti impegni,
puoi trovare nome, cognome e forse anche indirizzo

> (ppss - se vuoi mettiamo tutto a tacere: posso trovarti un posto
> di agrimensore - o quantomeno di bidello - all'Università.)

ripassa l'anno prossimo

KJK::Hyperion

unread,
Sep 9, 2002, 10:11:44 PM9/9/02
to
cisab ha scritto:

> Ma poi: chi è Shlemiel del quale dovrei conoscere la 'storiella'?

è il sempliciotto di una barzelletta ebrea. Anche qui, Google. Non lo
trovi con solo "Shlemiel", ma visto che si parlava di programmazione,
con "Shlemiel programming" il risultato giusto è il primo. Per non
rubarti tempo, ti riporto indirizzo e barzelletta:

<http://www.joelonsoftware.com/articles/fog0000000319.html>

"[...]

Shlemiel gets a job as a street painter, painting the dotted lines down
the middle of the road. On the first day he takes a can of paint out to
the road and finishes 300 yards of the road. "That's pretty good!" says
his boss, "you're a fast worker!" and pays him a kopeck.

The next day Shlemiel only gets 150 yards done. "Well, that's not
nearly as good as yesterday, but you're still a fast worker. 150 yards
is respectable," and pays him a kopeck.

The next day Shlemiel paints 30 yards of the road. "Only 30!" shouts
his boss. "That's unacceptable! On the first day you did ten times that
much work! What's going on?"

"I can't help it," says Shlemiel. "Every day I get farther and farther
away from the paint can!"

[...]"

Joel Spolsky lo usa come metafora delle funzioni standard per la
manipolazione di stringhe in C. Il resto dell'articolo è interessante,
e dice più o meno tutto quello che ho detto io (viceversa), solo che io
non sto simpatico a nessuno

> Ti conviene seminare le mollichine sul percorso prima di addentrarti
> ancora.

ti conviene calmarti, le zappe sui piedi fanno male

KJK::Hyperion

unread,
Sep 9, 2002, 10:32:28 PM9/9/02
to
cisab ha scritto:

> Non mi dire cha alla fine ci scambiamo pure un bacino!

che, scherziamo, brutta checca! una virile stretta di mano e forti
pacche sulla schiena, da veri uomini. La invito a casa mia, domani a
cena, carne cruda e vino barbera

> Non ho nulla da quotare, cazzo!
> Hai vinto.

ho fatto il tuo gioco, contento? ho fatto outing (ma Google lo sapeva
già, anche questo), ora sai che sono solo chiacchere e distintivo.
Ciononostante, ho la pessima abitudine di avere quasi sempre ragione

> Ciao.
> (La prossima volta però ce le diamo su qualcosa non OT.)

ach! dilettante di iclvb. Qui i thread migliori sono quelli di OT, c'è
una lunga tradizione in tal senso

cisab

unread,
Sep 9, 2002, 10:35:51 PM9/9/02
to
> il tuo sito, il sito della tua società, una presentazione (senza
> offesa, ma è un po' trita) della tua società scritta da te e il tuo
> socio, i tuoi messaggi su Google, poco altro.

Sai anche dirmi chi è il mio socio? No, perché ho sempre pensato che le
società siano belle di numero dispari...
Messaggi miei su Google forse ce ne sono - ma non so con quale nome. Per lo
più riguarderanno il pensiero presocratico (specialmente Eraclito - che io
pronuncio Eraclìto e non Eràclito, mi raccomando).
Ah, per quanto riguarda invece ReactOS, ho dato solo una scorsa, ma mi pare
che siamo a livelli di onanismo irreversibile, eh? Sporcaccione!

ciao,
s.

luigi

unread,
Sep 9, 2002, 11:08:18 PM9/9/02
to
> La invito a casa mia, domani a
> cena, carne cruda e vino barbera
Dio mio, ma questo ragazzo comincia a piacermi! (E' sempre cosě.)
Ma che ci fai tutto solo a quest'ora. Mica starai programmando! Mi distrai,
cattivo!

ciao
s.
(se non la finiamo qui ci buttano fuori, io te lo dico)

Roberto Piazzolla

unread,
Sep 10, 2002, 4:43:03 AM9/10/02
to
Mi ero tenuto a forza fuori dal thread, ma visto che si è purtroppo spento,
vediamo di riaccenderlo. :-)

"KJK::Hyperion" ha scritto


> tollero ADO e arrivo anche ad evangelizzarne

Gli "evangelisti" dei prodotti M$ di solito sono sponsorizzati da M$. Anche
tu hai ceduto alle lusinghe della grande Mamma? ;-)

> io non lo faccio. Io parlo di correttezza programmatica e tu parli di
> velocità (il che mi inquieta, forse sto diventando ingegnere)

Ahia, un ingegnere. Il basic inquina irreversibilmente il cervello dei
futuri programmatori, ma l'ingegneria inquina irreversibilmente quello dei
futuri imprenditori. La velocità è molto più importante della correttezza
nel mondo del lavoro.
Se poi parliamo di teoria sfondi una porta aperta, ma quando lavoro per un
cliente la prima cosa che mi chiede è la data di consegna, poi si assicura
che funzioni, e poi se ha voglia di spendere mi dice che vuole che il lavoro
sia fatto bene. ;-)
Il bello è che se lo fai male e quando ci dovrai rimettere le mani ci vorrà
tanto tempo, se il cliente vorrà delle modifiche ti pagherà di più.
Se non ci fosse di mezzo la correttezza professionale, varrebbe la pena di
fare le cose male apposta, e c'è gente che fa body-rental che insegna a
lavorare proprio così.

> spiegami il significato dell'accesso
> GENERIC_EXECUTE e quando andrebbe
> usato.

La faccenda ha a che fare con la security, e l'accessibilità dei file. Il
DACL si occupa di dire chi può o meno accedere ai file a seconda dei flag di
creazione. I problemi legati all'accesso tramite DACL sono evidenziati qui:
http://www.microsoft.com/msj/defaultframe.asp?page=/msj/0398/service2.htm&na
v=/msj/0398/newnav.htm

> Perchè dovresti aprire tutti i file con FILE_SHARE_DELETE e
> perchè questo non dovrebbe avere effetto sul tuo programma.

Perchè così lo puoi cancellare mentre è aperto. Ovvero, se richiesto, il
sistema operativo si occuperà di cancellarlo appena verrà chiuso.

> Perchè una funzione che accetta un nome di file
> è generalmente un errore di design

O bella, questa mi è nuova. Va bene usare gli handle tutte le volte che è
possibile, ma per avere un handle almeno una volta il nome del file lo devi
usare, no? ;-)

> Windows stesso ne ha tanti, a livello di Win32. Scendi a
> livello NT e la sua bellezza ti abbaglia.

Le API di windows sono effettivamente affascinanti. Possono essere chiamate
da qualunque linguaggio, ma sono state pensate specificatamente per il basso
livello. In Asm le chiami con una INVOKE e ti ritornano il risultato in EAX.

> Perchè gli handle a file sono tutti
> multipli di 4 e gli handle a buffer di console no

Perchè per un accesso più rapido da parte del processore nelle operazioni di
MOV e SCAN, è meglio che la mappa di memoria puntata sia allineata a 4 byte.
Probabilmente i buffer di console puntano ad una tabella di offset, e non
c'è bisogno che siano allineati.

Ho superato l'esame? Posso fare 4 chiacchiere con te (e dissentire, magari)
senza essere malvisto perchè programmo in VB, adesso? ;-)

> io non sputerei sopra a ReactOS, sai.

Non ci sputo, ma non ci spero neppure molto.
Ho visto morire fior di progetti da Freedows in poi (prima Freedows95, poi
freedows98, poi Freedows Os, e adesso il dominio è in vendita).
Ovviamente avete tutta la mia solidarietà, e spero che ci riusciate, ma se
devo scommettere su un progetto alternatico a Windows, preferisco farlo su
Lindows (che ha comunque qualche possibilità, perchè ha dietro capitali e
sviluppatori a tempo pieno).

> > E Clint Eastwood (sai chi è?) ha detto: "Le opinioni sono come le
> > palle, ognuno ha le sue".
> vedi sopra

Sopra le palle? Preferisco guardare altro, grazie. :-)

> "tutto quello che ho detto è falso, inclusa questa stessa frase"?

Questa frase non è un paradosso, è semplicemente falsa, visto che non l'hai
detta, ma scritta.

Ciao
*Roby*


Roberto Piazzolla

unread,
Sep 10, 2002, 4:51:37 AM9/10/02
to

"Roberto Piazzolla" ha scritto

> > Perchè gli handle a file sono tutti
> > multipli di 4 e gli handle a buffer di console no
> Perchè per un accesso più rapido da parte del processore nelle operazioni
di
> MOV e SCAN, è meglio che la mappa di memoria puntata sia allineata a 4
byte.
> Probabilmente i buffer di console puntano ad una tabella di offset, e non
> c'è bisogno che siano allineati.

Opps, ripensandoci ho detto una vaccata.
Gli handle a file puntano sicuramente a tabella di offset. Sono multipli di
4 perchè la tabella è allineata a 4 byte, e i puntatori alle zone di memoria
corrispondenti sono probabilmente doubleword.
Per gli handle a buffer di console, sarà vero esattamente il contrario
(ipotizzo, non ho tempo di guardare la documentazione ora).

Ciao
*Roby*


KJK::Hyperion

unread,
Sep 10, 2002, 5:17:44 PM9/10/02
to
Roberto Piazzolla ha scritto:

>> tollero ADO e arrivo anche ad evangelizzarne
> Gli "evangelisti" dei prodotti M$ di solito sono sponsorizzati da
> M$. Anche tu hai ceduto alle lusinghe della grande Mamma? ;-)

non sono tenuto a rivelare questa informazione :-) (Windows 2000 r00lz!)

>> io non lo faccio. Io parlo di correttezza programmatica e tu
>> parli di velocità (il che mi inquieta, forse sto diventando
>> ingegnere)
> Ahia, un ingegnere. Il basic inquina irreversibilmente il cervello
> dei futuri programmatori, ma l'ingegneria inquina
> irreversibilmente quello dei futuri imprenditori. La velocità è
> molto più importante della correttezza nel mondo del lavoro.

non temere, chè alla vista della E con due trattini la mia mente si
risintonizza in fretta :-)

>> spiegami il significato dell'accesso GENERIC_EXECUTE e quando
>> andrebbe usato.
> La faccenda ha a che fare con la security, e l'accessibilità dei
> file.

sì, ma quando si usa? lo spiego io, altrove e tempo fa, e Google lo sa:

<http://www.google.com/search?q=generic_execute+kjk::hyperion>

(dico anche un sacco di boiate, quindi filtrate)

in breve: se scrivete un interprete per un linguaggio di scripting,
alla Windows Scripting Host, gli script apriteli con GENERIC_EXECUTE
anzichè GENERIC_READ. L'effetto è lo stesso, ma è più corretto nel
primo modo

> Il DACL

è femminile :-) (Discretionary Access Control *List*)

>> Perchè dovresti aprire tutti i file con FILE_SHARE_DELETE e
>> perchè questo non dovrebbe avere effetto sul tuo programma.
> Perchè così lo puoi cancellare mentre è aperto. Ovvero, se
> richiesto, il sistema operativo si occuperà di cancellarlo appena
> verrà chiuso.

Non proprio, ma abbastanza. Più che altro: il nome di un file è solo un
link, un riferimento al file. Una volta che è aperto, un file continua
ad esistere anche senza nome, e solo quando viene chiuso da tutti i
programmi che lo hanno aperto e quando tutti i suoi nomi sul disco sono
stati eliminati (zero riferimenti), lo spazio occupato dal file verrà
contrassegnato come libero

Permettendo l'eliminazione a file aperto, permettiamo di sostituirlo
senza bisogno di segnalarlo al programma. La cosa però ha un'utilità
limitata dal fatto che un file mappato in memoria, indipendentemente
dall'accesso con cui è stato aperto, non sarà mai cancellabile. Quindi
non si possono, ad esempio, sostituire eseguibili aperti cancellandoli
e creandone uno nuovo con lo stesso nome. Un limite gratuitamente
arbitrario :-/

>> Perchè una funzione che accetta un nome di file è generalmente un
>> errore di design
> O bella, questa mi è nuova. Va bene usare gli handle tutte le
> volte che è possibile, ma per avere un handle almeno una volta il
> nome del file lo devi usare, no? ;-)

già... in CreateFile ;-) comunque il concetto ti è chiaro

>> Windows stesso ne ha tanti, a livello di Win32. Scendi a
>> livello NT e la sua bellezza ti abbaglia.
> Le API di windows sono effettivamente affascinanti. Possono essere
> chiamate da qualunque linguaggio, ma sono state pensate
> specificatamente per il basso livello. In Asm le chiami con una
> INVOKE e ti ritornano il risultato in EAX.

beh, tutte le funzioni vanno così, in genere. Non usano EAX solo quelle
che ritornano float (cima dello stack del coprocessore) e strutture di
dimensioni maggiori ad una parola di macchina (spazio allocato dal
chiamante, passato per riferimento come parametro extra)

Piuttosto, le funzioni di Windows NT sono palesemente progettate meglio
di quelle del "cugino" Win32. Prima di tutto, ritornano tutte lo stesso
tipo di valore, NTSTATUS (pensa a Win32, dove alcune ritornano un BOOL,
altre un HANDLE, altre ancora DWORD, int, eccetera), quindi c'è un modo
consistente di verificare il successo di una chiamata. Poi, funzioni
analoghe hanno prototipi analoghi: le funzioni per creare o aprire
oggetti chiedono tutte una struttura OBJECT_ATTRIBUTES, una ACCESS_MASK
con l'accesso richiesto e un parametro OUT per ritornare l'handle; le
funzioni per leggere/impostare informazioni sugli oggetti chiedono
tutte l'handle all'oggetto, il codice del tipo di informazione da
leggere/impostare, il buffer e sue dimensioni in byte

L'unica parte dell'API Win32 (a parte le funzioni Lsa* per lo sviluppo
di pacchetti di autenticazione) che espone questa semantica è l'API del
registro: tutti gli oggetti (le chiavi) vanno aperti relativamente ad
un altro oggetto, il codice di errore viene ritornato anzichè scritto
in una variabile, c'è una sola funzione per più tipi di dati (i valori
delle chiavi) che richiede tipo di dati, buffer e dimensioni del
buffer, e così via

>> Perchè gli handle a file sono tutti
>> multipli di 4 e gli handle a buffer di console no
> Perchè per un accesso più rapido da parte del processore nelle
> operazioni di MOV e SCAN, è meglio che la mappa di memoria puntata
> sia allineata a 4 byte. Probabilmente i buffer di console puntano
> ad una tabella di offset, e non c'è bisogno che siano allineati.

una ragione molto, molto, molto più semplice:

//
// Low order two bits of a handle are ignored by the system and available
// for use by application code as tag bits. The remaining bits are opaque
// and used to store a serial number and table index.
//

#define OBJ_HANDLE_TAGBITS 0x00000003L

In pratica, Win32 setta il primo bit, e lo usa per distinguere gli
handle a file da quelli a console in ReadFile, WriteFile, CloseHandle,
eccetera, perchè gli handle a file vanno passati al sistema, e gli
handle a console al Console Server

>> io non sputerei sopra a ReactOS, sai.
> Non ci sputo, ma non ci spero neppure molto.
> Ho visto morire fior di progetti da Freedows in poi (prima
> Freedows95, poi freedows98, poi Freedows Os, e adesso il dominio è
> in vendita).

lo so, lo so. Da freeos.com seguii speranzoso tutti i link a quei
progetti, trovando solo più ReactOS, ultimo sopravvissuto tra le macerie.
Ma conta che ReactOS va avanti da sette anni. Secondo me è sopravvissuto
per due ragioni: ha scelto il modello di ispirazione migliore (e pensare
che partì come "Freewin95"), e rispetto agli intenti di altri progetti
("sarà più bello! più fico! nuovo kernel! nuovo look!") tiene i piedi
per terra ("ci gireranno i driver e i programmi che avete comprato")

comunque non è che siamo proprio soli. ReactOS, politicamente, è il
cugino di Linux, un "GNU/Windows" se vogliamo. Siamo sotto l'ombrello
di GNU e della GPL, abbiamo amici potenti (Linux e Wine - ma Redhat ci
ha fatto capire chiaramente che non caccerà una lira per aiutarci. Altri,
non ricordo chi - forse Compaq - hanno già donato dell'hardware), e
abbiamo raggiunto la massa critica che serve a tenere in vita un
progetto

> Ovviamente avete tutta la mia solidarietà, e spero
> che ci riusciate, ma se devo scommettere su un progetto
> alternatico a Windows, preferisco farlo su Lindows (che ha
> comunque qualche possibilità, perchè ha dietro capitali e
> sviluppatori a tempo pieno).

Sono degli sciacalli. Mentalmente li difendevo ogni volta che leggevo
attacchi al loro modello di business, ma ora vengo anche a sapere che,
oltre a non ricontribuire codice alla comunità, basano i loro guadagni
sull'ingenuità dell'utenza (in pratica: fanno pagare per l'installazione
di software che non hanno scritto loro, con un packet manager non scritto
da loro, scaricato da server non forniti da loro - tutte cose che è
possibile fare gratuitamente)

>> "tutto quello che ho detto è falso, inclusa questa stessa frase"?
> Questa frase non è un paradosso, è semplicemente falsa, visto che
> non l'hai detta, ma scritta.

d'oh! mai sentita una confutazione del genere :-) Comunque i paradossi
di questo tipo non esistono perchè non esistono esseri umani in grado
di dire solo menzogne, e se pure esistessero, sosterrebbero sempre di
dire la verità :-)

KJK::Hyperion

unread,
Sep 10, 2002, 5:37:37 PM9/10/02
to
cisab ha scritto:

>> il tuo sito, il sito della tua società, una presentazione (senza
>> offesa, ma è un po' trita) della tua società scritta da te e il
>> tuo socio, i tuoi messaggi su Google, poco altro.
> Sai anche dirmi chi è il mio socio? No, perché ho sempre pensato
> che le società siano belle di numero dispari...

tipo uno? come disse quel famoso, "dovresti sapere che tra due soci ce
n'è sempre uno di troppo"

> Messaggi miei su Google forse ce ne sono - ma non so con quale
> nome.

tu continua pure a cambiare mittente, chè qua ho un bel minardi.txt da
ingrassare, per poi ricattarti

> Per lo più riguarderanno il pensiero presocratico (specialmente
> Eraclito - che io pronuncio Eraclìto e non Eràclito, mi raccomando).

starò attento a non pronunciarlo mai con l'accento sulla a in tua
presenza, non temere

> Ah, per quanto riguarda invece ReactOS, ho dato solo una scorsa, ma
> mi pare che siamo a livelli di onanismo irreversibile, eh?
> Sporcaccione!

e in gruppo, pure! con Microsoft che ci guarda!

KJK::Hyperion

unread,
Sep 10, 2002, 5:59:57 PM9/10/02
to
luigi ha scritto:

>> La invito a casa mia, domani a cena, carne cruda e vino barbera

> Dio mio, ma questo ragazzo comincia a piacermi! (E' sempre così.)


> Ma che ci fai tutto solo a quest'ora. Mica starai programmando! Mi
> distrai, cattivo!

sii al prossimo raduno, vedremo cosa si può fare (è un invito)

> (se non la finiamo qui ci buttano fuori, io te lo dico)

ma no, li conosco, sono tutti amici qui!

stefano

unread,
Sep 11, 2002, 7:44:08 AM9/11/02
to
> sii al prossimo raduno, vedremo cosa si può fare (è un invito)

Sei molto gentile, ma così mi metti in imbarazzo. Non ho il tempo di fare un
corso vb prima. Ho un po' di esperienza con il CF90 sotto T3E/UNICOS: dici
che potrebbe essere sufficiente ad introdurmi? E' Fortran, ma qualche
somiglianza con il vecchio basic c'è.

stefano.

rumplestiltskin

unread,
Sep 11, 2002, 8:05:41 AM9/11/02
to
> tu continua pure a cambiare mittente, chè qua ho un bel minardi.txt da >
ingrassare, per poi ricattarti

Mica penserai che lo faccio apposta! Non so neppure come si fa (questi
strumenti sono così ostili!). E' che sto usando svariati pc in svariati
posti (anche il server sarà diverso, immagino).
Quanto a minardi.txt, io ho williams.doc che è sicuramente meglio.
Questo però, a pensarci, è l'aspetto più seccante di questo mezzo di
comunicazione: se io dico di essere Mark Hammer non è detto che lo sia
realmente: potrebbe essere il mio nickname!-) Prometto però che d'ora in
poi cercherò di uniformare almeno il nickname (è un casino, perché i pc non
sono i miei, però i proprietari hanno troppo da fare per bazzicare i
newsgroup). Se
posso, d'ora in poi userò sempre questo pc (che ha un diverso server) e
comunque il nickname "rumplestiltskin".

rumplestiltskin.

KJK::Hyperion

unread,
Sep 11, 2002, 3:43:21 PM9/11/02
to
stefano ha scritto:

>> sii al prossimo raduno, vedremo cosa si può fare (è un invito)
> Sei molto gentile, ma così mi metti in imbarazzo. Non ho il tempo
> di fare un corso vb prima.

non importa! sarai il mio OT in carne ed ossa. Pal ne portò ben due,
due raduni fa (un programmatore Java e un sysadmin Linux), non credo ci
siano problemi (basta che paghi la tua quota :-)

> Ho un po' di esperienza con il CF90 sotto T3E/UNICOS:

UNICOS? hai davvero lavorato sui Cray? ma quanti anni hai?

> dici che potrebbe essere sufficiente ad introdurmi? E' Fortran, ma
> qualche somiglianza con il vecchio basic c'è.

massì! mi sembri il perfetto elemento da conversazione a tavola. Da
parte mia cercherò di non annoiarti troppo, e di intercedere in caso
venissero sollevate questioni riguardo alla tua partecipazione

rumplestiltskin

unread,
Sep 12, 2002, 7:56:40 AM9/12/02
to
> UNICOS? hai davvero lavorato sui Cray? ma quanti anni hai?
Ohé! Dico! L'età non si chiede! E poi mica ho detto che ho lavorato con il
fortran dell'IBM 305!! Che io sappia il Cray si produce ancora. Se ti dicevo
che ho lavorato su VMS e ULTRIX allora mi prendevi per lo zio di Lord
Babbage!-)


--
rumplestiltskin


KJK::Hyperion

unread,
Sep 12, 2002, 4:52:52 PM9/12/02
to
rumplestiltskin ha scritto:

>> UNICOS? hai davvero lavorato sui Cray? ma quanti anni hai?
> Ohé! Dico! L'età non si chiede!

credevo valesse solo per il gentil sesso, non me ne voglia

> E poi mica ho detto che ho lavorato con il fortran dell'IBM 305!! Che
> io sappia il Cray si produce ancora.

IBM 305? se ben ricordo è quello su cui diceva di aver studiato la mia
professoressa di Sistemi Operativi. E, sì, gli effetti si vedono :-)

> Se ti dicevo che ho lavorato su VMS e ULTRIX allora mi prendevi per
> lo zio di Lord Babbage!-)

no, ti avrei preso ("prendevo"!!!) per pazzo perchè non avresti potuto
esserne uscito sano :-) (controllami un po' quella consecutio temporum,
ti va?)

rumplestilskin

unread,
Sep 13, 2002, 6:23:45 PM9/13/02
to
Cosě secondo te sari pazzo!?:-P
Tu non sai cosa ho passato! E poi, basta ridere!-(

(la consecutio sarebbe stata giusta, sono stato io a usare un po' di slang)
--
rumplestilskin

"KJK::Hyperion" <no...@libero.it> wrote in message
news:Xns9287E8B1C...@193.70.192.192...
> no, ti avrei preso ("prendevo"!!!) per pazzo perchč non avresti potuto

KJK::Hyperion

unread,
Sep 13, 2002, 6:45:12 PM9/13/02
to
rumplestilskin ha scritto:

> Cosě secondo te sari pazzo!?:-P

non mi azzarderei mai :-)

> Tu non sai cosa ho passato!

infatti non lo so :-) suggeriscimi una domanda per l'oracolo di Google

> E poi, basta ridere!-(

giusto! siamo seri

> (la consecutio sarebbe stata giusta, sono stato io a usare un po'
> di slang)

ti tengo d'occhio! mai piů!

rumplestilskin

unread,
Sep 13, 2002, 7:03:13 PM9/13/02
to
Eh no, non mi freghi!
Comunque, ancora non c'erano questi strumenti infernali, quindi non trovi
tracce nemmeno di questo (credo...). Ancora si parlava di bbs e mclink
faceva timide apparizioni per quei pochi che avevano la fortuna di possedere
un modem a 4800 baud. A casa io ce l'avevo a 2400, quindi me ne stavo
tranquillo, anche perché si pagava a traffico su internet (per colpa della
sip (ora telecom), non del provider) . La multutenza si faceva con le
seriali a 9600 se non si aveva la fortuna di avere un network come si deve
(io ce l'avevo perché ero in una mega-azienda, ma c'era ancora il cablaggio
seriale che sbucava dai contropavimenti e talvolta dai controsoffitti). Il
nostro nodo era gestito da un pdp11 (il buon vecchio "titano"). Sul mio pc
(o tempora, o mores! neppure un 'rainbow', un vero pc ibm) c'era una scheda
depca per connettermi alla rete dei vax!
Alcuni brachiosauri brucavano fra il primo ed il secondo piano.

--
rumplestilskin

Roberto Piazzolla

unread,
Sep 16, 2002, 4:49:46 AM9/16/02
to

"KJK::Hyperion" ha scritto

> > M$. Anche tu hai ceduto alle lusinghe della grande Mamma? ;-)
> non sono tenuto a rivelare questa informazione :-)
Vero. Quindi farò finta di non aver capito la risposta implicita ;-)

> >> spiegami il significato dell'accesso
> > >GENERIC_EXECUTE e quando andrebbe usato.
> > La faccenda ha a che fare con la security, e l'accessibilità
> > dei file.

> in breve: se scrivete un interprete per un linguaggio di scripting,
> alla Windows Scripting Host, gli script apriteli con
> GENERIC_EXECUTE

Beh, devi ammettere che è un ambito estremamente ristretto e specialistico.
Un povero programmatore VB può tranquillamente sopravvivere anche senza
saperlo.

> > Il DACL
> è femminile :-) (Discretionary Access Control *List*)

Ahia. Preso in castagna.
A mia discolpa posso dire che il maschile e femminile nelle sigle vanno più
ad assonanza che a concordanza di genere. Non ho mai sentito dire "il VGA",
anche se VGA sta per Visual Graphic Array.

> Quindi non si possono, ad esempio, sostituire eseguibili aperti
> cancellandoli e creandone uno nuovo con lo stesso nome.
> Un limite gratuitamente arbitrario :-/

Mhmm, non giurerei sull'arbitrarietà.
Quando cancelli un file, ne liberi automaticamente i settori per un
possibile riutilizzo. Siccome gli eseguibili vengono caricati a pezzi
durante l'elaborazione col sistema degli overlay, se qualcuno dovesse
sovrascriverti un sottore che conserva dati del tuo eseguibile sarebbero
dolori.
Mi sembra un meccanismo abbastanza utile.

In ogni caso ho duvuto girarci intorno anche io per un problema di
aggiornamento dell'eseguibile via internet. In questo frangente un programma
di installazione si è rivelato la soluzione vincente: lanci l'installazione
(che chiede conferma prima di partire) ed esci dal programma.

> le funzioni di Windows NT sono palesemente

> progettate meglio [...]


> Prima di tutto, ritornano tutte lo stesso

> tipo di valore, NTSTATUS [...]


> Poi, funzioni analoghe hanno prototipi analoghi:

Questo perchè si è passati dall'ASM al C++. L'uniformazione è indispensabile
per utilizzare al meglio le funzionalità specifiche del polimorfismo e
dell'ereditarietà.
Io soffro un po' di nostalgia, ma deve essere normale tra "brontosauri"
informatici.

> >> Perchè gli handle a file sono tutti
> >> multipli di 4 e gli handle a buffer di console no

> // Low order two bits of a handle are ignored by the system

Ouff! Allora era una domanda trabocchetto. E io chissà che cosa mi credevo.
;-)

> conta che ReactOS va avanti da sette anni.
> Secondo me è sopravvissuto
> per due ragioni: ha scelto il modello di ispirazione migliore (e pensare
> che partì come "Freewin95")

Il problema è che nel frattempo M$ non sta ferma. Se si tenta di corrergli
dietro non la si raggiungerà mai.
Vuoi fare un SO compatibile con Win95? Fallo! Non passare alla compatibilità
Win2K quando esce quello, perchè altrimenti non finirai mai il lavoro.
Tra poco esce Windows .NET. Avete intenzione ancora di riscrivere il kernel
attuale per allinearvi a quello di M$?

I progetti che arrivano in fondo, sono quelli che non inseguono nessuno. Ad
esempio tengo tutt'ora d'occhio con interesse lo sviluppo di una versione
nativa di Ultima VII (un videogame decisamente obsoleto) per Windows
http://exult.sourceforge.net/ ed è gente che non avendo fretta alla fine
ottiene risultati.

> > [Lindows]
> Sono degli sciacalli.
Non conoscevo i retroscena, ma malgrado tutto qualunque concorrente diretto
di Windows è benvenuto.

Ciao
*Roby*


KJK::Hyperion

unread,
Sep 16, 2002, 8:10:44 PM9/16/02
to
Roberto Piazzolla ha scritto:

>> > M$. Anche tu hai ceduto alle lusinghe della grande Mamma? ;-)
>> non sono tenuto a rivelare questa informazione :-)
> Vero. Quindi farò finta di non aver capito la risposta implicita
> ;-)

di quale - UPGRADE TO WINDOWS(r) XP NOW!!! - risposta implicita - 50%
DISCOUNT!!! - stai - BUY NOW AND GET FREE "DANCIN' MONKEY BALLMER"(tm)
PLUSH TOY!!! - parlando?

>> >> spiegami il significato dell'accesso
>> > >GENERIC_EXECUTE e quando andrebbe usato.
>> > La faccenda ha a che fare con la security, e l'accessibilità
>> > dei file.
>> in breve: se scrivete un interprete per un linguaggio di
>> scripting, alla Windows Scripting Host, gli script apriteli con
>> GENERIC_EXECUTE
> Beh, devi ammettere che è un ambito estremamente ristretto e
> specialistico. Un povero programmatore VB può tranquillamente
> sopravvivere anche senza saperlo.

sì, e poi diventare programmatore C++, scrivere il Windows Scripting
Host e rendere immediatamente meno sicuri qualche milione di computer
in tutto il mondo :-P Tu intanto prendi nota :-)

>> > Il DACL
>> è femminile :-) (Discretionary Access Control *List*)
> Ahia. Preso in castagna.
> A mia discolpa posso dire che il maschile e femminile nelle sigle
> vanno più ad assonanza che a concordanza di genere. Non ho mai
> sentito dire "il VGA", anche se VGA sta per Visual Graphic Array.

beh, VGA non è un oggetto, una cosa che "si tocca". Più che altro senti
parlare di "modalità VGA", o cose simili. Comunque te la passo, perchè
la letteratura in italiano sulle DACL è scarsa :-) (3 risultati per "il
DACL" e 5 per "la DACL")

>> Quindi non si possono, ad esempio, sostituire eseguibili aperti
>> cancellandoli e creandone uno nuovo con lo stesso nome.
>> Un limite gratuitamente arbitrario :-/
> Mhmm, non giurerei sull'arbitrarietà.
> Quando cancelli un file, ne liberi automaticamente i settori per
> un possibile riutilizzo.

vedi che non stai attento? :-) questo è vero solo per obbrobri di file
system come il FAT, in cui i concetti di file, directory entry e spazio
su disco sono fusi tra di loro. Andava abbastanza bene per DOS, forse

già per Windows NT un po' meno :-) da cui la nascita dell'NTFS, che è
basato sugli inode: i file *non* sono identificati dal path, ma da un
numero progressivo, l'inode (index of node), indice in una tabella (nel
caso di NTFS, la MFT, Master File Table, che, caso curioso, a sua volta
è un file, e quindi indicizza anche se stessa) che definisce il tipo di
file, i suoi attributi, e la lista dei settori occupati. I path sono
implementati con file particolari, le directory, che contengono array
di coppie nome/inode, quindi le entry di una directory si limitano a
puntare ad un file, ma non *sono* file

cosa significa questo, in soldoni? che un file non ha bisogno di un
nome per esistere. Basta che sia tenuto aperto da almeno un programma,
che tenga il suo reference count ad almeno 1, anche se il suo link
count (ossia il numero di directory entry con quel determinato inode) è
zero (cioè il file è stato eliminato), e il file continua ad esistere.
Secondo te perchè la chiamata standard del C per eliminare file si
chiama unlink()? :-)

è una cosa molto usata nel mondo Unix per i file temporanei (apri il
file, lo unlink()i, e da quel momento in poi ti riferisci al file solo
tramite il descrittore/stream associato. Quando il descrittore viene
chiuso, lo spazio magicamente si libera), e per aggiornare programmi in
esecuzione (unlink()i il vecchio eseguibile e copi il nuovo al suo
posto - le istanze aperte non vengono influenzate, quelle che verranno
aperte in seguito useranno la nuova versione. Scrivere su un file in
esecuzione non è generalmente possibile - dovrebbe fallire con errore
ETXTBSY - e quando lo è tende a causare errori alquanto bizzarri nei
processi creati a partire da quell'eseguibile - sperimentato sulla mia
pelle - quindi in genere si opera così)

> In ogni caso ho duvuto girarci intorno anche io per un problema di
> aggiornamento dell'eseguibile via internet. In questo frangente un
> programma di installazione si è rivelato la soluzione vincente:
> lanci l'installazione (che chiede conferma prima di partire) ed
> esci dal programma.

c'è il barbatrucco. Se chiudi l'handle numero 4 (come avrai imparato,
il primo handle di ogni processo) e fai un UnmapViewOfFile() su un
qualsiasi indirizzo contenuto nell'eseguibile, l'eseguibile viene
"sganciato" e diventa eliminabile. Ovviamente devi trasferire il
controllo ad un'altra DLL, perchè una volta che l'eseguibile viene
tolto dalla memoria non è più... eseguibile :-)

Gary Nebbet (autore di "Windows 2000 Native API" - *IL* libro di
riferimento per i programmatori di ReactOS - e di svariati, storici
post su Usenet, nonchè uno dei miei idoli) lo fa usando kernel32.dll
come DLL di supporto, con una bellissima acrobazia in punta di stack:

#include <windows.h>

int main(int argc, char *argv[])
{
char buf[MAX_PATH];
HMODULE module;

module = GetModuleHandle(0);
GetModuleFileName(module, buf, MAX_PATH);
CloseHandle((HANDLE)4);

__asm
{
lea eax, buf
push 0
push 0
push eax
push ExitProcess
push module
push DeleteFile
push UnmapViewOfFile
ret
}

return 0;
}

L'handle 4 è sempre un handle alla Section ("file mapping", per Win32)
dell'immagine dell'eseguibile, perchè è uno dei primissimi parametri di
NtCreateProcess(), e ovviamente un parametro essenziale :-) e perchè
non lo chiude mai nessuno ;-)

sembra funzioni solo su Windows NT e famiglia. Non che lo userei mai,
comunque :-))) anch'io userei un installer a parte

>> >> Perchè gli handle a file sono tutti
>> >> multipli di 4 e gli handle a buffer di console no
>> // Low order two bits of a handle are ignored by the system
> Ouff! Allora era una domanda trabocchetto. E io chissà che cosa mi
> credevo. ;-)

;-P

> Il problema è che nel frattempo M$ non sta ferma. Se si tenta di
> corrergli dietro non la si raggiungerà mai.

vale per tutti, aggiornare i propri prodotti non è una loro esclusiva

> Tra poco esce Windows .NET. Avete
> intenzione ancora di riscrivere il kernel attuale per allinearvi a
> quello di M$?

il kernel non si tocca. Non lo tocchiamo noi, non lo toccheranno loro.
Con Windows 2000 e XP hanno già tirato fuori un nuovo modello di driver
(WDM), nuovi requisiti (WMI, PNP, APM, Driver Verifier) e un nuovo DDK,
sono già sul filo del rasoio e per qualche anno se ne staranno buonini

non osano tuttora cambiare l'architettura dei driver HID (Human
Interface Devices, in pratica mouse e tastiera), nonostante quella
attuale, limitata ad un solo stack (e quindi un solo utente alla volta
per macchina fisica), li abbia costretti per anni (le prime beta di
Hydra - alias Terminal Services - risalgono ai tempi di Windows NT 4
Service Pack 4) a sborsare una quintalata di soldi in licenze alla
Citrix per il loro Metaframe, e a venire ad un doloroso compromesso
(implementare la memoria virtuale anche per il kernel mode), pur di non
pestare i piedi agli scrittori di driver OEM

detto questo, abbiamo già i nostri piani per .NET. L'idea attuale è di
un porting di Mono per Windows (ne esiste già uno, ma è basato su
Cygwin - il nostro invece sarà largamente indipendente persino da
Win32, lo userà solo per le WinForm), e uno del team sogna addirittura
di fare un compilatore e framework .NET in kernel mode per scrivere
driver multi-piattaforma. Siamo abbastanza lontani dall'iniziare questo
progetto perchè ci manca ancora il compilatore giusto - ma ci stiamo
lavorando, è uno dei progetti a cui collaborerò prossimamente

> I progetti che arrivano in fondo, sono quelli che non inseguono
> nessuno.

secondo me è solo che non conosci Windows abbastanza a fondo. C'è poco
da scappare, per come è fatto, concepito e distribuito Windows. Ci sono
cose che Microsoft non può più cambiare, e cose che sono costretti a
documentare. Quel poco che rimane non documentato e che qualche
programma non loro usa, si può comunque sviscerare in qualche modo -
Windows 2000 non è un Windows 9x, non serve la conoscenza di oscure
istruzioni della CPU o l'uso di strumenti esoterici come SoftICE, è
tutto molto più trasparente e alla fine è il motivo per cui è migliore

0 new messages