[quote]
Moderacja jaka jest taka jest. Zamiast sie denerwowac zeslaniem notki dosmietnika przewaznie warto sie zastanowic nad wartoscia merytoryczna splukanej notki i faktyczna powaga dyskusji. Moim zdaniem nie byla ona powazna, jako przyklad niech stanowi fakt, ze na uwage Olórina, ze woli uzyc procki (+linijka kodu) odpisales, ze przeciez mozna fajniej (+kilka linijek kodu obiektowego). Powazne to to nie jest.
[/quote]
Nie zdenerwował mnie fakt zesłania notki do śmietnika ile razy mam mówić. Notka została wysłąna do śmietnika z powodu "propagandy" i to mnie tylko zdenerowało. Dyskusja jak najbardziej zaczynała być poważna tylko nie na temat wtyczki co Olórinowi jak najbardziej mogło sie nie podobać a temat można było wydzielić do innego wątku. A dlaczego poważna? Powtórze jeszcze raz bo chciałem poruszyć temat obiektowości w K. I nie mówiłem, że moje rozwiązanie jest fajne. Czego ty się czepiasz. Zaproponowałem tylko rozwiązanie i JEDNA (nie kilka) linijek dłuższe (jeśli chcsz się czepiać linijek). Zostawmy jednak ten temat jest chyba o czym dyskutować.
[quote]
Wiem czego czescia sa/nie sa szablony. Chcialem Ci nakreslic, ze fakt ich wykorzystania przy pisaniu K swiadczy o "obiektowosci" kodu, co z kolei bylo odpowiedzia na Twoje pytanie: czy K bedzie obiektowy. Jest - napisalem o tym jasno, kilkukrotnie na rózne sposoby (jak mi sie, chyba blednie, wydawalo mialo to wplynac pozytywnie na zrozumienie tekstu przez przedpisce).
[/quote]
Może wiesz, może nie wiesz. Nie rozumiałem tylko po co wtrąciłeś informację o C. WIęc CIe uświadomiłem tylko.
[quote]
"Uwazam tylko iz programowanie obiektowe jest o wiele wydajniejsze niz strukturalne." - a ja uwazam, ze Elvis zyje. Przekonujace? A skadze... Pisanie kodu to nie wybór demokratyczny - kazdy pisze jak chce i w czym chce, nie rozumiem zatem sensu takiej ankiety. Chciales zeby ktos Cie przekonal do pisania strukturalnego?
[/quote]
No jasne, że mnei nie przekonałęś nie podając żadnych przykładów. Oczywiście chciałbym by mnie ktoś (np ty, taki wielki zwolennik i nie pisz, że takim nie jesteś) przekonał mnie do pisania kodu strukturalnego jeśli uważa, że jest to lepsze rozwiązanie. Ja nie stoję twardo na swoim stanowisku tylko slucham doświadczeń innych.
Ja podałem Ci ogólne zalety obiektowości w kilku ogólnych przykłądach. Widze,że to bie trzeba pokazać palcem, choć i tak nie przyznasz mi racji. Bo jak dotąd atakujesz komentując fragmenty moich wypowiedzi zamiast przedstawić jasno twój punkt widzenia. Czyli co jest złego w tym, że ja "domagam się" obiektowości w K. Bo takie jest twoje stanowisko.
[quote]
"Uwazam równiez iz stworzenie obiektowego API jest o kilka klas trudniejsze niz dostarczenie API strukturalnego." - wlasnie widac ta wydajnosc, o której pisales dwa zdania wczesniej. Im cos jest trudniejsze tym prawdopodobnie mniej wydajne w rekach tego, dla którego jest to trudne (mówie tutaj o metodologii a nie algorytmice).
[/quote]
Ze co? Porównujesz dwie ODRĘBNE kwestie. Gdy mówiłem o wydajności programowania obiektowego, mówiłem o programistach korzystających z API obiektowego. Wtedy właśnie programowanie obiektowe pokazuje swoje zalety.
Gdy mówię o trudności w tworzeniu obiektowego API to mówię o zespole przygotowującym to API. W końcu jeśli tworzy się API to nie robi się tego dla siebie. Tak? A używanie API obiektowego jest o niebo wygodniejsze od strukturalnego.
Więc ja nie wiem co ma na celu porównanie trudnści stworzenia takiego API z łatwością (wedłóg ciebie, trudnościa) korzystania z niego.
[quote]
"wysilek zwróci sie napewno bardzo szybko poprzez zmniejszenie czasu na napisanie wtyczki oraz poprawienie ich poprawnosci" - dajesz na to gwarancje? Na ile miesiecy? Jak zachecisz piszacych wtyczki do obiektowego API? Bo do tej pory czytam tylko slogany a nie solidne argumenty. Jesli chcesz kogos do czegos przekonac (co z kolei przeczy rzekomej checi poznania zdania deweloperów) to potrzebujesz argumentów.
[/quote]
Gwarancja? Moge zagwarantować, że jeśli ukaże się dobre API obiektowe to programiści sami na nie się przesiądą i gwarantuję, że będą pisać wtyczki szybciej.
Jak twoim zdaniem mam wybadać "chęci" developerów jak nie poprzez dyskusję? Ja proponuję rozwiązaine a oni się wypowiadają na ten temat. Więc gdzie tu jest sprzeczność.
Argumentów to na razie brakuje Tobie. Jak do tej pory nie podważyłeś w ani jednym zdaniu mojej tezie "słuszności obiektowego API".
[quote]
"Uwazam, ze stare API nalezy zostawic w spokoju nawet za cene pewnej niekompaktybilnosci (co chyba sie dzieje sadzac po niektórych postach hao)." - bardzo radosne podejscie dewelopera do spraw konsumenckich.
Ja nie wiem gdzie ty pracujesz.
[/quote]
1. Sam mówiłeś, że najpewniej Hao uczył się tworząc API. Skoro tak było to API chcąc nie chcąc zawiera błędy. Jeśli chcemy stworzyć nowe, lepsze API napewno nie obędzie się bez pewnych ograniczen w zgodności wstecz.
2. Wszystkie nowe rozwiązania w pewnym momencie też zrywają ze zgodnością. Miało by sens trzymać przestarzałych technik tyko dlatego by nieliczne "urządzenia" mogły działąć? Nie raz się spotkałeś z worningiem "deprected" "obsolte" podczas programowania więc możesz być pewien, że ten kawałek kodu w przyszłości nie będzie działął. Więc jest to praktyka stosowana przez większe projekty, więc tym bardziej moż być zastosowana tutaj.
Oczywiście nie namawiam do całkowitego odrzucenia starego API. Przykłądem zamierzonej niezgodności jest chociażby wycofanie funkcji "IMessageDirect".
Za to ty byś mi przedstawił swoje argumenty przeciw a nie jak zykle pusta krytyka.
[quote]
"Ale czy nie dalo by sie znalezc kilku osób które by na bierzaco dokumentowaly zakonczone partie kodu?" - pewnie daloby sie, tylko ponownie spytam czym sie rózni dobrze udokumentowany kod obiektowy od takiegoz strukturalnego?
[/quote]
A co to ma do rzeczy? Ja mówię o równoległym powstawianiu dokumentacji wraz z projektem. Czego ty się znowu czepiasz?
Jeśli już jednak się pytasz to odpowiadam (choć przykład już dałem w poprzedniej wypowiedzi). Jeśli mam dobrze stworzone API NIE muszę biegać non stop do dokumentacji i srawdzać jakiej flagi użyć by pobrać jakąs wartość wystarczy, że raz sprawdziłem na podobnej klasię jak to się robi czyli np poprzez wywolanie "Get_potrzebna_wartosc" i już wiem że tak będzie w pozostałych obiektach. Nawet jeśli nie jest to identyczna metoda samo wyświetlenie dostępnych metod obiektu w IDE i wpisujać Get_ mnie naprowadzi. Jak by to wyglądało w strukturalnym? Patrzę jak pobrać wartość tekstową dla elementu X acha używam flagi A. Teraz chce pobrać tą wartość dla zupełnie innego elementu choć z tej samej rodziny to muszę użyć innej Y? I to jest ta różnica! W programowaniu obiektowym posługujesz się dunkcjonalnością obiektu a nie zestawem funkcjonalności programu dzieki której możesz kontorlować elementy obiektu. Jeśli tego nie rozumiesz to nie mamy chyba o czym dyskutować.
[quote]
" Ja widze, ze Hao jest zwolennikiem extreme programming, ja osobiscie taki nie jestem" - ja tego nie widze, bo nigdy nie slyszalem o testach jednostkowych kodu Konnekta, co jest jedna z podstaw programowania ekstremalnego. Chyba uzyles zlego terminu.
[/quote]
Nie użyłem złego określenia.
1. O testowaniu jednostkowym mówił choćby na swoim blogu, nakłąniając do używania CPPUNIT
2. Uważa że dokumentają projektu powinien być sam kod
3. Nie ma procesu wytwórczego projektu.
[quote]
"Nikt tu nie ma postawy roszczeniowej." i "Uwazam, ze stare API nalezy zostawic" oraz "byl to przyklad ignorancji wobec powaznej dyskusji". To nie jest postawa roszczeniowa?
[/quote]
Roszczeniowa wobec czego? Czowieku konkrety a nie wycinasz móje wypowiedzi i stawiasz glupie pytanie. Mam powycinac twoje i ci udowadniac cos na sile?
Pierwsza wypowiedź, potwierdza że nie mam postawy roszczeniowej
Druga wypowiedź, jest to tylko moja uwaga, propozycja? Każda propozycja to twoim zdaniem roszczenie? Czy ja nalegam, błagam, żądam?
Trzecia wypowiedź, nie wiem dlaczegoą ją zacytowałeś.
[quote]
"Powiedz mi ile ci zajelo przyswojenie sobie programowania w WinAPI a ile w .NET Forms?" - zakladam, ze piszesz o Windows Forms. Uzywa sie ich tak samo w momencie, kiedy potrzebujesz czegos wiecej niz dostarczone OOTB kontrolki. Tak samo bylo jest i bedzie z wraperami WinApi (vide Delphi). A opanowywalem WinApi dluzej, bo bylo pierwsze. Co wiecej - jestem zdania, ze zaczynanie od wysokopoziomowych rzeczy pokroju Windows Forms ogranicza mozliwosci poznawcze dewelopera.
[/quote]
WinAPI używa się zupełnie inaczej niz Formsów. Potrzebujesz menu? Tworzysz obiekt menu i dodajesz go wywolujac metode "okna". Potrzebujesz przycisku, checkboxa, editboxa tworzysz obiekt dodajesz do okna. Potrzebujesz pobrać jakaś wartość z danej kontrolki wywolujesz metode kontrolki. Co najważniejsze potrzebujesz obslużyć jakieś zdażenie dodajesz swoja funkcję doobsługi zdażenia a nie ładujesz wszytko w jedną wielką funkcję sprawdzasz kilka flag po drodze (które musisz najpierw sprawdzić w dokumentacji) i wyłuskujesz odpowiednie wartości z kilku zmiennych. Nie muszisz pamiętać flag, jakiej metody użyć by pobrać wartość wywołujesz tylko metodę obiektu. Ale o tym już pisałęm. Poza tym nie dyskutujemy tu o różnicach winAPI nad Formsami, podałem to jako przykład wyższości API obiektowego nad strukturalny.
I jestem zdania, że dostarczenie programiscie api wysokopoziomowego ulatwia mu poznanie platformy na jakiej będzie pracować. W żaden sposób go ine ogranicza.
[quote]
"zrozumienia mechanizmów jakie dzialaja w .NET zajelo mi 2 dni" - w takim razie wybacz, ale G**** rozumiesz. To, ze napisalem duza aplikacje po tygodniu z Borland Pascalem (mój pierwszy jezyk, sam sex ) zupelnie nic nie znaczy i nie swiadczy, ze cokolwiek opanowalem, rozumialem lub potrafilem zrobic. Z perspektywy czasu (jakies 9 lat) moge natomiast powiedziec, ze mój kod byl smieszny, zdolnosci marne, muppet-proof aplikacji mialki. A najsmieszniejsze jest to jaki napuszony i dumny bylem z mojej bazy danych uczniów.
[/quote]
A co ty możesz wiedzieć ile ja rozumiem? Na twoim miejscu powstrzymał bym się z takimi wypowiedziami. Co ty jasnowidz jestes? Nakreśliłem tylko różnicę czsu jaka jest potrzebna do napisania takiej samej aplikacji w Formsach i WinAPI. Mało mnie interesuje to jakiej jakości kod ty posałeś jak byłeś dzieckiem i jak go teraz oceniasz. Chyba nie łąpiesz tematu jaki tu poruszamy.
[quote]
Czepiasz sie flag - udowodnij, ze sa lepsze od enumów i pól klasy. I ze uchwyty sa czyms innym niz wskazniki do klas. Slucham.
[/quote]
O człowieku, porażka. Po pierwsze czemu to ja mam udowadniać, a ty co będziesz robił wycinał moje wypowiedzi i komentował nie wnosząc nic do tematu.
Czasami mam wątpliwości czy ty programujesz zarobkowo, bo kto powiedział że obiektowe programowanie polega na zamianie flag na enumeracje!? Litości. Gdy tworzysz API obiektowe posługujesz się obiektami i ich odpowiedzialnościami. Odpowiedzialność klasy przekładana jest na jej metody. I nimi sie posługujesz a nie flagami/enumeracjami. Enumeracje mogą służyć do porównania jakichś standardowych wyników swracanych przez funkcję a nie do sterowania zachowaniem funkcji.
Przykład
Pobranie imienia kontatu:
strukturalne api K:
CODE
Ctrl->DTgetStr( flaga_tablicy, id, flaga_imienia );
uzycie obiektowego kAPI:
CODE
kontakt.Get_Imie();
Gdzie programista używa w przypadku kAPI flagi? Podpowiem, nigdzie! A ilu używa w standardowym K? Dwuch do tego potrzebuje jeszce przetrzymywać id.
Co do wskazników uchwyt np do okien jest zupelnie czym innym niz wskaznik do klasy? Nie wiesz o tym? Czym się rózni? Tym ze uchwyt do okna nie potrafi nic zrobic, to jest tylko zimenna. Uchwyt do klasy zawiera funkcjonalność potrafi zrobic to do czego dana klasa jest stworzona. Uchwyt nic nie jest w stanie zesoba zrobic. Inna sprawa, że w programowaniu wysokiego poziomu NIE ma wskazników i to jest w tym piękne. Wskażniki to przeszłość.
[quote]
"Sam mówisz , ze programujesz w C#. Ciekawe czemu nie robisz tego w WinAPI, przeciez to to samo." - nie przyszlo Ci do glowy, ze a] pisze aplikacje ASP.NET b] pracodawca wymaga takiego a nie innego jezyka?
[/quote]
Nie zastanawiałem sie nad tym. To pytanie raczej mialo wydzwięk. W czym ci się łatwiej pisze Formsach czy WinAPI. Dlaczego Twoj pracodawca wymaga Formsów bo są trudniejsze i wolniej sie w nim pisze? Nie odpowiedziałeś mi na pytanie ile zajęło by ci czasu napisanie edytora tekstu MDI w oby technologiach? Nie czepiaj się nic nie znaczących scegółów
[quote]
"Ja bym narzkal, ze dokumentacja API sie zmienia? Chyba zartujesz." - a co Ty u licha robisz? Ze az zacytuje: "Wyjdzie nowe API i czlowiek bedzie musial znowu wnikac od poczatku jak co wszystko dziala i developerzy znowu zostana w tyle."
[/quote]
Znowu sklejasz moje wypowiedzie.
Pierwsza wypowiedz tyczyla sie twojej wypowiedzi, gdzie uważasz iż będziemy narzekać na zmiany w dokumentacji gdy ta będzie powstawać wraz z nowym API. Co niesie za sobą też zmiany dokumentacji. Na to bym nie narzekał w końcu jest oczywiste, że w trakcie tworzenia może się coś zmienic
Druga wypowiedz dotyczyła sytuacji gdy wyjdzie nowe api bez dokumentacji. Dokumentacja powstanie dopiero po jakimś czasie lub nawet jesli powstanie dość szybko nię będzie kompletna. I tu bym narzekał że trzeba wnikać od nowa bo nie miałem kiedy przeciez poczytać o nowym API bo przeciez dokumentacji nigdzie nie bylo nawet szczątkowej.
Czytać ze zrozumieniem proszę i nie sklejac moich wypowiedzi dotyczących dwóch róznych kwesti.
[quote]
"otworzyc strone wiki" - piszesz na forum pewnej spolecznosci. Zawsze bylo tak, ze to spolecznosci wychodzily z ciekawymi inicjatywami i czesto same je realizowaly. Postaw wiki. Aha, i zapewnij wysoka jakosc tekstu (tzn. znajdz chetnych do weryfikowania tego, cu ludzie wypisuja). Samoutrzymujaca sie wiki to mit.
"powolac kilka osob do dokumentowania nowego api" - haslo w stylu "wyrabiajcie 300% normy". Ja popatrze.
"jakis opis postepów" - zgoda. Z jednej strony Hao poleca pytac na forum, bo "skorzystaja wszyscy", z drugiej trudno sie oprzec wrazeniu, ze support wcale nie niechetnie swiadczony jest poza forum.
"udostepnic gotowe moduly jak do obslugi dtb" - a dlaczego akurat to a nie udostepnic X, Y albo Z? Mozliwosc potestowania to zadne uzasadnienie.
[/quote]
Pozniej na to odpoiwem
[quote]
"Ja w przeciwienstwie do innych osadzam ludzi po tym jak pisza a nie co pisza. " - chyba mialo byc odwrotnie. =]
[/quote]
Tak mój bład. Z pośpiechu :/
A teraz przykład jak obiecałem.
Kod W kAPI
CODE
vector<Kontakt> kontakty = Roster::Instancja().Get_Kontakty();
for( size_t i = 0; i < kontakty.size(); ++i )
{
if ( kontakty[i].Get_StatusInfo().size() < 10 ) liczba_opisów += 1;
}
Ten sam kod w obecnym K
CODE
int ile = IMessage( IMC_CNT_COUNT );
for( size_t i = 0; i < ile; ++i )
{
int id = Ctrl->DTgetID( DTCNT, _id );
char* status = Ctrl->DTgetStr( DTCNT, id, flaga_statusu );
//podobno trzeba najpierw kopiowac bo moze ulec zmianie
if ( strlen(stats) < 10 ) liczba_opisów += 1;
//trzeba sprawdzic chyba jeszce czy status != 0;
}
Ile trzeba bylo uzyc flag w obu przypadkach? Ile odnalezc funkcji ktore by robily to co chcemy?
A teraz zrobmy to samo tylko dla pewnej grupy
kAPI
CODE
Grupa grupa("ulubione kontakty");
vector<Kontakt> kontakty = grupa.Get_Kontakty();
for( size_t i = 0; i < kontakty.size(); ++i )
{
if ( kontakty[i].Get_StatusInfo().size() < 10 ) liczba_opisów += 1;
}
w K nawet mi sie nie chce mi sie szukac i tego pisac.
PS. Ktoś wie czemu mi cytaty nie działąją?