Creazione di un nuovo linguaggio di scripting per l'esperienza di apprendimento? [chiuso]

13

La creazione di un linguaggio di scripting per la mia esperienza di apprendimento personale vale la pena?

Il motivo per cui chiedo è che ci sono già così tanti linguaggi di programmazione già disponibili, so che il mio non avrà mai alcun effettivo utilizzo se non quello di fornire una buona esperienza di apprendimento. Tuttavia, vedo gli inconvenienti con il solo tentativo di creare un linguaggio di scripting come esperienza di apprendimento: ci vorrà un sacco di tempo e sforzi in cui potrei fare qualcosa di più "produttivo".

La creazione di un linguaggio di programmazione (comprese le bozze di scrittura con lo scopo previsto, la sintassi, la filosofia, l'interprete, ecc.) merita il tempo, lo sforzo e l'esperienza di apprendimento? Oppure ci sono altri progetti di cui potrei beneficiare di più?

    
posta Ivan 17.08.2011 - 01:29
fonte

5 risposte

15

Crea le tue competenze e il tuo portfolio

Secondo me sarebbe un'ottima esperienza di apprendimento così come sarà:

  • ti costringono a guardare sotto il cofano ,
  • ti guida a scopri come vengono eseguite internamente le cose ,
  • incoraggia a guardare e confrontare altre implementazioni ,
  • mantieni le tue capacità algoritmiche fino alla velocità,
  • ti rende codice (e si spera documento ) molto, che non è un male,
  • ti fornisce un progetto significativo e una base di codice che puoi condividere online per tutti da vedere, per:
    • godimento personale e gratificazione ,
    • mostrare le tue abilità ai potenziali datori di lavoro,
    • comunicare e scambiare con i pari interessati alla stessa area,
    • potenzialmente lascia che cresca in qualcosa di più ...

Quindi lo vedo come prodotto, utile e nel complesso "ne vale la pena".

Guida introduttiva

Ora puoi usare approcci diversi, a seconda di quanto tempo hai pianificare la spesa per questo ...:

  • Se disponi di un periodo di tempo limitato, direi di immergerti e codificare la cosa.
  • Se hai un periodo di tempo più ampio, allora potresti davvero andare modo prolisso e scrivere specifiche, tutorial, manuale, ecc ...

Avvia Small

Preferisco raccomandarti di iniziare in piccolo . Nessuno lo ha mai fatto Lo so, ho scritto direttamente un linguaggio fantastico proprio così. inciampare e cadere, e fallire, e fallire e fallire . Allora ci riesci, a che funziona ma fa ancora schifo, quindi ricomincia da capo. E tu aggiungi nuove funzionalità e finalmente si sta raffreddando, ma all'improvviso tu renditi conto che c'è un concetto fondamentale che hai rovinato al inizio. Quindi ricomincia da capo ...

Mi sembra molto educativo.

Vai avanti (e condividi il link con noi).

Piccolo, come in "breve"

Ma di nuovo, ti consiglierei start small . Non aver paura se la gente dice che ci vorrà molto codice e tempo. Non necessariamente, se non miri a una lingua complicata. Alan Kay e altri Xerox PARC gli ingegneri presumibilmente hanno sviluppato una versione precedente di Smalltalk che si adattano a un singolo foglio di carta , come obiettivo per la tollezza (leggi Xerox PARC: Dealers of Lightning per i dettagli sulla storia del PARC ). Sembra un buono, educativo e approccio abbastanza limitato (purché non sacrifichi la leggibilità).

Piccolo, come in "vincolato"

Non è necessario supportare immediatamente un sistema di tipi avanzato, funzioni di ordine superiore e un mix di 42 diversi paradigmi. Potrebbe solo essere un linguaggio di espressione matematica.

Riutilizza (e fai sbirciare) la conoscenza degli altri

Potresti anche voler dare un'occhiata agli strumenti che sono usati per scrivere lingue da zero. Puoi ri-implementare tutto da solo, ma forse vale anche la pena guardare i lessici e il parser esistenti generatori, per esempio.

Ovviamente, potresti leggere la costruzione del compilatore in generale.

Ora, se modifichiamo la tua domanda "sarebbe LA PIÙ produttiva uso del tuo tempo? "diventa un problema completamente diverso:)

