2009-07-21 13 views

risposta

13

Cython potrebbe fare - il codice C che genera è per le estensioni Python, ma il tutto può essere impacchettato e si eseguirà codice nativo in tutto (dopo l''importazione' ;-).

3

Se si è soddisfatti di qualcosa che compila il bytecode Java, è possibile dare un'occhiata a Jython. Citando dal loro FAQ:

JPython è un'implementazione del linguaggio di programmazione Python progettato per essere eseguito sulla piattaforma Java (tm). Consiste in un compilatore per compilare codice sorgente Python in codice bytecode Java che può essere eseguito direttamente su una JVM, un set di librerie di supporto utilizzate dai bytecode Java compilati e supporto extra per rendere banale l'uso di pacchetti Java da JPython .

Non l'ho ancora utilizzato, ma lo sto considerando su alcuni progetti in cui devo integrarmi con un codice base Java esistente.

HTH

+0

Java Bytecode = codice nativo –

+2

@Ed - leggere la domanda!. Ha detto "Bene, se non altro le lingue simili a pitoni che generano il bytecode .net/java vanno bene". – Rad

+0

Touche, avrei dovuto leggerlo più da vicino. –

1

È inoltre possibile studiare IronPython - un inplementation pitone sul framework .NET

+2

* sigh * .NET NON è un codice nativo. Almeno, non di default, comunque. È una macchina virtuale, come Java. –

11

devo ammettere che non ho ben capito la tua domanda, per due motivi:

  1. Stai chiedendo una lingua con la generazione del codice nativo, ma la generazione del codice nativo non ha nulla a che fare con il linguaggio, è un tratto dell'implementazione. Ogni lingua può avere un'implementazione con la generazione di codice nativo. Diverse implementazioni Python hanno la generazione di codice nativo. Esistono compilatori C che compilano in bytecode JVM, bytecode CIL o anche codice sorgente ECMAScript. Esistono anche interpreti C . Esistono anche compilatori che compilano codice sorgente Java o codice byte JVM in codice nativo.

  2. Perché ti interessa la sintassi? È probabilmente il fattore meno importante nella scelta di un linguaggio di programmazione.

In ogni caso, Nimrod è un linguaggio di programmazione che ha un'implementazione che supporta la generazione di codice nativo (o più precisamente un'implementazione che supporta la generazione di codice C sorgente) e la cui sintassi è un ibrido tra lo stile Wirthian (tramite gli sguardi di le influenze più importanti sono Oberon e Delphi) e Python.

Tuttavia, il fatto che abbia una sintassi Pythonic non ti aiuterà affatto se non ti piace il design in stile europeo o lo stile Wirthiano OOP.

+4

Non proprio. Un linguaggio di programmazione nel suo insieme è: la sintassi del linguaggio + le librerie principali + l'ambiente in cui viene eseguito. Pensateci un linguaggio di programmazione OO la cui root non è 'java.lang.Object' ma' System.Object' non è Java ma C#: P – OscarRyz

+11

Sono d'accordo. Un linguaggio di programmazione con grandi prestazioni, ma la sintassi noiosa è come un coltello incredibilmente nitido ma con gli aghi sul manico. Inoltre, non esiste una cosa come "design in stile europeo". – paniq

+3

L'OP desidera qualcosa che "fin dall'inizio sia stato progettato per generare codice nativo". Un sacco di lingue, ad esempio Python, rendono la generazione del codice nativo molto difficile a causa di alcune caratteristiche dinamiche. Mentre molti altri sono solo leggermente diversi, ma possono essere facilmente compilati in codice nativo (ad esempio Nimrod). Quindi non sono d'accordo con il tuo primo punto. – Ponkadoodle

3

PyPy è un progetto per reimplementare Python in Python.Uno degli obiettivi è consentire l'uso di più back-end, tra cui C. Quindi puoi prendere un programma Python puro, convertirlo in C e compilarlo in codice nativo. È ancora un lavoro in corso, quindi probabilmente non adatto al codice di produzione.

6

shedskin compila Python a C++

Da shedskin pagina del progetto

Shed pelle è un compilatore sperimentale, in grado di tradurre puro, ma implicitamente staticamente tipizzati Python programmi in ottimizzato C++. Può generare programmi standalone o moduli di espansione che possono essere importati e utilizzati in programmi Python più grandi.

7

Partenza Cobra

E 'fortemente influenzato da Python, C#, Eiffel, Objective-C e altri linguaggi di programmazione. Supporta la digitazione statica e dinamica. Ha supporto di prima classe per test e contratti unitari. Cobra offre sia sviluppo rapido che prestazioni nella stessa lingua.

+1

Cobra sembra decente. Mi piacciono particolarmente i numeri reali CORRETTO per impostazione predefinita: sebbene sia ragionevolmente sicuro, il "punto di virgola mobile" "lossy" dovrebbe essere sempre un'ottimizzazione usata quando è sicura, mai l'impostazione predefinita. Tuttavia, Cobra NON genera codice nativo, purtroppo. Funziona su .NET, che è una macchina virtuale. Questo può fare una GRANDE differenza, per esempio quando scrivi un codice che elabora gigabyte di dati ogni elemento di cui ha un sovraccarico in una VM. Nimrod è il modo per andare qui, con D come alternativa ragionevole. –

+1

Cobra * non * genera codice nativo se lo si desidera. L'esecuzione sulla VM non è un requisito. Non c'è bisogno di andare con D o Nim –

Problemi correlati