Re: Platforma NET Framework 1.1

Autor: Marek Janaszewski /USUN_TO. z adresu!/ <USUN_TO.j_marek_at_gazeta.pl>
Data: Fri 04 Jun 2004 - 18:56:58 MET DST
Message-ID: <c9qnak$ton$3@achot.icm.edu.pl>
Content-Type: text/plain; charset="iso-8859-2"

Radosław Sokół wrote:
> Marek Janaszewski /USUN_TO. z adresu!/ wrote:
>> Czy Twoim zdaniem w takim razie wszyscy powinni pisać oprogramowanie
>> od podstaw.
>
> W ramach jednego projektu lub jednej organizacji -- tak.
>
> Prawdziwą wartością programisty jest zestaw dobrze przez niego
> znanych, zoptymalizowanych bibliotek, przystosowanych do konkret-
> nego profilu programowania.

Witam!

A ja myślałem, że on sam i że myślenie powinno być skierowane na problem, a
nie jak zastosować konkretne narzędzie.
Zgadzam się, że dorobek w postaci bibliotek i wzorów postępowania jest
potrzebny. Ale nie zamykał bym się w nim, aby nie tracić mobilność i
możliwości stosowania wielu technik.

Chyba wchodzimy na straszne ogólniki :-)

>> konsumować pracę innych. Skąd pewność, że lepiej napiszesz,
>> zaprojektuje lub wykonasz coś niż zawodowcy. To jest nie jest grupa
>> programistycznie więc w
>
> 1) Zdefiniuj pojęcie "zawodowcy".
>
> 2) Skąd wiesz, że mam mniejsze doświadczenie niż jakaś tam
> grupa programistów wybrana z kilku firm?

Osobiście nie mam nic do Ciebie, nawet nie znam Ciebie. Ale wydaje mi się,
że skala problemu jest taka, że chodź byś nie wiem jak się wytężał to nie
udźwigniesz taki to ciężar. W każdym razie ja nie zamierzam wszystkie pisać
sam. Twoje podejście może być dla mnie pocieszający, bo często sobie
wyrzucam, że zbyt wiele piszę sam a nie decyduje się na testowanie gotowców.
Jak to często jest to modzie. Podobno dobry programista to leniwy
programista.

> 3) Nie sądzisz, że biblioteki dostosowane do konkretnego
> zadania będą znacznie efektywniejsze (i pewnie mniej
> podatne na błędy), niż zestaw uniwersalnych bibliotek
> "do wszystkiego"?

Przecież w interfejsie użytkownika ta wydajność nie ma tak priorytetowego
znaczenia. I tak procesor się nudzi, kiedy użytkownika wprowadza dane. Dla
przeciętnego komputera wyświetlenie tych paru elementów na ekranie nie
stanowi takiego problemu aby się tylko tym zajmować. Wydajność zapewnia
tutaj akceleracja karty graficznej. Czasem decyzje się podejmuje świadomie,
zamiast zajmować się optymalizacją buduje się inne rzeczy. Ponadto
zoptymalizowany kod nie zawsze jest bezpieczny. Klasyczny przykład to kod
C++ i błędy typu buffer overflow. Praktyka pokazuje, że powinniśmy się
kodzie na to aby kod kontrolował parametry wejścia procedur nawet kosztem
wydajności i wielokrotnej kontroli.

Czyli moim zdaniem są dwie sprawy:
* Czas poświecony na optymalizacje, a optymalizacja w tym kontekście nie
musi być priorytetowa. Tańszy może być nowy komputer.
* Bezpieczeństwo, kontrola zajmuje czas procesora.

Biblioteki to biblioteki i nawet przygotowane przez innych nie są do
wszystkiego. Nawet jak napiszesz własną bibliotekę i zaczniesz ją
bombardować wywoływanie różnych metod w różnej kolejności to powstaną dziwne
sytuacje, które od razu nie były oczywiste. Dlatego trzeba kontrolować
parametry wejścia itp. Lepiej od razu wyłapać błąd zanim, nikt już nic z
tego nie będzie rozumiał.

Także uważam, że z bibliotekami jest generalnie jeden problem, powstających
zależności między kawałkami kodu a nie banalnych błędów w tych kawałkach
kodu. Niezależnie czy własnymi czy cudzymi. Nie stosowanie bibliotek to
pewno oznacza paraliż i jeszcze więcej błędów.

