Newsgroup: it.comp.www.php
Titolo: Programmazione da zero

Mi servirebbe un software OpenSource per apprendere i rudimenti della 
programmazione.
Non importa il linguaggio (php, BASIC ecc).
Non importa la lingua.
Questo software deve essere autonomo, cioč contenga tutto il nesessario per 
editare e vederne il risultato.
Che mi consigliate?
Grazie
Ernesto

 Che mi consigliate?
Di usare il browser e JavaScript come linguaggio.
Volendo aggiungi una estensione per sviluppatori (tipo firebug per firefox).

 Che mi consigliate?
Un libro, più che un software.


Ha i ragione, e se hai qualche titolo č ben accetto; ma poi uno si mette 
davanti a una tastiera e vorrebbe vedere/fare almeno qualcosa di minimale.
Ciao
Ernesto

 davanti a una tastiera e vorrebbe vedere/fare almeno qualcosa di minimale.
Non ho titoli in mente, in rete si trova di tutto ma ti suggerisco di 
cambiare approccio, non "imparare a programmare per fare qualcosa" ma di 
scegliere uno scopo, cioè concretizzare il "qualcosa", e informarti su 
quello. In questo modo puoi scegliere una traccia nota, altrimenti vai a 
caso e secondo me ti confonde.
Puoi scegliere ad esempio un programma con interfaccia grafica che 
lancia i dadi, uno da riga di comando che stampa le disposizioni di n 
elementi, uno che gira su un server web. Il sistema operativo conta, 
cioè determina dove cercare le informazioni.


Se proprio vuoi iniziare da zero prova con javascript come ti è stato 
consigliato
Gira in un browser
per modificarlo basta un editor di testi
I concetti base li puoi vedere all'opera
Implementa anche una sorta di Object Oriented Programming, ma a quel 
punto ti converrà passare da javascript a un altro linguaggio (tipo php 
o Java)
Javascript all'inizio sembra una cazzata, poi diventa via via più 
complesso. In ottica HTML5 però sarà fondamentale saperlo maneggiare bene
http://w3schools.com/js/default.asp
Ciao
M

 Ernesto
Suggerisco un linguaggio moderno, ma semplice e rigoroso come Java.
Non lo sò se lo puoi considerare veramente "open source", né per quale
scopo il linguaggio che richiedi debba essere tale, ma comunque i
sorgenti di molte librerie sono disponibili e inoltre esistono anche
altre implementazioni, incluso il compilatore GNU per Java.
Con linguaggi di scripting come il PHP i principianti imparano solo a
fare cose sbagliate e inefficienti, e quindi non imparano affatto. La
nobile arte della programmazione richiede dedizione ma, soprattutto,
disciplina. E per questo occorre un linguaggio rigido che impone di
concentrarsi sulle cose importanti.  Successivamente, armato di robuste
nozioni di base, potrai affrontare linguaggi dalle specifiche sporcaccione
come il PHP o il C++, o linguaggi poliedrici come il C#. I fondamenti
non cambiano.
Di Java puoi scaricare il JDK nudo e crudo usabile da linea di comando,
ma credo che una buona IDE sia decisamente più confortevole. Ad esempio
NetBeans IDE [1] supporta Java (e altri linguaggi) ed integra editor,
GUI designer, debugger, ecc. Se poi ti scarichi il "JDK with NetBeans
IDE Java SE bundle" hai sia NetBeans che il sistema di sviluppo Java
installabili in un botto solo su qualsiasi S.O.
Consiglio un libro guida come "Core Java" vol. 1 [2] che è molto concreto
ma è per iniziati della programmazione.
Riferimenti:
http://netbeans.org/
http://www.horstmann.com/corejava.html
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it


Permettimi una PHPernacchia :)
In php non sei costratto a scrivere male, puoi farlo
D'altra parte puoi implementare senza grossi drammi design pattern, TDD
Che manchino una ereditarietà decente
Giudicando dai risultati che vedo intorno a me Java insegna a scrivere 
male tanto quanto PHP, con lo svantaggio di arrivare ad essere 
tremendamente più prolisso
Continuo a sostenere che non sia il linguaggio a fare i programmi mal 
scritti, ma i programmatori
M

  wrote:

