znaczacy > comp.* > comp.programming

slawek (01.01.1970, 02:00)
Maciej Sobczak <see.my.homepage> Wrote in message:
> W temacie eksploracji zagadnien matematycznych Wolfram nie ma merytorycznej konkurencji.Ale przeciez juz o tym bylo. :-)-- Maciej Sobczak *


Polimeryzowalbym.

1. Jest droga.
2. Nie potrafi tego co MISAR. Ok, MISAR to zupelnie inna pólka.
Choc niewatpliwie matematyka.
3. Daje sie zastapic Pythonem - niekiedy, ale zadziwiajaco dobrze.
4. W numeryce jest zbyt powolna.
5. Potrafi sie wieszac na niezbyt trudnych rzeczach.

----Android NewsGroup Reader----
slawek (01.01.1970, 02:00)
Maciej Sobczak <see.my.homepage> 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. 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:


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----
slawek (01.01.1970, 02:00)
Maciej Sobczak <see.my.homepage> 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----
slawek (01.01.1970, 02:00)
bartekltg <bartekltg> 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----
osobliwy nick (07.12.2019, 00:25)
Chce rozwiazywac równania typu:

a*2^(x+y)+b*g^y = 1

rozszerzonym algorytmem euklidesa dla losowych x+y=128, bedacych liczbami naturalnymi z zerem. Czy ktos ma pomysl jak ustalic ile to moze srednio zajac komputerowi dla calkowitego "g" wynoszacego powiedzmy
5? Dodam tylko, ze nie umiem programowac, wiec nie jestem w stanie napisac sobie zadnych testów (dopiero rozwazam zlecenie napisania komus programu).

Tutaj jest przykladowa implementacja rozszerzonego algorytmu euklidesa:



Niestety nie wiem jak policzyc sredni 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

Wiec do policzenia byloby 128 przypadków uzycia tego rozszerzonego algorytmu euklidesa. Chyba, ze mozna to oszacowac jak szybciej?
godek.maciek (07.12.2019, 21:58)
W dniu piatek, 6 grudnia 2019 23:25:56 UTC+1 uzytkownik osobliwy nick napisal:
> Chce rozwiazywac równania typu:
> a*2^(x+y)+b*g^y = 1
> rozszerzonym algorytmem euklidesa dla losowych x+y=128, bedacych liczbami naturalnymi z zerem. Czy ktos ma pomysl jak ustalic ile to moze srednio zajac komputerowi dla calkowitego "g" wynoszacego powiedzmy
> 5?


Tak. Napisac program i to zmierzyc.

(Jezeli dziedzina jest mala, to mozna sobie stabelaryzowac wynik, i wówczas "wyliczenie" zajmie tyle, ile wydobycie danych z tablicy.)

> Dodam tylko, ze nie umiem programowac, wiec nie jestem w stanie napisac sobie zadnych testów (dopiero rozwazam zlecenie napisania komus programu).


A dlaczego nie rozwazysz "nauczenia sie programowania"?
Brzmi to dosc górnolotnie, ale nauczenie sie jakiegos jezyka w stopniu umozliwiajacym Ci realizacje rzeczy, o które pytasz, raczej nie zajmie Ci wiecej czasu, niz napisanie takiego posta.
osobliwy nick (07.12.2019, 22:44)
W dniu sobota, 7 grudnia 2019 20:58:32 UTC+1 uzytkownik godek...@gmail..com napisal:
> W dniu piatek, 6 grudnia 2019 23:25:56 UTC+1 uzytkownik osobliwy nick napisal:
> Tak. Napisac program i to zmierzyc.
> (Jezeli dziedzina jest mala, to mozna sobie stabelaryzowac wynik, i wówczas "wyliczenie" zajmie tyle, ile wydobycie danychz tablicy.)
> A dlaczego nie rozwazysz "nauczenia sie programowania"?
> Brzmi to dosc górnolotnie, ale nauczenie sie jakiegos jezyka w stopniu umozliwiajacym Ci realizacje rzeczy, o które pytasz, raczej nie zajmie Ci wiecej czasu, niznapisanie takiego posta.


Chodzi to za mna od dawna, ale to osobny temat. Mialem podstawy Cna studiach, ale zapomnialem wlasciwie wszystkiego, nie bylem tez szczególnie zdolnym studentem, jednoczesnie niemialem tez szczególnie zdolnych prowadzacych zajecia (a to wiem od kolegów przybylych do nas z Politechniki, studiujacych jednoczesnie inne kierunki, którzy krytykowali sposób nauczania na moim kierunku). W ostatnich latach zas kazda wolna chwile poswiecalem na nauke czegos zupelnie innego - rynków finansowych i tradingu. I tak odkladalem to programowanie przez lata. Jednoczesnie juz na etapie analizy i testowania strategii tradingowych potrzebowalem...tak - umiec programowac. Zlecilem wówczas dosyc szerokie testy i napisanie róznych programów pewnemu programiscie. Ostatecznie zderzylismy sie z teoria chaosu i efektem motyla - bo wykresy kursów ludzaco przypominaja bladzenie losowe (proces Wienera) i jest masa naukowych teorii i modeli traktujaca o efektywnosci rynków finansowych i zachowaniu sie kursu. Naiwni wtedy bylismy, ale przynajmniej zyskalem fajnego znajomego.

Wracajac do tematu. Moze to jest ten moment. Na pewno masz racje, ze powinienem to zrobic. Zwlaszcza, ze poznalem z czym to sie je i jakies tam programy kilka lat temu nawetpisalem (na studiach i po nich). A juz nie pierwszy raz zlecam komus pisanie jakiegos programu. Kiedys zlecilem napisanie programu, który bedzie poszukiwal liczb Crandalla, które nie beda liczbami Wieferich (problem z zakresu matematyki teoretycznej). Potrafilem zostawic komputer odpalony na tydzien czasu, bo wzór, który to liczyl przebiegal po ogromnej liczbie wariacji wielu zmiennych. Niczego niestety nie znalazlem.

Dzisiaj jednak mam inne juz nieco dalej idace plany. Docelowo chce zalozyc firme, startup, która ma stworzyc program szyfrujacy (na podstawie zaproponowanego przez mnie algorytmu) i opatentowac to rozwiazanie, czy to w postaci implementacji, czy ogólnie algorytmu. Nie sadze, ze bede wstanie zrealizowac ten plan samodzielnie, jako poczatkujacyprogramista. Tutaj potrzeba ludzi, którzy robia to od lat, a najlepiej takich z doswiadczeniem w kryptografii. I wobec koniecznosci zlecenia napisania takiego programu (a na poczatek testów), czy stworzenia calego oprogramowania, uczenie sie programowania samodzielnie jest troche jak zakladanie wlasnego zespolu kolarskiego i jednoczesne uczenie sie jazdy na rowerze. Wiadomo, ze prezes, czy sponsor zespolu sam nigdy na takiej kolarzówce nie bedzie sie tam scigal razem z zawodnikami, jak bardzo by sie nie staral.
godek.maciek (07.12.2019, 23:38)
W dniu sobota, 7 grudnia 2019 21:44:27 UTC+1 uzytkownik osobliwy nick napisal:
> W dniu sobota, 7 grudnia 2019 20:58:32 UTC+1 uzytkownik godek...@gmail.com napisal:
> Chodzi to za mna od dawna, ale to osobny temat. Mialem podstawyC na studiach, ale zapomnialem wlasciwie wszystkiego, nie bylem tez szczególnie zdolnym studentem, jednoczesnie nie mialem tez szczególnie zdolnych prowadzacych zajecia (a to wiem od kolegów przybylych do nas z Politechniki, studiujacych jednoczesnie inne kierunki, którzy krytykowali sposób nauczania na moim kierunku). W ostatnich latach zas kazda wolna chwile poswiecalem na nauke czegos zupelnie innego - rynków finansowych i tradingu. I tak odkladalem to programowanie przez lata. Jednoczesnie juzna etapie analizy i testowania strategii tradingowych potrzebowalem.... tak - umiec programowac. Zlecilem wówczas dosyc szerokie testy i napisanie róznych programów pewnemu programiscie. Ostatecznie zderzylismy sie z teoria chaosu i efektem motyla - bo wykresy kursów ludzaco przypominaja bladzenie losowe (proces Wienera) i jest masa naukowych teorii i modeli traktujaca o efektywnosci rynków finansowych i zachowaniu sie kursu. Naiwni wtedy bylismy, ale przynajmniej zyskalem fajnego znajomego.
> Wracajac do tematu. Moze to jest ten moment. Na pewno masz racje, ze powinienem to zrobic. Zwlaszcza, ze poznalem z czym to sie je i jakies tam programy kilka lat temu nawetpisalem (na studiach i po nich). A juz nie pierwszy raz zlecam komus pisanie jakiegos programu. Kiedys zlecilem napisanie programu, który bedzie poszukiwal liczb Crandalla, które nie beda liczbami Wieferich (problem z zakresu matematyki teoretycznej). Potrafilem zostawic komputer odpalony na tydzien czasu, bo wzór, który to liczyl przebiegal po ogromnej liczbie wariacji wielu zmiennych. Niczego niestety nie znalazlem.
> Dzisiaj jednak mam inne juz nieco dalej idace plany. Docelowo chce zalozyc firme, startup, która ma stworzyc program szyfrujacy (na podstawie zaproponowanego przez mnie algorytmu) i opatentowac to rozwiazanie, czy to w postaci implementacji, czy ogólnie algorytmu. Nie sadze, ze bede w stanie zrealizowac ten plan samodzielnie, jako poczatkujacy programista. Tutaj potrzeba ludzi, którzy robia to od lat, a najlepiej takich z doswiadczeniem w kryptografii. I wobec koniecznosci zlecenia napisania takiego programu (a na poczatek testów), czy stworzenia calego oprogramowania, uczenie sie programowania samodzielnie jest troche jak zakladanie wlasnego zespolu kolarskiego i jednoczesne uczenie sie jazdy na rowerze. Wiadomo, ze prezes, czy sponsor zespolu sam nigdy na takiej kolarzówce nie bedzie sie tam scigal razem z zawodnikami, jak bardzo by sie nie staral.


Jest taka ksiazka, "Od dobrego do wielkiego", w której pojawia sie koncepcja "przywódcy 5 poziomu". Dziwne nazwy na bok, chodzi o to, ze autor przeanalizowal wiele firm, które odnioslo spektakularny sukces, i mu wyszlo, ze najlepsi przywódcy byli ekspertami w dziedzinie, w której dzialala firma.

(Moze brzmi to trywialnie, ale wiele firm zatrudnia jako liderów "etatowych menadzerów", którzy "znaja sie tylko nazarzadzaniu" i maja bardzo niewielka wiedze dziedzinowa).

W moim odczuciu programowanie dobrze uczy trzezwosci w odfiltrowywaniu magicznego myslenia od tego, co jest rzeczywiscie mozliwe do wykonania.

Zwlaszcza te pytania, które zadajesz, po prostu sie prosza o to, zebys to sprawdzil samodzielnie. To dobry pretekst, zeby przysiasc i odswiezyc sobie wiedze ze studiów. To jest naprawde na wyciagniecie reki.

Co do "niezbyt zdolnych prowadzacych zajecia", to nie jest to dobra wymówka.
Ja wiekszosci zajec z polibudy tez nie wspominam jakos rewelacyjnie - na uniwersytecie studiowalo mi sie duzo przyjemniej (zwlaszcza filozofie, ale nawet na infie nie bylo tak zle).

Ale to na polibudzie mielismy jednego profesora, który w kólko mówil, ze "albo ktos jest samoukiem, albo nieukiem". Nikt Cie niczego nie nauczy. Sam musisz sie nauczyc. Dobry nauczyciel moze tylko stworzyc okazje do zainteresowania sie przedmiotem.

Dlatego - jasne - dobrze by bylo, zebys znalazl sobie jakiegos magika od optymalizacji programu pod konkretny sprzet, botutaj jest duzo szczególików, których nie powinienes musiec poznawac. Ale napisanie programu w C czy chociaz Pythonie powinienes miec w malym palcu, bo to sa prosterzeczy.

Python nawet wspiera duze liczby, wiec w przeciwienstwie do C nie jestes ograniczony rozmiarem rejestrów.
Maciej Sobczak (08.12.2019, 21:24)
> > Dodam tylko, ze nie umiem programowac,
> A dlaczego nie rozwazysz "nauczenia sie programowania"?


Przychylam sie do tej sugestii.

Wyglada na to, ze potrafisz racjonalnie analizowac a nawet skonstruowac algorytm obliczenia czegos. Wlasciwie od tego miejsca do napisania programu, który demonstruje/testuje Twoje pomysly jest tylko prosty krok rzemieslniczy. Mozesz sie nawet zdziwic gdy zobaczysz, ze prezycyjny opis algorytmu jest latwiejszy w jakims jezyku programowania, niz w jezyku naturalnym - a przeciez zlecajac komus napisanie programu musialbys mu najpierw wytlumaczyc, co ma napisac.
Wiec po co sobie utrudniac?

