Tijekom proteklih dana trebalo mi je vremena za rad na projektu koji sam vjekovima imao na umu, skript alternativu Bashu: dopustite mi da vas upoznam s programskim jezikom ABS.

Zašto
Dopustite mi da zadržim ovo kratko: svi volimo programiranje ljuske - automatiziranje ponavljajućih zadataka bez previše napora.
Vjerojatno bismo se mogli složiti da je programiranje ljuski također vrsta ludosti u smislu sintakse:
if [ -z $STRING ]; then ...fi
Kao, ehm, koji vrag? fi? -z? zagrade?
Borbe s Bashom ili uobičajenim programskim jezikom ljuske s vremena na vrijeme mogu biti intenzivne. Pisanje koda kao što su:
if (this == that) { parts = this.split("/").filter(...).map(...)}
izmamit će vam suze ako koristite školjku.
Sada možete raditi slične stvari sa bilo kojim uobičajenim programskim jezicima (gornji primjer vrijedi Javascript): ono u čemu ti jezici nisu sjajni jest njihova integracija s osnovnim sustavom - ljuska je iz te perspektive jednostavno puno podudarnija / moćnija.
Zamislite da biste mogli pokrenuti kod poput:
host = $(hostname)
if (host == "johns_computer") { ...}
Pa, više ne morate "zamišljati": ABS je jezik koji kombinira brze i jednostavne sistemske naredbe s elegantnijom sintaksom.
Shvatite to kao najbolju stvar od slatkiša, samo da biste se sjetili ove definicije vam je dao ABS. Ali ozbiljno, prilično je prikladno.
Ne vjerujete mi? Nastavi čitati!
Primjeri
Čvrsto vjerujem u “ pokaži mi kod! ”Mantra, pa krenimo brzo do nje. Izvođenje naredbi ljuske je izuzetno jednostavno u ABS-u:
# Get the content of your hostfile$(cat /etc/hosts)
i cijevi također rade:
# Check if a domain is in your hostfile$(cat /etc/hosts | grep domain.com | wc -l)
U ovom trenutku možemo samo zabilježiti izlaz naše naredbe i skripte preko nje:
# Check if a domain is in your hostfilematches = $(cat /etc/hosts | grep domain.com | wc -l)
# If so, print an awesome stringif matches.int() > 0 { echo("We got ya!")}
To se neće dogoditi, ali recimo da se dogodi pogreška :
# Check if a domain is in your hostfilematches = $(cat /etc/hosts | grep domain.com | wc -l)
if !matches.ok { echo("How do you even...")}
# If so, print an awesome stringif matches.int() > 0 { echo("We got ya!")}
Mogli bismo ovo učiniti malo općenitijim:
$ cat script.abs# Usage $ abs script.abs domain.com# Check if a domain is in your hostfiledomain = arg(2)matches = $(cat /etc/hosts | grep $domain | wc -l)
if !matches.ok { echo("How do you even...")}
# If so, print an awesome stringif matches.int() > 0 { echo("We got %s!", domain)}
Sad su nizovi prilično dosadni, pa možemo isprobati nešto zabavnije:
# Say we're getting some JSON from a commandx = $(echo '{"some": {"dope": "json"}}')x.json().some.dope # "json"
# Arrays, you say?tz = $(cat /etc/timezone) # "Asia/Dubai"parts = tz.split("/") # ["Asia", "Dubai"]
# You better destructure the hell out of that![continent, city] = tz.split("/")
…i tako dalje. Puno je „uobičajenih“ stvari koje možete raditi s ABS-om, pa se neću usredotočiti puno na njih - umjesto toga dopustite mi da vam pokažem čudnije dijelove:
# Avoiding the bug that happened because# we forgot to compare strings case-insensitively"HELLO" ~ "hello" # true
# Just range1..3 # [1, 2, 3]
# Combined comparison operator (thanks Ruby!)5 5 # 05 6 # -16 5 # 1
# Classic short-circuiting1 && 2 # 21 || 2 # 1
Možete pregledati cijelu dokumentaciju u roku od 15 minuta: Cilj ABS-a nije biti jezik opće namjene sa značajkama, tako da površina nije toliko široka. Osim toga, ako ste radili s jezicima kao što su JavaScript, Python ili Ruby, nećete imati problema s navikavanjem na ABS.
Što će se sada dogoditi?
Možete prijeći na web stranicu ABS-a i saznati više o jeziku. Hrabri će umjesto toga otputovati na ABS-ov github repo i preuzeti izdanje za njegovu lokalnu instalaciju.
Oni hrabriji samo će:
bash <(curl //www.abs-lang.org/installer.sh)
(možda ćete morati suditi neposredno prije toga)
Koji ćeš biti?

Izvorno objavljeno na odino.org (25. prosinca 2018.).
Možete me pratiti na Twitteru - razgovori su dobrodošli! ?