Słyszę o C, C ++, Javie każdego dnia, gdy ludzie zaczynają mówić o informatyce, ale na moich pierwszych zajęciach z informatyki jesteśmy proszeni o pisanie w Scheme (DrRacket).
Dlaczego?
Jakie to wpłynie na moje przyszłe rozumienie programowania?
AKTUALIZACJA: Skończyłem swój pierwszy semestr, ale nie do końca skończyłem ze Scheme. W mojej drugiej kadencji (która jest teraz) zajęliśmy się programowaniem w języku C. Początkowo frustracja nauczyła mnie wskazówek, ale teraz czuję się znacznie lepiej.
Nie ma nic więcej do powiedzenia. Próbuję nauczyć się języka Java (lub C ++?) Dla części OOP, której mi brakuje. Do tej pory najbardziej lubię programowanie funkcjonalne. Lambda jest po prostu fascynująca. :)
Odpowiedzi:
Brzmi jak świetna szkoła! Dialekty Lisp znacznie ściślej podążają za matematycznym paradygmatem algorytmów. Zmuszają programistów do nauki rekurencji i stylu funkcjonalnego. To doskonałe doświadczenie. Twoja szkoła jest w szeregach z MIT, który wciąż używa Abelsona i Sussmana do wymaganego CS 6.001.
Ten artykuł może być zachęcający i pomocny w zrozumieniu problemu.
źródło
Nikt nie oczekuje, że jako student pierwszego roku będziesz wystarczająco biegły w każdym języku, aby znaleźć prawdziwą pracę, więc dlaczego nie zacząć od takiego, który jest łatwy do nauczenia się? Oczekiwanie, że nowicjusze nauczą się programowania przy użyciu profesjonalnego języka w profesjonalnym środowisku IDE, przypomina trochę dawanie skalpela studentowi pierwszego roku medycyny i zmuszanie go do pracy na żywych ciałach.
Nie martw się; w końcu nauczysz się Java / C / C ++, prawdopodobnie rozpoczynając drugi rok. Jeśli zaczniesz uczyć się Java 6 teraz, do czasu ukończenia Java 8 nie będzie już dostępny. Lub zostanie zastąpiony przez Python. Lub jakiś inny język, który nie został jeszcze wynaleziony, ale podbija branżę. Lepiej odkładaj naukę „popularnych” rzeczy tak długo, jak to możliwe, aby nie stały się przestarzałe, gdy dostaniesz się na siłę roboczą.
Schemat / Racket pomoże Ci skupić się na ważnych pojęciach: projektowaniu algorytmu, strukturach danych i manipulowaniu informacjami. Wiesz, rzeczy wspólne dla wszystkich języków.
źródło
Gratulacje, teraz stajesz się ekwiwalentem wegana w świecie komputerów, a za dwa lata nie będziesz w stanie zakończyć dyskusji bez informowania ludzi o wyższej moralnej podstawie, na której stoisz. ;)
W każdym razie masz bardzo dobrą szkołę. Szkoły, które nie są biczowane przez przemysł, są dobre.
Jak ktoś inny powiedział, uczą cię nauki, z której czerpiesz rzemiosło .
Wiele złych farm małp kodowych uczy cię rzemiosła, a potem możesz wywnioskować z niego naukę, ale nie jest to gwarantowane. (i możesz skończyć z dość dziwnymi nieporozumieniami na ten temat)
W każdym razie, jako honorowy członek funkcjonalnego tłumu, kiedy się stąd wydostaniesz, zawsze poczujesz się niezrozumiany i niedoceniany .
Przyznajmy, że przeciętny komputerowy kreator nie jest niczym nowym.
Jesteś teraz na wysokie ryzyko:
Prawdopodobnie spodoba ci się również open source, ale nigdy nie znajdziesz wystarczającej liczby współpracowników do swoich funkcjonalnych projektów.
źródło
To trochę jak pytanie, w jaki sposób czytanie Szekspira pomoże ci napisać prace semestralne. Programowanie (w dowolnym języku) to tylko sposób na wyrażenie swoich pomysłów w formie wykonywalnej. Informatyka dostarcza koncepcyjne elementy składowe, które dadzą ci coś ciekawego do powiedzenia. Składnia schematu jest stosunkowo prosta, dzięki czemu można szybko dotrzeć do interesujących pomysłów i nie natrafić na wiele błędów kompilatora, standardowych bibliotek itp.
Zwróć szczególną uwagę na zajęciach - w tym semestrze nauczysz się wielu ciekawych rzeczy.
źródło
Wygląda na to, że dopiero zaczynasz programować i nie masz wcześniejszego doświadczenia. Oto kilka wyjaśnień:
Dlaczego schemat, a nie C / C ++ / Java ...?
Ucząc się języka programowania (można by dokonać analogii z językiem angielskim), uczysz się składni, której musisz przestrzegać, aby kod był poprawny gramatycznie. Jednak język nie nauczy Cię logiki rozwiązywania problemów. Aby poznać tę logikę, uczysz się różnych paradygmatów programowania .
Każdy język może implementować (mniej lub bardziej dokładnie) jeden lub więcej paradygmatów. Paradygmat to sposób na uporządkowanie logiki, a paradygmat zaimplementowany przez Schemat nazywa się Programowaniem Funkcjonalnym (FP).
Prawdziwe pytanie, które zadajesz, brzmi: dlaczego FP?
Jak wspomniałeś, C, C ++ i Java (które nie implementują FP) są znacznie bardziej popularne. W rzeczywistości (z różnych powodów wszyscy mają swoje zdanie) FP nie jest bardzo popularna w branży.
Z drugiej strony FP jest bardzo wysoko ceniony w środowisku akademickim. Jest bliższy powszechnemu podejściu matematycznemu, koncentruje się bardziej na sprawdzalności i optymalizacji algorytmów, a większość ludzi zgodzi się, że dzięki temu ogólnie będziesz lepszym programistą.
Jest podobny do szkół, które uczą łaciny w celu nauki angielskiej literatury.
źródło
Powinieneś nauczyć się, jak odbywa się programowanie i jakie są podstawowe pojęcia. Języki codziennego użytku używane w większości firm mogą być odpowiednie do tworzenia potrzebnego dzisiaj oprogramowania, ale niekoniecznie najlepiej nadają się do nauki podstaw programowania.
Po opanowaniu koncepcji łatwo jest zastosować je w innych językach.
źródło
Jeśli uczysz się z DrRacket, założę się, że korzystasz także z programu Jak projektować programy.
Oto, co jeden z (co prawda stronniczych) autorów HtDP ma do powiedzenia na temat tego, jak Scheme nauczania przygotowało studentów z Northeastern University do współpracy w ramach programu edukacyjnego („kooperacja”: studenci naprzemiennie semestry studiów akademickich z semestrami studiów stacjonarnych zatrudnienie).
Edycja: dla osób bardzo zainteresowanych racjonalnością programu nauczania, oto wyjaśnienie głównego architekta - http://www.youtube.com/watch?v=m3be1PHW5X0
źródło
Moja szkoła zaczęła się także od programu. Jednym z wspomnianych powodów było wyrównanie szans. Większość Comp Sci pierwszego roku może mieć trochę lub dużo kontaktu z bardziej popularnymi językami. Mniej prawdopodobne było, że ktokolwiek miał dużą wiedzę na temat Schematu.
źródło
W rzeczywistości, ponieważ Lisp (Schemat będący dialektem) jest Wielką Dame języków funkcjonalnych (pomyśl o F #, Groovy, Clojure, Haskell itp.), To szkolenie nie pozostawia cię w żadnej niekorzystnej sytuacji komercyjnej, ponieważ jest to najgorętsze temat na temat bloku programistycznego w tej chwili.
źródło
Schemat pomoże ci się dobrze postarać i właściwie myśleć o funkcjonalnych językach programowania. Na przykład Scala jest hybrydą Functional / OO, która jest dość genialna, choć nieco gęsta. Takie języki oznaczają jednak przyszłość - miejmy nadzieję.
Języki podobne do Lisp mają jednak czystość i prostotę konstrukcji, dzięki czemu są nieco łatwiejsze w nauczaniu. Zaletą jest jednak to, że znacznie łatwiej będzie ci później nauczyć się czegoś takiego jak Scala.
źródło
Ukończyliśmy program w pierwszej i pierwszej połowie drugiego semestru. Dopiero kiedy zaczęliśmy pracę z C, zacząłem zdawać sobie sprawę z mocy Scheme.
Jeśli chodzi o twoje pytanie, dlaczego wybrano Scheme: odpowiedź jest taka, że jest to jeden z najprostszych języków i pozwala ci dużo robić (szczególnie, gdy później zaczynamy grać z leniwymi listami). Ponadto :
źródło