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#
Swing - największe zło Java'y ;-)
Refactoring bez testów to proszenie się o problemy ;-)
Dart - się mnie podoba :-)
C# to suma Javy, Delphi i C++, stad wlasnie dziedziczenie i implementacja interfejsow zapisywane sa w taki, a nie inny sposob.
OdpowiedzUsuńPonadto, struktury sa trzymane w stosie, a nie na stercie i dla spojnosci jezyka domyslnie wywolywany jest konstruktor bezparametrowy.
Jesli nie podoba Ci sie C#, zapraszamy do VB.NET :)
Dziękuje, postoje ;-) i zostanę przy Java'ie :-)
OdpowiedzUsuńNie kryję jednak, że przez te 3 lata C# trochę wydoroślał :-) i ma kilka fajnych ficzerów.
A wystarczy wpisać:
OdpowiedzUsuńpublic class Ryba:Zwierze, IPlywalne
@piotrb - ale to jest konwencja, nie wymóg języka. Chcieli zrobić "dobrze" developerem żeby nie musieli się "męczyć" i pisać implements. Dodatkowo jak ktoś się pomylił i Zwierze też jest tylko interfejsem to leżysz ;-)
OdpowiedzUsuń