Vale la pena di imparare le lingue sperimentali? [chiuso]


25

Sono un giovane programmatore che desidera lavorare sul campo un giorno come programmatore. Conosco Java, VB.NET e C #. Voglio imparare una nuova lingua (come programmatore, so che è utile estendere ciò che so - imparare lingue che ti fanno pensare in modo diverso). Ho dato un'occhiata online per vedere quali lingue erano comuni. Tutti conoscono C e C ++ (anche quei Babbani che sanno così poco dei computer in generale), quindi ho pensato, forse dovrei spingere per C.

C e C ++ sono belli ma sono vecchi. Cose come Haskell e Forth (ecc. Ecc. Ecc.) Sono vecchie e hanno perso la loro popolarità. Ho paura di imparare il C (o anche il C ++) per lo stesso motivo. Anche Java è piuttosto vecchio ed è lento perché è gestito da JVM e non compilato in codice nativo.

Sono stato uno sviluppatore di Windows per un bel po '. Di recente ho iniziato a utilizzare Java, ma solo perché era più versatile e espandibile in altri luoghi. Il problema è che non sembra un linguaggio molto utilizzabile per questi motivi:

  • Lo scopo più utilizzato è per le applicazioni web e le app per telefoni cellulari (in particolare Android)
  • Per quanto riguarda i prodotti reali realizzati con esso, le uniche cose che vengono in mente sono Netbeans, Eclipse (evviva per creare e IDE con il linguaggio per cui l'IDE è - è come creare una pagina web per scrivere HTML / CSS / Javascript) e Minecraft che sembra divertente ma lento e bipolare per quanto riguarda le specifiche del computer. supporto.
  • A parte questo è usato per i server ma diamine - non voglio solo creare / configurare server .

I linguaggi .NET sono belli, tuttavia:

  • La gente ride se cito anche VB.NET o C # in una conversazione seria.
  • Non è multipiattaforma se non si utilizza MONO (che è ancora in fase di sviluppo e ha alcuni miglioramenti da apportare).
  • Manca di roba di basso livello perché, come Java con la JVM, è gestita / gestita dal CLR.

Il mio primo pensiero è stato imparare qualcosa come C e poi usarlo per fare il trampolino in C ++ (solo per essere sicuro di avere una conoscenza / base forte), ma come ho detto prima, sta diventando sempre più vecchio di minuto in minuto.


Cosa ho guardato dentro

Fantom sembra carino. È come un bel intermediario tra le mie due lingue preferite e persino mi permette di pubblicare tra le due in modo intercambiabile, ma, a differenza di quello che voglio, si compila in CLR o JVM (a seconda di cosa lo pubblichi) invece che essere una compilazione completa .

Anche D sembra carino. Sembra come un linguaggio molto usabile e damultiplefonti sembra essere in realtà meglio di C / C ++. Vorrei saltare subito, ma non sono ancora sicuro del suo successo perché ovviamente non è molto mainstream a questo punto.

Ci sono un paio di altri che sembravano piuttosto carini e focalizzati su altre cose come Opa con lo sviluppo web e Go by GOOGLE.


La mia domanda

Vale la pena imparare queste lingue "sperimentali"? Ho letto altre domande che dicono che se non stai imparando costantemente le lingue e aperto a tutte le lingue che non sei nella giusta mentalità per la programmazione. Lo capisco e potrei ancora non capirlo, ma in verità, se una lingua non diventerà mainstream, dovrei passare il tempo a imparare qualcos'altro? Non voglio imparare linguaggi di programmazione vecchi (o che presto diventeranno vecchi). So che molte persone vedono questo come qualcosa di importante, * ma qualcuno di voi avrebbe mai considerato (supponendo di non saperlo già) FORTRAN? Il mio obiettivo è rimanere aggiornato per assicurarmi di avere successo in futuro.


disconoscimento

Sì, sono un giovane programmatore, quindi probabilmente ho fatto molte dichiarazioni ingenue nella mia domanda. Sentiti libero di correggermi su QUALCOSA! Devo iniziare ad imparare da qualche parte, quindi sono sicuro che molte delle mie conoscenze sono abbastanza imprecise da aver causato dichiarazioni errate o difetti nel mio pensiero. Si prega di lasciare tutti i sentimenti che hai nei commenti.


I risultati...

Sono davvero sorpreso dalle risposte sorprendenti, la maggior parte delle quali sottolinea così bene i miei fraintendimenti e giudizi errati. Ho imparato molto da questo e sono entusiasta di utilizzare tutto ciò che ho imparato! Probabilmente inizierò ad imparare l'Haskell in seguito (la lingua non così vecchia, anche se con più di 20 anni - hahaha ) e poi inizierò a cercare altre opzioni intorno a me.

Grazie


10
"impara tutti e cinque i Python, C / C ++, Java, Perl e LISP" (Eric Raymond, Come diventare un hacker -> Competenze di hacking di base -> 1. Impara a programmare. )
moscerino

7
Nota che essere semplicemente "vecchi" non significa automaticamente "cattivo" per impostazione predefinita. Alcune delle programmazioni più fantastiche finora sono state fatte sul C64 30 anni fa.

8
FWIW utilizza quasi tutte le lingue - se qualcuno ride di te per aver usato quasi tutte le lingue (Java è lento, .Net è per le femmine M $, Haskell non è pratico, C ++ è troppo vecchio ecc.) Ridi di nuovo e racconta loro dell'uso lo strumento giusto per il lavoro;)
Martin

6
Da dove hai preso "Haskell e ... hanno perso la loro popolarità"?
lasciato circa il

13
Per un giovane programmatore, hai troppe ipotesi. Sbarazzati di loro, ti stanno annebbiando la mente.
Matthieu M.

Risposte:


29

Il problema dell'apprendimento di lingue drasticamente diverse non riguarda l'apprendimento delle lingue, ma l'esposizione a diversi approcci ai problemi. Strumenti per la cassetta degli attrezzi per così dire.

Una cosa da notare è che Haskell non è particolarmente vecchio ed è in realtà un ottimo candidato per qualcuno che abbia familiarità con le lingue tradizionali. Anche una lingua molto antica come Lisp è molto utile da imparare a causa della sua influenza sulle cose.

Inoltre, Java e .Net non vengono interpretati e mi aspetto che tu stia facendo alcune ipotesi errate sulla base di tale etichettatura errata.


Accidenti, scusa per il problema interpretato. Lì mischiavo due diverse dichiarazioni ossimoroniche. L'ho risolto nella domanda stessa.
Freesnöw, l'

19
Bene, Haskell è più vecchio, ad esempio, di Java, però. Ma sì, ciò non significa che sia obsoleto. In effetti, il suo sistema di tipi è ancora circa 2 decenni avanti rispetto a Java.
Jörg W Mittag,

5
@ JörgWMittag: penso che ciò dica di più su Java che su Haskell.
Tikhon Jelvis,

1
Io programma solo in Haskell e Java ... ma per essere onesti, nessun linguaggio tradizionale ha un sistema di tipi simile a quello di Haskell. (E devo dire, OP ..._ molte cose in più rispetto a ciò che menzioni viene eseguito su Java.)
Louis Wasserman,

1
Ormai Haskell ha più di 20 anni e lo standard Haskell è vecchio quanto lo standard C ++ (entrambi del 1998).
Fredoverflow,

23

Mantieniti in forma: esercitati regolarmente

La pratica rende perfetti.

Più codice scrivi e leggi , più ti avvicini all'illuminazione / padronanza come programmatore / sviluppatore / ingegnere software / guru / ninja / artigiano / hacker / parola d'ordine scelta. Non solo codificando e leggendo di più, ma anche provando i nostri nuovi modi di scrivere il codice, più aperti (si spera) rimani.

Lettura consigliata:

Informazioni sui nuovi paradigmi e funzionalità linguistiche

Forse non sarai in grado di tradurre ciò che usi nel nuovissimo Super-Language-X nella tua Enterprise-Language-Y, ma forse sarai in grado di riconoscere quando avrebbe potuto essere adatto. Forse sarai in grado di sapere quando integrare una diversa tecnologia o stack nel tuo progetto per soddisfare uno scopo particolare. O forse saprai come utilizzare le funzionalità del linguaggio Y per emulare la funzionalità interessante del linguaggio X e riformattare il codice per trarne vantaggio (e potenzialmente illuminare altri colleghi lungo il percorso).

Ad esempio, avresti potuto scoprire principi FP interessanti e volerli adattare a Java, che probabilmente non è FP di progettazione .

Lettura consigliata:

Diventa un tuttofare ... Maestro di alcuni?

Non sai quale lingua diventerà fondamentale quando si trova in quella fase "sperimentale", quindi non dovresti preoccuparti troppo di scommettere su uno di essi. È probabile che altre persone facciano la stessa scommessa e saranno incuriosite quando vedranno apparire sul tuo curriculum. Aggiungi uno strumento alla cintura. Nel nostro caso, non c'è molto problema con quanto pesa alla fine.

Certo, non puoi diventare un maestro di tutti i mestieri. Ma potresti essere un maestro di uno e abbastanza bravo nel resto. Stai imparando un mestiere e il nostro è sfaccettato. Fare esercizi regolari, partecipare a seminari, prendere un libro, scrivere un nuovo progetto per animali domestici e altre cose simili è il nostro modo di tenere il passo con il ritmo sempre crescente dei cambiamenti nel nostro campo.

Lettura consigliata:

Resta adattabile

Se non impari ad adattarti, è difficile farlo quando ne hai bisogno. Imparando costantemente cose nuove, ogni volta migliora sempre di più raccogliendo nuove cose (purché non ti limiti a sfide molto simili).

È come la canzone degli Oasis "Stay Young" : Stay young and invincible .

Se riesci ad adattarti, puoi sopravvivere.

Lettura consigliata:

Resta visibile: comprendi il radar dell'agenzia di reclutamento

Usano parole chiave e tecnologie come caselle di controllo. Li usiamo come vasi di miele per reclutatori senza cervello.

Funziona in entrambi i modi. Finché conosci davvero le tue cose, allora avere un sacco di cose sul tuo curriculum è buono. Mostra la tua adattabilità e ampiezza di conoscenza. Inoltre, se conosci davvero alcuni di questi e sei decente in alcuni altri, ti consente di modulare diverse versioni del tuo curriculum per posizioni e lavori diversi.


Altri argomenti utili di SE


Se hai intenzione di leggere Beating the Average di Paul Graham (o qualsiasi altra cosa scriva sull'argomento della programmazione, del resto) prendilo con un pizzico di sale. Molte delle cose che ha da dire sulla pratica della programmazione sono del 50% giuste e del 50% pericolosamente sbagliate.
Mason Wheeler,

@MasonWheeler: È controverso, come molte cose che puoi scoprire da "giganti" noti nel settore, auto-acclamati o meno. Molte persone disapproverebbero anche gli scritti di Zed Shaw, come altri farebbero di Norvig. Tutto deve essere affrontato con una mente critica: lo prendo come un dato per qualsiasi cosa, e presumo (la speranza) così fanno le persone a questo livello. Molti scrittori presenteranno argomenti alla luce di una situazione specifica, non adatta a tutti. In effetti, lo vedi qui ogni giorno anche nelle risposte, ma con la forza "popolare" saranno venerati come risposte "migliori". Tuttavia, è informativo.
Haylem,

8

Al fine di estendere la risposta di Telastyn, si tratta in effetti dell'esposizione a diversi paradigmi di programmazione . Ad esempio, non si tratta davvero di imparare la programmazione logica, ma di:

  • imparare a imparare (pratica sull'apprendimento di nuove competenze)
  • allenare il cervello a pensare in modi nuovi
  • forse ottenere alcune conoscenze meno popolari (o addirittura esoteriche) che poche persone hanno e potrebbero tornare utili
    • o almeno impressionali con le tue conoscenze tecniche :)
  • e, naturalmente, fornisce preziose informazioni tecniche. Perché C # è più popolare di D? Il C ++ può fare tutto ciò che può fare D? D può fare di più o è più simile allo zucchero sintattico?

http://skilldrick.co.uk/2011/02/why-you-should-learn-brainfuck-or-learn-you-a-brainfuck-for-great-good/

Un altro buon motivo per imparare brainf * ck è capire quanto può essere basilare un linguaggio di programmazione completo di Turing. Un argomento comune quando i programmatori confrontano le lingue è "beh, sono tutti completi di Turing", il che significa che tutto ciò che puoi fare in una lingua puoi farlo in un'altra. Dopo aver appreso brainf * ck, capirai quanto può essere difficile usare un linguaggio completo di Turing e come tale argomento non contiene acqua.

http://norvig.com/21-days.html (Peter Norvig)

Impara almeno una mezza dozzina di linguaggi di programmazione. Includi un linguaggio che supporti le astrazioni di classe (come Java o C ++), uno che supporti l'astrazione funzionale (come Lisp o ML), uno che supporti l'astrazione sintattica (come Lisp), uno che supporti le specifiche dichiarative (come i modelli Prolog o C ++), uno che supporta le coroutine (come Icona o Schema) e una che supporta il parallelismo (come Sisal).


7

Il mio primo pensiero è stato imparare qualcosa come C e poi usarlo per fare il trampolino in C ++ (solo per essere sicuro di avere una conoscenza / base forte), ma come ho detto prima, sta diventando sempre più vecchio di minuto in minuto.

Bene, questo è un gigantesco mucchio di fallacia. Le persone che conoscono la C fanno fatica a imparare il C ++, perché praticamente tutto ciò che pensano di sapere su come usare la lingua è un enorme mucchio di errori. Non esiste praticamente alcun C idiomatico che sia anche in remoto C ++ buono. Stai meglio semplicemente imparando C ++ da zero. Le persone come me che si offrono volontariamente il loro tempo per aiutare altre persone a imparare il C ++ ne spendono una parte enorme nel tentativo di insegnare alle persone a abbandonare le loro abitudini in C.

Per quanto riguarda la popolarità, bene, il C ++ sta vivendo un po 'di riemersione di recente. Le persone hanno notato che in realtà, le prestazioni non importa, un sacco, e non si può ottenere via con esecuzione ogni componente come gestito uno, e Moderna C ++ (in particolare con C ++ 11) è assolutamente niente come la spazzatura C hanno pensato che fosse e non è poi così male. Non sta davvero invecchiando. Sta diventando più recente. Il nuovo standard è un vasto aggiornamento e non ci sono linguaggi sostitutivi adatti, né attuali né in preparazione, per molte delle aree in cui è attualmente utilizzato il C ++. Ciò non è da ultimo perché non esistono linguaggi con interoperabilità C ++ decente (persino C ++ stesso), rendendo difficile la migrazione da basi di codice C ++ esistenti.

La gente ride se cito anche VB.NET o C # in una conversazione seria.

Ottieni nuove persone. AFAIK, VB.NET non esiste davvero per nessun motivo se non quello di aiutare a migrare lontano da VB6 e non è davvero un obiettivo degno in quanto tale, ma C # è un vero linguaggio. È un po 'come Java, tranne per il fatto che hanno aggiunto funzionalità di linguaggio reale e alcune belle librerie. C # è un linguaggio molto popolare, ben supportato con ottimi strumenti di VS, il che non succhiano che male, ed è un solido, se non eccezionale, cosa da imparare.

Non è multipiattaforma se non si utilizza MONO (che è ancora in fase di sviluppo e ha alcuni miglioramenti da apportare).

MONO è piuttosto stabile. Inoltre, in definitiva, il 90% dei consumatori desktop (o era l'80%?) Esegue Windows in questo momento. Se svilupperai un'applicazione desktop, è una domanda aperta se gli utenti non Windows valgono il tempo di supportare, anche se usi un linguaggio cross-plat.

Alla fine, potresti imparare molto dall'apprendimento di una lingua come C ++ o Haskell, che si concentra su una forte tecnologia di compilazione piuttosto che su un enorme runtime.

Basta non scegliere PHP. L'unica cosa che puoi imparare da questo è come non costruire una lingua.


1
Una percentuale significativa delle recenti aggiunte allo standard C ++ esiste solo - come una percentuale significativa di aggiunte in passato - per correggere i difetti C ++ esistenti. I riferimenti ai valori, ad esempio, aggiungono un sacco di ulteriore complessità per aggirare un mucchio di problemi di prestazioni e complessità relativi ai costruttori di copie, che esistono solo perché C ++ consente agli oggetti di essere usati come tipi di valore, che è completamente sbagliato al 100% e c'è un buon motivo per cui nessun'altra lingua OO lo fa.
Mason Wheeler,

@MasonWheeler Almeno C #, D ed Eiffel consentono gli oggetti come tipi di valore. E RAII è così bello per la programmazione di sistemi!
Fredoverflow,

@MasonWheeler: i riferimenti di valore consentono anche l'inoltro perfetto e i tipi di solo spostamento. Le prestazioni sono state solo una delle tre principali cause della loro introduzione. Gli oggetti con valore tipizzato vanno bene. Inoltre, ovviamente, puoi scrivere i tuoi oggetti digitati come riferimento in C ++ come preferisci.
DeadMG

Inoltre, è divertente come, nonostante tutti questi problemi di prestazioni, il C ++ fosse ancora il linguaggio più veloce in circolazione.
DeadMG

1
@FredOverflow: in C #, tutti gli oggetti sono tipi di riferimento. Le strutture possono essere tipi di valore, ma gli oggetti no, e questo è per un'ottima ragione: se gli oggetti vengono usati come tipi di valore, si lancia un'enorme chiave inglese in eredità e polimorfismo e si finisce per usare tutti i tipi di brutti hack come i costruttori di copie, in cui l'assegnazione (o il passaggio) di un oggetto discendente a una variabile di tipo genitore non assegna effettivamente quell'oggetto. Rovina completamente la sostituzione di Liskov, che è in primo luogo il punto di usare OOP. È un'idea orribile e sono felice che non abbia mai preso piede.
Mason Wheeler,

6

Un paio di commenti su ciò che hai detto ...

1) Ogni programmatore dovrebbe imparare C, anche se è vecchio. È un'ottima lingua per avvicinarsi alla macchina. Dai consigli di Joel agli studenti CS ...

Impara C prima di laurearti

Seconda parte: C. Nota che non ho detto C ++. Sebbene il C stia diventando sempre più raro, è ancora la lingua franca dei programmatori che lavorano. È il linguaggio che usano per comunicare tra loro e, cosa più importante, è molto più vicino alla macchina rispetto alle lingue "moderne" che ti verrà insegnato al college come ML, Java, Python, qualunque spazzatura alla moda insegnino loro giorni. Devi trascorrere almeno un semestre per avvicinarti alla macchina o non sarai mai in grado di creare codice efficiente in lingue di livello superiore. Non sarai mai in grado di lavorare su compilatori e sistemi operativi, che sono alcuni dei migliori lavori di programmazione in circolazione. Non ti fiderai mai di creare architetture per progetti su larga scala. Non mi interessa quanto sai di continuazioni e chiusure e gestione delle eccezioni: se non riesci a spiegare perché while (* s ++ = * t ++); copia una stringa, o se questa non è la cosa più naturale del mondo per te, beh, stai programmando in base alla superstizione, per quanto mi riguarda: un medico che non conosce l'anatomia di base, passando prescrizioni basate su ciò che la ragazza delle vendite farmaceutiche avrebbe detto che avrebbe funzionato.

2) Le lingue possono essere utili per l'apprendimento delle mentalità, anche se non sono comunemente utilizzate. Impara Schema (o LISP) per capire la programmazione funzionale, anche se non è di tendenza. Da un altro post su questo forum .

Congratulazioni, mi sembra che tu possa andare in una delle poche scuole rimaste che cerca effettivamente di insegnare informatica. Lo schema di apprendimento come prima lingua è (IMO) un'ottima cosa. No, non è così commerciale come molti altri, ma è un linguaggio eccellente per l'apprendimento della vera essenza dell'informatica. - Jerry Coffin, 20 ottobre 11 alle 3:32

C, C ++ e Java sono sottoprodotti dell'industria dell'informatica. Tutte le radici dello schema sono nell'informatica. Le lingue in uso commerciale hanno tanto a che fare con l'informatica quanto McDonalds ha a che fare con la cucina. - JasonTrue, 20 ottobre 11 alle 5:30

Questi ragazzi hanno ragione; stai confondendo la programmazione informatica con l'informatica - come diceva Dijkstra, è come confondere la costruzione del telescopio con l'astronomia. Lo schema riguarda la migliore lingua che esiste per l'apprendimento dei concetti di base nell'informatica. Se ti aspetti che prendere una laurea in informatica sia imparare a scrivere app line-of-business in Java, potresti essere iscritto a un programma sbagliato. - Eric Lippert, 20 ottobre 11 alle 7:40

Quasi tutti gli sviluppatori che conosco hanno imparato il C / C ++ da soli. Non hai bisogno di università per quello. - mouviciel, 20 ottobre 11 alle 7:48

Per la stessa ragione per cui i corsi di zoologia insegnano biologia evolutiva, anatomia e comportamento animale piuttosto che come eliminare una stalla per elefanti - jk. 20 ottobre 11 alle 7:58

Ora, nonostante abbia attaccato la tua premessa originale, penso che dovresti essere lodato per la tua curiosità. Troppe persone diventano obsolete a causa della mancanza di curiosità. Sfruttare il tuo sviluppo personale è un grande segno che svilupperai bene. Le persone che apprendono di più sono quelle disposte a continuare a chiedere come funzionano le cose.


1
"Quasi tutti gli sviluppatori che conosco hanno imparato il C / C ++ da soli. Non hai bisogno dell'università per questo.": Lo stesso qui. Alla mia università ci hanno dato incarichi in C, ma non ci hanno dato un corso in C. Si aspettavano solo che noi studenti di informatica andassimo a prendere un libro e ad impararlo.
Giorgio,

1
Dover imparare C è piuttosto una tortura. Le mie simpatie.
DeadMG

2
In realtà l'apprendimento del C è stata la parte facile, la vera tortura è iniziata quando abbiamo dovuto passare al C ++. ;-)
Giorgio

3

QUALSIASI lingua che impari cambierà nei prossimi 5 anni. Non si tratta di imparare una lingua che pensi possa essere in giro da un po ', ma piuttosto di imparare COME imparare. Una maggiore esposizione all'apprendimento della lingua e al processo di apprendimento di quella lingua ti aiuteranno enormemente a lungo termine!

L'ultima società per cui ho lavorato ha usato il proprio linguaggio interno. Era simile a Visual Basic ma non è lo stesso. Solo per il fatto che conoscevo altre lingue, sono stato in grado di imparare la loro lingua molto più velocemente rispetto agli altri dipendenti.

Ho imparato il giapponese dopo aver appreso C ++, BASIC, Pascal e posso dire che l'apprendimento di una lingua informatica e di una lingua straniera richiede le stesse competenze. Tali abilità possono essere perse o affinate. Se hai il disco, continua e impara nuove lingue!

(ps. per quanto riguarda l'apprendimento di FORTRAN o assembly, penso che sia utile prendere almeno un semestre delle lingue più vecchie. Ti fa pensare a cose che dai per scontate nelle nuove lingue, cose come bandiere, allocazione di memoria e simili .)


3

Faresti meglio a imparare quante più "vecchie" lingue, se mai vuoi diventare un programmatore. Inizia con Lisp, ottieni una buona conoscenza di Forth, presta molta attenzione all'evoluzione di tutte le lingue di Wirth, l'evoluzione di Fortran, l'ascesa e la caduta di Prolog, intrufolati nell'ecosistema segreto di Ada, ottieni la tua arma segreta dall'apprendimento di Occam. Inseguire il "mainstream" è la cosa più stupida che un aspirante programmatore possa mai fare.


+1: sono totalmente d'accordo. Molte idee interessanti che ho avuto durante la sperimentazione di linguaggi meno tradizionali come Haskell, Scheme, Scala, SML, ecc.
Giorgio

2

Sono d'accordo con te sull'esposizione delle cose. Anche se conosco Java, C, C ++, Javascript, Python, Ruby e un po 'di .NET (principalmente perché odio qualsiasi cosa M $ <- opinione personale) dovrò dire che amo davvero programmare in D.

D ha un set di funzionalità davvero bello (la maggior parte di esse è implementata in C ++ / Java (linguaggi che hanno astrazioni di classe) ecc.) Ma l'unica cosa che adoro di più è generics e delegati (facilita l'implementazione di callback). A parte questo si ottiene una sintassi molto più semplice da gestire rispetto al C ++. D ha un Garbage Collector davvero efficiente, sebbene tu possa scegliere di gestire tu stesso la memoria (specialmente quando si interfaccia con i moduli C / C ++). Sebbene D non abbia molti moduli forniti dagli utenti che non dovrebbero costituire una barriera per l'ingresso. È possibile interfacciarsi facilmente con le librerie C / C ++ esistenti (che sono molte) rendendolo così ridondante per necessità di moduli.

D ha una propria libreria standard (Phobos) che serve alla necessità di tutti i problemi di programmazione comuni. C'è anche una libreria alternativa ( Tango-D2 ) che puoi usare con Phobos o da sola. Se sei uno sviluppatore web e hai bisogno di scrivere un server basato su eventi, Tango ha una buona astrazione Selector (tango.io.Selector per solo select (), poll (), epoll ()). Ho trovato che funziona anche meglio di libev.


Non che disapproverei l'apprendimento di D, ma per qualcuno che conosce già staticamente, OO e linguaggi procedurali non di basso livello vale certamente la pena imparare di più un linguaggio che enfatizza un diverso paradigma o è un po 'più vicino al metal. Non c'è neanche molto da sperimentare su D.
lasciato circa il

1
Concordato. Pensavo che la questione dei PO fosse incentrata sul fatto che "sperimentale" fosse qualcosa che non è ancora stabile / che supporta il supporto aziendale / che non è mainstream. E anche se scegli "sperimentale" come implementazione di paradigmi diversi, credo che ci siano solo pochi paradigmi là fuori. E la maggior parte delle lingue implementa l'una o l'altra. Quindi arriviamo a quale lingua è migliore / più veloce / più facile da usare / migliore per il lavoro da svolgere. Questi fattori differiscono da programmatore a programmatore.
Shripad Krishna,

1

Le lingue sono sviluppate per risolvere problemi in una sorta di dominio (almeno all'inizio). Se non hai affrontato problemi che i tuoi strumenti non sono in grado di risolvere in un modo a tuo agio, martellerai una tavola di legno in attesa di diventare un falegname. Cerca di capire il tipo di problemi che le lingue stanno cercando di risolvere. L'unica differenza tra un linguaggio "sperimentale" e un linguaggio nuovo / alla moda è il denaro che lo sostiene, ad esempio Vai da google e Dart. Se sono stati sviluppati nel mio cortile, probabilmente moriranno in qualche forum e basta. Sopravvivono solo se sono bravi a spiegare i problemi che stanno cercando di risolvere. O viceversa, come Perl e C ++, che sono bravi ad assorbire modi di risolvere i problemi per rimanere in vita. E potrei suggerire di imparare Lua, è ' è un linguaggio creato per essere incorporato nei programmi, è molto veloce e leggero, che ti fornirà strumenti per risolvere i problemi grandi o piccoli che alcuni linguaggi come Java non sono in grado di risolvere in modo semplice. Prendendo l'esempio del giapponese, se solo impari la sintassi, la grammatica e gli alfabeti, ignorando la cultura, non capirai mai perché è così complicato e alla fine te ne dimenticherai. Non sta risolvendo nulla per te.


1

L'apprendimento di più lingue diverse ti darà una visione più ampia della programmazione. L'enfasi su "diversi" - ad esempio l'apprendimento di C # e Java non ti insegnerà molto di più che imparare solo uno di essi. Ma imparare C # o Java e un linguaggio funzionale (per esempio) lo farà.

Detto questo, come giovane programmatore, penso che otterrai molto più valore conoscendo una lingua in modo molto solido, prima di rimbalzare guardando diversi tipi di lingua. Non è del tutto chiaro dalla tua domanda quanto conosci Java, VB.NET e C #. Sei sicuro che se avessi attaccato un progetto usando una delle lingue di cui sopra, il tuo collo di bottiglia sarebbe il progetto stesso, non la tua conoscenza della lingua? Se trascorressi più tempo a chiederti "come posso fare questo in lingua ?" di quanto spenderesti pensando al problema reale, quindi probabilmente avrai bisogno di più attenzione su una delle tue lingue attuali.

E personalmente penso che dovresti adottare un approccio pragmatico per decidere quale sia. Java è utilizzato per le app Android? Fantastico, se creare app per Android è qualcosa che ti interessa. In caso contrario non importa. C # non è perfetto per lo sviluppo non Windows? Cattive notizie se sei interessato a sviluppare per Linux. Non importa se non lo sei. E così via.

E le lingue "sperimentali" che hai citato? Pragmaticamente, saranno inadeguati quando si tratta di lavorare con altre persone - probabilmente troverai migliaia di persone che conoscono C # o Java per chiunque conosca Fantom. Per i progetti personali, questo non è necessariamente un problema. Se il tuo obiettivo è aumentare la tua occupabilità, lo è.


1

Si potrebbe dire che imparare a programmare in una lingua come Postscript o APL è senza dubbio una perdita di tempo principalmente perché le probabilità che tu usi mai quella conoscenza si avvicinano allo zero. Allo stesso modo, potresti sostenere che Ruby e Python sono una perdita di tempo se non hai mai intenzione di usarli per qualcosa.

Ma poche persone direbbero che imparare Lisp è uno spreco, anche se hai la stessa probabilità di dover scrivere Lisp come Postscript; ma imparare Lisp ti insegna a pensare in modo diverso al tuo problema (si spera), motivo per cui la maggior parte dei programmatori ti dirà che vale la pena.

Tuttavia, non ho mai evitato di imparare una nuova lingua poiché il tempo necessario per investire è in realtà solo un'ora o quattro. E usa per un linguaggio come Lua che compare nei luoghi più insoliti , e non li riconosceresti mai se non avessi passato qualche ora a scorrere gli esempi.

Quando vedi una nuova lingua, leggi un po 'su cosa è utile. Se è una nicchia che le tue lingue preferite non coprono troppo bene, prenditi un giorno per imparare le basi. È sicuramente meglio trascorrere del tempo che guardare la stagione 17 di The Bachelor o comunque potresti perdere tempo.In questo modo, se ne hai bisogno, può venire in mente e sai dove saperne di più.

Personalmente consiglierei davvero di cercare su Go. L'ho usato per scrivere programmi a pagina singola che funzionano meglio di quello che richiederebbe tre giorni e 13 librerie di terze parti in C o C ++ e non sarebbe nemmeno possibile in Python, C #, Ruby, ecc. È stato progettato da persone che conoscono davvero le loro cose.


-1

Scegli quelli con diversi tipi. Raggruppali per caratteristiche e scegline uno in ciascun gruppo. Se vuoi farlo professionalmente, scegline uno che viene usato (quindi C ++ su D per un linguaggio compilato tipicamente statico con metaprogrammazione di template).

Povero D, è un buon linguaggio, ma manca dell'app killer che aveva C ++: compatibilità all'indietro quasi completa con il linguaggio # 1 del tempo (il caso C per C ++). È bello, ma quel piccolo fatto importante probabilmente relegherà D allo status di baraccone nei libri di storia.


-2

C può essere vecchio, ma è ancora molto potente e interessante, imparare C ti aiuterà molto nel tuo futuro di "programmazione".

Java non è lento, chiunque ti abbia detto che non sa di cosa sta parlando, Java ti imparerà molto su OOP

Perché non inizi semplicemente con Python e poi vai per C o qualcos'altro,


C è anche la lingua franca dei microcontrollori (quando hai solo 4K, non puoi permetterti un runtime 8K). Solo in quello spazio, C ha davanti a sé un'altra buona decade di uso attivo.
TMN,

Java era lento - ricordo che era meno di un demone della velocità nei suoi primi due anni. Alcune persone pensano che le prestazioni non siano mai state migliorate.
MetalMikester
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.