Srodne teme
19.10.2002. CLX
11.02.2004. libSDL ili openML
30.08.2006. portabilnost koda
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Portabilnost C-a

[es] :: C programiranje :: Portabilnost C-a

Strane: 1 2

[ Pregleda: 3160 | Odgovora: 36 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gojava
Velika Srbija
Kragujevac

Član broj: 4032
Poruke: 293
*.zastava.net.



Profil

icon Portabilnost C-a17.10.2006. u 13:10

Znam da programski jezik koji source prevodi u native nije portabilan, ali meni bi posao završila i ograničena portabilnost, naravno, ako je moguća? Pišem neki program u Javi, ap mi je potrebno da se samo neki kritični, ali obimni proračuni, odrade brže nego što to Java može. Hteo bih da te proračune uradim u C-u (koga inače vrlo malo poznajem), pa me interesuje da li će krajnji rezultat kompajliranja da bude portabilan, tj. da li će raditi i na windows-u i na linux-u, pošto moja aplikacija treba da radi na oba OS-a? Proračuni u C-u bi se odnosili isključivo na neke trigonometrijske i matrične proračune; znači nikakvi pozivi sistemskih funkcija ili bilo šta slično.

"Bolje je ćutati i pustiti druge da misle da si glup, nego progovoriti i time otkloniti svaku sumnju." - Bernard Šo

17.10.2006. u 13:10 

NrmMyth
Split, Kaštela

Član broj: 63456
Poruke: 839
*.adsl.net.t-com.hr.



Profil

icon Re: Portabilnost C-a17.10.2006. u 14:29
Citat:
gojava: Znam da programski jezik koji source prevodi u native nije portabilan
Zasto to mislis?
Program mozda i nije, ali kod bi morao biti - naravno ako je pisan pod standardom.

Nativni program za windowse u pravilu ne radi na linuxu. Ne radi, ali postoje emulatori...

Citat:
Hteo bih da te proračune uradim u C-u

Kako mislis povezati Javu s C-om? Pitam jer vrlo slabo poznam Javu.
17.10.2006. u 14:29 

Ivan Dimkovic
Director Platform & Technology, Nero EMEA
EU

Administrator
Član broj: 13
Poruke: 11199
217.41.236.*

Sajt: www.linkedin.com/in/ivand..


Profil

icon Re: Portabilnost C-a17.10.2006. u 14:44
Neces moci da imas jedan binarni fajl (izvrsni) - tako da ces morati da razdvojis distribucije softvera za Windows i Linux u 2 paketa - Windows distribucija bi se sastojala od tvog Java softvera + jednog Windows DLL fajla, dok bi Linux ekvivalent bila Linux biblioteka.

Osim ako ne planiras da distribuiras program kao open-source, za sta je onda potrebno da imas makefile ili 2 makefile-a kako bi korisnici mogli da kreiraju binary za oba sistema.

Citat:

Nativni program za windowse u pravilu ne radi na linuxu. Ne radi, ali postoje emulatori...


Moze, preko JNI-a (Java Native Interface)
17.10.2006. u 14:44 

gojava
Velika Srbija
Kragujevac

Član broj: 4032
Poruke: 293
*.rcub.bg.ac.yu.



Profil

icon Re: Portabilnost C-a17.10.2006. u 15:37
@NrmMyth
Ivan Dimkovic ti je već odgovorio. JNI nisam koristio, ali znam čemu služi i eto, kad dođe vreme, koristiću ga. Btw, C je "extension language" za većinu programskih jezika, pa i za Javu.

@Ivan Dimkovic
Moram da razdvojim binarne fajlove, čak i ako su u njima samo tako jednostavne stvari kao što su obični matematički proračuni?

"Bolje je ćutati i pustiti druge da misle da si glup, nego progovoriti i time otkloniti svaku sumnju." - Bernard Šo

17.10.2006. u 15:37 

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1502
*.eunet.yu.

ICQ: 60630914


Profil

icon Re: Portabilnost C-a17.10.2006. u 15:47
moj predlog ti je da koristis scons kao build sistem za c deo koda (http://www.scons.org/) i da se drzis standardne c biblioteke koliko je moguce, time povecavas sansu da izbegnes glavobolje oko portabilnosti. interfejs ka javi ne bi trebalo da bude problem ukoliko budes oprezan oko tipova i koristi -Xcheck:jni, ume da smanji glavobolje.

[Ovu poruku je menjao caboom dana 18.10.2006. u 16:50 GMT+1]
17.10.2006. u 15:47 

gojava
Velika Srbija
Kragujevac

Član broj: 4032
Poruke: 293
213.137.99.*



Profil

icon Re: Portabilnost C-a17.10.2006. u 20:45
Scons. Stvari kao da počinju da se preterano komplikuju. btw, @caboom, hvala na odgovoru, ali mislim da nisam trenutno spreman da se nešto mnogo petljam sa stvarima koje su daleko od Jave (i C-a).

"Bolje je ćutati i pustiti druge da misle da si glup, nego progovoriti i time otkloniti svaku sumnju." - Bernard Šo

17.10.2006. u 20:45 

Milan Aksic

Član broj: 412
Poruke: 1054
*.medianis.net.



Profil

icon Re: Portabilnost C-a18.10.2006. u 07:19
Ako ti treba brzo i jednostavno resenje, onda ako ces da koristis samo standarden C biblioteke, prevedi C program za Vindouz i Linuks platformu i distribuiraj oba u jednom paketu ako nisu znacajno velika ili ih zajedno sa programom podeli u dva zasebna paketa za te dve platforme.

Ipak, iako nije uputno postavljati pitanje na pitanje :) interesuje me da li si siguran da ces dobiti znacajno ubrzanje?
Da se odmah ogradim, ne znam sta bi program konkretno trebao da radi, ali ako ta izracunavanja radis u C-u, onda ces da koristis ugradjene (primtivne) tipove podataka int, float, double... i/ili mozda neke strukture, zasto onda ne bi pokusao da koristis ugradjene (primitivne) tipove podataka i u Javi umesto klasa Integer, Float, Double... koje bi verovatno u nekoj meri usporile izvrsavanje "kriticnih" delova programa, jer iako nemam dugo iskustvo u radu sa Javom, mislim da u ovom konkretnom slucaju, pisanje zasebnih funkcija u C-u verovatno ne bi bilo mnogo isplativije, kada se uzmu u obzir i drugi cinioci (npr. konzistentnost i odrzavanje programa) nego kada bi to isto uradio u Javi.
Najbolje bi bilo da ako imas vremena (i volje) pokusas i jedno i drugo resenje (mozda sa manjim "modelima") i da onda vidis ciji ti odnos dobitaka i gubitaka najvise odgovara.
18.10.2006. u 07:19 

gojava
Velika Srbija
Kragujevac

Član broj: 4032
Poruke: 293
*.zastava.net.



Profil

icon Re: Portabilnost C-a18.10.2006. u 10:15
@Milan Aksic
Obe varijante koje si naveo u prvom pasusu dolaze u obzir. Već sam razmišljao o tome.

E sad, da li je OK da sve bude pisano u Javi? Mogu da ti kažem da sam i sam iznenađen brzinom kojom radi Java. Svojevremeno sam napisao obimnu web-aplikaciju u kojoj je bilo dosta proračuna, na osnovu kojih su se generisale neke slike. Podatke sam držao u kolekcijama, pa sam morao često da radim konverziju u primitivne tipove. Vodio sam računa o tome da što više koristim redove a što manje kolekcije, ali sam ipak morao i jedno i drugo. Za divno čudo, sve je radilo prilično brzo. Doduše, uvek sam se pitao kako li će to da radi kod ISP-a, ali mi je jedan ortak malo olakšao brigu rekavši mi da to nije moj problem, već je to problem ISP-a. I nije bilo problema, sajt nije bio preterano posećen (koga je briga za tehniku) pa je sve bilo OK.

A sad, o temi. Proračuni kojima nameravam da se bavim su neka light varijanta metode konačnih elemenata, tj. veoma uprošćen model sa ne baš preterano velikom diskretizacijom. Koliko brzo bi to Java obavila ne znam, ali znam da se za te proračune koriste C ili Fortran, pa sam i ja hteo da to uradim kako valja. Mada, s obzirom na to da je reč o desktop aplikaciji, probaću da što više izvučem od Jave, pa ako budem zadovoljan brzinom, neću ni da probam da to radim u C-u. Interesovala me je pre svega portabilnost C-a za takve stvari, ali pošto od toga nema ništa, nisam siguran da bih ću da se trudim oko njega. Ako mi baš bude frka, naći ću nekog da mi to napiše u C-u i kompajlira, jer taj deo koda ne bi trebao da se menja kad se jednom napiše.



"Bolje je ćutati i pustiti druge da misle da si glup, nego progovoriti i time otkloniti svaku sumnju." - Bernard Šo

18.10.2006. u 10:15 

Dragi Tata

Član broj: 1958
Poruke: 3885
65.213.80.*

Sajt: www.novetehnologije.com


Profil

icon Re: Portabilnost C-a18.10.2006. u 13:21
Citat:
gojava: Proračuni kojima nameravam da se bavim su neka light varijanta metode konačnih elemenata, tj. veoma uprošćen model sa ne baš preterano velikom diskretizacijom.


Sve zavisi od veličine matrice. Ako je dovoljno mala, Java može da bude sasvim OK. Ako ne, ozbiljno razmisli o Fortranu. Za numeriku je Fortran i dan danas ubica. C ne može ni da mu priđe.
18.10.2006. u 13:21 

gojava
Velika Srbija
Kragujevac

Član broj: 4032
Poruke: 293
*.rcub.bg.ac.yu.



Profil

icon Re: Portabilnost C-a18.10.2006. u 16:40
Slažem se. Fortran je No1. Nego ja treba da napravim i neki korisnički interfejs, a to znam samo u Javi. C++ ne znam.

Malo sam google-ovao i video da su još 1998/99 ljudi pokušali da Javu prilagode za numeričke proračune. Tako su u samoj Javi napisane neke klase koje su značajno ubrzavale proračune u odnosu na tadašnju Core Javu 1.2. U samom startu su iza toga stajali IBM i Sun, tako da verujem, mada još nisam naišao na takav zaključak, da današnja Java u potpunosti implementira predložena, a možda i bolja rešenja. To bi praktično značilo, da je Java po performansama za numeriku, u najgorem sličaju za oko 35% sporija od optimizovanog koda za Fortran. To je za mene sasvim zadovoljavajuće. Pogledajte to ovde: http://researchweb.watson.ibm.com/journal/sj/391/moreira.html Članak je iz 2000. godine. problem sa javom i dalje je veća potrošnja memorije nego kod npr. Fortrana ili C-a, ali nebitno, ima ona mnogo svojih prednosti.

"Bolje je ćutati i pustiti druge da misle da si glup, nego progovoriti i time otkloniti svaku sumnju." - Bernard Šo

18.10.2006. u 16:40 

chupcko
Beograd

Član broj: 5560
Poruke: 1074
*.akton-yu.net.

Sajt: www.google.com


Profil

icon Re: Portabilnost C-a19.10.2006. u 08:47
Citat:
Dragi Tata: Sve zavisi od veličine matrice. Ako je dovoljno mala, Java može da bude sasvim OK. Ako ne, ozbiljno razmisli o Fortranu. Za numeriku je Fortran i dan danas ubica. C ne može ni da mu priđe.


Uf, kako ovo zvuci malo cudno :). Da si rekao da u fortranu ima puno libova a numericke proracune, pa da si rekao da je gomila libova za razne proracune napisano u fortranu, ali ne mozes me nikako ubediti da ce program koji prevede neki fortran biti toliko brzi od programa koji prevede c :).

