Jestem zupełnie nowy w nauce obliczeniowej i szukam dobrego punktu wyjścia.
Rozumiem, że nie ma obiektywnie najlepszego języka, ale chciałbym nauczyć się języka, który ma niewątpliwie silną i widoczną obecność w dziedzinie nauk obliczeniowych - taki, który uważa się za mający wyjątkowe możliwości i wydajność.
Na początek skłaniałem się ku modelowaniu związanemu z wiązaniem atomów i interakcjami, z wymogiem przedstawiania / symulacji graficznych.
Czy niektóre języki są lepsze dla niektórych dziedzin niż inne (tj. Fizyka vs. czysta matematyka)? A może wybór języka zależy od innych czynników?
Słyszałem, jak często rzucano imię Fortran.
Propozycje?
Odpowiedzi:
Sprowadza się to głównie do dostępnych bibliotek numerycznych, które pomogą w realizacji zadania. C / C ++ ma zaimplementowaną dużą liczbę bibliotek numerycznych, ale bycie językami niskiego poziomu nie jest najlepszym rozwiązaniem do szybkiego prototypowania czegoś.
Myślę, że aby szybko przejść do rozwiązania, zaleciłbym użycie czegoś takiego jak Matlab lub Mathematica. Mają duży zestaw narzędzi i są na bardzo wysokim poziomie. Najprawdopodobniej twoja implementacja nie będzie skalowana do użytku produkcyjnego, ale może być dobrym placem zabaw dla wypróbowania różnych metod. Gdy znasz już ścieżkę, którą możesz obrać, zawsze możesz bardziej efektywnie zaimplementować coś w C / C ++.
źródło
Pyton!
Parafrazuje to, co moim zdaniem jest najlepszym sposobem podejścia do problemu w informatyce naukowej. Zacznij od rozwiązania problemu przez zabawkę z przykładami zabawek w małych skryptach. Stań się bardziej systematyczny i skonfiguruj zestaw kodu. Następnie uruchom kod! Na koniec, jeśli to konieczne, wykonaj optymalizację kodu. Nie wymyślaj koła na nowo i nie dokonuj przedwczesnej optymalizacji.
(Dodatkowe plusy: Python jest dostępny za darmo - bez problemów z licencją, duża społeczność np. Na przepływie stosów, moduły do dobrego programowania jako testowanie jednostkowe lub logowanie ...)
źródło
Wypróbuj Python, jak opisano na przykład w książce Python Scripting for Computational Science .
źródło
Python może być świetnym punktem wyjścia. Śledzenie zasobów jest doskonałym punktem wyjścia.
http://www.openbookproject.net/thinkcs/python/english2e/
źródło
Fortran: podobny do Matlaba, łatwy do nauczenia się i używany oraz szybko produktywny, ale dobry tylko do obliczeń numerycznych
C ++: Trudny do opanowania (zajmie ci lata), ale dużo używał poza obliczeniami numerycznymi (bezpieczeństwo pracy)
Python: W dzisiejszych czasach jest bardzo polecany, ale zbyt wolny, by można go było łatwo wykonać. Będziesz musiał napisać wszystkie swoje jądra kosztownie obliczone w języku C, a następnie wywołać je z języka Python, co oznacza, że będziesz musiał nauczyć się (co najmniej) dwóch języków
źródło
Krótka odpowiedź
Dowiedz się o podstawach kodu zorientowanego obiektowo poprzez python i poznaj podstawy informatyki przez C. Kiedy przynajmniej dobrze sobie radzisz z tymi dwoma innymi językami, naucz się C ++, ponieważ w C ++ możesz zrobić prawie wszystko i spraw, by działał szybko (choć pisanie trwa wieczność).
Dłuższa odpowiedź
Tak, oto rzecz: dla pierwszego projektu będziesz w czyimś laboratorium, pracując nad kodem innej osoby. W takim przypadku to oni wybiorą język programowania. Co osobiście uważam za świetne!
Mam na myśli, że jako początkujący przez jakiś czas tak naprawdę nie poznasz swojego łokcia od łokcia, a zwłaszcza, gdy nie wiesz, co robisz, nauka programowania może być bardzo zaciągająca. Dlatego dobrze jest mieć strukturę i ograniczenia, które wynikają z pracy nad kodem innej osoby, i dobrze jest mieć motywację i emocje, które mogą pochodzić tylko z pracy nad prawdziwym projektem.
Mimo to, niezależnie od tego, jakiego języka używa twoje laboratorium (szczególnie jeśli jest to Matlab), powinieneś prawdopodobnie nauczyć się python, C i C ++. W szczególności, jeśli nie pochodzisz z informatyki, MUSISZ przeczytać „The C Programming Language” Kernighana i Ritchiego. Ma 35 lat i daje wyraźne wrażenie, że jego autorzy programowali na kartach perforowanych, ale jest to najrzadszy z ptaków: ponadczasowa książka o informatyce. Sprawi, że wiele rzeczy będzie znacznie wyraźniejszych.
źródło