Różne Ce i inne miękkie języki.

Moderator: RedAktorzy

ODPOWIEDZ
Awatar użytkownika
Zanthia
Alchemik
Posty: 1702
Rejestracja: czw, 11 sie 2005 20:11
Płeć: Kobieta

Różne Ce i inne miękkie języki.

Post autor: Zanthia » sob, 06 lut 2010 18:17


wpis moderatora:
ZGC: Wydzielone z Narzekalni. Jak wymyślicie inny temat wątku, to proszę o info na pw, zmienię.

Mam ochotę solidnie przyłożyć każdemu inżynierowi Małego Miękkiego. Dla potrzeb pracy uczę się programowania. OM doradził C#, jako że jest dosyć aktualny, często używany w takich aplikacjach, jakie ja muszę zbudować, a kompilator jest świetny, głupoodporny i bezpłatny.

Więc przedarłam się przez 1/2 podręcznika (nieliche 600 stron), cały czas wypróbowując opisywane cuda na kiju w praktyce. Nie ulękłam się klas abstrakcyjnych, chronionych, metod zwracających void, nawet te za******* interfejsy opanowałam.

Po czym cała zadowolona, zaczynam rozdział Delegaty i Zdarzenia, zawierający treść, bez której całą resztę książki można o kant obić. Za nim już tylko obsługa netu, plików i katalogów, więc już jestem na podwórku, już witam się z gąską, a tu jak z jasnego nieba:

W języku C# zdarzenia to obiekty, które uaktywniają delegaty, które z kolei są jedynie obiektami, które są metodami, każdą metodą której składnia pasuje, które to metody... I nie bardzo rozumiem co dalej. A przykład ma 6 bitych stron kodu, który dla mnie nie ma sensu. Napisany na próbę zgodnie z teoretyczną instrukcją kawałeczek kodu nie kompiluje się, nie rozumiem wyjaśnień kompilatora.

Więc po zużytych trzech miesiącach i 67 PLN kosztu podręcznika nauczyłam się czegoś bardzo ważnego:
Młody ambitny! Chcesz programować? Ucz się Javy, tam nie ma żadnych zas***** delegatów, a zamiast nich wszystkie zdarzenia są określane jednolitym standardem function pointers.
It's me - the man your man could smell like.

Awatar użytkownika
neularger
Strategos
Posty: 5187
Rejestracja: śr, 17 cze 2009 21:27
Płeć: Mężczyzna

Różne Ce i inne miękkie języki.

Post autor: neularger » sob, 06 lut 2010 20:48

Zanthia pisze:OM doradził C#, jako że jest dosyć aktualny, często używany w takich aplikacjach, jakie ja muszę zbudować, a kompilator jest świetny, głupoodporny i bezpłatny.
A widzisz! Kompilatora nie zrozumiałaś. :)
I C# to chyba nie za dobry wybór.
Nie mam pojęcia czy istnieje jakiekolwiek ciało niezależne od Małego Miękkiego, które by nadzorowało język.
Chodzi mi o to, że się człek nauczy, MM-owi coś się odechce i kolejne wydanie języka będzie miało ze starym wspólną tylko nazwę.
Z tego co pamiętam, początkujący zawsze zaczynali od Pascala (żeby wdrożyć się w kanony Sztuki), a potem wybierali sobie już swój ulubiony języka. Na przykład C/C++.
You can do anything you like... but you must never be rude. Rude is being weak.
Ty, Margoto, niszczysz piękne i oryginalne kreacje stylistyczne, koncepcje cudne językowe.
Jesteś językową demolką.
- by Ebola ;)

Awatar użytkownika
bcr
Dwelf
Posty: 578
Rejestracja: śr, 03 maja 2006 20:02

Post autor: bcr » sob, 06 lut 2010 21:01

Zanthia pisze:Po czym cała zadowolona, zaczynam rozdział Delegaty i Zdarzenia, zawierający treść, bez której całą resztę książki można o kant obić.
No cóż, podstawowe wzorce projektowe są generalnie bardzo rozsądnie zaprojektowane. Realizacja wzorca Delegat w .NET również jest całkiem wygodna - owszem, ciężko znaleźć dobre wyjaśnienie, jeśli nie wiesz, do czego ma służyć.
Nie obraź się, ale Twoja wypowiedź mnie rozbawiła - bo brzmi jakbyś szła na architekturę, bo chcesz zbudować karmnik dla ptaków :).
Jeśli chcesz, by program działał - zacznij go pisać. I .NET się świetnie nadaje dla początkującego - bo ma bardzo silną kontrolę nad poprawnością formalną kodu.

Neularger: a znasz C#/.NET, że się tak wypowiadasz?
neularger pisze:I C# to chyba nie za dobry wybór.
Nie mam pojęcia czy istnieje jakiekolwiek ciało niezależne od Małego Miękkiego, które by nadzorowało język.
Chodzi mi o to, że się człek nauczy, MM-owi coś się odechce i kolejne wydanie języka będzie miało ze starym wspólną tylko nazwę.
Jakieś uzasadnienie dla tej śmiałej hipotezy?
neularger pisze:Z tego co pamiętam, początkujący zawsze zaczynali od Pascala (żeby wdrożyć się w kanony Sztuki)
To jeśli zacząłem od Atari Basica, przez Turbo Basic i Atari Assembler doszedłem do Logo, a potem przesiadłem się na Modulę-2, to nadal Twoje "zawsze" będzie obowiązywać?

Przepraszam, ale psioczenie na język tylko dlatego, że pochodzi z firmy Microsoft, jest... nie, bynajmniej nie zabawne.
Odkąd pojawiły się fora internetowe, ściany publicznych toalet są znacznie czystsze.

Awatar użytkownika
neularger
Strategos
Posty: 5187
Rejestracja: śr, 17 cze 2009 21:27
Płeć: Mężczyzna

Post autor: neularger » sob, 06 lut 2010 21:20

bcr pisze:
Zanthia pisze:Neularger: a znasz C#/.NET, że się tak wypowiadasz?
W sensie programuję w tym? Nie. Ale ja się o języku jako takim nie wypowiedziałem. Chodziło mi wyłącznie o MM-a i szacunek do użytkowników jego produktów. Na przykład historia Javy i J++. MM kupił licencję i w pewnym momencie nie dokonawszy nigdy pełnej implementacji Javy SUN-a, zdecydował, że będzie robił nowy język.
bcr pisze:
neularger pisze:Z tego co pamiętam, początkujący zawsze zaczynali od Pascala (żeby wdrożyć się w kanony Sztuki)
To jeśli zacząłem od Atari Basica, przez Turbo Basic i Atari Assembler doszedłem do Logo, a potem przesiadłem się na Modulę-2, to nadal Twoje "zawsze" będzie obowiązywać?
Masz rację. Zawsze nie było tu właściwie. Ja właściwie też nie zaczynałem od Pascala. Może być często?

e. pomieszałem pytania bcr-a...
You can do anything you like... but you must never be rude. Rude is being weak.
Ty, Margoto, niszczysz piękne i oryginalne kreacje stylistyczne, koncepcje cudne językowe.
Jesteś językową demolką.
- by Ebola ;)

Awatar użytkownika
No-qanek
Nexus 6
Posty: 3098
Rejestracja: pt, 04 sie 2006 13:03

Post autor: No-qanek » sob, 06 lut 2010 21:50

neularger, to ja jestem trzecim, który też od Pacala nie zaczynał.

Zresztą - ja sam bym nigdy Pascala nie polecał. C są o niebo wygodniejsze, a potem od razu można pisać coś porządniejszego (bo potem z Pascala i tak (prawie) każdy przesiada na coś, co mniej lub bardziej przypomina C)

Zanthio - a nie możesz tego zrealizować w C++? Ja też tak miałem, że nie rozumiałem tych obiektowych fanaberii, a w C++ zawsze można to było prościej i przyjemniej zrobić.
"Polski musi mieć inny sufiks derywacyjny na każdą okazję, zawsze wraca z centrum handlowego z całym naręczem, a potem zapomina i tęchnie to w szafach..."

Awatar użytkownika
neularger
Strategos
Posty: 5187
Rejestracja: śr, 17 cze 2009 21:27
Płeć: Mężczyzna

