[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