Dovrei preoccuparmi di imparare lingue di piccole o di nicchia? [chiuso]


22

Se sfogli le domande sul codice golf su StackExchange , noterai un sacco di lingue non standard ma del mondo reale (es. Non brain-f * ck) come F # , Scala , R , J e Clojure . Visitando i loro siti Web, alcune delle lingue sembrano interessanti risolvendo i problemi in qualunque lingua già in uso.

Tuttavia, c'è tempo per scrivere codice e tempo per denaro. La cosa più vicina alla verità su chi usa una lingua è l' indice TIOBE , che elenca nessuna delle lingue sopra elencate tra i primi 10-15. Il che mi fa chiedere se li userò mai.

Dovrei anche preoccuparmi di imparare alcune piccole lingue di nicchia? Non sembra che farei soldi, e probabilmente alcuni falliranno comunque.


4
Se tutto ciò che ti interessa è fare soldi, perché stai ponendo questa domanda?
ChaosPandion,

4
F # è un linguaggio di prima classe a partire da VS2010. Non direi che non è standard e penso che presto otterrà un'ampia adozione.
Brian R. Bondy,

8
Se tutto ciò che vuoi è solo fare soldi, è meglio evitare la programmazione. Che ne dici di diventare un'attrice popolare?
P Shved,

2
@TheLQ: Vuoi essere mainstream? Hai paura di fare qualche passo e non sai quanti soldi porterà prima di farlo? Quindi, per favore, accontentati anche della paga tradizionale. Questo è tutto ciò che otterrai con la tua mentalità, se non del tutto.
Ingo

1
Alcune lingue di nicchia potrebbero renderti più produttivo, permettendoti così di guadagnare più soldi rispetto alle lingue tradizionali.
Giorgio,

Risposte:


25

L'ipotesi Sapir-Whorf . Dichiara, più o meno, che ciò che puoi pensare è limitato da ciò che hai la lingua da descrivere. La conseguenza di ciò è che le persone multilingue sono in grado di pensare in modi che i parlanti di una sola lingua potrebbero non essere in grado di fare.

Molte persone (me compreso) pensano che ciò valga anche per la programmazione. Imparare Lisp, ad esempio, ti insegna un modo completamente nuovo di pensare ai problemi che puoi applicare a C # o Java o Python. Più paradigmi linguistici hai imparato, più strumenti saranno nella tua cassetta degli attrezzi mentale, indipendentemente dalla lingua che stai effettivamente usando.


1
Esattamente. Ad esempio, trovo che in alcune situazioni, un linguaggio puramente funzionale semplicemente non sia sufficiente. Tuttavia, mi ritrovo costantemente a inserire concetti funzionali in linguaggi che supportano la programmazione funzionale (es. Javascript, c ++ 0x, ecc.).
Cam

4
Sono divertito dal fatto che le persone continuino a usare l'ipotesi Sapir-Whorf (in gran parte, sebbene non interamente screditata in Linguistica) come analogia. Sono assolutamente d'accordo con il sentimento riguardo alla programmazione, ma penso che sarebbe meglio trovare un'analogia diversa se vogliamo che le persone ci prendano sul serio.
Jonathan Sterling,

1
Non credo all'ipotesi, altrimenti non saremmo mai andati oltre i grugniti. Allo stesso modo per la programmazione, non pensare che le persone siano limitate dal linguaggio.
John Smith,

24

Imparerei qualsiasi linguaggio che mi introduca a concetti e paradigmi che non ho mai visto prima. Ecco perché ho imparato haskell e schema: mi hanno fatto conoscere rispettivamente la programmazione funzionale e la programmazione prevalentemente funzionale. Non mi sarebbe importato di meno se schema e haskell fossero ampiamente utilizzati, a parte il modo in cui ciò avrebbe influenzato la documentazione e le risorse disponibili.

Quindi, fondamentalmente, se una piccola lingua di nicchia ti introduce a nuovi concetti e paradigmi (specialmente quelli che puoi applicare ad altre lingue), allora impara!

Altri motivi per cui potresti voler imparare una lingua "piccola / di nicchia":

  • La lingua ti consente di risolvere un particolare (tipo di) problema "meglio" (più veloce, con una soluzione migliore, più portabile, ecc.) Rispetto a qualsiasi altra lingua

  • La lingua ti consente di risolvere i problemi così come una lingua popolare, ma ha alcune funzioni interessanti che ti piacciono (es. Clojure)

  • Vuoi aiutare a sviluppare la lingua

7

