Famoahana ny fiteny fandaharana Julia 1.8

Ny famoahana ny fiteny fandaharana Julia 1.8 dia misy, manambatra ireo toetra toy ny fampisehoana avo lenta, fanohanana ny fanoratana mavitrika ary fitaovana namboarina ho an'ny fandaharana parallèle. Ny syntax an'i Julia dia manakaiky ny MATLAB, mindrana singa sasany avy amin'i Ruby sy Lisp. Ny fomba fanodinkodinana tady dia mampahatsiahy an'i Perl. Ny kaody tetikasa dia zaraina eo ambanin'ny fahazoan-dàlana MIT.

Ny endri-javatra fototra amin'ny fiteny:

  • Fahombiazana avo lenta: iray amin'ireo tanjona fototra amin'ny tetikasa dia ny hahatratrarana ny fahombiazan'ny programa C. Ny mpamoron-kira Julia dia mifototra amin'ny asan'ny tetikasa LLVM ary mamorona kaody milina teratany mahomby ho an'ny sehatra kendrena maro;
  • Manohana paradigma fandaharana isan-karazany, ao anatin'izany ny singa amin'ny fandaharana miompana amin'ny tanjona sy miasa. Ny tranomboky manara-penitra dia manome, ankoatry ny zavatra hafa, ny fiasa ho an'ny I/O asynchronous, ny fanaraha-maso ny fizotrany, ny fanoratana, ny profiling ary ny fitantanana ny fonosana;
  • Fanoratana dynamic: tsy mila famaritana mazava ny karazana ho an'ny variana ny fiteny, mitovy amin'ny fiteny fandaharana scripting. Fomba ifanakalozan-kevitra notohanana;
  • Fahaizana tsy voatery mamaritra mazava ny karazana;
  • Syntax tsara indrindra ho an'ny informatika nomerika, informatika siantifika, fianarana milina ary fijerena angona. Fanohanana karazana angon-drakitra maro sy fitaovana ho an'ny fampitoviana ny kajy.
  • Ny fahafahana miantso mivantana ny asa avy amin'ny tranomboky C tsy misy sosona fanampiny.

Fiovana lehibe ao amin'ny Julia 1.8:

  • endri-javatra fiteny vaovao
    • Ny sahan'ny structur azo ovaina izao dia azo atao annotate ho tsy miova mba hisorohana azy ireo tsy hiova sy hamelana ny fanatsarana.
    • Ny fanamarihana karazana dia azo ampiana amin'ny fari-piainana manerantany.
    • Ny array n-dimensional tsy misy dikany dia azo noforonina amin'ny alàlan'ny semicolons maromaro ao anaty fononteny efamira, ohatra, ny "[;;;]" dia mamorona array 0x0x0.
    • Afaka manana sakana hafa ny Try blocks, izay tanterahina avy hatrany aorian'ny vatana lehibe raha tsy misy lesoka natsipy.
    • @inline sy @noinline dia azo apetraka ao anatin'ny vatana iray, ahafahanao manisy fanamarihana asa tsy mitonona anarana.
    • @inline sy @noinline izao dia azo ampiharina amin'ny fonction iray ao amin'ny tranokala antso na sakana hanerena ny antso an-tariby mifanaraka amin'izany hampidirina (na tsy tafiditra).
    • ∀, ∃ ary ∄ dia avela ho tarehintsoratra famantarana.
    • Fanohanana fanampiny ho an'ny famaritana Unicode 14.0.0.
    • Ny fomba Module(:name, false, false) dia azo ampiasaina hamoronana maody tsy misy anarana, tsy manafatra Base na Core, ary tsy misy reference ho azy.
  • Fiovana amin'ny fiteny
    • Ny zavatra Task vaovao vao noforonina (@spawn, @async, sns.) dia manana world_age ho an'ny fomba avy amin'ny Task parent rehefa noforonina, ahafahana manatanteraka tsara. Ny safidy fampahavitrihana teo aloha dia azo ampiasaina amin'ny fomba Base.invokelatest.
    • Voarara amin'ny tady sy fanehoan-kevitra izao ny toromarika fandrafetana bidirectional tsy mifandanja Unicode mba hisorohana ny tsindrona.
    • Base.ifelse dia faritana ho toy ny fonction generic fa tsy builtin, mamela ny fonosana hanitatra ny famaritana azy.
    • Ny andraikitra rehetra amin'ny fari-piainana manerantany dia mandeha amin'ny antso hiova (Any, x) na hiova (T, x) raha toa ka nambara ho karazana T ny fari-piainana manerantany. , x) === marina foana ny x, raha tsy izany dia mety hitarika fihetsika tsy ampoizina.
    • Mitovitovy amin'ny asa ankapobeny ankehitriny ny fiasa natsangana ary azo soratana amin'ny alalan'ny programa mampiasa fomba.
  • Fanatsarana ny compiler/runtime
    • Nihena 25% eo ho eo ny fotoana fampandehanana.
    • Ny compiler miorina amin'ny LLVM dia nasaraka tamin'ny tranomboky runtime ho tranomboky vaovao, libjulia-codegen. Izy io dia entina amin'ny alàlan'ny default, ka tsy tokony hisy fiovana mandritra ny fampiasana mahazatra. Amin'ny fametrahana izay tsy mila mpanangom-bokatra (ohatra, sary rafitra izay amboarina mialoha ny kaody ilaina rehetra), ity tranomboky ity (sy ny fiankinany amin'ny LLVM) dia azo esorina tsotra izao.
    • Ny fanatsoahan-kevitra karazana fepetra dia azo atao ankehitriny amin'ny alàlan'ny fandefasana tohan-kevitra amin'ny fomba iray. Ohatra, ho an'ny Base.ifelse(isa(x, Int), x, 0) dia miverina ::Int na dia tsy fantatra aza ny karazana x.
    • Ny SROA (Scalar Replacement of Aggregates) dia nohatsaraina: manafoana ny antso amin'ny getfield miaraka amin'ny saha maneran-tany maharitra, manafoana ny rafitra azo ovaina miaraka amin'ny saha tsy fantatra, manatsara ny fampandehanana sy ny fikarakarana ny antso an-tariby.
    • Ny fanatsoahan-kevitra karazana dia manara-maso ny fiantraikany isan-karazany - ny voka-dratsiny sy ny tsy mitete. Ny fampielezana tsy tapaka dia raisina an-tsaina, izay manatsara ny fahombiazan'ny fotoana fanangonana. Amin'ny toe-javatra sasany, ohatra, ny antso ho an'ny fiasa izay tsy azo fehezina fa tsy misy fiantraikany amin'ny vokatra dia hariana amin'ny fotoana fandehanana. Ny fitsipika momba ny fiantraikany dia azo soratana amin'ny tanana amin'ny fampiasana ny Base.@assume_effects macro.
    • Ny precompilation (miaraka amin'ny toromarika mivaingana mialoha na ny enta-mavesatry ny asa) izao dia mitahiry kaody voafaritr'asa bebe kokoa, ka haingana kokoa ny famonoana voalohany. Ny fitambarana fomba/karazana vaovao rehetra ilain'ny fonosanao, na aiza na aiza no voafaritra ireo fomba ireo, dia azo alaina ao amin'ny fisie precompilation raha antsoina amin'ny fomba iray ao amin'ny fonosanao.
  • Fanovana amin'ny Options Command Line
    • Ny fitondran-tena mahazatra amin'ny fanaraha-maso ny fanambarana @inbounds dia safidy mandeha ho azy ao amin'ny "--check-bounds=yes|no|auto".
    • Safidy "--strip-metadata" vaovao hanesorana ny docstrings, ny mombamomba ny toerana misy azy, ary ny anarana miovaova eo an-toerana rehefa mamorona sary rafitra.
    • Safidy vaovao "--strip-ir" hamela ny mpanangona hanala ny fanehoana kaody loharano mpanelanelana rehefa manangana ny sarin'ny rafitra. Ny sary aterak'izany dia tsy hiasa raha tsy ampiasaina ny "--compile=all" na raha efa natambatra mialoha ny code rehetra ilaina.
    • Raha ny toetra "-" no voatondro fa tsy ny anaran'ny rakitra, dia vakiana avy amin'ny stream input standard ny code executable.
  • Fanovana fanohanana multithreading
    • Threads.@threads amin'ny alàlan'ny default dia mampiasa ny safidy fandaharam-potoana vaovao :dynamique, izay tsy mitovy amin'ny fomba teo aloha satria ny famerimberenana dia halamina amin'ny fomba mavitrika amin'ny kofehy mpiasa misy fa tsy omena amin'ny kofehy tsirairay. Ity fomba ity dia ahafahana mizara tsaratsara kokoa ny tadivavarana miaraka amin'ny @spawn sy @threads.
  • Fampiasana tranomboky vaovao
    • eachsplit(str) hanatanteraka split(str) imbetsaka.
    • allequal(itr) hitsapana raha mitovy daholo ny singa rehetra ao amin'ny iterator.
    • hardlink(src, dst) dia azo ampiasaina hamoronana rohy mafy.
    • setcpuaffinity(cmd, cpus) hametrahana ny fifandraisan'ny fototry ny processeur amin'ireo dingana natomboka.
    • diskstat(lalana=pwd()) hahazoana antontan'isa kapila.
    • Makro vaovao @showtime hanehoana ny tsipika tombanana sy ny tatitra @fotoana.
    • LazyString sy lazy"str" ​​​​macro dia nampiana hanohanana ny fananganana hakamoana hafatra diso amin'ny lalana diso.
    • Namboarina olan'ny concurrency ao amin'ny Dict sy ireo zavatra azo avy amin'ny hafa toy ny fanalahidy(::Dict), soatoavina(::Dict) ary Set. Ny fomba famerimberenana dia azo antsoina amin'ny rakibolana na napetraka, raha mbola tsy misy antso manova ny rakibolana na napetraka.
    • @time sy @timev izao dia manana famaritana azo atao, ahafahanao manisy fanamarihana ny loharanon'ny tatitra momba ny fotoana, ohatra. @fotoana "Evaluating foo" foo().
    • Ny range dia mitaky fiatoana na halavany ho tohan-kevitra tokana tokana.
    • precision sy setprecision dia manaiky ny fototra ho teny fototra
    • Ny TCP socket objects dia manome fomba fanoratana akaiky ary manohana ny fampiasana ny mode half-open.
    • extrema izao dia manaiky hevitra init.
    • Iterators.countfrom izao dia manaiky izay karazana izay mamaritra fomba +.
    • @time izao dia manome ny %-n'ny fotoana lany amin'ny famerenana ny fomba amam-panao misy karazana niova.
  • Fanovana tranomboky mahazatra
    • Keys with value Tsy misy esorina amin'ny tontolo iainana izao ao amin'ny addenv.
    • Iterators.reverse (ary noho izany farany) dia manohana ny andalana tsirairay.
    • Ny asa lava ho an'ny salan'ny karazana sasany dia tsy manamarina intsony ny fihoaran'ny integer. Misy fiasa vaovao, checked_length, misy; misy lojika mifehy ny famindrana bit. Raha ilaina dia ampiasao ny SaferIntegers.jl hanamboarana ny karazana karazana.
    • Ny Iterators.Reverse iterator dia mampihatra ny fanodikodinana tsirairay raha azo atao.
  • Package Manager
    • Tondro ⌃ sy ⌅ vaovao eo akaikin'ny fonosana ao amin'ny sata “pkg>” misy dikan-teny vaovao. ⌅ dia manondro fa tsy azo apetraka ny dikan-teny vaovao.
    • Vaovao lany andro ::Bool argument amin'ny Pkg.status (--lany andro na -o amin'ny fomba REPL) mba hampisehoana vaovao momba ny fonosana avy amin'ny dikan-teny teo aloha.
    • New compat::Bool argument amin'ny Pkg.status (--compat na -c amin'ny fomba REPL) mba hampisehoana ny fidirana [compat] ao amin'ny Project.toml.
    • Mody "pkg>compat" (sy Pkg.compat) vaovao hametrahana ny fidirana mifanaraka amin'ny tetikasa. Manome tonian-dahatsoratry ny interactive amin'ny alàlan'ny "pkg>compat" na fanaraha-maso mivantana amin'ny alàlan'ny "pkg>Foo 0.4,0.5", izay afaka mametaka ny rakitra ankehitriny amin'ny alàlan'ny famitana tabilao. Izany hoe, "pkg> compat Fo " dia havaozina ho azy amin'ny "pkg>Foo 0.4,0.5" ahafahana manitsy ny fidirana efa misy.
    • Ny Pkg izao dia manandrana misintona fonosana avy amin'ny mpizara fonosana raha toa ka manara-maso ny rejisitra misy ny fonosana ny mpizara.
    • Pkg.instantiate dia hamoaka fampitandremana izao rehefa tsy mifanaraka amin'ny Manifest.toml ny Project.toml. Izy io dia manao izany amin'ny alàlan'ny hash amin'ny rakitra deps sy compat an'ny tetikasa (tsy raharahaina ny sehatra hafa) ao amin'ny manifest rehefa mamaha azy io, mba ho hitan'ny fanovana rehetra ao amin'ny Project.toml deps na firaketana compat nefa tsy voavaha indray.
    • Raha tsy mahita fonosana misy ny anarana nomena ny "pkg>add" dia hanolotra fonosana misy anarana mitovy azo ampiana izany.
    • Ny dikan-tenin'i julia voatahiry ao amin'ny manifest dia tsy ahitana ny laharana fananganana intsony, midika izany fa hosoratana ho 1.9.0-DEV izao ny master.
    • Ny fanafoanana ny fitsapana "pkg>" dia ho hita tsy tapaka, ary haverina amin'ny REPL.
  • InteractiveUtils
    • New @time_imports macro hitaterana ny fotoana lany nanafatra fonosana sy ny fiankinan-dohany, manasongadina ny fotoana fanangonana sy fanangonana indray ho isan-jaton'ny fanafarana.
  • Algebra Linear
    • Ny submodule BLAS izao dia manohana ny fiasa level-2 BLAS spr!.
    • Ny tranomboky manara-penitra LinearAlgebra.jl dia tsy miankina tanteraka amin'ny SparseArrays.jl, na avy amin'ny kaody loharano sy ny fomba fijery fitiliana unit. Vokatr'izany dia tsy averina (ankoatra) amin'ny alàlan'ny fomba avy amin'ny LinearAlgebra ampiharina amin'ny zavatra Base na LinearAlgebra intsony ny arrays. Amin'ny ankapobeny, izany dia mitarika ho amin'ireto fiovana manaraka ireto:
      • Ny concatenation mampiasa matrices "sparse" manokana (ohatra diagonal) dia mamerina matrices matevina; Vokatr'izany, ny sahan'ny D1 sy D2 amin'ny zavatra SVD noforonin'ny antso getproperty dia matrices matevina ankehitriny.
      • Ny fomba mitovy (::SpecialSparseMatrix, ::Type, ::Dims) dia mamerina matrix null matevina. Vokatr'izany, ny vokatra avy amin'ny matrices tridiagonal roa-, telo- ary symmetrika miaraka amin'ny tsirairay dia mitarika amin'ny famokarana matrix matevina. Fanampin'izany, tsy nahomby ny fananganana matrices mitovy amin'ny hevitra telo avy amin'ny matrices "sparse" manokana avy amin'ny matrices (tsy statika) noho ny "zero(::Type{Matrix{T}})".
  • Printf
    • %s sy %c izao dia mampiasa ny tohan-kevitra textwidth mba handrafetana ny sakany.
  • Profile
    • Ny mombamomba ny entana CPU izao dia mirakitra metadata ao anatin'izany ny kofehy sy ny asa. Profile.print() dia manana tohan-kevitra groupby vaovao izay ahafahanao manambatra kofehy, asa na subthreads/asa, asa/kofehy, ary kofehy sy tohan-kevitra momba ny asa mba hanomezana sivana. Fanampin'izany, ny isan-jaton'ny fampiasana dia taterina amin'ny ankapobeny na isaky ny kofehy, miankina amin'ny hoe tsy miasa ny kofehy na tsia amin'ny santionany tsirairay. Profile.fetch() dia ahitana ny metadata vaovao amin'ny alàlan'ny default. Ho an'ny fampifanarahana mihemotra amin'ny mpanjifa ivelany amin'ny angon-drakitra momba ny mombamomba azy dia azo esorina amin'ny alàlan'ny fandefasana include_meta=false.
    • Ny maody Profile.Allocs vaovao dia mamela anao hamantatra ny fizarana fahatsiarovana. Voarakitra an-tsoratra ny karazany sy ny haben'ny fitadidiana tsirairay, ary ny tohan-kevitry ny sample_rate dia mamela ny isan'ny famatsiana azo amboarina ho tsindriana, mampihena ny asa ambony.
    • Ny profiling CPU maharitra maharitra dia azon'ny mpampiasa atao izao raha mandeha ny asa nefa tsy mampiditra ny mombamomba azy aloha, ary haseho mandritra ny fandehanana ny tatitra. Amin'ny MacOS sy FreeBSD, tsindrio ctrl-t na antsoy ny SIGINFO. Ho an'ny sehatra hafa, ampio SIGUSR1, i.e. % mamono -USR1 $julia_pid. Tsy hita amin'ny Windows izany.
  • REPL
    • RadioMenu izao dia manohana hitsin-dàlana fanampiny amin'ny fisafidianana safidy mivantana.
    • Ny filaharana "?(x, y" arahin'ny fanindriana TAB dia mampiseho ny fomba rehetra azo antsoina amin'ny tohan-kevitra x, y, .... y " dia mametra ny fikarohana amin'ny "MyModule". Ny fanindriana ny TAB dia mitaky fanerena iray farafahakeliny ho karazana voafaritra kokoa noho ny Any. Na ampiasao SHIFT-TAB fa tsy TAB mba hamelana fomba mifanaraka.
    • Ny fahadisoana eran-tany vaovao dia ahafahanao mahazo ny fanavahana farany, mitovy amin'ny fihetsiky ny ans miaraka amin'ny valiny farany. Ny fampidirana err dia mamerina manonta ny mombamomba ny exception.
  • SparseArrays
    • Namindra ny kaody SparseArrays avy amin'ny tahiry Julia mankany amin'ny tahiry SparseArrays.jl ivelany.
    • Ny concatenation vaovao dia miasa sparse_hcat, sparse_vcat, ary sparse_hvcat dia mamerina karazana SparseMatrixCSC na inona na inona karazana hevitra fampidirana. Nanjary nilaina izany mba hampiraisana ny mekanika amin'ny fametahana matrices rehefa avy nanasaraka ny kaody LinearAlgebra.jl sy SparseArrays.jl.
  • fitrandrahana
    • Ny haavon'ny logging mahazatra BelowMinLevel, Debug, Info, Warn, Error ary AboveMaxLevel dia aondrana avy amin'ny tranomboky Logging mahazatra.
  • Unicode
    • Nampiana asa isequal_normalized hanamarinana ny fitoviana Unicode nefa tsy mamorona tady mahazatra.
    • Ny fiasa Unicode.normalize izao dia manaiky ny teny fanalahidy charttransform, izay azo ampiasaina amin'ny fanomezana sari-tany manokana, ary ny Unicode.julia_chartransform dia omena ihany koa mba hamoahana ny sari-tany ampiasaina rehefa manitsy ny famantarana ny Julia parser.
  • fitsapana
    • '@test_throws "message sasany" triggers_error()' dia azo ampiasaina hitsapana raha misy hadisoana "hafatra sasany" ny lahatsoratra diso naseho, na inona na inona karazana fanavahana manokana. Tohanana ihany koa ny fitenenana mahazatra, ny lisitry ny tady, ary ny fiasa mifanentana.
    • @testset foo() dia azo ampiasaina amin'ny famoronana andian-tsarimihetsika avy amin'ny asa nomena. Ny anaran'ny tranga fitsapana dia ny anaran'ny asa antsoina. Ny fiasa antsoina dia mety ahitana famaritana @test sy @testset hafa, ao anatin'izany ny antso amin'ny fiasa hafa, raha mirakitra ny valin'ny fitsapana manelanelana rehetra.
    • TestLogger sy LogRecord dia aondrana avy amin'ny tranomboky Test mahazatra.
  • nozaraina
    • Ny SSHManager izao dia manohana ny kofehy mpiasa miaraka amin'ny fonosana csh/tcsh amin'ny alàlan'ny fomba addprocs() sy ny shell=:csh parameter.
  • Fiovana hafa
    • GC.enable_logging(true) dia azo ampiasaina hanoratana ny asa fanangonana fako tsirairay miaraka amin'ny fotoana sy ny habetsahan'ny fitadidiana voangona.

Source: opennet.ru

Add a comment