A na stranu sto vecina tih libova ustvari samo zaobilazi cinjenicu da je fortran IV imao samo jednodimenzionalne nizove, pa su emulirali matrice na razne nacine :).

Ali u svakom slucaju bas bi voleo da vidim neki citat gde se spominje to da je fortran bolji :))).

A inace sto se tice portabinosti, kositi samo stabdradna zaglavlja i ...
CHUPCKO
19.10.2006. u 08:47 

gojava
Velika Srbija
Kragujevac

Član broj: 4032
Poruke: 293
*.zastava.net.



Profil

icon Re: Portabilnost C-a19.10.2006. u 12:12
@chupcko
Mada nisi mene citirao, komentarisaću samo ukratko da sam ja na puno mesta nailazio na neke uporedne dijagrame koji su prikazivali brzinu Jave u odnosu na Fortran i C i uvek je Fortran bio nešto malo bolji od C-a. Takođe, pošto je cilj bio da se pokaže razlika u brzini u odnosu na Javu, uvek je postojala i napomena da je reč o optimizovanim kodovima za C i Fortran. Na taj način, mogao je da se stekne utisak o maksimalnoj razlici između primene Jave sa jedne strane i C-a i Fortrana sa druge strane za numeričke proračune.

Pa i očekivao sam da ako se koriste standardna zaglavlja, da bi to možda i moglo da bude portabilno, ali sam ipak morao da pitam.

