Thread View: pl.comp.programming
45 messages
45 total messages
Started by osobliwy nick
Fri, 06 Dec 2019 22:25
Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: osobliwy nick
Date: Fri, 06 Dec 2019 22:25
Date: Fri, 06 Dec 2019 22:25
23 lines
2112 bytes
2112 bytes
Chcę rozwiązywać równania typu: a*2^(x+y)+b*g^y = 1 rozszerzonym algorytmem euklidesa dla losowych x+y=128, będących liczbami naturalnymi z zerem. Czy ktoś ma pomysł jak ustalić ile to może średnio zająć komputerowi dla całkowitego "g" wynoszącego powiedzmy 5? Dodam tylko, że nie umiem programować, więc nie jestem w stanie napisać sobie żadnych testów (dopiero rozważam zlecenie napisania komuś programu). Tutaj jest przykładowa implementacja rozszerzonego algorytmu euklidesa: http://www.algorytm.edu.pl/rozszerzony-algorytm-euklidesa.html Niestety nie wiem jak policzyć średni przypadek algorytmu. A kombinacji x+y równych 128 jest 128: 0+128=128 1+127=128 2+126=128 ... 64+64=128 65+65=128 ... 128+0=128 Więc do policzenia byłoby 128 przypadków użycia tego rozszerzonego algorytmu euklidesa. Chyba, że można to oszacować jak szybciej?
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Sat, 07 Dec 2019 19:58
Date: Sat, 07 Dec 2019 19:58
16 lines
2325 bytes
2325 bytes
W dniu piątek, 6 grudnia 2019 23:25:56 UTC+1 użytkownik osobliwy nick napisał: > Chcę rozwiązywać równania typu: > > a*2^(x+y)+b*g^y = 1 > > rozszerzonym algorytmem euklidesa dla losowych x+y=128, będących liczbami naturalnymi z zerem. Czy ktoś ma pomysł jak ustalić ile to może średnio zająć komputerowi dla całkowitego "g" wynoszącego powiedzmy > 5? Tak. Napisać program i to zmierzyć. (Jeżeli dziedzina jest mała, to można sobie stabelaryzować wynik, i wówczas "wyliczenie" zajmie tyle, ile wydobycie danych z tablicy.) > Dodam tylko, że nie umiem programować, więc nie jestem w stanie napisać sobie żadnych testów (dopiero rozważam zlecenie napisania komuś programu). A dlaczego nie rozważysz "nauczenia się programowania"? Brzmi to dość górnolotnie, ale nauczenie się jakiegoś języka w stopniu umożliwiającym Ci realizację rzeczy, o które pytasz, raczej nie zajmie Ci więcej czasu, niż napisanie takiego posta.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: osobliwy nick
Date: Sat, 07 Dec 2019 20:44
Date: Sat, 07 Dec 2019 20:44
23 lines
5261 bytes
5261 bytes
W dniu sobota, 7 grudnia 2019 20:58:32 UTC+1 użytkownik godek...@gmail.com napisał: > W dniu piątek, 6 grudnia 2019 23:25:56 UTC+1 użytkownik osobliwy nick napisał: > > Chcę rozwiązywać równania typu: > > > > a*2^(x+y)+b*g^y = 1 > > > > rozszerzonym algorytmem euklidesa dla losowych x+y=128, będących liczbami naturalnymi z zerem. Czy ktoś ma pomysł jak ustalić ile to może średnio zająć komputerowi dla całkowitego "g" wynoszącego powiedzmy > > 5? > > Tak. Napisać program i to zmierzyć. > > (Jeżeli dziedzina jest mała, to można sobie stabelaryzować wynik, i wówczas "wyliczenie" zajmie tyle, ile wydobycie danych z tablicy.) > > > Dodam tylko, że nie umiem programować, więc nie jestem w stanie napisać sobie żadnych testów (dopiero rozważam zlecenie napisania komuś programu). > > A dlaczego nie rozważysz "nauczenia się programowania"? > Brzmi to dość górnolotnie, ale nauczenie się jakiegoś języka w stopniu umożliwiającym Ci realizację rzeczy, o które pytasz, raczej nie zajmie Ci więcej czasu, niż napisanie takiego posta. Chodzi to za mną od dawna, ale to osobny temat. Miałem podstawy C na studiach, ale zapomniałem właściwie wszystkiego, nie byłem też szczególnie zdolnym studentem, jednocześnie nie miałem też szczególnie zdolnych prowadzących zajęcia (a to wiem od kolegów przybyłych do nas z Politechniki, studiujących jednocześnie inne kierunki, którzy krytykowali sposób nauczania na moim kierunku). W ostatnich latach zaś każdą wolną chwilę poświęcałem na naukę czegoś zupełnie innego - rynków finansowych i tradingu. I tak odkładałem to programowanie przez lata. Jednocześnie już na etapie analizy i testowania strategii tradingowych potrzebowałem... tak - umieć programować. Zleciłem wówczas dosyć szerokie testy i napisanie różnych programów pewnemu programiście. Ostatecznie zderzyliśmy się z teorią chaosu i efektem motyla - bo wykresy kursów łudząco przypominają błądzenie losowe (proces Wienera) i jest masa naukowych teorii i modeli traktująca o efektywności rynków finansowych i zachowaniu się kursu. Naiwni wtedy byliśmy, ale przynajmniej zyskałem fajnego znajomego. Wracając do tematu. Może to jest ten moment. Na pewno masz rację, że powinienem to zrobić. Zwłaszcza, że poznałem z czym to się je i jakieś tam programy kilka lat temu nawet pisałem (na studiach i po nich). A już nie pierwszy raz zlecam komuś pisanie jakiegoś programu. Kiedyś zleciłem napisanie programu, który będzie poszukiwał liczb Crandalla, które nie będą liczbami Wieferich (problem z zakresu matematyki teoretycznej). Potrafiłem zostawić komputer odpalony na tydzień czasu, bo wzór, który to liczył przebiegał po ogromnej liczbie wariacji wielu zmiennych. Niczego niestety nie znalazłem. Dzisiaj jednak mam inne już nieco dalej idące plany. Docelowo chcę założyć firmę, startup, która ma stworzyć program szyfrujący (na podstawie zaproponowanego przez mnie algorytmu) i opatentować to rozwiązanie, czy to w postaci implementacji, czy ogólnie algorytmu. Nie sądzę, że będę w stanie zrealizować ten plan samodzielnie, jako początkujący programista. Tutaj potrzeba ludzi, którzy robią to od lat, a najlepiej takich z doświadczeniem w kryptografii. I wobec konieczności zlecenia napisania takiego programu (a na początek testów), czy stworzenia całego oprogramowania, uczenie się programowania samodzielnie jest trochę jak zakładanie własnego zespołu kolarskiego i jednoczesne uczenie się jazdy na rowerze. Wiadomo, że prezes, czy sponsor zespołu sam nigdy na takiej kolarzówce nie będzie się tam ścigał razem z zawodnikami, jak bardzo by się nie starał.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Sat, 07 Dec 2019 21:38
Date: Sat, 07 Dec 2019 21:38
41 lines
7127 bytes
7127 bytes
W dniu sobota, 7 grudnia 2019 21:44:27 UTC+1 użytkownik osobliwy nick napisał: > W dniu sobota, 7 grudnia 2019 20:58:32 UTC+1 użytkownik godek...@gmail.com napisał: > > W dniu piątek, 6 grudnia 2019 23:25:56 UTC+1 użytkownik osobliwy nick napisał: > > > Chcę rozwiązywać równania typu: > > > > > > a*2^(x+y)+b*g^y = 1 > > > > > > rozszerzonym algorytmem euklidesa dla losowych x+y=128, będących liczbami naturalnymi z zerem. Czy ktoś ma pomysł jak ustalić ile to może średnio zająć komputerowi dla całkowitego "g" wynoszącego powiedzmy > > > 5? > > > > Tak. Napisać program i to zmierzyć. > > > > (Jeżeli dziedzina jest mała, to można sobie stabelaryzować wynik, i wówczas "wyliczenie" zajmie tyle, ile wydobycie danych z tablicy.) > > > > > Dodam tylko, że nie umiem programować, więc nie jestem w stanie napisać sobie żadnych testów (dopiero rozważam zlecenie napisania komuś programu). > > > > A dlaczego nie rozważysz "nauczenia się programowania"? > > Brzmi to dość górnolotnie, ale nauczenie się jakiegoś języka w stopniu umożliwiającym Ci realizację rzeczy, o które pytasz, raczej nie zajmie Ci więcej czasu, niż napisanie takiego posta. > > Chodzi to za mną od dawna, ale to osobny temat. Miałem podstawy C na studiach, ale zapomniałem właściwie wszystkiego, nie byłem też szczególnie zdolnym studentem, jednocześnie nie miałem też szczególnie zdolnych prowadzących zajęcia (a to wiem od kolegów przybyłych do nas z Politechniki, studiujących jednocześnie inne kierunki, którzy krytykowali sposób nauczania na moim kierunku). W ostatnich latach zaś każdą wolną chwilę poświęcałem na naukę czegoś zupełnie innego - rynków finansowych i tradingu. I tak odkładałem to programowanie przez lata. Jednocześnie już na etapie analizy i testowania strategii tradingowych potrzebowałem... tak - umieć programować. Zleciłem wówczas dosyć szerokie testy i napisanie różnych programów pewnemu programiście. Ostatecznie zderzyliśmy się z teorią chaosu i efektem motyla - bo wykresy kursów łudząco przypominają błądzenie losowe (proces Wienera) i jest masa naukowych teorii i modeli traktująca o efektywności rynków finansowych i zachowaniu się kursu. Naiwni wtedy byliśmy, ale przynajmniej zyskałem fajnego znajomego. > > Wracając do tematu. Może to jest ten moment. Na pewno masz rację, że powinienem to zrobić. Zwłaszcza, że poznałem z czym to się je i jakieś tam programy kilka lat temu nawet pisałem (na studiach i po nich). A już nie pierwszy raz zlecam komuś pisanie jakiegoś programu. Kiedyś zleciłem napisanie programu, który będzie poszukiwał liczb Crandalla, które nie będą liczbami Wieferich (problem z zakresu matematyki teoretycznej). Potrafiłem zostawić komputer odpalony na tydzień czasu, bo wzór, który to liczył przebiegał po ogromnej liczbie wariacji wielu zmiennych. Niczego niestety nie znalazłem. > > Dzisiaj jednak mam inne już nieco dalej idące plany. Docelowo chcę założyć firmę, startup, która ma stworzyć program szyfrujący (na podstawie zaproponowanego przez mnie algorytmu) i opatentować to rozwiązanie, czy to w postaci implementacji, czy ogólnie algorytmu. Nie sądzę, że będę w stanie zrealizować ten plan samodzielnie, jako początkujący programista. Tutaj potrzeba ludzi, którzy robią to od lat, a najlepiej takich z doświadczeniem w kryptografii. I wobec konieczności zlecenia napisania takiego programu (a na początek testów), czy stworzenia całego oprogramowania, uczenie się programowania samodzielnie jest trochę jak zakładanie własnego zespołu kolarskiego i jednoczesne uczenie się jazdy na rowerze. Wiadomo, że prezes, czy sponsor zespołu sam nigdy na takiej kolarzówce nie będzie się tam ścigał razem z zawodnikami, jak bardzo by się nie starał. Jest taka książka, "Od dobrego do wielkiego", w której pojawia się koncepcja "przywódcy 5 poziomu". Dziwne nazwy na bok, chodzi o to, że autor przeanalizował wiele firm, które odniosło spektakularny sukces, i mu wyszło, że najlepsi przywódcy byli ekspertami w dziedzinie, w której działała firma. (Może brzmi to trywialnie, ale wiele firm zatrudnia jako liderów "etatowych menadżerów", którzy "znają się tylko na zarządzaniu" i mają bardzo niewielką wiedzę dziedzinową). W moim odczuciu programowanie dobrze uczy trzeźwości w odfiltrowywaniu magicznego myślenia od tego, co jest rzeczywiście możliwe do wykonania. Zwłaszcza te pytania, które zadajesz, po prostu się proszą o to, żebyś to sprawdził samodzielnie. To dobry pretekst, żeby przysiąść i odświeżyć sobie wiedzę ze studiów. To jest naprawdę na wyciągnięcie ręki. Co do "niezbyt zdolnych prowadzących zajęcia", to nie jest to dobra wymówka. Ja większości zajęć z polibudy też nie wspominam jakoś rewelacyjnie - na uniwersytecie studiowało mi się dużo przyjemniej (zwłaszcza filozofię, ale nawet na infie nie było tak źle). Ale to na polibudzie mieliśmy jednego profesora, który w kółko mówił, że "albo ktoś jest samoukiem, albo nieukiem". Nikt Cię niczego nie nauczy. Sam musisz się nauczyć. Dobry nauczyciel może tylko stworzyć okazję do zainteresowania się przedmiotem. Dlatego - jasne - dobrze by było, żebyś znalazł sobie jakiegoś magika od optymalizacji programu pod konkretny sprzęt, bo tutaj jest dużo szczególików, których nie powinieneś musieć poznawać. Ale napisanie programu w C czy chociaż Pythonie powinieneś mieć w małym palcu, bo to są proste rzeczy. Python nawet wspiera duże liczby, więc w przeciwieństwie do C nie jesteś ograniczony rozmiarem rejestrów.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Sun, 08 Dec 2019 19:24
Date: Sun, 08 Dec 2019 19:24
15 lines
2680 bytes
2680 bytes
> > Dodam tylko, że nie umiem programować, > > A dlaczego nie rozważysz "nauczenia się programowania"? Przychylam się do tej sugestii. Wygląda na to, że potrafisz racjonalnie analizować a nawet skonstruować algorytm obliczenia czegoś. Właściwie od tego miejsca do napisania programu, który demonstruje/testuje Twoje pomysły jest tylko prosty krok rzemieślniczy. Możesz się nawet zdziwić gdy zobaczysz, że prezycyjny opis algorytmu jest łatwiejszy w jakimś języku programowania, niż w języku naturalnym - a przecież zlecając komuś napisanie programu musiałbyś mu najpierw wytłumaczyć, co ma napisać. Więc po co sobie utrudniać? Oczywiście możesz sobie zatrudnić kiedyś specjalistów od wydziwiania i różnego rodzaju oszczędności (czasu, energii elektrycznej, kosztów produkcji/wdrożenia, itd.), ale zdolność napisania referencyjnej implementacji i tak będzie Ci potrzebna, żebyś mógł być dla swojego zespołu liderem a nie tylko szefem. Więc do dzieła. Może nawet faktycznie Python będzie tu racjonalnym wyborem - dla Ciebie. Ale biorąc pod uwagę cel, który chcesz osiągnąć, nie zatrudniaj programistów, którzy znają tylko Pythona. -- Maciej Sobczak * http://www.inspirel.com
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: osobliwy nick
Date: Wed, 11 Dec 2019 03:24
Date: Wed, 11 Dec 2019 03:24
9 lines
3311 bytes
3311 bytes
> Jest taka książka, "Od dobrego do wielkiego", w której pojawia się koncepcja "przywódcy 5 poziomu". Dziwne nazwy na bok, chodzi o to, że autor przeanalizował wiele firm, które odniosło spektakularny sukces, i mu wyszło, że najlepsi przywódcy byli ekspertami w dziedzinie, w której działała firma. Pytanie, czy firma tworzącą program szyfrujący powinna mieć na czele bardziej programistę, czy specjalistę od algorytmów szyfrujących. To rzadko idzie w parze, aczkolwiek wiadomo, że najlepiej, aby potrafił jedno i drugie. > Co do "niezbyt zdolnych prowadzących zajęcia", to nie jest to dobra wymówka. > Ja większości zajęć z polibudy też nie wspominam jakoś rewelacyjnie - na uniwersytecie studiowało mi się dużo przyjemniej (zwłaszcza filozofię, ale nawet na infie nie było tak źle). > Ale to na polibudzie mieliśmy jednego profesora, który w kółko mówił, że "albo ktoś jest samoukiem, albo nieukiem". Nikt Cię niczego nie nauczy. Sam musisz się nauczyć. Dobry nauczyciel może tylko stworzyć okazję do zainteresowania się przedmiotem. To wiadomo. Rzecz w tym, że wówczas po prostu zniechęciłem się nieco do programowania. Nauka szła ciężko i prowadzący w tym szczególnie nie pomagali (byli opryskliwi). Co więcej wszyscy uczestnicy zajęć byli już po jakichś kursach programowania na swoich drugich kierunkach, które studiowali na Politechnice, więc łapali wszystko w lot. Ja natomiast stwierdziłem, że chyba nie jestem powołany do programowania, skoro tak kiepsko mi idzie w porównaniu z nimi. Fakt, że włożyłem mimo wszystko wówczas w to niewiele pracy, raczej niezbędne minimum.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: osobliwy nick
Date: Wed, 11 Dec 2019 03:40
Date: Wed, 11 Dec 2019 03:40
21 lines
3797 bytes
3797 bytes
> Przychylam się do tej sugestii. > > Wygląda na to, że potrafisz racjonalnie analizować a nawet skonstruować algorytm obliczenia czegoś. Właściwie od tego miejsca do napisania programu, który demonstruje/testuje Twoje pomysły jest tylko prosty krok rzemieślniczy. Możesz się nawet zdziwić gdy zobaczysz, że prezycyjny opis algorytmu jest łatwiejszy w jakimś języku programowania, niż w języku naturalnym - a przecież zlecając komuś napisanie programu musiałbyś mu najpierw wytłumaczyć, co ma napisać. > Więc po co sobie utrudniać? Miałem taki moment powrotu do programowania. Napisałem nawet pierwszy program od lat. Chodziło o ten problem: http://cpp0x.pl/forum/temat/?id=22559 Poległem jednak wtedy. Napisanie tego było dla mnie nie do przeskoczenia, a jak zobaczyłem kod, którego oczywiście nie rozumiałem, który ktoś napisał ot tak, po krótkim czasie od ręki, stwierdziłem, że raczej żadnym rozsądnym czasie nie osiągnę takiego poziomu. Ostatecznie na podstawie tego co mi tam zasugerowano zleciłem komuś odpłatnie napisanie tego programu. Programista z tego co pamiętam i tak napisał cały kod od początku po swojemu, ale był on nie mniej złożony od tego, który podpowiadano mi w wątku. I wtedy z poziomu dosyć wysokiej motywacji popadłem w marazm i zostawiłem programowanie na kolejne lata. > Oczywiście możesz sobie zatrudnić kiedyś specjalistów od wydziwiania i różnego rodzaju oszczędności (czasu, energii elektrycznej, kosztów produkcji/wdrożenia, itd.), ale zdolność napisania referencyjnej implementacji i tak będzie Ci potrzebna, żebyś mógł być dla swojego zespołu liderem a nie tylko szefem. No tak, masz rację. > Więc do dzieła. Może nawet faktycznie Python będzie tu racjonalnym wyborem - dla Ciebie. Ale biorąc pod uwagę cel, który chcesz osiągnąć, nie zatrudniaj programistów, którzy znają tylko Pythona. Ok. Zmotywowaliście mnie. Będę myślał w takim razie o powrocie do tematu programowania. A właściwie o zaczęciu od początku, bo pomimo, że wiem co to programowanie, jak to się robi itd., to moje praktycznie umiejętności są znikome. Co do języka myślałem o C++, bo często mam do policzenia jakieś matematyczne rzeczy, a ten język kojarzy mi się z takimi inżynierskimi i matematycznymi zastosowaniami. Poza tym łatwo znaleźć materiały na jego temat.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Wed, 11 Dec 2019 11:53
Date: Wed, 11 Dec 2019 11:53
88 lines
5705 bytes
5705 bytes
W dniu środa, 11 grudnia 2019 04:40:28 UTC+1 użytkownik osobliwy nick napisał:
> > Przychylam się do tej sugestii.
> >
> Ok. Zmotywowaliście mnie. Będę myślał w takim razie o powrocie do tematu programowania. A właściwie o zaczęciu od początku, bo pomimo, że wiem co to programowanie, jak to się robi itd., to moje praktycznie umiejętności są znikome. Co do języka myślałem o C++, bo często mam do policzenia jakieś matematyczne rzeczy, a ten język kojarzy mi się z takimi inżynierskimi i matematycznymi zastosowaniami. Poza tym łatwo znaleźć materiały na jego temat.
Ja osobiście raczej bym odradzał C++ do Twoich zastosowań.
Jest to język nadmiernie skomplikowany, i nawet nie za dobrze radzi sobie z liczbami (domyślnie implementuje arytmetykę modulo 2^32 albo 2^64)
Raczej bym polecał albo Racket, bo jest bardzo prosty i jest dla niego dużo dobrych materiałów dydaktycznych, a do tego wspiera od razu arytmetykę o dowolnej precyzji oraz liczby wymierne. Spośród materiałów dydaktycznych jest książka "How To Design Programs", dostępna za darmo tutaj (jakościowo o rzędy wielkości lepsza od jakichkolwiek materiałów o C++, z jakimi miałem styczność):
https://htdp.org/2019-02-24/
Na podstawie tej książki powstał kurs o systematycznym projektowaniu programów:
https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w
Jest też nieco starsza, ale wciąż nie chcąca się zestarzeć książka "Structure and Interpretation of Computer Programs" (wydana swego czasu też po Polsku przez WNT jako "Struktura i Interpretacja Programów Komputerowych"), udostępniona za darmo na stronie MIT:
https://mitpress.mit.edu/sites/default/files/sicp/index.html
Kurs, na potrzeby którego książka została opracowana, również można znaleźć na youtubie:
https://www.youtube.com/watch?v=-J_xL4IGhJA&list=PLE18841CABEA24090
Warto ewentualnie rozważyć język Haskell, który jest bardziej złożony, ale ma dość wydajną implementacje, i jest też sobie w stanie poradzić z dużymi liczbami (i pod względem składni mocno przypomina klasyczną notację matematyczną).
Rozwiązanie podlinkowanego przez Ciebie przykładu wyglądałoby tak.
Najpierw definiujemy sobie iloczyn kartezjański listy list, żeby móc generować ciągi wartośći x1, ..., xN:
cartprod [] = [[]]
cartprod (xs:xss) = [x:ys | x <- xs, ys <- cartprod xss]
wyprowadzenie powyższej definicji możesz znaleźć tutaj:
http://myhaskelljournal.com/cartesian-product-of-lists/
następnie definiujemy produkt kartezjański
cartpow l n = cartprod $ take n $ repeat l
gdzie (repeat l) tworzy nieskończoną listę powtórzeń listy l, zaś take n bierze tylko n początkowych elementów.
Ponieważ jest u Ciebie warunek, że
x1 >= x2 >= ... >= xN
to możemy wybrać tylko te punkty z iloczynu kartezjańskiego, których wartościami są nierosnące ciągi:
nonasc (x:y:zs) = x >= y && nonasc (y:zs)
nonasc _ = True
Wreszcie, funkcja budująca zbiory punktów [x1, ..., xN] może mieć postać:
dom x n = [p | p <- (cartpow [0 .. x] n), nonasc p]
czyli zbiór wszystkich punktów z potęgi kartezjańskiej, których kolejne współrzędne tworzą ciąg nierosnący.
Można łatwo sprawdzić, że np. (dom 3 2) da nam wartość
[[0,0],[1,0],[1,1],[2,0],[2,1],[2,2],[3,0],[3,1],[3,2],[3,3]]
I teraz chcemy znaleźć elementy, które spelniają Twoje kryterium.
Żeby Haskell obsłużył liczby wymierne, trzeba załadować moduł Data.Ratio:
import Data.Ratio
Operator dzielenia wymiernego liczb całkowitych jest wówczas wyrażany symbolem %.
Pozwala to zdefiniować nam zbiór interesujących Cię liczb jako:
ws x y p = [(sum [(p^xn)%(2^xn) | xn <- seq]) * ((2^(y-1))%(2^(x+y)-p^y))
| seq <- (dom x (y-1))]
i wtedy możemy sprawdzić, że wyrażenie (ws 3 3 3) da nam listę
[8 % 37,
10 % 37,
12 % 37,
13 % 37,
15 % 37,
18 % 37,
35 % 74,
39 % 74,
45 % 74,
27 % 37]
Jest to inny zbiór od tego, który podałeś w swoim drugim poście, więc możliwe, że źle zrozumiałem specyfikację.
W każdym razie "rozmawiając" sobie z interpreterem Racketa albo Haskella, możesz dość łatwo przeszukać interesujące Cię dziedziny.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Wed, 11 Dec 2019 19:46
Date: Wed, 11 Dec 2019 19:46
22 lines
2415 bytes
2415 bytes
> Ja osobiście raczej bym odradzał C++ do Twoich zastosowań. [...] A ja bym nie odradzał, bo jeśli pomysł ma ostatecznie zostać skomercjalizowany, to *nieuniknionym* targetem będzie właśnie C++. Więc jeśli jest już entuzjazm do C++ (w odróżnieniu do wspomnianego Pythona), to nie ma powodu, żeby z niego rezygnować. > Raczej bym polecał albo Racket, [...] > Warto ewentualnie rozważyć język Haskell, [...] No jednak nie powstrzymałeś się. :-) W takim razie obowiązkowe: https://www.wolfram.com/broadcast/video.php?c=362&v=1049 W temacie eksploracji zagadnień matematycznych Wolfram nie ma merytorycznej konkurencji. Ale przecież już o tym było. :-) -- Maciej Sobczak * http://www.inspirel.com
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Wed, 11 Dec 2019 20:47
Date: Wed, 11 Dec 2019 20:47
9 lines
2215 bytes
2215 bytes
W dniu środa, 11 grudnia 2019 20:46:36 UTC+1 użytkownik Maciej Sobczak napisał: > > Ja osobiście raczej bym odradzał C++ do Twoich zastosowań. > [...] > > A ja bym nie odradzał, bo jeśli pomysł ma ostatecznie zostać skomercjalizowany, to *nieuniknionym* targetem będzie właśnie C++. > > Więc jeśli jest już entuzjazm do C++ (w odróżnieniu do wspomnianego Pythona), to nie ma powodu, żeby z niego rezygnować. C++ to język, na którym niestety łatwo się sparzy. A jego nieuniknioność to raczej mit. (Jest np. firma tradingowa Jane Street, która do swoich zastosowań wymagających duźej wydajności używa języka OCaml. A Mozilla konsekwentnie zastępuje C++a w Firefoxie Rustem)
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Roman Tyczka
Date: Thu, 12 Dec 2019 08:59
Date: Thu, 12 Dec 2019 08:59
23 lines
2172 bytes
2172 bytes
On Sat, 7 Dec 2019 13:38:59 -0800 (PST), godek.maciek@gmail.com wrote: > Jest taka książka, "Od dobrego do wielkiego", w której pojawia się > koncepcja "przywódcy 5 poziomu". Dziwne nazwy na bok, chodzi o to, że > autor przeanalizował wiele firm, które odniosło spektakularny sukces, i > mu wyszło, że najlepsi przywódcy byli ekspertami w dziedzinie, w której > działała firma. > > (Może brzmi to trywialnie, ale wiele firm zatrudnia jako liderów > "etatowych menadżerów", którzy "znają się tylko na zarządzaniu" i mają > bardzo niewielką wiedzę dziedzinową). > > W moim odczuciu programowanie dobrze uczy trzeźwości w odfiltrowywaniu > magicznego myślenia od tego, co jest rzeczywiście możliwe do wykonania. 100% racji i celnie ujęte, szkoda, że w praktyce rzadko się to spotyka. btw a książkę o której wspomniałeś już sobie zamówiłem, dzięki za cynk, wydaje się ciekawą pozycją -- pozdrawiam Roman Tyczka
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Thu, 12 Dec 2019 18:25
Date: Thu, 12 Dec 2019 18:25
19 lines
3208 bytes
3208 bytes
> C++ to język, na którym niestety łatwo się sparzy. Albo odniesie sukces, podobny do wielu innych sukcesów w C++. > A jego nieuniknioność to raczej mit. Z tego co zrozumiałem, kolega chce zrobić jakiś algorytm. Więc zapewne będzie chciał, żeby jego implementacja była możliwa do użycia w jak największej liczbie różnych kontekstów - czy to poprzez pluginy, czy jako biblioteki do załadowania w innym języku, itp. Najpowszechniejszym formatem takich modułów są biblioteki z interfejsem w C, najlepiej bez narzucania się z obcym run-timem (np. ładowanie modułu w Javie do programu w .NET to głupi pomysł, ale moduł w C++ można załadować zarówno do Javy jak i do .NET). Nieuniknioność C++ wynika z tego, że spełniając te warunki, jest jednocześnie dobrze znanym a w porównaniu do gołego C ma dodatkowe cechy, które sprawiają, że w takich właśnie zastosowaniach jest obiektywnie lepszy. > Jest np. firma tradingowa Jane Street, która do swoich zastosowań wymagających duźej wydajności używa języka OCaml. A Mozilla konsekwentnie zastępuje C++a w Firefoxie Rustem Brawo oni. Ale uwaga: nie da się tych rzeczy wykorzystać gdzie indziej, więc nie nadają się do komercjalizacji same z siebie. Kontrprzykład: TensorFlow, chyba najpowszechniej wykorzystywany framework do machine learningu, jest napisany w C++. Dzięki tym cechom, o których napisałem powyżej, większość ludzi korzystających z tego np. w Pythonie nawet o tym nie wie. I nie musi. I właśnie to jest źródłem sukcesu tego frameworku. -- Maciej Sobczak * http://www.inspirel.com
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Thu, 12 Dec 2019 22:04
Date: Thu, 12 Dec 2019 22:04
32 lines
4693 bytes
4693 bytes
W dniu czwartek, 12 grudnia 2019 19:25:38 UTC+1 użytkownik Maciej Sobczak napisał: > > C++ to język, na którym niestety łatwo się sparzy. > > Albo odniesie sukces, podobny do wielu innych sukcesów w C++. > > > A jego nieuniknioność to raczej mit. > > Z tego co zrozumiałem, kolega chce zrobić jakiś algorytm. Więc zapewne będzie chciał, żeby jego implementacja była możliwa do użycia w jak największej liczbie różnych kontekstów - czy to poprzez pluginy, czy jako biblioteki do załadowania w innym języku, itp. Najpowszechniejszym formatem takich modułów są biblioteki z interfejsem w C, najlepiej bez narzucania się z obcym run-timem (np. ładowanie modułu w Javie do programu w .NET to głupi pomysł, ale moduł w C++ można załadować zarówno do Javy jak i do .NET). Mam kolegę, który tworzy język programowania Ć: https://github.com/pfusik/cito Programy nim napisane można tłumaczyć do C, C++, C#, Javy, JavaScriptu, i zdaje się że nawet D i Perla. Można użyć. > Nieuniknioność C++ wynika z tego, że spełniając te warunki, jest jednocześnie dobrze znanym a w porównaniu do gołego C ma dodatkowe cechy, które sprawiają, że w takich właśnie zastosowaniach jest obiektywnie lepszy. Być może. Nie zmienia to jednak faktu, że C++ jest językiem bardzo złożonym, i że jego złożoność w dużej mierze wynika z zaszłości historycznych, które osobę nastawioną na konkretne cele nie będą szczególnie interesować, a mogą łatwo zniechęcić. > > Jest np. firma tradingowa Jane Street, która do swoich zastosowań wymagających duźej wydajności używa języka OCaml. A Mozilla konsekwentnie zastępuje C++a w Firefoxie Rustem > > Brawo oni. Ale uwaga: nie da się tych rzeczy wykorzystać gdzie indziej, więc nie nadają się do komercjalizacji same z siebie. > > Kontrprzykład: TensorFlow, chyba najpowszechniej wykorzystywany framework do machine learningu, jest napisany w C++. Dzięki tym cechom, o których napisałem powyżej, większość ludzi korzystających z tego np. w Pythonie nawet o tym nie wie. I nie musi. > I właśnie to jest źródłem sukcesu tego frameworku. Źródło sukcesu TensorFlow jest takie samo, jak źródło sukcesu Pythona, mianowicie to, że oba projekty zostały mocno doinwestowane przez firmę Google. Zresztą to dość typowe zjawisko. Podobnie źródłem sukcesu IBM PC było to, że stała za nim firma IBM (i że ten projekt zaniedbała), a nie to, że był jakimś technicznym majstersztykiem. Podobnie C++ został mocno doinwestowany przez korporacje. Ja znam jeszcze dwie inne historie: Viaweb Paula Grahama i Minecraft Markusa Perssona. Obie zostały napisane w różnych językach (odpowiednio: Common Lispie i Javie), a następnie wykupione za duże pieniądze przez wielkie korporacje (odpowiednio: Yahoo i Microsoft) i przepisane na C++. Ta droga jest ważna, bo pokazuje, że C++ jest raczej językiem do 'zacementowywania' istniejących projektów, niż do dostarczania innowacji.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Fri, 13 Dec 2019 20:06
Date: Fri, 13 Dec 2019 20:06
53 lines
5717 bytes
5717 bytes
> Mam kolegę, który tworzy język programowania Ć: Jedni zbierają znaczki a inni klej do znaczków... > Programy nim napisane można tłumaczyć do C, C++, C#, Javy, JavaScriptu, i zdaje się że nawet D i Perla. Obrazki w UMLu też można tłumaczyć. Nic z tego nie wynika od 30 lat. Ale tak konkretnie - jaką wadę języka C++ można ominąć pisząc program w języku Ć i tłumacząc go potem do C++ i jednocześnie nie rezygnując z zalet, z których można by było skorzystać od razu pisząc w C++? W sensie - jaka jest wartość dodana tego języka Ć? > Można użyć. Pytanie, jaki jest cel tego ćwiczenia. Bo jeśli komercjalizacja jakiegoś pomysłu, to nie chodzi o to, że "można użyć", tylko czego użyć, żeby jak najlepiej osiągnąć zamierzony efekt. Hasło "można użyć" jest zupełnie z innej płaszczyzny. Dokładnie na tej samej zasadzie niektórzy zbierają klej do znaczków. Można zbierać. > Być może. Nie zmienia to jednak faktu, że C++ jest językiem bardzo złożonym To używaj wybranego podzbioru. Wtedy taki (pod)język będzie mniej złożony. Teza: dla każdego problemu/zadania istnieje sensownie niezłożony podzbiór języka C++, w którym można ten problem/zadanie rozwiązać/zrealizować. Język polski też jest jednym z bardziej złożonych, ale żeby się skutecznie pokłócić na usenecie, wystarczy jego mały podzbiór. Częstym błędem jest stosowanie tych elementów języka, których nie trzeba było używać. Zaraz, zaraz - już wiem! Bo... można użyć. Niestety to jest powszechna choroba inżynierów, nie tylko programistów. > Źródło sukcesu TensorFlow jest takie samo, jak źródło sukcesu Pythona, mianowicie to, że oba projekty zostały mocno doinwestowane przez firmę Google. Błąd. Firma Google zainteresowała się Pythonem dopiero po tym, jak Python osiągnął sukces. Możliwe, że z punktu widzenia managementu trochę niewygodny był fakt, że każda inna duża firma miała jakiś "swój" język. Zatrudnienie Guido mogło się wydawać "rozwiązaniem" tego marketingowego problemu. Tak czy inaczej - najpierw był sukces, potem adopcja. > Podobnie C++ został mocno doinwestowany przez korporacje. I tu się wyłożyłeś używając słowa "korporacje" zaraz po tym, jak w innym kontekście podałeś konkretne nazwy. Słowo "korporacje" oznacza tyle samo, co "oni", albo "wszyscy". Czyli sukces C++ wynikał z tego, że wszyscy go używali? Oczywiście. Dlatego też zachodzi podejrzenie, że do zadania z tego wątku też będzie to dobry wybór. > Ja znam jeszcze dwie inne historie: Viaweb Paula Grahama i Minecraft Markusa Perssona. Obie zostały napisane w różnych językach (odpowiednio: Common Lispie i Javie), a następnie wykupione za duże pieniądze przez wielkie korporacje (odpowiednio: Yahoo i Microsoft) i przepisane na C++. Ciekawe. Ale to fajne przykłady. > Ta droga jest ważna, bo pokazuje, że C++ jest raczej językiem do 'zacementowywania' istniejących projektów, niż do dostarczania innowacji. Mam inną tezę. Wykupienie tych produktów wiązało się z założeniem, że będą dostarczone na masowy rynek (w przypadku projektów sieciowych oznacza to masowe obciążenia) a najwyraźniej na komercyjnym rynku C++ jest właściwym narzędziem, żeby sprostać komercyjnym wymaganiom. "Zacementowanie" jest celem, któro nie dość, że niczego nie oznacza, to jeszcze trudno taki cel uzasadnić koniecznymi kosztami. Natomiast poniesienie kosztów, żeby dostarczyć użytkownikom niezawodny produkt, jest jak najbardziej racjonalne. I to również jest powód, żeby się tym językiem zainteresować. Oczywiście można też wysunąć argumentację, że "oni" (korporacje?) robią źle, bo są źli, więc skoro robią coś w C++, to na pewno C++ też jest zły. -- Maciej Sobczak * http://www.inspirel.com
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Fri, 13 Dec 2019 21:37
Date: Fri, 13 Dec 2019 21:37
69 lines
6761 bytes
6761 bytes
W dniu piątek, 13 grudnia 2019 21:06:19 UTC+1 użytkownik Maciej Sobczak napisał: > > > Programy nim napisane można tłumaczyć do C, C++, C#, Javy, JavaScriptu, i zdaje się że nawet D i Perla. > > Obrazki w UMLu też można tłumaczyć. Nic z tego nie wynika od 30 lat. > > Ale tak konkretnie - jaką wadę języka C++ można ominąć pisząc program w języku Ć i tłumacząc go potem do C++ i jednocześnie nie rezygnując z zalet, z których można by było skorzystać od razu pisząc w C++? > > 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. > > Można użyć. > > Pytanie, jaki jest cel tego ćwiczenia. Bo jeśli komercjalizacja jakiegoś pomysłu, to nie chodzi o to, że "można użyć", tylko czego użyć, żeby jak najlepiej osiągnąć zamierzony efekt. Hasło "można użyć" jest zupełnie z innej płaszczyzny. Dokładnie na tej samej zasadzie niektórzy zbierają klej do znaczków. Można zbierać. To życzę udanych zbiorów. > > Być może. Nie zmienia to jednak faktu, że C++ jest językiem bardzo złożonym > > To używaj wybranego podzbioru. Wtedy taki (pod)język będzie mniej złożony. > > Teza: dla każdego problemu/zadania istnieje sensownie niezłożony podzbiór języka C++, w którym można ten problem/zadanie rozwiązać/zrealizować. To bardzo fajnie. Tylko skąd będę wiedział, który podzbiór jest tym właściwym? > Język polski też jest jednym z bardziej złożonych, ale żeby się skutecznie pokłócić na usenecie, wystarczy jego mały podzbiór. Żeby się porozumieć, trzeba mieć wolę porozumienia. > > Źródło sukcesu TensorFlow jest takie samo, jak źródło sukcesu Pythona, mianowicie to, że oba projekty zostały mocno doinwestowane przez firmę Google. > > Błąd. Firma Google zainteresowała się Pythonem dopiero po tym, jak Python osiągnął sukces. Jaki konkretnie sukces osiągnął Python przed zainteresowaniem się nim przez Google? > Możliwe, że z punktu widzenia managementu trochę niewygodny był fakt, że każda inna duża firma miała jakiś "swój" język. Zatrudnienie Guido mogło się wydawać "rozwiązaniem" tego marketingowego problemu. Tak czy inaczej - najpierw był sukces, potem adopcja. > > > Podobnie C++ został mocno doinwestowany przez korporacje. > > I tu się wyłożyłeś używając słowa "korporacje" zaraz po tym, jak w innym kontekście podałeś konkretne nazwy. Słowo "korporacje" oznacza tyle samo, co "oni", albo "wszyscy". 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. > Czyli sukces C++ wynikał z tego, że wszyscy go używali? Oczywiście. Sukces C++ wyniknął stąd, że znalazły się podmioty, które zrobiły dla niego dobre narzędzia. > Dlatego też zachodzi podejrzenie, że do zadania z tego wątku też będzie to dobry wybór. Może będzie. Trzymam kciuki. > > Ja znam jeszcze dwie inne historie: Viaweb Paula Grahama i Minecraft Markusa Perssona. Obie zostały napisane w różnych językach (odpowiednio: Common Lispie i Javie), a następnie wykupione za duże pieniądze przez wielkie korporacje (odpowiednio: Yahoo i Microsoft) i przepisane na C++. > > Ciekawe. Ale to fajne przykłady. > > > Ta droga jest ważna, bo pokazuje, że C++ jest raczej językiem do 'zacementowywania' istniejących projektów, niż do dostarczania innowacji. > > Mam inną tezę. Wykupienie tych produktów wiązało się z założeniem, że będą dostarczone na masowy rynek (w przypadku projektów sieciowych oznacza to masowe obciążenia) a najwyraźniej na komercyjnym rynku C++ jest właściwym narzędziem, żeby sprostać komercyjnym wymaganiom. "Zacementowanie" jest celem, któro nie dość, że niczego nie oznacza, to jeszcze trudno taki cel uzasadnić koniecznymi kosztami. Natomiast poniesienie kosztów, żeby dostarczyć użytkownikom niezawodny produkt, jest jak najbardziej racjonalne. I to również jest powód, żeby się tym językiem zainteresować. 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). W każdym razie clou jest takie, że rozwijanie projektu jest czymś innym, niż utrzymanie produktu. > Oczywiście można też wysunąć argumentację, że "oni" (korporacje?) robią źle, bo są źli, więc skoro robią coś w C++, to na pewno C++ też jest zły. Zupełnie nie rozumiem tego co napisałeś (ani po co).
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: osobliwy nick
Date: Sat, 14 Dec 2019 01:44
Date: Sat, 14 Dec 2019 01:44
12 lines
3028 bytes
3028 bytes
> Ja osobiście raczej bym odradzał C++ do Twoich zastosowań. > Jest to język nadmiernie skomplikowany, i nawet nie za dobrze radzi sobie z liczbami (domyślnie implementuje arytmetykę modulo 2^32 albo 2^64) To duża wada, bo ja bardzo często pracuję na dużych liczbach. Aczkolwiek są biblioteki przeznaczone dla większych liczb. Tyle, że już ich instalacja była tak zniuansowana, że jak robiłem to te kilka lat temu, to mnie przerosła. > Raczej bym polecał albo Racket, bo jest bardzo prosty i jest dla niego dużo dobrych materiałów dydaktycznych, a do tego wspiera od razu arytmetykę o dowolnej precyzji oraz liczby wymierne. Pierwsze słyszę o tym języku. Poza użytecznością do moich zastosowań, tak sobie myślę, że fajnie by było jednak mimo wszystko, aby był to język, który mógłby się przydać również gdzieś indziej, w szczególności na rynku pracy. Czy Racket stwarza opcje znalezienia po tym pracy, zakładając, że po kilku latach przygody z nim zacząłbym myśleć o jakichś zleceniach? > Warto ewentualnie rozważyć język Haskell, który jest bardziej złożony, ale ma dość wydajną implementacje, i jest też sobie w stanie poradzić z dużymi liczbami (i pod względem składni mocno przypomina klasyczną notację matematyczną). Też pierwszy raz słyszę nazwę. Poczytam o nim, zanim zdecyduję czego się uczyć.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: osobliwy nick
Date: Sat, 14 Dec 2019 01:58
Date: Sat, 14 Dec 2019 01:58
5 lines
2682 bytes
2682 bytes
> Być może. Nie zmienia to jednak faktu, że C++ jest językiem bardzo złożonym, i że jego złożoność w dużej mierze wynika z zaszłości historycznych, które osobę nastawioną na konkretne cele nie będą szczególnie interesować, a mogą łatwo zniechęcić. 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. 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. Są biblioteki, ale najpierw trzeba je znaleźć, później zainstalować, po drodze pełno niuansów. Pamiętam jak próbowałem kiedyś to zrobić - i nie udało się. Pobrałem biblioteki, ale programy mi ich nie czytały. Ten Python mnie przekonuje. Słyszałem, że to łatwy i przystępny język. Wspiera duże liczby, tak jak napisał Godek. Jest popularny, więc pewnie łatwo znajdę materiały na jego temat. Co więcej widziałem w kilku pracach matematycznych, że był używany do obliczeń. Wówczas mnie to zdziwiło, bo sądziłem, że to taki prosty, ograniczony język, a jednak chyba nie.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Mateusz Viste
Date: Sat, 14 Dec 2019 08:01
Date: Sat, 14 Dec 2019 08:01
25 lines
1918 bytes
1918 bytes
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. Mateusz
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Sat, 14 Dec 2019 10:10
Date: Sat, 14 Dec 2019 10:10
20 lines
3958 bytes
3958 bytes
W dniu sobota, 14 grudnia 2019 02:44:21 UTC+1 użytkownik osobliwy nick napisał: > > Ja osobiście raczej bym odradzał C++ do Twoich zastosowań. > > Jest to język nadmiernie skomplikowany, i nawet nie za dobrze radzi sobie z liczbami (domyślnie implementuje arytmetykę modulo 2^32 albo 2^64) > > To duża wada, bo ja bardzo często pracuję na dużych liczbach. Aczkolwiek są biblioteki przeznaczone dla większych liczb. Tyle, że już ich instalacja była tak zniuansowana, że jak robiłem to te kilka lat temu, to mnie przerosła. No właśnie, C++ oprócz bycia zawiłym językiem jest też zawiłym ekosystemem, co nie ułatwia realizacji celów, jeżeli się w niego wcześniej dość głęboko nie zagrzebałeś > > Raczej bym polecał albo Racket, bo jest bardzo prosty i jest dla niego dużo dobrych materiałów dydaktycznych, a do tego wspiera od razu arytmetykę o dowolnej precyzji oraz liczby wymierne. > > Pierwsze słyszę o tym języku. Poza użytecznością do moich zastosowań, tak sobie myślę, że fajnie by było jednak mimo wszystko, aby był to język, który mógłby się przydać również gdzieś indziej, w szczególności na rynku pracy. Czy Racket stwarza opcje znalezienia po tym pracy, zakładając, że po kilku latach przygody z nim zacząłbym myśleć o jakichś zleceniach? Jeżeli idzie o Racket, to jest głównie używany do nauki programowania w USA (program "Bootstrap World") i w Niemczech (program "Dein Programm"). Z punktu widzenia rynku pracy raczej nie jest perspektywiczny (choć jest np studio Naughty Dog, które robi gry na Playstation, i używa go do tworzenia swoich wewnętrznych narzędzi. Ale to raczej wyjątek.) > > Warto ewentualnie rozważyć język Haskell, który jest bardziej złożony, ale ma dość wydajną implementacje, i jest też sobie w stanie poradzić z dużymi liczbami (i pod względem składni mocno przypomina klasyczną notację matematyczną). > > Też pierwszy raz słyszę nazwę. Poczytam o nim, zanim zdecyduję czego się uczyć. Akurat na ten język zrobiła się ostatnio moda, i daje jakieś perspektywy zatrudnienia. Z Twojego punktu widzenia ma też tę zaletę, że możesz łatwo ograniczyć zakres zmiennych do rozmiaru słowa maszynowego (np. 32 albo 64 bity), uzyskując wydajność bliższą asemblerowi.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Piotr Chamera
Date: Sat, 14 Dec 2019 10:16
Date: Sat, 14 Dec 2019 10:16
27 lines
2545 bytes
2545 bytes
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
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Piotr Chamera
Date: Sat, 14 Dec 2019 10:18
Date: Sat, 14 Dec 2019 10:18
31 lines
2744 bytes
2744 bytes
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ć.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Sat, 14 Dec 2019 19:02
Date: Sat, 14 Dec 2019 19:02
45 lines
4889 bytes
4889 bytes
> > 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
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Sat, 14 Dec 2019 19:18
Date: Sat, 14 Dec 2019 19:18
32 lines
2569 bytes
2569 bytes
> 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
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100110
~/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
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Sun, 15 Dec 2019 10:54
Date: Sun, 15 Dec 2019 10:54
53 lines
7132 bytes
7132 bytes
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.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Sun, 15 Dec 2019 22:38
Date: Sun, 15 Dec 2019 22:38
53 lines
6573 bytes
6573 bytes
> 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
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Sun, 15 Dec 2019 23:05
Date: Sun, 15 Dec 2019 23:05
34 lines
5165 bytes
5165 bytes
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ą)
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Mon, 16 Dec 2019 19:02
Date: Mon, 16 Dec 2019 19:02
68 lines
6013 bytes
6013 bytes
> > 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-despite-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
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Mon, 16 Dec 2019 20:53
Date: Mon, 16 Dec 2019 20:53
70 lines
6649 bytes
6649 bytes
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-despite-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.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Tue, 17 Dec 2019 18:19
Date: Tue, 17 Dec 2019 18:19
58 lines
5987 bytes
5987 bytes
> > 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
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Roman Tyczka
Date: Wed, 18 Dec 2019 16:42
Date: Wed, 18 Dec 2019 16:42
19 lines
2659 bytes
2659 bytes
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
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Wed, 18 Dec 2019 21:19
Date: Wed, 18 Dec 2019 21:19
10 lines
3027 bytes
3027 bytes
W dniu sobota, 14 grudnia 2019 02:58:02 UTC+1 użytkownik osobliwy nick napisał: > > Być może. Nie zmienia to jednak faktu, że C++ jest językiem bardzo złożonym, i że jego złożoność w dużej mierze wynika z zaszłości historycznych, które osobę nastawioną na konkretne cele nie będą szczególnie interesować, a mogą łatwo zniechęcić. > > 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. 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. Są biblioteki, ale najpierw trzeba je znaleźć, później zainstalować, po drodze pełno niuansów. Pamiętam jak próbowałem kiedyś to zrobić - i nie udało się. Pobrałem biblioteki, ale programy mi ich nie czytały. > > Ten Python mnie przekonuje. Słyszałem, że to łatwy i przystępny język. Wspiera duże liczby, tak jak napisał Godek. Jest popularny, więc pewnie łatwo znajdę materiały na jego temat. Co więcej widziałem w kilku pracach matematycznych, że był używany do obliczeń. Wówczas mnie to zdziwiło, bo sądziłem, że to taki prosty, ograniczony język, a jednak chyba nie. Jakby co, to wprowadziłem wcześniejszy program w Haskellu do online'owego edytora (który wspiera wiele różnych języków), także możesz sobie uruchomić i pozmieniać tak jak będziesz miał ochotę. https://rextester.com/RAV59905
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: M.M.
Date: Wed, 18 Dec 2019 22:37
Date: Wed, 18 Dec 2019 22:37
25 lines
3603 bytes
3603 bytes
On Saturday, December 14, 2019 at 2:58:02 AM UTC+1, osobliwy nick wrote: > 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. 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. Są biblioteki, ale najpierw trzeba je znaleźć, później zainstalować, po drodze pełno niuansów. Pamiętam jak próbowałem kiedyś to zrobić - i nie udało się. Pobrałem biblioteki, ale programy mi ich nie czytały. Po prostu pisanie w C++ pewnych projektów bez odpowiednich bibliotek to porażka z powodu olbrzymiego nakładu pracy. Z odpowiednimi bibliotekami można pisać łatwo, przyjemnie, bez wnikania w szczegóły. Za to C++ ma olbrzymią zaletę, mianowicie jak się trochę czasu poświęci na wnikanie w szczegóły, na dobór algorytmów, na testy, na implementację dostosowaną blisko sprzętu, to uzyskuje się efekt jakiego w żadnym innym języku się nie uzyska. Z tego co mi wiadomo, wiele innych języków i bibliotek dla innych języków było i jest nadal pisanych właśnie w C++ - z powodu zalety o której przed chwilą pisałem. > Ten Python mnie przekonuje. Słyszałem, że to łatwy i przystępny język. Wspiera duże liczby, tak jak napisał Godek. Jest popularny, więc pewnie łatwo znajdę materiały na jego temat. Co więcej widziałem w kilku pracach matematycznych, że był używany do obliczeń. Wówczas mnie to zdziwiło, bo sądziłem, że to taki prosty, ograniczony język, a jednak chyba nie. Ma biblioteki do obliczeń, a te biblioteki są pisane (ja myślę) w C++, czyli pisząc w Pythonie tak naprawdę używasz kodu (nierzadko) wyśrubowanego w C++. Czasami nawet nie w C++, tylko OpenCL i CUDA, a obliczenia idą na GPU. Można przeprowadzać żmudne obliczenia w Pytnonie? Myślę że można, ale czy to tak naprawdę oblicza kod pisany w Pythonie, czy w C++, czy może w OpenCL - tego nie jestem taki pewny. Pozdrawiam
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Thu, 19 Dec 2019 10:09
Date: Thu, 19 Dec 2019 10:09
15 lines
3130 bytes
3130 bytes
> > Jeżeli można translować w obu kierunkach [...] > > 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. Bingo. Wymieniłeś dodatkowe cechy, które sprawiają, że jest wartość dodana z punktu widzenia programisty. I właśnie ta wartość dodana sprawia, że istnienie TS ma sens. Natomiast gdy zapytałem o taką wartość dodaną w Ć (przykładową pożądaną odpowiedzią mogłoby być np. "Ć ma GC"), to nadal odpowiedzi nie dostałem. Wiem tylko, że można translować na coś, co i tak już używam, ale przewalanie towaru z jednej kupki na drugą bez zmiany abstrakcji to tylko zabieg techniczny, który raczej bym z procesu eliminował, niż dodawał. Dlatego nie zostałem fanem Ć. -- Maciej Sobczak * http://www.inspirel.com
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: slawek
Date: Tue, 31 Dec 2019 14:35
Date: Tue, 31 Dec 2019 14:35
15 lines
1666 bytes
1666 bytes
Maciej Sobczak <see.my.homepage@gmail.com> Wrote in message: > W temacie eksploracji zagadnień matematycznych Wolfram nie ma merytorycznej konkurencji.Ale przecież już o tym było. :-)-- Maciej Sobczak * http://www.inspirel.com Polimeryzowałbym. 1. Jest droga. 2. Nie potrafi tego co MISAR. Ok, MISAR to zupełnie inna półka. Choć niewątpliwie matematyka. 3. Daje się zastąpić Pythonem - niekiedy, ale zadziwiająco dobrze. 4. W numeryce jest zbyt powolna. 5. Potrafi się wieszać na niezbyt trudnych rzeczach. ----Android NewsGroup Reader---- http://usenet.sinaapp.com/
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Wed, 01 Jan 2020 22:25
Date: Wed, 01 Jan 2020 22:25
39 lines
2917 bytes
2917 bytes
> > W temacie eksploracji zagadnień matematycznych Wolfram nie ma merytorycznej konkurencji. > > Polimeryzowałbym. Super, noworoczne otwarcie. :-) > 1. Jest droga. Przecież pisałem o merytorycznej konkurencji. I oczywiście zależy co to znaczy "droga". Są programy, przy zakupie których Mathematica ginie w finansowym szumie. > 2. Nie potrafi tego co MISAR. Ok, MISAR to zupełnie inna półka. > Choć niewątpliwie matematyka. https://en.wikipedia.org/wiki/Misar Poproszę o dalsze wskazówki. To jest tak inna półka, że nawet tej półki nie znalazłem. > 3. Daje się zastąpić Pythonem - niekiedy, ale zadziwiająco dobrze. Niekiedy to i w pamięci można policzyć. Jeśli konkurencja jest konkurencyjna tylko "niekiedy", to nie jest to poważna konkurencja. > 4. W numeryce jest zbyt powolna. I wtedy daje się zastąpić Pythonem? Czy może czymś innym? A może wtedy to pomaga: https://www.nvidia.com/object/cuda-programming-mathematica ? > 5. Potrafi się wieszać na niezbyt trudnych rzeczach. Podaj przykład. Nie twierdzę, że nie, bo sam mam kolekcję różnych niedociągnięć, ale chętnie poznam nowe. -- Maciej Sobczak * http://www.inspirel.com
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: slawek
Date: Thu, 02 Jan 2020 11:13
Date: Thu, 02 Jan 2020 11:13
71 lines
4885 bytes
4885 bytes
Maciej Sobczak <see.my.homepage@gmail.com> Wrote in message:
> Przecież pisałem o merytorycznej konkurencji.I oczywiście zależy co to znaczy "droga". Są programy, przy zakupie których Mathematica ginie w finansowym szumie.
A to znaczy że ja np. mam Mathematicę (i od roku czy dwóch jakoś
nie odczułem potrzeby użyć, ale to inna historia). I jak napiszę
program w Mathematicy i będę go chciał rozdawać za darmo to być
może ty go sobie uruchomisz. Ale dla kogoś kto nie ma licencji na
Mathematicę będzie on niedostępny. A to w zasadzie uniemożliwia
rozwój oprogramowania FOSS na platformie Wolframa.
> 2. Nie potrafi tego co MISAR. Ok, MISAR to zupełnie inna półka.> Choć niewątpliwie matematyka.https://en.wikipedia.org/wiki/MisarPoproszę o dalsze wskazówki. To jest tak inna półka, że nawet tej półki nie znalazłem.
MISAR to jest program dla matematyków. I to bardziej niż
Mathematica. Jeżeli zrozumiesz na czym polega bycie matematykiem.
Inna rzecz - prawdziwych matematyków (w tym matematyczek) jest
bardzo bardzo mało.
> 3. Niekiedy to i w pamięci można policzyć. Jeśli konkurencja jest konkurencyjna tylko "niekiedy", to nie jest to poważna konkurencja.
Typowe dla korposzczurka: uważać za ważne tylko to co jest w
prosty sposób konkurencją dla własnego biznesu. I tak np. hodowca
wieprzków widzi konkurencję w hodowcy wieprzków.
Python ma moduł do obliczeń symbolicznych (CAS). A nawet bez tego
modułu da się np. łatwo i krótko zdefiniować generowanie
wielomianów Czebyszewa... na wzorkach. Dodaj do tego numpy i
matplotlib, czyli w zasadzie całego Matlaba bez Simulinka i
toolkitów. Dodaj do tego scipy itd. Dodaj do tego CUDA (też
jest). Dodaj do tego rzeczy których nie ma i nie będzie w
Mathematicy (np. moduły do pisania gier, serwer WWW).
> Czy może czymś innym?A może wtedy to pomaga:https://www.nvidia.com/object/cuda-programming-mathematica?
Mathematica w sensie numeryki jest beznadziejna. I nie dlatego że
liczy zbyt wolno. Ale przede wszystkim dlatego, że ma bardzo
ograniczony wybór algorytmów. Jest w ogóle coś takiego jak
macierz rzadka w Mathematicy?!?
Dla kogoś kto ma policzyć całkę np. sin(a x^2 + b) Mathematica
jest ok. Choć wystarczyłaby wersja on-line: Alpha.
> 5. [Potrafi się wieszać na niezbyt trudnych rzeczach.] Podaj przykład.Nie twierdzę, że nie, bo sam mam kolekcję różnych niedociągnięć, ale chętnie poznam nowe.
1. Sum[f[k], {k, 1, 3}] rozwijało się do f[1]+f[2]+f[2]+[3] w
pewnych okolicznościach przyrody. To już poprawili.
2. Cały moduł realonly był skopany koncepcyjnie. Wofram wycofał
readonly.
3. Niezbyt trudne ODE (dwa nieliniowe pierwszego stopnia) padały
mi regularnie gdy notebook (jakieś marne 50 stron) dynamicznie je
przeliczał. Tam nawet chaosu nie było. Parametry ustawiane
suwaczkami. Najwyraźniej wyciek pamięci. Bo po restarcie
Mathematicy działało zawsze przez następne pół godziny.
4. Jakieś PDE (NLH i okolice) - totalna porażka - numerycznie
Mathematica "ma" MOL - ale delikatnie rzecz ujmując - psu na budę
się to przydaje.
5. Trudności z definiowaniem np. zmiennych całkowitych, zmiennych
rzeczywistych itd. Da się ogarnąć asumpcjami. Ale absmak
zostaje.
6. Problemy z PL-literkami. Problemy z np. zapis
aniem/wydrukowaniem noteboka tak aby te literki były.
7. Gorsze niż w przypadku Matlaba (czyli także matplotlib w
Pythonie) rysunki - są ładne, ale nie publish-ready - kiepsko z
eksportem w formacie wektorowym.
I to na razie tyle, bo po co kopać leżącego?
----Android NewsGroup Reader----
http://usenet.sinaapp.com/
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Thu, 02 Jan 2020 11:36
Date: Thu, 02 Jan 2020 11:36
27 lines
2749 bytes
2749 bytes
W dniu środa, 1 stycznia 2020 23:25:50 UTC+1 użytkownik Maciej Sobczak napisał: > > > W temacie eksploracji zagadnień matematycznych Wolfram nie ma merytorycznej konkurencji. > > > > Polimeryzowałbym. > > Super, noworoczne otwarcie. :-) > > > 1. Jest droga. > > Przecież pisałem o merytorycznej konkurencji. > > I oczywiście zależy co to znaczy "droga". Są programy, przy zakupie których Mathematica ginie w finansowym szumie. > > > 2. Nie potrafi tego co MISAR. Ok, MISAR to zupełnie inna półka. > > Choć niewątpliwie matematyka. > > https://en.wikipedia.org/wiki/Misar > > Poproszę o dalsze wskazówki. To jest tak inna półka, że nawet tej półki nie znalazłem. Na ile mogę się domyślić, chodzi o projekt MIZAR, zapoczątkowany przez Andrzeja Trybulca z Białegostoku. http://mizar.org/ Projekt podobny np. do Coq albo systemu LCF Robina Milnera (dla którego powstał język ML). W niektórych kręgach notacja Mizara jest popularną notacją do formalizacji dowodów matematycznych
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Thu, 02 Jan 2020 20:22
Date: Thu, 02 Jan 2020 20:22
94 lines
5838 bytes
5838 bytes
> A to znaczy że ja np. mam Mathematicę (i od roku czy dwóch jakoś
> nie odczułem potrzeby użyć, ale to inna historia). I jak napiszę
> program w Mathematicy i będę go chciał rozdawać za darmo to być
> może ty go sobie uruchomisz. Ale dla kogoś kto nie ma licencji na
> Mathematicę będzie on niedostępny.
Podobnie, jak ktoś, kto nie ma Windowsa, nie uruchomi sobie programu na Windowsa. A jak nie ma iOSa, to nie uruchomi programu na iOSa. To chyba zawsze tak jakoś było.
> A to w zasadzie uniemożliwia
> rozwój oprogramowania FOSS na platformie Wolframa.
Tak samo jak niemożliwy był rozwój oprogramowania FOSS na Windowsa i na iOSa, tak?
> MISAR to jest program dla matematyków. I to bardziej niż
> Mathematica. Jeżeli zrozumiesz na czym polega bycie matematykiem.
> Inna rzecz - prawdziwych matematyków (w tym matematyczek) jest
> bardzo bardzo mało.
I nadal nie wiem, co to jest i gdzie to jest.
Ale ponieważ nie jestem matematykiem, to nie jest mi smutno. Natomiast jestem inżynierem i cieszę się, że jest Wolfram.
> Python ma moduł do obliczeń symbolicznych (CAS). A nawet bez tego
> modułu da się np. łatwo i krótko zdefiniować generowanie
> wielomianów Czebyszewa... na wzorkach. Dodaj do tego numpy i
> matplotlib, czyli w zasadzie całego Matlaba bez Simulinka i
> toolkitów. Dodaj do tego scipy itd. Dodaj do tego CUDA (też
> jest).
I jak to wszystko do siebie dodam, to się okaże, że każde wymaga innej wersji Pythona i w sumie dwóch sprzecznych systemów operacyjnych a przy okazji będzie kompletnie nie do opanowania na poziomie licencji. A jak mi ten składak nie zadziała, to na które konkretnie forum dyskusyjne mam się udać? Jest jakieś, gdzie mi nie powiedzą, że to moja wina?
> Dodaj do tego rzeczy których nie ma i nie będzie w
> Mathematicy (np. moduły do pisania gier, serwer WWW).
Wpisałem w Googlu "Wolfram games" i zgadnij.
A w temacie www:
https://www.wolfram.com/products/webmathematica/
No i jest jeszcze wolframcloud. Zależy, co ten serwer www miałby robić - może się okazać, że zamiast stawiać serwer, lepiej postawić program na istniejącym już serwerze.
Więc nie ryzykowałbym twierdzeń typu "nie ma i nie będzie".
> Mathematica w sensie numeryki jest beznadziejna. I nie dlatego że
> liczy zbyt wolno. Ale przede wszystkim dlatego, że ma bardzo
> ograniczony wybór algorytmów. Jest w ogóle coś takiego jak
> macierz rzadka w Mathematicy?!?
https://reference.wolfram.com/language/tutorial/LinearAlgebraSparseArrays.html
https://reference.wolfram.com/language/ref/SparseArray.html
O to chodziło?
> 1. Sum[f[k], {k, 1, 3}] rozwijało się do f[1]+f[2]+f[2]+[3] w
> pewnych okolicznościach przyrody. To już poprawili.
Ja pytam co nie działa, a nie co poprawili.
> 2. Cały moduł realonly był skopany koncepcyjnie. Wofram wycofał
> readonly.
To w końcu realonly, czy readonly?
> 3. Niezbyt trudne ODE (dwa nieliniowe pierwszego stopnia) padały
Padały, czy poprawili?
> 4. Jakieś PDE (NLH i okolice) - totalna porażka
Prosiłem o przykład a nie o totalności.
> 5. Trudności z definiowaniem np. zmiennych całkowitych, zmiennych
> rzeczywistych itd.
Bo w ogóle nie ma zmiennych. Tam są symbole a nie zmienne.
I w jakim sensie Python jest tu konkurencyjny?
> 6. Problemy z PL-literkami. Problemy z np. zapis
> aniem/wydrukowaniem noteboka tak aby te literki były.
Z jaką literką jest problem? Ja nie mam. Może to też poprawili?
> 7. Gorsze niż w przypadku Matlaba (czyli także matplotlib w
> Pythonie) rysunki - są ładne, ale nie publish-ready - kiepsko z
> eksportem w formacie wektorowym.
"U mnie działa"?
> I to na razie tyle, bo po co kopać leżącego?
Ale Ty kopiesz powietrze. Nikt nie leży. Nie podałeś żadnego przykładu.
--
Maciej Sobczak * http://www.inspirel.com
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Thu, 02 Jan 2020 20:26
Date: Thu, 02 Jan 2020 20:26
8 lines
2155 bytes
2155 bytes
> Na ile mogę się domyślić, chodzi o projekt MIZAR, zapoczątkowany przez Andrzeja Trybulca z Białegostoku. > > http://mizar.org/ Ale to nie konkuruje z Wolframem, wydaje się raczej istnieć w zupełnie innej przestrzeni. Tzn. wyobrażam sobie, że ktoś używa obu a nie jednego zamiast drugiego. -- Maciej Sobczak * http://www.inspirel.com
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: godek.maciek
Date: Thu, 02 Jan 2020 20:32
Date: Thu, 02 Jan 2020 20:32
8 lines
2207 bytes
2207 bytes
W dniu czwartek, 2 stycznia 2020 21:27:02 UTC+1 użytkownik Maciej Sobczak napisał: > > Na ile mogę się domyślić, chodzi o projekt MIZAR, zapoczątkowany przez Andrzeja Trybulca z Białegostoku. > > > > http://mizar.org/ > > Ale to nie konkuruje z Wolframem, wydaje się raczej istnieć w zupełnie innej przestrzeni. Tzn. wyobrażam sobie, że ktoś używa obu a nie jednego zamiast drugiego. Zgadza się, w kontekście tej dyskusji to przykład zupełnie od czapy.
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: slawek
Date: Fri, 03 Jan 2020 01:18
Date: Fri, 03 Jan 2020 01:18
44 lines
3283 bytes
3283 bytes
Maciej Sobczak <see.my.homepage@gmail.com> Wrote in message: > Podobnie, jak ktoś, kto nie ma Windowsa, nie uruchomi sobie programu na Windowsa. A jak nie ma iOSa, to nie uruchomi programu na iOSa. To chyba zawsze tak jakoś było. Ani nie było, ani nie jest. Program "fur Windows" można było odpalić w Linuksie. Na przykład pod emulatorem. A mając kod źródłowy - jeżeli program był napisany przenośnie - skompilować: przykładem narzędzia uniksowe dla Windows. Od pewnego czasu jest Java - ten sam plik odpalisz w Linuksie, Windows i na Jabolkach. Gorzej - jest ECMA Script - ten sam "exec" odpalisz w każdym systemie, byle jakaś przeglądarka była. > I nadal nie wiem, co to jest i gdzie to jest.Ale ponieważ nie jestem matematykiem, to nie jest mi smutno. Primo, misar.org. Secundo, smutno jest że nie wiesz że MISAR jest polskim osiągnięciem - patrz zapodany url. >I jak to wszystko do siebie dodam, to się okaże, że każde wymaga innej wersji Pythona i w sumie dwóch sprzecznych systemów operacyjnych a przy okazji będzie kompletnie nie do opanowania na poziomie licencji. Nie poskładasz, jeżeli jesteś za głupi. A za twoje IQ odpowiadam nie ja, tylko twoje geny, czyli rodzice. A czy jesteś za głupi to się nie dowiesz jeżeli nie spróbujesz. To co, masz cykora? >A jak mi ten składak nie zadziała, to na które konkretnie forum dyskusyjne mam się udać? Hoo, hoo, hooo... Pokolenie copy-paste i szukanie frajerów którzy za darmo zrobią twoją robotę? Podpowiem ci: Google, Stackoverflow, twój syn jeżeli chodzi do liceum (Pythona w dobrych liceach uczą teraz). Możesz też przeczytać książkę - takie coś z papierowymi kartkami - z tuzin różnych, po polsku, w księgarniach leży. Jak cię nie stać to idź do biblioteki. Jak mieszkasz na takim za...u że nie ma biblioteki to poczytaj sobie e-booka "Dive in Python" - jest za friko - użyj Google. ----Android NewsGroup Reader---- http://usenet.sinaapp.com/
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: Maciej Sobczak
Date: Sat, 04 Jan 2020 19:00
Date: Sat, 04 Jan 2020 19:00
35 lines
3868 bytes
3868 bytes
> Ani nie było, ani nie jest. Program "fur Windows" można było > odpalić w Linuksie. Na przykład pod emulatorem. > Od pewnego czasu jest Java - ten sam plik odpalisz w Linuksie, > Windows i na Jabolkach. Program w Wolframie też mogę odpalić na Windowsie albo na Linuksie, bo mam maszynę wirtualną na oba systemy. O, to zupełnie, jak w Javie. Nie wiem, po co brniemy w ten temat. Jeśli chciałeś skrytykować Wolframa za to, że jest przenośny i że można robić w nim open-source tak samo jak w Javie, to tak, owszem, można. > Primo, misar.org. Secundo, smutno jest że nie wiesz że MISAR jest > polskim osiągnięciem - patrz zapodany url. Nie wiem, bo mi nie był do tej pory potrzebny. I wcale nie jest mi z tego powodu smutno. [Python i milion bibliotek] > Nie poskładasz, jeżeli jesteś za głupi. A za twoje IQ odpowiadam > nie ja, tylko twoje geny, czyli rodzice. A czy jesteś za głupi to > się nie dowiesz jeżeli nie spróbujesz. To co, masz > cykora? Raczej ograniczoną ilość czasu na ryzykowne eksperymenty. Dlatego wybieram rozwiązanie, któro daje mi większą szansę na sukces. > >A jak mi ten składak nie zadziała, to na które konkretnie forum dyskusyjne mam się udać? > > Hoo, hoo, hooo... Pokolenie copy-paste i szukanie frajerów którzy > za darmo zrobią twoją robotę? No i się zapętliłeś. Poprzednio argument był taki, że Mathematica jest droga. A teraz sugerujesz, że chcę mieć coś za darmo? Pomyśl, zanim napiszesz. Skrót jest taki: jeśli Twój czas jest coraz cenniejszy (może tak być z różnych powodów), to będziesz coraz bardziej skłonny, żeby zapłacić za szybszy efekt. Inaczej: jedni płacą swoim czasem rozwiązując problemy, których drudzy nie mają, bo zapłacili za szybszy efekt pieniędzmi. I tak z grubsza da się wyjaśnić wiele wyborów, również wybór między Wolframem i Pythonem. Ostatecznie oba są płatne, tylko w różnej walucie. -- Maciej Sobczak * http://www.inspirel.com
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: bartekltg
Date: Wed, 08 Jan 2020 10:12
Date: Wed, 08 Jan 2020 10:12
37 lines
4268 bytes
4268 bytes
On Saturday, December 14, 2019 at 2:58:02 AM UTC+1, osobliwy nick wrote: > > Być może. Nie zmienia to jednak faktu, że C++ jest językiem bardzo złożonym, i że jego złożoność w dużej mierze wynika z zaszłości historycznych, które osobę nastawioną na konkretne cele nie będą szczególnie interesować, a mogą łatwo zniechęcić. > > 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. 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. Są biblioteki, ale najpierw trzeba je znaleźć, później zainstalować, po drodze pełno niuansów. Pamiętam jak próbowałem kiedyś to zrobić - i nie udało się. Pobrałem biblioteki, ale programy mi ich nie czytały. Boost. Praktycznie wszystko, co potrzebujesz, jest w booscie. Nie zawsze najlepsze, np do macierzy wolę eigen niż boostowe macierze, ale jest. W innych językach jets tak samo. Nie masz bibliotek numerycznych w samym pythonie, masz numpy i scipy. Różne biblioteki cześciowo pokrywające to samo. Różnica jest w obsłudze tych bibliotek/pakietów. W pythonie jest to przyjemnijesze, masz osobny manager. W c++ najcześćeij robisz to z poziomu OSa, robias sudo apt install :) Wracając do boosta, masz tam int128, float 128, oraz większe liczby. Dowolna długość/prcyzja w ich iomplementacji i w wersji GMP/mpfr, jeśli je zainstalujesz. > Ten Python mnie przekonuje. Słyszałem, że to łatwy i przystępny język. Wspiera duże liczby, tak jak napisał Godek. Jest popularny, więc pewnie łatwo znajdę materiały na jego temat. Co więcej widziałem w kilku pracach matematycznych, że był używany do obliczeń. Wówczas mnie to zdziwiło, bo sądziłem, że to taki prosty, ograniczony język, a jednak chyba nie. Zdecydowanie nei jest ograniczony. I do obliczeń się nadaje. Ale nie do wszystkich. Jeśli głownie odpalasz procedury z bibliotek, jakieś numpy czy biblioteki do uczenia maszynowego, jest super (a to wiekszosć obliczeń naukowych). Ale pisząc algorytm od zara na skalarach, będzie koszmarnie wolne. (BTW, nie to, że w C++ nalezy pisać ręcznie zamiast uzywac bibliotek. Skichasz się a nie napiszesz czegoś równei szybkiego jak MKL:)) Wiec jak zawsze, dobór języka zależy od potrzeb i zadania. Do wielokrotnego odpalenia eulidesa brałbym jednak coś kompilowalengo, jak c++. pzdr bartekltg
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: bartekltg
Date: Wed, 08 Jan 2020 11:27
Date: Wed, 08 Jan 2020 11:27
32 lines
3570 bytes
3570 bytes
On Saturday, December 14, 2019 at 2:44:21 AM UTC+1, osobliwy nick wrote: > > Ja osobiście raczej bym odradzał C++ do Twoich zastosowań. > > Jest to język nadmiernie skomplikowany, i nawet nie za dobrze radzi sobie z liczbami (domyślnie implementuje arytmetykę modulo 2^32 albo 2^64) > > To duża wada, bo ja bardzo często pracuję na dużych liczbach. Aczkolwiek są biblioteki przeznaczone dla większych liczb. Tyle, że już ich instalacja była tak zniuansowana, że jak robiłem to te kilka lat temu, to mnie przerosła. Polecam boosta. Ma i włąsną implementację, i wtyczkę do GMP. GMP jest najszybsze, ale jak samo mówisz, upierdliwe. Boost opakowuje to, żę uzywa się tego jak każdej innej zmiennej liczbowej. Jeśli chcesz kalkulator, mozesz zaintereoswać się pari/GP. To i bibliotego (w tym dużo teorioliczbowych procedur) i kakulator (taki w linii poleceń). Mathematica też ma swoje zalety. Ale to znów nauka jeszcze innego podejścia. > > Raczej bym polecał albo Racket, bo jest bardzo prosty i jest dla niego dużo dobrych materiałów dydaktycznych, a do tego wspiera od razu arytmetykę o dowolnej precyzji oraz liczby wymierne. > > Pierwsze słyszę o tym języku. To waraicja na temat Scheme. A ten z kolei to Lisp. )))))))) > Poza użytecznością do moich zastosowań, tak sobie myślę, że fajnie by było jednak mimo wszystko, aby był to język, który mógłby się przydać również gdzieś indziej, w szczególności na rynku pracy. Czy Racket stwarza opcje znalezienia po tym pracy, zakładając, że po kilku latach przygody z nim zacząłbym myśleć o jakichś zleceniach? Python chyba będzie bardziej uniwersalny. Ale mniej ładny;) pzdr bartekltg
Re: Ile czasu zajmie komputerowi rozszerzony algorytm euklidesa?
Author: slawek
Date: Sat, 11 Jan 2020 20:54
Date: Sat, 11 Jan 2020 20:54
9 lines
1219 bytes
1219 bytes
bartekltg <bartekltg@gmail.com> Wrote in message: > Wracając do boosta, masz tam int128, float 128, oraz większe liczby. Nie masz. Sprzętowy jest tylko 64 bitowy float, liczony na 80 bitach FPU. Chyba że masz jakieś egzotyczne CPU/FPU. ----Android NewsGroup Reader---- http://usenet.sinaapp.com/
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads