Sziasztok!
Megint egy érdekes választás elé kerültünk. Ebben szeretném a SZAKMAI segítségetek kérni.
Eddig a következő környezetekben fejlesztettünk:
- szimulációk -> Linux-RT C++
- felőletek (szerk: felületek) -> MacOSX Objective-C
Jelenleg több számítás igényes (matematikai) analízist kellene elkövetnünk. Oprendszernek (fejlesztés + release) MacOSX-et favorizáljuk.
Ti melyik programnyelvet választanátok a problémához? Miért? Esetleg másik Oprendszer?
- 5759 megtekintés
Hozzászólások
irj egy alap algoritmust mindkettoben, szt teszteld a futasidoket mindket lehetosegen. persze nem kell tulzasba vinni.
De ne feledd: a rossz programozo minden nyelven rossz programot ir. ha valamelyik eredmeny igen szar, akkor elobb elemezz, s csak utana jelentsd ki, hogy xyz nyelv abc os-en szar.
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.
- A hozzászóláshoz be kell jelentkezni
Az igazi programozó bármilyen nyelven képes Fortran-programot is írni :-)
- A hozzászóláshoz be kell jelentkezni
:D
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.
- A hozzászóláshoz be kell jelentkezni
Csak jó minőségű gömbölyű zárójeleket használj! :D
- A hozzászóláshoz be kell jelentkezni
A Fortran vezérlő kártya a programlyukasztásban órákat takaríthat meg, miután a felső sort 12. sornak ismerik, az alsó sort pedig 9. sornak (Thomas Watson vagy Isten által ismert okok miatt)
- A hozzászóláshoz be kell jelentkezni
HA tényleg teljesítményigényes C/C++.
De sokszor nem nagy veszteség scriptnyelvet használni, hiszen azoknak a matematikai moduljai is C-ben íródtak általában - ilyenkor célszerű olyat választani amit az ember ismer (NumPy, SciPy, R, Octave, Matlab stb...)
Szerintem az optimális megoldás ilyenkor (vagyis inkább: én így szoktam, és nekem beválik): egy referencia/prototype implementáció magasabb szintű nyelven, majd a lassú részek vagy az egész kicserélése C/C++ kódra
Ennek két előnye van:
- Van egy átlátható implementáció, aminek az eredményeihez lehet később mindig viszonyítani (referencia)
- Van rá esély, hogy nem kell megírni a gyorsabb kódot alacsonyabb szinten, mert egyszerűbb mondjuk futtatni pár napig ezt, mint szintén pár napig gányolni a különféle alacsonyabb szintű c/c++ könyvtárakkal, hogy aztán 1-2 óra alatt fusson le...
szerk.: ha kimondottan objc és c++ közötti különbség érdekel, akkor arra mondjuk nem tudok mit mondani...
- A hozzászóláshoz be kell jelentkezni
A legkényelmesebb Object-C lenne, de kicsit tartok tőle, hogy elég gyors lenne-e. Eddig semmi olyat nem csináltunk vele, ahol a gyorsaság szempont lenne. De elvileg ez is C-re épül!?
--
A lehetetlen csak a lusta ember kifogása!
- A hozzászóláshoz be kell jelentkezni
http://hu.wikipedia.org/wiki/Objective-C
"Az Objective-C egy teljesen objektum-orientált kibővített változata a C programozási nyelvnek. A tervezők a C nyelvhez társították a Smalltalk stílusú üzenetközvetítést az objektumok között. A nyelv leginkább a Mac OS X platform fő programozási nyelve, azon belül is a Cocoa API használja. Olyan Objective-C programokat, amelyek nem használják a Cocoa könyvtárakat, GCC-vel is lefordíthatók gépi kódra."
1. Performancia:
http://cocoamusings.blogspot.com/2008/02/objective-c-performance.html
http://www.vellios.com/2010/08/22/why-game-devs-dont-use-objective-c/
http://www.zedkep.com/blog/index.php?/archives/207-Objective-C-performa…
2. C++ vs ObjC:
http://blog.rootshell.ir/2010/01/comparing-objective-c-versus-c/
http://www.mactech.com/articles/mactech/Vol.13/13.03/CandObjectiveCComp…
http://stackoverflow.com/questions/926728/objective-c-vs-c
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.
- A hozzászóláshoz be kell jelentkezni
Matematikai dolgok C es/vagy C++, esetleg ha meg teljesitmeny kell es jol parhuzamosithato a feladat CUDA/OpenCL (igaz, ehhez olyan VGA is kell a gepbe) vizualizaciora meg ami jol esik. ObjC ugyanugy jo. Objective-C++ -ban jol ossze lehet mixelni mind3 nyelvet.
ObjC-ben ami lassu az az ObjC-s metodushivas.
(Egyebkent Objective-C a neve)
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
c++
Mert elég magas szintű, hogy ne kelljen biteket faragnod, de elég alacsony szintű, hogy mégis megtehesd, ha nagy ritkán mégis arra van szükség.
A C nyelvnek kb csupán a kernel / firmware / driver fejlesztésnél van létjogosultsága, ott is főként történelmi okok miatt.
A c++ iszonyúan megkönnyíti az életedet a c-hez képest
- class-okkal (objektum orientált szemlélet: egyben kezeljük az összetartozó adatokat, elrejtjük az implementációs részleteket)
- konstruktorokkal (RAII)
- nagyszerű template-s konténer osztályokkal (STL)
- automatikus memória menedzsmenttel (smart_ptr)
Ezek hatalmas előnyök a C-hez képest, ahol struct + függvények infrastruktúrát kapsz csupán.
Minden triviálisnál nagyobb méretű kód esetén ezek igencsak sokat számítanak, mert segítenek modularizálni a kódot, ami a lényeg.
Amire vigyázz: ne ess át a ló túlsó oldalára, az iszonyúan elbonyolított, egzotikus c++ szolgáltatásokat felejtsd el (operator overloading, type traits, functorok stb), amit pl a boost képvisel.
- A hozzászóláshoz be kell jelentkezni
Én is hasonló területen mozgok. Nekem nagyon bejött az opencv, mint segédkönyvtár. Mátrixműveletekhez nagyon jó. C-vel együtt jobban szeretem használni (lévén a C-t sokkal jobban kedvelem), de C++-al is mint osztály használható (cv::). A legújabb opecv, pedig tartalmaz cuda...) támofatást. Openmp-vel, is (ha jól tudom), és pthreaddel is (ezzel én is használtam) jól párhozamosítható átlátható kód írható vele, feltéve ha a probléma is párhuzamosítható.
------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a válaszokat!
Valószínű elkezdem Objective-C-ben aztán ezt optimalizálom. Ha meg egyáltalán nem megy, akkor majd átírom C++-ba. Jelenleg úgy is maga az algoritmus megtervezése a fontosabb.
--
A lehetetlen csak a lusta ember kifogása!
- A hozzászóláshoz be kell jelentkezni