-
1. Data: 2012-05-09 08:33:59
Temat: 'abstrakcje' a zwartosc
Od: " prof fir" <f...@g...pl>
czy ktos moze podac jakies przyklady abstrakcji ktore
poprawiają zwiezlosc kodu w ten sposob ze przy uzyciu
tych abstrakcji kod bylby znacznie mniejszy i czytelniejszy
niz normalny (przyzwoity, ale bez tych wypracowanych abstrakcji)?
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
2. Data: 2012-05-09 09:54:44
Temat: Re: 'abstrakcje' a zwartosc
Od: " M.M." <m...@g...pl>
prof fir <f...@g...pl> napisał(a):
> czy ktos moze podac jakies przyklady abstrakcji ktore
> poprawiają zwiezlosc kodu w ten sposob ze przy uzyciu
> tych abstrakcji kod bylby znacznie mniejszy i czytelniejszy
> niz normalny (przyzwoity, ale bez tych wypracowanych abstrakcji)?
Nie lepiej pogadać o dresach albo prosiakach?
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
3. Data: 2012-05-09 10:12:54
Temat: Re: 'abstrakcje' a zwartosc
Od: zażółcony <r...@c...pl>
W dniu 2012-05-09 08:33, prof fir pisze:
> czy ktos moze podac jakies przyklady abstrakcji ktore
> poprawiają zwiezlosc kodu w ten sposob ze przy uzyciu
> tych abstrakcji kod bylby znacznie mniejszy i czytelniejszy
> niz normalny (przyzwoity, ale bez tych wypracowanych abstrakcji)?
Przykąłd masz w innym watku: "what up, programowanie aspektowe"
-
4. Data: 2012-05-09 12:49:43
Temat: Re: 'abstrakcje' a zwartosc
Od: " " <f...@g...pl>
zażółcony <r...@c...pl> napisał(a):
> W dniu 2012-05-09 08:33, prof fir pisze:
> > czy ktos moze podac jakies przyklady abstrakcji ktore
> > poprawiają zwiezlosc kodu w ten sposob ze przy uzyciu
> > tych abstrakcji kod bylby znacznie mniejszy i czytelniejszy
> > niz normalny (przyzwoity, ale bez tych wypracowanych abstrakcji)?
>
> Przykąłd masz w innym watku: "what up, programowanie aspektowe"
>
tam jest przyklad na podzial kodu (istotnie dosyc ciekawy,
np na pion glowny i pion do logow plus pion do jeszcze czegostam)
nie na osiaganie zwartosci przez jakies wysokopoziomowe techniki
pewna techniką mogloby byc zwykle definiowanie operatorow np
dla mnozen na wektorach i macierzach - ale to zastosowanie
jest ograniczone, bo w praktyce nie ma tego duzo
powinny byc byc moze jakies inne techniki nadawania kodu
zwiezlosci przy pomocy abstrakcji ale nic mi jakos nie
przychodzi do glowy
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
5. Data: 2012-05-09 14:09:09
Temat: Re: 'abstrakcje' a zwartosc
Od: zażółcony <r...@c...pl>
W dniu 2012-05-09 12:49, f...@g...pl pisze:
> zażółcony<r...@c...pl> napisał(a):
>
>> W dniu 2012-05-09 08:33, prof fir pisze:
>>> czy ktos moze podac jakies przyklady abstrakcji ktore
>>> poprawiają zwiezlosc kodu w ten sposob ze przy uzyciu
>>> tych abstrakcji kod bylby znacznie mniejszy i czytelniejszy
>>> niz normalny (przyzwoity, ale bez tych wypracowanych abstrakcji)?
>>
>> Przykąłd masz w innym watku: "what up, programowanie aspektowe"
>>
> tam jest przyklad na podzial kodu (istotnie dosyc ciekawy,
> np na pion glowny i pion do logow plus pion do jeszcze czegostam)
> nie na osiaganie zwartosci przez jakies wysokopoziomowe techniki
>
> pewna techniką mogloby byc zwykle definiowanie operatorow np
> dla mnozen na wektorach i macierzach - ale to zastosowanie
> jest ograniczone, bo w praktyce nie ma tego duzo
>
> powinny byc byc moze jakies inne techniki nadawania kodu
> zwiezlosci przy pomocy abstrakcji ale nic mi jakos nie
> przychodzi do glowy
Ale tworzenie abstrakcji wiąże się z podziałem/refactoringiem
kodu, tu nie ma sprzeczności.
Tworzenie abstrakcji to identyfikacja jakiegoś powtarzalnego
zjawiska/konstrukcji/rozwiązania, jego nazwanie
i 'wyabstrahowanie' do takiej postaci, by np. jeden problem
rozwiązywać w jednym miejscu, a nie w tysiącu
(na zasadzie copy-paste lub ...). Albo by np. jedno wymaganie
użytkownika implementować w jednym miejscu (żeby przeciwdziałać
zjawisku rozpraszania implementacji wymagań, bo potem jest kłopot, kiedy
wymaganie się zmienia i trzeba poprawiać w wielu miejscach
kodu).
-
6. Data: 2012-05-09 16:10:54
Temat: Re: 'abstrakcje' a zwartosc
Od: " " <f...@g...pl>
zażółcony <r...@c...pl> napisał(a):
> W dniu 2012-05-09 12:49, f...@g...pl pisze:
> > zażółcony<r...@c...pl> napisał(a):
> >
> >> W dniu 2012-05-09 08:33, prof fir pisze:
> >>> czy ktos moze podac jakies przyklady abstrakcji ktore
> >>> poprawiają zwiezlosc kodu w ten sposob ze przy uzyciu
> >>> tych abstrakcji kod bylby znacznie mniejszy i czytelniejszy
> >>> niz normalny (przyzwoity, ale bez tych wypracowanych abstrakcji)?
> >>
> >> Przykąłd masz w innym watku: "what up, programowanie aspektowe"
> >>
> > tam jest przyklad na podzial kodu (istotnie dosyc ciekawy,
> > np na pion glowny i pion do logow plus pion do jeszcze czegostam)
> > nie na osiaganie zwartosci przez jakies wysokopoziomowe techniki
> >
> > pewna techniką mogloby byc zwykle definiowanie operatorow np
> > dla mnozen na wektorach i macierzach - ale to zastosowanie
> > jest ograniczone, bo w praktyce nie ma tego duzo
> >
> > powinny byc byc moze jakies inne techniki nadawania kodu
> > zwiezlosci przy pomocy abstrakcji ale nic mi jakos nie
> > przychodzi do glowy
>
> Ale tworzenie abstrakcji wiąże się z podziałem/refactoringiem
> kodu, tu nie ma sprzeczności.
>
> Tworzenie abstrakcji to identyfikacja jakiegoś powtarzalnego
> zjawiska/konstrukcji/rozwiązania, jego nazwanie
> i 'wyabstrahowanie' do takiej postaci, by np. jeden problem
> rozwiązywać w jednym miejscu, a nie w tysiącu
> (na zasadzie copy-paste lub ...). Albo by np. jedno wymaganie
> użytkownika implementować w jednym miejscu (żeby przeciwdziałać
> zjawisku rozpraszania implementacji wymagań, bo potem jest kłopot, kiedy
> wymaganie się zmienia i trzeba poprawiać w wielu miejscach
> kodu).
>
no tak z tym ze 'wydzielenie czegos do jednej funkcji i nie
powtarzanie tego copy'n'pastem tylko wywolywanie ' vel
'wydzielenie czegos do jednej funkcji i zapodanie tego
drugiej przez wskaznik' to są normalne raczej niskopoziomowe
techniki - mi chodzi o jakies inne, wyzejpoziomowe ktore
nie wystepuja przynajmniej w jakiejs w miare ladnej postaci
w nizejpoziomowej wersji - slowem chodzi mi o techniki
wysokopoziomowe (hll) ktore owocuja znacznie krotszymi kodami
i najlepiej czytelniejszymi kodami (w hll w stosunku do c)
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
7. Data: 2012-05-09 17:30:48
Temat: Re: 'abstrakcje' a zwartosc
Od: zażółcony <r...@c...pl>
W dniu 2012-05-09 16:10, f...@g...pl pisze:
> zażółcony<r...@c...pl> napisał(a):
>
>> W dniu 2012-05-09 12:49, f...@g...pl pisze:
>>> zażółcony<r...@c...pl> napisał(a):
>>>
>>>> W dniu 2012-05-09 08:33, prof fir pisze:
>>>>> czy ktos moze podac jakies przyklady abstrakcji ktore
>>>>> poprawiają zwiezlosc kodu w ten sposob ze przy uzyciu
>>>>> tych abstrakcji kod bylby znacznie mniejszy i czytelniejszy
>>>>> niz normalny (przyzwoity, ale bez tych wypracowanych abstrakcji)?
>>>>
>>>> Przykąłd masz w innym watku: "what up, programowanie aspektowe"
>>>>
>>> tam jest przyklad na podzial kodu (istotnie dosyc ciekawy,
>>> np na pion glowny i pion do logow plus pion do jeszcze czegostam)
>>> nie na osiaganie zwartosci przez jakies wysokopoziomowe techniki
>>>
>>> pewna techniką mogloby byc zwykle definiowanie operatorow np
>>> dla mnozen na wektorach i macierzach - ale to zastosowanie
>>> jest ograniczone, bo w praktyce nie ma tego duzo
>>>
>>> powinny byc byc moze jakies inne techniki nadawania kodu
>>> zwiezlosci przy pomocy abstrakcji ale nic mi jakos nie
>>> przychodzi do glowy
>>
>> Ale tworzenie abstrakcji wiąże się z podziałem/refactoringiem
>> kodu, tu nie ma sprzeczności.
>>
>> Tworzenie abstrakcji to identyfikacja jakiegoś powtarzalnego
>> zjawiska/konstrukcji/rozwiązania, jego nazwanie
>> i 'wyabstrahowanie' do takiej postaci, by np. jeden problem
>> rozwiązywać w jednym miejscu, a nie w tysiącu
>> (na zasadzie copy-paste lub ...). Albo by np. jedno wymaganie
>> użytkownika implementować w jednym miejscu (żeby przeciwdziałać
>> zjawisku rozpraszania implementacji wymagań, bo potem jest kłopot, kiedy
>> wymaganie się zmienia i trzeba poprawiać w wielu miejscach
>> kodu).
>>
>
> no tak z tym ze 'wydzielenie czegos do jednej funkcji i nie
> powtarzanie tego copy'n'pastem tylko wywolywanie ' vel
> 'wydzielenie czegos do jednej funkcji i zapodanie tego
> drugiej przez wskaznik' to są normalne raczej niskopoziomowe
> techniki - mi chodzi o jakies inne, wyzejpoziomowe ktore
> nie wystepuja przynajmniej w jakiejs w miare ladnej postaci
> w nizejpoziomowej wersji - slowem chodzi mi o techniki
> wysokopoziomowe (hll) ktore owocuja znacznie krotszymi kodami
> i najlepiej czytelniejszymi kodami (w hll w stosunku do c)
Imo to nie tak ...
Tworzenie abstrakcji to nie żadne czary-mary, które sprawiają,
że w jednej linijce kodu implementujesz wiele wymagań użytkownika.
Jest wiele wymagań - będzie dużo kodu. Chyba że ...
Chyba że są to wymagania 'powszechne' a nie specyficzne, zwiazane
n. z modą na to, by okienka wyglądały tak samo. Wtedy ktoś Ci
to zrobi i powie, jak masz to użyć.
Tworzenie abstrakcji to zwykłe, programistyczno-projektowe
rzemiosło. Ja sie do C nie odnoszę, bo ostatnio programowałem
w c na poważnie jakieś 11 lat temu. Ale w Javie to masz to co
podałem. Dodatkowo można dodać tyle, że np. dzięki narzędziom takim
jak Spring + całe zestawy bibliotek współpracujących
wiele spraw sprowadza się do odpowiedniego pozapinania aspektów
technicznych 'na górze', ale nic nie zwalnia z tego, że
musisz usiąść i trzaskać te metody w klasach, które robią
biznes. Możesz liczyć na "coś więcej", jak wchodzisz w jakiś
wyspecjalizowany obszar, np. jak wchodzisz w temat integracji
systemów informatycznych (budowa interfejsów międzysystemowych)
to dostajesz w ręce oparty na Javie server Mule, tzw.
szynę danych, która dostarcza od razu abstrakcje ułatwiajace
implementację typowych w takich zadaniach wzorców projektowych
- i jak wiesz o co biega, to wiele ze spraw, zamiast projektować -
możesz sobie wyklikać na diagramach. Jak jesteś bardziej
po stronie implementacji wymagań biznesowych, to być może BPEL
jest tym, o co pytasz, może drools. Pod spodem jednak
zawsze siedzi ta Java (ew. .NET). Wykorzystanie abstrakcji
polega tu na ty, że ktoś zaplanował za Ciebie szablon, w którym
z góry określił, gdzie się zaczynają i kończą transakcje biznesowe i/lub
dostarczył plik konfiguracyjny, w którym np. wymieniasz nazwy
klas/funkcji/interfejsów, które maję się odpalać transakcyjnie.
Ale ideowo jest to dokładnie to samo, co Ci pokazałem.
Musisz sam zbudować funkcje/obiekty i je powiązać zależnościami :)
Np. zależnością: "jedna wywołuje drugą".
Inaczej się nie da :)
-
8. Data: 2012-05-09 19:03:36
Temat: Re: 'abstrakcje' a zwartosc
Od: " " <f...@g...pl>
zażółcony <r...@c...pl> napisał(a):
> W dniu 2012-05-09 16:10, f...@g...pl pisze:
> > zażółcony<r...@c...pl> napisał(a):
> >
> >> W dniu 2012-05-09 12:49, f...@g...pl pisze:
> >>> zażółcony<r...@c...pl> napisał(a):
> >>>
> >>>> W dniu 2012-05-09 08:33, prof fir pisze:
> >>>>> czy ktos moze podac jakies przyklady abstrakcji ktore
> >>>>> poprawiają zwiezlosc kodu w ten sposob ze przy uzyciu
> >>>>> tych abstrakcji kod bylby znacznie mniejszy i czytelniejszy
> >>>>> niz normalny (przyzwoity, ale bez tych wypracowanych abstrakcji)?
> >>>>
> >>>> Przykąłd masz w innym watku: "what up, programowanie aspektowe"
> >>>>
> >>> tam jest przyklad na podzial kodu (istotnie dosyc ciekawy,
> >>> np na pion glowny i pion do logow plus pion do jeszcze czegostam)
> >>> nie na osiaganie zwartosci przez jakies wysokopoziomowe techniki
> >>>
> >>> pewna techniką mogloby byc zwykle definiowanie operatorow np
> >>> dla mnozen na wektorach i macierzach - ale to zastosowanie
> >>> jest ograniczone, bo w praktyce nie ma tego duzo
> >>>
> >>> powinny byc byc moze jakies inne techniki nadawania kodu
> >>> zwiezlosci przy pomocy abstrakcji ale nic mi jakos nie
> >>> przychodzi do glowy
> >>
> >> Ale tworzenie abstrakcji wiąże się z podziałem/refactoringiem
> >> kodu, tu nie ma sprzeczności.
> >>
> >> Tworzenie abstrakcji to identyfikacja jakiegoś powtarzalnego
> >> zjawiska/konstrukcji/rozwiązania, jego nazwanie
> >> i 'wyabstrahowanie' do takiej postaci, by np. jeden problem
> >> rozwiązywać w jednym miejscu, a nie w tysiącu
> >> (na zasadzie copy-paste lub ...). Albo by np. jedno wymaganie
> >> użytkownika implementować w jednym miejscu (żeby przeciwdziałać
> >> zjawisku rozpraszania implementacji wymagań, bo potem jest kłopot, kiedy
> >> wymaganie się zmienia i trzeba poprawiać w wielu miejscach
> >> kodu).
> >>
> >
> > no tak z tym ze 'wydzielenie czegos do jednej funkcji i nie
> > powtarzanie tego copy'n'pastem tylko wywolywanie ' vel
> > 'wydzielenie czegos do jednej funkcji i zapodanie tego
> > drugiej przez wskaznik' to są normalne raczej niskopoziomowe
> > techniki - mi chodzi o jakies inne, wyzejpoziomowe ktore
> > nie wystepuja przynajmniej w jakiejs w miare ladnej postaci
> > w nizejpoziomowej wersji - slowem chodzi mi o techniki
> > wysokopoziomowe (hll) ktore owocuja znacznie krotszymi kodami
> > i najlepiej czytelniejszymi kodami (w hll w stosunku do c)
>
> Imo to nie tak ...
> Tworzenie abstrakcji to nie żadne czary-mary, które sprawiają,
> że w jednej linijce kodu implementujesz wiele wymagań użytkownika.
> Jest wiele wymagań - będzie dużo kodu. Chyba że ...
> Chyba że są to wymagania 'powszechne' a nie specyficzne, zwiazane
> n. z modą na to, by okienka wyglądały tak samo. Wtedy ktoś Ci
> to zrobi i powie, jak masz to użyć.
> Tworzenie abstrakcji to zwykłe, programistyczno-projektowe
> rzemiosło. Ja sie do C nie odnoszę, bo ostatnio programowałem
> w c na poważnie jakieś 11 lat temu. Ale w Javie to masz to co
> podałem. Dodatkowo można dodać tyle, że np. dzięki narzędziom takim
> jak Spring + całe zestawy bibliotek współpracujących
> wiele spraw sprowadza się do odpowiedniego pozapinania aspektów
> technicznych 'na górze', ale nic nie zwalnia z tego, że
> musisz usiąść i trzaskać te metody w klasach, które robią
> biznes. Możesz liczyć na "coś więcej", jak wchodzisz w jakiś
> wyspecjalizowany obszar, np. jak wchodzisz w temat integracji
> systemów informatycznych (budowa interfejsów międzysystemowych)
> to dostajesz w ręce oparty na Javie server Mule, tzw.
> szynę danych, która dostarcza od razu abstrakcje ułatwiajace
> implementację typowych w takich zadaniach wzorców projektowych
> - i jak wiesz o co biega, to wiele ze spraw, zamiast projektować -
> możesz sobie wyklikać na diagramach. Jak jesteś bardziej
> po stronie implementacji wymagań biznesowych, to być może BPEL
> jest tym, o co pytasz, może drools. Pod spodem jednak
> zawsze siedzi ta Java (ew. .NET). Wykorzystanie abstrakcji
> polega tu na ty, że ktoś zaplanował za Ciebie szablon, w którym
> z góry określił, gdzie się zaczynają i kończą transakcje biznesowe i/lub
> dostarczył plik konfiguracyjny, w którym np. wymieniasz nazwy
> klas/funkcji/interfejsów, które maję się odpalać transakcyjnie.
> Ale ideowo jest to dokładnie to samo, co Ci pokazałem.
> Musisz sam zbudować funkcje/obiekty i je powiązać zależnościami :)
> Np. zależnością: "jedna wywołuje drugą".
> Inaczej się nie da :)
wydaje mi sie ze panuje pewne przekonanie (cos w rodzaju
mitu, trudno mi okreslic na ile prawdziwego) ze programy
jakims w jezyku wysokopoziomowym moga byc krotsze niz
w jezyku niskopoziomowym jak c, cos w stylu wyobrazenia
ze jak w c chcesz narysowac okrag to musisz to rysowac
per pixel a w jezyko wysokopoziomowym wywolujesz po
prostu costam - z tym ze mozna wlasnie zauwazyc ze to
akurat nie jest zwiazane z wysokopoziomowoscia jezyka
tylko z setem bibliotek,
refleksja na te tematy wiaze sie z moim spojrzeniem na jakis
wyjatkowo nieladny kod w pythonie ktory sie skladal z
wielkiej ilosci selfow kropek try catchow i nie byl na oko
bardziej wyrazalny i zwiezly niz c a wrecz przeciwnie
z drugiej strony moga byc pewne elemanty wysokopoziomowe
ktore uczynily by kody bardziej zwiezlymi i automatycznymi
tylko ze na razie nie wiem co to takiego
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
9. Data: 2012-05-09 19:25:19
Temat: Re: 'abstrakcje' a zwartosc
Od: Piotr Chamera <p...@p...onet.pl>
W dniu 2012-05-09 19:03, f...@g...pl pisze:
>
> wydaje mi sie ze panuje pewne przekonanie (cos w rodzaju
> mitu, trudno mi okreslic na ile prawdziwego) ze programy
> jakims w jezyku wysokopoziomowym moga byc krotsze niz
> w jezyku niskopoziomowym jak c, cos w stylu wyobrazenia
> ze jak w c chcesz narysowac okrag to musisz to rysowac
> per pixel a w jezyko wysokopoziomowym wywolujesz po
> prostu costam - z tym ze mozna wlasnie zauwazyc ze to
> akurat nie jest zwiazane z wysokopoziomowoscia jezyka
> tylko z setem bibliotek,
Wydaje mi się, że wysokopoziomowość języka przejawia się
na poziomie integracji pewnych konstrukcji na poziomie składni
a nie semantyki (w większości języków - w tym C - dowolną
funkcjonalność da się zaimplementować w postaci bibliotek,
ale nie da się tego zintegrować z językiem na poziomie
składniowym).
Weźmy takie dwa proste przykłady z Common Lispu:
operacje na liczbach wymiernych
CL-USER> (/ 1/8
3/25576287618534626468265643682000000000000000000000
00000000)
3197035952316828308533205460250000000000000000000000
00000/3
i na liczbych zespolonych
CL-USER> (* 1/8 #c(-3/255 23/7))
#C(-1/680 23/56)
Jak to zaimplementować w C, żeby używało się równie wygodnie?
-
10. Data: 2012-05-09 19:47:36
Temat: Re: 'abstrakcje' a zwartosc
Od: " " <f...@g...pl>
Piotr Chamera <p...@p...onet.pl> napisał(a):
> W dniu 2012-05-09 19:03, f...@g...pl pisze:
> >
> > wydaje mi sie ze panuje pewne przekonanie (cos w rodzaju
> > mitu, trudno mi okreslic na ile prawdziwego) ze programy
> > jakims w jezyku wysokopoziomowym moga byc krotsze niz
> > w jezyku niskopoziomowym jak c, cos w stylu wyobrazenia
> > ze jak w c chcesz narysowac okrag to musisz to rysowac
> > per pixel a w jezyko wysokopoziomowym wywolujesz po
> > prostu costam - z tym ze mozna wlasnie zauwazyc ze to
> > akurat nie jest zwiazane z wysokopoziomowoscia jezyka
> > tylko z setem bibliotek,
>
> Wydaje mi siÄ, Ĺźe wysokopoziomowoĹÄ jÄzyka przejawia siÄ
> na poziomie integracji pewnych konstrukcji na poziomie skĹadni
> a nie semantyki (w wiÄkszoĹci jÄzykĂłw â w tym C â dowolnÄ
> funkcjonalnoĹÄ da siÄ zaimplementowaÄ w postaci bibliotek,
> ale nie da siÄ tego zintegrowaÄ z jÄzykiem na poziomie
> skĹadniowym).
>
> WeĹşmy takie dwa proste przykĹady z Common Lispu:
>
> operacje na liczbach wymiernych
>
> CL-USER> (/ 1/8
> 3/25576287618534626468265643682000000000000000000000
00000000)
>
> 3197035952316828308533205460250000000000000000000000
00000/3
>
> i na liczbych zespolonych
>
> CL-USER> (* 1/8 #c(-3/255 23/7))
>
> #C(-1/680 23/56)
>
> Jak to zaimplementowaÄ w C, Ĺźeby uĹźywaĹo siÄ rĂłwnie wygodnie?
z zespolonymi to nie jest dobry przyklad na to o co pytam,
bo oszczednosci sa tylko paro znakowe na liczbe (zreszta
mozna sobie wyobrazic wbudowany w c typ complex z operatorami
i nie jest to jakas specjalna abstrakcja) - mi chodzi
o jakies wieksze oszczednosi/abstrakcje ogolnie skracajace
'zwykle' kody
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/