Post autor: neularger » sob, 06 lut 2010 22:27

No-qanek pisze:C są o niebo wygodniejsze, a potem od razu można pisać coś porządniejszego (bo potem z Pascala i tak (prawie) każdy przesiada na coś, co mniej lub bardziej przypomina C)
Pewno, że są wygodniejsze i wszystko można w tym napisać.
Pascal, jest IMO po prostu "przyjaźniejszy" tak na początek...

I poprawka: C# jest objęty patronatem przez ECMA.
You can do anything you like... but you must never be rude. Rude is being weak.
Ty, Margoto, niszczysz piękne i oryginalne kreacje stylistyczne, koncepcje cudne językowe.
Jesteś językową demolką.
- by Ebola ;)

Awatar użytkownika
Zanthia
Alchemik
Posty: 1702
Rejestracja: czw, 11 sie 2005 20:11
Płeć: Kobieta

Post autor: Zanthia » ndz, 07 lut 2010 11:16

Ja tylko narzekam.

Bo nas przy tym wszystkim nie było,
Wianki dziewicze -
na naszej skroni!
To przecież tylko kilka osób robiło,
To oni! To oni! To oni!


To ja proszę o przeklejenie.

Obiektowość W C# to IMHO dość spory plus. Raz, że łatwo mi się będzie potem przesiąść na Javę, dwa - jak to ujął OM, zawikłane sprawy w C# (ograniczenie dziedziczenia do jednej klasy-rodzica, delegaty, klasy abstrakcyjne/wirtualne), które początkowo rodzą pytanie "po kiego grzyba ktoś tak wydziwiał?" są po to, żeby (cytat) "rozwiązać problem, o którym jeszcze nie wiesz, że istnieje". Po C nie sięgnę, bo język jest niskiego poziomu; C++ nie ma tak wygodnego środowiska, jako że MM dodaje za friko w jednym pakiecie obsługę aplikacji internetowych, tekstowych i parę narzędzi do obsługi baz danych. A wszystko to zapakowane w środowisko śliczne, błyszczące i cacy, z Intellisensem i w ogóle. Więc nie kwestionuję zasadności całego tego badziewia z delegatami, tylko narzekam, że po złudnie łatwej obsłudze metod, zmiennych i stałych nagle wyskakuje obsługa delegatów, które są metodami, tylko że nie są, a zdarzenia są delegatami, do których subskrybuje się metody, albo nie subskrybuje et cetera.

A porównanie z architekturą, żeby zbudować karmnik, nie jest zbyt dobre - gdybym szła na infę tylko po to, inna sytuacja. Ale Nie zbudujesz aplikacji do obsługi danych bez znajomości języka, nawet przy Windows Forms musisz pojąć co to takiego, te zmienne, obiekty i metody.
It's me - the man your man could smell like.

Awatar użytkownika
Albiorix
Niegrzeszny Mag
Posty: 1768
Rejestracja: pn, 15 wrz 2008 14:44

Post autor: Albiorix » ndz, 07 lut 2010 14:30

Piszę w Javie i zazdroszczę takiego niesamowitego języka jak C#. Jak dla mnie - jest boski. Aczkolwiek znam zalety nie znając wad, bo przeczytałem podręcznik i napisałem Hello World pod Mono.

Model zdarzeń dla GUI zmieniał się w historii Javy chyba ze 2 razy. Ale zdarzenia na poziomie GUI to ogólnie mały problem. A po stronie serwera w Javie jest 20 konkurencyjnych filozofii/architektur/rozwiązań/serwerów/frameworków/jakgozwał w 500 różnych wersjach. I jakoś tak się dzieje że spędzam 3 razy więcej czasu na walce z niezgodnością wersji niż na pisaniu aplikacji właściwej. Niezgodnością Javy, JBossa, czegoś do XMLa, czegoś do ORM, czegoś do Webserwisów, generatorów w NetBeansach, plugiów do Eclipsa i tych wszystkich rzeczy po stronie firm z którymi mamy się komunikować, co bywa w Javie, .NET, Phpie, cudach na kiju, i wszystko z wszystkim czasem potrafi nie działać.
.NET ze sobą samym jest chyba jednak bardziej spójny.
nie rozumiem was, jestem nieradioaktywny i nie może mnie zniszczyć ochrona wybrzeża.