Oczywiscie mozesz sobie zatrudnic kiedys specjalistów od wydziwiania i róznego rodzaju oszczednosci (czasu, energii elektrycznej, kosztów produkcji/wdrozenia, itd.), alezdolnosc napisania referencyjnej implementacji i tak bedzieCi potrzebna, zebys mógl byc dla swojego zespolu liderem a nie tylko szefem.

Wiec do dziela. Moze nawet faktycznie Python bedzie tu racjonalnym wyborem - dla Ciebie. Ale biorac pod uwage cel, który chcesz osiagnac, nie zatrudniaj programistów, którzy znaja tylko Pythona.
osobliwy nick (11.12.2019, 05:24)
> Jest taka ksiazka, "Od dobrego do wielkiego", w której pojawia sie koncepcja "przywódcy 5 poziomu". Dziwne nazwy na bok, chodzi o to, ze autor przeanalizowal wiele firm, które odnioslo spektakularny sukces, i mu wyszlo, ze najlepsi przywódcy byli ekspertami w dziedzinie, w której dzialala firma..

Pytanie, czy firma tworzaca program szyfrujacy powinna miec na czele bardziej programiste, czy specjaliste od algorytmów szyfrujacych. To rzadko idzie w parze, aczkolwiek wiadomo, ze najlepiej, aby potrafil jedno i drugie.

> Co do "niezbyt zdolnych prowadzacych zajecia", to nie jest to dobra wymówka.
> Ja wiekszosci zajec z polibudy tez nie wspominamjakos rewelacyjnie - na uniwersytecie studiowalo mi sie duzo przyjemniej (zwlaszcza filozofie, ale nawet na infie nie bylo tak zle).
> Ale to na polibudzie mielismy jednego profesora, który w kólko mówil, ze "albo ktos jest samoukiem, albo nieukiem". Nikt Cie niczego nie nauczy. Sam musisz sie nauczyc. Dobry nauczyciel moze tylko stworzyc okazje do zainteresowania sie przedmiotem.


To wiadomo. Rzecz w tym, ze wówczas po prostu zniechecilem sie nieco do programowania. Nauka szla ciezko i prowadzacy w tym szczególnie nie pomagali (byli opryskliwi). Co wiecej wszyscy uczestnicy zajec byli juz po jakichs kursach programowania na swoich drugich kierunkach, które studiowali na Politechnice, wiec lapali wszystko w lot. Ja natomiast stwierdzilem, ze chyba nie jestem powolany do programowania, skoro tak kiepsko mi idzie w porównaniu z nimi. Fakt, ze wlozylem mimo wszystko wówczas w to niewiele pracy, raczej niezbedne minimum.
osobliwy nick (11.12.2019, 05:40)
> Przychylam sie do tej sugestii.
> Wyglada na to, ze potrafisz racjonalnie analizowac a nawetskonstruowac algorytm obliczenia czegos. Wlasciwie od tego miejsca do napisania programu, który demonstruje/testuje Twoje pomysly jest tylko prosty krok rzemieslniczy. Mozesz sie nawet zdziwic gdy zobaczysz, ze prezycyjny opis algorytmu jest latwiejszy w jakims jezyku programowania, niz w jezyku naturalnym - a przeciez zlecajac komus napisanie programu musialbys mu najpierw wytlumaczyc, co ma napisac.
> Wiec po co sobie utrudniac?


Mialem taki moment powrotu do programowania. Napisalem nawet pierwszy program od lat. Chodzilo o ten problem:



Poleglem jednak wtedy. Napisanie tego bylo dla mnie nie do przeskoczenia, a jak zobaczylem kod, którego oczywiscie nie rozumialem, który ktos napisal ot tak, po krótkim czasieod reki, stwierdzilem, ze raczej zadnym rozsadnymczasie nie osiagne takiego poziomu. Ostatecznie na podstawie tego co mi tam zasugerowano zlecilem komus odplatnie napisanie tego programu. Programista z tego co pamietam i tak napisal caly kod od poczatku po swojemu, ale byl on nie mniej zlozony od tego, który podpowiadano mi w watku.

I wtedy z poziomu dosyc wysokiej motywacji popadlem w marazm i zostawilem programowanie na kolejne lata.

