Domanda

Bene, dopo aver scritto a lungo programmi .net in C #, ho iniziato a sentirmi arrabbiato e frustrato per tutto quel cestino sintattico che viene fornito con linguaggi tipicamente statici. Ora voglio passare a lingue tipizzate dinamicamente, che sfrutta la CLI. Quindi ho cercato un po 'in giro e non mi piaceva quello che vedevo. Ho cercato per la prima volta IronPython. Ma il progetto sembra disorganizzato, ma non sembra affatto buono. Poi ho sentito parlare di Boo. Mi è piaciuto boo's, l'ideale e tutto il resto, ma sembra che il progetto sia bloccato. Poi ho sentito parlare di IronRuby, ma il progetto è ancora in fase beta, quindi ho deciso di aspettare fino a quando non sarà più maturo.

Quindi, dato che non sono riuscito a trovare un buon linguaggio dinamico compatibile con CLR, vi chiedo ragazzi cosa usereste?

Da quando le persone hanno iniziato a chiedere qual è il motivo per cui non si è scelto IronPython. Bene, il motivo è che, come ho detto prima, sembra disorganizzato. Perché?

1- La homepage punta a un'altra pagina su codeplex, la homepage dovrebbe essere pulita e indicare i vantaggi di IronPython, prendere la pagina IronRuby come esempio http://www.ironruby.net/ è quello che nasconde all'utente materiale che sviluppa la lingua (anche se l'utente deve accedere allo svn di IronRuby prima di usarlo). Che tipo di problemi IPython stava cercando di aggiungere quando è stato creato. C'è una pagina con quel tipo di informazioni? Bene, la pagina è lì, ma è nascosta nella "Pagina Ulteriori informazioni" tra un mucchio di collegamenti privi di significato agli articoli. Sulla pagina di Boo è ben visibile chiamato Manifesto http://boo.codehaus.org/BooManifesto.pdf .

C'è di più, ma la sensazione che ho è che IPython sia solo un interprete casalingo, nonostante la qualità che può effettivamente avere. Ho sentito che era più sicuro scaricare Boo e usare IronPython (ma non preoccupavo che Microsoft avesse scaricato anche IPython).

Riguardo a Duck-Typing e alla tipizzazione statica di Boo, entrambi sembrano funzionare bene per me.

È stato utile?

Soluzione

Userei ancora Boo . Non sono sicuro del motivo per cui ritieni che Boo sia stato fermato. Lo sviluppo a volte sembra lento, ma al momento ci sono più persone che stanno lavorando su correzioni di bug, come dimostrato da questo elenco di problemi risolti di recente (bug) .

Per chi non ha familiarità con Boo, è molto simile a Python, ma include cose che Python non ha (come interpolazione di stringhe e macro sintattiche ). Puoi compilare programmi Boo o utilizzare Boo tramite " Boo Interactive Shell " booish .

A proposito, non mi piaceva IronPython neanche quando l'ho visto un paio di anni fa. A me sembrava una porta diritta di Python per la CLI, ma per quanto ne so non includeva nuove funzionalità richieste dallo sviluppo tipico di .NET.

EDIT : IronPython sembra aver fatto progressi da quando l'ho visto per la prima volta (grazie per Curt che lo ha sottolineato). Tuttavia non mi sono preoccupato di guardare di nuovo IronPython da quando ho trovato Boo.

Altri suggerimenti

In termini di usabilità pratica IronPython sarà il tuo meglio scommetti subito.

Perché le persone suggeriscono Boo? È un linguaggio tipicamente statico, che non è quello che questa domanda chiede. Sì, lo so che ha una dattilografia opzionale, ma in realtà se le informazioni relative a Boo sono accettabili per l'autore della domanda, la domanda dovrebbe essere davvero modificata per renderlo chiaro.

Per quanto riguarda IronPython, hai detto che non ti è piaciuto, ma non c'è davvero nessuna risposta che posso dare a commenti critici che sono così vaghi :)

In alternativa, suggerirei di dare un'occhiata a cPython . Un paio di punti:

  • Puoi creare file .exe con py2exe e altri strumenti.
  • Accesso molto più ampio alle librerie e ai framework Python di terze parti
  • Accesso alle API di Windows tramite pywin32
  • Le estensioni di Python scritte in C sono utilizzabili (a differenza di IronPython, sebbene siano in corso in corso per migliorare questa situazione )

Scoprirai che non hai davvero bisogno di .NET per la maggior parte delle cose. Ovviamente tutto dipende dalla tua applicazione. Per l'integrazione con il codice .NET esistente, allora ovviamente devi usare IronPython.

Dici di voler "dinamico", ma se la motivazione è solo quella di evitare "tutto quel cestino sintattico", dovresti dare un'occhiata a F # . È di tipo statico, ma ha la leggera sintassi di un linguaggio dinamico, nonché di una modalità interattiva (ciclo REPL).

Sono d'accordo con il tuo sentimento che IronPython sembra disorganizzato, ma lo sto usando per (piccoli) progetti e fino ad ora sono stato abbastanza contento.

Se non l'hai ancora visto, dai un'occhiata a IronPython Studio .

Ho seguito un percorso simile. Dai un'occhiata a Boo, dotLISP, IronPython, ecc.

Raccomando IronPython. MA se non hai già esperienza con Python, probabilmente imparerai il core Python più velocemente caricando CPython e usandolo per gli esempi & amp; esercitazioni.

Dopo aver compreso CPython, IronPython sarà molto più facile da capire. Ovviamente, devi ancora capire un po 'di C # e avere accesso alla documentazione .Net SDK. Senza di esso, IronPython è estremamente difficile fare cose utili con.

Puoi anche dare un'occhiata al Fan . Non è pura dinamica, è una miscela di elettricità statica e amp; dinamico. E come la maggior parte delle lingue più recenti, è puro OO con una miscela di funzionalità in esso. Funziona anche su piattaforma JVM e CLR.

La sintassi è più vicina a C # con molta sintassi dello zucchero, quindi sembra che C # si fonda con Ruby / Python.

Poiché la lingua è nuova, a soli 3 anni, le sue prestazioni non sono ancora stellari.

Aggiornamento del 21 febbraio 2014: Fan ha cambiato il nome in Fantom

Dai un'occhiata a Clojure . La versione CLR è ancora nelle prime fasi, ma probabilmente potresti far funzionare la versione java in .Net tramite IKVM

  

... cestino sintattico fornito con lingue tipicamente statiche ...

Se la tua preoccupazione è il cestino sintattico, ti potrebbe piacere anche controllare le lingue tipicamente statiche con l'inferenza del tipo, in particolare F # .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top