Awatar użytkownika
No-qanek
Nexus 6
Posty: 3098
Rejestracja: pt, 04 sie 2006 13:03

Post autor: No-qanek » ndz, 07 lut 2010 17:15


.NET ze sobą samym jest chyba jednak bardziej spójny.
Hmm... jeśli to jest radosna perspektywa, to ja się cieszę, że jednak zmieniłem kierunek zainteresowań na chemię i fizykę. :P

Chociaż jak tak piszecie o obiektowości, delegatach, metodach i że ma to sens to zaczyna mnie to ciekawić z filozoficznego punktu widzenia (tj. na czym polega koncepcja). Można gdzieś w necie dowiedzieć się do czego to i z czym to się je?
"Polski musi mieć inny sufiks derywacyjny na każdą okazję, zawsze wraca z centrum handlowego z całym naręczem, a potem zapomina i tęchnie to w szafach..."

Awatar użytkownika
Zanthia
Alchemik
Posty: 1702
Rejestracja: czw, 11 sie 2005 20:11
Płeć: Kobieta

Post autor: Zanthia » ndz, 07 lut 2010 20:41

Z doświadczenia powiem tyle - przynajmniej klasy/obiekty to dla mnie ogromne ułatwienie. Mogę utworzyć sobie zupełnie nowiutką kategorię danych, i o ile dodam ładne przeciążone operatory, konstruktory i metody, będzie mi ładnie współgrało z klasami, które utworzę dopiero w przyszłości; mogę więc po n latach napisać program bazujący na zupełnie nowym typie danych, i z odpowiednim konstruktorem stare dane będą użyteczne. W Pascalu (mój drugi w życiu język programowania) musiałabym definiować całą strukturę od zera.

Do tego C# ma wbudowane obfite gotowe typy zbiorów danych, zbiorów absolutnie dowolnych obiektów - gotowe definicje list, słowników, tablic et cetera. Z gotowymi definicjami sortowania, przycinania, modyfikacji, et cetera. W Pascalu musiałabym wszystko to pisać od zera.

W dodatku dzięki wysiłkom całej hordy inżynierów w Małym Miękkim, bardzo mocno to łatwe w pisaniu i głupoodporne.
It's me - the man your man could smell like.

Awatar użytkownika
neularger
Strategos
Posty: 5187
Rejestracja: śr, 17 cze 2009 21:27
Płeć: Mężczyzna

Post autor: neularger » ndz, 07 lut 2010 20:51

Znaczy, jednak przekonałaś się do C#?
You can do anything you like... but you must never be rude. Rude is being weak.
Ty, Margoto, niszczysz piękne i oryginalne kreacje stylistyczne, koncepcje cudne językowe.
Jesteś językową demolką.
- by Ebola ;)

Awatar użytkownika
Zanthia
Alchemik
Posty: 1702
Rejestracja: czw, 11 sie 2005 20:11
Płeć: Kobieta

Post autor: Zanthia » pn, 08 lut 2010 19:31

Nie zraziłam się tak naprawdę... Tylko muszę wierzyć na słowo OMowi, że ten cały burdel na kółkach z delegatami i wyrażeniem event jest użyteczny na coś. Tylko po prostu po prościutkiej całej reszcie języka wydaje się, że po graniu przez całe popołudnie w Psychonauts, okazuje się że ostatni poziom to Battletoads*, albo że nagle czytając Cosmopolitan napotkałam na mowę Cezara nad grobem Arystotelesa. Na 50 stron i po niemiecku.

