Newsgroup: it.comp.macintosh
Titolo: PROGRAMMAZIONE MAC

Ciao Ragazzi (veterani e non).
Stanotte mentre dormivo ho avuto l'illuminazione e mi è venuta voglia di
imparare a programmare software (esagerato, diciamo programmini) per
mac...
a tal proposito chiedo a voi...
gli strumenti che mi occorrono (software o altro)
i linguaggi di programmazione di mac (da qualche parte ho letto roba
tipo carbon e cocoa, non so se centrano .. ah e le applescript (?!?) o
qualcosa del genere)
e per il linguaggio di programmazione se esiste un sito internet che lo
spieghi (come se ne trovano per html) e/o un buon manuale 
Sperando di riuscire a immergermi (all'inizio del 5° anno scientifico)
anche in questo nuovo mondo, ringrazio e saluto tutti
ciao
Tommy

Tommy wrote:

Se come credo vuoi usare OS X per creare programmi che girano solo sotto OS
X le librerie Carbon non ti servono piu', prendi il DeveloperKit della
Apple e leggiti un po' di tutorial.
Il linguaggio che dovresti usare e' objective-C ma anche java va molto bene
(credo siano 1:1 ), il Developer Kit ti da' comunque anche qualche altra
scelta (credo).
Il tutto forse visto che io non uso un mac :-)

 Il tutto forse visto che io non uso un mac :-)
Linux con window manager KDE - knode ultima release i suppose.
Un estimatore del professor slump a quanto vedo :-)

 qualcosa del genere)
Puoi programmare in qualunque linguaggio scegli.
Alcuni consigli. Non confondere la programmazione con lo scrivere
interfacce grafiche.
Prima impara i fondamenti, la filosofia, il paradigma imperativo
funzionale e/o quello orientato agli oggetti. Scegli quello che ti piace
di piu'.
Poi studiati come funzionano algoritmi e strutture dati, fondamenti
teorici di internet e dei sistemi operativi.
Bene.
Probabilmente per giocare con tutto quello di cui sopra il C o il C++
sono i piu' indicati. Sono anche i piu' duri. 
A quel punto guardati pure le interfacce grafiche.
Consiglio Cocoa + ObjC o Java (teoricamente e' meglio il primo, ma e'
facile che il Java lo abbia gia' imparato nel tuo cammino precedente).
Molti invece consigliano un linguaggio meno severo come il Python o il
Ruby, per poter tralasciare alcuni aspetti per esempio della gestione
della memoria, ed affrontarli in un secondo momento.
Anche questa e' una strada. Ma ricordati che se ti butti a fare
interfaccine grafiche scrivendo due righe di codice in croce per
connettere i pulsanti, avrai problemi quando dovrai affrontare qualcosa
di serio.
Lo so. La via breve e' piu' attraente. Ma non porta per nulla lontano.
Per arrivare in cima, le montagne si scalano, girarci attorno non serve.
Tutto quanto sopra, molto imho.
-- 
(setq RiK0 "Enrico Franchi")
(setq url "
www.anubics.org
")
(setq quote "Se mi prendo sul serio, 
 c'e' da mettersi a ridere." )

 spieghi (come se ne trovano per html) e/o un buon manuale 
Sotto OS X ti bastano i developer tools (gratis, io li ho trovati nei
dischi di sistema ma altrimenti puoi scaricarli direttamente da Apple).
Di base puoi scegliere se programmare in Objective-C, C, C++, Java e
Applescript.
Poi in realta' il web e' pieno di linguaggi che puoi aggiungere.
Ad esempio il fortran, il pascal, il lisp etc...
Io ho aggiunto il fortran (sempre gratis) e i PRCtools (i prc tools
servono per programmare il palmare da Macintosh).
Se vuoi invece programmare in basic ci sono RealBasic e futurebasic (mi
sembra si chiami cosi').
Poi in realta' ci sono innumerevoli versioni del basic ma i due
principali sono questi.
Ammetto di aver trovato non molto entusiasmante la documentazione di
Apple pero' non ho molto tempo per approfondire.
Comunque parti dal sito Apple.
Li ci sono molte informazioni e documentazione (quasi tutto e' in
inglese pero').
-- 
Ciao da Francesco B.

 Linux con window manager KDE - knode ultima release i suppose.
no ho degli header falsi, uso OE

 Per arrivare in cima, le montagne si scalano, girarci attorno non serve.
Un Maramao che ti prenderebbe come suo sherpa. :P
-- 
Essere perdenti è un mestiere duro, ma qualcuno deve pur farlo...

 della memoria, ed affrontarli in un secondo momento.
Ohé, io in Python ci ho scritto un intero aggeggio di services per irc :)
E se poi Mailman ti sembra 'banale'... ;)
-- 
Jollino [it,en,es,ia,eo (fr,pt,ca)]
Per rispondere togli il freno a mano
"Avrei voluto essere un bravo studente, un bravo figlio, un bravo
fidanzato / o almeno uno dei tre"

 servono per programmare il palmare da Macintosh).
Hum, mi dai qualche info precisa sui prctools?


 Hum, mi dai qualche info precisa sui prctools?
Prima il link:
http://www.zenonez.com/prctoolsx/
C'e' un giapponese pazzo che si e' divertito a fare ricompilare i prc
tools per unix e portarli sotto os x.
Sul suo sito ci sono le indicazioni per l'installazione (basta un doppio
click).
Ma la cosa piu' interessante e' che c'e' un piccolo tutorial per
realizzare una piccolissima applicazione per il palm (e' il classico
hello world).
Inoltre viene fatto vedere come utilizzare project tools dei developer
tools di Apple per sviluppare il proprio programma.
Non ho fatto prove piu' approfondite pero' per il momento sono arrivato
a compilare e far funzionare sul palmare il programma di hello.
I linguaggi a disposizione sono il C e il C++.
Prima di proseguire vorrei cercare qualche libro specifico sulla
programmazione dei palm.
P.S.
E' necessario avere installato i developer tools di Apple.


 (credo siano 1:1 )
Uhmmm ho seri dubbi su questo. Objective-C e' qualche miliardo di volte
più veloce, leggero ed efficente di java :-)
Consigliato caldamente :P 
-- 
Daniele a.K.a Malcom
    | mail: 
