eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › jezyki z definiowaniem operatorow
Ilość wypowiedzi w tym wątku: 47

  • 11. Data: 2012-05-16 05:19:04
    Temat: Re: jezyki z definiowaniem operatorow
    Od: " firr" <f...@g...pl>

    Daniel Janus <n...@g...com> napisał(a):

    > W dniu wtorek, 15 maja 2012 18:10:51 UTC+1 u=BFytkownik fir napisa=B3:
    > > czy wystepuja jezyki z definiowaniem=20
    > > operatorow (inne niz c++, gdzie zreszt=B1
    > > to definiowanie jest bardzo ograniczone -
    > > mozna sobie wyobrazic jezyk ze tak swobodnym=20
    > > definiowaniem operatorow jak funkcji, moze
    > > to skrociloby listingi choc trudno powiedziec)
    >
    > Co rozumiesz przez "definiowanie operator=F3w"?
    >
    > --D.


    przez definiowanie operatorow rozumiem glownie
    nadanie wywolaniom funkcji postaci operatorowej np
    zamiast

    print("this", "is", 4, "lisa") //funkcja print

    print "this" "is" 4 "lisa" //operator print


    float3 d = cross(cross(a,b),c) //funkcja cross

    float3 d = a cross b cross c //operator cross

    c = concatenate(a,b);

    c = a concatenate b


    itd


    raczej nie ma z tym zasadniczego problemu, zastanawiam
    sie nad ew konsekwencjami takiego czegos (bo wynikaja z tego
    pewne ciekawe wnioski)






    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 12. Data: 2012-05-16 07:41:13
    Temat: Re: jezyki z definiowaniem operatorow
    Od: " M.M." <m...@g...pl>

    fir <f...@g...pl> napisał(a):

    > czy wystepuja jezyki z definiowaniem
    > operatorow (inne niz c++, gdzie zresztą
    > to definiowanie jest bardzo ograniczone -
    > mozna sobie wyobrazic jezyk ze tak swobodnym
    > definiowaniem operatorow jak funkcji, moze
    > to skrociloby listingi choc trudno powiedziec)

    Czy ja wiem, czy to może istotnie skrócić listingi?
    W moim odczuciu, poza nielicznymi wyjątkami, przeładowanie
    operatorów tylko utrudnia parsowanie kodu w oczach. Wyjątki o
    których mowa to np. zdefiniowanie operatora w standardowej/popularnej
    bibliotece co powoduje że oczy każdego programisty dobrze
    przywykły do ich używania.


    Ostatnio w pewnym programie (C++) zdefiniowałem dwie "małe"
    klasy. Jedna klasa obudowywała unsigned int, druga
    unsigned long long. Przedefiniowałem też klika operatorów.
    Do kodu łatwo wkradł się błąd. Potem wywaliłem zarówno
    te dwie klasy jak i przedefiniowane operatory. Używam
    po prostu f(&a,&b), albo rzadziej f(&a,&b,&c). Nie
    czuję abym coś tracił z tego powodu, raczej zyskuję, bo
    mam prostszą składnie do czytania.

    Pozdrawiam


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 13. Data: 2012-05-16 08:05:30
    Temat: Re: jezyki z definiowaniem operatorow
    Od: " " <f...@g...pl>

    M.M. <m...@g...pl> napisał(a):

    > fir <f...@g...pl> napisał(a):
    >
    > > czy wystepuja jezyki z definiowaniem
    > > operatorow (inne niz c++, gdzie zresztą
    > > to definiowanie jest bardzo ograniczone -
    > > mozna sobie wyobrazic jezyk ze tak swobodnym
    > > definiowaniem operatorow jak funkcji, moze
    > > to skrociloby listingi choc trudno powiedziec)
    >
    > Czy ja wiem, czy to może istotnie skrócić listingi?
    > W moim odczuciu, poza nielicznymi wyjątkami, przeładowanie
    > operatorów tylko utrudnia parsowanie kodu w oczach. Wyjątki o
    > których mowa to np. zdefiniowanie operatora w standardowej/popularnej
    > bibliotece co powoduje że oczy każdego programisty dobrze
    > przywykły do ich używania.
    >

    trudno powiedziec, w sumie taki operator (jak z przykladow
    wczesniej) to tylko troche inny sposob wywolania funkcji

    (wiec nie taka wielka zmiana, mw to samo)

    [kiedys myslelem czy nie oznaczac takich slownych operatorow
    specjalnymi znakami np <dot> a nie dot ale teraz widze ze moga
    byc zwykle slowa]

    - jest to oszczedniejsze w znaki w stosunku do wywolan funkcji
    ale tez o ilestam trudniejsze w czytaniu - z tym ze c w pewnym
    sensie jest pomyslane dla zaawansowanych, ludzi ktorzy nawykli,

    jesli skrotowosc zapisu laczy sie z pewna trudnoscia w
    nauczeniu sie jak tego uzywac to c jednak idzie w ta strone
    (tj promuje zaawansowanych) - o tyle mozna by powiedziec ze
    to by w pewnym sensie korespondowalo

    (acz dokladnie ciezko powiedziec jakie komplikacje i dobre
    rzeczy by z tego wynikaly)

    jako poprawka do c moglbym to rozumiec jako mozliwosc
    definiowania funkcji w takiej operatorowej postaci (obok
    zwyklych - dorzucam do swojej listy ew poprawek do c )




    >
    > Ostatnio w pewnym programie (C++) zdefiniowałem dwie "małe"
    > klasy. Jedna klasa obudowywała unsigned int, druga
    > unsigned long long. Przedefiniowałem też klika operatorów.
    > Do kodu łatwo wkradł się błąd. Potem wywaliłem zarówno
    > te dwie klasy jak i przedefiniowane operatory. Używam
    > po prostu f(&a,&b), albo rzadziej f(&a,&b,&c). Nie
    > czuję abym coś tracił z tego powodu, raczej zyskuję, bo
    > mam prostszą składnie do czytania.
    >
    > Pozdrawiam
    >
    >


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 14. Data: 2012-05-16 10:10:40
    Temat: Re: jezyki z definiowaniem operatorow
    Od: Maciej Sobczak <s...@g...com>

    On May 15, 7:10 pm, "fir " <f...@g...pl> wrote:
    > czy wystepuja jezyki z definiowaniem
    > operatorow

    > czy sa takie jezyki i jak to wyglada?

    Np. w Adzie, gdzie wygląda to podobnie, jak w C++.

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


  • 15. Data: 2012-05-16 11:58:55
    Temat: Re: jezyki z definiowaniem operatorow
    Od: Edek Pienkowski <e...@g...com>

    Dnia Wed, 16 May 2012 01:07:12 +0100, Andrzej Jarzabek napisal:

    > On 16/05/2012 00:00, Edek Pienkowski wrote:
    >> Dnia Tue, 15 May 2012 21:39:36 +0100, Andrzej Jarzabek napisal:
    >>
    >> Tak więc w językach znanych przez kolegę "pierwszeństwo i stronność... "
    >> - no, mądre słowo - "są określane przez gramatykę". Ale kolega ma świadomość
    >> istnienia języków funkcyjnych. Hmm.
    >
    > I?
    >
    >> A gdyby tak powiedzieć, że nie musi tego określać gramatyka i że to byt
    >> określa świadomość?
    >
    > Jeśli kolega ma do npisania coś konkretnego, to może kolega napisać, nie
    > wykluczam nawet, że z ciekawości przeczytam.

    Jakiś konkret do którego można się odnieść by się przydał, nie wiem co
    miałoby być konkretem.

    >
    > W przeciwnym razie, to co gdyby tak powiedzieć, że nie należy mnożyć
    > bytów ponad potrzebę i ceterum censeo że jak kolega ma tak chrzanić, to
    > mi się nie chce w ten sposób rozmawiać.
    >
    >> Kurde, zaczynam rozumieć dlaczego niektórzy uważają OO
    >> za szkodnika, strasznie sformatowało umysły.
    >
    > Może kolega o niesformatowanym umyśle wytłumaczy, jaki jest związek OO z
    > czymkolwiek, co napisałem?
    >

    Napisał kolega:

    >>> Ze swobodnym definiowaniem operatorów problem jest taki, że ich
    >>> pierwszeństwo i stronność są określone gramatyką języka. Zmienianie tego
    >>> na bieżąco przy pomocy samego programu w tym języku wydaje się
    >>> problematyczne - być może, że wręcz prowadzi do nierozwiązywalnych
    >>> problemów, a na pewno standardowy model skaner-parser-translacja trafiłby
    >>> szlag.

    Z OO ma to dwa rodzaje związku. Pierwszy: tak jest w większości popularnych
    języków obiektowych, ale nie wynika to z niczego, jest szczegółem
    implementacyjnym. Parser gcc zamienia niektóre (x-x) na odpowiedniego typu
    zero, ale to nie znaczy że musi to robić akurat parser, późniejsze stadia
    mogą implementować taki folding. Podobnie jest z operatorami, można już po
    parsowaniu przekształcić graf składni.

    Drugi: +:Matrix,Matrix -> Matrix operuje na typach Matrix,
    które są typem złożonym i zazwyczaj przeciążenie operatorów jest mocno
    związane z OO bo wiąże operatory czyli kod z danymi. Wiem, że kolega nic
    takiego nie napisał, ale taki jest kontekst. Może Tcl jest jakimś przykładem
    innego podejścia, tyle że mocno amorficznym.

    Edek


  • 16. Data: 2012-05-16 12:24:53
    Temat: Re: jezyki z definiowaniem operatorow
    Od: " " <f...@g...pl>

    firr <f...@g...pl> napisał(a):

    > Daniel Janus <n...@g...com> napisał(a):
    >
    > > W dniu wtorek, 15 maja 2012 18:10:51 UTC+1 u=BFytkownik fir napisa=B3:
    > > > czy wystepuja jezyki z definiowaniem=20
    > > > operatorow (inne niz c++, gdzie zreszt=B1
    > > > to definiowanie jest bardzo ograniczone -
    > > > mozna sobie wyobrazic jezyk ze tak swobodnym=20
    > > > definiowaniem operatorow jak funkcji, moze
    > > > to skrociloby listingi choc trudno powiedziec)
    > >
    > > Co rozumiesz przez "definiowanie operator=F3w"?
    > >
    > > --D.
    >
    >
    > przez definiowanie operatorow rozumiem glownie
    > nadanie wywolaniom funkcji postaci operatorowej np
    > zamiast
    >
    > print("this", "is", 4, "lisa") //funkcja print
    >
    > print "this" "is" 4 "lisa" //operator print
    >

    przy okazji tego to powstaje pomysl na nowy operator
    jakiego nie ma w c - operator zapodawania sekwencyjnego

    np mozna miec funkcje ktora przyjmie np 4 argumenty rownolegle
    na raz ale mozna tez wyobrazis sobie funkcje ktora wywolana zostanie
    4 trazy za kazdym razem z kolejnym argumentem

    print "ala"+"ma"+"kota" // print("alamakota");

    print "ala" "ma" "kota" // print("ala","ma","kota");

    print ("ala")("ma")("kota") // print("ala");
    print("ma");
    print("kota");

    (jakiestam operatory w srodku czy to slowami czy symbolami)

    (w sumie wlasnie zamist dodawac stringi i tracic procek
    lepiej nie zmieniac danych tylko wywolac po kolei kilka printow
    na odzielnych stringach)





    >
    > float3 d = cross(cross(a,b),c) //funkcja cross
    >
    > float3 d = a cross b cross c //operator cross
    >
    > c = concatenate(a,b);
    >
    > c = a concatenate b
    >
    >
    > itd
    >
    >
    > raczej nie ma z tym zasadniczego problemu, zastanawiam
    > sie nad ew konsekwencjami takiego czegos (bo wynikaja z tego
    > pewne ciekawe wnioski)
    >
    >
    >
    >
    >
    >


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 17. Data: 2012-05-16 13:23:48
    Temat: Re: jezyki z definiowaniem operatorow
    Od: Piotr Chamera <p...@p...onet.pl>

    W dniu 2012-05-16 12:24, f...@g...pl pisze:
    > firr<f...@g...pl> napisał(a):
    >
    >> Daniel Janus<n...@g...com> napisał(a):
    >>
    >>> W dniu wtorek, 15 maja 2012 18:10:51 UTC+1 u=BFytkownik fir napisa=B3:
    >>>> czy wystepuja jezyki z definiowaniem=20
    >>>> operatorow (inne niz c++, gdzie zreszt=B1
    >>>> to definiowanie jest bardzo ograniczone -
    >>>> mozna sobie wyobrazic jezyk ze tak swobodnym=20
    >>>> definiowaniem operatorow jak funkcji, moze
    >>>> to skrociloby listingi choc trudno powiedziec)
    >>>
    >>> Co rozumiesz przez "definiowanie operator=F3w"?
    >>>
    >>> --D.
    >>
    >>
    >> przez definiowanie operatorow rozumiem glownie
    >> nadanie wywolaniom funkcji postaci operatorowej np
    >> zamiast
    >>
    >> print("this", "is", 4, "lisa") //funkcja print
    >>
    >> print "this" "is" 4 "lisa" //operator print
    >>
    >
    > przy okazji tego to powstaje pomysl na nowy operator
    > jakiego nie ma w c - operator zapodawania sekwencyjnego
    >
    > np mozna miec funkcje ktora przyjmie np 4 argumenty rownolegle
    > na raz ale mozna tez wyobrazis sobie funkcje ktora wywolana zostanie
    > 4 trazy za kazdym razem z kolejnym argumentem
    >
    > print "ala"+"ma"+"kota" // print("alamakota");
    >
    > print "ala" "ma" "kota" // print("ala","ma","kota");
    >
    > print ("ala")("ma")("kota") // print("ala");
    > print("ma");
    > print("kota");

    W niektórych językach nieco wyższego poziomu niż C (w nawiązaniu
    do wątku o HLL-ach) takie konstrukcje albo są wbudowane (np. niektóre
    funkcje w lispie),

    CL-USER> (+ 1 23 45 1.23 3/4)
    70.98

    albo można je łatwo zdefiniować:

    (defun printall (&rest all)
    (dolist (x all) (princ x)))

    CL-USER> (printall "ala" "ma" "kota")
    alamakota
    NIL

    printall można też zdefiniować jak poniżej (coś podobnego do funkcji
    map występuje w wielu językach):

    (defun printall (&rest all)
    (map nil #'princ all))

    > (jakiestam operatory w srodku czy to slowami czy symbolami)
    >
    > (w sumie wlasnie zamist dodawac stringi i tracic procek
    > lepiej nie zmieniac danych tylko wywolac po kolei kilka printow
    > na odzielnych stringach)


  • 18. Data: 2012-05-16 13:32:58
    Temat: Re: definiowanie operatorow - lisp
    Od: " " <f...@N...gazeta.pl>

    > albo można je łatwo zdefiniować:

    > (defun printall (&rest all)
    > (dolist (x all) (princ x)))

    > CL-USER> (printall "ala" "ma" "kota")
    > alamakota
    > NIL

    no nawet w miare w tej linijce (printall "ala" "ma" "kota")
    bo krotko, ale w c mogloby byc czesto mniej o nawias,

    a co to jest "&rest" i "(x doall)" ?




    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 19. Data: 2012-05-16 13:59:04
    Temat: Re: definiowanie operatorow - lisp
    Od: Piotr Chamera <p...@p...onet.pl>

    W dniu 2012-05-16 13:32, f...@N...gazeta.pl pisze:
    >> albo można je łatwo zdefiniować:
    >
    >> (defun printall (&rest all)
    >> (dolist (x all) (princ x)))
    >
    >> CL-USER> (printall "ala" "ma" "kota")
    >> alamakota
    >> NIL
    >
    > no nawet w miare w tej linijce (printall "ala" "ma" "kota")
    > bo krotko, ale w c mogloby byc czesto mniej o nawias,
    >
    > a co to jest "&rest" i "(x doall)" ?

    (&rest all) oznacza mniej więcej tyle, że wszystkie pozostałe argumenty
    przekazane do funkcji zostaną zebrane w listę i będzie ona w ciele
    funkcji dostępna pod podaną nazwą (w tym przypadku nazwałem ją ,,all")
    A to (dolist (x all) (princ x)) po prostu iteruje po liście i na każdym
    elemencie ,,x" na liście ,,all" wykonuje funkcję ,,princ".


  • 20. Data: 2012-05-16 14:12:55
    Temat: Re: definiowanie operatorow - lisp
    Od: " " <f...@N...gazeta.pl>

    Piotr Chamera <p...@p...onet.pl> napisał(a):

    > W dniu 2012-05-16 13:32, f...@N...gazeta.pl pisze:
    > >> albo można je łatwo zdefiniować:
    > >
    > >> (defun printall (&rest all)
    > >> (dolist (x all) (princ x)))
    > >
    > >> CL-USER> (printall "ala" "ma" "kota")
    > >> alamakota
    > >> NIL
    > >
    > > no nawet w miare w tej linijce (printall "ala" "ma" "kota")
    > > bo krotko, ale w c mogloby byc czesto mniej o nawias,
    > >
    > > a co to jest "&rest" i "(x doall)" ?
    >
    > (&rest all) oznacza mniej więcej tyle, że wszystkie pozostałe argumenty
    > przekazane do funkcji zostaną zebrane w listę i będzie ona w ciele
    > funkcji dostępna pod podaną nazwą (w tym przypadku nazwałem ją „all”)
    > A to (dolist (x all) (princ x)) po prostu iteruje po liście i na każdym
    > elemencie „x” na liście „all” wykonuje funkcję „princ”.

    a czemu & przed rest, pewnie i rest i dolist i defun sa sowami
    kluczowymi wiec po co & przed rest?


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

strony : 1 . [ 2 ] . 3 ... 5


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: