Julia是一種高級通用[13]動態編程語言,它最初是為了滿足高性能數值分析計算科學的需要而設計的,不需要解釋器,速度快[14][15][16][17],也可用於客戶端和服務器的Web用途[18][19]、低級系統程式設計或用作規約語言[20]

Quick Facts 編程範型, 設計者 ...
Julia
編程範型多範式多分派, 過程式, 函數式, 元編程, 多階段編程英語Multi-stage_programming
設計者Jeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah
實作者Jeff Bezanson, Stefan Karpinski, Viral B. Shah等[1][2]
面市時間2012年,​12年前​(2012[3]
當前版本1.11.1[4]在維基數據編輯, 2024年10月16日, 41天前
實作語言Julia, C, C++, Scheme, LLVM[5]
系統平台x86-64, IA-32, ARM v8(64位元), CUDA, ARM (32位元), PowerPC, 網頁瀏覽器 (JavaScriptWebAssembly)[6]
操作系統macOS, Windows, Linux, FreeBSD[7], Android[8]
許可證MIT許可證
文件擴展名.jl
網站JuliaLang.org
啟發語言
Close

Julia設計的獨特之處包括,參數多態的類型系統,完全動態語言中的類型,以及它多分派的核心編程范型。它允許並發並行分布式計算,並直接調用CFortran庫而不使用粘合代碼

Julia擁有垃圾回收機制[21],使用及早求值,包含了用於浮點計算、線性代數隨機數生成正則表達式匹配的高效庫。有許多庫可以使用,其中一些(如用於快速傅里葉變換的庫)已經預先捆綁在Julia裡[22]

歷史

一群擁有各種語言豐富編程經驗的Matlab高級用戶,對現有的科學計算編程工具感到不滿——這些軟件對自己專長的領域表現得非常棒,但在其它領域卻非常糟糕。他們想要的是一個開源的軟件,它要像C語言一般快速而又擁有如同Ruby動態性;要具有Lisp般真正的同像性而又有Matlab般熟悉的數學記號;要像Python般通用、像R般在統計分析上得心應手、像Perl般自然地處理字符串、像Matlab般具有強大的線性代數運算能力、像shell膠水語言的能力,易於學習而又不讓真正的黑客感到無聊;還有,它應該是交互式的,同時又是編譯型的。[23]

該項目大約於2009年中開始。

功能

主要用於數值計算。

特點

  • 核心語言非常小。標準庫用的是Julia語言本身寫的
  • 調用許多其它成熟的高性能基礎代碼。如線性代數隨機數生成快速傅里葉變換、字符串處理。
  • 豐富的用於建立或描述對象的類型語法
  • 高性能,接近於靜態編譯型語言。包括用戶自定義類型等
  • 為並行計算和分布式計算而設計
  • 輕量級協程
  • 優雅的可擴展的類型轉換/提升
  • 支持Unicode,包括但不限於UTF-8
  • 可直接調用C函數(不需要包裝或是藉助特殊的API
  • 有類似shell的進程管理能力
  • 有類似Lisp巨集以及其它元編程工具
  • 可與Jupyter notebook 一起使用

示例

生成Mandelbrot集合

function mandel(z)
    c = z
    max = 80
    for n = 1:max
        if abs(z) > 2
            return n-1
        end
        z = z^2 + c
    end
    return max
end

隨機矩陣統計

using LinearAlgebra: tr
using Statistics #导入std, mean等函数

function randmatstat(t)
    n = 5
    v = zeros(t)
    w = zeros(t)
    for i = 1:t
        a = randn(n,n)
        b = randn(n,n)
        c = randn(n,n)
        d = randn(n,n)
        P = [a b c d]
        Q = [a b; c d]
        v[i] = tr((P'*P)^4)
        w[i] = tr((Q'*Q)^4)
    end
    std(v)/mean(v), std(w)/mean(w)
end

參考資料

參閱

外部連結

Wikiwand in your browser!

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.