> Oczywiscie mozesz sobie zatrudnic kiedys specjalistów od wydziwiania i róznego rodzaju oszczednosci (czasu, energii elektrycznej, kosztów produkcji/wdrozenia, itd.), ale zdolnosc napisania referencyjnej implementacji i tak bedzie Ci potrzebna, zebys mógl byc dla swojego zespolu liderem a nie tylko szefem.


No tak, masz racje.

> Wiec do dziela. Moze nawet faktycznie Python bedzie tu racjonalnym wyborem - dla Ciebie. Ale biorac pod uwage cel, który chcesz osiagnac, nie zatrudniaj programistów, którzy znaja tylko Pythona.


Ok. Zmotywowaliscie mnie. Bede myslal w takim razie o powrocie do tematu programowania. A wlasciwie o zaczeciuod poczatku, bo pomimo, ze wiem co to programowanie, jak to sie robi itd., to moje praktycznie umiejetnosci sa znikome. Co do jezyka myslalem o C++, bo czesto mam do policzenia jakies matematyczne rzeczy, a ten jezyk kojarzy mi sie z takimi inzynierskimi i matematycznymi zastosowaniami. Poza tym latwo znalezc materialy na jego temat.
godek.maciek (11.12.2019, 13:53)
W dniu sroda, 11 grudnia 2019 04:40:28 UTC+1 uzytkownik osobliwy nick napisal:
> > Przychylam sie do tej sugestii.

> Ok. Zmotywowaliscie mnie. Bede myslal w takim razie o powrocie do tematu programowania. A wlasciwie o zaczeciu od poczatku, bo pomimo, ze wiem co to programowanie, jak to sie robi itd., to moje praktycznie umiejetnosci sa znikome. Co do jezyka myslalem o C++, bo czesto mam do policzenia jakies matematyczne rzeczy, a ten jezyk kojarzy mi sie z takimi inzynierskimi i matematycznymi zastosowaniami. Poza tym latwo znalezc materialy na jego temat.


Ja osobiscie raczej bym odradzal C++ do Twoich zastosowan.
Jest to jezyk nadmiernie skomplikowany, i nawet nie za dobrze radzi sobie z liczbami (domyslnie implementuje arytmetyke modulo 2^32 albo 2^64)

Raczej bym polecal albo Racket, bo jest bardzo prosty i jest dla niegoduzo dobrych materialów dydaktycznych, a do tego wspiera odrazu arytmetyke o dowolnej precyzji oraz liczby wymierne. Sposród materialów dydaktycznych jest ksiazka "How To Design Programs", dostepna za darmo tutaj (jakosciowo o rzedywielkosci lepsza od jakichkolwiek materialów o C++, z jakimi mialem stycznosc):



Na podstawie tej ksiazki powstal kurs o systematycznym projektowaniu programów:



Jest tez nieco starsza, ale wciaz nie chcaca sie zestarzec ksiazka "Structure and Interpretation of Computer Programs" (wydana swego czasu tez po Polsku przez WNT jako "Struktura iInterpretacja Programów Komputerowych"), udostepniona za darmo na stronie MIT:



Kurs, na potrzeby którego ksiazka zostala opracowana, równiez mozna znalezc na youtubie:



Warto ewentualnie rozwazyc jezyk Haskell, który jest bardziej zlozony, ale ma dosc wydajna implementacje,i jest tez sobie w stanie poradzic z duzymi liczbami (i podwzgledem skladni mocno przypomina klasyczna notacje matematyczna).

Rozwiazanie podlinkowanego przez Ciebie przykladu wygladaloby tak.
Najpierw definiujemy sobie iloczyn kartezjanski listy list, zeby móc generowac ciagi wartosci x1, ..., xN:

cartprod [] = [[]]
cartprod (xs:xss) = [x:ys | x <- xs, ys <- cartprod xss]

wyprowadzenie powyzszej definicji mozesz znalezc tutaj:


nastepnie definiujemy produkt kartezjanski

cartpow l n = cartprod $ take n $ repeat l

gdzie (repeat l) tworzy nieskonczona liste powtórzen listy l, zas take n bierze tylko n poczatkowych elementów.

Poniewaz jest u Ciebie warunek, ze

x1 >= x2 >= ... >= xN

to mozemy wybrac tylko te punkty z iloczynu kartezjanskiego,których wartosciami sa nierosnace ciagi:

