Newsgroup: it.comp.programmare
Titolo: Ex Z80 assembler .. ora quale linguaggio ?

è un po' di tempo che non programmo +, diciamo che sono 10 anni, so usare
molto bene il turbo pascal e ancora meglio l'assembler z80.
Volendo fare un passo avanti vorrei sapere da voi qual'è il linguaggio che
posso iniziare a studiare che
a) che il passo non sia troppo lungo, che possa imparare da solo
b) che sia non orientato agli oggetti
c) ha ancora senso usare programmi non orientati agli oggetti ?
grazie

 c) ha ancora senso usare programmi non orientati agli oggetti ?
dipende dall'utilizzo che devi farne.In generale per progetti grossi non ha
piů senso usare linguaggi non OO (hai scritto programmi ma penso che ti
riferissi ai linguaggi). Semplicemente perchč senza OOP ti ritrovi ogni
volta a doverti costruire la macchina prima di poterla usare (e prima di
poterla usare devi imparare ad usarla), con la OOP la macchina la erediti da
qualcuno e devi solo imparare ad usarla.
Saluti
Kronomor

 c) ha ancora senso usare programmi non orientati agli oggetti ?
Usare o creare?
-- 
Luc

 c) ha ancora senso usare programmi non orientati agli oggetti ?
I "programmi" non sono orientati agli oggetti (o meglio, potrebbero
esserlo a meno di definire che cosa si intenda).  Piů che chiedersi se
ha senso usare *linguaggi* non orientati agli oggetti, ha senso
chiedersi se non si possano fare le stesse cose in modo piů semplice
con un linguaggio OO e la risposta č quasi sempre sě.  Ovviamente,
molti linguaggi OO consentono di lavorare con il vecchio paradigma
procedurale (vedi Python o C++).

 Perché ??
Ma dagli quello che vuole e basta... Che due OO. (e non intendo Object 
Oriented). :-/
-- 
Luc

>Ma dagli quello che vuole e basta...
Shhh... silenzio.

 medio 2 mesi, tempo medio per impararlo ottimamente direi sui 4
mesi.
Il C, oltre ad essere un linguaggio fin troppo vetusto, non è il
linguaggio adatto per chi vuole imparare a programmare.  Oltretutto
oggigiorno non ha senso non approcciare un linguaggio OO.  Il C++ è
troppo complesso.
Python, Java e C# possono essere una buona alternativa.

 Shhh... silenzio.
Perchè? 
-- 
Luc

 ha scritto::

beh, ma lui sa già il pascal e un po' di asm, imo il C è un buon modo
per andare avanti.
Java e C# non sono , sempre secondo me, un buon metodo per iniziare a
programmare.
Iniziare con
public static void main 
Fa sorgere domande del tipo 'perchè public? perchè static ? perchè sto
scrivendo una classe?' che saranno risolte solo andando parecchio più
avanti con l'apprendimento.
python è  accettabile, (*forse* anche ruby, che è a oggetti si, ma non
in modo irritante come java) 

 Fa sorgere domande del tipo 'perchè public? perchè static ?
Ma per favore !...

Ma per favore !...
Beh per me è importante iniziare con un concetto alla volta. un hello
world come questo:
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!"); 
    }
}
mette troppa carne al fuoco contemporaneamente.
 Alla mia università insegnano java come primo linguaggio, e certe
domande la gente se le fa, insieme a 'perchè non compila?' (nomefile
!= nomeclasse).
 Quando cominciai io, col pascal, non accadeva. Si può imparare a
programmare ad oggetti sin dall'inizio, ma non ho ancora visto farlo
per bene con java (forse BlueJ). E sia chiaro che io non odio java :)

 per bene con java (forse BlueJ).
Ancor prima che a programmare, si impara a "pensare ad oggetti" e
questo prescinde dall'uso di un linguaggio specifico.
Chiudo qui la discussione.

 Chiudo qui la discussione.
