Newsgroup: it.comp.programmare.win32
Titolo: Non bastonatemi (per la domanda)

Capisco che fare una domanda banale in un NG di professionisti nella materia
non sia tanto facile.
Per questo motivo vi chiedo di essere benevoli con le risposte.
Mi piacerebbe creare un piccolissimo programmino partendo da zero, insomma
creare qualcosa e dire: questa l'ho fatto io.
Purtroppo NON saprei nemmeno dove cominciare, e tantomeno il software da
usare.
L'entusiasmo perņ č alto.
La mia domanda (banale) č questa: cosa mi serve per fare ciņ che chiedo?
Grazie per le risposte.

 La mia domanda (banale) č questa: cosa mi serve per fare ciņ che chiedo?
La risposta altrettanto banale e'
- Avere idea di cosa sia un computer;
- Avere idea di cosa sia un S.O.;
- Avere idea di cosa si vuole realizzare;
- Avere idea di cosa sia un editor (anche se spesso
  e' integrato nell'ambiente di compilazione);
- Avere idea di cosa sia un linguaggio di programmazione;
- Avere idea di cosa sia un compilatore;
- Avere idea di cosa si deve fare per trasformare quanto
  scritto in un certo linguaggio in un programma eseguibile
  mediante il compilatore.
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 [...]
perdonami ma questa risposta te la potevi anche risparmiare per un povero
niubbo... cos'hai, paura di creare concorrenza? -_-'
non gli hai detto nulla di utile e hai avuto un tono sgradevole (forse
sono solo io che l'ho interpretato così...)
Eldorado: gli strumenti che devi procurarti variano moltissimo in base a
quello che vuoi fare e agli obiettivi che vuoi raggiungere. In generale
per "fare un programma" devi scrivere una serie di istruzioni codificate
secondo determinate regole di sintassi, cioè secondo quello che viene
definito "linguaggio di programmazione". Le prime due cose da fare sono
impararne uno (un linguaggio di programmazione) e procurarsi un
compilatore per quel linguaggio, ovvero un programma che si occupa di
interpretare il codice che hai scritto e di tradurlo in un file che in un
modo o nell'altro possa essere eseguito sul tuo computer.
Alcuni dei linguaggi di programmazione più conosciuti:
- C, è secondo me in assoluto il massimo della potenza: ci puoi fare
qualsiasi cosa e lo puoi studiare a vari livelli a seconda di quello che
cerchi di fare
- C++ praticamente un sovrainsieme del C, anche se alcuni lo negano, che
rispetto a quest'ultimo introduce alcune moderne tecniche di
programmazione (OOP, Object Oriented Programming, o programmazione a
oggetti).
- Java linguaggio semplice e potente, nasce secondo me ponendosi come
obiettivo primario la produttività: è molto più semplice del C++, sebbene
gli somigli abbastanza, ed è cross-platform, cioè uno stesso programma
creato in Java può essere eseguito su qualsiasi sistema operativo che
abbia una Java Virtual Machine, che sia Windows, Linux, Mac (be', almeno
in teoria dovrebbe essere così, ma non sempre lo è... :P).
- C#, ovvero il "Microsoft Java" :PPP e poteva mai Microsoft accontentarsi
del fatto che ci fosse in giro una buona idea non sua? :D
il C# (il cui nome vorrebbe lasciare ad intendere una ulteriore evoluzione
del C++, ma non è vero manco penniente imho) è cross-platform (in teoria)
ed è semplice come Java; il suo utilizzo più comune lo vede abbinato al
framework .NET (di cui avrai sentito parlare).
- Basic linguaggio molto vecchio, uno dei primi della storia; non è adatto
al presente proprio per la sua età: è un linguaggio che va come dire,
"controcorrente": non è stato fatto per supportare numerose moderne
tecnologie, ed è stato forzato nel presente nelle maniere più assurde; una
sua popolare implementazione è il Visual Basic di Microsoft, ma qualunque
persona sana di mente al mondo ti sconsiglierebbe di iniziare da Visual
Basic
- Assembly be', questo non è neanche tanto un linguaggio: si tratta di una
semplice traduzione menmonica delle sequenze di bytes fisicamente eseguite
da una CPU (opcodes); ogni CPU ha il suo linguaggio assembly, il più
diffuso è quello dei processori Intel x86; ti conviene impararlo solo se
vuoi lavorare ad un livello veramente *molto* basso (system programming,
device drivers... occhio che "basso livello" non significa programmare in
maniera scrausa :D significa invece programmare appunto a livello di
sistema, a livello molto tecnico insomma), e comunque sicuramente non è
roba per iniziare (anche i migliori iniziano con altre cose). Volendo
essere precisi il massimo della potenza non è il C o il C++, è l'assembly
:) solo che ho detto diversamente perché l'assembly è cervellotico, e per
quanto uno possa essere un mostro della programmazione, l'assembly limita
fortemente la sua capacità di creare programmi complessi (anche questo
significa potenza per un linguaggio); senza contare che le cose che puoi
fare in assembly e non puoi fare in C o C++ sono veramente poche...
Poi ce ne stanno moltissimi altri che hanno gli usi più svariati: Python,
Perl, Ruby, PHP... Google ti aiuterà ;)
Se decidi di iniziare dal C o dal C++ come compilatore ti consiglio gcc,
che è gratis; se hai Windows scarica il suo porting Win32, che si chiama
MinGW; se invece hai Linux (ma ne dubito) allora il gcc ce l'hai già.
Considera tuttavia anche l'ipotesi di iniziare dal Java, che non è affatto
male; e dopo aver scelto il linguaggio e il compilatore, possibilmente
procurati anche un buon IDE. Unica nota: EVITA CON TUTTA L'ANIMA un IDE
che si chiama "Dev-C++", quando leggi "Dev-C++" sappi che lì c'è il Male!!
@_@
fine. :)
ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Sei stato ENCICLOPEDICO ed esaustivo, grazie 1000.
Pensavo esistesse qualche programma di programmazione con all'interno degli
script per fare qualcosina di prestabilito.
MultiMedia Builder ti permette di fare alcune cose, ma non certamente un
programma di come stiamo discutendo noi.
Sostanzialmente volevo *pasticciare* con qualche programma per rendermi
conto cosa volesse dire programmare.
Visto le difficoltà che ci sono penso di rinunciare.
Grazie ancora per la tua Super/Iper disponibilità.
Ciao.

 @_@