Ok nessuno ti obbliga a scrivere "male" in php, ma se è il primo
linguaggio che impari direi che è praticamente un dato di fatto, se
parti già da un linguaggio che ti forza una certa indentazione (ad
esempio), ti abitui subito e una cosa che (come capirai nel tempo) è
FONDAMENTALE ti verrà spontanea.
Per questo, io consiglierei Python.

 davanti a una tastiera e vorrebbe vedere/fare almeno qualcosa di minimale.
Come te la cavi con l'inglese?
Per restare in ambito JavaScript prova questo:
http://www.xul.fr/javascript/tutorial/
Per Python c'è l'ottimo "Pensare da informatico":
http://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm
Se preferisci testi cartacei fossi in te opterei per i pocket della Apogeo:
JavaScript di Saverio Rubini
Python Pocket di Marco Beri
Costano sui 6-8 euro, ne trovi edizioni più o meno aggiornate ma anche 
quelle meno recenti sono più che adeguate per iniziare.
Suggerimento "di parte": informati nella tua zona se ci sono comuni, 
enti o simili che organizzano corsi finanziati. Di solito con 50-100 
euro trovi corsi di una ventina di ore che sono ottimi per iniziare in 
modo guidato.


Ho letto, e mi sembra con attenzione, la docunetazione su Pyton 
all'indirizzo web che mi hai passato.
Sembra quello che fa per me, ma non sono riuscito a capire (o forse mi è 
sfuggito nella lettura?), dove mi procuro l'editor di Pyton? Dove lo 
scarico? Devo installarlo o è tipo xampp di PHP/MySQL?
Insomma, ottime pagine, ma ti dicono come guidare senza darti al macchina.
Mi puoi indirizzare a trovere il garage dove è posteggiata?
Grazie
Ernesto


2 microsecondi su google:
http://www.python.it/download/
dai, fin qui ci si poteva arrivare senza sforzo eh, caro il mio OP


Effettivamente l'indenting obbligatorio di python non è male come 
concetto, ma è un linguaggio che conosco troppo poco per potermi 
esprimere a riguardo
Sono un po' scettico sul darlo in mano a uno che non abbia per sua 
stessa ammissione _mai_ programmato e che cerchi una cosa di base
C'è anche da dire come controesempio che la mia vita su linux è iniziata 
con la compilazione di un kernel gentoo :)
M

 ha scritto nel messaggio 
news:int86k$h0u$1...@nnrp.ngi.it...

Hai regione, sarà l'ora.
Ernesto


np :)
Cmq quando sarai un pelo più addentro alla programmazione guardati se 
vuoi i Design patterns
Sono approcci stilistici che possono davvero salvare giorni di tempo di 
sviluppo test e manutenzione
Inoltre il Test Driven Development (sono entrambi bocconi grossi)
Dato che inizi adesso tanto vale che inizi con tutte le cose più 
all'avanguardia (o meno fuori moda) :)
M

 ha scritto nel messaggio 
news:intcrg$h0u$4...@nnrp.ngi.it...

grazie

 fondamenti non cambiano.
