Dziś jest poniedziałek, 13 października 2008 roku (z kalendarza...)

OPT Core Duo

Icon

09.04.2007, 20:01

Projekty

Komentarze (8)

Powrót

W zeszłym tygodniu na stronie WWW Pornela znalazłem artykuł poświęcony systemom szablonów, czyli dlaczego ich używać oraz jak na podstawie ścieżki od "najgłupszego" sposobu (pisania w czystym PHP) do wyspecjalizowanych narzędzi przetwarzania danych (tam: PHPTAL). Jednym z etapów w tekście jest Smarty i OPT przedstawione jako zwyczajna nakładka PHP z tymi samymi problemami, co przy pisaniu na czysto.

Obie te rzeczy mijają się dość mocno z prawdą - w OPT, jak ktoś ma zaśmiecony szablon przypominający groch z kapustą, to jest to wyłącznie jego wina, ponieważ system oferuje na wejściu wystarczająco dużo narzędzi, by tak nie robić, natomiast nawet w Smarty przy pewnym wysiłku ze strony programisty da się pisać dość czytelnie. Zaowocowało to mailem do autora z przykładami paru moich szablonów na OPT będących zaprzeczeniem tez w treści artykułu, jednocześnie przyznając się, że tryb kompatybilności z XML-em najlepszy nie jest, (w sumie ma nie być). Jako że o przekonanie Pornela do samego projektu nie chodziło w myśl zasady "każdy używa tego, co mu pasuje", nie powinna dziwić zatem odpowiedź, gdzie podał zalety oparcia systemu szablonów na XML-u i przyznał słuszność sprawie elegancji kodu.

Przytoczenie tej krótkiej, acz rzeczowej oraz interesującej dyskusji nie jest przypadkowe, ponieważ dała mi impuls do wyobrażenia sobie, jak mógłby OPT wyglądać, gdyby zamiast autorskiego, wyposażony był w rzeczywisty parser XML dający możliwość głębszej ingerencji w XHTML-owe znaczniki, a przy okazji dokładniej kontrolował składnię zarówno szablonu, jak i generowanego wyniku. Warto poprowadzić prace badawcze w tym kierunku, by przekonać się o możliwościach działania takiego systemu. Szkoda tylko, że dopiero gdzieś w drugiej połowie roku, gdy już uporam się z maturą i rekrutacją na studia. O pryncypiach XML-owego kompilatora za dużo napisać teraz nie mogę, jednak jeśli wyniki eksperymentów okażą się obiecujące, powstanie pełnowymiarowy kompilator i trafi on do OPT. Jestem jednak pewien, że wymusi to utratę wstecznej kompatybilności, stąd taki pakiet wypuszczony byłby już jako zupełnie nowa edycja, czyli Open Power Template 2.

OPT2 posiadałby podwójny kompilator, jako że stary jest zbyt dobry i użyteczny, by go się tak brutalnie pozbywać. Przeszedłby on jednak gruntowny lifting związany z uściśleniem składni i wyeliminowaniem niektórych niekonsekwencji, jakie zdążyły do tej pory narosnąć. Dualizm wymusi opracowanie nowej metody tworzenia instrukcji skonstruowanej tak, aby kod mógł współpracować z oboma kompilatorami jednocześnie. Programista nie byłby zmuszony do określenia się na samym początku: scu czy bescu, mogąc dynamicznie dobierać odpowiedni parser do swoich potrzeb.

Źródło inspiracji: już istniejące parsery XML-owe, oczywiście wzbogacone tym, co OPT już potrafi (ponadto, znając życie, uda mi się całą funkcjonalność w kilkunastu kilobajtach zmieścić :)). Czas realizacji: druga połowa 2007 roku, na pewno nie będę zabierać się za to przed wydaniem finalnej wersji Open Power Forms. Tak więc OPT nie mówi "nie" XML-owi i jest gotowy do ekspansji w tym kierunku, tyle że jako kolejna opcja, a nie zamiennik dla autorskiego parsera.

Powrót

Przypisy:

Komentarze

Napisał hwao w poniedziałek, 9 kwietnia 2007 o 21:34

