Portál AbcLinuxu, 4. května 2025 11:22
Self byl první objektový jazyk založený na prototypech a průkopník v JIT kompilaci. Dnes se komunita kolem něj snaží dát jeho vývoji nový impuls a publikovala on-line příručku, která by měla usnadnit zájemcům vstup do jeho objektového světa.
Tiskni
Sdílej:
A ma ta elegance nejake prinosy?(vedle onanie nad tim, jak je to krasne)
Self dokázal něco, co ve vývoji programovacích jazyku bohužel neobjevuje moc často – výrazně vylepšit stávající programovací jazyk jeho zjednodušením. Self doplnil Smalltalk o násobnou a dynamickou dědičnost, rozhraní, lepší práci s jmennými prostory, lepší zapouzdření apod. To vše bez toho, aby mu cokoliv ubral na jeho vyjadřovacích schopnostech.
Self má díky beztřídnímu přístupu podstatně jednodušší základní objektovou strukturu systému. Beztřídní paradigma umožnuje velice snadno vytvářet to, na co se musí bežně používat specializované návrhové vzory.
Nesmírně cenné je, že těchto výhod nebylo dosaženo na úkor efektivity. Pokusně v něm bylo vytvořeno prostředí plně emulující Smalltalk, přičemž se uvádí, že tato implementace byla desetkrát rychlejší než v té době dostupná nejrychlejší komerční implementace Smalltalku.
Aky ma vyznam ta viacnasobna dedicnost? Okrem skolskych prikladov som ju nikde v praxi nevidel. Podla mna je to sposobene 3 vecami: 1) ludia s tym nevedia robit, tak to tak nenavrhnu 2) je len velmi malo situacii, kedy sa to da vyuzit 3)rychlosti programu to neprinesie nic a zmensi to prehladnost kodu/citatelnost clovek, co to neprogramoval
Moj nazor je, ze najpravdepodobnejsia je 3) potom 2) a na koniec 1).
Svůj praktický význam má možnost skládat protokol objektů z více znovupoužitelných složek (traits, mixins...). Osobně jsem se několikrát v praxi setkal s případy, kdy bylo nezbytné implementovat totožné metody u nepříbuzných tříd a kdy takový mechanismus citelně chyběl. Pokud si dobře vzpomínám, tak např. třídy popisující HTML tagy jsou takovým případem.
Možná si zkusit si v tom beztřídním jazyce naprogramovat něco opravdu komplexního, a pak dělat refaktorizaci. Start vývoje je možná rychlejší (něco jako pro mě byl python), ale údržba podle mě mnohem nákladnější než u staticky typovaných jazyků s jednoduchou dědičností + interfaces (Java, C#).
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.