"Bolje je ćutati i pustiti druge da misle da si glup, nego progovoriti i time otkloniti svaku sumnju." - Bernard Šo

19.10.2006. u 12:12 

Dragi Tata

Član broj: 1958
Poruke: 3885
65.213.80.*

Sajt: www.novetehnologije.com


Profil

icon Re: Portabilnost C-a19.10.2006. u 13:13
Citat:
chupcko: Ali u svakom slucaju bas bi voleo da vidim neki citat gde se spominje to da je fortran bolji :))).


Kad sam radio u jednoj laboratoriji gde smo razvijali FEM aplikacije, merili smo C i Fortran i "starac" je razbio C (čisto da razjasnim: svi mi smo "navijali" za C). A ako hoćeš "naučno" objašnjenje zašto je tako, pogledaj sekciju b) ovde: http://www.ibiblio.org/pub/languages/fortran/ch1-2.html Posebno značajna stavka je tzv "aliasing" koji je dozvoljen u C-u i onemogućava neke vrlo bitne optimizacije.
19.10.2006. u 13:13 

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3634
*.jetstream.xtra.co.nz.



Profil

icon Re: Portabilnost C-a19.10.2006. u 16:06
Citat:
chupcko: Uf, kako ovo zvuci malo cudno :). Da si rekao da u fortranu ima puno libova a numericke proracune, pa da si rekao da je gomila libova za razne proracune napisano u fortranu, ali ne mozes me nikako ubediti da ce program koji prevede neki fortran biti toliko brzi od programa koji prevede c :).

