LISP: Tai, kas sena, vis dar yra labai nauja

Sveiki atvykę į mano pirmojo „Bricsys“ tinklaraščio įrašo 1 dalį! Aš rašysiu apie LISP programavimas ir esamo kodo perkėlimas į BricsCAD aplinką. Peržiūrėsiu įgyvendinimą, skirtumus nuo kitų aplinkų, patarimus ir gudrybes bei kitas skaitytojų temas. Arba, jei dar nepradėjote žiūrėti į LISP, galbūt galiu šiek tiek padrąsinti ir pranešti, kad LISP yra gyva ir gera. Tai tikrai kalba, kurią verta apsvarstyti pritaikant BricsCAD.

Pirmiausia leiskite man pasakyti, kad per pastaruosius kelis dešimtmečius parašiau porą šimtų tūkstančių LISP eilučių. Bet aš vis tiek nevadinčiau savęs ekspertu. Aš nežinau visų „vl“ komandų ar kai kurių „sudėtingesnių“ funkcijų. Prašau atleisti, jei pateikiu metodą, kuris nėra pats efektyviausias, arba jei aš siūlau kodo pastraipą, kurią būtų galima pakeisti viena funkcija. Tikėtina, kad net neįsivaizdavau, kad egzistuoja „geresnė“ funkcija! Aš vis dar dažnai klausiu prie „naujų“ (man) komandų. Kai tai darau, dažnai susimąstau, kiek laiko galbūt išgelbėjo ta naujai surasta funkcija.

Prieš kurį laiką klientas manęs paklausė apie mano tęstinį kodavimą LISP. Aš iš tikrųjų maniau, kad tai gali būti pasenusių įgūdžių rinkinys. Pagalvokite apie (rankinio) braižymo įgūdžius ir Vemco braižymo mašinos meistriškumą - dabar jie pasenę! Tačiau kai apžvelgiau realius kliento poreikius, radau vis daugiau priežasčių atnaujinti ar plėtoti naujas LISP funkcijas. Manau, kad bus smagu pasidalinti kai kuriomis iš šių sąvokų su jumis, kad padėtumėte pradėti.

Ar LISP yra „Rosetta“ CAD pritaikymo akmuo?

Pavadinimas „LISP“ kilęs iš žodžių „List Processing“. Duomenys saugomi .dwg failuose kaip sąrašai, o LISP juos skaito, rašo, keičia ir saugo. Geriausia, kad šis kodas nepriklauso nuo platformos. Tai efektyvu, maža ir lanksti. Aš norėčiau, kad kodas būtų kuriamas nekompiliuota kalba. Nors LISP kodo nereikia rinkti, galite užšifruoti programas, kad apsaugotumėte šaltinio kodą. Daugybė programų, kurias prieš dvidešimt metų parašiau apie „vintažinę“ aparatinę / programinę įrangą / OS, vis dar veikia ir dabartinėse BricsCAD versijose su mažai pakeitimų arba be jų.

Neseniai manęs paprašė išspręsti migracijos problemą klientui, kuris perėjo iš „AutoCAD ™ 2014“ į 2016 m. Šios įmonės standartinėje CAD sąrankoje buvo daugiau nei 400 programų failų su 123 000 LISP kodo eilučių ir apibrėžta apie 4000 funkcijų. Po šiek tiek tyrimų sužinojau, kad pagrindinis klausimas buvo susijęs su pora (sukompiliuotų) ARX programų, nesuderinamų su „AutoCAD ™ 2016“. Jų LISP kodas, didžiąja dalimi parašytas devintojo dešimtmečio pabaigoje, veikė nepriekaištingai.

Kai manęs paprašo pasitarti dėl CAD standartų perkėlimo, pirmiausia nustatau, kiek įmonės darbo eiga priklauso nuo 3rd vakarėlių įrankiai. Tada patikrinu, ar jų įrankiams reikia konkrečios programinės įrangos versijų ar platformų. Dažnai vienintelės problemos kyla dėl sunkiai užkoduotų aplankų kelių, kuriuos reikia atnaujinti.

Kodėl LISP naudoti pasirinktinėms CAD programoms?

Taigi, kodėl yra keletas priežasčių kurti pasirinktines programas jūsų CAD aplinkoje? Paprastai rašau kodą proceso ar darbo eigos automatizavimui pagerinti, susijusius su konkrečiais CAD subjektais ar CAD standartais. Įprasta tvarka gali būti tokia paprasta, kaip kelios kodo eilutės. Šios funkcijos gali atlikti sluoksnio manipuliacijas, pakeisti subjekto savybes, automatizuoti piešimą ir XREF ryšius arba padėti standartizuoti braižymo ir paskelbimo darbo eigas.

Arba šios rutinos gali būti tokios pat sudėtingos, kaip parametrais pagrįstas projektavimo procesas arba pritaikymas prieigai prie duomenų bazės automatizuoti. Kaip jau minėjau anksčiau, pagrindinis LISP naudojimo pranašumas yra tiesiog mažas kalbos dydis ir didelis efektyvumas CAD aplinkoje. Šiame pavyzdyje, kurį nagrinėsime šio įrašo 2 dalyje, LISP kodas, kurį naudojant galima lengvai manipuliuoti geometrija (perkelti ir pasukti), gali būti dalis to, ką gali tekti parašyti sudaryta kalba (.NET, C, C ++, et al).

Dėl vietos puslapiuose čia neįtraukiu .NET pavyzdžio. Bet jei tikrai norite pamatyti tai, apie ką kalbu, tiesiog „Google“: „Sukurkite perkėlimo komandą naudodami .NET API“ ir pamatysite keletą pavyzdžių. Šioms sudarytoms kalboms dažnai reikia šimtų ar tūkstančių kodų eilučių, kad būtų sukurtas grafinis elgesys ir intuityvios sąsajos, kurių vartotojai tikisi kasdienėje CAD aplinkoje.

(Šis įrašas bus tęsiamas 2 dalyje)

BricsCAD galite tinkinti pridėdami pasirinktinių programų, parašytų bet kuria iš kelių programavimo kalbų, kurios veikia BricsCAD. Peržiūrėkite čia galimas API.