From Wikipedia, the free encyclopedia
Јулија је динамички и програмски језик високог нивоа дизајниран да одговори на захтеве развијених нумеричких и научних израчунавања, али је такође ефективан за ефективно опште програмирање,[7][8][9][10] веб употребу[11][12], може се користити и за спецификацију програмског језика.[13] Карактеристике Јулија програмског језика обухватују типски систем у пакету са параметарским типским системом у облику целокупног динамичног програмског језика, као и у облику посебних пакета у облику сопственог језгра програмске парадигме. Омогућава истовремено, паралелно и дистрибуирано израчунавање, и директно позивање библиотека програмских језика C и Фортран, без посебног кода. Јулија је сакупљач смећа,[14] програм који користи жељену процену и у себи садржи ефикасне библиотеке за израчунавања, линеарну алгебру, насумичну генерацију бројева, брзе Фуријерове трансформације и упоређивање регуларних израза.
Програмер(и) | Џеф Безансон, Стефан Карпински, Вирал Б. Схах, Алан Елдман |
---|---|
Прво издање | 2012. година |
Стабилно издање | 0.4.3 / 0.3.12
/ 12. јануар 2016. године |
Прелиминарно издање | 0.5.0-дев / дневно ажуриран
|
Написан у | МАТЛАБ, Lisp, C, Фортран, Математика[1] (стриктно свој Волфрам програм), Пајтон, Перл, R, Руби, Луа[2] |
Оперативни систем | Линукс, OS X, FreeBSD, Windows |
Стандард(и) | .јл |
Лиценца | ЕмАјТи лиценца,[3] ГПЛ в2[4][5] Опција за прављење фајлова помоћу ГПЛ библиотека.[6] |
Веб-сајт |
Како нам официјелни сајт каже, главне карактеристике овог програмског језика су:
Вишеструко отпремање (познато још и као "вишеструке методе" у Lisp-у) представља упрошћавање једног отпремања - најчешће се користи полиморфни механизам у објектно оријентисаним (ОО) програмима који користе наслеђивање. У Јулији, сви конкретни типови су подтипови апстрактних типова, директно или индиректно подитпови "Ени (any)" типова, који су на врху хијерархије. Конкретни типови не могу бити подтипови, али се њихова композиција користи преко наслеђивања, које користе објектно оријентисани програми (такође видети Наслеђивање против подтипова).
Јулија црпи значајну инспирацију из различитих дијалеката програмског језика Lisp, укључујући Шем и Common Lisp, и има доста заједичких одлика са Диланом (као што је Алгол који има слободну форму инфикс синтаксе док Lisp има префикс синтаксу, док је у Лулији "све"[18] израз) - такође представља динамички програмски језик базиран на вишесложном упрошћавању - и Фотрес, још један нумерички програмски језик са особином вишеструког упрошћавања и софистицираним параметарским типским системом. Док КЛОС даје вишеструко упрошћавање од Common Lisp-а, уз додатак: само кориснички дефинисане функције експлицитно декларисане да буду генеричке могу бити проширене са неколико нових мултиметода.
Јулија макори - познати као хигијенски макрои, који се користе за имплементацију метапрограмирања, слично макроима коришћеним у Lisp-у - веома су моћни и различити су од нехигијенских макроа коришћених у неким другим програмским језикама као што је нпр. C.
У Јулији, Дилану и Фортресу, са друге стране гледиша, ова моћ проширивања је стандардна, и системи уграђених функција су генерички и прошириви. У Дилану, вишеструко упрошћавање је основна функција као што је случај у Јулији: све кориснички дефинисане функције па чак и основне уграђене операције, као што је +
, су генеричке. Диланов типски систем, међутим, не подржава баш све параметарске типове, који су више типични за МЛ програмске језике. Стандардно, КЛОС не подржава упрошћавања Lisp-ових параметарских типова; као што су - упрошћавање проширених семантика које се једино могу додати као екстензија кроз КЛОС-ов протокол Метаобјекта. Према конвергентном дизајну, Фортрес такође поседује вишеструко упрошћавање параметарских типова; супротно од Јулије, међутим, Фотрес није динамички него статички тип, са одвојеном компилацијом и извршавањем фаза. Карактеристике програмских језика су представљене у следећој табели:
Програм | Тип система | Генеричке функције | Параметарски типови |
---|---|---|---|
Јулија | динамички | стандардне | да |
Common Lisp | динамички | управљачке | да (али не упрошћавање) |
Дилан | динамички | стандардне | парцијални (без упрошћавања) |
Фортрес | статички | стандардне | да |
Јулијина званична дистрибуција обухвата интерактивни шел, који се назива РЕПЛ, који се може користити за експериментисање и брзо тестирање кода.[19] Следећи фрамгент представља једноставан пример РЕПЛ-а:[20]
julia> p(x) = 2x^2 + 1; f(x, y) = 1 + 2p(x)y
julia> println("Hello world!", " I'm on cloud ", f(0, 4), " as Julia supports recognizable syntax!")
Hello world! I'm on cloud 9 as Julia supports recognizable syntax!
РЕПЛ омогућава приступ систему шела и има помоћни режим, притискањем ;
или ?
после линије (претходећи свакој команди). РЕПЛ такође чува историју команди, чак и између сесија. За додатне примере, видети Јулијину документацију[21] која даје кодове који се могу тестирати унутар Јулијине интерактивне секције или снимањем фајла као .jl
екстензија и покренути са командне линије куцањем (на пример):[18]
$ julia <filename>
Јулија је такође подржана од стране Јупитера, онлајн интерактивног "нутбукс (notebooks)" окружења (пројектовани Јупитер је вишејезична екстензија, која је "добијена" из ИПајтонове (IPython) командне линије; која садржи Јулију).
Јулијин ccall
(C-позив) кључне речи се користи за позивање C-ове (или Фортранове) заједничке библиотеке функција.
Јулија има Јуникод подршку, уз помоћ UTF-8 који се користи за изворни код који углавном дозвољава уобичајне математичке симобле за различите операције, као што је нпр. ∈ за in
оператор. Уз помоћ стрингова UTF-8, UTF-16 и UTF-32 (и ASCII) кодирање је потпуно подржано.
Јулија има пакете који подржавају језике за означавање као што су, HTML (такође за HTTP), XML, JSON, BSON (и MongoDB) итд.
Јулијино језгро је имплементирано у C и C++ (C++ зависи од ВМНР), сопственом парсеру у Шем програмском језику ("фемтолисп"), док се ВМНР оквирни компајлер користи у "тачно на време" (ТНВ) генерацијама 64-битних или 32-битних машинских кодова (нпр. не и за виртуелну машину[22]) у зависности од платформе коју Јулија користи. Уз неколико изузетака (нпр. либув), стандардна библиотека је самостално уграђена у Јулији. Најзначајнији аспект Јулијине имплементације је брзина, која је често фактор две безе у односу на потпуно оптимизован C код (а самим тим често магнитуда расте брже него у Пајтону или Р-у).[23] Развој програмског језика Јулија је започет 2009. године док је верзија отвореног кода објављена у Фебруару 2012. године.[1][24]
Јулија, 0.4 линија, представља распоред који излази једном месечно где су исправљени сви багови и где враћају/додају неке карактеристике.[25]
Док Јулија користи ТНВ[26] (МЦТНВ[27] из ВМНР-а) – Јулија генерише све природне машинске кодове, директно када се функција покрене први пут (небајткод покренут на виртуелној машини, нпр. преко Јаве/Далвика)
Тренутна подршка за новије x86 или старије и386 процесоре и у 0.4.0. 32-битној АРМ архитектури ("Експериментална и рана подршка"[28] уз помоћ "посла у току - за неколико тестова је познато да су неположени, и да се не могу видети"[29] уз помоћ алфа подршке за Распбери Пи 1/2[30][31] али "[на АРМv7] Самсунговој хром-књизи [..] Јулија се покреће сасвим добро"[32]), 64-битном АРМv8[33] и PowerPC.[тражи се извор][34]
Јулија2Ц "извор до извора" компајлер се може набавити из Интелове лабораторије.[35] Овај "извор до извора" компајлер је Јулијин форк, који имплементира исту програмску синтаксу као у Јулији, који емитује C код (због компактибилности са процесором) уместо природног машинског кода за функције или целе програме. Компајлер дозвољава анализирање кода на већем ниво него у програмском језику C.[36]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.