Da, ti libovi su takodje jedan od razloga ali i pored toga ako imas liboce napisane u C-u, cesto oni napisani u Fortranu rade brze.

Citat:
Ali u svakom slucaju bas bi voleo da vidim neki citat gde se spominje to da je fortran bolji :))).


Evo citata:

Citat:
Srdjan Mitrovic: Fortran je bolji!


Salu na stranu, radio sam jedno biolosko istrazivanje gde se koristilo dosta numerickog procesiranja slika sa elektronskog mikroskopa i uvek su brzi bili programi koji su bili napisani u Fortranu. Makar je takvo moje iskustvo.
19.10.2006. u 16:06 

chupcko
Beograd

Član broj: 5560
Poruke: 1074
*.akton-yu.net.

Sajt: www.google.com


Profil

icon Re: Portabilnost C-a20.10.2006. u 08:55
Pa da, ali opet ponavljam nije ga razbijao, razbiti znaci da je nesto brze barem 2 puta.

Naravno postavlja se pitanje kada je radjeno to istrazivanje i da li je radjena optimizacija :).

E sada, nemojte samo da se javi neko ko ce reci : daaaaaa fortran je brzi i od assemblera :)).

Mada pouzdano i danas znam ljude koji rade neke proracune na fortranu :))), eh ti libovi.

Inace u onom poucnom linku pise da je lakse razvijatu u fortranu nego u c-u, ali ajde, neka bude da je fortraaaaaaaaan nadmocniji puno.

Ali ajde ovako, ako neko bas zeli da me ubedi, neka napise neki lib na fortranu, neki lib u c-u, pa da iskompaliramo sa f77 i gcc, pa kom opanci tom i jeri.

P.S. Da ne bude zabune moj prvi jezik na kojem sam radio je fortran IV.
CHUPCKO
20.10.2006. u 08:55 

tosa

Član broj: 1811
Poruke: 1264
*.ubisoft.com.cn.



Profil

