programowanie

The no framework JS framework

Posted in javascript, programowanie on November 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 October 16th, 2011 by Wojciech Soczyński – 28 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 October 10th, 2011 by Wojciech Soczyński – 14 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 ?

Trzy style

Posted in java, php, programowanie on October 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 »

Kierunek Babilon pt.2

Posted in php, programowanie on September 9th, 2011 by Wojciech Soczyński – 16 Comments

Minęło już półtora tygodnia od czasu jak zacząłem moją pracę w Sabre i myślę, że jest to dobry czas by pokusić się o małe podsumowanie tego jakie są moje wrażenia i czy moje oczekiwania, które przedstawiłem w poprzedniej części artykułu w jakimś stopniu miały okazję się spełnić.

read more »