malco...@nospam.libero.it
    | aim:  malcombsd
    | web:  
www.westcode.vze.com

 perl, tk e c++.
ObjC e' progettato molto meglio e sicuramente e' più chiaro di c++ :-)
Gli altri non li conosco, per cui sto zitto :)))


 Anche questa e' una strada.
Ho iniziato con REALbasic e me ne pento ancora oggi purtroppo....


 principali sono questi.
A meno che tu non voglia davvero buttarti a capofitto sulla
programmazione ti consiglierei proprio realbasic. Certo che se un giorno
dovrai passare a objc ti troverai un pň malaccio.
Tra i due preferisco realbasic, che e' sicuramente piů completo.
Futurebasic e' invece molto piů performante e snello.


 tools per unix e portarli sotto os x.
MERAVIGLIOSO!!!!
:-)
-- 
Josh

 più veloce, leggero ed efficente di java :-)
E ti sbatti qualche miliardo di volte di più per la gestione della 
memoria ;)
PS: ma che cavolo è objective-c++?!


 tools per unix e portarli sotto os x.
FICO :) Grazie!


 PS: ma che cavolo è objective-c++?!
Mai sentito!!


 il lato oscuro della forza ?
ho scritto il post subito dopo avere visto L'impero colpisce ancora.
Pensa che io ho un professore che e' troppo uguale a Yoda *(solo non e'
verde, ma le orecchie sono uguali e la statura pure)*


 E se poi Mailman ti sembra 'banale'... ;)