icon Re: Portabilnost C-a24.10.2006. u 07:19
Nije nikakva posebna mudrost potpuno zaobići problem aliasinga za matrice i vektore u C/C++.
Kada se to jednom reši, fortran može da se pozdravi sa vođstvom!
Problem je u programerima, ne samo u jezicima koje koriste...

Soylent green: over 6 billion served!
24.10.2006. u 07:19 

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3634
*.jetstream.xtra.co.nz.



Profil

icon Re: Portabilnost C-a24.10.2006. u 10:54
U principu mi mozemo za sve da koristimo inline assembly code pa da nam bude skoro isto brzo ali nije u tome poenta. C++ i C nisu pravljeni da budu kao Fortran specijalizovani za numericke operacije. Recimo do c99 standarda nisi imao kompleksne brojeve a u C++-u ih imas ali koriscenjem template-a zbog cega ti sve bude dosta sporije nego da su kompleksni brojevi ukljuceni odmah u sam jezik. Slicna razlika postoji i u D-u i C++-u sto mozes da vidis ovde:
http://www.digitalmars.com/d/cppcomplex.html.
24.10.2006. u 10:54 

Dragi Tata

Član broj: 1958
Poruke: 3885
65.213.80.*

Sajt: www.novetehnologije.com


Profil

icon Re: Portabilnost C-a24.10.2006. u 14:17
Žao mi je što nema nigde (koliko znam) on-line verzija knjige "Design and evolution of C++" u kome je Dr Stroustrup napisao jedan lep paragraf na ovu temu.

U svakom slučaju, on tvrdi (parafraziram) da je prednost Fortrana u odnosu na C i C++ u numeričkim proračunima od 50% do 35 puta (jeste, 35x) zavisno od hardverske arhitekture na kojoj program "trči".

Citat:
chupcko:
Ali ajde ovako, ako neko bas zeli da me ubedi, neka napise neki lib na fortranu, neki lib u c-u, pa da iskompaliramo sa f77 i gcc, pa kom opanci tom i jeri.


Bojim se da će neko drugi morati da te ubeđuje. Nisam pipnuo Fortran od 1998 i nemam nameru da ga sad obnavljam.
24.10.2006. u 14:17 

chupcko
Beograd

Član broj: 5560
Poruke: 1074
*.akton-yu.net.

Sajt: www.google.com


Profil

icon Re: Portabilnost C-a24.10.2006. u 14:53
:))))))))) Dobro, a da li je neko ukljucio zdrav razum malo :))).

Ajde da je brzi 35%, moze, ali 35 puta :)))).
Pa ajde da je poredjen fortran i java, mozda bi to i moglo da prodje, ali ipak , pricamo o c-u.
Ne uzimam sada u pozmatranje c++, kod koga mozda i moze da bude 35 puta sporije, ali pricam o c-u.

Jednostavno, sistem prevodjenja koji se koristi u fortranu i koji se koristi u c-u nije bitno razlicit. Naravno evo ja cu postaviti jaku tezu:
za svaki proracun koji neko napise u fortranu ja pisem barem jednako brzu u c-u :).

Apropro teze da je fortran pravljen za numericke proracune ?, izvini ali ne mozete me ubediti da je u fortran ugradjen neki super cudno brzi object kod, a da u c nisu mogli nikako to da ugrade ;))). Ako pak neko zna neku instrukciju neka je podeli sa nama :))).

Ali dobro, ovde definitno postoje ljudi koji veruju u bajke i to da je neki programski jezik toliko carobaaaaan :), tako da cu dok ne dobijem neke konkretne rezultate samo da posmatram nemo :).

CHUPCKO
24.10.2006. u 14:53 

VRider
Marković Damir
(BGD/SD Karaburma)/Pirot

Član broj: 1510
Poruke: 4129
*.maksnet.net.

Jabber: damirm | gmail | com
ICQ: 134002435


Profil

icon Re: Portabilnost C-a24.10.2006. u 15:03
50% od C-a, 35 puta od C++-a. Moze li tako? I vuk sit i ovce na broju...
24.10.2006. u 15:03 

[es] :: C programiranje :: Portabilnost C-a

Strane: 1 2

[ Pregleda: 3160 | Odgovora: 36 ]

Postavi temu Odgovori

Srodne teme
19.10.2002. CLX
11.02.2004. libSDL ili openML
30.08.2006. portabilnost koda
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.