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

Piotr Fusik piotr w fusik.info
Wto, 17 Kwi 2012, 03:16:46 PDT


Jak dla mnie Perla wyróżnia spośród innych języków filozofia TIMTOWTDI. 
Każdy kod można zapisać w Perlu na wiele sposobów. Do tego samego zadania 
można użyć wielu różnych modułów - co, jak zrozumiałem, uważasz za problem. 
Może i jest to problem, ale myślę, że lepiej mieć wybór, niż go nie mieć.

Rozmawiamy na spotkaniach o wielu różnych technologiach i to mi się podoba. 
W Rubym jest coś fajnego - ok, nauczmy się tego. W C# jest coś nowego - ok, 
spróbujmy to zrozumieć, może to jakoś wykorzystamy. Podejrzewam, że gdybyś 
poszedł na spotkanie javowców i zaczął opowiadać o .NET od razu zostałbyś 
zrugany tylko dlatego, że nie jest to "jedyna słuszna" technologia.

Elementem filozofii Perla jest stwierdzenie, że Perl *nie* jest najlepszy do 
wszystkich zastosowań. Natomiast programiści znający jeden język, 
najczęściej Javę lub C++, będą pisać w nim wszystkie programy i jeszcze 
upierać się przy tym, że to właściwe podejście. Np. przy wprowadzeniu Javy 5 
Sun podał przykład kodu zliczającego słowa w tekście - w Javie 1.4 kod 
zajmował ze 40 linijek, a w Javie 5 może 25, dzięki wprowadzeniu pętli 
foreach (!), typowanych kolekcji oraz konwersji między obiektami a typami 
prostymi. Było to okraszone epitetami zachwytu, jakie to wspaniałe i 
nowoczesne są te nowe konstrukcje Javy 5. Nie będziecie zdziwieni, gdy 
powiem, że w Perlu ten kod dało się zmieścić w jednej linii.

Obserwuję na bieżąco .NET i stwierdzam, że ewoluuje on w kierunku Perla. 
Przykłady:
- LINQ (.NET 3.5) to mocno rozszerzone znane nam od dawna map i grep
- typy dynamiczne (.NET 4) pozwalają odsunąć kontrolę typów do czasu 
wykonania
- w bibliotece standardowej jest już sporo TIMTOWTDI: ConfigurationSettings 
vs ConfigurationManager (.NET 2), SqlTypes vs Nullable (.NET 2), stare 
kolekcje vs generyczne (.NET 2), XmlDocument vs XDocument (.NET 3.5), 
LINQ2SQL vs Entity Framework (.NET 3.5 SP1), Windows Forms vs WPF (.NET 3.5),
 Web Forms vs MVC (.NET 4), itp.
- nowy operator ?? to znany nam od niedawna //
- ogólnie składnia ewoluuje w kierunku krótszego kodu (var, lambdy, nowe 
przeciążenia metod)
- system typów ewoluuje od silnego typowania z deklaracją wszystkich typów w 
kierunku wnioskowania typów lub ich sprawdzania w czasie wykonania
- dokumentacja biblioteki z wersji na wersję zawiera więcej przykładów
- Visual Studio 2010 w wypasionej wersji ma już wbudowane testy jednostkowe 
:)

Pozdrawiam,
Piotr

Dnia 2012-04-15 11:07 Zbigniew Łukasiak napisał(a):

>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
>_______________________________________________
>Warszawa-pm mailing list
>Warszawa-pm w pm.org
>http://mail.pm.org/mailman/listinfo/warszawa-pm
>



Więcej informacji o liście Warszawa-pm