Bene sto usando Clojure (una delle "lingue di nicchia" di cui parli) e ho scoperto che è stata un'esperienza molto utile.

  • Mi ha reso molto più produttivo (rispetto a Java e C # che ho usato principalmente in precedenza). Mentre gestisco la mia attività, la produttività equivale a denaro :-) quindi in questo senso Clojure ha già avuto successo, almeno dal mio punto di vista.
  • Ho imparato nuove tecniche che mi hanno reso uno sviluppatore migliore (in particolare in materia di concorrenza, programmazione funzionale, astrazione, metaprogrammazione ecc.). Anche se tornassi a scrivere Java, avrei comunque potuto fare buon uso di questa conoscenza
  • È stato davvero divertente imparare una nuova lingua molto diversa da qualsiasi cosa abbia mai fatto prima. Se ti piace davvero quello che fai, vale la pena a sé stante.
  • Poiché si tratta di un linguaggio JVM, non importa se il set di librerie è relativamente piccolo perché è ancora possibile accedere all'intero set di librerie nell'ecosistema Java / JVM. Questo è un grande vantaggio per le lingue che girano su JVM (lo stesso vale per Scala)

Personalmente presterei poca attenzione a cose come TIOBE: in realtà non ti dicono molto oltre ciò che è stato popolare in passato. Utile forse se vuoi un lavoro mantenendo vecchi sistemi, meno se vuoi imparare e ampliare i tuoi orizzonti.


4

Il motivo per studiare una lingua di nicchia è raramente l'aspettativa che la utilizzerai direttamente (per soldi o altro). Di solito è per imparare qualche nuovo aspetto o stile di programmazione. In questo modo è probabile che ti renda un programmatore migliore (e sì, probabilmente più prezioso), anche se non usi mai quella lingua per produrre codice di "produzione".


4

Parlando come sviluppatore professionista in una lingua di nicchia , è possibile guadagnarsi da vivere. Ci sono aspetti positivi e negativi, però.

Cose che sono più difficili:

  • Trovare un lavoro richiede più tempo
  • È più probabile che i lavori ti richiedano il trasferimento
  • Otterrai scarso rispetto da parte dei programmatori tradizionali (e, quindi, maggiore resistenza).

Cose che sono più facili:

  • Il piccolo gruppo di programmatori semplifica la concorrenza per i lavori
  • Puoi conoscere ogni programmatore di significato nel tuo campo
  • Sviluppare una reputazione è più facile che nel mainstream

Cose che sono solo :

  • La retribuzione tende a essere più variabile, poiché esistono pochi standard
  • Passa molto tempo a educare gli altri sui punti di forza e di debolezza della tua nicchia

Nel complesso, se una carriera è la tua preoccupazione, non dovresti mai essere un pony, un mainstream o una nicchia.


2

Attualmente sto imparando Ruby utilizzandolo per risolvere i problemi di Project Euler , solo perché passo gran parte della mia giornata a programmare in C o PHP (e talvolta in C #) e voglio ampliare i miei orizzonti. Finora mi ha davvero aperto gli occhi su cosa si può fare. Anche se non lo uso mai per un lavoro "reale", credo che valga la pena dedicare del tempo a studiarlo.


+1 per il progetto euler. Ho fatto lo stesso mentre stavo imparando Python

1

Concordare con tutti i punti menzionati. Un'altra motivazione per l'apprendimento di una lingua di nicchia è la possibilità che la lingua diventerà un giorno molto popolare. In questa situazione, i tuoi primi investimenti nella lingua potrebbero portarti a lavorare su quadri influenti e su elementi della lingua che potrebbero essere molto richiesti in futuro.

Se la lingua diventa popolare, ne sarai già abile, e quindi sarai molto richiesto.

Bassa probabilità, potenzialmente alte ricompense.


2
Personalmente cercherò sempre di imparare concetti piuttosto che lingue ... spazio limitato al cervello se sai cosa intendo.
ChaosPandion,

1

Come altri hanno quasi detto, l'apprendimento di una lingua di nicchia solo perché è una lingua di nicchia non ha molto senso. Spesso, tuttavia, le lingue di nicchia esplorano un concetto più / più profondamente di quanto le lingue tradizionali possano permettersi o desiderare.

E a volte le lingue di nicchia sono state in giro molto, molto più a lungo di qualsiasi delle lingue principali - Smalltalk, Prolog e le lingue Lisp vengono in mente. Potrebbero non essere popolari, ma non stanno nemmeno scomparendo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.