eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Ilość wypowiedzi w tym wątku: 41

  • 21. Data: 2019-12-14 11:18:58
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: Piotr Chamera <p...@p...onet.pl>

    W dniu 2019-12-14 o 11:16, Piotr Chamera pisze:
    > W dniu 2019-12-14 o 09:01, Mateusz Viste pisze:
    >> 2019-12-13 o 17:58 -0800, osobliwy nick napisał:
    >>> No własnie zniechęciłem się nieco do tego języka, z drugiej jednak
    >>> strony tak jak pisał kolega, widzę, że jest on uniwersalny, dużo firm
    >>> w tym programuje.
    >>
    >> C++ to kosmiczna armata do strzelania w orbitalną gwiazdę śmierci.
    >> Zainteresuj się "zwykłym" C - wielokrotnie łatwiejszym do ogarnięcia
    >> (co nie znaczy że łatwiej w nim pisać bezbłędne programy). A jeśli
    >> później poczujesz potrzebę dodania plusów, to się tych plusów douczysz.
    >>
    >>> Ale już na wstępie pisząc swój pierwszy program w
    >>> C++ napotykam schody, bo tak jak pisałem w poprzednim wątku chcę
    >>> robić przykładowo obliczenia na liczbach 128-bitowych. I już jest
    >>> problem, bo C++ nie obsługuje takich liczb.
    >>
    >> W gcc i clang można korzystać z liczb 128 bitowych dzięki rozszerzeniu
    >> GNU języku - nie ma potrzeby niczego dodawać, typ dostępny jest z
    >> marszu. Wystarczy go zadeklarować:
    >>
    >> __uint128_t mojaliczba;
    >>
    >> Korzystam z tego na co dzień do obliczeń masek IPv6.
    >
    > To nie będzie takie proste. W przykładzie podanym przez OP zaczynamy
    > od liczby rzędu 2^128, ale w ostatniej iteracji mamy już liczbę rzędu
    > 2^148

    Przepraszam, odniosłem się do poprzedniego wątku, w tym 128 bitów
    powinno wystarczyć.


  • 22. Data: 2019-12-14 20:02:40
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: Maciej Sobczak <s...@g...com>

    > > W sensie - jaka jest wartość dodana tego języka Ć?
    >
    > Sam chwilę temu pisałeś o problemach z wołaniem Javy z C# albo na odwrót.

    Sam chwilę temu pisałem, że moduł napisany w C++ mogę załadować do Javy i .NETa.
    Więc jeśli celem jest napisanie takiego modułu, to wiem, jak to zrobić bez
    konieczności sięgania po nowe (niedopracowane?) narzędzia.

    Więc pytam, jaka jest wartość dodana, skoro bez tego narzedzia nie mam problemu z
    osiąganiem swoich celów.

    > > To używaj wybranego podzbioru. Wtedy taki (pod)język będzie mniej złożony.
    >
    > Tylko skąd będę wiedział, który podzbiór jest tym właściwym?

    Zapytasz na grupie dyskusyjnej? Podpatrzysz implementację innego produktu z tej samej
    lub zbliżonej dziedziny?
    A może przy takich poszukiwaniach niechcący nauczysz się całego języka i wtedy sam
    będziesz mógł taki podzbiór wybrać?

    > Jaki konkretnie sukces osiągnął Python przed zainteresowaniem się nim przez Google?

    A co w ogóle jest miarą sukcesu języka programowania? Bo skoro twierdzisz, że Python
    osiągnął ten sukces po inwestycji ze strony Googla, to chyba masz jakiś pogląd na to,
    czym ten sukces jest?

    > Nie. Oznacza instytucje, które dysponują zasobami. Jeżeli pytasz o jakie korporacje
    chodzi, to przede wszystkim Microsoft z Visual C++, oraz Intel, któty raz że ma
    produkt w postaci ICC, a dwa że kontrybuuje do GCC, bo mu to zwiększa sprzedaż
    procesorów.

    I to są świetne powody, żeby zainteresować się tym językiem planując własny produkt.

    > Sukces C++ wyniknął stąd, że znalazły się podmioty, które zrobiły dla niego dobre
    narzędzia.

    Super! Dobre narzędzia to kolejny powód, żeby się tym językiem zainteresować.
    Po co tracić czas na języki, do których nie ma dobrych narzedzi?

    > > Dlatego też zachodzi podejrzenie, że do zadania z tego wątku też będzie to dobry
    wybór.
    >
    > Może będzie. Trzymam kciuki.

    Wszyscy trzymamy.

    > Sądzę, że raczej bierze się to stąd, że łatwiej znaleźć developerów C++ niż Common
    Lispa (w pierwszym przypadku) i łatwiej uzyskać dobrą wydajność w C++ niż w Javie (w
    drugim przypadku).

    To są same świetne powody, żeby wybrać C++ do kolejnego projektu.

    > W każdym razie clou jest takie, że rozwijanie projektu jest czymś innym, niż
    utrzymanie produktu.

    Nie dostrzegam tego clou. Nie widzę sensu rozwijania produktu w jakimś języku, który
    nie będzie się nadawał do dalszego utrzymania tego produktu - chociażby dlatego, że
    skazałbym się na koszt przepisywania tego produktu. Praktyka pokazuje, że rozwiązania
    tymczasowe mają zdumiewającą zdolność przetrwania, więc najlepiej ich z góry uniknąć
    i od razu zrobić dobrze (o ile w ogóle mamy długofalową wizję co to ma oznaczać - ale
    jeżeli plan jest komercyjny, to jakaś wizja najwyraźniej jest).

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


  • 23. Data: 2019-12-14 20:18:44
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: Maciej Sobczak <s...@g...com>

    > tak jak pisałem w poprzednim wątku chcę robić przykładowo obliczenia na liczbach
    128-bitowych. I już jest problem, bo C++ nie obsługuje takich liczb.

    Obsługuje, od paru lat. Co prawda jako "nieoficjalne" rozszerzenie, ale nie widzę
    powodu, żeby miało Cię to ograniczyć.
    Przykład:

    ~/temp $ cat test.cpp
    #include <iostream>

    int main()
    {
    __int128_t i = 42;
    __int128_t j = 7;

    __int128_t k = i * j;

    for (int bit = 127; bit >=0; --bit)
    {
    std::cout << ((k & ((__int128_t)1 << bit)) != 0);
    }
    std::cout << '\n';
    }

    ~/temp $ c++ test.cpp
    ~/temp $ ./a.out
    0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000
    000000000000000100100110
    ~/temp $

    Wynik na ekranie to oczywiście, binarnie, 128-bitowy efekt mnożenia 42*7.
    Nie użyłem do tego żadnej biblioteki, kompilator to obsłużył "od ręki". I mam
    pewność, że raczej nie da się tego zrobić szybciej (w sensie wydajności kodu).

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


  • 24. Data: 2019-12-15 11:54:08
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: g...@g...com

    W dniu sobota, 14 grudnia 2019 20:02:41 UTC+1 użytkownik Maciej Sobczak napisał:
    > > > W sensie - jaka jest wartość dodana tego języka Ć?
    > >
    > > Sam chwilę temu pisałeś o problemach z wołaniem Javy z C# albo na odwrót.
    >
    > Sam chwilę temu pisałem, że moduł napisany w C++ mogę załadować do Javy i .NETa.
    > Więc jeśli celem jest napisanie takiego modułu, to wiem, jak to zrobić bez
    konieczności sięgania po nowe (niedopracowane?) narzędzia.
    > Więc pytam, jaka jest wartość dodana, skoro bez tego narzedzia nie mam problemu z
    osiąganiem swoich celów.

    Jeżeli idzie o Javę, to obawiam się, że korzystając z Twojej metody będziesz się
    musiał sam martwić o to, żeby przeportować i utrzymywać swój moduł na każdą
    interesującą Cię platformę. Czyli najważniejszą cechę Javy - przenośność pomiędzy
    platformami - wyrzucasz do kosza.
    Dodatkowo wołanie kodu natywnego jest na JVM kosztowne, i stosując je, tracisz JVMowe
    optymalizacje.
    Więc chociażby taka.

    > > > To używaj wybranego podzbioru. Wtedy taki (pod)język będzie mniej złożony.
    > >
    > > Tylko skąd będę wiedział, który podzbiór jest tym właściwym?
    >
    > Zapytasz na grupie dyskusyjnej? Podpatrzysz implementację innego produktu z tej
    samej lub zbliżonej dziedziny?
    > A może przy takich poszukiwaniach niechcący nauczysz się całego języka i wtedy sam
    będziesz mógł taki podzbiór wybrać?

    Się uśmiałem.
    C++ jest językiem, którego nie ogarniają sami jego twórcy, więc nie sądzę, żeby
    osobie łażącej po grupach dyskusyjnych było dane nauczyć się "całego" języka.

    > > Jaki konkretnie sukces osiągnął Python przed zainteresowaniem się nim przez
    Google?
    >
    > A co w ogóle jest miarą sukcesu języka programowania? Bo skoro twierdzisz, że
    Python osiągnął ten sukces po inwestycji ze strony Googla, to chyba masz jakiś pogląd
    na to, czym ten sukces jest?

    Tak. W przypadku języków programowania sukcesem jest popularność.
    I jeżeli spojrzysz na rankingi popularności, to z łatwością dostrzeżesz, że Python
    zaczął się na nim pojawiać w okolicach 2000-2001 roku.
    Czyli mniej więcej w czasie kiedy kierownik działu badań w Googlu napisał ten tekst:
    https://norvig.com/python-lisp.html

    > > Sukces C++ wyniknął stąd, że znalazły się podmioty, które zrobiły dla niego dobre
    narzędzia.
    >
    > Super! Dobre narzędzia to kolejny powód, żeby się tym językiem zainteresować.
    > Po co tracić czas na języki, do których nie ma dobrych narzedzi?

    Zdecydowanie nie warto.
    Ale C++ nie jest jedynym językiem, dla którego istnieją dobre narzędzia.

    > > W każdym razie clou jest takie, że rozwijanie projektu jest czymś innym, niż
    utrzymanie produktu.
    >
    > Nie dostrzegam tego clou. Nie widzę sensu rozwijania produktu w jakimś języku,
    który nie będzie się nadawał do dalszego utrzymania tego produktu - chociażby
    dlatego, że skazałbym się na koszt przepisywania tego produktu.

    Paul Graham swego czasu pisał dużo na temat wyboru Common Lispu do swojego start-upu.
    Jego zdaniem to właśnie użycie tego języka dawało im przewagę nad konkurencją, bo
    mogli bardzo szybko dodawać do swojego produktu nowe ficzery, tym samym prześcigając
    konkurencję. Innymi słowy, zdaniem Grahama, jeśli by wybrali inny język, to produkt
    albo nigdy by nie powstał, albo by przegrał.
    I podejrzewam, że Graham ma w tym przypadku rację - bo koniec końców to jego produkt.
    I nawet jeżeli ocena języka programowania jest subiektywna, to jeżeli ktoś na
    przykład czerpie frustrację z używania jakiegoś języka, to raczej trudno się
    spodziewać, żeby zaszedł w nim dalej od kogoś, kto używa swojego języka z
    przyjemnością. (I z dotychczasowych wypowiedzi wynika, że Osobliwy Nick nie był
    szczególnie zadowolony z C++, więc pewnie w jego przypadku warto rozejrzeć się za
    jakimiś alternatywami)

    Natomiast w tej historii to nie Graham i nie Persson poniósł koszty przepisywania,
    tylko - odpowiednio - Yahoo i Microsoft. Z tego co wiem, autorzy kodu byli raczej
    zadowoleni z transakcji, a przepisanie go na C++ było czymś, co miało sens z
    perspektywy nabywców (a dlaczego tak było? Bo może mieli u siebie zatrudnionych wielu
    doświadczonych programistów C++, w związku z czym przepisanie kodu na ten język miało
    dla nich sens)

    Dlatego jeśli miałbym wybierać pomiędzy tym, czy projekt ma być zrealizowany, a tym,
    czy do realizacji projektu mam użyć C++, i nigdy go nie ukończyć, to raczej bym się
    nie zastanawiał.

    > Praktyka pokazuje, że rozwiązania tymczasowe mają zdumiewającą zdolność
    przetrwania, więc najlepiej ich z góry uniknąć i od razu zrobić dobrze (o ile w ogóle
    mamy długofalową wizję co to ma oznaczać - ale jeżeli plan jest komercyjny, to jakaś
    wizja najwyraźniej jest).

    Jasne, że lepiej robić dobrze, niż źle, ale problem jest taki, że o tym, co w danym
    przypadku znaczy "dobrze", a co "źle", dowiadujemy się dopiero po fakcie.


  • 25. Data: 2019-12-15 23:38:48
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: Maciej Sobczak <s...@g...com>

    > Jeżeli idzie o Javę, to obawiam się, że korzystając z Twojej metody będziesz się
    musiał sam martwić o to, żeby przeportować i utrzymywać swój moduł na każdą
    interesującą Cię platformę.

    Akurat C++ jest dużo bardziej przenośny, niż Java, więc nie martwi mnie to zbytnio.

    > Czyli najważniejszą cechę Javy - przenośność pomiędzy platformami - wyrzucasz do
    kosza.

    Mój moduł będzie przenośny nawet na te platformy, na których JVM w ogóle nie da się
    zrobić. Problem więc jest dokładnie odwrotny - decydując się na pisanie takiego
    modułu pod kątem Javy, ograniczyłbym sobie ilość docelowych platform. To brzmi
    głupio, ale faktycznie, wielu ludzi właśnie tak się z własnej woli ogranicza.

    > Dodatkowo wołanie kodu natywnego jest na JVM kosztowne,
    > i stosując je, tracisz JVMowe optymalizacje.

    Akurat doświadczenie z wydajnością czegokolwiek podpowiada mi, że mój moduł będzie
    wtedy i tak najszybszą częścią takiego składaka. Więc znowu nie martwiłbym się tym
    zagadnieniem.

    > C++ jest językiem, którego nie ogarniają sami jego twórcy,

    Nie szkodzi. Ważne, że ogarnęli go twórcy wszystkich tych projektów, które w C++
    odniosłu sukces - a które nawet sam tutaj przytoczyłeś.

    > Tak. W przypadku języków programowania sukcesem jest popularność.
    > I jeżeli spojrzysz na rankingi popularności, to z łatwością dostrzeżesz, że Python
    zaczął się na nim pojawiać w okolicach 2000-2001 roku.
    > Czyli mniej więcej w czasie kiedy kierownik działu badań w Googlu napisał ten
    tekst: https://norvig.com/python-lisp.html

    Nie wiązałbym tej popularności z tym konkretnie artykułem. Przypuszczam nawet, że
    jeśli ktoś nie interesował się LISPem, to na ten artykuł w ogóle nie trafił.

    Guido został zatrudniony w Google'u w 2005. Python był już wtedy bardzo dobrze
    rozpoznawalny, w top 10 (https://www.youtube.com/watch?v=Og847HVwRSI). I raczej nie
    był to efekt jakiegoś artykułu napisanego dla fanów LISPa.

    > Ale C++ nie jest jedynym językiem, dla którego istnieją dobre narzędzia.

    Tak. Ale nie zaproponowałeś żadnego innego, który by ten warunek spełniał.

    > Paul Graham swego czasu pisał dużo na temat wyboru Common Lispu do swojego
    start-upu. Jego zdaniem to właśnie użycie tego języka dawało im przewagę nad
    konkurencją, bo mogli bardzo szybko dodawać do swojego produktu nowe ficzery, tym
    samym prześcigając konkurencję.

    Dokładnie tak samo tłumaczą swoje wybory wszyscy inni, którzy osiągnęli jakiś sukces.
    Co płynnie przenosi nas do wniosku, że wybór języka może być drugorzędny:

    > I podejrzewam, że Graham ma w tym przypadku rację - bo koniec końców to jego
    produkt. I nawet jeżeli ocena języka programowania jest subiektywna, to jeżeli ktoś
    na przykład czerpie frustrację z używania jakiegoś języka, to raczej trudno się
    spodziewać, żeby zaszedł w nim dalej od kogoś, kto używa swojego języka z
    przyjemnością.

    To prawda. Ale ponieważ powstało wiele produktów, które osiągnęły sukces, to może być
    też tak, że istotnym składnikiem sukcesu nie jest wybór języka, tylko entuzjazm do
    jego używania.

    > (I z dotychczasowych wypowiedzi wynika, że Osobliwy Nick nie był szczególnie
    zadowolony z C++, więc pewnie w jego przypadku warto rozejrzeć się za jakimiś
    alternatywami)

    Z dotychczasowych wypowiedzi wynika, że w ogóle nie był zadowolony ze swoich
    osiągnięc programistycznych, więc na dzień dzisiejszy chyba każdy język startuje z
    równej pozycji. Ale jeżeli składnik subiektywny ma odegrać istotną rolę, to tego
    oczywiście nie rozstrzygniemy. Osobliwy sam musi to zrobić.

    > Natomiast w tej historii to nie Graham i nie Persson poniósł koszty przepisywania,
    tylko - odpowiednio - Yahoo i Microsoft. Z tego co wiem, autorzy kodu byli raczej
    zadowoleni z transakcji, a przepisanie go na C++ było czymś, co miało sens z
    perspektywy nabywców (a dlaczego tak było? Bo może mieli u siebie zatrudnionych wielu
    doświadczonych programistów C++, w związku z czym przepisanie kodu na ten język miało
    dla nich sens)

    Mogło tak być. Czyli kierował nimi entuzjazm.
    Ale skoro ostatecznie osiągnęli sukces, to najwyraźniej nie była to zła decyzja.

    > Dlatego jeśli miałbym wybierać pomiędzy tym, czy projekt ma być zrealizowany, a
    tym, czy do realizacji projektu mam użyć C++, i nigdy go nie ukończyć, to raczej bym
    się nie zastanawiał.

    Ale nie ma przesłanek do twierdzenia, że w C++ byś go nie ukończył. To raczej pachnie
    uprzedzeniami.

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


  • 26. Data: 2019-12-16 00:05:33
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: g...@g...com

    W dniu niedziela, 15 grudnia 2019 23:38:50 UTC+1 użytkownik Maciej Sobczak napisał:
    > > Jeżeli idzie o Javę, to obawiam się, że korzystając z Twojej metody będziesz się
    musiał sam martwić o to, żeby przeportować i utrzymywać swój moduł na każdą
    interesującą Cię platformę.
    >
    > Akurat C++ jest dużo bardziej przenośny, niż Java, więc nie martwi mnie to zbytnio.

    Jeżeli Twoim targetem (np. biznesowym) jest Java, to powinno.
    Język Ć jest zaś jeszcze bardziej przenośny, niż C++.

    > > Tak. W przypadku języków programowania sukcesem jest popularność.
    > > I jeżeli spojrzysz na rankingi popularności, to z łatwością dostrzeżesz, że
    Python zaczął się na nim pojawiać w okolicach 2000-2001 roku.
    > > Czyli mniej więcej w czasie kiedy kierownik działu badań w Googlu napisał ten
    tekst: https://norvig.com/python-lisp.html
    >
    > Nie wiązałbym tej popularności z tym konkretnie artykułem. Przypuszczam nawet, że
    jeśli ktoś nie interesował się LISPem, to na ten artykuł w ogóle nie trafił.

    W takim razie z czym byś tę popularność wiązał?

    > Guido został zatrudniony w Google'u w 2005. Python był już wtedy bardzo dobrze
    rozpoznawalny, w top 10 (https://www.youtube.com/watch?v=Og847HVwRSI). I raczej nie
    był to efekt jakiegoś artykułu napisanego dla fanów LISPa.

    Sądzę, że wątpię. Python pojawił się na wykresie w roku 2001, tak więc niedługo po
    tym, jak Norvig zaczął go promować. I nie chodzi oczywiście o jeden artykuł. Chodzi o
    zastąpienie Common Lispa Pythonem w dydaktyce sztucznej inteligencji.

    > > Ale C++ nie jest jedynym językiem, dla którego istnieją dobre narzędzia.
    >
    > Tak. Ale nie zaproponowałeś żadnego innego, który by ten warunek spełniał.

    Tak konkretnie to zaproponowałem dwa: Racketa i Haskella.
    Racket jest moim faworytem jeżeli idzie o łatwość użycia i przenośność: można go
    łatwo zainstalować wraz z prostym w obsłudze IDE na najważniejszych platformach (tj.
    Windows, OS X i Linux) albo używać w przeglądarce bez instalacji
    (https://www.wescheme.org).

    Haskella trudniej zainstalować na Windowsie (choć też bez przesady), i nie ma "w
    pudełku" prostych w użyciu narzędzi, ale kompilator GHC zazwyczaj produkuje dobrze
    zoptymalizowany kod.

    > > I podejrzewam, że Graham ma w tym przypadku rację - bo koniec końców to jego
    produkt. I nawet jeżeli ocena języka programowania jest subiektywna, to jeżeli ktoś
    na przykład czerpie frustrację z używania jakiegoś języka, to raczej trudno się
    spodziewać, żeby zaszedł w nim dalej od kogoś, kto używa swojego języka z
    przyjemnością.
    >
    > To prawda. Ale ponieważ powstało wiele produktów, które osiągnęły sukces, to może
    być też tak, że istotnym składnikiem sukcesu nie jest wybór języka, tylko entuzjazm
    do jego używania.

    Może tak być. Dlatego stoję na stanowisku, że w miarę możliwości warto używać takich
    języków, które wzbudzają entuzjazm, a unikać takich, które powodują frustrację. (Co
    jest oczywiście cechą indywidualną)


  • 27. Data: 2019-12-16 20:02:05
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: Maciej Sobczak <s...@g...com>

    > > Akurat C++ jest dużo bardziej przenośny, niż Java, więc nie martwi mnie to
    zbytnio.
    >
    > Jeżeli Twoim targetem (np. biznesowym) jest Java, to powinno.

    Nie, bo Java będzie tylko podzbiorem targetów mojego modułu.

    > Język Ć jest zaś jeszcze bardziej przenośny, niż C++.

    Nie. Bo jeżeli zaczynasz traktować język jako źródło do translacji, to C++ też tak
    można wykorzystać (nota bene, pierwszy "kompilator" C++ to był translator do innego
    języka). Rozsądny podzbiór C++ da się translować na dowolny inny język imperatywny,
    zapewne również na język Ć.

    Oznacza to, że zarówno C++ jak i Ć można translować na coś innego, ale C++ można
    jeszcze kompilować na dowolną platformę bezpośrednio (i można robić to tak dobrze, że
    nie ma już motywacji do translowania C++ na inny język). Z tego wynika, że zakres
    zastosowań C++ jest większy, niż Ć.

    Czyli nie ma takiej rzeczy, którą można zrobić z Ć a której nie można zrobić z C++.
    Dlatego pytam o wartość dodaną. Nadal jej nie widzę.

    [Python]
    > W takim razie z czym byś tę popularność wiązał?

    Potrzebny był nowy Perl. Python wypełnił tą niszę proponując świeższą składnię, w
    szczególności bardziej atrakcyjną dla początkujących.

    > Sądzę, że wątpię. Python pojawił się na wykresie w roku 2001, tak więc niedługo po
    tym, jak Norvig zaczął go promować.

    Jeżeli objawem tej promocji był wspomniany przez Ciebie artykuł napisany dla
    dotychczasowych fanów LISPa, to ta promocja nie miała wpływu dokładnie na nic.

    > I nie chodzi oczywiście o jeden artykuł. Chodzi o zastąpienie Common Lispa Pythonem
    w dydaktyce sztucznej inteligencji.

    O, teraz ciekawiej. Ale sztuczna inteligencja stała się buzzwordem jeszcze później.
    Python rozpowszechnił się zupełnie bez wsparcia ze strony AI. Dzisiaj to (wzajemne)
    wsparcie jest bardzo widoczne, ale np. ja uczyłem się Pythona zanim ktokolwiek z
    mojego otoczenia zaczął w ogóle mówić o AI.

    Więc ponownie, nie wiązałbym ze sobą tych nurtów.

    Z Quory (bo akurat tam mi wyskoczyło):

    https://www.quora.com/Why-is-Python-so-popular-despi
    te-being-so-slow

    Na tej stronie słowa LISP i AI nie występują ani razu, więc chyba nikt z dyskutantów
    nie dostrzega związków Pythona z tymi dwoma.
    Jest natomiast wzmianka o zastosowaniach, które wcześniej były domeną właśnie Perla.

    [o dostępności dobrych narzędzi]
    > Tak konkretnie to zaproponowałem dwa: Racketa i Haskella.

    To jaki dobry generator kodu z UMLa polecasz, albo generatory serializatorów dla
    różnych standardów komunikacyjnych, albo porządny debugger (również zdalny), albo
    chociaż coś do automatycznej generacji dokumentacji z kodu (z diagramami)? Albo
    jakieś niezależne analizatory statyczne?

    > Racket jest moim faworytem jeżeli idzie o łatwość użycia i przenośność:

    Niech zgadnę - przenośność jeszcze mniejsza, niż w Javie?

    > można go łatwo zainstalować wraz z prostym w obsłudze IDE na najważniejszych
    platformach (tj. Windows, OS X i Linux)

    iOS, Android? Jakiś RTOS? Bare-metal?

    A jakbym chciał dla odmiany jakieś *trudne* w obsłudze IDE, to da radę?
    Bo czasem mogę chcieć.

    > albo używać w przeglądarce bez instalacji (https://www.wescheme.org).

    Czad. Ale czas, kiedy on-line'owy kompilator (albo interpreter) C++ robił wrażenie,
    już dawno minął.

    > Haskella trudniej zainstalować na Windowsie

    Wiem, próbowałem. Za to C++ mam w tylu różnych stanach skupienia, że sam nie
    pamiętam.

    [składnik subiektywny]
    > Może tak być. Dlatego stoję na stanowisku, że w miarę możliwości warto używać
    takich języków, które wzbudzają entuzjazm, a unikać takich, które powodują
    frustrację. (Co jest oczywiście cechą indywidualną)

    Tak.

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


  • 28. Data: 2019-12-16 21:53:13
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: g...@g...com

    W dniu poniedziałek, 16 grudnia 2019 20:02:06 UTC+1 użytkownik Maciej Sobczak
    napisał:
    > > > Akurat C++ jest dużo bardziej przenośny, niż Java, więc nie martwi mnie to
    zbytnio.
    > >
    > > Jeżeli Twoim targetem (np. biznesowym) jest Java, to powinno.
    >
    > Nie, bo Java będzie tylko podzbiorem targetów mojego modułu.

    O, ciekawe.
    Ile razy w życiu napisałeś moduł w C++ który miał być wołany z Javy?

    > > Język Ć jest zaś jeszcze bardziej przenośny, niż C++.
    >
    > Nie. Bo jeżeli zaczynasz traktować język jako źródło do translacji, to C++ też tak
    można wykorzystać (nota bene, pierwszy "kompilator" C++ to był translator do innego
    języka). Rozsądny podzbiór C++ da się translować na dowolny inny język imperatywny,
    zapewne również na język Ć.
    >
    > Oznacza to, że zarówno C++ jak i Ć można translować na coś innego, ale C++ można
    jeszcze kompilować na dowolną platformę bezpośrednio (i można robić to tak dobrze, że
    nie ma już motywacji do translowania C++ na inny język). Z tego wynika, że zakres
    zastosowań C++ jest większy, niż Ć.

    Jakoś nie podążam za argumentem. Ć można użyć wszędzie tam, gdzie można użyć C++, ale
    także tam, gdzie nie można, czyli np. na host-agnostic JVM. I z tego wynika, że
    zakres zastosowań C++ jest większy, niż Ć?

    > [Python]
    > > W takim razie z czym byś tę popularność wiązał?
    >
    > Potrzebny był nowy Perl. Python wypełnił tą niszę proponując świeższą składnię, w
    szczególności bardziej atrakcyjną dla początkujących.

    Rzeczywiscie, konkret. "Potrzebujemy nowego Perla". "Ale co jest nie tak ze starym
    Perlem? Ma przepastne repozytorium modułów CPAN"

    > > Sądzę, że wątpię. Python pojawił się na wykresie w roku 2001, tak więc niedługo
    po tym, jak Norvig zaczął go promować.
    >
    > Jeżeli objawem tej promocji był wspomniany przez Ciebie artykuł napisany dla
    dotychczasowych fanów LISPa, to ta promocja nie miała wpływu dokładnie na nic.

    Skąd wiesz?

    > Z Quory (bo akurat tam mi wyskoczyło):
    >
    > https://www.quora.com/Why-is-Python-so-popular-despi
    te-being-so-slow
    >
    > Na tej stronie słowa LISP i AI nie występują ani razu, więc chyba nikt z
    dyskutantów nie dostrzega związków Pythona z tymi dwoma.
    > Jest natomiast wzmianka o zastosowaniach, które wcześniej były domeną właśnie
    Perla.

    Wśród natłoku domorosłych teorii jedna odpowiedź się wydaje dość interesująca:

    "I've been using Python since 2000, and my first contact was probably in 1998.

    At that time Python was already a popular language in some circles. It was starting
    to see serious use as a language for system automation tasks. Some notable
    applications written in Python at that time included:
    - The original version of the Google crawler. [...]"

    > [o dostępności dobrych narzędzi]
    > > Tak konkretnie to zaproponowałem dwa: Racketa i Haskella.
    >
    > To jaki dobry generator kodu z UMLa polecasz, albo generatory serializatorów dla
    różnych standardów komunikacyjnych, albo porządny debugger (również zdalny), albo
    chociaż coś do automatycznej generacji dokumentacji z kodu (z diagramami)? Albo
    jakieś niezależne analizatory statyczne?

    Jeżeli idzie o dokumentację kodu, to Racket ma Scribble i całą potężną bibliotekę do
    generowania grafiki - wszystko w pakiecie. Z Haskellem jest podobnie - obsługuje
    funkcjonalność "literate programming" prosto z pudełka, a do tego można użyć bardzo
    eleganckiej biblioteki do tworzenia diagramów o nazwie Diagrams.
    Jeżeli idzie o statyczną analizę, to Haskell sam w sobie jest przepotężnym narzędziem
    do analizy statycznej, natomiast w Rackecie masz Typed/Racket oraz system kontraktów,
    jak również język Redex do tworzenia systemów typów.

    Jeżeli idze o generowanie kodu z UMLa, to raczej stronię od UMLa i wydaje mi się to
    raczej umierającym wymysłem.

    Jeżeli idzie o "generatory serializatorów dla różnych standardów komunikacyjnych", to
    nie bardzo wiem, o czym mówisz, ale w jakieś 3 sekundy znalazłem to:
    https://docs.racket-lang.org/generator/index.html
    i to:
    https://hackage.haskell.org/package/protocol-buffers

    > > można go łatwo zainstalować wraz z prostym w obsłudze IDE na najważniejszych
    platformach (tj. Windows, OS X i Linux)
    >
    > iOS, Android? Jakiś RTOS? Bare-metal?

    Nawet widziałem na Commodore 64

    > A jakbym chciał dla odmiany jakieś *trudne* w obsłudze IDE, to da radę?
    > Bo czasem mogę chcieć.

    Oczywiście, jest wtyczka do Emacsa.


  • 29. Data: 2019-12-17 19:19:51
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: Maciej Sobczak <s...@g...com>

    > > Nie, bo Java będzie tylko podzbiorem targetów mojego modułu.
    >
    > O, ciekawe.
    > Ile razy w życiu napisałeś moduł w C++ który miał być wołany z Javy?

    https://en.wikipedia.org/wiki/Java_Native_Access

    Również: https://www.teamdev.com/jniwrapper

    [Ć]
    > Jakoś nie podążam za argumentem. Ć można użyć wszędzie tam, gdzie można użyć C++,
    ale także tam, gdzie nie można, czyli np. na host-agnostic JVM.

    Host-agnostic JVM? A co to takiego?
    Kazdy JVM jaki znam, jest natywnym, nieprzenośnym programem.

    > I z tego wynika, że zakres zastosowań C++ jest większy, niż Ć?

    Jeżeli można translować w obu kierunkach (a w sensownym podzbiorze można), to już na
    tej podstawie można powiedzieć, że zakres jest taki sam. A skoro C++ można
    *dodatkowo* kompilować bezpośrednio na docelową platformę (a o kompilatorach Ć nie
    słyszałem), to jest to dodatkowa cecha, której Ć nie ma. Więc zakres zastosowań C++
    jest większy.

    [Python]
    > Rzeczywiscie, konkret. "Potrzebujemy nowego Perla". "Ale co jest nie tak ze starym
    Perlem? Ma przepastne repozytorium modułów CPAN"

    Gdyby ze starym Perlem było wszystko OK, to Python nie miałby przestrzeni do
    zagospodarowania. W szczególności największym problemem starego Perla było to, że był
    stary. Ta branża tego nie lubi.
    A skoro ludzie używają Pythona tam, gdzie wcześniej używaliby Perla, to najwyraźnie
    ta zmiana kulturowa była potrzebna (i udana).

    > > Jeżeli objawem tej promocji był wspomniany przez Ciebie artykuł napisany dla
    dotychczasowych fanów LISPa, to ta promocja nie miała wpływu dokładnie na nic.
    >
    > Skąd wiesz?

    Bo artykuł był skierowany do użytkowników LISPa - i gdyby tak było, to liczba
    użytkowników Pythona mogłaby co najwyżej osiągnąć liczbę użytkowników LISPa i to
    zakładając, że wszyscy byliby tak zachwyceni, że 100% tej populacji by zmieniło
    język.

    Mam jednak wrażenie, że w czasie jak ten pan pisał ten artykuł, to Python już był
    dalej w wyścigu. I właśnie dlatego w ogóle ten artykuł napisał.

    > Wśród natłoku domorosłych teorii jedna odpowiedź się wydaje dość interesująca:
    >
    > "I've been using Python since 2000, and my first contact was probably in 1998.
    >
    > At that time Python was already a popular language in some circles. It was starting
    to see serious use as a language for system automation tasks. Some notable
    applications written in Python at that time included:
    > - The original version of the Google crawler. [...]"

    Tak. Python był już tak popularny, że został tam użyty. A potem potem porzucony na
    rzecz lepszych rozwiązań.
    Ale nie nazywałbym tego "inwestowaniem w Pythona", co sugerowałeś. Dla mnie
    inwestowanie w Pythona zaczęło się wraz z zatrudnieniem Guido. Czyli właściwie wtedy,
    gdy już nie trzeba było w Pythona inwestować. To był (spóźniony) ruch marketingowy i
    tyle.

    BTW - YouTube to też Python (oczywiście nie liczymy streamingu). Przynajmniej kiedyś
    tak było.

    > [o dostępności dobrych narzędzi]
    [...]

    Ładne przykłady, chociaż w kontekście komunikacji bardziej myślałem o standardach
    takich jak ASN.1 albo OMG (CORBA, DDS, itd.), natomiast w temacie analizatorów
    statycznych zdecydowanie nie miałem na myśli własnego systemu typów, tylko narzędzia
    takie jak LDRA, Parasoft, Klocwork, itp.

    > Jeżeli idze o generowanie kodu z UMLa, to raczej stronię od UMLa i wydaje mi się to
    raczej umierającym wymysłem.

    Nic podobnego. W ogóle nie chce umrzeć.

    No i dalej nic nie ustaliliśmy.

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


  • 30. Data: 2019-12-18 17:42:48
    Temat: Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
    Od: Roman Tyczka <n...@b...no>

    On Tue, 17 Dec 2019 10:19:51 -0800 (PST), Maciej Sobczak wrote:

    >> I z tego wynika, że zakres zastosowań C++ jest większy, niż Ć?
    >
    > Jeżeli można translować w obu kierunkach (a w sensownym podzbiorze
    > można), to już na tej podstawie można powiedzieć, że zakres jest taki
    > sam. A skoro C++ można *dodatkowo* kompilować bezpośrednio na docelową
    > platformę (a o kompilatorach Ć nie słyszałem), to jest to dodatkowa
    > cecha, której Ć nie ma. Więc zakres zastosowań C++ jest większy.

    Dziwna ta logika.
    W ten sam sposób JS jest wg tej teorii lepszy od TS, a przecież to
    nieprawda. TS dodaje statyczne typowanie, interfejsy, OOP i kilka innych
    ficzerów. Ale ostatecznie transpiluje się go do JS, więc jest gorszy niż
    JS?

    --
    pozdrawiam
    Roman Tyczka

strony : 1 . 2 . [ 3 ] . 4 . 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: