[Warszawa-pm] Marketing Perla, CPAN, decoupling itp

Zbigniew Łukasiak zzbbyy w gmail.com
Nie, 15 Kwi 2012, 02:07:16 PDT


Niedawno chromatic znów przypomniał o temacie marketingu perla:
http://www.modernperlbooks.com/mt/2012/04/perl-and-that-dirty-word.html

Jak dla mnie to jedyne co naprawdę wyróżnia Perl spośród innych
języków skryptowych to CPAN - i każdy komunikat marketingowy powinien
przede wszystkim o tym mówić.

Ale z drugiej strony każdy kto używa CPANa szybko zauważy, że jest on
dużo mniej użyteczny i dużo trudniejszy w używaniu niż mogłoby się
wydawać na pierwszy rzut oka.  Dlaczego?

Jedną z odpowiedzi jest to, że biblioteki prawie nigdy nie są tak
uniwersalne i gotowe do 'reuse' niż się wydaje na początku.  To
problem uniwersalny i pewnie nie da się go rozwiązać całkowicie - ale
myślę, że całkiem sporo można tutaj poprawić - na przykła właśnie
przez 'dzielenie problemów na mniejsze' -
http://perlalchemy.blogspot.com/2012/04/breaking-problems-down-and-defaults.html

Przykład - NaiveBayes - algorytm jest dość szczegółowo opisany w
http://faure.iei.pi.cnr.it/~fabrizio/Publications/ACMCS02.pdf - ale
mamy trzy różne implementacje na CPANie:

http://search.cpan.org/~kwilliams/Algorithm-NaiveBayes-0.04/lib/Algorithm/NaiveBayes.pm
http://search.cpan.org/~logie/Data-Classifier-NaiveBayes-0.001/lib/Data/Classifier/NaiveBayes.pm
http://search.cpan.org/~vlado/AI-NaiveBayes1-2.006/NaiveBayes1.pm

Dlaczego?  Pierwszy był oczywiście Altorithm::NaiveBayes - ale
najwyraźniej nie był wystarczająco uniwersalny (pomimo używania aż
trzech różnych 'modeli':
http://search.cpan.org/~kwilliams/Algorithm-NaiveBayes-0.04/).  Moim
zdaniem brakuje tutaj podziału na część kategoryzującą i część uczącą
się (budującą model używany przez część kategoryzującą).  Część ucząca
może realizować różne strategie - takie jak 'wygaszanie' starszych
przykładów - z tego co zrozumiałem te dwie nowsze biblioteki stworzone
zostały właśnie po to, żeby móc realizować strategię uczenia bez
'wygaszania'.

--
Zbyszek


Więcej informacji o liście Warszawa-pm