Nie wiem czy spotkałeś się z tym projektem:
http://art.php.pl/Projekt/52

Całkiem ciekawe niektóre rozwiązania :)

Napisał Bob w wtorek, 10 kwietnia 2007 o 08:02

A jeszcze niedawno gdy sugerowałem oparcie OPF na XMLu mówiłeś: nie, bo wolny i w ogóle be. Jaki człowiek zmiennym jest ;)

Napisał Zyx w wtorek, 10 kwietnia 2007 o 08:32

Jeśli już, to napisałem Nie mówię jednak "nie" temu pomysłowi. :P. XML jest wolny i podejmę pracę nad takim dodatkiem do OPF w przyszłości, lecz nie będzie musu jego stosowania i na pewno będzie on cache'owany właśnie z powodu ogólnej wydajności parserów XML. Identycznie w OPT, XML działałby tylko w mechaniźmie kompilatora, czyli raz na długi czas.

Hwao -> wiem, widziałem ten projekt, ale na mój gust jest to z kolei przegięcie w drugą stronę :).

Napisał Bob w wtorek, 10 kwietnia 2007 o 18:25

XT to całkiem ciekawy projekt. Bardzo przyjemnie się w nim pracuje chociaż oczywiście swoje wady też ma. Nie jest takim przegięciem jak phptal i łatwiutko się operuje znając css.
A teraz ciekawostka dla ciebie Zyx bo właśnie próbnie przepisałem swoją prostą stronę domową z OPT na XT.
Pomiar czasu obejmuje blok try/catch. Wewnątrz połączenie z bazą, kilka zapytań (głównie sesja), wczytanie pliku szablonu, nadanie zmiennego tytułu, wyświetlenie.
Wynik OPT (modyfikowany, wyłączone na pewno MT i jeszcze coś z tych ostatnio dodanych funkcji, nie pamiętam już): średnio 0,093
Wynik XT: średnio 0.013

Xt jest 7,15x szybszy niż OPT mimo że operuje na przekształceniach XML. Warto przemyśleć.

Napisał Wielkie G w środę, 11 kwietnia 2007 o 07:46

To by było ciekawe... Co do Xt to już patrzyłem jego ogólne koncepcje, ale już wolę od tego PHPTAL'a :D OPT kiedy przejdzie taką metamorfozę na pewno będzie uznany przynajmniej trochę lepiej przez PorneLa, na razie niestety w jego słowach jest trochę racji... Cóż, trzeba czekać.

Napisał Zyx w środę, 11 kwietnia 2007 o 14:19

Na pewno po metamorfozie będzie najwszechstronniejszym z systemów szablonów - w końcu trzeba się rozwijać w myśl zasady klient nasz pan :).

Napisał Anger w poniedziałek, 30 kwietnia 2007 o 12:29

XT pokazal, ze jest mozliwe calkowite oddzielenie kodu od xhtml. Generowanie tagow xhtml z poziomu kodu php w takim stylu jest bardzo przydatne, ale nie popadalbym w szal.
Uzywam OPT od niedawna i jestem zadowolony, spelnia moje oczekiwania w duzym stopniu, choc korzystam tez z ASP.NET i zaadoptowalbym kilka rozwiazan z platformy MS.
Dobrze zaplanowane i wykonane OPT 2 bedzie jeszcze lepsze i przekona do siebie jeszcze wiecej developerow.

Napisał Zyx w poniedziałek, 30 kwietnia 2007 o 22:05

Pierwsze dokładniejsze szczegóły dotyczące składni i działania opublikowałem na forum projektu. Manipulacji HTML-em z poziomu PHP nie będzie, natomiast będzie ona zapewniona w trakcie kompilacji. Składnia XML będzie sprawdzana, a instrukcje OPT będą mogły ingerować w atrybuty itd. znaczników HTML tak samo, jak w DOM. Inspekcję kodu HTML będzie można wyłączyć i wtedy OPT będzie parsować swoje znaczniki, całą resztę traktując jak zwyczajny tekst (czyli działanie zbliżone do obecnego).

Strona 1 z 1 :: 1

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2008 | Wykonanych zapytań: 2 | Serwer wirtualny zapewnia