Come sempre gentile... 
-- 
Luc

 tra l'altro, adoperato da molti autori di testi sui linguaggi.
presumendo - e sbagliando - che gli studenti siano mentalmente chiusi e 
non vadano subito a chiedersi il perche' di tutte quelle formichine sul 
foglio.
a quel punto sono costretto a consigliare Pascal (che certo non amo), 
Basic o addirittura LOGO (con il quale ho appreso i rudimenti della dura 
arte della programmazione alla tenera età di sei anni).
-- 
Morpheu5

 foglio.
Eh ?!

 Il C non è un modo per andare avanti, ma un modo per restare indietro.
Halo la domanda su quale linguaggio imparare l'avresti dovuta fare su un
altro forum che qui ciascuno vuole farti imparare il SUO linguaggio.
E non ascoltare neanche tutte le cose che ti dicono gli altri. Non ti serve
la OOP? Manda a cagare il c++, java, visual basic e tutti gli altri
linguaggi che ne fanno uso.
Studiati il C, l'ho imparato da 0 all'università senza fatica in 2 mesi (in
4 contando strutture dati). Non avevo mai programmato prima in vita mia e
non ho trovato nessuna difficoltà.
Tu poi vieni da pascal (o basic non mi ricordo) e da assembler, quindi avrai
ancora meno problemi. Chi dice che il C è difficile da imparare ha il
prosciutto sugli occhi oppure quando l'ha studiato non ha mai avuto voglia
di applicarsi, o ha avuto un pessimo insegnante. Tra l'altro è molto più
facile impararlo da solo che insegnato da qualcuno che ti mostra il suo
codice schifosissimo con complessità ennesima giustificando il tutto con :
e' codice facilmente leggibile adatto per principianti!
Dimenticati il java per i motivi che ti ho detto prima: è OOP ( e a te non
serve) e poi è interpretato e quindi lento come una mignotta quando ti deve
far godere (impiega più tempo per spillarti più soldi :D) Se un giorno
deciderai d'imparare la OOP, è molto più semplice passare dal c al c++ che
dal c al java.
Inoltre conta che imparando il C poi ti puoi gettare benissimo sulle API di
windows per la multimedialità (e le directx, opengl). Scordati di fare una
cosa del genere con java.
Tutto questo te lo dice uno che conosce c, c++, java e visual basic

puoi gettare benissimo sulle API di windows
Mi fai ridere. Questo si può fare in qualsiasi ambiente di
programmazione supporti gli SDK Microsoft.  Non è una questione legata
al linguaggio.

 al linguaggio.
E' vero forse qui sono ignorante. Quali sono allora i linguaggi non oo che
supportano
gli SDK Microsoft?
In ogni caso non sto facendo una critica ai linguaggi che hai proposto tu,
perchè in un'altra occasione
gli avrei consigliato esattamente gli stessi linguaggi, SE avesse chiesto
d'imparare linguaggi OO, o anche se non
avesse chiesto niente, ma non consiglierei mai linguaggi OO ad una persona
che mi chiede espressamente di consigliargli
linguaggi non OO. Tutto lì. La sua scelta (per me sbagliata come per tutti
penso) non è in discussione perchè l'ha già fatta.
Saluti
Kronomor

 sia "suo" o meno.
Lascia perdere il laforgia, non ci arriva spesso... 
-- 
Luc

 supportano gli SDK Microsoft?
Aridalle. Non è una questione dipendente dal linguaggio, ma
dall'ambiente di sviluppo.

Andrea Laforgia ha scritto:

io, studente, che vedo formichine dalla forma di public, class, void, 
String[] e robaccia simile, me lo chiedo un pochino che ca**o 
significhino. Un prof che pretende di insegnarmi a programmare (dico, 
insegnarmi le strutture base della programmazione, le fondamenta, quelle 
sulle quali e' poi possibile imparare qualunque altro linguaggio, asm o 
Do diesis) con un linguaggio pieno di cose fuorvianti e non inerenti 
alla mera istruzione da eseguire per completare un algoritmo... beh, mi 
prende per stupido e mentalmente limitato.
-- 
Morpheu5


