IronPython
IronPython је имплементација програмског језика Пајтон циљајући на . NET Фрејмворк и Моно. Џим Хугунин је направио пројекат и активно доприносио истом до верзије 1.0 која је избачена 5. септембра 2006.[1] Након тога, одржаван је од стране малог тима у Мајкрософту све до верзије 2.7 Beta 1; Мајкрософт је напустио IronPython (и сестрински пројекат IronRuby) касне 2010., након чега је Хугунин отишао да ради у Гуглу.[2] IronPython 2.0 је избачен 10. децембра 2008.[3] Пројекат је тренутно одржаван од стране групе волонтера у складиште отвореног кода Мајкрософта CodePlex. Бесплатан је и отвореног кода, и може се користити као имплементација у алаткама Пајтона за Visual Studio, која је бесплатна екстензија отвореног кода, изолована, и комерцијалних верзија Мајкрософтовог Visual Studio IDE.[4][5] IronPython је написан у C#, иако делови његовог кода су аутоматски генерисани од стране генератора кода написаног у Пајтону. IronPython је имплементиран преко Dynamic Language Runtime (DLR), библиотеке која ради преко Опште језичке инфраструктуре која доприноси динамично писање и динамичне методе депеша, између осталих ствари, за динамичне језике.[6] DLR је део .NET Фрејмворка 4.0 и такође је део билдова Моноа. DLR такође може бити коришћен као библиотека на старе CLI имплементације. Статус и мапа пута
Разлике са CPythonПостоје неке разлике између референци имплементација Пајтона и CPython-а и IronPython-а.[14] За неке пројекте направљених преко IronPython-а се зна да не раде под CPython-ом.[15] CPython апликације које зависе од екстензија на језик који су имплементирани у C (нпр. NumPy) нису компатибилни са IronPython-ом,[16] иако је комерцијално-подржан пројекат отвореног кода је на путу да исправи овај проблем.[17] СилверлајтIronPython је подржан на Силверлајт-у. Може бити коришћен као мотор скриптовања у претраживачу баш као JavaScript мотор.[18] IronPython скрипте су прослеђене као једноставне Javascript-скрипте у Технологија иза овога се зове Гесталт. //DLR initiation script.
<script src="http://gestalt.ironpython.net/dlr-latest.js" type="text/javascript"></script>
//Client-side script passed to IronPython and Silverlight.
<script type="text/python">
window.Alert("Hello from Python")
</script>
Исто ради за IronRuby. ЛиценцаСве до верзије 0.6 IronPython је избачен под Common Public License лиценцом.[19] Наредно регрутовање пројекта током августа 2004., IronPython је постао доступан као део Мајкрософтове иницијативе зване Shared Source. Ова лиценца није одобрена од стране OSI али аутори тврде да испуњава дефиниције отвореног кода.[20] Са 2.0 алфа верзијом, лиценца је промењена у Мајкрософт Јавна Лиценца,[21] којом је иницијатива отвореног кода потврдила да задовољава њихову дефиницију отвореног кода. Последње верзије се избацују под лиценцом Apache License 2.0. Растегљивост интерфејсаЈедан од кључних предности IronPython-а је у његовој функцији као растегљивог слоја до фрејмворкова апликација написаних у језику .NET. Релативно је једноставно да се интегрише интерпретатор IronPython у постојећи фрејмворк .NET апликација. Једном намештен, програмери могу користити скрипте написане у IronPython-у које интерагују са осталим .NET објектима у фрејмворку, и тиме проширују функционалност интерфејса фрејмворка, без мењања било ког дела базе кода фрејмворка.[22] IronPython се користи екстензијом рефлексије. Када се проследи у референцу објекта .NET, аутоматски ће преузети све типове и методе доступне за тај објекат. Ово резултује веома високим интуитивним искуством приликом рада са .NET објектима у оквиру IronPython скрипте. ПримериСледећа IronPython скрипта манипулише објекте .NET Фрејмворка. Ова скрипта може бити доступна од стране програмера корисничких апликација за трећа лица и прослеђена у фрејмворк сервера кроз интерфејс. Приметите да нити интерфејс, нити код са стране сервера је модификован да подржава аналитику неопходну од стране апликације корисника. from BookService import BookDictionary
booksWrittenByBookerPrizeWinners = [book.Title for book in BookDictionary.GetAllBooks()
if "Booker Prize" in book.Author.MajorAwards]
У овом случају, замислите да .NET Фрејмворк имплементује класу, BookDictionary, у модул назван BookService, и избацује интерфејс у ком IronPython скрипте могу бити послате и извршене. Ова скрипта, када се пошаље у тај интерфејс, ће прећи преко целе листе кљига одржаваним од стране фрејмворка, и изабрати оне написане од стране оних аутора који су награђивани. Оно што је интересантно је да одговорност за писање саме аналитике је на страни програмера корисничког дела. Захтеви на програмере серверског дела су минимални, само дозвољавајући приступ подацима одржаваним од стране сервера. Овакав дизајн веома поједностављује развој и одржавање комплексних фрејмворкова апликација. Следећа скрипта користи .NET Фрејмворк да направи једноставну Hello World поруку. import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import MessageBox
MessageBox.Show("Hello World")
ПерформансеКарактеристике перформанси IronPython-а у поређењу са CPython-ом, референтном имплементацијом Пајтона, зависе конкретно у оквиру ког теста се мере. IronPython је спорији у односу на CPython на многим PyStone тестовима, али је бољи на другим.[23] IronPython може бити бржи у програмима Пајтона који користе навоје или више језгара, као што има JIT, и такође зато што нема катанац глобалног интерпретатора.[24][25] Види још
Референце
Спољашње везе
|
Portal di Ensiklopedia Dunia