Pyrex | |
---|---|
Type | programmeringssprog |
Udvikler | Greg Ewing |
Skrevet i | Python , C |
Operativ system | på tværs af platforme |
Første udgave | 3. april 2002 [1] |
nyeste version | 0.9.9 (12. april 2010 ) |
Internet side | cosc.canterbury.ac.nz/~greg/python/Pyrex/ |
Pyrex er et programmeringssprog udviklet af Greg Ewing [2] i 2002 for at gøre det nemmere at oprette moduler til Python . Dens syntaks er meget tæt på Python, hvilket gør det nemt for Python-programmører at bruge til at skrive limkode. Pyrex blev senere grundlaget for Cython .
Python leverer selv en API til C-sproget til at skrive udvidelsesmoduler. Sådanne moduler indeholder funktioner og datatyper fra C-sproget, som også kan tilgås fra Python. Det er også muligt at oprette "wrappers" for funktioner og datatyper fra eksisterende C- biblioteker for at give adgang til dem som objekter i Python-sproget.
Der er værktøjer som SWIG og Python "ctypes" biblioteket ( fremmed funktionsbibliotek ), der kan bruges til at løse problemet med at skabe grænseflader på tværs af sprog uden at skrive en masse ekstra kode. Deres brug er dog begrænset til at eksportere et sæt eksterne biblioteksfunktioner til adgang fra Python-applikationer. Hvis grænsefladejusteringer er nødvendige, kræves manuel produktion af konverteringskoden. Pyrex kan bruges til at forenkle denne opgave.
Pyrex giver programmøren mulighed for at skrive udvidelsesmoduler i et Python-lignende sprog, der kan arbejde direkte med ekstern C-kode. Ligheden mellem Pyrex-syntaksen og Python forenkler kodeoprettelse, da programmøren ikke behøver at lære eller kende et andet sprog (C eller C++ ) eller implementere nye C-grænseflader. Pyrex kan bruge C-header-filer, enum-typetyper og -værdier , datatyper og strukturer og funktioner. Pyrex-programmøren arbejder med disse elementer i samme syntaks, som hvis de var Python-objekter. Pyrex-kompileren genererer derefter al den nødvendige mellemkode ( lim ) automatisk og konverterer Pyrex-applikationen til et klar-til-brug Python-modul [2] .
Python | |
---|---|
Fællesskab | |
Implementeringer | |
Andet |
|