Dodatkowo: Alboirixie, żałować nie masz za bardzo czego - rzeczy na Javę przynajmniej _pójdzie_ na innych platformach, WinForms i chyba WebForms są zależne od systemu Windows niezależnie od obecności .NET. OM określa Javę jako mniej rozbudowany C# (na co dzień używa Javy). W C# kilka rozwiązań jest mocno rozbudowanych ze względu na bezpieczeństwo - dziedziczyć można tylko po jednej klasie, dziedziczenie jest wykonywane poprzez kilka różnych konstruktów - proste dziedziczenie, klasy wirtualne, abstrakcyjne (obie wymuszają deklarowanie zawartych w sobie elementów), można zbudować dowolną ilość interfejsów wymuszających zdeklarowanie zmiennych/stałych/metod w klasie-córce. Delegaty i zdarzenia pełnią tę samą fukcję co function pointers w Javie. Podejrzewam, że celem stopnia urozmaicenia tych wszystkich bajerów jest stabilność kodu - można wszystko ładnie pozamykać i uniemożliwić błąd.


*gra idiotycznie, legendarnie trudna.
It's me - the man your man could smell like.

Awatar użytkownika
Albiorix
Niegrzeszny Mag
Posty: 1768
Rejestracja: pn, 15 wrz 2008 14:44

Post autor: Albiorix » pn, 08 lut 2010 23:36

Celem rozbudowanych struktur językowych w C# jest uwodzenie programistów. Na mnie działa. Java ma prościej, zaczynała od bardzo ograniczonych możliwości w porównaniu z C++, dopiero po latach dodano anotacje i kilka innych bajerów. Nie ma do dziś np przeciążania operatorów, które z punktu widzenia projektantów Javy daje potencjalnie nieczytelny kod.
nie rozumiem was, jestem nieradioaktywny i nie może mnie zniszczyć ochrona wybrzeża.

Awatar użytkownika
bcr
Dwelf
Posty: 578
Rejestracja: śr, 03 maja 2006 20:02

Post autor: bcr » wt, 09 lut 2010 15:19

Zanthia pisze:można zbudować dowolną ilość interfejsów wymuszających zdeklarowanie zmiennych/stałych/metod w klasie-córce.
Chyba jedynie własności (properties) :).
A jeśli uważasz, że delegaty są ciężkie, to czas przegryźć się przez Reflections ;D

Albiorix pisze:Celem rozbudowanych struktur językowych w C# jest uwodzenie programistów
A możesz rozwinąć? Bo mi się wydaje, że są po prostu dość dobrze przemyślane i użyteczne.

C# akurat moim zdaniem jest jednym z lepszych języków "do nauki", ponieważ wymusza eleganckie nawyki. Garbage Collector w .NET jest znacznie skuteczniejszy i wydajniejszy, niż ten w Javie (chyba, że przez parę ostatnich lat coś w Javie się ruszyło ku lepszemu). Kod w Javie pójdzie na innych platformach - tak, generalnie powinien :).
Oczywiście .NET - w zastosowaniach nieco bardziej zaawansowanych - na przykład Compact Framework czy konieczność schodzenia "na kolana" do kodu niezarządzalnego - wymaga znacznie więcej uwagi od programisty.

Taka uwaga natury ogólnej - nie do Was akurat. Ja wiem, że C# (generalnie .NET) czerpał garściami z rozwiązań w innych językach programowania. Tyle, że akurat robili to rozsądni ludzie i wybrali sensowne rzeczy do skopiowania. Dlatego też rzucanie "skoro to jest od Microsoftu, to musi być kiepskie", nie poparte żadnymi argumentami (a najczęściej również zerowym doświadczeniem), świadczy - dla mnie - źle o osobie wypowiadającej takie twierdzenia.
Odkąd pojawiły się fora internetowe, ściany publicznych toalet są znacznie czystsze.

Awatar użytkownika
Albiorix
Niegrzeszny Mag
Posty: 1768
Rejestracja: pn, 15 wrz 2008 14:44

Post autor: Albiorix » wt, 09 lut 2010 16:58

Rozwinięcie: czytając podręcznik o C# co 3 strony wykrzykiwałem "ale bajer, chcę w tym pisać!". Jest tam mniej więcej wszystko o czym marzyłem w Javie plus 30 rzeczy o których nawet nie pomyślałem. Nie wiem czy to wszystko dobrze działa, ale na pewno uwodzi programistów :)
nie rozumiem was, jestem nieradioaktywny i nie może mnie zniszczyć ochrona wybrzeża.

ODPOWIEDZ