Miaj unuaj veraj paŝoj kun Lispo

Mi havis libertempon dum la pasintaj du semajnoj kaj mi uzis duonon de la oportuno por esplori novan lingvon. Mi legis kelkfoje iom pri la lingvo, sed neniam restis en la lingvo sufiĉe longe por profunde krei ion aŭ pensi en ĝi.

Mia historieto kun Lisp:

Mi verŝajne unue aŭdis pri Common Lisp el Kiel fariĝi Kodemulo (How to Become A Hacker de Eric S Raymond) dum la malfruaj 1990-aj jaroj. En tiu artikolo li rekomendas lerni la lingvon, eĉ se oni ne povas uzi ĝin ĉiutage, sed por ŝanĝi la pensmanieron kiel programisto. Ekde tiam mi volis lerni ĝin, sed neniam povas fari tion. Alie, mi lernis Haskelon kaj simila al Lispon ĝi influis mian programistan pensmanieron tamen mi ne povis uzi ĝin ĉiutage aŭ profesie iukaze.

Emakso

Kiam mi ekuzis Emakson kiel mia ĉiutaga redaktilo, ĝi instigas min lerni elispon kaj mi trovis min mirigata pro ĝi. Malkiel tradukitaj lingvoj, Emakso estis kiel vivanta sistemo, kie mi povas demandi ĝin fari ion kaj ĝi respondis. Mi kutimiĝis al tia interago kun programoj, sed ne kun programlingva sistemo. Mi scias ke Smalltalk estas simila, sed ankaŭ ne esploris ĝin profunde. Reen al Emakso mia kompreno de programa medio kaj mia interago kun ĝi ŝanĝiĝis.

Flanke, profesie mi komencis doni prezentaĵojn pri kiel krei programtradukilojn ene de alia lingvo kaj kiom facila tio povas esti. Dum horo mi montras kiel krei petlingvan tradukilon kiu situas inter neteknika uzanto kaj kelkaj datumsistemoj. La uzado de tradukilaj konceptoj helpas krei programkodon prizorgeblan kaj kompreneblan.

Kion mi kreis:

Kiam mi finfine venas al mia libertempo dum la pasintaj semajnoj mi decidis krei programon helpi min pritrakti podkaston. Ĝi postulas REST interfacon, MP3 analizilon kaj datumbazan parton.

Kion mi lernis:

Makrooj estas bonaj kaj unikaj. Lispo uzas la saman sintakson por la programo kaj por listoj, kiu ŝajnas strange ĝis la uzado de makrooj. Per makrooj vi povas manipuli kodon same kiel la datumo de la programo. Vi jam alkutimiĝis al tia manipulado dum la kutima programado. Ekzemple, eblas krei makroon kiu akceptas formon kaj la makroo povas disigi la "kodan" liston kaj ŝanĝi la partoj en funkcian difinon, aŭ multajn, aŭ kelkajn funkciajn definon kaj datumtipan difinon. Mi finfine komprenas kiel oni facile povas krei abstraktan sistemon ene de lispon tajloritan por la problemspacon. La eta sintakso de lispo ne limigas vin etendi ĝin por via celo. Oni ankaŭ povas krei novajn stirstrukturojn. Eĉ en lingvo kiel Rubeno, kiu havas blokojn paseblajn, ne estas facile pasi kelkajn blokojn al funkcio, sed per makrooj tio estas facile kaj ĉiutage okazaĵo. En Haskelo mi ŝatis la strukturon de unuaĵaj kombinaĵoj por sintaksaj analiziloj kaj neniam trovis ion similan en aliaj lingvoj, sed nun mi facile povas pripensi pri kiel fari tion lispe. Eĉ CLOS (la objekta sistemo de lispo) kreiĝis kiel kodoteko kaj ne postulis ŝanĝon de la tradukilo.

Reen al kion mi kreis:

Mia podkasta programo ne postulas multajn makroojn, sed mi jam havis kelkajn oportunojn kaj kiel mi kreskigas la programon mi vidas eblecojn krei pli bonajn abstraktaĵojn.

Fino

Mi ŝatas la laboron mi havas nun, sed scivolas kiom firmaj dungas lispajn programistojn. Estas malgaje malmultaj. Eble ne gravas, mi nur povas krei mian propran sistemon kaj publikigi ĝin. Kiel mi trovas aliajn interesaĵojn eble mi verkos artikolojn. Mi nur timas ke aliaj lingvoj ne plu ŝajnos kapablaj.