The no framework JS framework

Posted in javascript, programowanie on listopad 22nd, 2011 by Wojciech Soczyński – 15 Comments

From some time (2+ years) we can observe a huge explosion of different  Javascript frameworks. These frameworks divide mainly into two categories

  1. UI widgets / DOM manipulation frameworks
  2. class based type system frameworks

In this post I would like to focus on the latter. Every time is see a new framework of this type popping on the news I tend to ask myself the same question – why ? Why one does write all does frameworks, why people so much need classes in Javascript ?

read more »

Kierunek Babilon pt.3 – jak wygląda development w Javie ?

Posted in java, php, programowanie on październik 16th, 2011 by Wojciech Soczyński – 23 Comments

Dewelopment w Javie fundamentalnie różni się od flow do którego jesteśmy przyzwyczajeni w przypadku aplikacji Pehapowych. Wynika to przede wszystkim z samej „natury” obu platform – PHP jest językiem interpretowanym, natomiast Java kompilowanym. Wobec tego, tworzenie, czy zmiana kodu wygląda zupełnie inaczej.

read more »

Google Dart – pierwsze wrażenie

Posted in javascript, php, programowanie on październik 10th, 2011 by Wojciech Soczyński – 13 Comments

Dzisiaj Google zaprezentował na blogu chromium pierwsze informacje na temat swojego nowego języka „Dart”. Dart prezentowany jest przez firmę z Mountain View jako język do „strukturalnego programowanie webowego”, mający docelowo zastąpić Javascript w roli głównego narzędzia do pisania aplikacji webowych po stronie przeglądarki. Postanowiłem przyjrzeć się szybko jak język ten wygląda i podzielić się pierwszymi wrażeniami jakie mi przyszły do głowy. W dalszej części artykułu, będę się opierał na jednym z artykułów, który jest mini tutorialem do Darta i przedstawia dość obszernie kod, który zwykle jest używany przez programistów jak i różne Dartowe smaczki.

Na pierwszy rzut oka Dart wygląda na kolejny klon Javy / C# z większym podobieństwem do C#. Jak każdy w miarę nowoczesny język posiada funkcje anonimowe i domknięcia. Jest oparty na klasach więc większość osób łatwo się w nim odnajdzie. Jest to główna i fundamentalna różnica pomiędzy Dartem a Javascriptem, oprócz oczywiście składni. Poza tą różnicą Dart wspiera DSL (domain specific languages), dzięki temu, że podobnie jak w Scali, operatory są tak naprawdę zwykłymi metodami, czyli mamy możliwość wywoływania metod bez użycia kropki. Dart wspiera też opcjonalne typowanie – możemy zadeklarować typ zmiennej i będzie on sprawdzony w czasie kompilacji.

Jeżeli porównamy Darta do PHP, to oprócz wcześniej wymienionych ficzerów jedyną w zasadzie różnicą będzie obsługa funkcji akcesorowych znanych z C# (metod prefiksowanych przez get/set).

Dart posiada jeszcze kilka mniej znaczących smaczków, które są głównie lukrem składniowym i mogą być z łatwością odtworzone przy użyciu innych konstrukcji językowych. Pierwszym z takich smaczków są nazwane konstruktory – czyli googlowy sposób na przeciążanie konstruktora w języku dynamicznie typowanym nieobsługującym przeciążania metod. Drugi sposób to metody fabryczne, czyli metody klasy poprzedzone słowem kluczowym „factory”, ich zastosowanie jest dla mnie generalnie mało zrozumiałe. Ostatnim „ficzerem” jaki zauważyłem są „krótkie konstruktory”, które oszczędzają nam trochę pisania – zamiast:

class Point {
    num x, y;
    Point(num x, num y) {
        this.x = x;
        this.y = y;
    }
}

można napisać tak:

class Point {
   num x, y;
   Point(this.x, this.y);
}

Podsumowując – szału nie ma. Co jak co, ale po Google spodziewałem się więcej. Czego mi brakuje ?

  1. Większego nacisku na programowanie funkcyjne – np. łatwego sposóbu na tworzenie immutable data types, chociażby a’la Scala:
     case class User(firstName: String, lastName: String, birthday: Date) 
  2. Anonimowe klasy
  3. Wsparcie dla przetwarzania równoległego / wielowątkowego – jest w postaci aktorów (podziękowania dla wookieba)
  4. Przestrzeni nazw / modułów
  5. „Odwróconych” interfejsów a’la GO, czyli coś w rodzaju:
    class Test {
        Integer foo(){
            return 1;
        }
    }
    
    interface Foo {
         Integer foo();
    }
    
    Foo someFoo = new Test(); /* ok! - nie ma błędu -
    klasa Test nie deklaruje, że implementuje interfejs Foo,
    ale sygnatura jej metod jest zgodna z nim */
    

    Więcej na stronie 8tlight

Jestem ciekaw jaka jest Wasza opinia ?

Nowe szaty bloga

Posted in ogólne on październik 9th, 2011 by Wojciech Soczyński – Be the first to comment

Jeżeli często odwiedzacie mojego bloga to domyślam się, że już zauważyliście zmianę layoutu, która dokonałem dnia dzisiejszego. Mam nadzieje, że się wam spodoba. Skórka jest trochę bardziej funkcjonalna od ostatniej ponieważ posiada między innymi opcje wątkowania komentarzy i wyświetlania gravatarów. Poza zmianą skórki, zrobiłem też trochę porządku w linkach oraz chyba najważniejsze – zmieniłem tytuł bloga.

Poprzedni tytuł „La Galere / Propaganda Kapitana Pazura”, już jakiś czas przestał pasować do treści strony, z prostej przyczyny jaką było przeniesienie prywatnych przemyśleń na mój drugi site. Ten blog stał się stricte zawodowo – programistyczny, postanowiłem więc ujednolicić tytuł z podpisem na goldenline – „programista eksplorator”. Dzięki takiemu ujednoliceniu chce podkreślić takie cechy mojej osoby, jak kreatywność, skłonność do patrzenia na problemy z różnych perspektyw oraz szeroki zakres wiedzy zawodowej jaki mam nadzieje posiadam ( ;p ).

Mam nadzieje, że będziecie tak często (albo nawet częściej) odwiedzać moją stronę jak dotąd :).

Trzy style

Posted in java, php, programowanie on październik 2nd, 2011 by Wojciech Soczyński – 17 Comments

Tak przy okazji refleksji i rozmyślań filozoficznych, postanowiłem zademonstrować, jak w języku pokroju Javy zaimplementować rozwiązanie problemu obliczania ceny wszystkich produktów w koszyku.
read more »