Cos'hai contro il Dev-C++ ?? O.o
per Eldorado: magari, dicci che cosa vorresti effettivamente fare. In
questo modo possiamo indicarti un linguaggio che vada bene per farlo senza
dover imparare TUTTO e SUBITO. Se vuoi un consiglio vero... devi evitare i
manuali "For Dummies". Si spacciano per essere in grado di spiegare le cose
a un deficiente. Io credo invece che *trattino chi li legge* come se fosse
un deficiente.
In ogni caso, qualsiasi sia il linguaggio che sceglierai, non potrai
prescindere dalle conoscenze *base* (cos'è una variabile, che cos'è un
ciclo, un'istruzione condizionale, una funzione, ecc). Una volta che avrai
quelle, potrai poi imparare *qualsiasi* linguaggio senza problemi. E, in
questo senso, uno vale l'altro.
Pensandoci, pur non apprezzandone particolarmente la sintassi (proprio
graficamente, non mi piace /come/ devo scrivere le cose :P ), potrei
consigliarti di iniziare da Delphi (
www.borland.it
). La versione Personal è
gratuita ad uso personale, mi pare... comunque chiedo conferme/smentite al
gruppo, e soprattutto feedback sull'ultima edizione che non conosco
RAGAAAZZI, ma qui leggo che richiede .NET... ho capito bene??? Allora,
Eldorado, ho cambiato idea, scegline un altro. O almeno la versione
precedente :D (delphi 8)
ciao ciao
-- 
___/\/o\/\/here/\/\an___
"Vagisil migliora 
la tua vita intima"
http://www.vagisil.com/teencenter.shtml

 programma di come stiamo discutendo noi.
Multimedia Builder?? Io ho INIZIATO a capire un'acca di programmazione
ANCHE grazie a MMB (nonostante il linguaggio di scripting, talvolta perfino
astruso :)
Io sono il NoWhereMan che c'è bazzica il forum ;) 
www.mmbforums.com
Se hai già una qualche esperienza con il linguaggio di scripting di MMB c'è
un linguaggino la cui sintassi si avvicina parecchio
O'Basic: 
http://www.obasic.com/
 
Allora, tieni presente che non viene aggiornato dal 99 più o meno (e per
l'informatica, come saprai, 6 anni equivalgono ad ere geologiche :) )
Se ti piace, puoi provare wxbasic 
http://wxbasic.sf.net
 (scarica SEMPRE le
bleeding edge (beta), l'ultima release STABLE era vecchissima, l'ultima
volta che ho controllato).
Oppure wxLua (
http://www.luascript.thersgb.net/
)
Propendo fortemente per le sintassi basic-like. In qualche modo le trovo
gradevoli da vedere (ma mi piacciono anche le c-like, a parte C#) ;)
Infine, se ti piace MMB, prova Multimedia Studio. E' un progetto in alpha
stage che io trovo davvero molto, molto promettente. Il progetto (creato da
terzi, non da Mediachance) prende come base Multimedia Builder, ma mira a
eliminarne i difetti, come il linguaggio di scripting, e la creazione di
applicazioni con controlli win32 standard (MMB in realtà sulle finestre
"disegna" dei controlli che *assomigliano* a controlli standard, ma non lo
sono). 
www.burtonsoft.co.uk
NOTA: E' una versione ALPHA (prima ancora di BETA), quindi non ti aspettare
molto: tante funzioni non sono ancora state implementate, ma credo che
potrebbe diventare un valido sostituto di MMB in futuro, e meriterebbe un
po' più di visibilità (no, non lo sto programmando io, ma sono un
orgoglioso beta tester :D )
NOTA2: Se vuoi avere davvero il "controllo" delle tue applicazioni né MMB
né MMS saranno abbastanza, e, sinceramente, non ne avresti neanche molto
con Visual Basic :D.
Volendo, se vorrai, passare a un controllo "vero", potresti voler
interessarti a C/C++
ciao!!



Grazie anche a te    ___/\/o\/\/here/\/\an___   sei stato disponibile al
massimo.
Siete molto preparati in questo NG, complimenti a tutti.
Io non so più cosa fare.

 Io non so più cosa fare.
In che senso? :D
Ti abbiamo dato un po' di alternative, vedi tu ;)
Facci sapere!
-- 
___/\/o\/\/here/\/\an___


 Io non so più cosa fare.
perché rinunciare? hai detto che l'entusiasmo era alto... magari ti sei
un'attimino confuso in mezzo a tutte le alternative che esistono... come
ti è stato detto, se ci dici cosa vuoi fare ti possiamo indirizzare verso
un linguaggio per cominciare; se invece non vuoi fare nulla di specifico
ma vuoi solo iniziare a capirci un po' di programmazione allora devi dirci
a che livello vuoi arrivare; se vuoi diventare un grande esperto ti
consiglierei di partire subito in grande (C e subito dopo C++ ;))
altrimenti se vuoi andare per gradi, partire da cose magari semplici e poi
casomai accrescere le tue conoscenze, ti consiglierei di partire dal Java
o dal .NET.


 o dal .NET.
no, No, *NO*, NNNNOOOOOOOooouuuuuooooOOOOO!
No, il .NET no, dai... dovrebbero vietarlo per legge, un coso che ti
costringe a installare 20 mega di roba solo per far *girare* i programmi
che scrivi. Io direi nemmeno Java. Più che altro perché la maggior parte
delle persone *non* ha la virtual machine (leggasi: in pratica un runtime)
di sun, ma quella ciofecosa della MS. In pratica, ci si trova nella stessa
situazione di .NET . E non mi dite "compila con il gcj", perché Eldorado
qui vuole *iniziare*, non è il caso impararsi quella sfilza di switch da
linea di comando... per ora ;)
Rimango della mia idea... al limite, sì, il C, con Dev-Cpp o anche
wxDev-Cpp (così può anche provare a creare delle interfacce grafice). MA!
lui vuole presumibilmente creare programmi a finestre (i soliti programmi
windows), ed è normale, chi inizia su win vuole *sempre* vedere la sua
brava finestra :)
Allora, io direi che per ora il C++ non è il caso (troppo "difficile"
creare finestre). Io continuo a votare per (al limite) Delphi. Oppure
wxBasic, che è piccolino da scaricare e ci sono tanti esempi (Eldorado,
però in quest'ultimo caso devi purtroppo - o per fortuna? ;) - dimenticarti
di creare finestre disegnando i bottoni sullo schermo. O, almeno, non così
direttamente). Oppure prova O'Basic, che ha anche la possibilità di
disegnare sulle finestre... insomma PROVA! :)
Guarda che è divertente! Non ti abbattere!
-- 
___/\/o\/\/here/\/\an___