Dico la mia anche io.
Visto che conosci bene il Pascal puoi imparare a usare
Delphi con facilità e rapidamente. Delphi 8 poi ha anche
il supporto per .NET (tanto per agganciarsi a un altro
argomento di moda) quindi non devi temere di legarti a
un altro linguaggio morto o troppo vecchio.
L'orientamento agli oggetti è una cosa che uno può usare
o meno, non è obbligatoria (a parte in Smalltalk) quindi
io direi di non preoccupartene troppo inizialmente, se
questo ti crea problemi (ma perchè, ti creano problemi
gli oggetti?)
Oddio se un programma è fatto a oggetti o no, tu che lo
usi non te ne accorgi nemmeno. Il fatto degli oggetti è
utile a chi i programmi li fa, perchè organizzare il
proprio codice in base a oggetti software aiuta a tenerlo
pulito e ordinato. Che poi lo renda anche riutilizzabile,
in linea di principio NON è vero ma dipende, come al solito,
dal modo in cui uno scrive il codice.
E' vero che volendo scrivere codice riutilizzabile, la
struttura a oggetti aiuta non poco. Ma, IMHO, non è un
effetto del linguaggio ma del maggiore lavoro di analisi
fatto "a monte" per identificare e creare gli oggetti
e le loro interfacce.
E poi, visto che conosci bene l'assembler Z80...
perchè non fare un pensierino pure all'assembler X86? :-)

A parte che ti arroghi il diritto di sapere che cosa serva realmente
per insegnarti a programmare (tu non lo sai, quindi non esprimere
giudizi), le "formichine" di cui parli sono le basi per la moderna
programmazione e sono assimilabili col tempo.  Quando si studia, si
segue un percorso: non hai bisogno di sapere, da subito, a cosa serva
una keyword "public" e non è affatto fuorviante la sua presenza, è
solo necessaria.  Poi, non si parla di un contesto preciso come lo
studio di un algoritmo (cioè un'esigenza scolastica precisa che puoi
avere tu e qualcun altro), ma dell'adozione, in generale, di un
linguaggio di programazione.

 in linea di principio NON è vero
