-
1. Data: 2009-12-06 22:36:56
Temat: sockety, czyli "suckage thereof"
Od: "Wiktor S." <w...@M...fm>
Pozwolę sobie ponarzekać na sockety - na przykładzie winsock2, ale
dotyczy to też podobnych bibliotek w innych systemach.
Jest to jedno z gorszych API jakie widziałem.
Biblioteka stara się być do wszystkiego, od zabytków z lat chyba 60-tych po
Bluetooth. Przez to kod korzystający z biblioteki wygląda strasznie,
wszędzie zbędne wskaźniki - nawet do zwykłego inta, a jeszcze obok podajemy
jego rozmiar!
Zdaję sobie sprawę, że protokoły mają gdzieniegdzie wartości little endian,
ale można było to przed programistą ukryć, nie zmuszając do ręcznej
konwersji w niewiadomo którą stronę, niewiadomo w których miejscach. Mnóstwo
niespójności.
Wszędzie zbędne skróty, włączając w to potworki typu WSAEACCES (bo drugie S
na końcu byłoby już chyba za długie).
Internet raz nazywa się INET, gdzie indziej In, a jeszcze gdzie indziej IP.
Wiele pól w strukturach ma nie wiedzieć po co dziwaczne nadmiarowe
przedrostki (np. S_un_w).
Pary stałych np. WSAECANCELLED i WSA_E_CANCELLED o różnych wartościach.
Do wyboru sockety blokujące (czekające do wieczności bez możliwości
anulowania operacji), nieblokujące (przepraszające nas że istnieją) i
asynchroniczne, podczas gdy wygodniejsze byłoby coś pomiędzy pierwszymi
dwoma.
Funkcje o mało wyszukanych nazwach accept, select czy connect. Tutaj też
niespójność aż niewiarygodna: gethostbyname ale GetNameByType.
I ten cały bajzel w imię czego? Zgodności z jakimś unikso-posiksem sprzed 30
lat? Po co?
--
Azarien
-
2. Data: 2009-12-06 23:17:53
Temat: Re: sockety, czyli "suckage thereof"
Od: Jędrzej Dudkiewicz <j...@g...com>
Wiktor S. pisze:
> Pozwolę sobie ponarzekać na sockety - na przykładzie winsock2, ale
> dotyczy to też podobnych bibliotek w innych systemach.
> Jest to jedno z gorszych API jakie widziałem.
Ale przecież to co piszesz dotyczy w 90% Windows a nie "innych systemów".
JD
PS. Do API socketów nic nie mam od czasu, jak musiałem napisać trochę
kodu w motifie (w zasadzie w lesstifie, ale jeden pies).
-
3. Data: 2009-12-07 00:55:14
Temat: Re: sockety, czyli "suckage thereof"
Od: "Wiktor S." <w...@M...fm>
>> Pozwolę sobie ponarzekać na sockety - na przykładzie winsock2, ale
>> dotyczy to też podobnych bibliotek w innych systemach.
>> Jest to jedno z gorszych API jakie widziałem.
> Ale przecież to co piszesz dotyczy w 90% Windows a nie "innych systemów".
Twierdzisz, że sockety w "innych systemach" są jakoś magicznie zupełnie
inne?
> PS. Do API socketów nic nie mam od czasu, jak musiałem napisać trochę kodu
> w motifie (w zasadzie w lesstifie, ale jeden pies).
Nie znam.
--
Azarien
-
4. Data: 2009-12-07 09:05:53
Temat: Re: sockety, czyli "suckage thereof"
Od: Paweł Kierski <n...@p...net>
Wiktor S. wrote:
[...]
> I ten cały bajzel w imię czego? Zgodności z jakimś unikso-posiksem
> sprzed 30
> lat? Po co?
Bo pod Windows na gwałt potrzebowano aplikacji sieciowych, dodano
Winsock i portowano, co się da, albo pisano za pomocą programistów
znających interfejs BSD sockets. A wszystko to niecałe 20 lat temu.
Potem już tylko zgodność interfejsów...
--
Paweł Kierski
n...@p...net
-
5. Data: 2009-12-07 10:37:34
Temat: Re: sockety, czyli "suckage thereof"
Od: "Wiktor Zychla" <u...@n...com.eu>
> Funkcje o mało wyszukanych nazwach accept, select czy connect. Tutaj też
> niespójność aż niewiarygodna: gethostbyname ale GetNameByType.
> I ten cały bajzel w imię czego? Zgodności z jakimś unikso-posiksem sprzed
> 30
> lat? Po co?
przecież tego API nie dodano do Windowsa wczoraj, tylko circa about 20 lat
temu. to, że interfejs, który adoptowano, ma jakąś konwencję kejsingu, a
windowsowy ma inną - to akurat nie jest nic dziwnego - w API Windows
występują chyba wszystkie możliwe konwencje nazewnicze.
nazw funkcji nie ma co się czepiać - one przyszły z adoptowanego interfejsu.
Wiktor Zychla
-
6. Data: 2009-12-07 20:30:40
Temat: Re: sockety, czyli "suckage thereof"
Od: Jędrzej Dudkiewicz <j...@g...com>
Wiktor S. pisze:
>>> Pozwolę sobie ponarzekać na sockety - na przykładzie winsock2, ale
>>> dotyczy to też podobnych bibliotek w innych systemach.
>>> Jest to jedno z gorszych API jakie widziałem.
>
>> Ale przecież to co piszesz dotyczy w 90% Windows a nie "innych systemów".
>
> Twierdzisz, że sockety w "innych systemach" są jakoś magicznie zupełnie
> inne?
Nie przypominam sobie na innych systemach WSAEACCESS, In, WSAECANCELLED,
GetNameByType.
Fragment o "zgodności z jakimś unikso-posiksem sprzed 30 lat" dotyczyć
może tylko Windows, bo na innych systemach to jest po prostu stare API,
nie zmieniane w imię zgodności wstecznej.
Co do wskaźników na int i ich rozmiarów - nie wszędzie rozmiar inta jest
taki sam, nie zawsze będzie to int.
JD
-
7. Data: 2009-12-09 04:36:38
Temat: Re: sockety, czyli "suckage thereof"
Od: "j...@f...adres.to" <w...@c...barg.cy>
Wiktor Zychla wrote:
>> Funkcje o mało wyszukanych nazwach accept, select czy connect. Tutaj też
>> niespójność aż niewiarygodna: gethostbyname ale GetNameByType.
>> I ten cały bajzel w imię czego? Zgodności z jakimś unikso-posiksem
>> sprzed 30
>> lat? Po co?
>
> przecież tego API nie dodano do Windowsa wczoraj, tylko circa about 20
> lat temu. to, że interfejs, który adoptowano, ma jakąś konwencję
> kejsingu, a windowsowy ma inną - to akurat nie jest nic dziwnego - w API
> Windows występują chyba wszystkie możliwe konwencje nazewnicze.
>
> nazw funkcji nie ma co się czepiać - one przyszły z adoptowanego
> interfejsu.
>
> Wiktor Zychla
A ja się przyczepię.
Ciebie.
http://pl.wikipedia.org/wiki/Adopcja
http://pl.wikipedia.org/wiki/Adaptacja
j..
-
8. Data: 2009-12-09 07:44:16
Temat: Re: sockety, czyli "suckage thereof"
Od: Mariusz Kruk <M...@e...eu.org>
epsilon$ while read LINE; do echo \>"$LINE"; done < "j...@f...adres.to"
>> nazw funkcji nie ma co się czepiać - one przyszły z adoptowanego
>> interfejsu.
>
>A ja się przyczepię.
>Ciebie.
>http://pl.wikipedia.org/wiki/Adopcja
>http://pl.wikipedia.org/wiki/Adaptacja
No to czepiaj się płota. Akurat adopcja była jak najbardziej na miejscu
w tym znaczeniu. Interfejs został adoptowany, a nie zaadaptowany.
Adaptacja oznaczałaby przystosowanie interfejsu, a nie włączenie go w
takiej postaci, w jakiej jest. (inaczej w ogóle ta operacja nie miałaby
sensu).
--
\.\.\.\.\.\.\.\.\.\.\.\.\.\
.\....@e...eu.org.\.\.
\.http://epsilon.eu.org/\.\
.\.\.\.\.\.\.\.\.\.\.\.\.\.
-
9. Data: 2009-12-09 11:27:38
Temat: Re: sockety, czyli "suckage thereof"
Od: "j...@f...adres.to" <w...@c...barg.cy>
Mariusz Kruk wrote:
> epsilon$ while read LINE; do echo \>"$LINE"; done< "j...@f...adres.to"
>>> nazw funkcji nie ma co się czepiać - one przyszły z adoptowanego
>>> interfejsu.
>>
>> A ja się przyczepię.
>> Ciebie.
>> http://pl.wikipedia.org/wiki/Adopcja
>> http://pl.wikipedia.org/wiki/Adaptacja
>
> No to czepiaj się płota. Akurat adopcja była jak najbardziej na miejscu
> w tym znaczeniu. Interfejs został adoptowany, a nie zaadaptowany.
> Adaptacja oznaczałaby przystosowanie interfejsu, a nie włączenie go w
> takiej postaci, w jakiej jest. (inaczej w ogóle ta operacja nie miałaby
> sensu).
>
Przepraszam bardzo, czy owo "włączenie interfejsu" to była zmiana
interfejsu istniejącego już kodu?
Bo tylko wtedy użycie słowa "adopcja" mogłoby mieć takie znaczenie,
jakie mu przypisujesz.
Zazwyczaj interfejs włączasz do programu na zasadzie zupełnie innej niż
włączasz dziecko do rodziny.
Dziecko już jest. Gdy zostaje włączone do rodziny, jego wnętrze (ciało)
się nie zmienia, natomiast zostaje _zmieniony_ zapis zewnętrzny (zapis w
dokumentach).
Na zasadzie właśnie tej analogii istnieje pojęcie adopcji prawa (jakieś
prawo już jest, przyjmujemy tylko inny zapis - możliwe że niosący inną
treść, gdy przyjdzie do jego stosowania), czy np. adopcji do rodu
szlacheckiego.
Odpowiada to zmianie interfejsu dla danego kodu.
_Dołączenie_ interfejsu (jako następnego interfejsu do danego kodu) to
jest właśnie *dołączenie* i nie ma sensu używanie w tym kontekście słowa
"adopcja".
Natomiast gdy bierzesz kod wykonujący jakieś zadanie, zostawiasz
interfejs nieruszonay, ale wnętrze kodu musisz dostosować do docelowaego
środowiska, to wtedy jest to oczywiście adaptacja, ale nie interfejsu,
tylko kodu.
Chyba, że wyrażasz się poetycko, wtedy przepraszam, na poezji wysokiego
lotu to ja się nie znam.
j..
-
10. Data: 2009-12-09 12:41:35
Temat: Re: sockety, czyli "suckage thereof"
Od: Mariusz Kruk <M...@e...eu.org>
epsilon$ while read LINE; do echo \>"$LINE"; done < "j...@f...adres.to"
>>>> nazw funkcji nie ma co się czepiać - one przyszły z adoptowanego
>>>> interfejsu.
>>> A ja się przyczepię.
>>> Ciebie.
>>> http://pl.wikipedia.org/wiki/Adopcja
>>> http://pl.wikipedia.org/wiki/Adaptacja
>> No to czepiaj się płota. Akurat adopcja była jak najbardziej na miejscu
>> w tym znaczeniu. Interfejs został adoptowany, a nie zaadaptowany.
>> Adaptacja oznaczałaby przystosowanie interfejsu, a nie włączenie go w
>> takiej postaci, w jakiej jest. (inaczej w ogóle ta operacja nie miałaby
>> sensu).
>Przepraszam bardzo, czy owo "włączenie interfejsu" to była zmiana
>interfejsu istniejącego już kodu?
>
>Bo tylko wtedy użycie słowa "adopcja" mogłoby mieć takie znaczenie,
>jakie mu przypisujesz.
Rzeco? Gdyby była to zmiana interfejsu, to właśnie byłaby adaptacja.
>Zazwyczaj interfejs włączasz do programu na zasadzie zupełnie innej niż
>włączasz dziecko do rodziny.
>Dziecko już jest. Gdy zostaje włączone do rodziny, jego wnętrze (ciało)
>się nie zmienia, natomiast zostaje _zmieniony_ zapis zewnętrzny (zapis w
>dokumentach).
Patrzysz z drugiej strony. Rodzina już jest, natomiast zostaje
rozszerzona o obiekt dotąd obcy.
>Natomiast gdy bierzesz kod wykonujący jakieś zadanie, zostawiasz
>interfejs nieruszonay, ale wnętrze kodu musisz dostosować do docelowaego
>środowiska, to wtedy jest to oczywiście adaptacja, ale nie interfejsu,
>tylko kodu.
Oczywiście. Kod trzeba adaptować do adoptowanego interfejsu.
--
[------------------------]
[ K...@e...eu.org ]
[ http://epsilon.eu.org/ ]
[------------------------]