Ci sono tantissimi altri progetti di apprendimento che potresti affrontare, e quello si allenerà e mostrerà le tue abilità altrettanto bene, se non meglio. esso dipende da cosa vuoi mirare.

    
risposta data 17.08.2011 - 02:21
fonte
3

Dico di andare avanti.

L'implementazione di un linguaggio di programmazione copre una vasta gamma di argomenti e imparerai molto su come funzionano le cose sotto il cofano. Probabilmente vivrai una mezza dozzina di tentativi falliti, ma l'esperienza di apprendimento è inestimabile.

    
risposta data 17.08.2011 - 08:16
fonte
2

Progettare e implementare un linguaggio di programmazione (giocattolo ma completo) era in realtà uno degli esercizi (obbligatori?) in una delle mie classi CS della divisione superiore (sia la classe del compilatore che il sondaggio sul linguaggio di programmazione, non ricordo ...)

Quindi almeno un professore di CS lo ha pensato.

Finirai con un apprezzamento molto migliore di tutti quei "capricci" che altre lingue hanno.

    
risposta data 17.08.2011 - 06:13
fonte
1

Ci vorrebbe un po 'di tempo per farlo. Hai intenzione di mantenerlo?

Would creating a programming language (including writing drafts of its intended purpose, syntax, philosophy, interpreter, etc) be worth the time, effort and learning experience? Or are there other projects I could benefit more from?

Suppongo che il tuo stato finanziario non sia infinito, quindi direi che non ne vale la pena. Puoi passare il tuo tempo ad altri progetti utili che possono farti guadagnare soldi. Tieni presente che questa potrebbe non essere la risposta che stai cercando, ma da un punto di vista logico, direi che il tuo linguaggio di programmazione potrebbe non essere il progetto giusto al momento. Lo prenderei in considerazione se fossi un informatico in pensione e sentissi la necessità di contribuire al settore. Sembra che tu abbia una strong passione per la programmazione, ed è grandioso. Ma, costruendo un intero nuovo linguaggio di scripting? Quello sarà un progetto estremamente lungo. In quel momento avresti potuto creare molte applicazioni che puoi inserire nel tuo portfolio. Penso che la domanda sia: ho il tempo e / o una priorità aperta nella mia vita che mi consentirà di creare un nuovo linguaggio di programmazione da zero?

    
risposta data 17.08.2011 - 01:54
fonte
-1

Il mio consiglio è

Non reinventare la ruota

The inspiration for this idiomatic metaphor lies in the fact that the wheel is the archetype of human ingenuity, both by virtue of the added power and flexibility it affords its users, and also in the ancient origins which allow it to underlie much, if not all, of modern technology. As it has already been invented, and is not considered to have any operational flaws, an attempt to reinvent it would be pointless and add no value to the object, and would be a waste of time, diverting the investigator's resources from possibly more worthy goals which his or her skills could advance more substantially.

Dovresti chiederti:

  • Perché è necessario creare uno script? Lo script esistente non è abbastanza buono?
  • La manterrai e la pubblichi e sei sicuro che il tuo script verrà utilizzato da altri programmatori? Se la tua risposta è no, non farlo.

Capisco che tu voglia avere più esperienza di apprendimento e per questo motivo personalmente penso che creare un framework ti darà più esperienza di apprendimento e con il bonus che tu / la tua squadra / comunità potete riutilizzare in seguito, rispetto alla creazione di uno script.

E questo fumetto di xkcd è un po 'rilevante, basta cambiare "standard" in "lingua" anche:

    
risposta data 17.08.2011 - 05:25
fonte

Leggi altre domande sui tag