nonasc (x:y:zs) = x >= y && nonasc (y:zs)
nonasc _ = True

Wreszcie, funkcja budujaca zbiory punktów [x1, ..., xN] mozemiec postac:

dom x n = [p | p <- (cartpow [0 .. x] n), nonasc p]

czyli zbiór wszystkich punktów z potegi kartezjanskiej,których kolejne wspólrzedne tworza ciag nierosnacy.

Mozna latwo sprawdzic, ze np. (dom 3 2) da nam wartosc

[[0,0],[1,0],[1,1],[2,0],[2,1],[2,2],[3,0],[3,1],[3,2],[3,3]]

I teraz chcemy znalezc elementy, które spelniaja Twoje kryterium.
Zeby Haskell obsluzyl liczby wymierne, trzeba zaladowac modul Data.Ratio:

import Data.Ratio

Operator dzielenia wymiernego liczb calkowitych jest wówczas wyrazany symbolem %.

Pozwala to zdefiniowac nam zbiór interesujacych Cie 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 mozemy sprawdzic, ze wyrazenie (ws 3 3 3) da nam liste

[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 podales w swoim drugim poscie, wiec mozliwe, ze zle zrozumialem specyfikacje.

W kazdym razie "rozmawiajac" sobie z interpreterem Racketa albo Haskella, mozesz dosc latwo przeszukac interesujace Cie dziedziny.
Maciej Sobczak (11.12.2019, 21:46)
> Ja osobiscie raczej bym odradzal C++ do Twoich zastosowan. [...]

A ja bym nie odradzal, bo jesli pomysl ma ostatecznie zostac skomercjalizowany, to *nieuniknionym* targetem bedzie wlasnie C++.

Wiec jesli jest juz entuzjazm do C++ (w odróznieniu do wspomnianego Pythona), to nie ma powodu, zeby z niego rezygnowac.

> Raczej bym polecal albo Racket, [...]
> Warto ewentualnie rozwazyc jezyk Haskell, [...]


No jednak nie powstrzymales sie. :-)
W takim razie obowiazkowe:



W temacie eksploracji zagadnien matematycznych Wolfram nie ma merytorycznej konkurencji.
Ale przeciez juz o tym bylo. :-)
godek.maciek (11.12.2019, 22:47)
W dniu sroda, 11 grudnia 2019 20:46:36 UTC+1 uzytkownik Maciej Sobczak napisal:
> > Ja osobiscie raczej bym odradzal C++ do Twoich zastosowan.

> [...]
> A ja bym nie odradzal, bo jesli pomysl ma ostatecznie zostac skomercjalizowany, to *nieuniknionym* targetem bedzie wlasnie C++.
> Wiec jesli jest juz entuzjazm do C++ (w odróznieniu do wspomnianego Pythona), to nie ma powodu, zeby z niego rezygnowac.


C++ to jezyk, na którym niestety latwo sie sparzy. A jego nieuniknionosc to raczej mit. (Jest np. firma tradingowa Jane Street, która do swoich zastosowan wymagajacych duzej wydajnosci uzywa jezyka OCaml. A Mozilla konsekwentnie zastepuje C++a w Firefoxie Rustem)
Roman Tyczka (12.12.2019, 10:59)
On Sat, 7 Dec 2019 13:38:59 -0800 (PST), godek.maciek wrote:

> Jest taka ksiazka, "Od dobrego do wielkiego", w której pojawia sie
> koncepcja "przywódcy 5 poziomu". Dziwne nazwy na bok, chodzi o to, ze
> autor przeanalizowal wiele firm, które odnioslo spektakularny sukces, i
> mu wyszlo, ze najlepsi przywódcy byli ekspertami w dziedzinie, w której
> dzialala firma.
> (Moze brzmi to trywialnie, ale wiele firm zatrudnia jako liderów
> "etatowych menadzerów", którzy "znaja sie tylko na zarzadzaniu" i maja
> bardzo niewielka wiedze dziedzinowa).
> W moim odczuciu programowanie dobrze uczy trzezwosci w odfiltrowywaniu
> magicznego myslenia od tego, co jest rzeczywiscie mozliwe do wykonania.


100% racji i celnie ujete, szkoda, ze w praktyce rzadko sie to spotyka.

btw a ksiazke o której wspomniales juz sobie zamówilem, dzieki za cynk,
wydaje sie ciekawa pozycja

Podobne w±tki