Quello che chiedi non e' ben definito.
Comunque io ti consiglio due linguaggi: C e Python.
Entrambi sono ad alto livello ma sono indirizzati per due tipi di
programmatori.
Il C e' pensato per il computer, Python per il programmatore.
Per Python dai una occhiata a 
http://python.it/doc/newbie.html
per dei tutorial per principianti.
E 
http://python.it/doc/Python-Docs/html/tut/tut.html
 per il tutorial
ufficiale.
Saluti  Manlio Perillo

 ufficiale.
Tra l'altro esiste anche un wxPython... GHI! :D


Tra l'altro esiste anche un wxPython... GHI! :D
Python (o almeno la distribuzione ufficiale CPython) permette molto
facilmente di interfacciarsi a codice scritto in C/C++.
Quindi per qualsiasi libreria in C e' di solito disponibile un
corrispondente per Python.
Comunque per la creazione di interfacce grafiche io consiglio le GTK.
Saluti  Manlio Perillo



Io le sconsiglierei, a meno di non programmare linux. MA il nostro credo
sia un utente win ;) Le gtk obbligherebbero a installare librerie
aggiuntive... e comunque i wxWidgets sono multipiattaforma (e sotto linux
appaiono come le GTK :D )


 Guarda che è divertente! Non ti abbattere!
Hai centrato l'obiettivo. La mia soddisfazione era quella di creare delle
finestre con bottoni ecc.
Una volta ho visto un programmino demenziale al quale bisognava cliccare
sulla finestra SI o NO e per quanto si volesse cliccare sul NO questa
operazione era impossibile effettuarla perchè il cursore del mouse quando si
avvicinava al NO quest'ultimo si allontanava. Praticamente era impossibile
cliccarci sopra.
Rimaneva a disposizione solamente il SI.
Anche per creare queste stupidate serve molto?

appaiono come le GTK :D )
Anche le wxWidgets obbligano ad installarsi una libreria aggiuntiva...
quale e' la differenza?
Non conosco a fondo le wxWidget, ma le GTK (specialmente da Python)
sono davvero facili e flessibili da programmare. A detta di diverse
persone, sono anche progettate meglio (in particolare se si vuole
usare Twisted)
Saluti  Manlio Perillo

 Anche per creare queste stupidate serve molto?
mannňoo, figurati... sapendo come fare, per creare una scemenza simile con
il piů difficile dei linguaggi ci metti a dir tanto un quarto d'ora... :D
ma anzi neanche, ci metti sicuramente di meno (sapendo come fare, cioč
sapendo programmare in quel linguaggio).
io ad es. lo farei in C++ con MFC (Visual C++ 6): basterebbe creare una
applicazione Dialog-based (AppWizard rulez :D) piazzarci sti pulsanti e
gestire WM_MOUSEMOVE nella dialog: complessivamente circa 5 minuti.
altri lo farebbero in Java: sarebbe altrettanto semplice e il risultato
finale mi sa che occuperebbe anche meno spazio, perň io i toolkit grafici
per Java li conosco poco e andrebbe a finire che tra una prova e l'altra
ci metterei una mezz'ora sana se non di piů... :P
PS: una versione del programma che dici tu l'avevo vista anche io tempo fa
in Internet: era un applet Java (per l'appunto) con un bottone che
scappava di qua e di la; se lo cliccavi il sito diceva che avresti visto
Britney Spears nuda (che fantasia...); col mouse non si riusciva a
cliccarlo; alla fine ho fatto in 2 minuti un programma che simulava un
click in quel punto dello schermo e mi č apparsa un'immagine orrenda
gigantesca tratta probabilmente da un film horror... :D
era il primo piano della faccia di una ragazzina mostruosa con un ghigno
orrendo, cicatrici dappertutto, pelle di colore verde, mezza sanguinante,
denti tutti rovinati... :D lol


 Guarda che è divertente! Non ti abbattere!
quoto, e aggiungo che è talmente divertente che spesso ti ritroverai a
dire a te stesso di non dimenticarti della tua vita sociale :D


 La mia domanda (banale) è questa: cosa mi serve per fare ciò che chiedo?
La prima cosa che devi fare è scegliere il linguaggio. Programmare
consiste nel spiegare al computer cosa deve fare, quindi devi saperti
spiegare. I linguaggi a questo servono.
Da quello che capisco non hai basi di informatica per cui quello che ti
serve è un linguaggio ad alto livello che non ti ponga troppi problemi.
Un tempo c'era il basic, ora francamente non so nemmeno che consigliare
per un caso come il tuo.
Forse Python? 
http://wiki.python.org/moin/BeginnersGuide

gestire WM_MOUSEMOVE nella dialog: complessivamente circa 5 minuti.
Per fare proselitismo ecco il codice con Python e GTK :-)
Sono 56 righe, inclusi gli abbondanti commenti.
# codice adattato da uno degli esempi forniti con il tutorial di pyGTK
import gtk
class JokeExample:
    # This callback method moves the button to a new position
    # in the Fixed container.
    def move_button(self, widget, event):
        self.x = (self.x + 30) % 300
        self.y = (self.y + 50) % 300
        self.fixed.move(widget, self.x, self.y) 
    def delete_event(self, widget, event):
        gtk.main_quit()
        return gtk.FALSE
 
    def __init__(self):
        self.x = 50
        self.y = 50
        # Create a new window
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.set_title("Joke")
        # Here we connect the "delete" event to a signal handler 
        window.connect("delete_event", self.delete_event)
 
        # Sets the border width of the window.
        window.set_border_width(0)
        # Create a Fixed Container
        self.fixed = gtk.Fixed()
        window.add(self.fixed)
        self.fixed.show()
 
        # Creates a new button with the label "Press me"
        button = gtk.Button("Press me")
 
        # When the button receives the "enter_notify_event" signal, it
        # will call the method move_button().
        button.connect("enter_notify_event", self.move_button)
 
        # This packs the button into the fixed containers window.
        self.fixed.put(button, 50, 50)
 
        # The final step is to display this newly created widget.
        button.show()
        # Display the window
        window.show()
JokeExample()
# Enter the event loop
gtk.main()
Saluti  Manlio Perillo

 
Anche le wxPython sono semplici e molto flessibili, soprattutto perchè
non c'è il vincolo dei tipi e della staticità del C++..una volta che hai
capito il modello a eventi (peraltro semplicissimo), devi solo avere il
manuale in una finestra fisso e vai di corsa :-)

 quale e' la differenza?
Quello che intendevo con "librerie aggiuntive" è il dover installare per
l'utente finale file ALTRI dal semplice eseguibile e dai file di supporto
creati dal programmatore. Le gtk richiedono di distribuire anche dll
aggiuntive (che io sappia, non so se si possono compilare staticamente),
mentre le wx no.


 dire a te stesso di non dimenticarti della tua vita sociale :D
eheheh, ora quoto io :D
ciao-ciao


 mentre le wx no.
Puoi sempre includerle nell'installer, esattamente come faresti con
wx,invece di distribuirle a parte...nemmeno con wx
puoi compilare staticamente (o meglio, è sconsigliato farlo)

 puoi compilare staticamente (o meglio, è sconsigliato farlo)
Ma le gtk adesso visualizzano proprio i componenti nativi win32 oppure è
ancora una specie di espediente come in java (che visualizza la skin di
sistema ma in realà non usa i componenti nativi)?
Da GIMP che ho installato sembra di sì... boh, non so :)
Comunque, io sono per la compattezza, il più possibile. Nel caso comunque,
può andare benissimo anche GTK... in ogni caso, il nostro è troppo
"giovane" per cimentarsi da zero con una qualsiasi libreria. Dovrebbe
trovare un binding già pronto con un bell'ide magari rad (eldorado,
Integrated development environment con Rapid Application Development: un
ambiente di programmazione, in pratica, come quello del visual basic, o di
MMB, disegni il bottone, doppioclicchi, scrivi il codice :) )


MMB, disegni il bottone, doppioclicchi, scrivi il codice :) )
Per le GTK c'e' Glade e Gazpacho
Saluti  Manlio Perillo

 MinGW;
Perche' non il compilatore della Borland o di Microsoft (che si
possono scaricare liberamente per uso non professionale) e l'IDE
ce l'hanno gia'?


 ce l'hanno gia'?
chi?
se vuole può scaricare quelli, ma il gcc è meglio perché può farci
qualsiasi cosa per qualsiasi scopo... (almeno credo, non me lo sono letto
il papocchio di licenze, politica, legge e tutto quel pappone là mi
interessa poco).



Forse usando puntatori a funzione?
Saluti  Manlio Perillo

 presente sul sistema.
Io eviterei proprio il runtime, se possibile. Anzi... qualcuno mi spiega a
che serve il vcrtXX.dll di Visual C++ ?? Preferisco un esguibile di MinGW
di poco più grosso, purché giri su qualsiasi Win...
E se è con i wxWidgets, gira pure sotto Lin.* (Tiè. :) ). E ha l'aspetto
dei componenti nativi...
*ricompilando, ovviamente ;)


 Forse usando puntatori a funzione?
appunto a mano
a questo punto diventa questione di punti di vista: tu la chiami
programmazione a oggetti, io no; per me quello non č un metodo virtuale, č
la stessa funzione implementata diversamente in piů struct (una che
eredita l'altra) accessibile tramite puntatore.
no, non č un metodo virtuale!!! :)


 interessa poco).
Ottimo!   Dovresti  farlo  se  sei  un  programmatore:  consegnare  un
programma di cui il committente potrebbe essere costretto a rilasciare
i sorgenti puo' non essere una cosa buona se vuoi un'altra commessa.
C:\>iao Angelo
P.S. Per  inciso, con  gcc non  sei costretto a  niente. Il  tuo bravo
sorgente  puo'  tranquillamente  rimanere  chiuso  (questo  e'  valido
sicuramente se il sorgente e' tutto e' tutto tuo, potrebbe non esserlo
se usi altri strumenti rilasciati sotto GPL)... Ma io lo so perche' la
licenza l'ho letta. Io con la programmazione ci campo.


 licenza l'ho letta.
io invece lo so perché uno me l'ha detto; come linea orientativa andrà più
che bene (dopo opportune conferme) almeno per adesso che non lavoro.


 *ricompilando, ovviamente ;)

 Angelo Paolitto ha scritto:
[megacut]
Evviva! Evviva! finalmente un flame!
:D


 Evviva! Evviva! finalmente un flame!
da quanto stavi su Usenet ad aspettarne uno? :D
ogni tanto ti vedo da queste parti :PP


 ogni tanto ti vedo da queste parti :PP
Mica è il primo, figurati...


 a proposito, si dice assembly, non assembler.
La gente fa un sacco di  errori... Pensa che conosco gente che afferma
che il C e' un sottinsieme del C++... ;-)
C:\>iao Angelo


 Evviva! Evviva! finalmente un flame!
Questo un flame??? Ah... anima innocente :-)
C:\>iao Angelo


 Questo un flame??? Ah... anima innocente :-)
Anima innocente, a chi??? STRO**O!
:D lol!


 innocente, a chi??? STRO**O!
ma LLLLLOOOOOOOOOOoooooooo...
mhwuahwuahwuahuwahuwa :DDDD


 mhwuahwuahwuahuwahuwa :DDDD
