Puoi migliorare le tue capacità di programmazione imparando altri paradigmi linguistici?

9

Se sì, puoi dirmi in che modo l'apprendimento di un nuovo paradigma ha cambiato il tuo approccio per risolvere i problemi di programmazione anche se il problema è in un altro paradigma / linguaggio / tecnologia?

Mi sarà molto gradito Se mi puoi dire in un modo specifico, come le tue abilità di programmazione X (cioè: JAVA / C # / C ++) sono migliorate imparando Y (cioè: Scheme / Prolog / Lisp).

Inoltre, quali sono i paradigmi che ritieni più utili per diventare un buon programmatore?

Le mie esperienze sono strutturate solo - OOP, imperativo - procedurale e in qualche modo modello di meta-programmazione, ma il mio obiettivo non è quello di imparare un'altra lingua, ma piuttosto di apprendere approcci diversi per risolvere i problemi.

Grazie!

    
posta Armando 08.05.2011 - 19:35
fonte

5 risposte

7

Cerco di imparare almeno 1-2 nuove lingue ogni anno. Il più che ho guadagnato è stato dall'apprendimento di un linguaggio funzionale (F #) che ha cambiato il mio modo di risolvere i problemi - I = ora provo a dire alla macchina cosa fare invece di come farlo, specialmente in C #, dove uso molto pesantemente Linq e oggetti immutabili ora che conosco i benefici del loro utilizzo. Utilizzo anche le funzioni di ordine superiore (metodi come parametri) e il mio stile di codifica è stato modificato (migliorato) di conseguenza.

    
risposta data 08.05.2011 - 19:39
fonte
2

Assolutamente. Ogni linguaggio di programmazione che apprendi avrà un modo diverso di fare certe cose. Alcune cose ti faranno impazzire, alcune cose che amerai e altre cose cresceranno lentamente su di te.

Non è mai una perdita di tempo imparare almeno le basi di una nuova lingua.

    
risposta data 08.05.2011 - 19:44
fonte
1

Ok, ecco un esempio che ho incontrato.

Ho imparato un linguaggio relativamente vecchio (VB6) per un progetto su un vecchio codice che avevamo.
Il linguaggio è molto orientato alle finestre, ma non ci sono classi potenti di alto livello come nel framework .Net.

Ho dovuto fare alcune manipolazioni di immagini e questo mi ha fatto conoscere le funzioni API di Windows per le manipolazioni delle immagini.

Dopo aver appreso che mi ha dato una migliore comprensione delle classi GDI .Net. E la comprensione che a volte l'utilizzo di Windows API sarà molto più veloce (meno funzioni di wrapping).

Questo significa che anche quando impari il vecchio codice, puoi ancora imparare e ottenere un'altra prospettiva.

    
risposta data 08.05.2011 - 19:48
fonte
1

Can you Improve your programming skills by learning other language paradigms?

Nella mia esperienza, sicuramente sì. Avere diversi modi di attaccare un problema è come una tavolozza di strumenti. Un giorno tu (come ho fatto) avrò uso per questi altri strumenti. O forse no. Tutto dipende. Alcuni esempi:

Le lingue in genere non sono indipendenti, vengono con un ambiente. Ho trascorso un po 'di tempo ad imparare una strana lingua conosciuta come awk . Si basa sulla corrispondenza dei modelli usando "espressioni regolari". Dal tentativo di imparare il C ++ STL (non di grande successo) ho imparato a conoscere le mappe. Combinando questi due concetti potrei scrivere molto velocemente alcune utility di trasformazione del testo in Perla (l'unica lingua disponibile sulla piattaforma).

Principalmente per il gusto di farlo ho cercato di imparare Erlang (non molto riuscito). Ha una libreria di funzioni nota come OTP che implementa tra le altre cose un modo di gestire gli errori, a volte noto come lasciar fallire e avere un monitor che riavvia le funzioni. Ho usato questa idea in alcune aree, a volte semplicemente lasciando che le cose fallissero invece di fare test infiniti.

Cercare di imparare Haskell (di nuovo non molto efficacemente) ha davvero aperto gli occhi su altri modi di attaccare i problemi. La programmazione funzionale (a mio avviso) inizia con la scrittura di un codice che dice quale risultato vuoi, non la scrittura dei passi necessari per arrivarci. Trovo che questo mi abbia davvero aiutato nello scrivere codice SQL migliore.

Ultimamente, ho provato un po 'di javascript. E ha trovato un ambiente noto come nodered. Nessun codice necessario per creare un piccolo server domotico.

Per dirla in prospettiva, la maggior parte del mio dilettarsi in varie lingue era (e lo è) su un livello piuttosto superficiale, soprattutto per avere un'idea di ciò di cui parlano le persone. Ci sono pochissime lingue in cui posso effettivamente essere produttivo.

    
risposta data 03.03.2018 - 00:08
fonte
0

Ho anche imparato molto dal dilettarsi in un linguaggio funzionale per qualche tempo. Tuttavia, ciò che ne ho ricavato è stato non tanto di fare le cose in modo diverso dalle lingue imperative quanto di rendere più facile la concorrenza. Può essere applicato con la stessa facilità in un linguaggio imperativo come in un linguaggio funzionale, ma per qualche motivo, la maggior parte degli esempi che ho trovato nelle lingue imperative erano più complicati. (Altre cose si sono rivelate molto più complicate nei linguaggi funzionali.)

Un'altra cosa che ho imparato da una nuova lingua sono stati gli schemi di programmazione aggiuntivi. Ne avevo letto molti, ma vedere e utilizzare diverse implementazioni davvero interessanti ha reso più facile la comprensione e ha davvero portato a casa la loro utilità e quando sono appropriati.

    
risposta data 03.03.2018 - 04:40
fonte

Leggi altre domande sui tag