wtorek, kwietnia 18, 2006

Dalsze przygody z C#

Poznałem przed chwilą ciekawy ficzer połączenia Bloggera i Google Toolbara ;-) Jeżeli w trakcie sprawdzania pisowni kliknie się na słowie, które jest linkiem linka zadziała, a cały tekst wpisu diabli wezmą ;-)


Wracając jednak do tego o czym chciałbym dziś napisać ;-)

C#, znów C#. Tym razem urzekły mnie struktury, trochę zniesmaczyły problemy z przeciążaniem operatorów i zniesmaczył sposób zapisu po kim klasa dziedziczy i kogo implementuje.

Struktury mi się podobają. Co prawda można je np. w Java'ie udać przez malutkie klaski, ale w C# jest to wydzielona struktura języka co ma swoje plusy. Nie podoba mi się za to, że struktur jako skalarów można używać bez ich tworzenia.

Location lo;
lo.x=10;
lo.y=10;

Taki zapis jest całkiem poprawny z punktu widzenia C#, dla mnie już za to nie do końca ;-)

Przeciążanie operatorów też mi się podoba, ale nie podoba mi się to, że przeciążywszy operator wypada także stworzyć metody, które "odwalą jego robotę", a będzie ich można użyć gdy wykorzysta się klasę .NETową napisaną w C# w innym .NETowym języku, który nie wspiera przeciążania operatorów. Wskazuje to wg. mnie na niedopatrzenia w architekturze, można przecież było przyjąć, że tworzone będą w takiej sytuacji odpowiednie metody, np. dla operatora + metoda additionOperator() albo coś podobnego.

Nie podoba mi się za to zapis dziedziczenia i implementacji. W Java'ie mamy ładny kod:

public class Ryba extends Zwierze implemments Plywalne

za to w C#:

public class Ryba:Zwierze, Plywalne

Niby ten zapis z C# krótszy, ale chyba akurat w tym miejscu nie o krótkość zapisu chodzi, a o jego czytelność.

W ogóle mam wrażenie, że C# jest jednak zbyt stechnizowany. Jest na pewno ciekawym i dobrym językiem, ale ma słabsze momenty w których elegancje zastąpiono technicznością.



C# to taka suma z Delphi i Java'y, to podobieństwo do Delphi tłumaczy osoba Anders Hejlsberg, który maczał swoje palce w obu tych językach. Wydaje mi się też, że przez te Delphi'owe dodatki C# stracił na swojej elegancji, zyskał za to może na elastyczności, ale przez to pozwala na popełnienie większej ilości błędów.



Podobne postybeta
Bio"etyka"
"Językizm" czyli co mnie razi w C#
Refactoring bez testów to proszenie się o problemy ;-)
Swing - największe zło Java'y ;-)
Lubię enumy