IronPython

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу
IronPython
Оригинални назив енгл. IronPython
Изговара се Ајрон Пајтон
Модел императивни, објектно-оријентисани, функционални
Аутор(и) Дино Виехланд
Актуелна верзија 2.7.5
Лиценца Apache License, v2.0
Веб-сајт http://ironpython.net

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 имплементације.

Статус и мапа пута[уреди]

  • Верзија 2.0, избачена 10.12.2008., и освежена са 2.0.3 на 23.10.2009., циља CPython 2.5.[7] IronPython 2.0.3 је само компатибилно до .NET Фрејмворк 3.5.
  • Верзија 2.6, избачена 11.12.2009., и освежена 12.04.2010., циља CPython 2.6.[8] IronPython 2.6.1 верзије су бинарно компатибилне само са .NET Фрејмворком 4.0. IronPython 2.6.1 мора бити компајлован од извора да ради на .NET Фрејмворку 3.5. Iron Python 2.6.2, избачен 21.10.2010., је бинарно компатибилан са .NET Фрејмворком 4.0 и .NET Фрејмворком 3.5.
  • Верзија 2.7 избачена 12.03.2011. циља CPython 2.7.[9]
  • Верзија 2.7.1 избачена 21.10.2011. и циља CPython 2.7.[10]
  • Верзија 2.7.2.1 избачена 13.03.2012. Омогућава подршку за ZIP библиотеке, SQLite, и компајловане апликације[11]
  • Верзија 2.7.4 избачена 07.09.2013.[12]
  • Верзија 2.7.5 избачена 06.12.2014. и највише садржи исправке грешака.[13]

Разлике са CPython[уреди]

Постоје неке разлике између референци имплементација Пајтона и CPython-а и IronPython-а.[14] За неке пројекте направљених преко IronPython-а се зна да не раде под CPython-ом.[15] CPython апликације које зависе од екстензија на језик који су имплементирани у C (нпр. NumPy) нису компатибилни са IronPython-ом,[16] иако је комерцијално-подржан пројекат отвореног кода је на путу да исправи овај проблем.[17]

Силверлајт[уреди]

IronPython је подржан на Силверлајт-у. Може бити коришћен као мотор скриптовања у претраживачу баш као JavaScript мотор.[18] IronPython скрипте су прослеђене као једноставне Javascript-скрипте у <script>-таговима. Онда је такође могуће модификовати уграђени XAML.

Технологија иза овога се зове Гесталт.

//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]

Види још[уреди]

  • Boo, језик написан за . NET Фрејмворк и Моно са Пајтон инспирисаним синтаксама и карактеристикама позајмљеним из C# и Ruby.
  • Cobra
  • IronLisp
  • IronRuby
  • IronScheme
  • Jython - имплементација Пајтона за ЈВМ.
  • Cython
  • pypy - само-одрживи интерпретатор за Пајтон програмски језик
  • Tao Фрејмворк
  • Unladen Swallow - (сада-угашена) грана CPython-а која је циљала да допринесе супериорне перформансе коришћењем LLVM-базираног тачно-на-време компајлера.

Референце[уреди]

  1. ^ „Jim Hugunin's blog: IronPython 1.0 released today!”. 5. 9. 2006. Приступљено 14. 12. 2006. 
  2. ^ Clarke, Gavin (22. 10. 2010). „Microsoft cuts loose Iron languages”. The Register. Приступљено 5. 4. 2012. 
  3. ^ „Release dates for ironpython”. 10. 12. 2008. Приступљено 25. 1. 2009. 
  4. ^ „IronPython.net”. IronPython.net. Приступљено 3. 7. 2013. 
  5. ^ „Python Tools for Visual Studio- Home”. Python Tools for Visual Studio. Приступљено 3. 7. 2013. 
  6. ^ „Dynamic Language Runtime Overview”. Microsoft. Приступљено 1. 4. 2014. 
  7. ^ „2.0.3”. ironpython.codeplex.com. Приступљено 16. 10. 2010. 
  8. ^ „2.6”. ironpython.codeplex.com. Приступљено 16. 10. 2010. 
  9. ^ „2.7”. ironpython.codeplex.com. Приступљено 12. 3. 2011. 
  10. ^ „2.7.1”. ironpython.codeplex.com. Приступљено 30. 12. 2011. 
  11. ^ „2.7.2.1”. ironpython.codeplex.com. Приступљено 24. 3. 2012. 
  12. ^ „2.7.4”. ironpython.codeplex.com. Приступљено 7. 12. 2014. 
  13. ^ „2.7.5”. ironpython.codeplex.com. Приступљено 7. 12. 2014. 
  14. ^ „Differences between IronPython 1.0 and CPython 2.4.3”. Microsoft. 18. 12. 2007. Приступљено 9. 2. 2008. 
  15. ^ Foord, Michael. „New Project: Implementing .NET Libraries in Pure Python”. Архивирано из оригинала на датум 30. 08. 2008. Приступљено 9. 2. 2008. 
  16. ^ Eby, Phillip. „Children of a Lesser Python”. Приступљено 9. 7. 2008. 
  17. ^ „Ironclad”. Архивирано из оригинала на датум 28. 08. 2008. Приступљено 9. 7. 2008. 
  18. ^ „IronPython in the web browser - IronPython.net”. Приступљено 1. 4. 2014. 
  19. ^ „Original IronPython homepage”. 28. 7. 2004. Приступљено 13. 5. 2007. 
  20. ^ „Shared Source License for IronPython”. 28. 4. 2006. Приступљено 13. 5. 2007. 
  21. ^ „Microsoft permissive license”. 28. 4. 2007. Приступљено 13. 5. 2007. 
  22. ^ „Using .NET objects from IronPython in Resolver One”. Архивирано из оригинала на датум 14. 01. 2009. Приступљено 18. 11. 2008. 
  23. ^ „IronPython Performance Report”. Приступљено 5. 10. 2009. 
  24. ^ „IronPython at python.org”. python.org. Приступљено 4. 4. 2011. »IronPython has no GIL and multi-threaded code can use multi core processors.« 
  25. ^ Python's Hardest Problem, Revisited

Спољни линкови[уреди]