Kontekst osobisty: C ++ uczyłem się formalnie przez ostatnie 6 miesięcy na uniwersytecie. Wcześniej przez rok zajmowałem się JavaScriptem. Teraz rozważam naukę języka Python podczas miesiąca wolnego od szkoły.
Czy dzieląc swoje skupienie na wczesnym etapie procesu uczenia się, zmniejszam efektywność uczenia się? Czy powinienem spędzić miesiąc wolny, kontynuując pracę w C ++? A może nigdy nie jest za wcześnie na naukę nowego języka?
programming-languages
learning
efficiency
Przewidywanie
źródło
źródło
Odpowiedzi:
Moje doświadczenie z Pythonem jest ograniczone do niektórych kodów odtwarzania tylko nieco bardziej skomplikowanych niż hello world, więc nie będzie to bardzo szczegółowa odpowiedź dla Pythona, ale mogę wam powiedzieć:
Różnice między językami są w szczegółach, takie jak składnia, a niektóre specyfikacje języka będą różne (na przykład różne sposoby obsługi błędów, możliwości we / wy i sposób, w jaki kompilatory przekształcają dane wejściowe w coś wykonywalnego), ale zarówno C ++, jak i Python oferują to samo paradygmaty, więc rozwiązywanie problemów można wykonać w podobny sposób w obu językach. Zarówno C ++, jak i Python są imperatywne i zorientowane obiektowo, więc prawdopodobnie będziesz dość szybko wychwytywał python, jeśli nie masz problemów z C ++ po opanowaniu nowej składni przy użyciu technik rozwiązywania problemów, które znasz z C ++. Jeśli chcesz, możesz używać Pythona również do programowania funkcjonalnego, ale nigdy nie dotknąłem tej części, więc nie mogę ci o tym wiele powiedzieć.
Czy jest za wcześnie? Naprawdę nie mogę opowiedzieć z twojej historii w ostatecznym tak lub nie. Czy jesteś już wystarczająco pewny, aby pisać pełne aplikacje (GUI) w C ++? (tj. używaj bibliotek, bardziej złożonych funkcji językowych, takich jak generyczne i / lub szablony itp.) Myślę, że nauka nowego paradygmatu języka jest znacznie trudniejsza niż nauka nowego języka w tej samej rodzinie paradygmatów. Kiedy wkroczysz na nowe terytorium paradygmatu, będziesz musiał poświęcić znacznie więcej czasu na uzyskanie dobrego pomysłu na rozwiązanie problemów z tym paradygmatem. Pomiędzy językami OO istnieją różnice w tym, jak traktowane jest dziedziczenie i jak dane są przekazywane do pamięci, gdy przekazujesz parametr / argument do funkcji wpływającej na wydajność. Ale aby zacząć, na początku są to zwykle niewielkie problemy.
Domyślam się, że jeśli jesteś wystarczająco pewny siebie w C ++, aby zrobić coś więcej niż cześć, świat w fantazyjny sposób, jesteś gotowy na uruchomienie. Powierzchowna nauka wielu języków pomoże ci zrozumieć przykłady kodu niezależnie od używanego języka, ale tworzenie własnego kodu wymaga nieco większego zrozumienia, w jaki sposób języki działają i jak się od siebie różnią.
PS Kiedy chcę nauczyć się powierzchownie używać nowego języka, zwykle próbuję następujących rzeczy, aby poznać składnię języka i powierzchowne działanie:
źródło
Oczywiście, że tak.
Bez wątpienia, czasem jest zbyt wcześnie, aby nauczyć się nowego języka programowania.
Najprostszym przypadkiem jest pojawienie się języka el-stinko, a zanim ktokolwiek zauważy, że jest nieodpowiedni, ucząc się go, uszkadzasz mózg. Kilka, które przychodzą na myśl to BASIC, FORTH i APL.
W przypadku bardziej skomplikowanego przypadku jeden z wielkich informatyków opisał ten problem, który bardzo krótko stwierdził, że praktyka utrwala się i istnieje wiele dyscyplin, których należy się nauczyć przed nauką języków komputerowych, aby język ten nie zakłócał bardziej fundamentalnego zrozumienia . Jego słowami:
Przeciwnik nurkowania w programowaniu nazywa się Edsger Dijkstra i miał bardzo wybitną karierę. Został wyróżniony nagrodą ACM Turinga z następującym cytatem:
Artykuł, w którym rzuca się przedwczesną naukę języków programowania, to:
„O okrucieństwie faktycznego nauczania informatyki” http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF
Poza tym proszę, nie płoń mnie, jestem tylko posłańcem.
źródło
Czy jest jeszcze za wcześnie, aby uczyć się nowego języka?
Powiedziałbym tak. Jeśli nadal skupiasz się na samej idei, że komputer może faktycznie robić to, co ci powiesz, to nauka drugiego języka prawdopodobnie tylko Cię dezorientuje.
Ale jeśli przekroczysz punkt, w którym zdasz sobie sprawę, że komputer robi dokładnie to , co mu powiesz, bez względu na to, jak głupie jest, istnieje prawdopodobieństwo, że masz wystarczającą znajomość swojego pierwszego języka, który patrzy na drugi (i trzeci) !) język nie przeszkadza.
źródło
Nie możesz zrobić obu? Zrobiłbym projekt w C ++ i uczyłbym się bitów Pythona (tylko dlatego, że jest tak niesamowity), możesz rozwiązać problemy na ProjectEuler.net przy użyciu Pythona
Ogólnie myślę, że to zły pomysł na naukę języka, porzucenie go i rozpoczęcie nauki nowego. Na wczesnym etapie należy elastycznie pracować z różnymi paradygmatami. Ale tak właśnie myślę.
źródło
Praktykującemu programistowi powiedziałbym bez zastrzeżeń, że nauka nowego języka prawie nigdy nie jest złym pomysłem. Studentowi uniwersytetu nalegam na ostrożność, zależnie od tego, jakie zajęcia się zbliżają. Powodem jest to, że na szkolnym egzaminie często musisz recytować szczegóły językowe bez korzyści ze środowiska kompilacji / wykonywania, które z łatwością wskaże twoje błędy.
Zwłaszcza gdy masz tylko kilka miesięcy doświadczenia, bardzo łatwo jest pomieszać szczegóły w swojej głowie. Jeśli troszczysz się o swoje oceny i bierzesz lekcje z takimi egzaminami, byłbym ostrożny. W prawdziwym świecie to nie jest problem.
edytuj : Pierwotnie powiedziałem składnię, ale nieskompaktowe szczegóły są równie ważne dla profesorów, a jest ich o wiele więcej.
źródło
append()
vs.push_back()
dla listy, co jest czymś, co nawet doświadczeni programiści muszą sprawdzić, jeśli od pewnego czasu nie używali określonej funkcji w określonym języku. Zdolność przywołania składni na miejscu bez wątpienia pomaga, ale w zdecydowanej większości zadań nigdy nie jest wymagana .