је динамички и програмски језик високог нивоа дизајниран да одговори на захтеве развијених нумеричких и научних израчунавања, али је такође ефективан за ефективно опште програмирање, (official website). веб употребу ., може се користити и за спецификацију програмског језика. Карактеристике Јулија програмског језика обухватују типски систем у пакету са параметарским типским системом у облику целокупног динамичног програмског језика, као и у облику посебних пакета у облику сопственог језгра програмске парадигме. Омогућава истовремено, паралелно и дистрибуирано израчунавање, и директно позивање библиотека програмских језика C и Фортран, без посебног кода. Јулија је сакупљач смећа, програм који користи жељену процену и у себи садржи ефикасне библиотеке за израчунавања, линеарну алгебру, насумичну генерацију бројева, брзе Фуријерове трансформације и упоређивање регуларних израза.
Карактеристике програмског језика Како нам званични сајт каже, главне карактеристике овог програмског језика су: Вишеструко отпремање: пружање могућности да се дефинише понашање функције у више различитих типова аргумената Динамични тип система: типови за документацију, оптимизацију, и обавештење Добре перформансе, сличан статичким типским програмима као што је C. Уграђен менаџер пакета Lisp као макрои и други објекти метапрограмирања Позивање Пајтонових функција: користити ПајКол (PyCall) пакет Директно позивање C функција: није потребан специјални АПИ Веома добар шел уз помоћ којег се управља другим процесима Дизајниран је за паралелно и расподељено израчунавање Корутине: једноставан "зелени" навој Кориснички дефинисани типови представљају уграђене функције и веома су компактни и брзи Аутоматско прорачунавање ефикасности, специјализован је код за различите типске аргументе Елегантне и прошириве конверзије и промоције за бројеве и остале типове Ефикасна подршка за Јуникод, који поседује UTF-8. Вишеструко отпремање (познато још и као "вишеструке методе" у Lisp-у) представља упрошћавање једног отпремања - најчешће се користи полиморфни механизам у објектно оријентисаним (ОО) програмима који користе наслеђивање. У Јулији, сви конкретни типови су подтипови апстрактних типова, директно или индиректно подитпови "Ени (any)" типова, који су на врху хијерархије. Конкретни типови не могу бити подтипови, али се њихова композиција користи преко наслеђивања, које користе објектно оријентисани програми (такође видети Наслеђивање против подтипова).
Јулија црпи значајну инспирацију из различитих дијалеката програмског језика Lisp, укључујући Шем и Common Lisp, и има доста заједичких одлика са Диланом (као што је Алгол који има слободну форму инфикс синтаксе док Lisp има префикс синтаксу, док је у Лулији "све" израз) - такође представља динамички програмски језик базиран на вишесложном упрошћавању - и Фотрес, још један нумерички програмски језик са особином вишеструког упрошћавања и софистицираним параметарским типским системом. Док КЛОС даје вишеструко упрошћавање од Common Lisp-а, уз додатак: само кориснички дефинисане функције експлицитно декларисане да буду генеричке могу бити проширене са неколико нових мултиметода.
Јулија макори - познати као хигијенски макрои, који се користе за имплементацију метапрограмирања, слично макроима коришћеним у Lisp-у - веома су моћни и различити су од нехигијенских макроа коришћених у неким другим програмским језикама као што је нпр. C.
У Јулији, Дилану и Фортресу, са друге стране гледиша, ова моћ проширивања је стандардна, и системи уграђених функција су генерички и прошириви. У Дилану, вишеструко упрошћавање је основна функција као што је случај у Јулији: све кориснички дефинисане функције па чак и основне уграђене операције, као што је +, су генеричке. Диланов типски систем, међутим, не подржава баш све параметарске типове, који су више типични за МЛ програмске језике. Стандардно, КЛОС не подржава упрошћавања Lisp-ових параметарских типова; као што су - упрошћавање проширених семантика које се једино могу додати као екстензија кроз КЛОС-ов протокол Метаобјекта. Према конвергентном дизајну, Фортрес такође поседује вишеструко упрошћавање параметарских типова; супротно од Јулије, међутим, Фотрес није динамички него статички тип, са одвојеном компилацијом и извршавањем фаза. Карактеристике програмских језика су представљене у следећој табели:
Програм Тип система Генеричке функције Параметарски типови Јулија динамички стандардне да Common Lisp динамички управљачке да (али не упрошћавање) Дилан динамички стандардне парцијални (без упрошћавања) Фортрес статички стандардне да
Интеракција Јулијина званична дистрибуција обухвата интерактивни шел, који се назива РЕПЛ, који се може користити за експериментисање и брзо тестирање кода. Следећи фрамгент представља једноставан пример РЕПЛ-а:See also: http://julia.readthedocs.org/en/latest/manual/strings/ for string interpolation and the string(greet, ", ", whom, ".\n") example for preferred ways to concatenate strings.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!РЕПЛ омогућава приступ систему шела и има помоћни режим, притискањем ; или ? после линије (претходећи свакој команди). РЕПЛ такође чува историју команди, чак и између сесија. За додатне примере, видети Јулијину документацију која даје кодове који се могу тестирати унутар Јулијине интерактивне секције или снимањем фајла као .jl екстензија и покренути са командне линије куцањем (на пример): $ 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-битних машинских кодова (нпр. не и за виртуелну машину ) у зависности од платформе коју Јулија користи. Уз неколико изузетака (нпр. либув), стандардна библиотека је самостално уграђена у Јулији. Најзначајнији аспект Јулијине имплементације је брзина, која је често фактор две безе у односу на потпуно оптимизован C код (а самим тим често магнитуда расте брже него у Пајтону или Р-у). (PDF). 2012. Развој програмског језика Јулија је започет 2009. године док је верзија отвореног кода објављена у Фебруару 2012. године. .
Јулија, 0.4 линија, представља распоред који излази једном месечно где су исправљени сви багови и где враћају/додају неке карактеристике.
Тренутне и будуће платформе Док Јулија користи ТНВ (МЦТНВ. 22 July 2013. из ВМНР-а) – Јулија генерише све природне машинске кодове, директно када се функција покрене први пут (небајткод покренут на виртуелној машини, нпр. преко Јаве/Далвика)
Тренутна подршка за новије x86 или старије и386 процесоре и у 0.4.0. 32-битној АРМ архитектури ("Експериментална и рана подршка" уз помоћ "посла у току - за неколико тестова је познато да су неположени, и да се не могу видети" уз помоћ алфа подршке за Распбери Пи 1/2 али "[на АРМv7] Самсунговој хром-књизи [..] Јулија се покреће сасвим добро"), 64-битном АРМv8 и PowerPC.
Јулија2Ц "извор-до-извора" компајлер Јулија2Ц "извор до извора" компајлер се може набавити из Интелове лабораторије. Овај "извор до извора" компајлер је Јулијин форк, који имплементира исту програмску синтаксу као у Јулији, који емитује C код (због компактибилности са процесором) уместо природног машинског кода за функције или целе програме. Компајлер дозвољава анализирање кода на већем ниво него у програмском језику C. .
Белешке
Референце
Спољашње везе
The Julia manual Julia Package Listing – листа свих "регистрованих" пакета
Категорија:Софтвер 2012. Категорија:Слободни софтвер за визуализацију података Категорија:Пројекти слободног софтвера Категорија:Паралелни рачунарски системи Категорија:Објектно-оријентисани програмски језици Категорија:Функционални програмски језици Категорија:Динамички типизирани програмски језици Категорија:Бесплатни софтвер програмиран у Ц-у Категорија:Софтвер са МИТ лиценцом