eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Carnegie-Mellon przestaje uczyc programowania obiektowego
Ilość wypowiedzi w tym wątku: 255

  • 51. Data: 2011-04-04 11:05:41
    Temat: Re: Carnegie-Mellon przestaje uczyc programowania obiektowego
    Od: Sebastian Kaliszewski <s...@r...this.informa.and.that.pl>

    Michal wrote:
    > On Fri, 01 Apr 2011 10:18:25 -0500
    > A.L. <l...@a...com> wrote:
    >
    >> Byla mowa nie o nauczaniu w zawodowej szkole programistow, a na
    >> uczelni wyzeszej. To dwie zupelnie rozne rzeczy. Na uniwersytetach nie
    >> ksztalci sie programistow.
    >
    > Not tak na uniwersytetach uczy sie jezykow programowania nie po to aby programowac.
    > Pozniej tacy nie programojacy najlepsi-na-swiecie-absolwenci-albo-i-doktury-jezyko
    w-programowania
    > mowia innym na grupach dyskusyjnych jak maja programowac.

    Nie rozumiesz. Uniwersytet nie jest szkołą zawodową. Uniwersytet *nie daje
    zawodu*!

    Uniwersytet ma dać wiedzę i nauczyć sposóbów jej efektywnego pozyskiwania.
    Uniwerystet ma zadanie dostarczyć wykształconych ludzi którzy opierając
    się bardziej lub mniej na otrzymanej wiedzy wybiorą sobie zawód.

    Jak ktoś idzie na uniwerek po to, żeby go nauczyli fachu to się fatalnie
    pomylił.

    pzdr
    \SK
    --
    "Never underestimate the power of human stupidity" -- L. Lang
    --
    http://www.tajga.org -- (some photos from my travels)


  • 52. Data: 2011-04-04 11:15:57
    Temat: Re: Carnegie-Mellon przestaje uczyc programowania obiektowego
    Od: Paweł Kierski <n...@p...net>

    W dniu 2011-04-04 12:38, Sebastian Kaliszewski pisze:
    [...]
    > unit cośtam;
    >
    > interface ....
    > implementation ....
    >
    >
    > Na poziomie języka przyzwoity moduł ma dobrze określany interfejs i jest
    > dobrze oddzielony od reszty kodu, tzn. z reszty kodu może sam z z
    > siebie[**] korzystać tylko poprzez interfejsy innych modułów.
    >
    > To co nie jest udostępnione w interfejsie nie jest dostępne dla kodu
    > spoza modułu (za wyjątkiem jakiś spyficznych tricków, ale nie zajmujemy
    > ani nie interesujemy się tu rzeźbiarstwem). To jest podobne do tego, co
    > znamy z OO z klasami (jest OO bez klas, gdzie jest już mniej podobne)
    > ale do "nieco" czego innego służy i generalnie na innym poziomie
    > struktury kodu działa.
    >
    > Stąd zarówno rozwiązania z C++ z jednej strony (przestrzenie nazw i
    > jednostki kompilacji) jak i z Javy z drugiej (pakiety i jednostki
    > kompilacji ograniczone do jednej publicznej klasy) to tylko
    > fragmentaryczne, niekompletne kawałki.
    >
    > Mam nadzieję, że nieco wyjaśniłem

    Pomijając na razie kwestie łatwości zapisu i czytelności - nie widzę tu
    niczego, czego nie dałoby się wyrazić w C++ za pomocą przestrzeni nazw
    i jednostek kompilacji. Na tej samej zasadzie w C++ nie ma słowa
    interface, ale daje się go dobrze wyrazić za pomocą klasy wyłącznie
    z metodami tylko abstrakcyjnymi.

    Innymi słowy - da się pisać modułowo w C++, kwestia zachowania
    konwencji. Oczywiście - każdy będzie miał inną 8-)

    --
    Paweł Kierski
    n...@p...net


  • 53. Data: 2011-04-04 11:28:02
    Temat: Re: Carnegie-Mellon przestaje uczyc programowania obiektowego
    Od: Grzegorz Krukowski <r...@o...pl>

    On Mon, 04 Apr 2011 13:15:57 +0200, Paweł Kierski <n...@p...net>
    wrote:

    >W dniu 2011-04-04 12:38, Sebastian Kaliszewski pisze:
    >[...]
    >> unit cośtam;
    >>
    >> interface ....
    >> implementation ....
    >>
    >>
    >> Na poziomie języka przyzwoity moduł ma dobrze określany interfejs i jest
    >> dobrze oddzielony od reszty kodu, tzn. z reszty kodu może sam z z
    >> siebie[**] korzystać tylko poprzez interfejsy innych modułów.
    >>
    >> To co nie jest udostępnione w interfejsie nie jest dostępne dla kodu
    >> spoza modułu (za wyjątkiem jakiś spyficznych tricków, ale nie zajmujemy
    >> ani nie interesujemy się tu rzeźbiarstwem). To jest podobne do tego, co
    >> znamy z OO z klasami (jest OO bez klas, gdzie jest już mniej podobne)
    >> ale do "nieco" czego innego służy i generalnie na innym poziomie
    >> struktury kodu działa.
    >>
    >> Stąd zarówno rozwiązania z C++ z jednej strony (przestrzenie nazw i
    >> jednostki kompilacji) jak i z Javy z drugiej (pakiety i jednostki
    >> kompilacji ograniczone do jednej publicznej klasy) to tylko
    >> fragmentaryczne, niekompletne kawałki.
    >>
    >> Mam nadzieję, że nieco wyjaśniłem
    >
    >Pomijając na razie kwestie łatwości zapisu i czytelności - nie widzę tu
    >niczego, czego nie dałoby się wyrazić w C++ za pomocą przestrzeni nazw
    >i jednostek kompilacji. Na tej samej zasadzie w C++ nie ma słowa
    >interface, ale daje się go dobrze wyrazić za pomocą klasy wyłącznie
    >z metodami tylko abstrakcyjnymi.

    Tak, ale twoja modularyzacja opiera się na systemie typów: z jednej
    strony musisz w nim zawrzeć taką strukturę która odzwierciedla logikę
    modelowanego bytu, z drugiej strony logikę modułów. Obydwie te logiki
    mogą nie mieć ze sobą nic wspólnego, to raz, dwa że struktura
    dziedziczenia robi się zbyt skomplikowana.
    Jeżeli używasz modułów to obie te części są całkowicie niezależne, nie
    mieszasz ze sobą logiki modelu z logiką konstrukcji programu co jest
    niebagatelną zaletą.
    --
    Grzegorz Krukowski


  • 54. Data: 2011-04-04 12:37:34
    Temat: Re: Carnegie-Mellon przestaje uczyc programowania obiektowego
    Od: Maciej Sobczak <s...@g...com>

    On 4 Kwi, 13:15, Paweł Kierski <n...@p...net> wrote:

    > Pomijając na razie kwestie łatwości zapisu i czytelności - nie widzę tu
    > niczego, czego nie dałoby się wyrazić w C++ za pomocą przestrzeni nazw
    > i jednostek kompilacji.

    Ja też nie, ale tylko dlatego, że Sebastian niewiele napisał :-) -
    chociaż można się przyczepić, że w C++ trzeba posługiwać się fizcznymi
    aspektami kodu (podział na pliki), żeby osiągnąć jakiś cel logiczny,
    np. ukrycie części prywatnej. To powinno być dostępne nawet w obrębie
    jednego pliku.

    Ale dodaj do tego jeszcze jakąś semantykę hierarchii i przestrzenie
    nazw okazują się być zbyt ubogie. Np. relację rodzic-dziecko między
    pakietami, która ma konsekwencje w widoczności nazw w jednym kierunku
    (np. tylko dziecko widzi część prywatną rodzica). Albo podział na
    pakiety publiczne i niepubliczne, również z konsekwencjami w
    hierarchii (np. tylko rodzic może wciągać swoje niepubliczne dzieci).
    Można sobie jeszcze wyobrazić różne rodzaje hierarchii - np.
    zagnieżdżenie vs. rodzic-dziecko. To są dwie różne relacje i mogą być
    użyte w różnych celach.

    Do tego można sobie jeszcze wyobrazić, że pakiety czy moduły wcale nie
    muszą być konstrukcjami top-level. Np. czemu nie mieć lokalnych
    pakietów/modułów tak jak mogą być lokalne klasy czy lokalne
    podprogramy? Albo czemu by pakiet/moduł nie miał być parametrem
    szablonu? To by było dobre zwłaszcza przy szablonach typu traits -
    teraz w C++ robi się sztuczne struktury ze statycznymi deklaracjami w
    środku, żeby zebrać do kupy parę rzeczy i podać razem jako parametr;
    przecież to nie powinna być struktura, to powinien być właśnie pakiet/
    moduł.

    Biorąc to wszystko do kupy przestrzenie nazw w C++ właściwie niczego
    nie oferują, a pakiety w Javie to (jak zwykle) tzw. "half-ass
    solution".

    > Innymi słowy - da się pisać modułowo w C++

    Da się organizować deklaracje w grupy. Np. std:: to grupa nazw z
    biblioteki standardowej a yami:: to grupa nazw z YAMI4. W C do tego
    samego celu stosuje się przedrostki i niestety ale to jest cała
    funkcjonalność tego elementu języka. Faktem jest, że w 98% przypadków
    tylko o to chodzi, ale pozostaje jeszcze te ciekawe 2%.

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


  • 55. Data: 2011-04-04 12:45:10
    Temat: Re: Carnegie-Mellon przestaje uczyc programowania obiektowego
    Od: Paweł Kierski <n...@p...net>

    W dniu 2011-04-04 13:28, Grzegorz Krukowski pisze:
    [...]
    >>> Stąd zarówno rozwiązania z C++ z jednej strony (przestrzenie nazw i
    >>> jednostki kompilacji) jak i z Javy z drugiej (pakiety i jednostki
    >>> kompilacji ograniczone do jednej publicznej klasy) to tylko
    >>> fragmentaryczne, niekompletne kawałki.
    >>>
    >>> Mam nadzieję, że nieco wyjaśniłem
    >>
    >> Pomijając na razie kwestie łatwości zapisu i czytelności - nie widzę tu
    >> niczego, czego nie dałoby się wyrazić w C++ za pomocą przestrzeni nazw
    >> i jednostek kompilacji. Na tej samej zasadzie w C++ nie ma słowa
    >> interface, ale daje się go dobrze wyrazić za pomocą klasy wyłącznie
    >> z metodami tylko abstrakcyjnymi.
    >
    > Tak, ale twoja modularyzacja opiera się na systemie typów: z jednej
    > strony musisz w nim zawrzeć taką strukturę która odzwierciedla logikę
    > modelowanego bytu, z drugiej strony logikę modułów. Obydwie te logiki
    > mogą nie mieć ze sobą nic wspólnego, to raz, dwa że struktura
    > dziedziczenia robi się zbyt skomplikowana.
    > Jeżeli używasz modułów to obie te części są całkowicie niezależne, nie
    > mieszasz ze sobą logiki modelu z logiką konstrukcji programu co jest
    > niebagatelną zaletą.

    Modułem mogę uczynić wiele klas zamykając je w przestrzeń nazw
    i oddzielną bibliotekę. Tak - tu wychodzą "szwy": nie da się zupełnie
    ukryć interfejsów "wewnętrznych" klas modułu, czyli mamy trochę
    obiektowość w C.

    Chyba, że sensowne w ramach modułu jest cięcie "w poprzek" klasy. Wtedy
    istotnie się nie da. Cięcie przez hierarchie dziedziczenia też są
    niezbyt miłe (co przy okazji pokazuje gdzie powinna być agregacja,
    a nie dziedziczenie).

    --
    Paweł Kierski
    n...@p...net


  • 56. Data: 2011-04-04 12:56:15
    Temat: Re: Carnegie-Mellon przestaje uczyc programowania obiektowego
    Od: Maciej Sobczak <s...@g...com>

    On 4 Kwi, 12:57, Sebastian Kaliszewski
    <s...@r...this.informa.and.that.pl> wrote:

    > > Czyli chaos. Nie przejmowałbym się tym i pewnie to chwilowa anomalia.
    >
    > Taka "chwilowa anomalia" obowiązuje np. na UW od n lat

    Przecież napisałem w innym poście, że na PW też tak było, przynajmniej
    12 lat temu. Mam nadzieję, że tego nie zepsuli, chociaż pewności brak.

    > > Czyli proszę się rozejść, nie ma na co patrzeć.
    >
    > Udajesz że, czy nie rozumiesz? :)

    Temat był na Slashdocie wałkowany jakiś tydzień wcześniej, niż A.L.
    zrobił tu z niego sensację. Akurat dla A.L. możliwość pokazania
    jakiegokolwiek newsa z jakiegokolwiek znanego uniwerku w USA to wiatr
    w żagle, ale naprawdę uważam, że w tym wypadku nie ma na co patrzeć.
    Ot, jakiś univ przesunął OO na późniejszy semestr w programie. No i?

    Zwłaszcza, że 100% ludzi, którzy idą akurat na CMU i tak już zna Javę
    albo innego Pythona (nie wierzę, że jest inaczej), więc mają też
    "robocze" wyobrażenie o podstawowych pojęciach związanych z OO. Dla
    takich ludzi przedmiot "Programowanie obiektowe w Javie" na początku
    studiów jest zbędny, natomiast może być ciekawiej poprowadzony
    później, korzystając z tego wszystkiego, co się studenci dowiedzieli
    na pierwszych semestrach. Ale co to za sensacja? Wydawało mi się, że
    na dobrych uniwerkach to jest oczywista oczywistość.
    Nie ma na co patrzeć.

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


  • 57. Data: 2011-04-04 13:01:04
    Temat: Re: Carnegie-Mellon przestaje uczyc programowania obiektowego
    Od: Paweł Kierski <n...@p...net>

    W dniu 2011-04-04 14:37, Maciej Sobczak pisze:
    [...]
    >> Innymi słowy - da się pisać modułowo w C++
    >
    > Da się organizować deklaracje w grupy. Np. std:: to grupa nazw z
    > biblioteki standardowej a yami:: to grupa nazw z YAMI4. W C do tego
    > samego celu stosuje się przedrostki i niestety ale to jest cała
    > funkcjonalność tego elementu języka. Faktem jest, że w 98% przypadków
    > tylko o to chodzi, ale pozostaje jeszcze te ciekawe 2%.

    Stąd - może niewyraźnie sformułowane - pytanie, czego w związku
    z modułami nie da się wyrazić w C++. Teraz trochę lepiej to widzę.

    --
    Paweł Kierski
    n...@p...net


  • 58. Data: 2011-04-04 14:53:17
    Temat: Re: Carnegie-Mellon przestaje uczyc programowania obiektowego
    Od: A.L. <l...@a...com>

    On Mon, 4 Apr 2011 05:56:15 -0700 (PDT), Maciej Sobczak
    <s...@g...com> wrote:

    >Temat był na Slashdocie wałkowany jakiś tydzień wcześniej, niż A.L.
    >zrobił tu z niego sensację. Akurat dla A.L. możliwość pokazania
    >jakiegokolwiek newsa z jakiegokolwiek znanego uniwerku w USA to wiatr
    >w żagle, ale naprawdę uważam, że w tym wypadku nie ma na co patrzeć.
    >Ot, jakiś univ przesunął OO na późniejszy semestr w programie. No i?
    >

    Przeprazam Kolego, ale jakos tak zywie dla Kolegi wiekszy szacunek niz
    dla "sredniej".. Tym bardziej zadziwily mnie (i zasmucily)
    niemerytoryczne przytyki personalne tego rodzaju jak powyzej.

    JA z niczego nei robie sensacji, po prostu wiadomosc wydawala mi sie
    ciekawa, i w tak zwanym "srodowisku" (przynajmniej tu gdzie jestem)
    wzbudzila dyskusje. Jezeli zas idzie o "uniwersytety amerykanskie" to
    gwarantuje ze jezeli dowiem sie czegos ciekawago o University of
    Zielona Gora, nie omieszkam napisac o tym na grupie.

    >Zwłaszcza, że 100% ludzi, którzy idą akurat na CMU i tak już zna Javę
    >albo innego Pythona (nie wierzę, że jest inaczej),

    Programy uklada sie przy zalozeniu ze na wstepnym kursie nikt nei wie
    niczego. Albowiem wstepny kurs jest nei dla tych co wiedza wszystko, a
    dla tych co wiedza nic.

    A.L.


  • 59. Data: 2011-04-05 06:20:02
    Temat: Re: Carnegie-Mellon przestaje uczyc programowania obiektowego
    Od: Andrzej Jarzabek <a...@g...com>

    On Mon, 4 Apr 2011 05:37:34 -0700 (PDT), Maciej Sobczak
    <s...@g...com> wrote:
    > > Innymi słowy - da się pisać modułowo w C++
    > Da się organizować deklaracje w grupy. Np. std:: to grupa nazw z

    Jest jeszcze coś takiego jak anonymous namespace.


  • 60. Data: 2011-04-05 07:41:18
    Temat: Re: Carnegie-Mellon przestaje uczyc programowania obiektowego
    Od: Sebastian Kaliszewski <s...@r...this.informa.and.that.pl>

    Paweł Kierski wrote:
    > W dniu 2011-04-04 12:38, Sebastian Kaliszewski pisze:
    > [...]
    >> unit cośtam;
    >>
    >> interface ....
    >> implementation ....
    >>
    >>
    >> Na poziomie języka przyzwoity moduł ma dobrze określany interfejs i jest
    >> dobrze oddzielony od reszty kodu, tzn. z reszty kodu może sam z z
    >> siebie[**] korzystać tylko poprzez interfejsy innych modułów.
    >>
    >> To co nie jest udostępnione w interfejsie nie jest dostępne dla kodu
    >> spoza modułu (za wyjątkiem jakiś spyficznych tricków, ale nie zajmujemy
    >> ani nie interesujemy się tu rzeźbiarstwem). To jest podobne do tego, co
    >> znamy z OO z klasami (jest OO bez klas, gdzie jest już mniej podobne)
    >> ale do "nieco" czego innego służy i generalnie na innym poziomie
    >> struktury kodu działa.
    >>
    >> Stąd zarówno rozwiązania z C++ z jednej strony (przestrzenie nazw i
    >> jednostki kompilacji) jak i z Javy z drugiej (pakiety i jednostki
    >> kompilacji ograniczone do jednej publicznej klasy) to tylko
    >> fragmentaryczne, niekompletne kawałki.
    >>
    >> Mam nadzieję, że nieco wyjaśniłem
    >
    > Pomijając na razie kwestie łatwości zapisu i czytelności - nie widzę tu
    > niczego, czego nie dałoby się wyrazić w C++ za pomocą przestrzeni nazw
    > i jednostek kompilacji. Na tej samej zasadzie w C++ nie ma słowa
    > interface, ale daje się go dobrze wyrazić za pomocą klasy wyłącznie
    > z metodami tylko abstrakcyjnymi.
    >

    wyrazić != zapewnić.

    > Innymi słowy - da się pisać modułowo w C++, kwestia zachowania
    > konwencji. Oczywiście - każdy będzie miał inną 8-)
    >

    Można też jak najbardziej pisać obiektowo w zwykłym C a nawet w
    assemberze. Też kwetsta zachowania konwencji B-)

    pzdr
    \SK
    --
    "Never underestimate the power of human stupidity" -- L. Lang
    --
    http://www.tajga.org -- (some photos from my travels)

strony : 1 ... 5 . [ 6 ] . 7 ... 20 ... 26


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: