ì. Questa è la risposta di Robyn Bergeron, leader del progetto Fedora, che in un’intervista rilasciata a LinuxInsider fa il punto sul futuro ...

  • giovanni

    Java secondo me

  • http://www.exceptionteam.eu BlueAngel

    Propongo Java. A me Java non piace, lo reputo lento, pesante e spesso nasconde alcune cose cose tipiche della sua VM che molte volte sono importanti.
    Però ha incredibili vantaggi: anzitutto non scende molto a basso livello ma è comunque sufficientemente potente da poter gestire praticamente tutto. Inoltre ha una marea di librerie e progetti sufficienti per coprire qualsiasi esigenza un programmatore necessiti.
    Per chi inizia lo consiglio per i suoi punti di forza, sopratutto per il fatto che è orientato agli oggetti, fattore indispensabile per chi vuole programmare. Poi c’è l’indubbio vantaggio che è molto portabile e per chi inizia a programmare e non ha conoscenze dei vari S.O. potrebbe essere un problema modificare del codice per un S.O. o un sistema particolare.
    Credo che sia una buona scelta per iniziare ma sono anche dell’opinione che nessuno sa veramente programmare se non ha una minima conoscenza del C e C++.

  • /V

    Java resta il piu’ comodo se uno vuole vedere messi in pratica quasi tutti i concetti dell’OOP.
    Ma uno deve volerli imparare, e accompagnare il tutto con un buon libro (tipo Thinking in Java).

    Se invece cominciare a programmare vuol dire diventare operativi quanto prima, Python mi sembra inl piu’ comodo. Facile, chiaro e versatile (ci si possono fare dalle applicazioni web su google app engine e django alle applicazioni per symbian S60 alle applicazioni desktop).

    Se vogliamo la sintassi e’ meno canonica (=non somiglia a tutti gli altri linguaggi derivati dal C come java, php, c#…) ma la sua padronanza apre una MAREA di possibilita’.

  • http://www.iacopomasi.net lizardking

    Se vuoi diventare un bravo programmatore devi iniziare dal C è l’unico che ti da una visione reale di come funzionano le cose. Passando soprattutto a linguaggio più tuttofare come C++ e poi Java poi se hai le solide basi del C si vede (allocazione memoria etc, puntatori etc).
    Se invece vuoi tirare a programmare alla svelta Python allora!

  • Dott104

    Se chi si approccia alla programmazione non sa niente e dico niente di algoritmi, strutture dati meglio il buon vecchio C. Fatte le ossa nel creare programmini idioti, ma che spratichiscono molto la mente allora si può passare all’OOP Java, C#, ma anche Python e chi più ne ha più ne metta.

    Pensare di fare iniziare direttamente con Java una persona che di programmazione, progettazione, algoritmi (nn parlo nemmeno di complessità computazionale) non sa niente è una cosa pessima. Sai che capolavori uscirebbero fuori! :P

  • Likso

    Python. Magari con il libro liberamente scaricabile “Pensare da informatici” (“How to think like a computer scientist” se non ricordo male)

    Java per quanto mi riguarda è troppo verboso… con python parti diretto a programmare (e c’è pure l’OOP, per chi vuole).

  • http://www.programmimac.net/ fabio

    Non è una domanda semplice.
    Probabilmente sarebbe bene iniziare da un linguaggio di scripting come PHP o Ruby, perché non sono ostici come il C (perché cominciare a confondere da subito le teste con i puntatori?) e danno la possibilità di scrivere semplici algoritmi in una prima fase in logica procedurale, in una seconda fase passando alla programmazione ad oggetti.

  • juhan

    Io sono vecchio e quando ho iniziato c’era solo il FORTRAN (IV), oltre all’assembler.
    Poi nel mondo Dos ho scoperto il Turbo Pascal: una meraviglia, che uso ancora adesso (delphi, turbo). Però sono passato a Linux e allora mi devo appoggiare a Wine.
    Ok, ci sono il C (che liscio non lo usano più nemmeno K&R), Java et al. ma io sono per Python.
    Ci sarebbe poi tutto un discorso a parte: matematicamente parlando l’unico linguaggio “bello” è il Lisp (e derivati).

  • Dario

    io non so programmare e non farò il programmatore (faccio l’architetto), però mi diletto in webdesigner, reti informatiche, sistemi client-server, smanetto con diverse linuxbox ecc… Da tempo pensavo di cominciare anche a programmare qualcosa, e vi chiedo un consiglio… Considerando la mia posizione (ovvero uno che non ci dovrà lavorare con la programmazione), insomma la posizione di uno che non ha il tempo di “farsi le ossa” come sarebbe giusto, ma vuole al più presto ottenere dei risultati (perchè nel frattempo ha le mani in pasta in altri campi, ad esempio ho anche pubblicato un romanzo: “Drink Shop Center” e faccio altre mille cose), che lingaggio posso provare a studiare? Python?

  • /V

    @Dario: ti consiglierei il python per direttissima. Come gia’ detto prima, e’ molto semplice (per esempio in 3 righe riesci a fare cose come collegarti alla casella IMAP e scaricarti la posta), ha delle strutture dati molto chiare (dizionari, tuple, arrays), e’ meno affetto da tutti quei problemi di nullPointer o di variabili non inizializzate che hanno c, c++ e Java, fa un ottimo backtrack in caso di errore e ci fai praticamente TUTTO, dalle applicazioni desktop (con pyGTK o il binding per wxWidgets) alle webapp (pensa a google app engine) alle applciazioni per cellulari (google python symbian).

    Poi certo, L’IDEALE sarebbe che tutti si fossero fatti le ossa con il C e l’aritmetica dei puntatori, che tutti abbiano letto il thinking in C++ per sapere come funziona l’ininzializzazione dei metodi abstract, che tutti abbiano studiato il LISP per sapere come funziona un linguaggio di programmazione ben fatto e quali sono le problematiche pratiche ecciuetera ecciuetera.

    Ma visto che e’ il computer a essere al tuo servizio e non il contrario, direi che possiamo lasciare queste problematiche ai barbogi e cominciare a divertirci un po’ :-D.

  • Ivan

    io nella mia scuola ho iniziato in seconda con il pascal poi con il c++ molto semplice e si trovano moltissime guide in internet…e ti da molta soddisfazione a fare i programmi…

  • TeoLinuX

    Se la domanda è “quale linguaggio per iniziare a programmare” la risposta è “dipende…”

    Dipende da quale tipo di progetti la persona vuole realizzare (semplici, complessi), in che ambito (desktop, cellulari, web apps, …) , se vuole programmare solo per divertirsi con un po’ di codice o se vuole diventare un professionista. La portabilità: per esempio Java va dappertutto, il C# e il .NET in generale vanno su windows e più limitatamente in GNU/Linux e OSX.

    Bisogna scegliere se il linguaggio deve essere di alto livello o di basso livello o un linguaggio di scripting. Bisogna scegliere se interessa avere un ambiente IDE (integrated development environment) visuale e user friendly.

    Insomma, non c’è una risposta univoca… bisogna scegliere il migliore compromesso che soddisfi le proprie esigenze e gli obiettivi che ci si è prefissati.

    Se poi si dice: voglio “iniziare a programmare” per conoscere e apprezzare l’arte della programmazione in quanto tale, secondo me bisogna farsi una buona dose di fondamentali e approcciare dapprima un linguaggio a basso livello (il C liscio) e passare immediatamente dopo ad un linguaggio ad alto livello fortemente orientato agli oggetti (e qui ampia scelta). E magari qualche nozione di Ingegneria del Software. In questo ambito, evitare i linguaggi di scripting, python e Visual Basic.
    Al contrario, per ottenere soddisfazioni immediate con poco sforzo, senza imparare i paradigmi della programmazione professionale, capovolgere il discorso.

    Tutto ciò è ovviamente IMHO

  • Luca

    Io ho cominciato più di 10 anni fa con BASIC alle medie, poi ho proseguito con Pascal alle superiori, C, Java ecc. all’università. Se dovessi insegnare a programmare a qualcuno gli direi di cominciare da un linguaccio di programmazione semplice e sequenziale, come il Pascal o il C, dove imparare i fondamenti di programmazione. Poi passare a linguaggi ad oggetto C++, Java… poi dopo ognuno può scegliere il proprio linguaggio a seconda delle necessità e del campo di applicazione.

  • Emilio

    Chiunque programmi anche una semplice pagina web dovrebbe conoscere l’assembler. E’ la base su cui poggiano tutti i linguaggi di programmazione, sia compilati che interpretati.

  • Franky

    Bash può essere utile per imparare un po’ i fondamenti di gnu/linux e al tempo stesso divertirsi :D

  • http://www.coda.altervista.org/ Coda

    Sicuramente un linguaggio seplice, dotato di funzioni comprensibili senza conoscere varie nozioni di programmazione. Io ho iniziato imparando alle superiori il Pascal e mi sono trovato benissimo, ma ho visto che anche l’Assembly non è da meno…
    Consiglio uno di questi due (non il C perchè per i novizi può sembrare complesso).

  • juhan, teh barbogio

    @ /V è la prima volta ke mi sento chiamare barbogio perché ho nominato il Lisp. Allora vorrei dire che ho lavorato anke in Basic, AtctionScript (quello di flash e director), lingo (director) scheme, Ocaml e sono affascinato da Haskell!
    Kwasy-kwasy la mia nuova identità diventa juhan, teh barbogio.
    E teh non è un errore.

  • http://www.digilinux.org(ancorainattivo) matrobriva

    bè,secondo me chi vuole ottenere risultati subito può affidarsi a linguaggi come Java,Phyton o Ruby. Inoltre si può divertire con shell script e potrebbe imparare i semplicissimi linguaggi web come HTML,CSS,JAVASCRIPT e PHP. Se si vuole entrare nello specifico allora entrano in gioco C,PERL e,per windows,il .NET Ciao ciao!

  • Roberto

    Cari amici,
    la domanda va integrata con un dato fondamentale. Di quale età stiamo parlando?
    La mia esperienza evidenzia che iniziare con Logo già alle elementari e medie è efficacissimo.
    Ho visto decine, centinaia di ragazzi buttarsi a pesce sul linguaggio della tartaruga e una volta acquisita/potenziata la logica che sottende quel tipo di programmazione, lanciarsi su altri linguaggi a seconda delle esperienze successive, delle occasioni e delle opportunità.
    Un linguaggio procedurale come Logo si presta molto bene ad acquisire/allenare/potenziare un abito mentale che abitua ad analizzare un problema complesso, suddividerlo in parti più semplici, implementare procedure facili da gestire e assemblarle in complessi algoritmi.
    Logo è facile, Logo è uno stimolatore di ipotesi, Logo apre la mente ad altri e più potenti linguaggi, ma soprattutto, Logo aiuta ad organizzare il pensiero, a fare ipotesi e verificarle. Logo permette di raggiungere questi obiettivi sin da piccini …
    Logo è un antipasto che fa venire appetito, e che appetito!

    W Logo ed il pensiero costruzionista!
    ;-)

  • Domenico

    secondo me il basic………..originale quello degli anni 80

  • Marco Cinus

    Il miglior sistema è spaccarsi le ossa subito con C poi una volta capiti a fondo i concetti della programmazione procedurale si passa a Java. Eviterei i linguaggi di scripting, in particolare il Python, che con la sua sintassi e la mancanza di tipi di dato che rappresentano una grave lacuna di questo linguaggio

  • /V

    @juhan, e sono davvero contento per te, che hai deciso di dedicare la tua esistenza allo studio di una branca cosi’ interessante e autorefenziale dell’informatica quale i linguaggi di programmazione.

    Per Dario e per chiunque altro abbia deciso di prendere altre strade nella vita, come l’architettura, l’apicultura o il turpiloquio compulsivo, continuo a consigliare di provare python, che ti permette di fare quello che vuoi in poco tempo per poi tornare ai tuoi ALTRI interessi.

    (oppure, come qualcuno aveva giustamente consigliato, LO SCRIPTING BASH, che e’ un po’ piu’ complicato ma estremamente pragmatico, e se hai una macchina linux torna SEMPRE utile)

  • allanon

    E’ uscito python 3k !!
    un ottima occasione per impararlo,
    essendo non compatibile con le versioni precedenti, hai l’occasione di impararlo passo passo mentre va alla conquista del mondo!!

    ditemi quello che volete,
    ma ho visto java
    ho visto python
    java schifo, python meraviglioso…

  • asd

    Bhe dipende da cosa si vuole ottenere:

    se si vuole imparare a programmare in generale c++ è un’OTTIMA base per imparare tutti gli altri linguaggi visto che è molto flessibile integrando sia funzioni a basso livello che ad alto livello,una volta che si impara quello per tutti gli altri linguaggi basta leggere il manuale e in 5 minuti si è gia capaci!
    Se si vuole imparare a programmare invece per avere un linguaggio largamente usato per iniziare gia a fare qualche lavoretto php è un ottima base (anche se le variabili senza tipo e overloading sono trattate in modo MOLTO sporco)visto che è semplice e largamente utilizzato,ovviamente php va accompagnato a html,css,javascript e sql.

  • /V

    Daccordissimo con ASD. A sto punto facciamo i dovuti distinguo:

    1) Imparare a programmare = imparare la nobile arte del buon codice, dei linguaggi di programmazione e tutta la teoria annessa? => Isccriviti all’universitá e impara dai meglio, nell’impossibilitá di ció C++ o Java accompagnati da opoprtuna letteratura o Lisp. Peró richiede tempo, sforzi e non porta subito a risultati concreti.

    2) Imparare a programmare = trovare un lavoro sottopagato facendo software alienante per un mentecatto? => impara php, C# o Visual Basic (6, non .net). Troverai che il mondo é pieno di commercianti senza un sito o un software di fatturazioni e gestione magazzino.

    3) Imparare a programmare = arrivare ad automatizzare task ripetitivi, creare interfacce grafiche e web, fare piccole utility senza avere chiaro cosa si vuol fare di preciso? -> usa python che ha dituttodipiú ed é facile.

  • http://natonelbronx.wordpress.com mastro

    Penso che la cosa più importante se si vuole imparare a programmare sia “imparare a scrivere codice pulito e ben strutturato”

    poi l’esperienza porta il resto

    per questa ragione secondo me è meglio non cominciare con linguaggi non-tipizzati per esempio. (es. php, javascript)

    il migliore in assoluto è il C++ ma è anche la via più difficile
    Java invece secondo me è un ottimo compromesso per qualcuno che comincia
    ha delle API centralizzate e ben scritte, ottima documentazione, è molto ben strutturato e un po’ meno ostico di C++

    una volta imparati i concetti della programmazione ci si può poi espandere “a piacere” su altri linguaggi

    anche se secondo me
    con un bravo insegnante: C++
    senza: Java, poi C++

    inoltre ritengo sia fondamentale imparare a scrivere la documentazione del proprio codice e a seguire le regole di “stile” del codice fin da subito

    inoltre se volete scrivere un buon codice dovete cerare sempre di scriverlo perché possa essere utilizzato nel modo più generico possibile e in modo che il vostro codice possa essere riutilizzato facilmente senza doverlo copiare/incollare altrove.
    se vi sforzate di fare questo poi l’esperienza farà il resto…

    my 2 cent

  • Nicola17

    Assolutamente il C (non C++).

    Se si impara per bene il C dopo ci si sposta tranquillamente su qualsiasi linguaggio

  • bestia

    Sono un laureando in Informatica, e non so se farò il programmatore, inoltre non posso rispondere a questa domanda data la mia poca esperienza; quello che posso fare e riprodurre il mio percorso di studi universitario focalizzato sulla programmazione in senso stretto (sperando di finirlo al più presto):
    - programmazione procedurale —> C++ & Fortran & C clean;
    - programmazione basata e orientata agli oggetti —> Java & C#;
    - design pattern —> Java.
    Concludo col dirvi che il mio prof è davvero un grande, ma in tutto questo tempo ho capito che “l’arte della programmazione” forse è una cosa del tutto esoterica.

  • patrizio

    Secondo me il miglior linguaggio per iniziare è sempre l’intramontabile Pascal.

    Io ho iniziato a programmare negli anni 80 con basic a 9 anni in pratica, mi sono studiato i manuali di programmazione a corredo del mio vecchio MSX. Poi quando sono andato a scuola ho fatto pascal, infine all’uni c, c++ e java.

    Allora, il basic non è assolutamente adatto perchè non è ben strutturato. C++ e java li scarterei immediatamente, il primo per complessità ed il secondo perchè totalmente oop.

    Rimangono c e pascal.
    All’uni, ho visto studenti di informatica dividersi in 2 gruppi, quelli che erano andati come me all’industriale e sapevano programmare in pascal e quelli che iniziavano la loro avventura all’uni in c.

    Ovviamente quelli che arrivavano con il bagaglio di conoscenze di pascal non ha avuto alcun problema a imparare il c, mentre chi iniziava era in grosse difficoltà a farlo in c. Direte, grazie della notizia i primi erano già dei prorammatori e quindi erano avvantaggiati. QUesto è vero, ma di è verificato anche un altra cosa nel tempo.

    Chi ha imparato a programmare direttamente in c ha sempre avuto, anche a fine corso di laurea o nel mondo del lavoro, problemi a fare un programma formalmente corretto, senza l’effetto spaghetti code, nonchè efficente e privo di bug. Chi invece ha iniziato a programmare in pascal tende a sviluppare codice facilmente comprensibile (in qualunque linguaggio utilizi successivamente), con poco o addirittura senza bug da dover trovare nella fase di testing, e inoltre produce codice molto efficente.

    Sarà un caso di tutti quelli che ho conosciuto, ma questo è quello che ho costatato.

    Per arrotondare, ho sempre dato lezioni di informatica e ho scoperto dopo diversi tentativi che il milgior compromesso è sempre quello di insegnare il pascal e poi far passare l’allievo al c. Dopo si va dove pare. Nella fattispecie, insegno il pascal a poco a poco, cioè concetto dopo concetto, e per non fare annoiare, dopo aver prodotto il codice per ambiente a riga di comando, passo ad un applicazione con gli stessi concetti ma in ambiente lazarus (o delphi). COntinuao così fino ad arrivare alla rpogrammazione oop.

    MI sono accorto che per imparare a programmare bene, ripeto bene in pascal ci vogliono circa 6 mesi di studi continui, per farlo in c almeno 18 mesi. Paradossalmente a fare prima il pascal e poi successivamente il c o anche c++, ci vogliono circa 9 mesi contro i sempre 18 mesi di chi comincia direttmente in c. E siccome il tempo è denaro, fare prima pascal e poi qualunque altra cosa è molto più conveniente.