> 4) O umiejętnościach "zawodowców" mam już pojęcie, kilka razy
> natrafiając na błędy w bibliotekach VCL dołączanych do
> Delphi. Tylko dzięki obecności źródeł tych bibliotek
> udawało mi się zlokalizować przyczynę błędów i ominąć
> je.

Mierzysz wysoko. Ekonomia zweryfikowała kolesi od Borlanda. Utrzymują się na
rynku, a błędy zdarzają się wszystkim. Delphi ma swoje wady i zalety. Przy
użyciu tego narzędzia powstaje wiele ciekawych aplikacji. Więc z definicji
to narzędzie nie jest takie straszne. Kiedyś czytałem, że przy pomocy
aplikacji w Delphi rozkodowywano ludzki genom, czy coś w tym stylu. NASA
chyba używa Delphi. A Ty tak po prostu uważasz, że w Borlandzie pracują
amatorzy.

>> może bardziej praktycznie. Jeśli bym miał do wyboru program oparty na
>> autorskiej bibliotece a oparty np. na sensownym serwerze SQL to
>> wybrał bym
>
> 1) Nawet, gdyby wersja z serwerem SQL kosztowała parę tysięcy
> drożej i zapewniała taką samą jakość (lub gorszą, wymagając
> skomplikowanej instalacji i konfiguracji serwera baz danych)?
>
> 2) SQL to pewien skrajny przypadek, programy bazodanowe raczej
> robi się w oparciu o specjalizowany serwer. Co powiesz jednak
> o bibliotekach obsługi GUI, które mogą mieć najwięszy nega-
> tywny wpływ na wydajność (i czego głównie dotyczy .NET)?
[...]

Stosuje serwery SQL i znam ich zalety oraz wady. Jeśli nie stosujesz serwera
to raczej nie masz baz danych. Codd określił wymogi jakie stawia się
systemowi zarządzania relacyjnymi bazami danych. Chodzi o takie sprawy jak
transakcje, interfejs w postaci języka SQL. Sprawa jest naprawę ważna i
ważne dane chciałbym powierzyć odpowiedniemu programowi. Nie bagatelna jest
możliwość podłączania się później do takie serwera z różnych jego narzędzi a
także innych programów.

Nasze dyskusje są czysto teoretycznie. Przeciętny koleś jak ma przechować
dużo danych bierze jakiś serwer, nawet darmowy i go nimi bombarduje. Problem
zwykle jej jak znaleźć dobry za darmo i na umiejętnościach jego
wykorzystania, niż na tym że takie serwery istnieją.

Biblioteki .NET Framework nie stanowią takiego problemu. Pracuje na program
napisanych przy ich użyciu. Pomijasz zupełnie MSIL/JIT i GC.

Dla mnie kwestie bibliotek nie mają takiego znaczenie, pracuje także w
Delphi więc nie mam problemu oswojeniem się z sytuacją kiedy stosuje
bibliotekę. Pand to mam wybór, nie muszę stosować każdej biblioteki, która
wpadnie mi w ręce. Większość najważniejszych komponentów w Delphi to i tak
są miłe owijki klas Win32API.

Twoje podejście wydaje mi się nie praktyczne. Kto w realnym świecie ma czas
i pieniądze nic nie robić tylko zastanawiać się jak zoptymalizować własne
biblioteki. Przy czym sama optymalizacja nie jest jedyną rzeczą ważna dla
projektu. Czasem mniej optymalne rozwiązania są lepsze z innych względów.

Osobiście mam już dosyć zastanawiania się tylko na optymalizacją. Np. koleś,
który jest analitykiem i projektuje system, gdyby miał zajmować się tylko
optymalnością to by zwariował, a to co by powstało było by koszmarne.
Programowanie nie kończy i nie zaczyna się tylko na optymalności.

-- 
Pozdrawiam,
Marek Janaszewski
[ j_marek@gazeta.pl ]
Received on Fri Jun 4 22:55:18 2004

To archiwum zostało wygenerowane przez hypermail 2.1.8 : Fri 04 Jun 2004 - 23:42:01 MET DST