Naš prejšnji pregled Haxe končal s pogledom na takrat prihajajoči Haxe 4. Z uradno izdajo Haxe 4 (in kmalu zatem dve izdaji napak - različici 4.0.1 in 4.0.2) je čas za nov pregled Haxeja. Kateri so najnovejši dodatki k temu rastočemu programskemu jeziku? Kam je usmerjena skupnost programskega jezika Haxe? So motorji za igre Haxe še vedno njen glavni nosilec?
Z več kot tremi leti razvoja od zadnje večje izdaje različica 4 programskega jezika Haxe izboljša zmogljivost makra, izkušnjo razvijalcev in sintakso. Tri njegove izboljšave se še vedno štejejo za eksperimentalne, vendar jih je vredno izpostaviti: novi cilj bajtkode JVM, podpora za vstavljeno označevanje in ničelna preverjanja varnosti.
Nov cilj bajtkode JVM Haxe 4 omogoča razvoj Jave prek Haxeja nekoliko učinkovitejši, tako da izreže pomemben korak prevajanja: Ni drugega koraka, če bi Javin lastni prevajalnik (javac
) prevedel izhodno kodo Jave iz Haxejevega prevajalnika.
Ta metoda prevajanja s programom Haxe 4 prav tako v celoti odpravlja odvisnost od Java developer kit (JDK) in odpira vrata za interaktivno odpravljanje napak, ki se bo izvajalo v prihodnosti.
Dokler glavna različica hxjava
ni združljiva s Haxe 4, osnovna nastavitev vključuje namestitev Haxeja in Haxeliba, nato zagon haxelib install hxjava 4.0.0-alpha
S tem je razvojni tok preprost:
# transpile directly to JVM bytecode with Haxe (-D jvm would also work): haxe --main HelloWorld --java jar_output --define jvm # run JVM bytecode with Java: java -jar jar_output/HelloWorld.jar
Glede na to, da ima neposredna kompilacija JVM še vedno poskusni status v Haxe 4, je na voljo nekaj opozoril:
Kljub temu je to pomemben korak v pravo smer za vse, ki uporabljajo tehnologije, ki temeljijo na Javi.
JSX, kdo? Haxe 4 omogoča vgrajeno označevanje, tako da lahko razvijalci na primer napišejo HTML neposredno v izvorno kodo Haxe:
var dom = jsx( This is a paragraph.
);
Ker jsx()
tukaj je lahko statična makro funkcija, ki projektu omogoča preverjanje časa prevajanja, ali je oznaka skladna s kakršnimi koli specifikacijami XML-ish, ki jih razvijalec želi implementirati. Ker je sama podpora za XML vgrajena v Haxe API, lahko preverjanje izkoristi Xml.parse()
, vendar za osnovno »XML« razčlenljivost ni potrebna niti ta :
static macro function jsx(expr) { return switch expr.expr { case EMeta({name: ':markup'}, {expr: EConst(CString(s))}): macro $v{'XML MARKUP: ' + s}; case _: throw new haxe.macro.Expr.Error('not an xml literal', expr.pos); } }
Namen te funkcije je pomagati Haxeju potisniti mehurček za razvoj iger (čeprav tudi tam zagotovo uporablja). Dovolj splošno je, da je implementiran na ravni prevajalnika - zato ne potrebuje Haxe API-ja v zgornjem makru - toda preverjanje določenih DSL-jev je naslednje vprašanje za prevajalniško skupino in skupnost. ugotoviti .
Od izuma ničelne reference leta 1965 je vprašanje nične varnosti pogosto težava razvijalcev v nihljivih tipiziranih okoljih, kakršno je programski jezik Haxe. Aleksandr Kuzmenko ocenjuje da se GitHub zaveže, da bo odpravil napake referenčnih ničelnih kazalcev, več kot 10 milijonov.
Haxe 4 ima vgrajene ničelne varnostne makre za čas prevajanja, ki jih je mogoče omogočiti z vključitvijo @:nullSafety
vrstica tik pred dano definicijo. Prihaja v @:nullSafety(Loose)
(privzeto) in @:nullSafety(Strict)
načini in jih po potrebi lahko onemogočite z @:nullSafety(Off)
. Strict
način bo pregledoval klice funkcij za mutacije polja, ki bi lahko dodelile nič, tudi v ničelno varnostno onemogočenem kontekstu.
Razvijalci Ruby se morda sprašujejo, ali je priročen operater varne navigacije (?.
v Rubyju) na radarju. Še ne, toda tako kot pri mnogih vidikih programiranja v Haxeju obstajajo makro za to (upoštevajte, da namesto tega uporablja !.
.)
Dodatki programskega jezika Haxe in podpora Haxe IDE, povezani z DX, omogočajo izkušnjo Haxe 4 vsaj na ravni drugih programskih jezikov na različnih področjih. Na nek način skuša Haxe biti vse za vsakogar, vendar se skupina prevajalcev premišljeno loti vključevanja najbolj uporabnih funkcij in konvencij iz drugih jezikov.
Rezultat tega je, da se programski jezik Haxe in standardni API razvijata, ne da bi ogrozili njihovo stabilnost, občutljivost in povezanost. V tem pregledu Haxe se ne bo vse zdelo hype vredno, in ravno to je bistvo: DX se izboljšuje in to je v prid preprostemu lovljenju bleščečih »funkcij dneva . '
Vendar je treba najti ravnovesje: spremembe Haxeja se izvedejo z zavedanjem vzorcev, ki jih upoštevajo drugi jeziki, in Haxe 4 se vsekakor trudi, da bi pritegnil novince iz bolj priljubljenih jezikov.
Ob tej opombi Haxe zdaj podpira dva glavna načina predstavitve vrst funkcij. Stara sintaksa 'nakazuje, da sta podprta samodejno kuriranje in delna uporaba, vendar ne,' pravi prvotni predlog funkcije :
Int -> String -> Void
Nova sintaksa omogoča imenovane argumente, ki izboljšujejo DX:
(id:Int, name:String) -> Void
Toda poleg DX je uporaba nove sintakse Haxe 4 za tipe funkcij dobra navada, saj lahko staro, slabšo sintakso v prihodnji večji različici odstranimo.
Morda ni prelomno, vendar bodo sintaksične izboljšave Haxe 4 dobrodošle novice tako za obstoječe razvijalce Haxeja z določenim razvojnim ozadjem (ES6, na primer) kot tiste, ki bodo morda prvič prišli iz njih v Haxe.
Sintaksa funkcije puščice (»kratka lambda«) je zdaj podprta, kar je v Haxejevem primeru bolj ali manj zgolj bližnjica za tipkanje function
in return
. Sintakse ponovitve ključ-vrednost in indeks-vrednost (za zemljevide oziroma polja) sta zdaj tudi podprti. Izjave o tipih z uporabo statičnih razširitev lahko uporabijo samo eno using
izjavo globalno, namesto da bi jih povsod potrebovali, se uporabljajo ustrezne metode statične razširitve.
Enum in enum abstracts imajo nekatere druge izboljšave, med katerimi je ena ta, da so slednji prešli iz področja uporabe makrov na neposredno podporo prevajalniku. Druge funkcije, ki se premikajo podobno, vključujejo končne razrede, končne vmesnike in zunanja polja .
Nekatere funkcije, ki se zanašajo na makre, so ostale odvisne od makrov, vendar so se kljub temu izboljšale. Preobremenitev operaterja je bila izravnana tako, da je vključevala nastavitve polja in metapodatki je zdaj mogoče razdeliti imena z .
ločila kot v @:prefix.subprefix.name
.
Klicanje zgornjih sprememb skladenjski sladkor je sicer preveč poenostavljeno, toda bralci so dobrodošli, da se poglobijo v prvotne predloge, povezane s Opombe ob izdaji Haxe 4 kjer potrebujejo več podrobnosti.
Medtem ko je bilo interaktivno odpravljanje napak že mogoče v Haxeju za različne sestavljene cilje , novo eval
target omogoča interaktivno odpravljanje napak za interpretirano kodo. Za preprost primer lahko vzamete kateri koli imenik projektov vadnice Haxe 'Hello, World', dodate datoteko z imenom whatever-you-want.hxml
videti tako:
--main HelloWorld --interp
… In dobite interaktivno odpravljanje napak v ID-ju VSCode preprosto tako:
Ta funkcija vam omogoča tudi interaktivno razhroščevanje kode makra na enak način, tudi če dejansko prevajate za določen cilj, na primer java
(namesto da bi uporabili --interp
). Edina zahteva namestitve poleg Haxeja in VSCode same je Razširitev Haxe VSCode .
Če govorimo o IDE-jih, Haxe 4 uvaja nov protokol storitev IDE, ki je že uporabljen v najnovejši razširitvi VSCode Haxe, vshaxe. Poleg pomembnega povečanja zmogljivosti to omogoča vshaxe, da nudi nekaj izjemno koristnih izboljšav DX, med drugim:
Veliko lažje je videti njihovo vrednost prek odlične vizualne predstavitve iz ustreznega dnevnika sprememb vshaxe . vshaxe
z VSCode ni edini Haxe IDE v okolici - HaxeDevelop in Kode Studio sta specifična za Haxe, obstajajo pa tudi vtičniki Haxe IDE za IntelliJ IDEA, Sublime Text, Atom itd., toda zdi se, da je pred vsemi v smislu uporabo novega protokola storitev IDE Haxe 4, ki mu sledi tesno IntelliJ-Haxe .
Razvijalci, ki želijo uporabiti prave Unicode nizne literale, bodo to našli v Haxe 4, vendar obstajajo nekaj odtenkov zavedati se.
Standardni Haxe API ima zdaj matrike samo za branje. Uporaba je tako enostavna kot razglasitev spremenljivke za tip, na primer haxe.ds.ReadOnlyArray
, po katerem poskuša nastavitev, potiskanje ali pojavljanje vrednosti povzroči različne napake prevajalnika. Dodajte final
ključna beseda za deklaracijo in tudi prerazporeditev same matrike ne bo dovoljena.
Vstavljanje klicnih mest je nova funkcija jezika Haxe, ki razvijalcem omogoča natančen nadzor nad tem, kje so funkcije vstavljene, kar je koristno pri optimizaciji pogosto klicanih funkcij, pri katerih bi lahko bil splošni kompromis glede velikosti in zmogljivosti sicer odločitev z izgubo.
To so vredni dodatki že tako odličnemu programskemu jeziku Haxe. Kaj so razvijalci v stavbi skupnosti Haxe zdaj, ko Haxe 4 ni več?
V bazi uporabnikov Haxe so v preteklosti prevladovali programerji iger. Vendar obstajajo veliko primerov uporabe Haxeja - v obsegu - v drugih segmentih, na primer v poslovnih sklopih, mobilnih aplikacijah in spletu, za prednji in zadnji razvoj.
V ta namen Haxe 4 dobavi regenerirane HTML eksterne, kar pomeni, da Haxe's js.html
standardni API je bil posodobljen s širšim spletnim API-jem, kot ga opredeljuje MDN, pa tudi odpravljanje napak in dodajanje manjkajočih API-jev. (Na primer, Haxe 4 zdaj vključuje potisni API .)
V govoru Jurja Kirchheima, Tkanje boljšega spleta s Haxejem opozarja na primere spletnih rešitev, ki temeljijo na Haxeju, ki so v podjetniškem okolju veliko bolj učinkovite, hkrati pa tudi bolj robustne.
Trdi tudi proti arhitekturnemu pristopu Rails (v smislu hierarhije map), vendar lahko razvijalci, ki podpirajo popoln spletni okvir a la Rails, še vedno lahko najti enega . Včasih lahko razvijalcem koristi, če pregledajo vir celotnega spletnega projekta, v tem primeru si ga je vredno ogledati javni repo za Giffon , platforma za množično obdarovanje, ki podpira Haxe 4. Prav tako spletne osredotočene odprtokodne knjižnice Haxe, kot je delitev JavaScript Haxe Modular , generično thx.core in njene sestrske knjižnice in častitljivi spletni priročnik Haxe Zvončica vsi že podpirajo Haxe 4. Podpira tudi rešitev za uporabniški vmesnik med različnimi platformami HaxeUI , ki podpira spletni kontekst, vendar je usmerjen v veliko širši obseg, vključno z razvojem poslovnih in namiznih aplikacij; še posebej vztrajno je dozorevala do izdaje novega jezika Haxe.
Splet, igre, podjetja ... ne glede na okus platforme in aplikacije, na katero cilja razvojna skupina - tudi ena ekipa - se bodo razvijalci Haxe sčasoma morali spoprijeti z upravljanjem odvisnosti. V ta namen so koristen vir za razvijalce Haxeja diapozitivi iz govora Adama Breecea, Dobro skaliranje z drugimi .
Ali sploh obstaja en sam 'najboljši' jezik za razvoj iger? To je subjektivno vprašanje, o katerem je enostavno najti burne razprave. Večji, kot bi lahko pričakovali samo od velikosti njegove skupnosti, uspeh Haxeja na področju razvoja iger zagotovo ni naključen. Joe Williamson ponuja nekaj vpogleda v to, zakaj bi to lahko bilo intervju o zmagi na igrišču Ludum Dare 45 v letu 2019 , in zdi se, da se bo to nadaljevalo s Haxe 4.
Prvotni ustvarjalec Haxeja, Nicolas Cannasse, že uporablja Haxe 4 v produkciji s Shiro Games ' Northgard . Motion Twin v produkciji uporablja tudi Haxe 4 Mrtve celice . Obe igri imata na desettisoče pozitivnih ocen v Steamu in sta na voljo tako za osebne računalnike (Win, Mac in Linux) kot za konzole - res mogočen rezultat, saj imata obe igri manj razvojnih skupin, uporabniške baze pa milijonske. Dead Cells ima celo različico iOS, na radarju pa je tudi različica Android.
V knjižničnem pogledu več glavnih igralnih mehanizmov Haxe zagotovo sledi spremembam Haxe 4. Vključujejo motorje, združljive s Haxe 4 Kha (in del številnih motorjev, zgrajenih na njej - npr. Orožarna ), HaxeFlixel in njegova glavna odvisnost OpenFL , NME , in Kupe —Naravno, saj to uporabljajo Northgard in Dead Cells. HaxePunk dela tudi na združljivosti Haxe 4; v enem primeru knjižnica, Nape, je bil razcepljen za delo s Haxejem 4.
Nekateri razvijalci izdelujejo tudi lastne motorje, namesto da bi uporabili enega izmed mnogih, ki so že na voljo. Na primer Kirill Poletaev, ki podrobno opisuje kako in zakaj napisal je svoj lastni stroj za igre 3D Haxe. Ker je omenjeni motor interni, je smiselno, da gre za en primer projekta, ki še ni migriral na Haxe 4.
S Haxe s tako široko uporabnostjo se najpomembnejše funkcije Haxe 4 razlikujejo glede na razvijalce, zato ta pregled Haxeja nikakor ni izčrpen. Zgoraj manjkajo nekatere spremembe v programu Haxe 4, med drugim:
hx3compat
) in ciljev (PHP5 in kmalu AS3 )-lib
-uporaba .hxml
datoteke bodo na primer treba spremeniti v -L
ali --library
).final
zdaj je ključna beseda (ki je zato ni mogoče uporabiti kot ime spremenljivke), operator
in overload
so tudi na novo rezervirane ključne besede.Prišlo je tudi do nekaj lomljivih sprememb, vendar jih je tako malo, da se številne aktivno vzdrževane knjižnice niti ne trudijo, da bi izrecno objavile združljivost Haxe 4 - na splošno naj bi bila selitev s Haxe 3 dokaj enostavna. Navsezadnje je eden od ciljev Haxeja stabilnost sredi žongliranja podpore velikemu številu ciljnih platform in Haxe 4 tukaj ne razočara.
Kaj pa novi uporabniki? Na koncu je na bralcu, da se odloči, ali je Haxe najboljši kodni jezik za igre, ali ekosistem Haxe ponuja najbolj robustne knjižnice za spletni razvoj ali orodje, specifično za Haxe, daje najbolj smiseln DX za določen potek dela. Haxe je še vedno uspešen kandidat v mnogih prostorih in ponuja nekaj skrivne prednosti za skoraj vsakega razvijalca.
Nadaljnje branje: Razvijalce, ki so novi v Haxeju, lahko zanima dokaj nova vadnica za Haxe avtorja John Gabriele in tudi opombe ob izdaji Haxe 4.1.0 in Haxe 4.1.1 .
Obstaja več okvirov za več platform, kot sta React Native in Xamarin, vendar lahko Haxe uporabljamo za razvoj aplikacij za več platform iz ene kode z ali brez ogrodja. Predvsem React Native ima na voljo zunanje primere Haxe, kar pomeni, da ga je mogoče razviti z uporabo Haxeja.
Medtem ko je Java pogosto prvi jezik, o katerem se razpravlja v kontekstu več platform, ima Haxe še širši nabor ciljev: zmožen je preslikati na Javo, pa tudi na C #, C ++, JavaScript, PHP in številne druge. Ker je Haxeju uspelo obdržati toliko tarč, medtem ko je izpopolnil njegovo uporabnost, je tu nedvomen kandidat.
Razvoj iger obsega velik spekter, zato je najboljši programski jezik za igre odvisen tako od programerja kot od projekta. Primer za Haxe je, da ponuja edinstveno izpopolnjen jezik, hkrati pa lahko hkrati cilja na sisteme Win / Mac / Linux, iOS / Android, HTML5 in konzole iz ene kode.
Stroji za razvoj iger so knjižnice programske opreme, ki zagotavljajo običajne (ali včasih popolne) funkcionalnosti igralnih mehanizmov. Igralni mehanizem je sestavljen iz osnovne kode, ki je potrebna za obdelavo sredstev, uporabniških vtičnikov itd. Za zagotavljanje izkušnje z igrami. Stroj za razvoj iger lahko vključuje svoj IDE in druga posebna orodja.