#in lontananza ... iniziarono a risuonare le note di "Dune Buggy"#
:P


 
Object-Oriented E' un concetto, nessun modo di dire...che poi le maggiori
implementazioni di questo paradigma abbiano le classi ecc, è un altro
paio di maniche...ciò non toglie che l'interfaccia delle GTK è OO, pur
essendo scritte in C..lasciamo perdere che anche a me questo tipo di
approccio non piace per nulla :-)

 che il C e' un sottinsieme del C++... ;-)
se è per questo conosco addirittura dei balordi che programmano in C a
oggetti.
bando alle insinuazioni cretine, se rileggi bene quello che ho scritto
(cit.) nel mio post iniziale, vedrai che io ho detto che il C++ è
*praticamente* un sovrainsieme del C, ed è vero: il sottoinsieme comune è
vastissimo, corrisponde quasi al C ed esclude solo le tue sottigliezze
nelle quali nessuno sano di mente andrà mai a cacciarsi (i miei coetanei
per quanto niubbi e/o stupidi non li ho ancora visti scrivere char sz[5] =
"ciao"; quelli intelligenti nemmeno).





Ottima domanda... si può, vedi per esempio wxBasic 
http://wxbasic.sf.net
Non chiedermi dettagli perché non programmo abitualmente con le wx, ma ho
intenzione di imparare (anzi, attualmente sto lavorando in php, quindi
proprio non c'entra niente. Chi ha detto phpGtk? no, non sto usando quello
:D), usando wxdev-cpp 
http://wxdsgn.sourceforge.net/
 
(compilatore: mingw ;) )
Quello che trovo bello di questo ide è che, oltre ad avere funzionalità
rad, la libreria di componenti wx è scritta in c++ proprio come il codice
che andrai a scrivere. Non è un frankenstein come il c++ builder che si
appoggia su una libreria scritta in pascal. Alla fine il risultato sarà lo
stesso, ma, puramente a livello concettuale, mi piace di più :D
byez


on Tue, 27 Sep 2005 22:39:27 +0200, mrnt wrote:
[megacut]
mrnt, scusa, per curiosità, a che università sei iscritto? Io mi sono
immatricolato da poco a info alla statale di Milano :D
-- 


 (compilatore: mingw ;) )
Sono molto belle, abbastanza semplici  e con mingw mi trovo davvero bene 
.... poi penso che poter sviluppare applicazioni che siano "portabili" 
ma che non passino dal peso di java e delle swing (che detesto) sia un 
grosso plus ... ma è un parere personale. Dev-c++ però lo trovo scomodo 
.... alla fine mi trovo molto meglio con VisualWx e vim per editare il 
codice dove mi serve.


 


 immatricolato da poco a info alla statale di Milano :D
La Sapienza di Roma; tra qualche gg mi iscrivo al 2° anno
primo anno: 8 esami su 10 superati :-|
MHWUAHUWAHUWAHUWAHUWAHUWA
peccato che tutti gli amici che mi ero fatto non li vedrò più se non di
sfuggita :-|


 è realizzato pure male (non ci gira quasi niente di utile); tu non
Wine è un progetto realizzato benissimo, il fatto che non ci gira "quasi
niente di utile" (IE,Office,Autocad non mi sembrano *tanto*inutili,ma è
questione di POV) non significhi che sia scritto male, provaci tu a
replicare le API di un progetto chiuso e farci girare applicazioni
complesse!

 complesse!
be', anche io penso che Office e Autocad siano molto utili, nel dire
quella frase ho esagerato, ma penso comunque che Wine non sia stato
realizzato in maniera proprio eccellente (e i pareri di molti "linuxisti"
su questo punto non mi smentiscono affatto... e io non sono linuxista...);
diciamo che personalmente io l'avrei realizzato più in "basso", più kernel
mode, e magari anche con architettura parzialmente microkernel: non so
come funziona Linux, ma avrei fatto un bel driver, poi un layer interposto
tra i processi Win32 e il driver, e un processo a parte, "di sistema", per
implementare la parte microkernel; il resto (la parte monolitica)
implementato in kernel mode all'interno del driver. ovviamente sono tutte
linee molto generiche... secondo me realizzato in questo modo sarebbe
stato più performante, visto che a quanto ne so Wine è implementato tutto
in user mode ed è semplicemente un layer tra Win32 e chiamate Unix
(smentendo così il significato del suo nome: "Wine Is Not an Emulator"...
a me sembra che lo sia eccome... emula chiamate Unix traducendole dalle
Win32 :| )


 oggetti.
In effetti tutti quelli che hanno  fatto le GTK (per citare un esempio
che ti  hanno gia' fatto  e che tu  non hai capito), tutti  quelli che
hanno fatto Gimp, e (incredibile ma vero) tutti quelli che programmano
direttamente con le Api di Windows.
Gia' perche' quando scrivi
ReleaseDC(hWnd, hDC);
operi   su  oggetti  (che   sarebbero  gli   HANDLE  che   passi  alla
funzione)... Ma tu questo non  lo sapevi... Brutta cosa l'ignoranza (e
soprattutto la protervia).


 soprattutto la protervia).
