Lista lektur dla programistów naukowych [zamknięta]

Pracuję, aby zostać programistą naukowym. Mam wystarczająco dużo doświadczenia z matematyki i statystyki, ale raczej brakuje w tle programowania. Bardzo trudno było mi nauczyć się używać języka do programowania naukowego, ponieważ większość referencji dla SP jest bliska trywialności.

Moja praca obejmuje modelowanie statystyczne / finansowe i żaden z modelu fizyki. Obecnie używam Pythona intensywnie z numpy i scipy. Done R / Mathematica. Znam dość C / C++, żeby czytać kod. Nie. doświadczenie w Fortran.

Nie wiem, czy jest to dobra lista języków dla programisty naukowego. Jeśli tak, to jaka jest dobra lista lektur do nauki składni i wzorca projektowego tych języków w środowisku naukowym.

Author: Grant Thomas, 2009-11-04

17 answers

Na pewnym etapie będziesz potrzebował arytmetyki zmiennoprzecinkowej. Trudno jest to zrobić dobrze, mniej trudno zrobić to kompetentnie i łatwo zrobić to źle. Ten artykuł jest obowiązkowy do przeczytania:

Co Każdy Informatyk Powinien Wiedzieć O Arytmetyce Zmiennoprzecinkowej

 36
Author: Tim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-04 08:24:03

Serdecznie polecam

Scientific and Engineering C++: an Introduction with Advanced Techniques and Examples by Barton and Nackman

Nie zniechęcaj się jego wiekiem, jest doskonały. Numeryczne receptury w Twoim ulubionym języku (o ile jest to C,C++ lub Fortran) są kompendialne i doskonałe do uczenia się z, nie zawsze najlepszych algorytmów dla każdego problemu.

Ja też lubię

Parallel Scientific Computing in C++ and MPI: a Seamless Approach to Parallel Algorytmy i ich implementacja by Karniadakis

Im szybciej zaczniesz obliczenia równoległe, tym lepiej.

 25
Author: High Performance Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-11 00:01:08

Moja pierwsza sugestia polega na tym, abyś spojrzał na 5 najlepszych uniwersytetów w danej dziedzinie, spojrzał na to, czego nauczają i czego profesorowie używają do badań. W ten sposób możesz odkryć odpowiedni język/podejście.

Również spójrz na to pytanie stackoverflow ("praktyki-dla-programowania-w-naukowym-środowisku") .

Zajmujesz się modelowaniem statystyczno-finansowym? sam używam R w tym polu i szybko staje się standardem dla analizy statystycznej, zwłaszcza w naukach społecznych, ale także w finansach (patrz, na przykład, http://rinfinance.com ). Matlab jest prawdopodobnie jeszcze szerzej stosowany w przemyśle, ale mam wrażenie, że to może się zmieniać. Chciałbym wrócić do C++ tylko w ostateczności, jeśli wydajność jest głównym czynnikiem.

Spójrz na te powiązane pytania, aby pomóc znaleźć materiały do czytania związane z R:

Jeśli chodzi o rekomendacje książkowe związane ze statystyką i finansami, nadal uważam, że najlepszą ogólną opcją jest David Ruppert "Statystyka i finanse" (możesz większość kodu R znajdziesz tutaj i Strona autora ma kod matlab ).

Wreszcie, jeśli twoje obliczenia naukowe nie są statystyczne, to uważam, że Mathematica jest najlepszym narzędziem. Wydaje się, że wśród programistów niewiele się o tym mówi, ale moim zdaniem jest to najlepsze narzędzie do czystych badań naukowych. Ma znacznie lepsze wsparcie dla rzeczy takich jak integracja i równań różniczkowych cząstkowych, które matlab. Mają [45]} ładną listę książek o wolframie strona internetowa .

 12
Author: Shane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:07

Jeśli chodzi o języki, myślę, że masz dobry zasięg. Python jest świetny do eksperymentowania i prototypowania, Mathematica jest dobry do pomocy w teoretycznych rzeczach, A C / C++ są tam, jeśli potrzebujesz zrobić poważne łamanie numerów.

Mogę również zasugerować, abyś rozwinął uznanie dla języka asemblera, a także języka funkcjonalnego (takiego jak Haskell), tak naprawdę nie do użycia, ale raczej ze względu na wpływ, jaki mają na twoje umiejętności programowania i styl, oraz pojęć sprowadzają Cię do domu. Mogą się kiedyś przydać.

Uznałbym również za istotne, aby dowiedzieć się o programowaniu równoległym (współbieżnym/rozproszonym), ponieważ jest to jedyny sposób, aby uzyskać dostęp do rodzaju mocy obliczeniowej, która czasami jest niezbędna dla problemów naukowych. Ekspozycja na programowanie funkcyjne byłaby bardzo pomocna w tym względzie, niezależnie od tego, czy rzeczywiście używasz języka funkcjonalnego do rozwiązania problemu.

Niestety nie mam wiele do zaproponowania w sposób czytania, ale może okazać się pomocny Przewodnik naukowca i inżyniera do cyfrowego przetwarzania sygnałów.

 10
Author: Artelius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-04 04:59:02

Jestem programistą naukowym, który właśnie wkroczył w tę dziedzinę w ciągu ostatnich 2 lat. Interesuje mnie więcej Biologii i fizyki, ale założę się, że to, czego szukasz, jest podobne. Podczas gdy ubiegałem się o pracę i staże, były dwie rzeczy, które nie sądziłem, że będą tak ważne, aby wiedzieć, ale spowodowały, że straciłem możliwości. Jednym z nich był MATLAB, o którym już wspomniano. Drugim był projekt bazy danych. bez względu na to, w jakim obszarze SP się znajdujesz, prawdopodobnie będzie aby być dużo danych, które muszą być zarządzane w jakiś sposób.

Książka projektowanie baz danych dla zwykłych śmiertelników Michael Hernandez został mi polecony jako dobry początek i pomógł mi wiele w moich przygotowaniach. Chciałbym również upewnić się, że przynajmniej zrozumieć niektóre podstawowe SQL Jeśli jeszcze nie.

 7
Author: tordal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-06 10:54:47

Sugerowałbym, aby któryś z numerycznych podręczników (Wybierz język) był przydatny.

W zależności od języków, których używasz lub czy będziesz robił wizualizację, mogą być inne sugestie.

Kolejna książka, którą naprawdę lubię to obiektowa implementacja metod numerycznych, autor: Didier Besset Pokazuje, jak wykonać wiele równań w Javie i Smalltalku, ale co ważniejsze, wykonuje fantastyczną pracę, pomagając pokazać, jak zoptymalizować równania do wykorzystania na komputerze i jak radzić sobie z błędami z powodu ograniczeń na komputerze.

 6
Author: James Black,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-06 10:53:58

Książka Donalda Knutha o algorytmach seminumerycznych.

 4
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-04 10:25:17

MATLAB jest szeroko stosowany w inżynierii do projektowania, szybkiego rozwoju, a nawet aplikacji produkcyjnych (mój obecny projekt ma MATLAB generowane DLL do wykonywania zaawansowanych liczb crunching, które było łatwiejsze niż w naszym rodzimym C++, a nasze FPGA używać rdzeni MATLAB generowane do przetwarzania sygnału zbyt, co jest znacznie łatwiejsze niż kodowanie to samo ręcznie w VHDL). Istnieje również zestaw narzędzi finansowych dla MATLAB , które mogą Cię zainteresować.

To nie znaczy, że MATLAB jest najlepszym wyborem dla Twojej dziedziny,ale przynajmniej w inżynierii, jest szeroko stosowany i nigdzie się nie wybiera.

 4
Author: metal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-04 19:42:41

Jeden problem programistów naukowych twarz jest utrzymanie repozytorium kodu (i danych), które inni mogą użyć do odtworzenia eksperymentów. Z mojego doświadczenia wynika, że jest to umiejętność niewymagana w rozwoju komercyjnym.

Oto kilka odczytów na ten temat:

Są w kontekście biologii obliczeniowej, ale zakładam, że dotyczy to większości programowanie naukowe.

Spójrz również na Skrypty Pythona dla nauki obliczeniowej .

 4
Author: pufferfish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-15 10:19:28
 4
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-23 12:20:06

Dla generycznego C++ w środowisku naukowym, Modern C++ Design autorstwa Andrei Alexandrescu jest prawdopodobnie standardową książką o wspólnych wzorcach projektowych.

 3
Author: Georg Fritzsche,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-04 05:10:13

Gdy już zaczniesz działać, zdecydowanie polecam lekturę tego bloga .

Opisuje sposób używania szablonów C++ do zapewnienia bezpiecznych jednostek typu. Więc na przykład, jeśli pomnożysz prędkość przez czas, otrzymasz odległość itp.

 2
Author: Richard Corden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-04 10:20:40

Czytanie kodu źródłowego też bardzo pomaga. Python jest świetny w tym sensie. Nauczyłem się ogromnej ilości informacji po prostu przekopując się przez kody źródłowe naukowych narzędzi Pythona. Ponadto śledzenie list dyskusyjnych i forów ulubionych narzędzi może jeszcze bardziej poprawić twoje umiejętności.

 2
Author: Gökhan Sever,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-27 04:48:15

To może być przydatne: natura modelowania matematycznego

 0
Author: David Lehavi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-04 05:22:50
 0
Author: jason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-10 14:23:58

Writing Scientific Software: A Guide to Good Style to dobra książka z ogólnymi poradami dotyczącymi nowoczesnego programowania naukowego.

 0
Author: e.tadeu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 18:13:46

Dla Javy polecam zajrzeć do Unit-API
Implementacje to Eclipse UOMo (http://www.eclipse.org/uomo) lub JScience.org (prace w toku dla Unit-API, wcześniejsze implementacje JSR-275 istnieją)

 -1
Author: Werner Keil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-23 12:09:37