Linguaggi non simili al C che vale la pena di conoscere

di il
13 risposte

Linguaggi non simili al C che vale la pena di conoscere

Secondo voi quali sono alcuni linguaggi completamente diversi dal C che per qualche motivo vale la pena di conoscere?

13 Risposte

  • Re: Linguaggi non simili al C che vale la pena di conoscere

    Per diversi dal C (un po' troppo poco perche' il C e' un linguaggio procedurale e basta) estendilo a:

    e diversi da C++, Java, C#, Python, PHP, D, Swift, ... ed in generale ogni OOP

    Haskell, Erlang, F#, Scala: funzionale
    Prolog: logico
    OPS5, Drools: a regole
    ASpectJ: AOP

    Ci metto anche JavaScript, perche' e' un linguaggio che SEMBRA simile ad un linguaggio ad oggetti, ma in realta' e' molto piu' simile ad un linguaggio funzionale. Ed ha un modo di implementare la programmazione OOP (ma NON E' OOP) decisamente strano.

    Un'altro paio si linguaggi ottimi se si vuole fare della meta programmazione sono Python e Lua.

    Python, usato normalmente, non e' molto interessante.
    Diventa decisamente interessante se vuoi fare cose strane come:

    Aspect Oriented Programming (AOP).

    Lua ha come struttura dati base, con cui fa tutto, la tabella.

    Sono paradigmi che ti danno molte idee su come affrontare in modo piu' intelligente certi problemi/algoritmi

    E fanno curriculum.
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    Grazie 1000 per la valanga di idee, come sempre, migliorabile...

    Intendevo, buttandola giù in inglese "non C-based languages", che effettivamente vuol dire tutto e nulla... però rende l'idea. Ho qualche dubbio sul fatto che Python sia C-based o meno...
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    Lo puoi usare in modo procedurale, ha un minimo supporto alla programmazione funzionale, supporta la programmazione OOP, ma la parte interessante e' che puoi prendere un'oggetto o una classe e' rimanegiarla atuo piacimento.

    Ad esempio puoi cambiare l'implementazione di un metodo al volo, cambiare la derivazione di un oggetto a runtime, e altre cose strane. Appunto: metaprogrammazione.

    Sulla stessa linea di pensiero e' anche Javascript, che non e' ad oggetti ma prototype based con cuoi puoi implementare la programmazione ad oggetti, ma ti devi fare la libreria (o scaricare una di quelle gia' esistenti).

    Anche in JS puoi modificare la derivazione di un oggetto, aggiungere/togliere/sostituire metodi, ...

    Ovviamente non devi guardare solo la sintassi: e' solo il vestito del linguaggio. Nessuno ti impedisce di inventarti una nuova sintassi e mapparla su quella predefinita.

    La parte interessante e' la filosofia su cui il linguaggio di basa (il paradigma di programmazione), e cosa ci puoi fare.
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    Secondo me almeno un linguaggio funzionale sarebbe da conoscere.

    Di quelli citati da @Migliorabile conosco Haskell e posso dirti che è un ottimo linguaggio funzionale (gli altri non li conosco).
    Per chi è abituato a programmare seguendo i paradigmi procedurali o a oggetti potrebbe risultare un po' traumatico passare al paradigma funzionale,
    in particolare per la mancanza della sequenzializzazione delle istruzioni e delle variabili globali (in realtà esistono concetti avanzati, come le monadi, che permettono, fra altre cose, di simulare questi aspetti ma in genere si usano solo per operazioni particolari).

    Che io sappia un linguaggio funzionale puro, come Haskell, non ha applicazioni dirette nel mondo del lavoro (se mi sbagliassi sarei molto felice di saperlo!) però è altamente didattico. Ti apre molto la mente soprattutto in termini di ricorsione, in quanto quasi ogni funzione si scrive ricorsivamente.

    Inoltre in quanto funzionale, ti permette di lavorare con funzioni di ordine superiore, ovvero, ad esempio, puoi scrivere una funzione che prende una funzione in input e restituisce una funzione in output. Anche lo stesso concetto di ricorsione può essere visto come una funzione di ordine superiore che prende il caso base, la funzione da applicare ricorsivamente e la struttura su cui applicare la ricorsione e restituisce la struttura su cui è stata ricorsivamente applicata la funzione passata (la struttura in questione potrebbe essere anche una lista di altre funzioni!).

    Comunque sia anche se come già detto generalmente non si usano i linguaggi funzionali nel modo del lavoro, alcuni aspetti funzionali li puoi ritrovare in alcuni linguaggi molto usati come Java (versione 8 ), JavaScript e Phyton.


    Un altro paradigma molto interessante è quello logico, che purtroppo al momento conosco pochissimo. Posso solo dirti che viene usato molto in programmi di intelligenza artificiale. In particolare se si riesce a ridurre un particolare problema in una determinata forma (clausole di Horn definte), si possono usare linguaggi come il Prolog per risolvere il problema in modo semplice ed efficente.
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    Ruby abbastanza utilizzato, richiesto sopratutto per l'estero.
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    SQL certamente.

    Più che Ruby direi Ruby on rails.
    Python e Javascript senza dubbio (però javascript è usato essenzialmente come supporto HTML, e praticamente sempre in modo procedurale o simil-procedurale).
    R giusto per qualcosa di diverso dal "solito".
    Prolog andava di moda quando studiavo, ormai lascerei stare.
    Così come ADA.

    Ed infine il sempiterno pascal/object pascal, per veri intenditori
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    R (COME LINGUAGGIO DI PROGRAMMAZIONE) e' un linguaggio procedurale con qualche struttura dati particolare. Tutto gia' presente nei linguaggi scartati precedentemente.
    Pascal/Object Pascal sono la stessa cosa di C/C++ (in versione piu' povera). Tutto gia' presente nei linguaggi scartati precedentemente.
    Ruby e' la solita minestra. Anche lui fa parte della lista dei linguaggi scartati precedentemente.

    Ada e' ancora oggi un signor linguaggio, ma non e' per gente che considera i linguaggio di programmazione diversi solo perche' usano sintassi diverse, e non perche' implementano paradigmi di programmazione diversi.

    Se R viene considerato nel senso di ambiente per fare statistica, allora c'e' anche di meglio.
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    migliorabile ha scritto:



    Ada e' ancora oggi un signor linguaggio, ma non e' per gente che considera i linguaggio di programmazione diversi solo perche' usano sintassi diverse, e non perche' implementano paradigmi di programmazione diversi.
    Non so se ti riferisci a me, ma quando ho scritto "completamente diversi dal C" intendevo anche (e soprattutto) come paradigma di programmazione... Sintassi diverse tutti i linguaggi devono averle per forza, altrimenti sarebbero lo stesso linguaggio, giusto?
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    Può essere utile:

    TIOBE Index | TIOBE - The Software Quality Company
    http://www.tiobe.com/tiobe-index/
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    agentsmith ha scritto:


    ...quando ho scritto "completamente diversi dal C" intendevo anche (e soprattutto) come paradigma di programmazione...
    Il problema centrale in questo genere di thread è quasi sempre comprendere l'esatta intenzione dell'OP. Per usare una terminologia minimamente corretta, la richiesta potrebbe riassumersi in "linguaggi esotici ovvero poco utilizzati nel mainstream e non appartenenti al noto insieme dei 3GL, in particolare dissimili dal folto gruppo dei linguaggi sequenziali/imperativi e OOPL", ivi inclusi i linguaggi simpaticamente definiti "di terza generazione e mezzo" come Python, Ruby e altri tipici degli anni Novanta dello scorso secolo.

    Quanto ai motivi per i quali "valga la pena" di conoscere un linguaggio, possono essere molto vari e numerosi: dalla triviale utilità materiale e spendibilità in ambito lavorativo, all'arricchimento culturale, dall'impatto sulle capacità di problem solving, alla possibilità di operare su determinate piattaforme anch'esse esotiche (esempio classico: OCCAM su Transputer).

    Comunque, procediamo per gradi e cerchiamo intanto di chiarire se la richiesta, così estensivamente riformulata, corrisponde realmente all'idea originale dell'OP.
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    Direi che la richiesta, cosi riformulata, corrisponde a quanto intendevo chiedere... In altre parole, usando Wikipedia, tutto quanto non fa parte della cosidetta "C programming language family", e aggiungerei, se possibile, linguaggi che non siano molto popolari.

    https://en.wikipedia.org/wiki/Category:C_programming_language_family

    Le motivazioni, nel mio caso, sono la curiosità intellettuale ed anche il fatto di poter ampliare le mie prospettive e capacità, ad es. essere in grado di risolvere un determinato problema con i "soliti" paradigmi procedurale e Object-Oriented, ma anche con quello funzionale o con quello logico... ne esistono altri? Migliorabile parlava di "aspect oriented programming" (AOP).
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    agentsmith ha scritto:


    Direi che la richiesta, cosi riformulata, corrisponde a quanto intendevo chiedere...
    Molto bene. Stando così le cose, il mio suggerimento è il seguente:

    - APL e J, linguaggi vettoriali (attenzione: non semplicemente "funzionali") di incredibile espressività e concisione, implementati anche (e soprattutto) sulle più spinte piattaforme di supercalcolo parallelo.

    - Haskell, ML, F# e il progenitore Miranda come ottimi rappresentanti per il versante dei linguaggi funzionali puri;

    - AIMMS, AMPL e GAMS come esempi di linguaggi 4GL per l'ottimizzazione matematica, con capacità multiparadigmatiche (in particolare, supporto esplicito di constraint);

    - Ada ed Eiffel, pur essendo sostanzialmente dei 3GL, per gli ottimi motivi spiegati nel link che apre questa proposizione.

    Appoggio inoltre caldamente il suggerimento di studiare Lua, al quale aggiungo senz'altro Tcl, Erlang e (Win)Icon.
    Questo per limitarsi ai semplici linguaggi di programmazione. Ma in realtà sarebbe ancora più importante padroneggiare almeno due o tre linguaggi formali di specifica e verifica: Z e OCL, CSP, VDM, CASL, logiche temporali, algebre di processo, reti di Petri...


    Riguardo ai paradigmi, ne esistono almeno tre dozzine nelle classificazioni degli esperti di linguaggi di programmazione e software engineering. Di fatto, molti paradigmi si intersecano e si sovrappongono, limitandosi ad evidenziare un solo particolare aspetto: quasi tutti i linguaggi offrono più o meno implicitamente strumenti, librerie o semplici idiomi nativi per implementare questo o quel particolare (meta)paradigma. In questa entry di wikipedia (che come il buon vecchio Cimabue ne fa una e ne sbaglia due) sono citati alcuni dei paradigmi riconosciuti, con più di qualche stiracchiatura e imprecisione. Per una visione più completa non posso che rimandare al Sebesta e, in subordine, al Friedman-Wand o al Turbak-Gifford (che in generale costituiscono un'ottima lettura propedeutica prima di affrontare lo studio dei testi sacri su compilatori, interpreti e linguaggi formali).
  • Re: Linguaggi non simili al C che vale la pena di conoscere

    Ottimo, grazie a M.A.W. 1968, e di nuovo a tutti quanti avevano già risposto in precedenza...
Devi accedere o registrarti per scrivere nel forum
13 risposte