non darmi dell'ignorante, conosco Win32 come le mie tasche, consulto MSDN
alla voce "Win32 and COM Development" quasi quotidianamente, e so bene che
Win32 ha numerose caratteristiche che ricordano la programmazione a
oggetti; tuttavia a me sembra chiaro che Win32 sia come interfaccia che
come implementazione rimane ben lontano da quella che per me è la
programmazione a oggetti, faccio un esempio pratico: prendiamo un evento e
un mutex, due oggetti del kernel (in questo caso "oggetto" fa parte di una
terminologia specifica, non casuale vista l'analogia concettuale, ne
convengo, ma per me rimane solo un'analogia); entrambi gli oggetti
(rappresentati da quello che suppongo essere un hash definito "handle") si
usano con funzioni come CloseHandle e WaitForSingleObject; tuttavia per
resettarli si usano funzioni diverse: ResetEvent per l'uno e ReleaseMutex
per l'altro. al contraro di ciò che avviene, una tipica implementazione a
oggetti avrebbe provvisto uno stesso metodo virtuale per i due diversi
compiti (vedi CSyncObject::Unlock in MFC).


 (vedi CSyncObject::Unlock in MFC).
mumble O.o
detta na fesseria :D
vabbè, però rendo l'idea, no? :P


 traducendole dalle Win32 :| )
Io sono "linuxista", come dici tu (ovviamente dipende dal senso che dai
alla parola), e non sono per nulla d'accordo: essere riusciti a far girare
un programma come autocad con wine è una specie di miracolo.
L'achitettura che descrivi tu non è praticabile, IMHO, in pratica tu
aggiungeresti a linux (inteso come kernel) un layer di compatibilità con
le API windows...ma l'approccio in kernel mode è ormai sconsigliato in
molte cose, in quanto è difficile da portare su architetture diverse (non
in questo caso, in quanto cmq WINE è solo x86), è difficile da
mantenere, con la velocità di aggiornamento che ha linux, e ovviamente
porta a gravi instabilità nel sistema in caso di bug, e non ha vantaggi
notevoli. WINE è semplicemente una riscrittura delle API di windows, in
ambiente linux. significa prendere ogni singola funzione, capire cosa fa e
replicarne ESATTAMENTE il comportamento, ovviamente il tutto senza avere
il minimo accesso al codice sorgente...il fatto di dire "semplicemente" un
layer mi sembra troppo riduttivo: le basi dell'architettura dei due
sistemi sono profondamente diverse, e riuscire ad adattare le une alle
altre è difficilissimo. Perfino MS trova difficoltà ad implementare un
layer POSIX in windows, pur avendo a disposizione una documentazione nei
minimi particolari (POSIX è standard) e molte implementazioni da cui
prendere perlomeno spunto (linux, *bsd, hurd, mach, anche solaris)...

 resettarli si usano funzioni diverse: ResetEvent per l'uno e ReleaseMutex
Quindi la tua preoccupazione e' che per "eliminare" un HANDLE e'
necessario usare due funzioni diverse... Ma non e' questa la parte
sostanziale della programmazione ad oggetti. La parte sostanziale e'
che ci sono degli "aggeggi" chiamati oggetti e che esistono degli
altri "aggeggi" chiamati metodi o funzioni e che si usano
esclusivamente questi utimi per operare sui primi. Il vantaggio e'
che la modifica di un oggetto non ha impatto (o ha un impatto molto
piu' limitato) sul programma (posto che i metodi vengano modificati
di conseguenza). Se questro a te sembra
"assurdo, oltre che pericoloso, svantaggioso, insensato, ecc."
A me non lo sembra, ed e' la parte che ti ho appena esposta che mi
interessa della programmazione ad oggetti... dell'ereditarieta' dei
metodi e delle funzioni virtuali se ne puo' anche fare a meno.
Sicuramente l'uso dell'OOP in C++ e in un qualsiasi linguaggio in
cui e' il compilatore a forzare certi comportamente e' piu' facile.
Ma basta entrare in un certo ordine di idee e la realizzazione del
codice viene di conseguenza (e questo non e' piu' complicato o
rognoso da mantenere del codice che viene fuori della "programmazione
normale" in C, anzi...).


 normale" in C, anzi...).
se pretendi di implementare una vera e propria "programmazione a oggetti"
in C lo è eccome.


 prendere perlomeno spunto (linux, *bsd, hurd, mach, anche solaris)...
non è che si trovasse in difficoltà, è che non valeva la pena di spendere
più di tanto in quella direzione (infatti poi l'hanno proprio eliminato
quel coso).


 Purtroppo NON saprei nemmeno dove cominciare
VideoBasic, Gruppo Editoriale Jackson. 20 cassette mensili per C64... ;) 
-- 
Luc


