eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › które języki 'historyczne' są ważne
Ilość wypowiedzi w tym wątku: 115

  • 101. Data: 2011-02-02 14:19:02
    Temat: Re: które języki 'historyczne' sš ważne
    Od: Jędrzej Dudkiewicz <j...@n...com>

    On 02/02/2011 02:52 PM, Andrzej Jarzabek wrote:
    > On Feb 2, 11:06 am, Jędrzej Dudkiewicz<jedrzej.dudkiew...@nospam-
    > gmail.com> wrote:
    >> On 02/02/2011 08:46 AM, Andrzej Jarzabek wrote:
    >>
    >>>> __attribute__((packed)), pola struktury nie mogą być przekładane.
    >>
    >>> To nie jest zdaje się część standardowego języka C, tylko rozszerzenie,
    >>> które twórca implementacji dodał dlatego właśnie, że C się do tego
    >>> kiepsko nadaje.
    >>
    >> Możliwe, chociaż wydaje mi się, że akurat o paddingu standard C też nic
    >> nie mówi.
    >
    > Mówi, że może być i ogólniej, że konkretny binarny layout struktury
    > jest zależny od implementacji.

    W C++ to samo.

    >> Więc tak czy inaczej jesteś w krainie konkretnego kompilatora.
    >
    > A w C++ możesz właśnie nie być.

    Jak robisz ręczny, dokładny dostęp pole po polu, to pewnie, że może być.
    W C też tak możesz napisać. Ba, w C++ możesz napisać tak, jak jest w C,
    i też będzie pięknie.

    >> Co to za argument o wołaniu funkcji? W C++ nie
    >> musisz wołać?
    >
    > Nie musisz, znaczy możesz napisać tak, żeby się sama wołała.

    Ta funkcja jest wołana w jednym miejscu. Wołanie funkcji w jednym
    miejscu uważam za non-issue. To zupełnie inna skala problemu niż ręczne
    wołanie odpowiednika destruktora.

    >>> Nieprawda. Jeśli np. czytasz wartość tego pola tylko w co 20 pakiecie,
    >>> to mniejszy narzut ma konwertowanie przy dostępie.
    >>
    >> Jeśli czytam przy co 20 pakiecie, to prawdopodobnie znaczy to, że wyszło
    >> mi z pierwszego rzutowania, że w danym pakiecie mam dodatkowe dane w
    >> innym formacie,
    >
    > Wyszło powiedzmy tyle, że w danym pakiecie masz jakieś inne pola,
    > niekoniecznie w innym formacie.

    Jak to jakieś inne pole w niekoniecznie innym formacie? Znaczy mam tę
    samą strukturę, tylko z innym polem? To znaczy mam tę samą strukturę,
    czy jednak nie?

    >> czyli robię kolejne rzutowanie i dopiero wtedy wołam
    >> funkcję.
    >
    > Jakie to proste i wygodne!

    A w C++ co zrobisz? To samo. Skoro masz nagle dane, które masz inaczej
    interpretować (bo nie wierzę, że jednak masz tę samą strukturę z innymi
    polami - w głowie mi się taka mutacja nie mieści), to musisz ustalić,
    jako co masz interpretować. Bierzesz bajt/zmienną identyfikującą dane w
    binarnym buforze, wybierasz odpowiednią klasę i karmisz ją buforem.

    >> Możemy się tak licytować do śmierci, bo nie działamy na
    >> konkretnym przykładzie.
    >
    > Przykład jest wystarczająco konkretny. W C++ w każdej takiej sytuacji
    > możesz stworzyć klase opakowującą bez żadnych narzutów, a decyzje o
    > tym, kiedy konwetować, czy za każdym dostępie, czy na miejscu, czy
    > trzymać wynik zcache'owany osobno zostawić implementacji.

    No i to jest dokładnie to, co napisałem wcześniej. W C++ masz wszystko
    ładnie zapakowane, ale zwykle w opakowaniu siedzi jakiś syf.

    Może tak: ja uważam, że grzebanie się w bajtach i w bitach to jest
    grzebanie w gnoju i niezależnie od tego, czy robisz to w kombinezonie
    czy w kąpielówkach, pozostanie to grzebaniem w gnoju. Sprawę należy
    załatwić szybko, powstały kod hermetycznie zamknąć w jakiejś klasie i o
    całości zapomnieć. Dlatego uważam, że rzutowanie wskaźnika na bufor na
    wskaźnik na strukturę jest równie dobrym rozwiązaniem jak każde inne. O
    ile nie jest to powszechna technika.

    JD


  • 102. Data: 2011-02-02 14:36:50
    Temat: Re: które języki 'historyczne' sš ważne
    Od: Jędrzej Dudkiewicz <j...@n...com>

    On 02/02/2011 02:45 PM, Maciej Sobczak wrote:
    > On Feb 2, 1:00 pm, Jędrzej Dudkiewicz<jedrzej.dudkiew...@nospam-
    > gmail.com> wrote:
    >
    >>>> Robi c rzut wska nika albo overlay - to drugie jest ciekawsze, bo w
    >>>> og le nie potrzeba adnego wska nika.
    >>
    >>> Brzmi dobrze. Jaki przyk ad?
    >>
    >> Patrzy em tutaj:
    >>
    >> http://en.wikibooks.org/wiki/Ada_Programming/Types#O
    verlays
    >>
    >> Wygl da na to, e to taka unia unii i struktury i rzutowania wska nika,
    >> tylko ma fajniejsz nazw .
    >
    > Nie chodzi tylko o nazwę. Chodzi o to, że w ten sposób bardziej
    > bezpośrednio wyraża się intencje programisty - chcę mieć inny widok na
    > ten sam obiekt. Po cholerę mi tu jakieś unie albo wskaźniki? Unie to
    > struktury danych
    ... zapewniające inny widok na ten sam obiekt. Przy
    opisie overlay nie ma nic o obiekcie, z tego co rozumiem. W
    szczególności możesz ten sam obiekt "przykryć większym widokiem", i nikt
    Ci tego nie zabroni. Unia jak w pysk strzelił, nawet nie unia, tylko
    rzutowanie adresu na wskaźnik na unię. Ale zgadzam się, że jako
    narzędzie wyróżnione znacznie bezpieczniejsze i eleganckie.

    > W C++ jest lepiej, bo można zadeklarować referencję i zainicjalizować
    > ją przez reinterpret_cast - w sumie o to samo chodzi, ale nadal ciężko
    > uznać, że coś jest trywialne. Trywialne jest w Adzie - chcę
    > zadeklarować obiekt w miejscu innego obiektu. Proste.
    >
    > A teraz coś lepszego:
    >
    > type My_Int is new Integer;
    > for My_Int'Alignment use 16;

    Ładne.

    > Mam nadzieję, że nie trzeba tłumaczyć co to robi. Poproszę o wersję w
    > *standardowym* C, który ponoć jest najlepiej predysponowany do
    > "programowania systemowego" (cokolwiek to znaczy).

    Może ktoś inny, bo ja tej tezy nie broniłem.

    JD


  • 103. Data: 2011-02-02 14:41:26
    Temat: Re: które języki 'historyczne' s? ważne
    Od: "b...@n...pl" <b...@n...pl>

    On 01.02.2011 17:03, Grzegorz Krukowski wrote:
    >
    >>
    >> W kernelu ciągle znajodwane są jakieś dziury. We wszystkich popularnych
    >> systemach. To jest niezaprzeczalny fakt. Nie bronię C. Pisałem tylko, ze
    >> jest ważnym punktem w historii, bo stał się jezykiem niesamowicie
    >> popularnym i napisano w nim zdecydowanie najwięcej linii kodu...
    >
    > Oczywiście, tylko dlaczego? Bo ówczesne zasobyk komputerów były
    > malutkie i liczył się każdy bajt. Tyle że obecnie już nie musimy być
    > tak oszczędni i wychwalanie C/C++ jako leku na całe zło jest już nieco
    > bez sensu.

    Z tego powodu nowoczesny program o takiej samej funkcjonalności jak ten
    sprzed wielu lat zajmuje teraz 20 razy więcej pamięci.

    Był sobie taki program, nazywał się Calamus SL, z dodatkowymi modułami,
    załadowanymi fontami dało się od biedy na nim pracować na 4MB RAM. A był
    to program rozbudowany, do składu tekstu. Z własnym renderowaniem
    wszystkiego, obsługa fontów wektorowych i to takiej jakości, że wiele
    współczesnych systemów się chowa. Moduł obróbki grafiki, moduł
    sprawdzania pisowni, tezaurus, dynamiczny kerning. Po prostu wszystko co
    było potrzebne do składu tekstu. I mieścił się w 4MB pamięci, co prawda
    na dokument zostawało jakieś 800KB, ale dało się. Obecnie 4MB to ma
    prosty edytorek tekstu. Narzuty programistyczne typu: to użytkownik da
    szybszy procesor, da więcej pamięci są zbyt duże.

    --
    wer <",,)~~
    http://szumofob.eu


  • 104. Data: 2011-02-02 15:02:33
    Temat: Re: które języki 'historyczne' sš ważne
    Od: Jędrzej Dudkiewicz <j...@n...com>

    On 02/02/2011 02:45 PM, Maciej Sobczak wrote:

    > A teraz coś lepszego:
    >
    > type My_Int is new Integer;
    > for My_Int'Alignment use 16;

    Swoją drogą ciekawe jakie są argumenty przemawiające za takim
    traktowaniem, a nie za tworzeniem nowego typu. W zasadzie to
    zastanawiające jest, jakie byłyby zalety i wady dodawania tego do typu.
    Oprócz mnożenia bytów. Chociaż jak znam Adę (prawie nie znam), to pewnie
    da się wyrównać również cały typ.

    JD


  • 105. Data: 2011-02-02 16:26:21
    Temat: Re: które języki 'historyczne' sš ważne
    Od: Maciej Sobczak <s...@g...com>

    On Feb 2, 4:02 pm, Jędrzej Dudkiewicz <jedrzej.dudkiew...@nospam-
    gmail.com> wrote:

    > > A teraz coś lepszego:
    >
    > > type My_Int is new Integer;
    > > for My_Int'Alignment use 16;
    >
    > Swoją drogą ciekawe jakie są argumenty przemawiające za takim
    > traktowaniem, a nie za tworzeniem nowego typu.

    To jest nowy typ.

    > W zasadzie to
    > zastanawiające jest, jakie byłyby zalety i wady dodawania tego do typu.
    > Oprócz mnożenia bytów. Chociaż jak znam Adę (prawie nie znam), to pewnie
    > da się wyrównać również cały typ.

    To właśnie dotyczy całego typu. My_Int jest zupełnie nowym typem,
    którego zbiór wartości i operacje są takie jak dla typu Integer, ale
    jest to osobny typ.
    Zmienne tego typu dopiero trzeba zadeklarować:

    I : Integer := 7;
    J : My_Int := 8; -- zmienna J jest wyrównana do 16 bajtów

    Oczywiście, typu My_Int można też sobie użyć w strukturze, w tablicy,
    na stercie, jako parametr szablonu, itd. - wszędzie będzie wlókł ze
    sobą swoje własne parametry, jak wyrównanie czy rozmiar.

    --
    Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com


  • 106. Data: 2011-02-02 16:31:43
    Temat: Re: które języki 'historyczne' sš ważne
    Od: Jędrzej Dudkiewicz <j...@n...com>

    On 02/02/2011 05:26 PM, Maciej Sobczak wrote:
    > On Feb 2, 4:02 pm, Jędrzej Dudkiewicz<jedrzej.dudkiew...@nospam-
    > gmail.com> wrote:
    >
    >>> A teraz coś lepszego:
    >>
    >>> type My_Int is new Integer;
    >>> for My_Int'Alignment use 16;
    >>
    >> Swoją drogą ciekawe jakie są argumenty przemawiające za takim
    >> traktowaniem, a nie za tworzeniem nowego typu.
    >
    > To jest nowy typ.

    No przecież!

    >> W zasadzie to
    >> zastanawiające jest, jakie byłyby zalety i wady dodawania tego do typu.
    >> Oprócz mnożenia bytów. Chociaż jak znam Adę (prawie nie znam), to pewnie
    >> da się wyrównać również cały typ.
    >
    > To właśnie dotyczy całego typu. My_Int jest zupełnie nowym typem,
    > którego zbiór wartości i operacje są takie jak dla typu Integer, ale
    > jest to osobny typ.
    > Zmienne tego typu dopiero trzeba zadeklarować:
    >
    > I : Integer := 7;
    > J : My_Int := 8; -- zmienna J jest wyrównana do 16 bajtów
    >
    > Oczywiście, typu My_Int można też sobie użyć w strukturze, w tablicy,
    > na stercie, jako parametr szablonu, itd. - wszędzie będzie wlókł ze
    > sobą swoje własne parametry, jak wyrównanie czy rozmiar.

    Czyli tak jak bym się spodziewał. Bardzo śliczne. Co prawda wyklucza to,
    możliwe w C++, indeksowanie pamięci stringami... czyż nie? :)

    JD


  • 107. Data: 2011-02-02 17:22:33
    Temat: Re: które języki 'historyczne' sš ważne
    Od: Andrzej Jarzabek <a...@g...com>

    On Feb 2, 11:06 am, Jędrzej Dudkiewicz <jedrzej.dudkiew...@nospam-
    gmail.com> wrote:
    > On 02/02/2011 08:46 AM, Andrzej Jarzabek wrote:
    >
    > > Modyfikowanie bufora ma z kolei taki problem, że łatwo wprowadzić buga:
    > > wyskakuje w testowaniu błąd, dopisujesz funkcję preprocess_packet, a
    > > tymczasem inny programista napisał jakiś kawałek kodu,, który gdzieś
    > > dalej korzysta z założenia, że pod tym wskaźnikiem znajduje się
    > > poprawnie sformatowany pakiet.
    >
    > Prawdopodobny scenariusz, ale tak samo masz w C++ - jeżeli nagle masz
    > buga, którego "poprawiasz" w ten sposób, że zmieniasz interface klasy
    > (bo przecież kontrakt przed bugiem był taki, że wartość była zwracana
    > "as is", czyli jako big endian), to co za różnica?

    Brawo, proponuję jeszcze udowodnić, że w ogóle nie ma żadnych
    istotnych różnic między językami, bo jak posadzisz małpę przed
    komputerem i nauczysz ją walić w klawisze, to w dowolnym języku
    doprowadzi program do postaci, w której się nie kompiluje lub nie
    uruchamia.

    A różnica jest choćby taka, że jak masz wyspecyfikowany kontrakt,
    mówie zwraca w formacie natywnym. Czy może nawet inaczej: różnica
    polega na tym, że w ogóle można mówić o jakimś kontrakcie.

    > Dalej i tak ktoś
    > robił sobie ntohla na własną rękę, bo przecież wcześniej dostawał
    > network order a potrzebował "native order".

    Oprócz działania bez sensu, masz jednak kilka sensownych alternatyw,
    których nie masz w C.

    > >> Tak czy owak, zaletą C++ jest to, że jakby co, to można tego rozwiązania
    > >> użyć, ale znacznie ładniej zapakowanego.
    >
    > > Ale "ładinej zapakowane" w tym momencie przekłada się właśnie na "nadaje
    > > się do".
    >
    > W tym momencie nie przekłada się. Przekłada się na poziomie całego
    > projektu. W TYM MOMENCIE, czyli dokładnie w tym, o którym mówimy,
    > grzebiesz po bajtach i musisz uważać w każdym języku.

    W tym momencie się właśnie przekłada. Bo "nadaje się do" nie sprowadza
    się tylko do tego, że można napisać kawałek kodu, który zrobi to czy
    owo, bo to niewątpliwie można w C zrobić, tylko jak potem ten kawałek
    kodu funkcjonuje w kontekście całego projektu. To, jak to zrobisz ma
    znaczenie dla tego, jak prawdopodobne jest to, że ktoś piszący kod
    kliencki użyje tego, co zrobiłeś, nieprawidłowo, teraz lub kiedyś w
    przyszłości - i tym kimś równie dobrze możesz być ty sam.

    > Nawet jak masz
    > język, w którym opisujesz pakiet w XMLu, możesz zapomnieć o tym, o czym
    > pisałeś wyżej, to znaczy nie uwzględnić, że dana jest w big endian.

    Oczywiście. Ale, dla przykładu, projektując taki XML możesz (w
    zależności od tego, do czego będzie stosowany) założyć, że typ 'int32'
    jest defaultowo big endian, niezależnie od architektury procesora,
    albo że musisz endianness podać jawnie. W takiej sytuacji trudniej o
    pomyłkę, w szczególności popełnioną przez programistę, który przez n
    lat pisał systemy na architekturach big endian i przyzwyczaił się, że
    można sobie po prostu rzutnąć inta 'bo działa'.

    > > Na przykład - bez żadnej straty wydajności - powoduje, że
    > > trudniej wprowadzić błędy, w szczególności w zmianach dokonywanych wiele
    > > miesięcy po napisaniu pierwotnego kodu.
    >
    > Ogólnie się zgadzam, ale zwróć uwagę, że podany wyżej przykład jest
    > bardzo konkretny i bardzo statyczny - dotyczy TYLKO odczytania jakiegoś
    > bufora, a nie operacji na nim, w dodatku w przypadku, kiedy dane mają
    > bardzo dobrze określony format - dane wysyłane przez sprzęt zwykle nie
    > zmieniają się razem z widzimisię klienta. Zwykle.

    wiesz, nie ja ten przykłd wymyśliłem. Ale tutaj też masz zaletę C++:
    jak programista dostanie strukturę, to może np. założyć, że
    modyfikować bufor może przypisując wartości do pól struktury. Jak
    dostanie obiekt z getterami ale bez setterów, to będzie musiał już się
    trochę zastanowić.

    > > przenośnie - co z kolei oznacza, że zamiast pisać kod do
    > > obsługi/parsowania pakietów na swoją implementację, można skorzystać z
    > > dobrze przetestowanej biblioteki third-party.
    >
    > Kompletnie nie rozumiem, co to ma wspólnego z tematem.

    Język, w którym można pisać re-usable i przenośne biblioteki przydatne
    w jakichś zastosowaniach, lepiej się nadaje do tych zastosowań od
    języka, w którym nie można.


  • 108. Data: 2011-02-02 22:07:46
    Temat: Re: które języki 'historyczne' sš ważne
    Od: Maciej Sobczak <s...@g...com>

    On Feb 2, 5:31 pm, Jędrzej Dudkiewicz <jedrzej.dudkiew...@nospam-
    gmail.com> wrote:

    > Czyli tak jak bym się spodziewał. Bardzo śliczne. Co prawda wyklucza to,
    > możliwe w C++, indeksowanie pamięci stringami... czyż nie? :)

    Nie. :-)

    Pamiętaj, że nawet przy adresowaniu pamięci stringami musi istnieć
    jakieś mapowanie tych adresów na liczby - chociażby po to, żeby można
    było mieć ptrdiff_t, arytmetykę wskaźników, sizeof, itd. To wszystko
    jest ze sobą powiązane.
    W C++ istnieje też mniej lub bardziej zdefiniowany rzut wskaźnika na
    int i z powrotem, więc związek wskaźników z liczbami jakiś jest.
    Podobnie jest w Adzie, chociaż nie ma arytmetyki wskaźników.

    W każdym razie zarówno C++ jak i Ada starają się tak rozmyć pojęcie
    adresu, żeby niczego konkretnego nie sugerować. W praktyce i tak
    wiadomo, co to oznacza na normalnym sprzęcie, ale nie zamyka się drzwi
    dla różnych emulatorów czy innych maszyn wirtualnych, gdzie adres może
    oznaczać coś innego.
    Czyli w obu językach siła wyrazu jest podobna. Można swobodnie pisać w
    nich systemy operacyjne, można też wyobrazić sobie adresowanie
    stringami w emulatorze.

    Jest jednak pewna ciekawa różnica - w C++ nie ma osobnego pojęcia
    adresu, to jest wplecione w pojęcie wskaźnika void* i istnieje
    zastrzeżenie, że void* ma mieć taką samą reprezentację jak char*.
    Czyli adresy i wskaźniki to w zasadzie to samo, nie rozdziela się tych
    rzeczy.
    Natomiast w Adzie czegoś takiego nie ma - adres to wartośc typu
    System.Address, natomiast wskaźnik to tzw. "access value" i z adresem
    nie ma żadnego związku poza tym, że istnieją osobne operacje do ich
    wzajemnej konwersji. Nie ma wymagania na reprezentację, więc wskaźniki
    mogą być tłuste, albo np. wskaźniki na stos mogą mieć zupełnie inny
    format, niż wskaźniki na stertę (nawet na ten sam typ), itd. Czyli Ada
    ma tu nawet większą swobodę implementacyjną, bez poświęcania
    funkcjonalności.

    --
    Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com


  • 109. Data: 2011-02-02 22:07:55
    Temat: Re: które języki 'historyczne' sš ważne
    Od: Wojciech Jaczewski <w...@o...pl>

    Grzegorz Krukowski wrote:

    > To co zarzuca C A.L. to, moim zdaniem, domyślne pozwolenie na
    > niskopoziomowe manewry i/lub upowszechnienie się takiego języka jako
    > języka ogólnego zastosowania. Zachęca to do zajmowania się
    > niskopoziomowymi szczegółami już na początku, zamiast na końcu, kiedy
    > to jest potrzebne. W efekcie istnieje presja na powszechne stosowanie
    > średnio bezpiecznych sztuczek, zamiast promowania, nazwijmy to,
    > ładnego kodu. Pod tym względem C jest regresem, gdyż dotychczas
    > większość języków wraz z czasem przechodzi do coraz bardziej
    > wysokopoziomowych/abstrakcyjnych konceptów, tylko języki rodziny C i
    > pochodnej idą trochę wbrew tym trendom.

    Tak na prawdę, planując koncept na prawdę wysokopoziomowy, nie trzeba się
    interesować językiem ani odrobinę. Często będąc zauroczonym programowaniem
    obiektowym (przechodziłem ten etap - na szczęście szybko mi minął - w ciągu
    jakichś 2-3 lat) pod pozorem projektowania wysokopoziomowego, projektowałem
    tak na prawdę niskopoziomowo, bo zamiast zajmować się działaniem
    programu/systemu jako całości (i tym, jak będzie on używany przez klientów),
    zajmowałem się hierarchią obiektów, czyli szczegółem implementacyjnym, jakim
    jest niewidoczna dla użytkownika struktura kodu źródłowego.

    Nie ma nic złego w korzystaniu z abstrakcji, jakie dają języki wyższego niż
    C poziomu. Ale zastanowienie się przez jakiś czas, jak mogłaby dana
    funkcjonalność zostać zrealizowana w czystym C, albo nawet - w C na
    mikrokontrolerze, powoduje że nieraz dochodzi się do rozwiązania nie tylko
    znacząco wydajniejszego, ale też prostszego. Okazuje się, że ileś tam
    przejściowych buforów, które tworzyło się w wysokopoziomowym projekcie, jest
    całkowicie zbędnych. A program, który wykonuje rzeczy zbędne, zwykle nie
    jest łatwy do zrozumienia dla programisty nie-autora, oglądającego ten kod.


  • 110. Data: 2011-02-02 23:10:09
    Temat: Re: które języki 'historyczne' sš ważne
    Od: A.L. <l...@a...com>

    On Wed, 02 Feb 2011 23:07:55 +0100, Wojciech Jaczewski
    <w...@o...pl> wrote:

    >Grzegorz Krukowski wrote:
    >
    >> To co zarzuca C A.L. to, moim zdaniem, domyślne pozwolenie na
    >> niskopoziomowe manewry i/lub upowszechnienie się takiego języka jako
    >> języka ogólnego zastosowania. Zachęca to do zajmowania się
    >> niskopoziomowymi szczegółami już na początku, zamiast na końcu, kiedy
    >> to jest potrzebne. W efekcie istnieje presja na powszechne stosowanie
    >> średnio bezpiecznych sztuczek, zamiast promowania, nazwijmy to,
    >> ładnego kodu. Pod tym względem C jest regresem, gdyż dotychczas
    >> większość języków wraz z czasem przechodzi do coraz bardziej
    >> wysokopoziomowych/abstrakcyjnych konceptów, tylko języki rodziny C i
    >> pochodnej idą trochę wbrew tym trendom.
    >
    >Tak na prawdę, planując koncept na prawdę wysokopoziomowy, nie trzeba się
    >interesować językiem ani odrobinę. Często będąc zauroczonym programowaniem
    >obiektowym (przechodziłem ten etap - na szczęście szybko mi minął - w ciągu
    >jakichś 2-3 lat) pod pozorem projektowania wysokopoziomowego, projektowałem
    >tak na prawdę niskopoziomowo, bo zamiast zajmować się działaniem
    >programu/systemu jako całości (i tym, jak będzie on używany przez klientów),
    >zajmowałem się hierarchią obiektów, czyli szczegółem implementacyjnym, jakim
    >jest niewidoczna dla użytkownika struktura kodu źródłowego.
    >

    H,m... Hierarchia obiektow to sczegol implementacyjny? Moze tak by
    bylo warto pzrestudiowac sparwy obiektowe jeszcze raz i przemyslec
    jaka jezt rola obiektowosci w modelowaniu?... I przemyslec "co ma
    obiektowosc do ejzyka programwoania"?...

    >Nie ma nic złego w korzystaniu z abstrakcji, jakie dają języki wyższego niż
    >C poziomu. Ale zastanowienie się przez jakiś czas, jak mogłaby dana
    >funkcjonalność zostać zrealizowana w czystym C, albo nawet - w C na
    >mikrokontrolerze, powoduje że nieraz dochodzi się do rozwiązania nie tylko
    >znacząco wydajniejszego, ale też prostszego. Okazuje się, że ileś tam
    >przejściowych buforów, które tworzyło się w wysokopoziomowym projekcie, jest
    >całkowicie zbędnych. A program, który wykonuje rzeczy zbędne, zwykle nie
    >jest łatwy do zrozumienia dla programisty nie-autora, oglądającego ten kod.

    Calkiem neidawno w Communications of the ACM byl artykul na temat
    "szkodlowosci obiektowosci" - tak z grubsza. Zobacze czy jest
    publiczna wersja...

    A.L.

strony : 1 ... 10 . [ 11 ] . 12


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: