Otázka:
Programování ve fyzice
Klopmint
2015-05-25 14:40:31 UTC
view on stackexchange narkive permalink

Jak důležité je programování ve fyzice?

Studuji fyziku na univerzitě a v těchto prvních letech vlastně neexistuje žádný přístup (jak je to pochopitelné) k tomu, jak funguje fyzikální práce. Nyní vím, že programování je skutečně důležité (četl jsem několik příspěvků na fórech - dokonce i ten, který je zde na Stack Exchange), ale vlastně mě zajímalo: jaký „hardware“ se používá ve fyzice? Stojí za to naučit se spravovat věci jako Raspberry Pi - druh desky? Nebo by to prostě nemělo cenu?

Nevím, jestli by to mohlo být užitečné k zodpovězení této otázky, ale zajímala by mě fyzika kondenzovaných látek pro budoucnost.

Příliš široký a příliš názorový.Pravděpodobně jedinou platnou odpovědí je, že neexistuje téměř žádná oblast fyziky, kde by programování bylo nedůležité, ale jsem si jistý, že mě teoretik také napraví.
Zajímavá otázka, ale obávám se, že bude uzavřena primárně na základě názoru.Pokud ne, mohu napsat dlouhý příběh o svém názoru na tuto otázku.V zásadě udělejte tolik fyziků: učte se, jak potřebujete.Většina fyziků je velmi mizerných programátorů, takže si s tím moc starosti nedělejte.
Chápu, stejně vám děkuji za vaše odpovědi;hlavním důvodem, který mě při psaní této otázky přiměl, je to, že - na základě velmi málo znalostí, které mám - jsou tyto desky používány jako rozhraní s několika typy senzorů.Proto mi připadalo poněkud důležité naučit se řídit v této oblasti.
Cítím, že je to cenná otázka, a byla by škoda ji uzavřít - na [** Good Subjective **] (http://blog.stackoverflow.com/2010/09/) vidím řadu dobrých odpovědí.dobrá-subjektivní-špatná-subjektivní /) strana za to.
Rozmanitost hardwaru a softwaru používaného ve fyzice je obrovská.Pokud jste student a ještě nevíte, co vás zajímá, kde budete pracovat a na čem skončíte, pak je naprosto cenné dozvědět se co nejvíce o tolika věcechmůžeš.V hardwaru a softwaru se stále znovu objevují stejné vzorce - čím více se vystavujete, tím snazší je naučit se něco nového, když vám spadne do klína.
Skutečným problémem je, že zde nejsou žádné špatné odpovědi.Žádné správné odpovědi ani vzhledem k tomu, že to, co je pravda v mém kousku fyziky, nepochybně špatně v nějakém jiném rohu disciplíny.Krátké verze: neexistuje žádný přípravný učební plán „programování fyziky“, protože neexistuje jediný pojem programování ve fyzice.Ne pro software, ani pro jazyk, ani pro hardware (který se každopádně mění každých deset let).
Jdu na to z trochu jiného úhlu.Studoval jsem fyziku (před 20 lety) a přirozeně to zahrnovalo studium počítačů a programování.Jak jsem postupoval na univerzitě, začal jsem se více zajímat o počítače a méně o fyziku, až jsem byl v posledním ročníku projektu zcela výpočetní (naprogramoval jsem několik simulací jednoduchých fyzikálních principů).To mě nyní vedlo k velmi úspěšné počítačové kariéře.
Pokud jste studentem vysoké školy a nepokračujete v získávání titulu PhD, pravděpodobně skončíte s programováním na živobytí.Přesně touto cestou jsem se vydal.
Uzavřel bych to jako kariérové poradenství, ale zdá se, že většina ostatních to považuje za názorové.
Tři odpovědi:
lemon
2015-05-25 15:47:00 UTC
view on stackexchange narkive permalink

Jako výpočetní fyzik pracující v materiálech / kondenzovaných látkách jsem buď velmi zaujatý, nebo mám dobré předpoklady, abych se k tomu vyjádřil.

Fyzika je v praxi rozdělena do tří překrývajících se přístupů: experimentální, teoretické a výpočetní. (Nejvýznamnější výzkumné práce obvykle zahrnují kombinované úsilí všech tří.)

Pokud máte v plánu jít do výpočetního výzkumu, budete muset udělat slušné množství programování. Neznám však nikoho, kdo využil Raspberry Pi pro fyzikální výzkum (to neznamená, že nikdo nemá, ale je to spíše novinka než něco, co se běžně dělá). Ve výpočetní fyzice bude váš kód téměř výlučně spuštěn buď na standardních stolních počítačích, nebo na superpočítačích (kde využíváte systémy pro předávání zpráv jako MPI k využití obrovského paralelismu). Prakticky všechny univerzity mají své vlastní superpočítače, ale může vám být také udělen přístup k některým větším národním nebo dokonce mezinárodním superpočítačům (například ARCHER, Jaguar atd.).

Grafické karty se v posledních letech staly velmi populárními pro fyzikální výzkum kvůli nárůstu CUDA a většina superpočítačů nyní obsahuje několik uzlů nabitých špičkovými grafickými kartami. Programování GPGPU je tedy příjemná dovednost, ale v žádném případě není nutnost.

Za zmínku stojí také programovací jazyky. Hlavně z historických důvodů je většina akademických kódů ve skutečnosti procedurálně psána v Fortranu (což je tak archaické, že stále mají funkce, které zbyly z doby děrných štítků). C / C ++, Java a Python jsou také široce používány spolu s Unix shell (většina akademických strojů používá Linux). Ti, kdo hodně statisticky modelují, většinou používají R nebo IDL. A ti, kteří jsou příliš líní na skutečné programování - většinou matematici a inženýři - používají MATLAB nebo Mathematica (dobře, jsem trochu kruté na to).

Dovolte mi to na závěr diskutovat o teoretické a experimentální fyzice. Prakticky každý teoretik, kterého znám, dělá většinu své práce na počítačích - programuje například numerické řešení nebo testování. A mnoho z jejich „teorií“ je zaměřeno na pokrok výpočetních metodik. Klasickým příkladem toho jsou Hohenbergovy-Kohnovy věty, které položily základ pro teorii funkční hustoty, a nyní existuje mnoho teoretiků, kteří se to snaží rozšířit vývojem lineárního měřítka a DFT v reálném prostoru.

Programátoři se také stali běžnými pro programování. Ať už se jedná o mikrokontroléry, jako je Arduinos (jak uvedl Emilio Pisantry níže), skripty pro analýzu dat nebo dokonce využití standardních simulačních technik k lepšímu pochopení jejich experimentálních pozorování.

Komentáře nejsou určeny pro rozšířenou diskusi;tato konverzace byla [přesunuta do chatu] (http://chat.stackexchange.com/rooms/24252/discussion-on-answer-by-lemon-programming-in-physics).
A co Julia?Vypadá to docela slibně.
Alexander McFarlane
2015-05-26 09:36:34 UTC
view on stackexchange narkive permalink

Z hardwarového hlediska je pravděpodobné, že byste psali kód v systému podobném unixu, který dokáže distribuovat kód na více jader nebo alespoň na jeden GPU.

Pokud se tento příspěvek týká toho, co hardware, který byste měli používat: Navrhuji, abyste si pro levné, ale efektivní řešení nastavili stolní počítač s následujícím:

  • Grafická karta NVIDIA - Pouze grafické karty NVIDIA mohou běžet CUDA a následně pracovat s nejvíce zrychlenými knihovnami GPU. AMD / jiné značky mohou využívat OpenCL, ale můžete se setkat s situací, kdy váš kurz používá knihovnu kompatibilní pouze s CUDA. V současné době některé knihovny, například theano pythonu, skutečně podporují pouze karty NVIDIA kvůli jejich CUDA závislosti
  • CPU s alespoň dvěma jádry - takže můžete hrát s vícejádrovým kódem
  • Ubuntu je velmi jednoduchá a efektivní platforma podobná unixu, která vám poskytne dobré nastavení programování
  • Dual Boot Windows - hlavně pro snadné psaní kurzu

Výše ​​uvedený seznam vám umožňuje hrát s GPU akcelerovaným kódem, vícejádrovým programováním a umožňuje vám snadno instalovat knihovny prostřednictvím ubuntu.

Z mých zkušeností můžete často spouštět intenzivní kód na univerzitních superpočítačích, ale možná nebudete chtít neustále procházet snahou o přístup k nim / možná k nim nebudete mít přístup po celou dobu.

Jako čerstvý absolvent fyziky ve Velké Británii mohu říci, že každá práce, která mě oslovila nebo o kterou jsem požádala, týkající se fyziky, měla výpočetní požadavky.

Co se týče jazyky, musel jsem odejít rn Python a C / C ++ od absolvování kurzu, který učil Fortran. Doporučil bych naučit se všechny tři.

Vynecháváte OpenCL.Zatímco CUDA je pravděpodobně nejpokročilejší doplněk k C (++) pro GPU, není to jediný.OpenCL je podporován všemi třemi hlavními výrobci čipů (Intel / AMD / Nvidia).Sekundární Windows není nutný.Už 5 let jsem svíjel s openSuSe a používám Windows pouze pro hry FPS - všechno ostatní je ve Windows příliš těžkopádné.
Fortran není FORTRAN od roku 1991, prosím aktualizujte svůj pravopis.
Děkuji za komentář.Nyní jsem upravil svůj příspěvek tak, aby obsahoval komentáře k OpenCL.Souhlasím s tím, že systém Windows je pro formální kurz velmi těžkopádný.Většina z nás to však zná a po rušné noci v univerzitním baru je potřeba hodně motivace naučit se nového editora!Nakonec bude Windows s největší pravděpodobností již nainstalován na všech levných laptopech, takže pouhé šroubování na ubuntu je poměrně jednoduché.@KyleKanos, omlouvám se, až do ukončení studia v roce 2013 jsem byl učen standardu FORTRAN 90, takže pro mě to byl opravdu FORTRAN.
Standard Fortran 90 (vydaný v roce 1991) odstranil pravopis všech hlavních měst FORTRANU (který se dnes často používá k označení standardu 77).Pokud jste se naučili F90, naučili jste se ** Fortran ** 90, ne * FORTRAN *.
Steeven
2015-05-25 15:39:53 UTC
view on stackexchange narkive permalink

Hodně teoretické fyziky a prostě „učení“ fyziky nevyžaduje mnoho programování. To je případ hluboko do mnoha oborů fyziky.

Experimentální fyzika se zpracováním dat naopak ano. Ne programování přímo, ale dobrá znalost výpočtu a softwaru založeného na datech / matici. Ty často vyžadují určité programátorské dovednosti, například Matlab nebo Maple od MathWorks.

Když se dostanete do oblasti fyziky kondenzovaných látek a molekulárních struktur atd. , budete potřebovat některé statistické fyzikální metody a nástroje pro numerickou iteraci a simulaci, které jsou bez nástroje CAS nemožné.

Dosažení elektronického světa samozřejmě vyžaduje určitý druh řízení obvodu. Arduino nebo Raspberry Pi a cokoli jiného se jim říká, jsou nástroje k ovládání obvodů. Často to ale není pro fyzikální práci, pokud se nedostanete úplně do digitální oblasti a nebudete se vzdalovat fyzikálním principům, které za ní stojí.

Inženýr zapojující Matlab - vypadá to, že jsem měl pravdu;)


Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...