Tutorial : "Con quale linguaggio inizio?"
Autore : active85k
Finalmente daremo una risposta come si deve a questo quesito che sembra essere una delle problematiche più complesse per quanto riguarda il mondo dei giovani newbies che vogliono intraprendere la via della programmazione. Come punto di riferimento principale, il sistema di cui parlerò saràWindows ma durante il corso del tutorial vi indicherò anche informazioni relative agli altri tipi di piattaforma (che paroloni... praticamente vi parlerò anche del Linux).
Dite... quale sarebbe la risposta a questa terribile domanda? Beh... cercherò di informarvi il più possibile (anche paragonando alcuni esempi di codice se necessari) circa i vari linguaggi di programmazione, e in particolare analizzeremo:
Visual Basic
Delphi
C
Assembly
Inutile fare altri discorsi su derivati del C come l'utilizzo delle infrastrutture MFC: una volta che conoscete quel linguaggio non avete problemi ad impararne qualche specifica extra.
VISUAL BASIC:
Iniziamo dal primo punto. Il visual basic. Questo ambiente di sviluppo (workframe, da ora in avanti wf) è di tipo RAD. Che cosa vuol dire: si chiamano così gli ambienti che fanno inserire direttamente i componenti su di un form con ul semplice click del mouse e ne permettono la programmazione senza grossi problemi di gestione dell'applicazione a un livello un po' più basso. Per intenderci, il wf si occupa della parte "fastidiosa" di lavoro mentre voi iniziate direttamente a programmarci le varie funzioni ecc... Moltissimi programmatori usano questo linguaggio soprattutto per applicazioni non molto complesse. Come sistema è abbastanza veloce e immediato, molto utile se dovete dedicarvi allo svago, senza lasciare da parte propositi a livello commerciale. L'unico difetto che ha è quello che il codice, una volta compilato, a livello di ottimizzazione (e quindi velocità) è scadente. Ma come si dice, non tutto il male vien per nuocere: se mirate a programmare qualche protezione commerciale, è un'ottima scelta in quanto il codice è molto male organizzato e utilizza chiamate proprietarie per gestire i componenti, i file ecc... per questo motivo, ad un reverser/cracker cadono un po' le ossa quando scopre di dover reversare un'applicazione scritta in visual basic.
E' un linguaggio ad altissimo livello (chiariamo: non vuol dire che è difficile ma l'esatto contrario) non difficile da imparare con una sintassi molto semplice. Un altro difettuccio è quello che in alcune cosette siete limitati per quello che volete fare a causa della troppa "preoccupazione" che si assume il wf nella gestione degli eventi. Per personalizzare qualche operazione a livello più basso dovete fare un macello di giri. Nel complesso... per iniziare a programmare va bene, anche se non permette di ottenere un quadro schematizzato di come funziona la programmazione nel complesso e da un punto di vista meno "organizzato".
DELPHI:
Cambiando argomento, passiamo ad analizzare un linguaggio che a mio avviso può essere definito veramente ottimo sia per imparare a programmare che per continuare a sviluppare applicazioni, perché no, commerciali con tanto di professionalità, velocitàe affidabilità. Sto parlando del delphi, l'ambiente di sviluppo della borland. Attualmente mi risulta che la sua ultima relase è la 8.0 (dettagli).
Io personalmente ho iniziato la mia pseudo-carriera di pseudo-programmatore proprio dal delphi. Anch'esso è un RAD ma con delle notevoli differenze rispetto al visual basic. Innanzitutto occupa 500mb e non 60 come il vb.
In secondo luogo presenta un codice compilato molto scorrevole e ben ottimizzato. Per quanto riguarda questo linguaggio, si può scegliere di scrivere nella sua versione "pure delphi" (ovvero senza l'utilizzo di infrastrutture delphi con conseguenti complicazioni per i poveri crackers
oppure si può scegliere la strada ordinaria (ovvero utilizzare l'ide tipo vb). Nel primo caso si fa riferimento a chiamate appartenenti tipicamente al sistema in uso per qualsiasi operazione vogliate eseguire. Nel secondo caso, il vostro lavoro viene notevolmente semplificato dall'utilizzo appunto di queste strutture delphi. Ne perdete parecchio in quanto a dimensioni del file eseguibile finale (non tanto per il codice quanto per tutte le classi che inevitabilmente vengono inserite nell'eseguibile per un caricamento in qualsiasi sistema). La sua sintassi (nella seconda scelta di programmazione) è molto simile a quella del visual basic, presentando delle specifiche più precise, soprattutto per quanto riguarda tutti i metodi di puntamento, vettori, matrici. Uno dei massimi componenti che vengono utilizzati nella maggior parte dei programmi scritti in delphi è l'accesso ai database. L'implementazione immediata e se vogliamo automatica di motori di apertura database come ADO, MySQL permettono facilmente di scrivere applicazioni veramente complesse basate sul ritiro di informazioni da basi di dati di grandi e piccole dimensioni. Molto utile è anche l'enorme varietàdi componenti (standard e non) che si possono utilizzare all'interno di un'applicazione. Un altra delle grandi possibilitàofferte da questo wf è la sua portabilità. Molto facilmente (purché nel codice non siano state utilizzate chiamate specifiche di qualche sistema in particolare) è possibile portare un eseguibile da sistemi windows a sistemi *nix grazie all'apposita versione delphi che per l'occorrenza cambia il suo nome in Kilyx. E' un ottimo punto di partenza che vi dàla possibilitàdi imparare a capire il funzionamento dei sistemi operativi usati per il funzionamento delle applicazioni.
C:
Non oso neanche immaginare quanti di voi aspettavano le mie considerazioni su questo linguaggio. In particolare parlo del Microsoft Visual C++ 6.0: uno dei sistemi più comunemente usati per la programmazione di applicazioni complesse e non. Basti pensare che Windows stesso è stato scritto utilizzando quel wf. Un ottimo sistema di programmazione che vi permette di gestire a basso livello qualsiasi forma di routine programmata. Dimenticatevi il RAD e iniziate a capire il vero funzionamento di windows e dei suoi componenti. Ogni funzione e ogni particolare deve essere programmato dall'inizio. Un linguaggio che esiste sia per windows sia per altri sistemi che permette la programmazione di qualsiasi tipo di applicazione grazie ad una sintassi molto completa e dettagliata grazie alla quale questo sistema viene utilizzato ormai sempre in sostituzione alla stragrande maggioranza dei linguaggi macchina di altri processori. La sua portabilitàlo rende uno dei massimi linguaggi commerciali. Vengono sviluppate applicazioni per qualsiasi processore solo con lo sforzo di cambiare compilatore tra un processore e l'altro. Senza dubbio un linguaggio molto più complesso da imparare rispetto a quelli sopra citati ma che fornisce un'ampia scelta di quelli che saranno i vostri metodi di programmazione. Il codice finale è molto ottimizzato, veloce e non complesso. Le applicazioni sono affidabili e stabili al massimo. Per fare un esempio banale dico che ormai tutti i drivers sono scritti con questo linguaggio, persino il kernel dei sistemi operativi. Insomma, come dire: il C è sempre il C.
ASSEMBLY:
Ecco la vera chicca degli "smanettoni pericolosi". L'assembly. Sottolineo che in linea di massima parlo dell'assembly x86 (ovvero quello usato dagli ordinari processori che avete nelle vostre case, escluso il mac). La parola stessa ve lo dice: è il linguaggio macchina. Proprio per questo motivo, ovviamente non esiste interfaccia grafica (vi prendete il blocco note e iniziate a scrivere i vostri programmini
, non si pone il problema dell'ottimizzazione del codice perché l'assemblatore non faràaltro oltre che a prendere le vostre istruzioni e a compilarle nell'eseguibile senza cambiarne una virgola (quindi datevi da fare). E' il linguaggio col più alto potenziale applicativo ma presenta le sue rogne. E' infatti impensabile sviluppare un'applicazione complessa in assembly: si devono usare istruzioni a livello macchina, anche il più semplice dei programmi rischia di assumere dimensioni veramente grandi nel suo codice sorgente. Le variabili dovete dichiararle da voi, i registri dovete saperli usare da voi, le istruzioni dovete conoscerle voi, dovete cacciare tutto dalla vostra capoccia.
Per quanto ne so io, è un sistema relativamente utile poiché nelle ditte di sviluppo software non programmerete mai in assembly. Viene usato soprattutto dai programmatori di drivers per la fase di debugging degli stessi oppure dai reverser/cracker.
Un utilizzo molto frequente che ne viene fatto è anche quello dello sviluppo di protezioni software, krypters di eseguibili, proprio grazie allo spazio che vi viene fornito per sistemare le istruzioni a vostro piacimento, senza rispettare alcuna regola di casting ecc.. ecc... Se siete veramente appassionati e soprattutto se avete molta pazienza e un cervello in buone condizioni, una volta imparato bene questo linguaggio, non vi si presenteranno problemi nel campo della programmazione.
Avete avuto le vostre spiegazioni, sapete dove mettere le mani. Spero che questo mini-tutorial serva per diminuire (per non dire annullare del tutto) le domande dei ragazzi che vogliono cimentarsi in questo campo.