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.
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
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.
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:
- odpowiedni-funkcjonalny-jezyk-dla-nauki-statystycznej-informatyki
- books-for-learning-the-R-language
- co-mozna-zrobic-w-r-tego-nie-mozna-zrobic-z-Pythonem-numpy-scipy
- r-for-finance-tutorials-resources
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 .
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.
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.
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.
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.
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.
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 .
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
Ok oto moja lista książek, których używam do tego samego celu:
Metody numeryczne dla naukowców i inżynierów
Numerical Recipes 3rd Edition: The Art of Scientific Computing
CUDA na przykładzie: Wprowadzenie do programowania GPU ogólnego przeznaczenia
Programowanie równoległe w C z MPI i OpenMP
Donald Knuth: algorytmy Seminumeryczne. Tom 2 sztuki programowania komputerowego
Również znalazłem się za pomocą R zamiast Pythona ostatnio.
Dla generycznego C++ w środowisku naukowym, Modern C++ Design autorstwa Andrei Alexandrescu jest prawdopodobnie standardową książką o wspólnych wzorcach projektowych.
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.
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.
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
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
Donald Knuth: Seminumerical Algorithms , Volume 2 of The Art of Computer Programming
Press, Teukolsky, Vetterling, Flannery: Numerical Recipes in C++ (książka jest świetna, tylko uważaj na )
I mieć podgląd na kod źródłowy GNU Scientific Library .
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.
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ą)
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