Domanda

Quindi, sto scrivendo una sorta di programma statistico (in realtà lo sto ridisegnando in qualcosa di più elegante) e ho pensato che avrei dovuto usare un linguaggio che è stato creato per quel tipo di cose (occuparsi di enormi dati di statistiche, connessioni tra loro e una sorta di programmazione genetica / neurale).

A dire il vero, voglio solo una scusa per tuffarmi in lisp / smalltalk (non sono smalltalk / lisp / clojure uguali? - come il pitone e il rubino? -semantics-saggio) ma voglio anche un linguaggio per essere facilmente comprensibile da altre persone che amano il linguaggio BASIC (ecco perché non ho scelto LISP - eppure: D).

Ho anche controllato Prolog e mi sembra un linguaggio piuttosto interessante (facile fare relazioni tra i dati e più facile di Lisp) ma mi piacerebbe sentire cosa ne pensate.

Thx

Modifica: Confondo sempre lisp comune con Smalltalk. Scusa se ho messo insieme questi due lang. Anche ciò che intendevo per " altre persone che amano il linguaggio BASIC " è che non preferisco una lingua con semantica come lisp (per le persone senza background CS) e trovo Prolog un po 'più intuitivo (ma questa è la mia opinione dopo che ho appena incasinato un po' con entrambi).

È stato utile?

Soluzione

C'è qualche motivo particolare per non usare R? È una specie di build vs. buy ( o in questo caso download) decisione. Se stai effettuando un calcolo statistico, R ha molti pacchetti disponibili. Questi includono molte librerie e interfacce per vari tipi di origini dati. Esistono anche librerie di interfaccia per incorporare R in altre lingue come Python, in modo da poter creare un'applicazione ibrida con una GUI in Python (ad esempio) e un motore di calcolo core che utilizza R.

In questo caso, è possibile ridurre gli sforzi necessari per l'implementazione e concludere con un'applicazione più flessibile.

Se hai il coraggio di imparare un'altra lingua, fallo sicuramente. Esistono diverse buone implementazioni gratuite (alcune come nel parlato, altre come nella birra) di Smalltalk, Prolog e LISP.

Se stai inserendo un'interfaccia utente nel sistema, Smalltalk potrebbe essere l'opzione migliore. Se si desidera creare set di regole di grandi dimensioni come parte dell'applicazione, Prolog è progettato per questo tipo di cose. Varie persone hanno scritto sull'efifania LISP che influenza il modo in cui penso alla programmazione ma non posso davvero garantirlo per esperienza: ho usato AutoLISP solo per scrivere script di automazione su AutoCAD.

Altri suggerimenti

A rischio di offenderne alcuni, faccio fatica a conciliare " facilmente comprensibile da altre persone che amano il linguaggio BASIC " con una qualsiasi delle lingue che hai menzionato. Questo è non inteso come una critica, ma come un'osservazione che ognuna delle lingue che menzioni ha uno stile e un linguaggio naturale che è abbastanza diverso da quello di BASIC.

  • Smalltalk: OO puro da zero, di solito (ad esempio Squeak) accoppiato con un ambiente integrato che è contemporaneamente l'IDE e il runtime. IOW entri nella VM Smalltalk e lavori al suo interno piuttosto che scrivere semplicemente un testo che è "quot source code".

  • LISP - molto più vicino alla programmazione funzionale (sebbene con sfumature imperative); la notazione del prefisso è la prima barriera per la maggior parte delle persone che "gradiscono" altre lingue, ma il concetto e l'uso delle macro è molto più sostanziale.

  • Clojure - La combinazione di integrazione LISP, OO e JVM rende questo ancora meno simile a BASIC.

  • Python e Ruby - li metto insieme (a rischio di ulteriori fastidiosi fan di entrambi ;-) perché sono entrambi linguaggio OO con notazioni distinte che porteranno un estraneo a una curva di apprendimento. L'uso dei soli rientri per l'annidamento dei controlli in Python e l'uso simile al Perl di caratteri speciali in Ruby sono spesso punti della denuncia da parte dei nuovi arrivati. Sebbene entrambi possano essere scritti in uno stile imperativo, ciò sarebbe considerato non standard dagli utenti esperti.

  • Prolog - Questo è il più dissimile da BASE di tutte le lingue menzionate. Tutte le altre lingue che hai citato possono essere (ab) usate in uno stile semi-procedurale, ma ciò è essenzialmente impossibile in Prolog. Richiede una comprensione approfondita e conforto con la ricorsione per fare qualcosa di non banale.

Codice scritto con un "accento nativo" essenzialmente in tutti questi linguaggi (ma in particolare Prolog, IMHO) si avvarranno di idiomi e concetti che sono fuori dalla norma per la programmazione BASIC convenzionale. In altre parole, se scegli uno di questi e poi scrivi il codice "con un accento BASICO" hai praticamente sprecato i vantaggi che la lingua può offrire.

Credo che valga la pena imparare tutti per i concetti che possono insegnare (o almeno rafforzare, a seconda del tuo background). Ma la somiglianza con il linguaggio X (per una vasta gamma di valori di X) non è ciò che otterrai.

Posso risponderti parzialmente

  

(Smalltalk / Lisp / Clojure non sono gli stessi? - Come il pitone e il rubino? -semantici-saggi)

No, non lo è. Smalltalk è un linguaggio OO con passaggio di messaggi anziché chiamate di metodo. Lisp è Lisp ;-) Significa un linguaggio veramente funzionale con il potente sistema macro, il supporto OO che non è mai stato visto in altre lingue (in CL) e molte altre funzionalità. La chiusura è un linguaggio simile a Lisp senza molte funzionalità Lisp ma una buona integrazione con JVM. Ad esempio, non supporta l'ottimizzazione delle chiamate di coda. E pitone o rubino sono i classici linguaggi OO imperativi con alcune capacità funzionali limitate. Nota della parola limitata. Ad esempio, a Guido non piace la programmazione funzionale e ha rimosso alcune funzionalità nella versione 2.5 e 2.6.

Se hai familiarità con la programmazione procedurale imperativa come in Python e vuoi cambiare il tuo paradigma, dovresti prendere attentamente la tua decisione.

Prolog è una lingua molto diversa. Può essere molto difficile da capire, principalmente perché si basa fortemente sulla ricorsione per svolgere compiti molto basilari. Se sei davvero disposto, provalo. Può essere molto potente perché consente di espandere le relazioni e risolvere semplicemente problemi complessi, esempi tipici sono le Torri di Hanoi o Quicksort. Cambierà il modo in cui pensi, il che può essere difficile se sei abituato alle lingue imperative.

Se sei interessato a Prolog, esiste una versione gratuita di Visual Prolog disponibile e il la versione commerciale ha un prezzo ragionevole.

È un derivato di tipo forte di Prolog, quindi non è la tua classica implementazione del linguaggio, ma ha una storia rispettabile - Borland ha commercializzato l'antenato del DOS come Turbo-Prolog alla fine degli anni '80.

È anche solo Windows, ma può essere utilizzato per creare DLL Windows standard in modo da poter collegare il codice in un linguaggio di programmazione Windows "normale". Non ho mai usato il pacchetto con rabbia, ma ho fatto un paio di corsi Prolog presso Uni, quindi l'ho scaricato di tanto in tanto per giocare e cercare possibili usi e sembra abbastanza solido. Potrebbe essere solo il set di ingranaggi che stai cercando.

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