Kilmės iš Wasabi

Išversta su https://blog.fogcreek.com/the-origin-of-wasabi/

Kaip pagrindinis kūrėjas ir prižiūrėtojai Wasabi, aš norėjau parašyti keletą straipsnių apie Wasabi tam tikrą laiką, ir praėjusią savaitę, nusprendžiau pasikalbėti su Joel apie tai. Šiandien, manau, bus pradėti su trumpa istorija, kalba, ir vėliau, aš jums papasakoti apie savo aušintuvo savybės ir kuriose norime imtis ateityje.

Prieš keletą metų Joel ir Michael nusprendė, kad jie norėjo, kad Unix versija FogBugz. Tuo metu, FogBugz buvo jūsų tipiškų ASP programą. Nes išmeta didelę kodas bazę ir nuo nulio paprastai yra bloga idėja, galutinį sprendimą turėjo vidinis rašyti sudarytojas išversti pogrupyje ASP į PHP. Taigi, Thistle gimė. Thistle buvo tokenizer, paprastas analizatorius, ir baigtinio valstybės mašina pagrįstas PHP generatorius. Kartu su Thistle kai darbas buvo atliktas, siekiant normalizuoti tam tikras kodas bazę, kad tilptų į pogrupį, ASP, kad buvo leista. Tai reiškia, kad, tarp kitų dalykų, pakeisti visi skambučiai į CreateObject() su Serveris.CreateObject(), kad tie ryšiai gali būti sulaikytas ir PHP versijas, atitinkamai objektai gali būti sukurtas.

Dėl sąvokų, kurios tiesiog negali būti standartizuoti, ten buvo specialią sintaksę įterpti PHP kodą tiesiogiai ASP. Dagys yra keturi specialūs komentarą žymenys:

  • ‘#A – Šis pasakė Thistle , kad ji buvo įvesti ASP tik blokuoti
  • ‘#P – Šis pasakė Thistle , kad jis buvo įtraukiamas PHP tik blokuoti
  • ‘#E – Šis pasakė Thistle , kad ji buvo išeinant ASP ar PHP blokuoti
  • ‘~! – Tai pasakė thistle kad likusios eilutės buvo PHP kodas

Taigi, šias eilutes būtų rašyti, kokia kalba buvo naudojama HTTP atsakymo:

Response.Write “This is written in ”
‘#A
Response.Write “ASP”
‘#E
‘#P
‘~! print(“PHP);
‘#E

Tai ne gana, bet kodas veikia tinkamai ASP nemodifikuotas ir generuoja šiuos PHP:

print(“This is written in “);
print(“PHP”);

Taigi, su daug mažiau pastangų, nei perrašyti FogBugz, mes turėjome tiek Windows ir Unix versijos FogBugz, ir Thistle ir toliau gauti mažų atnaujinimų, per ateinančius porą metų.

Aš pradėjau ne Fog Creek a Gruodžio 2005 gruodžio, ir mano pirmasis projektas buvo in-house bandymų suite”. Vienas iš tikslų testavimo įrankis buvo tai, kad jis galėtų suteikti kodas aprėptis ataskaitas dėl kiekvieno bandymo. Tai aš pridėta galimybė kurti ASP į Thistle. Idėja rinkti ASP į ASP atrodo kvailas, bet jis buvo labai lengva įterpti kodo aprėpties registravimo informaciją į sukurtą kodą. Kai aš turėjau kodas aprėpties informaciją, galėjau greitai rasti srityse FogBugz, kad nebuvo bandoma.

Kasdien Fog Creek, kurią mes renkame aplink pietų stalo ir smagiai praleisti laiką kartu. Tam tikras temas ir ateiti aplink gana dažnai. (Pvz., kurių Zoolander tematikos Halloween vakarėlį.) Viena tema ypač nuolat ateina per mano pirmas keturių ar penkių mėnesių. Nė viena programavimo kalba egzistuoja, kad daro visus dalykus, kurie paprastai reikalauja keturių. Jums reikia serverio kalba (FB5 tai buvo ASP ir PHP), kliento kalba (tikriausiai JS), turinio kalba (HTML), ir formatavimo kalba (CSS).

Šios diskusijos ir kiti pokalbiai apie funkcijas šiuolaikinio dinaminio kalbomis, pavyzdžiui, Python atvedė prie idėjos, naudojant Thistle, kad naujos kalbos, kad įveikė daugelis problemų, su raštu ASP. Yra daug problemų su ASP, nes Microsoft nebėra, todėl naujų versijų ASP ir neleidžia įdiegti net pagal nutylėjimą nebėra, tų problemų nėra išvykstate.

Mes norėjome padaryti taip, kad kuo daugiau programuotojas klaidų, kaip galima buvo rasti kompiliavimo metu, o ne aplinką. Tai yra, nes ji yra daug lengviau būti pasakyta, kad kintamasis neegzistuoja nedelsiant vietoj to, kad eiti per visą repro-atveju, tik norėdami sužinoti, kad vietoj to, kad nustatyti jūsų klaidų, turite nustatyti klaidos ir pakartoti bandymą.

Taigi aš pradėjau rašyti specifikacijos siūlomas funkcijas ir papildymai, kalba. Po tam tikro diskusijų ir peržiūra iš pradinis rinkinys specifikacijos pradėjau dirbti atnaujinti Thistle. Taigi FogBasic gimė, ir sudarytojas buvo pervadintas fmį. Iš pradžių man reikia atnaujinti kompiliatorius taip, kad jis galėtų dirbti papildomą darbą, todėl tokenizer buvo atnaujintas daugiau visiškai atitiktų turimą žetonų kalba. Aš pridūrė, analizatorius ir sukūrė visiškai abstrakčios sintaksės medis. Tipas tikrintuvas buvo didžioji darbą, nes reikia sugebėti daryti išvadą, jog dauguma tipo informacija iš kodą.

Prieš tipas tikrintuvas buvo pridėta, man reikia išbandyti, kad analizatorius ir naujas PHP generatorius dirbo tinkamai. Taigi po kiekvieno sudaryti norėčiau palyginti sukurtą kodą, kad fmį, sukurtus su Thistle sukurtą kodą, ir kai aš turėjau juos abu kuriančio tą patį kodą, galėjau pradėti pridedant tipas inferencing funkcijų.

Per Vasarą 2006, mes supratau, kad man buvo visiškai dork įvardijimo ji FogBasic, todėl mes turėjome pavadinimų konkursas. Kiekvienas pateikė savo vardą pasiūlymus, ir mes momentinių run-off balsavimo nuspręsti, vardas, mes iš tikrųjų gali naudoti. Paskutiniai du buvo Bone Crusher 3000 ir Wasabi. Taip daug, kaip aš norėjau būti spausdinimo bc3k į komandą, Wasabi laimėjo. Nuo tada Wasabi ir toliau gauti patobulinimus ir beveik visos naujos kodas FogBugz 6 naudoja vieną ar daugiau Wasabi funkcijų.

Kaip šiandien, Wasabi gali generuoti ASP, PHP, JS. Ateityje kalbėsiu apie tai, kaip mes naudojame šių skirtingų kalbų, kaip sumažinome kodo, kad reikia rašyti, kaip Wasabi leidžia mums daryti meta programavimo, ir, kaip matome, Wasabi vystosi ateityje.

 

 

Grįžti į pagrindinį puslapį

Leave a Reply

Your email address will not be published. Required fields are marked *