Wpis z mikrobloga

#programowanie #javascript #webdev

Czy opracowano już standard do wzorca projektowego Memoization (wzorzec zapamiętywania)?

Jeśli nie to oceńcie to:

Wiadomo, że Memoization nie może być włączony dla każdej funkcji bo przydatne jest tylko w szczególnych przypadkach kosztownych funkcji i powtarzających się wartości parametrów. Dlatego musi być włączany ręcznie przez programistę.

Proponuję to:

function fun (par1, par2) {
// code
mem-return variable;
}

I samo polecenie mem-return zamiast return zmienia funkcję w tryb Memoization.

Co sądzicie?
  • 9
@look997: ale "mem-return" to jest Twoja funkcja, czy chciałbyś aby było to wyrażenie w języku?

Moim zdaniem, to gdy wejdą dekoratory do języka (https://github.com/wycats/javascript-decorators) to włączenie memoizacji będzie bardzo proste.

Obecnie dekoratory mają stage równy 2 (draft), więc jest jakaś szansa, aby .. za kilka lat były w specyfikacji ;)

Kiedyś zrobiłem testy Babela (transpilera nowych specyfikacji języka do ES5), które nie zakończyły się w 100% pozytywnie, bo nie mogłem
@look997: dekoratory, adnotacje, jeden kit, działa podobnie, ciągle mylę ;)

Jeśli chodzi o dodanie standardowego dekoratora, to możemy tak powiedzieć o dowolnej funkcji/obiekcie/bibliotece - dajmy na to, że ja potrzebuję często generować ciągi fibonacciego, więc też proponuję wrzuć taką funkcję do standardowej biblioteki, bo mi będzie łatwiej i będzie on lepiej zoptymailzowany :) Warto po prostu mieć umiar w tym, co wrzucamy do standardowej biblioteki.
@look997: Nie wiem. Demokracja pewnie. Choć w JS ostatnio raczej stawiają na dodanie rzeczy, które teraz hamują rozwój, zamiast na narzędzia, które mogą istnieć bez wrzucenia do standardu.
Same adnotacje/dekoratory są obecnie niejako "workaroundem" i muszą być transpilowane do JS, aby działały w każdej przeglądarce. Za to biblioteka do memoizacji (korzystająca np. z dekoratora) będzie już działać poprawnie, o ile sam dekorator będzie dostępny w języku. Tu widać, co ma większy