Ma che stai dicendo ? uno degli scopi principali della programmazione
OO è quello di rendere il codice riutilizzabile, è una conseguenza
diretta della utilizzazione di oggetti come box "chiuse".  Effetto
evidente è la "componentizzazione".  La programmazione orientata agli
oggetti ha fatto sì che si sviluppasse un parco enorme di componenti
riutilizzabili.  Inoltre, adottare la OOP nei propri progetti consente
di isolare dei comportamenti specifici in un punto solo e
riutilizzarlo molte volte (un esempio è l'uso dei Business Objects).

 dall'ambiente di sviluppo.
Ci sarà un motivo se tra i linguaggi non OO, windows è stato scritto in c e
non in assembler (o qualche altro linguaggio non OO) e quando si programma
in windows, il 90% dei programmi (non OO)  si fanno in C . Semplicemente è
il più semplice e il più adatto per farlo, indipendentemente dall'ambiente
di sviluppo.

 di sviluppo.
Questa è un'enorme fesseria che non mi fermo neanche a commentare.

 tra l'altro, adoperato da molti autori di testi sui linguaggi.
in parte hai ragione: di sicuro tutti i linguaggi si imparano "gradualmente"
(mi risulta difficile pensare come sarebbe possibile imparare un linguaggio
in un sol colpo, senza neppure un minimo di gradualita`... ;-).
Altrettanto sicuramente e` possibile imparare i linguaggi dando per scontato
che certe cose esistono per poi studiarle in seguito: penso che la maggior
parte di noi tutti abbia proprio iniziato in questo modo.
Quel che bisogna stabilire e` se tale metodo di insegnare e` realmente il
migliore possible: io ho visto "in presa diretta" i miei compagni di
universita` imparare java, e ho notato che molti dei loro dubbi e
difficolta` erano proprio dovuti al linguaggio IMHO non adatto per uso
didattico. In questo senso un linguaggio come Python consente un
apprendimento, per l'appunto, molto piu` graduale. Direi che e` difficile
trovare un linguagio il cui "hello world" sia piu` semplice di quello di
python:
print 'Hello world!'
Al massimo ne possiamo trovare qualcuno altrettanto semplice, ma piu`
semplice IMHO e` molto difficile :-)
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

 migliore possible
Sinceramente, non mi interessa stabilirlo.  Altrettanto sinceramente
non riesco proprio a capire che cosa ci sia di tanto difficile in un
linguaggio come Java, per una persona che lo sta imparando, se non
cercare l'impegno necessario.  Non parlo poi delle esperienze
scolastiche, perché vengono vissute per lo più come obblighi.
Ovviamente esistono linguaggi in cui "Hello World" è più semplice che
in altri, ma non valuterei la bontà di un linguaggio o dell'altro
sulla base di queste banalità.  Imparare a programmare significa
abbracciare tutto un ordine di idee, il linguaggio, alla fine è
relativo.  Importante è non seguire la via sbagliata, tagliarsi le
gambe con un linguaggio non object oriented è, secondo me, sbagliato.

 solo necessaria.
mi sono rotto i coglioni di gente che, a fondamenti di informatica 1, 
veniva a chiedermi perche' public, perche' class, perche' se scriveva 
String invece di String[] non funzionava come si aspettavano e perche' 
bisognasse infilare classi su classi quando invece, per studiare un 
algoritmo di ordinamento, novantanove volte su cento e' sufficiente un 
array che e' presente in C, in Pascal e perfino in Basic. e questa era 
gente che in vita sua non aveva mai sentito parlare di programmazione. mai.
tutt'ora quelle stesse persone sono spaesate di fronte alla 
programmazione e sono ancora perplesse dal fatto di dover scrivere una 
classe invece di un programma (non e' chiara la differenza, 
evidentemente) e sono li' che la fonte maggiore di errore nei loro 
listati risiede in uno static di meno, in un private invece di un public 
o un public mancante o una parentesi graffa non chiusa o un punto e 
virgola che non si sa dove mettere.
E poi come glielo spieghi che il nome del file dev'essere uguale al nome 
della classe?
se devi spiegare ad uno cos'e' un ciclo for come glielo spieghi?
for i = 0 to 100 step 1
print "Ciao"
next i
o
/** SpiegazioneDelCicloFor.java
  * Classe che implementa un ciclo che stampa 100 volte la parola Ciao
  **/
public class SpiegazioneDelCicloFor() {
	public static void main(String[] args) [
		int i;
		for(i = 0; i < 101; i++) {
			System.out.println("Ciao");
		}
	}
}
Io ritengo piu' espressivo e comprensibile il primo esempio (che e' in 
Basic). E' evidente che tu non hai esperienza di dieci persone che ti 
vengono tutte a chiedere a che cazzo serve "public" e che cazzo sia una 
keyword. per tutto questo e altro ancora non ritengo Java (e tutti i 
suoi parenti sintattici) all'altezza di insegnare la programmazione.
-- 
Morpheu5

 altro passettino: io so programmare.
Altra frase "grossa".
<snip su tutto il polpettone finale>

 Altra frase "grossa".
ti invito a dimostrare il contrario, su.
-- 
Morpheu5

 programmazione.
Semplicemente: io dico che non è vero.  Possiamo stare qui a ribattere
mille e più volte sullo stesso argomento, ragion per cui chiudo qui i
miei interventi.

 miei interventi.
non sono uno che alimenta i flame oltre il necessario e quindi chiudo 
anch'io.
-- 
Mp5

 come prima, su cui hai glissato: dimostra.
Continuate via mail, prego...
PS per Morpheus: dagli ragione al laforgia e lascialo perdere... 
-- 
Luc

 di applicarsi, o ha avuto un pessimo insegnante.
io sono la guida dell'area C/C++ di Programmazione.it: non credo di avere
prosciutto sugli occhi e sicuramente non mi e` mai mancata la voglia di
applicarmi. Ma che il C non sia il linguaggio adatto per insegnare a
programmare e` un dato di fatto.


 ha scritto nel messaggio
news:MPG.1a8ac11c5...@tornado.fastwebnet.it...

ehehe infatti io ci ho rinunciato già da 2 gg :D

 Andrea Laforgia ha scritto:

IMHO le astrazioni fanno risparmiare tempo, la oop favorisce il riutilizzo, 
l'approccio black box e blablabla ma alla fine e' solo un paradigma di moda oggi, 
fra 5 anni potrebbe saltar fuori qualcos'altro, magari la 
programmazione tridimesionale superastratta o altre vaccate da ricercatore e 
tutti quelli
che si sono "abituati a pensare ad oggetti" e magari a scrivere un'applicazione 
con 2 linee di codice
non capiranno piu' una mazza ;) 
IMHO il C e' un linguaggio poco didattico ma e' molto semplice e assolutamente 
da conoscere perche' il 90%
del codice che circola e' scritto in quel modo, perche' ti abitua a pensare a 
"basso livello" che e' poi
come le cose funzionano nel mondo reale.
Io affiancherei al C (che io ho imparato in 7gg e non ci vuole tanto di piu' se 
uno conosce l'asm) un linguaggio 
come java che ti consente di scrivere codice con portabilita' binaria e imparare 
anche la oop senza traumi.
Cominciare con il c++ e' un suicidio, pyton e' ottimo ma java e' + diffuso, il 
do diesis (c#) lo scarterei
a priori per motivi religiosi 
my 2c
Mela Marcia 
 

 PS per Morpheus: dagli ragione al laforgia e lascialo perdere... 
ah, ok, ho capito.
ci sono cose, nella vita, che aiutano a vivere. il kaiba e' una di 
queste. solo che un giorno un ragazzo marocchino ci spiego' che nella 
sua lingua kaiba significa puttana. altrimenti il world kaiba fan club 
e' un posto dove piu' che spesso ti senti rispondere cosi': lascialo 
perdere al *, e' meglio...
-- 
Morpheu5

 il do diesis (c#) lo scarterei a priori per motivi religiosi 
posso concordare sui motivi religiosi ma io il do diesis l'ho trovato, 
per alcuni versi, geniale. combina l'assoluta potenza dei classici 
costruitti e criptismi del C con l'efficienza propria dei motori ad 
oggetti progettati in modo serio. specialmente il garbage collector e' 
una cosa che apprezzo, da programmatore C++.
per criptismi del C intendo che oggi ho passato un pessimo quarto d'ora 
a cercare di far capire ad un tipo questa roba: P[++last] = entry; che 
e' una condensazione geniale pur rendendomi conto che per padroneggiarla 
uno deve andare a colazione tutte le mattine con K&R ;)
eppoi, diciamocela tutta: ci sara' un motivo per l'esistenza del 
progetto mono, no? non mi sembra che make o gcc supportino i .vcprj (o 
quel che e') mentre per i .cs c'e' un'immane sforzo per garantire la 
compatibilita' di binari e sorgenti...
-- 
Morpheu5

 progetto mono, no?
il progetto mono e' come l'arcobaleno, sembra sempre a portata di mano ma non 
riesci mai ad approdare a nulla se decidi di raggiungerlo 
 mela marcia (tm)

 interessa
Ne ho sentite tante sul C# ma una stupidaggine come questa non l'ho mai
sentita... giudicare un linguaggio dal nome, patetico.
Posso giudicarti dal nick che hai? ;-)
-- 
Lawrence

 riesci mai ad approdare a nulla se decidi di raggiungerlo 
tristemente, concordo. e' da quando ne sono venuto a conoscenza che sto 
ancora aspettando che finiscano di implementare le classi grafiche :)
-- 
Morpheu5

 Posso giudicarti dal nick che hai? ;-)
il LOGO, allora, farebbe la felicita' dei Brand Manager ;) un po' come 
il brainfuck fa la felicita' degli psichiatri. e chiunque abbia provato 
brainfuck ad un livello poco sopra il giocattolo ti puo' assicurare che 
e' cosi' ;D
-- 
Morpheu5

non capiranno piu' una mazza ;) 
benvenuto nella AOP. Ma i paradigmi non si soppiantano, si integrano
:)

 [...] (e te lo dice uno che il C lo conosce molto bene), [...]
era una notte buia e tempestosa. In lontananza risuonņ una pernacchia
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.5. C, C++ and ASM developers
                               and beta testers are welcome!

 giudizi),
no, cazzate. I professori non sanno insegnare. Non me n'è capitato uno, 
finora, che sapesse che significhi, in C, "static" nello scope globale. 
Ce n'era pure uno sinceramente convinto che esistessero compilatori C a 
due passate, e un altro che provò a insegnare ad usare const anzichè le 
macro, ma non capendo "static" non ci seppe spiegare il perchè di tutti 
quegli errori del linker. Per imparare, il migliore resta Pascal. const 
fa quello che ci si aspetterebbe, nessuna parolaccia come void con tre, 
quattro significati contraddittori, un tipo string nativo, eccetera. Il 
Pascal è programmazione pura: solo algoritmo, zero idiosincrasie. Java, 
invece, sembra fatto apposta per infastidire e alienare


 brainfuck.NET ;))) 
c'è già, o sommo tordo


 }
bleah. E non dimentichiamo la sintassi per dichiarare le costanti:
public static const <tipo> <nome> = <valore>;
ed è possibile che mi sia scordata una keyword (final?). Ecco perchè ho 
un posto speciale nel cuore per il Pascal. Confrontare:
program HelloWorld;
begin
 WriteLn("Hello World!");
end.


 quegli errori del linker.
non parliamo poi di quella prof che, alla prima lezione di C, disse "il 
primo parametro da passare a scanf e' la domanda da stampare a video".
-- 
Morpheu5

 ed è possibile che mi sia scordata una keyword (final?). 
non c'e` il const in java... e` solo final :)
-- 
Lawrence

 per cui niente di esoterico... 
puoi scrivere un algoritmo in perl in 200 modi diversi, in c in 20, in pascal 
in 2 
 ciao 

 c'è già, o sommo tordo
 se lo dici tu ci credo
 mele marcia (tm)  

 pyton e' ottimo ma java e' + diffuso
e quindi? Considerando che nessun programmatore professionista puo`
permettersi di conoscere un solo linguaggio perche` mai uno dovrebbe
scegliere il primo linguaggio sulla base della diffusione?
Per prima cosa scegliamo un linguaggio adatto per imparare a programmare,
poi si vedra`.
ciao Anto

 in 2 
Perl mi piace :)
-- 
Morpheu5





dai link ho ricavato una faq interessante
* Is the BrainFuck.Net language different to ordinary BrainFuck? 
Unlike other impure languages which have had to change their syntax  in order 
to run in the CVM, BrainFuck is flexible enough that there is no need to alter 
the syntax
 ROTFL 
-
mela marcia (tm)

 Ce n'era pure uno sinceramente convinto che esistessero 
 > compilatori C a due passate
Beh, vent'anni fa esistevano: le prime versioni
del Microsoft C erano a due passate, per esempio :-)