Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Programski jezik za istraživače

[es] :: Nauka :: Programski jezik za istraživače

[ Pregleda: 2653 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Programski jezik za istraživače24.02.2012. u 15:05 - pre 147 meseci
Zamislite nekog istraživača u oblasti koja nije računarska nauka. Nema previše vremena da se udubljuje u neke složene jezike, a ponekad mu treba da nešto isprogramira, izračuna itd. Šta troše istraživači? Čuo sam da fizičari masovno troše FORTRAN jer postoji gomila napisanog koda u FORTRAN-u za fizičke probleme. A ostali?
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Bojan Basic
Novi Sad

SuperModerator
Član broj: 6578
Poruke: 3996
*.uns.ac.rs.

Jabber: bojan_basic@elitesecurity.org
ICQ: 305820253


+605 Profil

icon Re: Programski jezik za istraživače24.02.2012. u 16:02 - pre 147 meseci
Iz ličnog iskustva, što se matematičkih nauka tiče, Mathematica je nezamenjiva (naglašavam, stav je subjektivan, nije isključeno da će neko drugi imati drugačije mišljenje).

Mane:

1. cena (doduše, neko ko radi na matematičkom fakultetu/institutu trebalo bi da se može snaći preko matične ustanove);
2. drastično sporija od mnogih drugih solucija.

Prednosti, kratko i jasno:

1. fantastične mogućnosti.

Ova prednost meni neutrališe pomenutu sporoću — radije ću za deset minuta isprogramirati nešto pa čekati tri sata da program sračuna svoje, nego da se u nekom drugom programskom paketu patim s programiranjem danima (i to ako sam uopšte u stanju isprogramirati to što hoću u drugom programskom paketu!) kako bi program svoje sračunao za pola sata.
Ljubičice crvena, što si plava kô zelena trava.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Programski jezik za istraživače24.02.2012. u 17:00 - pre 147 meseci
Za većinu nauka koje nemaju puno veze sa matematikom ili Fizikom, najkorišćeniji alat je Excel (ne šalim se). U nekoliko slučajeva sam pomagao da se naprave takvi excel fajlovi, uglavnom je problem bio kako da gomila sirovih podatak bude učitana u excel, a za to sam koristio awk ili C.
 
Odgovor na temu

Au197/79
Zlatan Kadragić
Minhen

Član broj: 3556
Poruke: 772
*.cpe.vektor.net.

Sajt: aurelije.blogspot.com


+47 Profil

icon Re: Programski jezik za istraživače24.02.2012. u 17:52 - pre 147 meseci
Ako se baš traži programski jezik tad je jedini odgovor Python.

Python je postao standard, lak je za korišćenje pa je izbor ljudi kojima programiranje nije primarno zanimanje već alat u poslu. Uz to ima odličnu podršku u vidu biblioteka i mogućnosti da se ne iz pythona pristupi preko binding-a mnogim poznatim biblitekamam pisanim u Fortranu i C-u.

Postoji Sage projekat da objedini i poveže mnoge biblioteke u jednu veliku
Bolje džaba ležat nego džaba radit.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Programski jezik za istraživače24.02.2012. u 19:09 - pre 147 meseci
Ma, jasno je meni da ljudi koriste matematiku i matlab, pa i eksel, ali šta kad nešto mora da se isprogramira? Daleko od toga da mislim da se to radi svaki dan, tako da odgovor "najkorišćeniji alat je eksel" ne odgovara postavljeno pitanju, osim ako se time želi reći da za klasičnim programskikm jezicima nikada ne postoji potreba. Bojane, da li smatraš da pored matematike nikada nema potrebe za pravim programskim jezicima kada su matematička istraživanja u pitanju? Da li bi dokazivač teorema pravio u matematici ili prologu?

Eto, meni je član petarm rekao da je fortran dominantan u fizici. Takođe, član Časlav Ilić je jednom prilikom napisao da od tih komercijalnih paketa nema ništa na superračunarima.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Programski jezik za istraživače24.02.2012. u 19:26 - pre 147 meseci
Dok sam još bio na faksu, hteo sam malo da radim neke projekte koji su malo napredniji. Bio je jedan projekat za kristalografiju X zracima. Trebalo je da se sredi program koji je na osnovu očitavanja sa uređaja proračunavao parametre materijala. Program je bio za PC i pisan malo u Pascalu, malo u C-u. Otprilike, svaki istraživač koji je radio neka istraživanja, dodavao je svoj deo koda u omiljenom jeziku, pa su tražili nekoga da očisti program od bloata i da malo uredi to sve, međutim, vrlo brzo sam odustao.

Za ozbiljna izračunavanja, koriste se najčešće superkompjuteri koji su pod Linuxom, a koristi se FORTRAN kompajler koji zna da paralelizuje izvršavanje programa. Oni na mom faksu koji nisu bili na računarskom smeru, uglavnom su znali samo FORTRAN, a kako sam bio deo inventara računskog centra, često sam im pomagao. Uglavnom im je bio problem da isprogramiraju rutine za crtanje na ploteru, sa ostalim stvarim je bilo lako. Naravno obilato su koristili gotove rutine za numeričke metode...
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Programski jezik za istraživače24.02.2012. u 19:43 - pre 147 meseci
Ne bih rekao da fortran zna da paralelizuje problem, već to mora da uradi čovek i da ispali više niti. No, dobro.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Programski jezik za istraživače24.02.2012. u 20:05 - pre 147 meseci
Grešiš, pretpostavljam da si imao neki predmet pod nazivom paralelno programiranje ili nešto slično i da, recimo znaš za metod koji se zove razmotavanje petlji? Ako ne znaš, onda da ti dam primer. Recimo, potrebno je izračunati


u C-u bi napisao nešto kao
Code:

for(i=0, i<n; i++) d[i] = a[i]*b[i]+c[i];


Pretpostavimo da imaš 2 FP množača i 2 FP sabirača. Tada bi ti kompajler dao sledeći kod:

Code:

// pretpetlja
x[0] = a[0]*b[0];
x[1] = a[1]*b[1];

// razmotana petlja

for(i=0; i<(n/2)*2-4; i+=2) {
  d[i] = x[i]+c[i];
  d[i+1] = x[i+1] + c[i+1];
  x[i+2] = a[i+2]*b[i+2];
  x[i+3] = a[i+3]*b[i+3] }

// postpetlja koja se radi za poslednjih 1 - 3 članova niza



Još da dodam, paralelni kompajleri će uvek ovakvu konstrukciju:

i = i + 1

pretvoriti u

i1 = i + 1

i dalje u programu baratati sa i1.

Princip je: jednoj promenljivoj se samo jednom dodeljuje vrednost. Vrednost takve promenljive se koristi tek kada se ta vrednost izračuna. Redosled kojim se računaju promenljive nije unapred poznat.

[Ovu poruku je menjao djoka_l dana 24.02.2012. u 21:17 GMT+1]
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Programski jezik za istraživače24.02.2012. u 20:30 - pre 147 meseci
Još jedana informacija, Cray superkomjuter je radio kao FP procesor za host mašinu. Mogao je istovremeno da sabere ili pomnoži članove dva niza od maksimalno 64 elementa. Kompajler je bio taj koji je gurao bečeve od po 128 argumenata da ih Cray obradi...
 
Odgovor na temu

Bojan Basic
Novi Sad

SuperModerator
Član broj: 6578
Poruke: 3996
*.dynamic.sbb.rs.

Jabber: bojan_basic@elitesecurity.org
ICQ: 305820253


+605 Profil

icon Re: Programski jezik za istraživače24.02.2012. u 21:06 - pre 147 meseci
Citat:
Nedeljko:
Ma, jasno je meni da ljudi koriste matematiku i matlab, pa i eksel, ali šta kad nešto mora da se isprogramira?

Da, razumeli smo se, o tome i jesam pričao.
Citat:
Nedeljko:
Bojane, da li smatraš da pored matematike nikada nema potrebe za pravim programskim jezicima kada su matematička istraživanja u pitanju? Da li bi dokazivač teorema pravio u matematici ili prologu?

„Nikad“ je previše isključiva reč. Jasno je da, koji god programski jezik da izabereš, lako ćeš smisliti neki specifičan kontraprimer koji je vrlo nezgodan baš za taj programski jezik. Eto, što se dokazivača teorema tiče, zaista je daleko zgodnije to izvesti u Prologu nego u Mathematici, ali tu isto tako Prolog šije i C++, i većinu drugih klasičnih programskih jezika. S druge pak strane, Prolog je prilično specifičan jezik, i pred većinom maltene svakodnevnih programerskih problema praktično je nemoćan.

Dakle, ako je pitanje koji programski jezik bi trebalo da nauči taj tvoj hipotetički istraživač a da s tim jednim programskim jezikom pokrije sve moguće potrebe, onda je odgovor: ne postoji takav. No, ako je pokoji kontraprimer dopušten, a pitanje je s čim će pokriti priličan deo onoga što mu treba, i to sve uz veliku ugodnost korišćenja, tada ostajem pri svom prethodnom odgovoru.

Dodatak: evo jednog primera gde mi je Mathematica bila od velike pomoći, a pritom tokom celog posla nisam uključio nijedan drugi programski jezik.

[Ovu poruku je menjao Bojan Basic dana 25.02.2012. u 02:36 GMT+1]
Ljubičice crvena, što si plava kô zelena trava.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Programski jezik za istraživače25.02.2012. u 12:15 - pre 147 meseci
Bojane, hvala na odgovoru. No, sada bih želeo da malo preformulišem pitanje. Recimo da treba neko da se obrazuje za istraživača. Jasno je da će mu trebati poznavanje matematike i matlaba. Međutim, ako bi pored toga učio jedan klasičan programski jezik, koji bi mu bio najbolji izbor?

Citat:
djoka_l: Još da dodam, paralelni kompajleri će uvek ovakvu konstrukciju:

i = i + 1

pretvoriti u

i1 = i + 1

i dalje u programu baratati sa i1.

Princip je: jednoj promenljivoj se samo jednom dodeljuje vrednost. Vrednost takve promenljive se koristi tek kada se ta vrednost izračuna. Redosled kojim se računaju promenljive nije unapred poznat.


Hajde, to primeni na sledeći kod

Code:
int s = 0;

for (int i = n; i > 0; --i) {
    s = s + i;

    if (s%53 == 11) {
        break;
    }
}


Može uz matematičke dosetke i bez petlje, ali sam hteo reći da je "uvek" prejaka reč. Znam za to i ne znam kako sam smetnuo sa uma parallel_for petlju, no razumeli smo se.

No, to opet nije specifičnost fortrana. C++ takođe ima parralel_for petlju.

Ima li još mišljenja?

Edit: parallel_for je specifičnost VC++ kompajlera, dok GNU C++ ima OpenMP podršku.

[Ovu poruku je menjao Nedeljko dana 25.02.2012. u 14:25 GMT+1]
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Programski jezik za istraživače25.02.2012. u 14:24 - pre 147 meseci
Nedeljko, uvek je lakše napisati program koji ne može da se paralelizuje, nego onaj koji može. Primer koji si dao, može se paralelizovati na sledeći način:
Code:


s[n] = n;
s[n-1] = n + n - 1;
s[n-2] = n + n -1 - 2;
...
s[1] = n + n +...+ n - 1 - 2 - ... - (n-1);

rez[n] = s[n] % 53;
...
rez[1] = s[1] % 53;

return s[k] for max(k) where rez[k] = 0;


Paralelni kompajleri nisu svemogući, lepo rade operacije sa matricama i vektorima, ali nekad ne može da se paralelizuje proces. Za ozbiljne probleme koji se rešavaju na superkompjuterima istraživači imaju IT saradnike koji pišu programe...

Poenta je da onaj koji programira ne mora da razmišlja o nitima, semaforima o hardveru i broju procesora na kojem će se vrtiti program - to je problem kompajlera.

Sada zamisli da imaš samo jednu promenljivu s. Pristup toj promenljivoj bi morao da ograničih preko nekog semafora. Ako to paralelizuješ, recimo gornji program pošalješ na k procesa, onda svaki proces ima svoju kopiju promenljive s nad kojom ima potpunu kontrolu. "Pravu" vrednost promenljive s ćeš dobiti kada svaki od procesa pošalje svoju verziju, a tvoj scheduler odredi koja od tih vrednosi je ona prava. Redosled izračunavanja s-ova nije unapred poznat...

[Ovu poruku je menjao djoka_l dana 25.02.2012. u 15:49 GMT+1]
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Programski jezik za istraživače25.02.2012. u 15:28 - pre 147 meseci
Rešenje ti ne valja, jer pre svega kompajler ne zna šta je to "...". No, to nije bitno, jer se problem može rešiti bez ikakve petlje znanjem teorije brojeva. No, mislim da ipak precenjuješ moć kompajlera i potcenjuješ niti i sinhronizacione objekte. Situacija "svako ima svoj primerak promenljive" nije primenljiva uvek, jer ponekad niti moraju da komuniciraju preko te promenljive. Da je to tako, da se može sve rešiti bez niti i sinhrozacionih objekata, onda niti i sinhronizacioni objekti ne bi postojali kao nepotrebni.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Bojan Basic
Novi Sad

SuperModerator
Član broj: 6578
Poruke: 3996
*.dynamic.sbb.rs.

Jabber: bojan_basic@elitesecurity.org
ICQ: 305820253


+605 Profil

icon Re: Programski jezik za istraživače29.02.2012. u 02:11 - pre 147 meseci
Citat:
Nedeljko:
Bojane, hvala na odgovoru. No, sada bih želeo da malo preformulišem pitanje. Recimo da treba neko da se obrazuje za istraživača. Jasno je da će mu trebati poznavanje matematike i matlaba. Međutim, ako bi pored toga učio jedan klasičan programski jezik, koji bi mu bio najbolji izbor?

Verovatno ovde prestaje moja kompetencija da dalje odgovaram. No, ipak moram primetiti da mi pitanje nije baš najjasnije, pa bih te zamolio da malo preciziraš. Konkretno, da li bi mogao navesti neke dve-tri (hipotetičke) situacije koje bi predstavljale tipične primere u kojima bi taj istraživač pokretao dotični klasičan programski jezik?

Druga stvar, već dva puta u ovoj temi Mathematicu pominješ u sprezi s MATLAB-om, povlačeći tako, ako dobro shvatam, neku paralelu između ova dva paketa. No, ja MATLAB nisam pominjao uopšte, mislim da je on na sasvim drugom koloseku. Doduše, da se odmah ogradim, moje je iskustvo s MATLAB-om reda veličine , ali dosadašnji mi je utisak da je to paket pogodan za inženjere, numeričare i sl. — što, ako sam razumeo suštinu teme, nije ono što se ovde traži.
Ljubičice crvena, što si plava kô zelena trava.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Programski jezik za istraživače29.02.2012. u 14:16 - pre 147 meseci
Moje iiskustvo u matematici je epsilon, a u matlabu 0, međutim, načuo sam da je izvorno matematika bila kraljica simboličkog, a matlab kralj numeričkog računa, a da su kasnije i jedni i drugi dodavali funkcionalnosti iz onog drugog sveta. No, paralela je u tome da i jedno i drugo alat (mada ne iste vrste) za one koji koriste matematiku i da se ne bih iznenadio ako bi negde studenti na studijama matematike ili fizike učili oba paketa.

No, tipičan slučaj kada matematika i matlab podbacuju u odnosu na klasične jezike je recimo neki zahtevan kombinatorni problem, gde ti ne trebaju ni integrali ni sva ona čuda koja imaju ti paketi, već sirova procesorska snaga koja to može da podnese. Recimo, svojevremeno sam učestvovao u izradi ovog programa. Ja sam radio implementaciju, a drugi koautor se bavio matematičkim delom. Mogao je da bude napisan mnogo bolje, ali šta je tu je, najvažnije je da radi ono što treba onako kako treba. Ne znam šta od tih funkcija ima matematika, ali znam da je ovaj program citiran u radovima nekih drugih istraživača da su određeni rezultati dobijeni njime.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Sonec

Član broj: 284879
Poruke: 892



+332 Profil

icon Re: Programski jezik za istraživače29.02.2012. u 16:01 - pre 147 meseci
Citat:
Nedeljko: i da se ne bih iznenadio ako bi negde studenti na studijama matematike ili fizike učili oba paketa.


Mathematica se uci u okviru predmeta: Programski paketi u matematici, na drugoj godini studija MATF u Beogradu (smerovi M,N,L, i R i V ga uce, al kasnije). To je izborni predmet (vs. filozofija (za M,V,L), sta mislite koji studenti biraju..) za sve smerove.

Matlab se radi na predmetu Uvod u numericku matematiku (verovatno i kasnije, verujem da ga studenti sa N smera dosta koriste).
Citat:
UNM: Primenu izložene teorije studenti realizuju kroz praktične vežbe na računaru korišćenjem programskog paketa Matlab.


Leonardo da Vinči

Nema istine u onim naukama u kojima se matematika ne primenjuje.

Milorad Stevanović

Bog postoji zato sto je matematika neprotivurečna.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Programski jezik za istraživače29.02.2012. u 17:50 - pre 147 meseci
Nekada je Desa Radunović tražila da se sve radi u C-u. Čini mi se da je kasnije prihvatala još neke jezike, a danas eto, traži matlab.

Voleo bih samo da to ne znači podsticanje studenata na nelegalnu upotrebu softvera, već da je to regulisano na neki način: Recimo,

1. Da fakultet ima plaćenu akademsku licencu za sve studente dok studiraju na tom fakultetu, pa da mogu da urade zadatak kući bez dodatnih troškova.
2. Da je moguće uraditi zadatak u octave-u koji je slobodan i otvorenog koda.
3. Da student može da uradi zadatak na fakultetu u računarskoj laboratoriji ako nema kod kuće računar.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

[es] :: Nauka :: Programski jezik za istraživače

[ Pregleda: 2653 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.