Mai detto cio'. Non ho nulla contro Python o Perl o quello che vuoi tu
(contro PHP si'!!!).
Pero' e' anche vero che con Python te ne puoi fregare della gestione
della memoria in un primo momento. Questo puo' essere un vantaggio o uno
svantaggio a seconda di come sei tu. Se sei uno che poi se la guardera'
comunque e' un vantaggio, se sei uno che poi non la guardera' mai,
meglio affrontarla subito.
Poi secondo me il C va conosciuto, per esempio in molti testi di
programmazione gli esempi sono in metalinguaggio C like, e adattarli
subito aiuta ecc... Il C sono i fondamenti. Va conosciuto, e poi se mai
non usato.
Inoltre se il ragazzo (ragazzo -- ha quasi la nostra eta' ... ma fa
uguale) poi vuole affrontare la programmazione sotto MacOS, si trovera'
molto facilmente a che fare con ObjC (e quindi sapere i fondamenti di C
aiuta) o in Java (e anche li' guardarsi Java dopo avere studiato il C++
secondo me aiuta a capire vantaggi e svantaggi di entrambi gli approcci.
Il C ci vuole. Certo Python e' affascinante e molto elegante, ma e' una
cosa diversa.


 Ho iniziato con REALbasic e me ne pento ancora oggi purtroppo....
He he... io ho cominciato con il vecchio Quickbasic per Mac....
fortunatamente era gia' strutturato e non aveva RAD per la
programmazione... quindi la programmazione me la sono fatta in modo
pseudo-serio fin dall'inizio... 
e d'altra parte affrontare il C sarebbe stato un problema. Non c'era
compilatore a mia disposizione, nessuno me lo poteva insegnare e
avvevo... 8 o 9 anni....


 avvevo... 8 o 9 anni....
A 8 anni avevo conosciuto il mitico Hypercard! sniff!!!


 servono per programmare il palmare da Macintosh).
Per il fortran hai scaricato i g77 da fink oppure hai trovato qualcosa
che si integra nel project builder?

 Mai sentito!!
Io l'ho letto su ThinkSecret ieri:
"GCC 3.3: As Apple has announced, Panther's Xcode development suite 
includes GCC 3.3 as the default OS X compiler for C, C++, Objective-C, 
and Objective-C++. However, Apple will continue to provide GCC 3.1 and 
2.95 for backward compatibility. Developers will need to recompile C++ 
and Objective-C++ code due to application binary interface changes, but 
not for C or Objective-C code. GCC 3.3 also "greatly" improves code 
optimization, especially for Altivec code. "
http://www.thinksecret.com/news/pantherdeveloper.html


 cosa diversa.
Sono d'accordo. E io preferisco Python per i miei progetti. :) Spero 
solo che prima o poi ci sarà un modo 'decente' per compilarlo e per 
avere interfacce grafiche senza aver bisogno di librerie aggiuntive 
strane...


 profonde... all'inizio mi sono trovato veramente male con objc.
Se fai vedere un pezzo di codice objc a un purista C, ti dice che è 
peggio di Java e C++ messi insieme.
... e solitamente lo intende come un'offesa :)


 Python e` semplicemente obsoleto, sta al Perl come il basic a C o java.
Chiamami obsoleto, sarò il tuo linguaggio di programmazione ;)


 ... e solitamente lo intende come un'offesa :)
Io sono un purista C.
Solo che mi rendo perfettamente conto che il C e' adattissimo per la
programmazione di sistema (dovepiu' che oggetti hai buffer in input e
output, quale che sia il dispositivo o il file o il socket -- a parte
che si gestiscono sempre con le stesse chiamate). Se devi fare un
interfaccia grafica pero' il concetto di oggetto ti viene naturale. Un
bottone e' un oggetto,  che puoi schiacciare ecc...
E infatti anche le gtk che sono scritte in C, simulano un comportamento
orientato agli oggetti, con Macro ecc...
ora a mio avviso piuttosto che simulare gli oggetti in un linguaggio che
e' nato senza, usiamone uno che e' nato con.
:-)


 strane...
Perche' per compilarlo come fai???
Riguardo alle interfacce cosa usi?


 non come il C in cui devi dichiarare e allocare.
Non e' colpa mia se il computer dentro fa cosi'
:-)))


 
http://www.thinksecret.com/news/pantherdeveloper.html
Dovrò indagare! La cosa puzza! Non riesco a capire che senso avrebbe un
objective-c++ visto che objective-c e' molto più orientato agli oggetti
di quanto non lo sia già il c++.


 peggio di Java e C++ messi insieme.
Lo trovo molto più chiaro di c++, e non credo sia una opinione isolata.
C++ e' un C bastardizzato e forzato a diventare object oriented. In
definitiva fa anche un pò schifo :-)
Java, come l'objc e' molto ordinato e con un architettura che surclassa
di molto quella del c++. Ovviamente per la velocità non c'e' paragone,
ma questo esula dal discorso :-)


 ma questo esula dal discorso :-)
Continuo a dire che non c'e' paragone.
Ho visto algoritmi che sparavano un PII a fare compiti piu' veloci di
server multiprocessore (che usavano algoritmi ottimizzati, ma non dalla
manina maniacale del profe)... risultato, se facciamo lo stesso con Java
(invece del PII) e C++ (invece del server), possiamo ottenere cose
simili.
E poi e' meglio un servizio lento in Java che uno che finisce in un
deadlock in C++.
Con questo non voglio difendere troppo Java.. solo che nel 90% dei casi,
le performance non sono cosi' importanti quanto avere la vita
tranquilla...
Detto tutto questo io continuo ad usare il C...
(la coerenza e' un eccezione asincrona)


 un mio sogno :) dove l'hai visto ?
non riesco a capire il motivo d'esistere di questo obj-c++ :)


 non come il C in cui devi dichiarare e allocare.
Ma vuoi mettere di avere tra le mani una "creatura" veloce, che consuma
poca ram e sia efficente? Ho buttato REALbasic perche' nessuna delle tre
voci era soddisfatta :-)


 di quanto non lo sia già il c++.
Per potere infilarci dentro classi scritte in C++... che so io, librerie
matematiche (ok, sono scritte in C o fortran), oppure grafica 3d...
molte cose sono in C++, AFAIK


 (la coerenza e' un eccezione asincrona)
Eheheheh :)


 gira anche su linux e OS X :-)
:-))


 per app server non so davvero che dire...mai entrato in questo campo)
pensa c'e' chi dice che il C e' il peggior linguaggio per quello scopo..
e in effetti ogni volta che mi guardo sendmail mi dico che forse non
hanno tutti i torti...
resta il fatto che e' velocissimo... purtroppo e' un po' prono a bachi,
se il programmatore si distrae...
il problema e' sempre che si rischia l'overflow, a meno di stare
attenti...


 di quanto non lo sia già il c++.
Sarà per complicarlo un po' di più :D


 tranquilla...
Ecco perché io, per quelle poche cose che ho bisogno di scrivermi, 
preferisco farle se possibile in Python.


 affascinante :)
Ah si... un  errore di battitura...
comunque sono convinto anche io che Perl + GTK sia affascinante...
P.s. non dirlo a Jollino, ma hanno fatto i bindings anche in Python
:-)


 PS: ma che cavolo è objective-c++?!
I nuovi Gcc della Mela possono far convivere oggetti C++ e oggetti ObjC
nello stesso codice. Serve per poter usare il codice C++ già esistente,
ovviamente data la natura differente dei 2 linguaggi essi non sono
perfettamente intercambiabili (non posso per es creare un oggetto ObjC
con new) ma da uno posso chiamare i metodi esposti dall'altro.
Cercate sul sito Apple e su Google, ci sono un po' di documenti al
riguardo.
Ciao
Wezzy

 Un Maramao che ti prenderebbe come suo sherpa. :P
Scusate ma gli sherpa non erano quelli che trasportavano i pesi a spalla
?
Ciao
Wezzy

 Applescript bastano ed avanzano, ma non li confronterei con Objective-C.
Il C++ non ha certo bisogno di prove della sua versatilità. 
Ma voglio spezzare una lancia a favore del Python! è un ottimo
linguaggio, molto semplice ed intuitivo, e veramente completo, che non
ha nulla da invidiare al ObjC.
Ciao
Wezzy

 
Cerca Dive into Python, esiste anche in italiano, se no google è pieno
di tutorial per Python.
Ciao
Wezzy

 Ho iniziato con REALbasic e me ne pento ancora oggi purtroppo....
C'è chi sta peggio io con Visual Basic . . .
Ciao
Wezzy

 si chiama OOP
si parla di C quindi l'OOP centra poco, quello a cui si riferiva è il
fatto che si occupa lui di un sacco di cose che al programmatore
interessano relativamente (come per esempio allocare e deallocare a mano
le variabili). E anche per un newbie un programma python è molto chiaro
una volta spiegate 2 o 3 funzioni.
Ciao
Wezzy

 voci era soddisfatta :-)
Ok Python non ha la velocità di un buon compilato C ma a che ti serve
tutto sto sbattimento di alloca e dealloca per un po' di performace
quando la tua app non è un gioco 3d tipo Doom3 e hai un G4 in mano ?
(se mi leggesse Alex mi riderebbe in faccia probabilmente . . .)
Ciao
Wezzy

 
Io ho dato un occhiata ad un libro Oreilly ma presentava l'OS 3 come una
grossa novità . . .
Sul sito Palm per gli sviluppatori so che c'è un po' di roba, tutorial &
co.
Ciao
Wezzy

 preferisco farle se possibile in Python.
Condivido, in poco tempo (->0 se confrontato al C / C++) ho la mia
applicazione e se scopro di aver bisogno di performance, dopo un breve
profiling posso trasformare la mia procedura chiave in un
ottimizzatissimo blocco C e tutti sono contenti :-)
ciao
Wezzy

 Scusate ma gli sherpa non erano quelli che trasportavano i pesi a spalla
si...


 le variabili). 
Veramente da quanto ho capito io 
Jollino: Il Python segue un logica umana, a differenza del C
Marco: Si chiama OOP
Non vedo perche' centra poco...
Detto questo, sul fatto che a un programmatore interessa poco della
memoria avrei qualcosa in proposito da dire.
Per esempio un qualunque ordinamento di array migliora drasticamente in
velocita' se si aumenta lo spazio in memoria a disposizione ... 
Se devi reversare un array con a disposizione una sola cella di memoria
libera, fai con un algoritmo brutale 3n assegnazioni (non sono del tutto
sicuro, ma mi sembra plausibile). Se lo devi reversare con un'altro
array di uguale dimensione, fai n assegnazioni, e se lo devi riportare
in posizione, ne fai 2n. questo sempre con algoritmi brutali.
Ovviamente uno deve vedere se gli serve piu' la velocita' e puo'
spendere memoria oppure no.
Ho fatto l'esempio del reversamento perche' e' molto piu' facile di un
sort o roba del genere.


 tutto sto sbattimento di alloca e dealloca per un po' di performace
Suppongo che dipende da quello che devi fare....
Io personalmente mi diverto ad allocare e deallocare.


 C'è chi sta peggio io con Visual Basic . . .
Beh... fatico a considerare VB un linguaggio di programmazione....


 memoria avrei qualcosa in proposito da dire.
Cardine della questione è cosa dobbiamo fare (o in che fase del progetto
siamo)
so sto costuendo il mio software da 0 e sono alla progettazione, oppure
se il mio software è un programma che non ha alcun bisogno di grandi
potenze di calcolo perchè dovrei buttarmi nelle varie malloc qsort . . .
?? il buon Python è molto efficiente per quanto interpretato e come
diceva qualcuno su it.comp.lang.python non è detto che anche riscrivendo
il mio codice in C io possa guadagnere molto soprattutto per certe
operazioni. Oltre tutto esistono una miriade di Librerie scritte e
ottimizate in C che posso chiamare da Python senza andare troppo per il
sottile e che funzionano alla grande.
Se caso 2 sto scrivendo un kernel, un motore 3d, lo stesso interprete di
python o chissà quale altra cosa che deve essere al max della velocità
allora ok il C non ha eguali, ti da un controllo eccellente sulla
macchina senza rompersi il capo come farei in ASM, anche io amo molto il
C solo che da quando conosco il Python cerco di scomodarlo solo se è
veramente necessario.
Ciao
Wezzy

 Io personalmente mi diverto ad allocare e deallocare.
Sss č un segreto : anche io !!!
perņ se sono al cazzeggio, se scrivo un programma che ho bisogno in
fretta allora Python non ha eguali 
Ciao
Wezzy

 fretta allora Python non ha eguali 
io generalmente cazzeggio sempre ... :-)
di solito non ho tempo per dedicarmi a un progetto complesso....
al momento mi diverto molto a studiare linguaggi su linguaggi, provare
librerie, ecc...
comunque un giorno di questi spremero' a fondo le mie skills e faro'
qualcosa di utile di brutto...


 qualcosa di utile di brutto...
eh eh io il contrario, imparo un linguaggio in modo molto approfondito,
una roba tipo print 'ciao mondo' passati i primi 10 min dico : "bello
potrei farci  . . . un sistema operativo" o qualcosa di egualmente
semplice e mi butto a capo fitto nella cosa, tanto quello che mi servirą
lo imparerņ strada facendo . . . Il problema č che poi mi stufo perchč
passo giorni ad intasare newsgroup e a smazzare documentazione per fare
cose magari banali se avessi un minio di background. conclusione : mi
stufo mollo tutto in una directory e via con il prossimo progetto per
dominare il mondo argh argh argh
ciao
Wezzy

 Beh... fatico a considerare VB un linguaggio di programmazione....
Per carità ti permette di farti una calcolatrice in 6 mosse (neanche
Kasparov ci riescie!) ma ti fa impari più cose strampalate li che
all'oktober fest (ok non si scrive così)
Ciao
Wezzy

 dominare il mondo argh argh argh
quello non e' un problema che mi riguarda.
il mondo e' gia' mio.
:-)


 all'oktober fest (ok non si scrive così)
si ma i conti poi li fa giusti?


 don't expand yourself :)
lol


 quale ? php+gtk esiste...
no no, errore di battitura.
conosco molta gente che e' convintissima che il php esista. ma e' solo
illusorio.
il php non esiste, io l'ho cercato a lungo, ma il php non esiste.
:-))))


 uau, mi stanno pagando per scrivere con qualcosa che non esiste :)
accidenti, deve esserci un errore sperimentale...
oh oh...
:-))


 pensa se si potesse scrivere un'applicazione cocoa con c++
beh forse perche' ci sono un sacco di codici già pronti in c++.
Altrimenti objc e' molto più semplice di c++... :-/
IMHO
-- 
Daniele a.K.a Malcom
    | mail: 
malco...@nospam.libero.it
    | aim:  malcombsd
    | web:  
www.westcode.vze.com

 che si integra nel project builder?
Ho scaricato direttamente il compilatore g77 da qui:
http://gravity.psu.edu/~khanna/hpc.html
Fink e' bello ma io non mi ci trovo. Mi e' piaciuto di piu' il sito che
ti ho indicato.
Lavoro direttamente da terminale come facevo una volta con il dos.
Onestamente non ho provato a usare il project builder.
-- 
Ciao da Francesco B.

 uau, che bello ! alla fine mi vivisezionano ?
no.. al piu' vivisezionano il php..
ma e' vivo?


 ha nulla da invidiare al ObjC.
Forse la velocità :P


 wrote:
 > si parla di C quindi l'OOP centra poco, quello a cui si riferiva è il
 > fatto che si occupa lui di un sacco di cose che al programmatore
 > interessano relativamente (come per esempio allocare e deallocare a
mano
 > le variabili). 
Ho i miei grandi dubbi. Dipende che tipo di programmatore vuoi essere.
Se ti piace dare in pasto agli utenti applicazioni pesanti (in REALbasic
una app con solo finestra arriva a 1.5mb di peso...questo per tutte le
librerie inutili che ci copia dentro), lente (pensa di creare l'indice
di tutti i post di macsoup con uno di questi linguaggi...prendo sempre
realbasic... per farlo e visualizzarmi la lista ci mette un 5/8 sec
buoni...con objc/c e compagnia bella arrivo a 0,5.... dimmi quale delle
due app vorresti... forse la velocità conta più di quanto tu non creda
:-), e che consumano un botto di ram....(ecco a che serve
allocare/deallocare...sempre che uno lo sappia fare bene, altrimenti
ecco i crash :).


 ecco i crash :).
straquoto.


 spendere memoria oppure no.
Oggettivamente uno che scrive in Python non ha necessità di ottimizzare 
al nanosecondo... in compenso si semplifica la vita :)
-- 
Jollino [it,en,es,ia,eo (fr,pt,ca)]
Per rispondere togli il freno a mano
"Avrei voluto essere un bravo studente, un bravo figlio, un bravo
fidanzato / o almeno uno dei tre"

 > tutto sto sbattimento di alloca e dealloca per un po' di performace
Perché non vedo i post di Wezzy a cui risponde RiK0?
E no, non ho filtri attivi...


 P.s. non dirlo a Jollino, ma hanno fatto i bindings anche in Python
Python si attacca a Tk, a Wx (?!), a Gtk, a un sacco di roba...


 (se mi leggesse Alex mi riderebbe in faccia probabilmente . . .)
Sei pronto per andare a lavorare alla Microsoft...

 lista.reverse()
Ma si... ci sono gia' fatti anche in C++, e si trovano anche in C... il
discorso non e' quello.
Il punto e' che sort del python o del c++ adotteranno una strategia.
non in tutti i casi va bene.
se sto scrivendo un programmino per il mio pb con 640 di RAM, me ne
frego, uso l'algoritmo piu' veloce, anche se prende piu' RAM.
Se pero' sto scrivendo un pezzo di un databasee, che opera con file di
qualche terabyte, su una macchina che ha 8 GB di memoria, allora puo'
essere non pensabile allocare spazio per un altro array di qualche
milione di elementi. Devo sapere quello che sto facendo, e scegliere
consapevolmente.
Quello e' il discorso.
Ovvero
array   sparecell 
[abcd]  [ ]
[abcd]  [a]
[dbcd]  [a]
[dbca]  [a]
[dbca]  [b]
[dcca]  [b]
[dcba]  [b]
finito.
array   array libero
[abcd]  [    ]
[abcd]  [d   ]
[abcd]  [dc  ]
[abcd]  [dcb ]
[abcd]  [dcba]
in c per esempio restirtuisco il puntatore al secondo array.
se non posso lavorare con i puntatori, o faccio un qualche ammennicolo
che dipende dai linguaggi e che mi fa restituire il secondo array,
oppure faccio una copia....
con il problema non trascurabile in questo caso che faccio 2n
assegnazioni... piu' lento ancora che a farne 3/2n
(peraltro facendo bene i conti ho visto che con questo si fanno 3/2 n
assegnazioni e non 3n come avevo detto... avevo toppatus)


 Python si attacca a Tk, a Wx (?!), a Gtk, a un sacco di roba...
lo so...
anche Perl.
:-))


 Sei pronto per andare a lavorare alla Microsoft...
dai... python in fondo e' un buon linguaggio...
per quanto mi hanno detto... 
bisogna sapere quando e' il caso...
:-)


Non intendevo per il Python, ma per il fatto che non gliene frega niente
delle performance "tanto ha un G4"...
un po' come la microsoft che continua a fare versioni sempre piu'
pesanti dei suoi programmi (inutilmente perche' non cambia quasi niente
da una versione con l'altra), che se vanno troppo lente sui computer non
proprio nuovissimi chissenefrega, sta all'utente comprarsi un pc
nuovo...
...ahhh il buon vecchio Word 5.1, quello si che era un programma...

 ...ahhh il buon vecchio Word 5.1, quello si che era un programma...
quoto!!!
e anche meglio era il 4!!!


>> len(re.findall("a|e|i|o|u", s))
5


 Forse la velocità :P
Neanche tanto, dicevo nel senso che come linguaggio Python non ha lacune
che non gli consentono di essere usato in qualche campo. O quantomeno in
tutti quelli in cui si usa ObjC. E per la velocità neanche ObjC mi
sembra questo gioiello di efficienza. Il suo sistema di runtime e il suo
dinamismo offre comodi vantaggi allo sviluppatore ma rosica un po di
efficienza. E' comunque più veloce di Python ma non cos' tanto. Per
nulla se in python uso librerie ottimizzate.
Ciao
Wezzy

 fa sentire il padrone del mondo, altro che python :P
si ma ti fa perdere mesi di coding. . .
ciao
Wezzy

 ecco i crash :).
Mettiamo in chiaro una cosa : anche io amo allocare e deallocare, sono
un aspirante ing informatico godo nell'avere il controllo della
macchina, ma questo se devo fare qualcosa di grande non va sempre bene.
In primis perchè mi fa perdere tempo. Mentre progetto un sw o mentre
testo un algoritmo contro un altro non posso perdere anche tempo a
giocare con il C. Scrivo tutto in Python e via (dico Python perchè è
quello che conosco, ma ne esisteranno altri che sono simili, come il
Ruby). Poi una volta finito se le velocità di Python non sono
sufficienti (e non accade tanto spesso, non solo a me ma anche ai
professionisti) scrivo le parti cruciali in C senza dover cambiare una
virgola del mio neonato sw in Python e ho le prestazioni che volevo.
Molti software sono scritti in Python, prenderte per es. Zope, è un
application server totalmente in Python, esistono Db e molte altre cose
che di calcoli ne devono macinare e sono fatti in python. Per es so che
il sw che gestisce tutte le prenotazioni dei warner village è fatto in
python . . .
Poi ObjC non mi sembra questo fulmine. Come ho già detto la sua
dinamicità ne penalizza un po le performance. E anche Cocoa è stato
pensato soprattutto per venire in contro ai programmatori, non agli
utenti. E' ottimizzato certo ma ha comunque un overhead non
trascurabile.Se volessi la velocità mi butterei di più in C++ e carbon.
Infine non è sempre vero che riscrivendo il codice da Python a C si
possa guadagnare velocità. L'interprete e le librerie vengono
ottimizzate ogni volta, la recente versione 2.3 è molto più veloce delle
precedenti. Leggevo che per es i dizzionari python sono molto
ottimizzati e che sarebbe molto difficile ottenere qualcosa di più
performante in C. Certo ho l'overhead dell'interprete ma non vorrei che
vi confondeste con Java! quello si che è lento! ma Java ha un altro
scopo, garantire sempre e comunque la portabilità, per fare questo ha
dovuto accettare un po di compromessi come la macchina virtuale che
interpreta il bytecode e che gli costruisce un vero e proprio ambiente
di esecuzione intorno. Questo in termini di performace è mortale ma
garantisce portabilità assoluta. Il Python invece per quanto sia
portabile non è stato così incentrato sulla portabilità. E' compito di
colui che fa il porting dell'interprete garantire che abbia un
comportamento uguale a quello che ha su unix / win. L'interprete parte,
legge le istruzioni e chiama blocchi ottimizzatissimi di codice C
compilato che le eseguono. Totale l'unico vero OH è la fase di leggo
istruzione e chiamo funzione. Non mi sembra così letale. Certo non ho lo
stesso controllo della memoria e potrei trovarmi con zone di memoria
allocate che magari in C avrei l' accortezza di liberare ma non è così
grave.
Ciao
un Wezzy prolisso

 consapevolmente.
vero ma a seconda dei casi:
- se sto scrivendo il programma che ordina le mail della fidanzata me ne
frego e chiamo lista.sort(). 
- Se sto maneggiando un DB da 8Tb non sarò così fesso da metterlo dentro
una lista Python! con il mio magico programma Python chiamerò uno dei
bridge verso il databese in cui ho i miei dati e farò fare a lui
l'ordinamento, e ho i miei dubbi che anche mettendo mano al C sia in
grado di fare meglio dei ragazzi di Oracle, mysql ...
- Se devo ordinare una via di mezzo e magari i dati sono omogenei
importo la Libreria NumPy costruisco un efficientissimo array e lo
ordino con uno dei metodi esposti.
- Se il sorting dei miei dati è una cosa così particolare allora scrivo
tutto il mio programma in Python e poi la procedura di sort la scrivo in
C ottimizzandola per i miei dati e senza problemi la chiamerò
all'interno del mio codice Python
Ciao
Wezzy

 :-)
Argh la concorrenza !!!
:-)
Ciao
Wezzy

 si ma i conti poi li fa giusti?
Ehi io le scrivo mica le uso le mie calcolatrici, le buone sharp texas e
casio mi danno più sicruezza delle mie :-)
Ciao
Wezzy

 sempre troppo, rispetto al Perl.
Adesso mi butterò in google e cercherò dei bench di velocità C / Python
/ Perl !
Ciao
Wezzy

 Se volessi la velocità mi butterei di più in C++ e carbon.
Bum...
carbon proprio no!!!


 si ma ti fa perdere mesi di coding. . .
dipende da quanto sei bravo.
:-)


 giocare con il C. 
Beh... a parte il fatto che per testare un algoritmo non pui chiamare
alcuna funzione di libreria, poiche' in questo caso all'algoritmo in se
aggiungi queste componenti.
O meglio, puoi farlo benissimo, ma devi tenerne conto, e magari
conoscere l'algoritmo delle suddette funzioni.


 all'interno del mio codice Python
Mah... io preferisco sempre il C.
Se poi sono disperato uso il C++.


 carbon proprio no!!!
non l'ho mai usato ma da quel che ho letto pensavo fosse più performante
Ciao
Wezzy

 conoscere l'algoritmo delle suddette funzioni.
Sono d'accordo ma questo vale sia per il Python che per il C
Ciao
Wezzy

 richiede solo il tepo di lettura e scrittura del file su disco).
Non conosco il Perl quindi non saprei dirti se è più o meno veloce (sia
nel Coding che nell'esecuzione)
Ciao
Wezzy

 richiede solo il tepo di lettura e scrittura del file su disco).
Ad ogni modo anche leggendo un po' in rete pare che (come in effetti era
prevedibile) non ci sia un vero vincitore e tutte le volte che č stato
iniziato il dibattito č finito in un flame. Tutto quello che volevo dire
č di non relegare Python ad un linguaggio per semplici scriptini, ma di
considerarlo per un completo linguaggio di programmazione. Se poi sia
meglio o peggio del Perl ai posteri l'ardua sentenza.
Ciao
Wezzy

 Sono d'accordo ma questo vale sia per il Python che per il C
si si... indubbio...
beh, in C le funzioni di libreria sono usate meno di frequente che in
C++ e in Phyton, anche perche' gli array sono semplicemente puntatori, e
non struttutr dati complesse


 nulla se in python uso librerie ottimizzate.
Prova a calcolare il fattoriale o prova a implementare un quicksort, un
bubble sort o qualunque altro algoritmo di ordinamento. Scegli un
dataset di dimensioni ragguardevoli per evidenziare maggiormente le
differenze e poi giudica. Il tutto lasciando il compito al garbage
collector (semiautomatico) del runtime di ObjC di liberare spazio
all'occorrenza.
Marco

 grave.
A no?
Marco
P.S. Scusa se ti sembro un po' scorbutico o sarcastico. E' l'ora tarda
ma quel che ho scritto non è a fine di derisione. Questo deve essere
chiaro!

 raffinatissima) di SmallTalk ed Eiffel.
quoto
:-)


 -- 
Vedo che posti via infoviottolo..sono i loro server che fanno acqua e 
stanno facendo rimpiangere amaramente, almeno a me, l'acquisizione da 
parte di wind..
In questo momento il messaggio più nuovo che vedo scaricando icm è di 
ben *16* ore e passa fa...
Non mi sorprenderei se si perdessero messaggi come se piovesse. Quasi 
tutti i thread mi iniziano con un Re:

 Java e ObjC... 
[CUT]
Non posso che quotare tutto il post.
Complimenti per la chiarezza :-)
-- 
Daniele a.K.a Malcom
    | mail: 
malco...@nospam.libero.it
    | aim:  malcombsd
    | web:  
www.westcode.vze.com

 perdere mesi di coding ? :P
Infatti mai pensato di fare un os in Python o in qualunque linguaggio
interpretato anche se ... :-)
-- 
Ciao
Wezzy

 chiaro!
Eh eh tranquillo nelle guerre di religione & fede ci sono sempre aspri
scontri :-)
-- 
Ciao
Wezzy

 controllo che ho in C della memoria, ma è + che sufficiente
Se e' come Java, in pratica _non_ hai controllo della memoria,
semplicemente se ne incarica lui.
-- 
(setq RiK0 "Enrico Franchi")
(setq url "
www.anubics.org
")
(setq quote "Se mi prendo sul serio, 
 c'e' da mettersi a ridere." )

 semplicemente se ne incarica lui.
e infatti è così
-- 
Ciao
Wezzy

 Complimenti per la chiarezza :-)
Mi associo.
-- 
Jollino [it,en,es,ia,eo (fr,pt,ca)]
Per rispondere togli il freno a mano
"Avrei voluto essere un bravo studente, un bravo figlio, un bravo
fidanzato / o almeno uno dei tre"

 risorse che decidi di impiegare.
Perché, semplicemente, non mi interessa. Posso anche farmi una funzione 
che va a ordinare o rovesciare 'come dico io', ma siccome non mi 
interessa perdere un'ora per guadagnare due millisecondi a ogni 
esecuzione... :)


 frigorifero. Prima devi togliere l'elefante.
Sappi che non verrò MAI a cena a casa tua.


>> ^D
[innocence:~] jollino%
...e lo so che tu con le regexp *ci lavori* :)
Io ne faccio un uso moooooooooolto modesto, quindi sto bene col python. 
Ok? :)


 fuori).
Ah... infatti dicevo...
prima il Maramao, mo anche il Jollino, che c'e' un serial killer che 
cerca le sue vittime su icm???
:-)))))
-- 
(let ( (R1K0 "Enrico Franchi")
       (url "
www.anubics.org
")
       (quote "Se mi prendo sul serio, c'e' da mettersi a ridere") ) )