-
1. Data: 2013-05-03 08:13:52
Temat: Stara szkoła w XXI wieku
Od: Edek <e...@g...com>
Ktoś wspominał Mandelbrota:
http://julialang.org
http://julialang.org/blog/2012/02/why-we-created-jul
ia/
Na stronie jest benchmark. Typy używane tam gdzie chce się ich
użyć, lispowate makra, JIT, przyjemna składnia, zrównoleglanie
jedną linijką, repl...
--
Edek
-
2. Data: 2013-05-03 13:02:49
Temat: Re: Stara szkoła w XXI wieku
Od: firr kenobi <p...@g...com>
W dniu piątek, 3 maja 2013 08:13:52 UTC+2 użytkownik Edek napisał:
> Ktoś wspominał Mandelbrota:
>
>
>
> http://julialang.org
>
> http://julialang.org/blog/2012/02/why-we-created-jul
ia/
>
>
>
> Na stronie jest benchmark. Typy używane tam gdzie chce się ich
>
> użyć, lispowate makra, JIT, przyjemna składnia, zrównoleglanie
>
> jedną linijką, repl...
>
zalozenia dosyc sensowne mz,
z tego co tam przejrzalem najciekawsze dla mnie zdanie
"We never want to mention types when we don't feel like it. But when we need
polymorphic functions, we want to use generic programming to write an algorithm just
once and apply it to an infinite lattice of types; "
(dla mnie ciekawe bo do tej pory nie
rozwazalem tego w ten sposob, i np sluszna
uwaga ze jak na wejsciu funkcji zbioru
mandelbrota pojawi sie rzeczywista nie complex
to rzeczywista wersja tez zadziala, a jak int
to wersja int tez akurat zadziala - i mozliwosc
ie pisania typu tez jest czasem dobra - wiec jest
to ciekawe mimo ze z drugiej strony jest szereg
watpliowsci w druga strone itp, ale ciekawe)
drugie dla mnie najciekawze zdanie
"Systems programming is definitely in no way a goal. If that's the target, C is still
the language of choice, of course. However, C is still the golden standard for
general performance -- although, of course, Fortran beats it in some cases."
jest to tajemnica ktora sie przejawia od jakiegos
czasu w moim zyciu - w jakich to cases fortran
beats c ??? (mozliwe ze tak jest ale to raczej
z jakichs 'pzypadkowych' powodow typu pewnie
cos ze zmiennymi lokalnymi albo conwencja
wywolan funkcji w c albo cos takiego - pozatym
raczej chyba nie ma powodu wiec nie powinno tak
byc ale chetnie bym sie dowiedzial)
z innych ciekawostek: CO TO ROBI ?
function randmatstat(t)
n = 5
v = zeros(t)
w = zeros(t)
for i = 1:t
a = randn(n,n)
b = randn(n,n)
c = randn(n,n)
d = randn(n,n)
P = [a b c d]
Q = [a b; c d]
v[i] = trace((P.'*P)^4)
w[i] = trace((Q.'*Q)^4)
end
std(v)/mean(v), std(w)/mean(w)
end
wogole widze odwrot od klamer i wrocenie do
'połowy pascale' tj end bez begin (zgadza sie
ze klamry w ce to nieco kontrowersyjna :/ sprawa)
-
3. Data: 2013-05-03 14:04:50
Temat: Re: Stara szkoła w XXI wieku
Od: "M.M." <m...@g...com>
W dniu piątek, 3 maja 2013 13:02:49 UTC+2 użytkownik firr kenobi napisał:
> wogole widze odwrot od klamer i wrocenie do
> 'połowy pascale' tj end bez begin (zgadza sie
> ze klamry w ce to nieco kontrowersyjna :/ sprawa)
Wydawało się, że java ugruntowała pozycję, a nawet
znaczenie klamerek w językach programowania,a tu
taki python je olał :)
Pozdrawiam
-
4. Data: 2013-05-03 14:08:51
Temat: Re: Stara szkoła w XXI wieku
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2013-05-03, M.M. <m...@g...com> wrote:
> W dniu piątek, 3 maja 2013 13:02:49 UTC+2 użytkownik firr kenobi napisał:
>
>> wogole widze odwrot od klamer i wrocenie do
>> 'połowy pascale' tj end bez begin (zgadza sie
>> ze klamry w ce to nieco kontrowersyjna :/ sprawa)
> Wydawało się, że java ugruntowała pozycję, a nawet
> znaczenie klamerek w językach programowania,
Eee... Że co? Niby jak? To raczej C ugruntowało. Java nic nie wniosła
nowego do języków programowania, ani paradygmatu, ani środowiska
uruchomieniowego, ani sposobów postępowania z kodem.
--
Secunia non olet.
Stanislaw Klekot
-
5. Data: 2013-05-03 14:13:28
Temat: Re: Stara szkoła w XXI wieku
Od: Edek <e...@g...com>
Dnia Fri, 03 May 2013 04:02:49 -0700 po głębokim namyśle firr kenobi
rzekł:
> drugie dla mnie najciekawze zdanie
>
> "Systems programming is definitely in no way a goal. If that's the
> target, C is still the language of choice, of course. However, C is
> still the golden standard for general performance -- although, of
> course, Fortran beats it in some cases."
>
> jest to tajemnica ktora sie przejawia od jakiegos czasu w moim zyciu - w
> jakich to cases fortran beats c ??? (mozliwe ze tak jest ale to raczej z
> jakichs 'pzypadkowych' powodow typu pewnie cos ze zmiennymi lokalnymi
> albo conwencja wywolan funkcji w c albo cos takiego - pozatym raczej
> chyba nie ma powodu wiec nie powinno tak byc ale chetnie bym sie
> dowiedzial)
Fortran przez lata królował w obliczeniach numerycznych, teraz już
bardziej używane jest C++.
Na pytanie 'dlaczego' nie ma trywialnej odpowiedzi: Fortran numerycznie
jest szybszy od C dość często, Python jest wolniejszy tak ze 20x minimum
praktycznie zawsze - tak po prostu jest, zaakceptuj to jak pogodę.
> z innych ciekawostek: CO TO ROBI ?
>
> function randmatstat(t)
> n = 5 v = zeros(t)
> w = zeros(t)
> for i = 1:t
> a = randn(n,n)
> b = randn(n,n)
> c = randn(n,n)
> d = randn(n,n)
> P = [a b c d]
> Q = [a b; c d]
> v[i] = trace((P.'*P)^4)
> w[i] = trace((Q.'*Q)^4)
> end std(v)/mean(v), std(w)/mean(w)
> end
Wklejam wersję c. Od "co" ważniejsze dla mnie jest "jak".
Edek
PS. Kod w c:
struct double_pair randmatstat(int t) {
int n = 5;
struct double_pair r;
double *v = (double*)calloc(t,sizeof(double));
double *w = (double*)calloc(t,sizeof(double));
double *a = (double*)malloc((n)*(n)*sizeof(double));
double *b = (double*)malloc((n)*(n)*sizeof(double));
double *c = (double*)malloc((n)*(n)*sizeof(double));
double *d = (double*)malloc((n)*(n)*sizeof(double));
double *P = (double*)malloc((n)*(4*n)*sizeof(double));
double *Q = (double*)malloc((2*n)*(2*n)*sizeof(double));
double *PtP1 = (double*)malloc((4*n)*(4*n)*sizeof(double));
double *PtP2 = (double*)malloc((4*n)*(4*n)*sizeof(double));
double *QtQ1 = (double*)malloc((2*n)*(2*n)*sizeof(double));
double *QtQ2 = (double*)malloc((2*n)*(2*n)*sizeof(double));
for (int i=0; i < t; i++) {
randmtzig_fill_randn(a, n*n);
randmtzig_fill_randn(b, n*n);
randmtzig_fill_randn(c, n*n);
randmtzig_fill_randn(d, n*n);
memcpy(P+0*n*n, a, n*n*sizeof(double));
memcpy(P+1*n*n, b, n*n*sizeof(double));
memcpy(P+2*n*n, c, n*n*sizeof(double));
memcpy(P+3*n*n, d, n*n*sizeof(double));
for (int j=0; j < n; j++) {
for (int k=0; k < n; k++) {
Q[2*n*j+k] = a[k];
Q[2*n*j+n+k] = b[k];
Q[2*n*(n+j)+k] = c[k];
Q[2*n*(n+j)+n+k] = d[k];
}
}
cblas_dgemm(CblasColMajor, CblasTrans, CblasNoTrans,
n, n, 4*n, 1.0, P, 4*n, P, 4*n, 0.0, PtP1, 4*n);
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans,
4*n, 4*n, 4*n, 1.0, PtP1, 4*n, PtP1, 4*n, 0.0, PtP2,
4*n);
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans,
4*n, 4*n, 4*n, 1.0, PtP2, 4*n, PtP2, 4*n, 0.0, PtP1,
4*n);
for (int j=0; j < n; j++) {
v[i] += PtP1[(n+1)*j];
}
cblas_dgemm(CblasColMajor, CblasTrans, CblasNoTrans,
2*n, 2*n, 2*n, 1.0, Q, 2*n, Q, 2*n, 0.0, QtQ1, 2*n);
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans,
2*n, 2*n, 2*n, 1.0, QtQ1, 2*n, QtQ1, 2*n, 0.0, QtQ2,
2*n);
cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans,
2*n, 2*n, 2*n, 1.0, QtQ2, 2*n, QtQ2, 2*n, 0.0, QtQ1,
2*n);
for (int j=0; j < 2*n; j++) {
w[i] += QtQ1[(2*n+1)*j];
}
}
free(PtP1);
free(PtP2);
free(QtQ1);
free(QtQ2);
free(P);
free(Q);
free(a);
free(b);
free(c);
free(d);
double v1=0.0, v2=0.0, w1=0.0, w2=0.0;
for (int i=0; i < t; i++) {
v1 += v[i]; v2 += v[i]*v[i];
w1 += w[i]; w2 += w[i]*w[i];
}
free(v);
free(w);
r.s1 = sqrt((t*(t*v2-v1*v1))/((t-1)*v1*v1));
r.s2 = sqrt((t*(t*w2-w1*w1))/((t-1)*w1*w1));
return r;
}
-
6. Data: 2013-05-03 14:53:51
Temat: Re: Stara szkoła w XXI wieku
Od: "M.M." <m...@g...com>
W dniu piątek, 3 maja 2013 14:08:51 UTC+2 użytkownik Stachu 'Dozzie' K. napisał:
> Eee... Że co? Niby jak? To raczej C ugruntowało. Java nic nie wniosła
> nowego do języków programowania, ani paradygmatu, ani środowiska
> uruchomieniowego, ani sposobów postępowania z kodem.
Ważna jest jeszcze popularność. C był pierwszym językiem który
stał się popularny i miał klamerki (w takim znaczeniu). Można powiedzieć
więc, że C wniósł, a Java ugruntowała. O ile się nie mylę, podstawy Pythona
powstały wcześniej od Javy, ale popularność (przynajmniej tam gdzie zdołałem
zaobserwować) zdecydowanie najpierw zdobyła Java a długo potem Python. Na
podstawie składni tak popularnych języków jak Javy i C, dużo ludzi wypowiadało
się, że składnia C-podobna albo Javo-podobna będzie dominowała w językach
programowania. Tymczasem w Pythonie, który cały czas zdobywa zwolenników,
zamiast klamerek jest takie dziwo jak głębokość wcięć.
Jakby wziąć kolejność powstawania języków a nie zdobywania popularności, to
wyglądałoby inaczej.
Pozdrawiam
-
7. Data: 2013-05-03 15:23:10
Temat: Re: Stara szkoła w XXI wieku
Od: Kosu <K...@n...com>
On 2013-05-03, M.M. <m...@g...com> wrote:
> zaobserwować) zdecydowanie najpierw zdobyła Java a długo potem Python. Na
> podstawie składni tak popularnych języków jak Javy i C, dużo ludzi wypowiadało
> się, że składnia C-podobna albo Javo-podobna będzie dominowała w językach
> programowania. Tymczasem w Pythonie, który cały czas zdobywa zwolenników,
> zamiast klamerek jest takie dziwo jak głębokość wcięć.
Python cały czas zdobywa zwolenników, bo robi się na nim taka typowa
"bańka" (jak w finansach). Wszyscy się uczą, wszyscy polecają, wszędzie
się go wykorzystuje (często na siłę, bo modny i fajny). Trudno
powiedzieć, co zostanie z dzisiejszej popularności Pythona za 10 lat.
A C/C++/C# pewnie będzie się miał całkiem dobrze. I za 30 lat też.
Jednak co tu kryć: Python to głównie różne web'y, małe aplikacje itp.
(choć i do większych rzeczy się go używa). C/C++ to systemu operacyjne,
oprogramowanie naukowe, oprogramowanie płatne, biblioteki obliczeniowe.
Wiadomo jakie są tego efekty. Istotna aktualizacja Pythona powstaje
szybciej, niż na wstępną rozmowę zbierają się wszyscy ważni panowie
od C++ :).
A z drugiej strony jest właśnie trwałość ("bezwładność") języka.
Zobaczcie ile modnych języków zaginęło w mrokach dziejów, a IMO
okropny Fortran trzyma się całkiem dobrze (bo napisano w nim kilka
bibliotek obliczeniowych i kilka sterowników do sprzętu naukowego
czy przemysłowego).
pozdrawiam,
Kosu
-
8. Data: 2013-05-03 16:09:39
Temat: Re: Stara szkoła w XXI wieku
Od: "M.M." <m...@g...com>
W dniu piątek, 3 maja 2013 15:23:10 UTC+2 użytkownik Kosu napisał:
> Python cały czas zdobywa zwolenników, bo robi się na nim taka typowa
> "bańka" (jak w finansach). Wszyscy się uczą, wszyscy polecają, wszędzie
> się go wykorzystuje (często na siłę, bo modny i fajny). Trudno
> powiedzieć, co zostanie z dzisiejszej popularności Pythona za 10 lat.
> A C/C++/C# pewnie będzie się miał całkiem dobrze. I za 30 lat też.
Nie znam prawdziwej przyczyny popularności Pythona. Moim zdaniem
przyczyną jest ukrywanie szczegółów przed programistą. Python
ukrywa więcej niż Java i znacznie więcej niż C/C++. Gdy dziś się
proponuje programowanie w C, czy C++, to pytają się czy jesteś
szaleńcem czy masochistą :)
> Jednak co tu kryć: Python to głównie różne web'y, małe aplikacje itp.
> (choć i do większych rzeczy się go używa). C/C++ to systemu operacyjne,
> oprogramowanie naukowe, oprogramowanie płatne, biblioteki obliczeniowe.
> Wiadomo jakie są tego efekty. Istotna aktualizacja Pythona powstaje
> szybciej, niż na wstępną rozmowę zbierają się wszyscy ważni panowie
> od C++ :).
Można zaprojektować język który będzie i wygodny i nie straci dużo na
wydajności, i będzie kompilowany do kodu maszynowego.
> A z drugiej strony jest właśnie trwałość ("bezwładność") języka.
> Zobaczcie ile modnych języków zaginęło w mrokach dziejów, a IMO
> okropny Fortran trzyma się całkiem dobrze (bo napisano w nim kilka
> bibliotek obliczeniowych i kilka sterowników do sprzętu naukowego
> czy przemysłowego).
No tak, ale mnie się nie chce zawsze klepać niskopozimowo w C++,
pomimo że lubię ten język. Często da się napisać aplikacje bez
wnikania w to czym jest wskaźnik i jak dany kompilator skompiluje
zagnieżdżone szablony z dziedziczeniem wirtualnym. Niemniej w takich
aplikacjach też oczekuję jakiejś sensownej wydajności, albo możliwości
ukrycia kodu źródłowego. W zwykłych zastosowaniach C/C++ to przesada w
jedną stronę, a Java i Python (choć to całkiem inne języki) to przesada
w drugą stronę.
Pozdrawiam
-
9. Data: 2013-05-03 17:39:53
Temat: Re: Stara szkoła w XXI wieku
Od: Kosu <K...@n...com>
On 2013-05-03, M.M. <m...@g...com> wrote:
> Nie znam prawdziwej przyczyny popularności Pythona. Moim zdaniem
> przyczyną jest ukrywanie szczegółów przed programistą. Python
JAsne. Python jest łatwym językiem, a dla ogromnej większości
użytkowników jego wady nie są zauważalne, a zalety (łatwy w pisaniu
i czytaniu, bardzo szybko się klepie dzięki świetnym bibliotekom)
rzucają na kolana. Nie trzeba być bardzo dobrym programistą, żeby
napisać naprawdę przyzwoity program. M.in. dlatego uwielbiają go
naukowcy (chyba przede wszystkim fizycy).
Ale są też wady i na jedną zwróciłem poprzednio uwagę. Pythona
używa się do prostych i głównie niekomercyjnych projektów.
To oznacza, że jeśli za 5 lat ktoś wyskoczy z super nowym łatwym
pomysłem - np. językiem "Świstak", który będzie jeszcze prostszy
i będzie miał jeszcze nowsze biblioteki, to ludzie przerzucą się
momentalnie :). I potem będą inne Żóbry i Bobry, a wspólną ich cechą
będzie to, że będzie się w nich pisało na OSie napisanym w C-czymśtam
(a jak dobrze pójdzie, to będą korzystały z bibliotek w Fortranie :P).
Oczywiście Pythonowi źle nie życzę, wręcz sam bardzo lubię w nim pisać
(choć akurat programować uczyłem się na C++ i to jest mój główny
język od 15 lat). Ale jeśli ktoś dziś ma kilkanaście lat, to po prostu
odradzam nadmierne przywiązanie (tzn. zostanie "fanboyem"),
bo w momencie wejścia na rynek pracy mogą natrafić głównie na oferty
od jakiegoś Rysia, a Python będzie dla zgredów takich jak ja :).
> Można zaprojektować język który będzie i wygodny i nie straci dużo na
> wydajności, i będzie kompilowany do kodu maszynowego.
No Ryś, mówię przecież.
> No tak, ale mnie się nie chce zawsze klepać niskopozimowo w C++,
Mi się nigdy nie chce, ale klepię. Relatywnie najlepiej się w tym
języku czuję, mam najwięcej doświadczenia i najwięcej gotowych
własnych bibliotek. A po studiach tak naprawdę programuję mniej
i głównie w VBA (:D). Nawet w nowego C++ i C# nie bardzo mam czas
się wgryzać, a pewnie głównie z tymi językami jest jakoś związana
moja przyszłość (no i z VBA :D).
> ukrycia kodu źródłowego. W zwykłych zastosowaniach C/C++ to przesada w
> jedną stronę, a Java i Python (choć to całkiem inne języki) to przesada
> w drugą stronę.
Java mnie odrzuca. Nie cierpię tej składni, nie mogę znaleźć fajnego
IDE (Netbeans jest za wolny, z Eclipse po prostu nie mogę się dogadać).
Kupiłem sobie jakiś czas temu telefon z Androidem myśląc "teraz nauczę
się Java, będę pisał sobie applikacje, może coś zarobię na Play".
I gucio. Powinienembył odkładać na iPada, bo na Objective-C
przestawiłbym się momentalnie i miałbym więcej frajdy (osobną kwestią
jest możliwość pisania na sprzęt Apple nie mając żadnego OS X ^^).
pozdrawiam,
Kosu
-
10. Data: 2013-05-03 21:47:36
Temat: Re: Stara szkoła w XXI wieku
Od: Bronek Kozicki <b...@s...net>
On 03/05/2013 07:13, Edek wrote:
> Ktoś wspominał Mandelbrota:
>
> http://julialang.org
> http://julialang.org/blog/2012/02/why-we-created-jul
ia/
>
> Na stronie jest benchmark. Typy używane tam gdzie chce się ich
> użyć, lispowate makra, JIT, przyjemna składnia, zrównoleglanie
> jedną linijką, repl...
fajne, dzięki
B.