Perdonami ma sono completamente in disaccordo.
Se stai imparando a programmare, una sintassi come
ArrayList<String> l = new ArrayList<String>();
...
Collections.sort(l, new Comparator<List<String>>());
e` tutt'altro che "concentrarsi sulle cose importanti", quando in PHP fai 
lo stesso con
$l = array();
...
sort($l);
Oppure il mio preferito:
InputStreamReader is = new InputStreamReader(new FileInputStream
("nomefile.txt"), "UTF-8");
al posto di
$is = file("nomefile.txt");
Puoi consigliare Java (come fai) per costringere a imparare le 
formalita`, 
ma secondo molti, spesso le formalita` sono fini a se` stesse.
Anche (e soprattutto) in un linguaggio dinamico come PHP puoi fare Design 
By Contract, per esempio con assert (anche se non e` potentissimo), e in 
PHP 5.3 hai il type hinting nei metodi. Puoi sviluppare Test Driven.
Una volta che hai documentato le API pubbliche (ed eventualmente le hai 
"imposte" con il DBC), e hai un test case che le dimostra, non hai piu` 
bisogno di strict typing. Anzi, puo` diventare (vedi sopra) una rottura 
che rende il codice illeggibile.
Bye.

 FONDAMENTALE ti verrà spontanea.
Molti tirano in ballo l'indentazione forzata di Python come un vantaggio, 
perche` ti costringerebbe a scrivere "bel" codice.
E` una delle poche cose che odio profondamente in Python.
L'indentazione e` fondamentale, sono d'accordo. Che il linguaggio te la 
imponga, e` una cazzata (ecco, l'ho detto :) )
Bye.

 imponga, e` una cazzata (ecco, l'ho detto :) )
Bhè un'imposizione è errata a priori, però l'indentazione non è così
drammatica, e una volta imparata non ci fai nanche più caso.
Una cosa che in python rimpiango (bhè, per quel poco che lo uso) è la
mancanza delle parentesi graffe {} per definire i blocchi (cosa che su
PHP è invece odiata da molti); quando hai tanti blocchi annidati con
le graffe vedi subito dove comincia uno e finisce l'altro, invece con
solo l'indentazione è (a mio avviso) un pò meno chiaro.. ma
probabilmente è questione di abitudine.

 questione di abitudine.
Ecco, appunto, sei d'accordo con me. ;)
Aspetta di trovare progetti gestiti male in cui un file e` indentato a 
tabs e un altro a spazi. ;)
Bye.
P.S.: Giusto per... quasi tutti gli editor ti permettono di mostrare i 
"caratteri non stampabili", e molti ti permettono di mettere delle barre 
verticali in corrispondenza dei tab, cosa che facilita la lettura dei 
blocchi annidati. Non solo in python, anche in molti altri linguaggi.

 Perdonami ma sono completamente in disaccordo.
[...]
Di solito mi trovo sempre d'accordo con quello che scrivi su questo NG
(e anche su quello Amiga :) ) ma qui no...
Hai portato degli esempi che proprio rafforzano il concetto opposto.
Il formalismo e la "pignoleria" di Java mettono in testa delle regole di
pulizia che in generale servono sempre, con qualsiasi linguaggio. E se
io leggo un sorgente Java con scritto
ArrayList<String> l = new ArrayList<String>();
...
Collections.sort(l, new Comparator<List<String>>());
capisco subito che stiamo trattando oggetti String, anche senza bisogno
dei commenti.
Con
$l = array();
...
sort($l);
che cosa stiamo trattando ? Pere o mele ? I commenti certo ci vogliono
ma... Io preferisco un linguaggio autoesplicativo.
Con
InputStreamReader is = new InputStreamReader(new FileInputStream
("nomefile.txt"), "UTF-8");
capisco al volo che stiamo parlando di un file UTF-8 e non ANSI o
Klingon antico.
$is = file("nomefile.txt");
Cosa c'è dentro ? Siamo sicuri che stiamo leggendo un file UTF-8 ?
In generale, quando si impara qualcosa di nuovo, meglio sempre
apprendere le regole formali, rigide e magari pallose. Poi quando si
possiede il linguaggio... ci si può concedere qualche libertà, nel pieno
rispetto dei limiti e delle proprie capacità.
Un po' quando...
- Si impara una nuova lingua: prima si impara la grammatica e il
dizionario di base; lo slang viene più tardi (anche se è più figo e
divertente saperlo prima)
- Si impara ad andare sui roller: prima ci si esercita con protezioni e
casco; poi magari si svolazza per le vie del centro, vestiti da Harry Potter
saluti,
M.

 Potter
Eh, ma ti metti i roller (con le protezioni). Non inizi studiando la 
forza centripeta e l'accelerazione centrifuga e l'effetto che hanno 
sull'equilibrio dinamico, o la viscosita` dei cuscinetti a sfera 
contrapposta a quella delle ruote di gomma.
Infili i pattini e vai! :)
Il vecchio detto "ne vale piu` la pratica che la grammatica" lo ritengo 
vero anche e soprattutto per i linguaggi di programmazione, e 
semplicemente trovo Java troppo grammatico. :)
Oggi consiglio PHP per il web e Python per il resto, per iniziare. 
Perche` 
sono dinamici, non devi pensare troppo prima di scrivere qualcosa.
Bye.


cut..
+1
Tanto per dire ormai quello di usare la lingua direttamente e pi passare
alla grammatica è un approccio che viene usato perfino per le lingue
morte (o meglio, ci sono sperimentazioni a riguardo)
Imho è molto più importante imparare TDD e Design Pattern dato che sono
generici, piuttosto che la sintassi che è specifica di ogni singolo
linguaggio
M

 tabs e un altro a spazi. ;)
Una cosa del genere merita un Fatality ;)