Lo stesso motivo che spinge la gente a donare il sangue e a fare
volontariato sociale.
La cosa da chiedersi e', caso mai, come mai lo Stato non dia 'vero'
sostegno a queste iniziative.
Saluti  Manlio Perillo

mrnt wrote:
.... quando sarai dottore e lavorerai ti renderai conto della triste 
realtà del mondo del lavoro !:)

 sostegno a queste iniziative.
sono superflue. visto che ci sono tanto meglio, almeno chi ci sbatte la
testa ha la soddisfazione di vedere che gente come me usa il suo lavoro e
lo apprezza, ma se non ci fossero non morirei.


 realtà del mondo del lavoro !:)
immagino: mi sbatteranno in uno studiolo da 1x1 mq a fare le paginette php
del ca##o con un negro *dietro* che mi frusta e un "aiutante" che non sa
accendere il pc e continua a dire che Linux è meglio. :(((
purtroppo temo di sapere cosa mi aspetta, ma sono curioso di sapere come
mai hai detto questa frase proprio in risposta a quel post: non capisco
che c'entri...


 accendere il pc e continua a dire che Linux è meglio. :(((
Magari l'aiutante è più bravo di te invece ma tu non te ne rendi conto ....


 eliminato quel coso).
Che io sappia, anche il nuovo Vista avrebbe dovuto riproporre quel layer,
e poi è stato cancellato per l'ennesima volta..

 
Se non doni il software, la libertà di espressione in quel senso,
muore...è equivalente, seppur a livelli diversi...pensa se non ci fosse
stato Stallman con GNU e poi Linus con Linux...non credo che potremmo
parlare di libertà e tantomeno di computer senza utilizzare come sinonimo
Microsoft...avere più scelte possibili è sempre un vantaggio!

 
A voler essere proprio precisi, credo che abbia ragione mnrt (ma ritengo 
che sia una discussione sul sesso degli angeli, come si diceva sopra):
Infatti le definizioni più accreditate di OOP, parlano di 3 pilastri: 
encapsulation, inheritance and polymorphism.
Se dovessi assegnare un punteggio al C per i 3 pilastri, direi che 
prenderebbe un voto bassino...
Più appropriatamente le "programmazione ad oggetti in C" che credo 
intenda Angelo, solitamente passa sotto il nome di paradigma ADT 
(Abstract Data Type). E questa concordo che in C sia assolutamente una 
buona pratica.
Tutto IMHO
Ciao
E.G.

On Thu, 29 Sep 2005 17:02:02 -0400, Yes <y3...@SPAMkatamail.com>
wrote:

Vero.
Tra l'altro il capitalismo insegna che le societa' fanno solo il loro
interesse e questo solo in parte coincide con l'interesse del publico.
Sono le societa' a dire cosa serve o meno.
Se non si fosse stato il movimento open source molte cose che oggi
abbiamo non ci sarebbero.
Saluti  Manlio Perillo

 a quel post: non capisco che c'entri...


 e poi è stato cancellato per l'ennesima volta..
beh, non puoi mai sapere come avvengono le decisioni all'interno di
un'azienda così grossa e complessa; inoltre sinceramente dubito che
l'azienda così grossa e complessa di cui sopra non sia in grado di
realizzare qualcosa solo per complessità concettuale...


 realizzare qualcosa solo per complessità concettuale...
L'azienda così grossa e complessa non ha mai innovato, ha sempre
riciclato idee di altri, magari acquistando intere aziende per avere i
prodotti di cui aveva bisogno, questa non è una novità. Microsoft non è
onnipotente, ha troppi fronti aperti, troppi problemi interni ed esterni,
è perfettamente plausibile che abbia dei problemi!

 
Anch'io sono a la sapienza!

 prenderebbe un voto bassino...
Il "C" e' un linguaggio procedurale. Incapsulamento ereditarieta'
e polimorfismo si possono implementare tranquillamente... Non essendoci
il supporto del compilatore sono cose che si devono realizzare a manina.
Per la maggior parte non ne vale la pena e alcune sarebbe veramente
difficile, se non impossibile, implementarle (metodi virtuali).
Si prende il buono della OOp e si tralasciano le menate. Tu una cosa
del genere la chiami programmazione ADT? Amen, altri la chiamano
programmazione OOp, visto che ne e' un suo sottinsieme.
Per onesta' intellettuale, anche Stroustrup pensa che questa non sia
(vera???) programmazione OO... Ma forse lui e' un tantino di parte ;-)


 è perfettamente plausibile che abbia dei problemi!
come fai a conoscerla così bene, ci lavori? quali sarebbero questi
problemi interni? e quelli esterni? di certo non saranno le megamulte che
fanno a Bill Gates a frenare lo sviluppo di software all'interno di
Microsoft: Bill Gates le paga allo stesso modo in cui prende un caffè alla
macchinetta.
