Topic: Delucidazioni cython  (Letto 167 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline drmacchius

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Delucidazioni cython
« il: Febbraio 22, 2020, 14:11 »

Qualcuno mi da delle delucidazioni a riguardo? Da quanto ho capito é un compilatore che invece di utilizzare un nuovo linguaggio, utilizza un dialetto di Python, completamente compatibile a questo, che ha delle funzioni integrative che permettono di una dichiarazione statica delle variabili e analoghe peculiarità tipiche del linguaggio C/C++, per poi tradurlo in C e compilarlo come tale, permettendo di integrare parti di codice in c e possedendo delle utility che permettono di identificare le parti del codice Python critiche per le prestazioni e ottimizzarle con C o con funzioni di C ma con sintassi di C/C++.

Ho capito bene?
É di fatto un metodo rapido per creare un linguaggio compilato che permette programmazione sia di basso livello che di alto livello, secondo tutti i paradigmi di c++, ma che permette di utilizzare librerie Python e C/C++ senza doverle riscrivere perché non si ha a che fare con un linguaggio autonomo tipo rust o boo, ma solo un traduttore che converte in C codice scritto come fosse C++ ma con sintassi Python?

Ci si può fare programmazione di sistema o riluttarono per scrivere codice per embebbed System o attrezzature elettroniche!?

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.031
  • Punti reputazione: 9
    • Mostra profilo
Re:Delucidazioni cython
« Risposta #1 il: Febbraio 22, 2020, 19:28 »
Mah, non mi è chiaro che cosa non ti è chiaro. La seconda parte del tuo post poi mi è assolutamente incomprensibile anche proprio dal punto di vista della sintassi italiana.
Comunque sì, Cython è sia un linguaggio (un superset di Python: non copre proprio tutto python, però... ma ci manca poco) sia un compilatore che produce estensioni C dal codice Cython e/o rende facile linkare librerie esistenti in C/C++ da dentro il codice Cython.
Ci si può fare tutto quello che ci si può fare con il "normale" Python... anzi in un certo senso ci si "deve" fare tutto quello che si fa con Python perché comunque per far girare delle estensioni Cython ci vuole pur sempre un interprete Python funzionante, che importa quelle estensioni... Quindi direi che qualunque piattaforma su cui puoi installare un "normale" CPython, puoi anche farci girare un tuo programma che ha estensioni scritte in Cython.

Comunque non è difficile provarlo per vedere che cosa puoi farci... la documentazione è chiara (se conosci un po' di C, altrimenti ti perdi il contesto) e i tutorial sono affrontabili.

Offline drmacchius

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Re:Delucidazioni cython
« Risposta #2 il: Febbraio 22, 2020, 21:52 »
Intanto grazie per la risposta. Ho scritto mentre camminavo per strada col cellulare.
Quindi è necessario sempre e per forza l‘interprete?

Quello che cercavo di capire è se Cython è semplicemente un mezzo per dare Python le prestazioni di un linguaggio compilato facilitandone la scrittura di estensioni in c/c++ oppure se è una sorta di „traduttore“ che permette di fare quello che si fa con c/c++ utilizzando il lessico di python, generando in pratica codice C da compilare al bisogno anche su microcontroller o su sistemi operativi vari

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.031
  • Punti reputazione: 9
    • Mostra profilo
Re:Delucidazioni cython
« Risposta #3 il: Febbraio 22, 2020, 22:42 »
continuo a non capire, ma ti faccio notare che python e c++ sono entrambi linguaggi turing-complete, quindi tutto quello che puoi fare con uno in linea di principio puoi farlo con l'altro. Comunque sì, è necessario "per forza" l'interprete... è Python. Se non vuoi Python, puoi scrivere direttamente in C immagino... ma continuo a non capire che cosa vuoi fare e che cosa vuoi sapere. In ogni caso, davvero, la documentazione di Cython è piuttosto chiara, e basta provare per vedere che cosa può fare...

Offline drmacchius

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Re:Delucidazioni cython
« Risposta #4 il: Febbraio 23, 2020, 07:16 »
Volevo capire se lo si può usare come una sorta di Editor generatore di codice C per compilatori c/c++ dedicati  a strutture hardware particolari (e in cui non puoi istallare l‘interprete) oppure usarlo per fare programmazione di basso livello, cose che si fanno comunemente in c/c++. Vorrei inoltre capire se per usarlo in questo modo bisogna saper programmare in c/c++ oppure basta imparare le estensioni Cython al linguaggio Python
« Ultima modifica: Febbraio 23, 2020, 07:18 da drmacchius »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.031
  • Punti reputazione: 9
    • Mostra profilo
Re:Delucidazioni cython
« Risposta #5 il: Febbraio 23, 2020, 22:10 »
Mah... la nebbia si fa sempre più fitta.
Guarda che un interprete CPython è un programma scritto in C. Quando tu fai girare uno script Python, quello che succede veramente è che fai girare un programma in C. Se hai una "struttura hardware particolare" (eh? che vuol dire poi? mah?) su cui non puoi far girare CPython, immagino che tu non possa neanche farci girare sopra un programma in C che scriveresti. Poi certo, ci sono casi in cui non vuoi/puoi installare tutto Python perché occupa troppo spazio, per dire... esistono soluzioni tipo MicroPython per questo... Non so, mi faresti un esempio di "struttura hardware particolare" che intendi?
Detto questo, uhm... suppongo che potresti provare Nuitka... non l'ho mai usato ma è un compilatore, pare che funzioni, e dovrebbe essere una cosa più simile a quella che stai cercando (se ho capito). Nota comunque che, partendo da CPython, compila con gli stessi compilatori che vengono usati per compilare CPython...
Inoltre non so che cosa tu intendi per "programmazione di basso livello", ma certamente non puoi metterti, per dire, a gestire la memoria mano (malloc etc) con Python... e quindi neanche con Nuitka o soluzioni del genere.

Scusa la franchezza, ma... devo chiedertelo: il tuo problema è che vuoi scrivere un programma in C? Perché in questo caso, mi sa che studiare C è un po' l'unica soluzione.

Offline drmacchius

  • python unicellularis
  • *
  • Post: 5
  • Punti reputazione: 0
    • Mostra profilo
Re:Delucidazioni cython
« Risposta #6 il: Febbraio 24, 2020, 18:53 »
Appunto, é proprio quello che cercavo di capire: se con cython si può fare con una sintassi similpython quello che si farebbe in C. Da quello che avevo capito il codice scritto in Python viene automaticamente tradotto in codice C, che poi può venire compilato da un normale compilatore C, sia su un computer ma anche su un sistema embebbed come un lettore mp3. Da quanto ho capito cython evidenzia il codice Python che sarebbe poco efficiente e permette la gestione della memoria statica. Ciò che non capisco é se per utilizzare cython per scrivere programmi performanti  (o per programmarsi i driver di attrezzature elettroniche automodificate) oltre a saper programmare in Python, bisogna essere degli esperti programmatori e conoscitori di C, rendendo Cython solo un mezzo per ridurre le righe di codice da scrivere per chi  sa programmare molto bene in C, o se le estensioni alla sintassi Python apportate da cython permettono di fare la stessa programmazione di basso livello senza saper programmare in C come degli esperti di questo linguaggio