czy kodowanie jest ważne? [Zamknięte]

9

Czy kodowanie jest ważne, aby być dobrym w informatyce? Czy należy wdrożyć algorytm, aby dobrze go znać?

Pamiętam idiom profesora, że ​​„ nigdy nie koduję”

Hilal
źródło
32
Pytasz grupę programistów, czy kodowanie jest ważne ... możesz nie otrzymać obiektywnej odpowiedzi.
Rachel
25
Z całym szacunkiem dla idiomu twojego profesora, jeśli nie pisze kodu, nie ma kwalifikacji, by uczyć innych, jak pisać kod. Jeśli jego nauczanie ma charakter czysto teoretyczny, nadal skorzystałoby z umiejętności kodowania.
Robert Harvey
19
Czy wziąłbyś lekcje pływania od kogoś, kto nie umiał pływać?
Steven A. Lowe,
5
@Steven A. Lowe: Myślę, że profesor niebędący pływakiem uczy fizjologii wodnej, a nie pływania. Mimo to, jeśli nie będzie pływał, wątpię, by wiedział, jak się czuje narkoza azotowa.
Javier
4
@Jierier: bardziej prawdopodobne jest, że uczy podwodnych wyburzeń, ale nie ma nawet certyfikatu SCUBA. Techniczny termin dla takich ludzi (innych niż „profesor”) to „poseur” ;-)
Steven A. Lowe

Odpowiedzi:

27

Naprawdę nie znasz dobrze algorytmu, dopóki go nie kodujesz.

Steven A. Lowe
źródło
3
niekoniecznie jest to prawda, można zrozumieć algorytm i zastosować go do sytuacji lub problemu bez faktycznego kodowania.
aggietech
10
@aggietech: Myślę, że kluczowym słowem jest „dobrze”.
Robert Harvey
2
@aggietech, Robert ma rację. Potrafię papugować algorytmy, ale kiedy naprawdę staram się, aby działały, dowiaduję się, ile muszę się o tym dowiedzieć.
3
jeśli mówisz o for-loopach i rodzajach bąbelków, to nie jest to wielka sprawa, ale istnieje ogromna różnica między czytaniem książki na temat algorytmu genetycznego a faktycznym rozwiązywaniem z nim rzeczywistych problemów
Steven A. Lowe,
2
@ Steven, tak, złożoność ma z tym wiele wspólnego.
19

Kodowanie nie jest ważne dla twojego profesora, ale musisz pamiętać, że nie jest opłacany za robienie rzeczy. Otrzymuje wynagrodzenie za POWIEDZENIE (i NAPISZ rzeczy).

Jestem byłym profesorem matematyki, więc dobrze rozumiem tę dynamikę.

Jeśli chcesz podążać jego ścieżką i być teoretycznym informatykiem, to tak, kodowanie ma mniejsze znaczenie. Ale jeśli to zrobisz, pamiętaj o zachowaniu pokory, wiedząc, że twoje wynagrodzenie jest wypłacane z zasobów zarobionych przez tych, którzy zdecydowali się ZROBIĆ.

Eric Wilson
źródło
3
Głos doświadczenia. Chodzi o najlepsze podsumowanie profesorskie, jakie myślę, że widziałem.
TehShrike,
1
Tak, i dodam, że musisz ćwiczyć „rób”, jeśli zamierzasz uczyć innych, jak „dobrze” robić.
Beth Whitezel,
@ BitOff: Zgadzam się, ale „jeśli” jest również „tylko jeśli”. Profesor, który nigdy nie koduje, nie ma oprogramowania do nauczania biznesu, ale może doskonale nadawać się do nauczania, powiedzmy, teorii złożoności. W tym przypadku uczą studentów, jak dowodzić twierdzeń, więc jedynym wymogiem jest to, że musi mieć praktykę dowodzenia twierdzeń (nie kodowania).
ShreevatsaR
@ShreevatsaR Tak Zgadzam się. I właściwie nie jestem aż tak surowy, że w praktyce dużo kodują. Dobrzy koderzy rzadko tworzą dobrych nauczycieli. Jeśli nauczyciel zna swoje punkty tygodniowe, może to nadrobić. Mamy lokalnie program, który wprowadza uczniów z branży do klasy. Nauczyciel jest ekspertem w nauczaniu, umie kodować i wie, jak wyciągnąć informacje od osoby z branży z korzyścią dla uczniów.
Beth Whitezel
16

Informatyka to nie tylko komputery, ale astronomia to teleskopy

- Edsger Dijkstra

Zwykle się zgadzam.

ElGringoGrande
źródło
2
Ok, ale jak to się ma do pytania?
Robert Harvey
2
„Czy kodowanie jest ważne, aby być dobrym w informatyce?” Jeśli komputer nie jest powiązany, jak ważne może być fizyczne kodowanie komputera?
ElGringoGrande
1
@Robert Harvey: Informatyka nie mówi wprost o komputerach, a wielu astronomów spędza mało czasu patrząc przez szklaną soczewkę. Niektórzy po prostu analizują wyniki. Połowa ważnych odkryć w programowaniu komputerowym była znana jeszcze przed powstaniem komputera.
Orbling
2
@Robert Harvey: Informatyka po prostu nie polega na programowaniu, jest nauką obliczeń. Poza czystym kodowaniem binarnym używasz języka, który jest abstrakcją, aby wdrożyć teorie i odkrycia informatyki. W informatyce istnieje wiele pomysłów (np. Obliczenia kwantowe), których programowanie nie może w pełni zrealizować. Mówię tylko, że wszystkie idee informatyki można w pełni i elegancko wyrazić bez użycia języka programowania. Wymień jeden, który nie może.
ElGringoGrande
3
@Orbling: Very true. Przypomnijmy na przykład, że Turing wynalazł pojęcie uniwersalnej maszyny Turinga jeszcze przed stworzeniem pierwszego komputera elektronicznego. Czy fakt, że nie napisał ton kodu, czyni go niekompetentnym informatykiem?
mipadi
11

Jeśli mówisz o byciu czystym akademikiem informatyki specjalizującym się w abstrakcyjnych, fundamentalnych koncepcjach informatyki, niekoniecznie.

Zgubić analogię: to trochę jak pytanie, czy każdy naukowiec rakietowy w NASA powinien lecieć w kosmosie, aby być „dobrym naukowcem rakietowym”. Oczywiście nie. Bycie astronautą jest częścią przemysłu lotów kosmicznych i bardzo praktyczną częścią, ale to nie znaczy, że naziemni naukowcy nie są tak samo ważni na swój sposób.

To powiedziawszy, prawdopodobnie dobrym pomysłem jest ZASTOSOWANIE stworzonego przez siebie algorytmu, jeśli nie napisanie go w prawdziwym języku programowania. W tym sensie można myśleć o projektowaniu algorytmów jako gałęzi matematyki.

Stoły Bobby'ego
źródło
1
Myślę, że można śmiało powiedzieć, że wszyscy naukowcy zajmujący się rakietami w NASA mają gruntowne podstawy w nauce o rakietach oraz dogłębne, praktyczne doświadczenie w inżynierii mechanicznej i elektrycznej. Aha, i na ogół wiedzą też, jak pisać kod.
Robert Harvey
3
Sądzę, że obliczali trajektorie wiele razy, a nie tylko teoretycznie na temat tego, jak to zrobić.
3
+1, dodam kolejny przykład - nie musisz mieć doświadczenia w produkcji wina, aby być kimś wspaniałym (lub jakkolwiek nazywają się faceci degustujący wino).
Jas
2
@Jas: Straszna analogia. Informatycy nie są odbiorcami produktu końcowego. Oni winiarzami.
doppelgreener
1
@Axidos Nie, nie, oni są hodowcami winogron .
Mark C
9

Kodowanie nie jest zbyt ważne, aby być prawdziwym informatykiem. A myślenie w kodzie może ograniczać myślenie, gdy starają się opracować użyteczne abstrakcyjne pojęcia. Większość doskonałych programistów nie ma intelektualnego narzędzia do analizowania złożonych algorytmów ani opracowywania pojęć, takich jak języki programowania, zaawansowane algorytmy wyszukiwania i sortowania, teoria skończonych automatów, teoria przetwarzania rozproszonego, R-drzewa, protokoły odporności na uszkodzenia, niezawodne protokoły komunikacyjne, cyfrowe algorytmy przetwarzania sygnałów, teoria kryptograficzna, analiza i optymalizacja wydajności, wydajne buforowanie, redukcja map, niezawodne protokoły bezpieczeństwa itp. Znakomici koderzy i inżynierowie komputerowi mogą zwykle wykorzystywać te teorie w systemach, które próbują zbudować i robią to dość skutecznie, ale tak naprawdę jest to dziedzina inżyniera systemów komputerowych lub programisty.

Kodowanie jest niezwykle ważne dla bycia programistą komputerowym. Przydatne jest również zrozumienie, w jaki sposób zakodować użyteczne abstrakcyjne pojęcia opracowane przez informatyków w działającym kodzie.

Jednym z dużych problemów w informatyce jest to, że często muszą znaleźć rozwiązania problemów matematycznych, które mają niewielką użyteczność w rozwiązywaniu dzisiejszych problemów programistycznych. Nawet gdyby kodowali rozwiązanie, nikt tak naprawdę nie byłby w stanie z niego skorzystać. Pomyśl o teorii cyfrowego przetwarzania sygnałów. Został wynaleziony przez ludzi takich jak Fourier, Hilbert i Shannon, ale zastosowanie do skomputeryzowanych problemów z DSP nie było powszechnie możliwe przed około 20 laty.

Dużym problemem w edukacji komputerowej jest to, że większość ludzi nauczanych przez informatyków nie zostanie informatykami. Ale zbyt wielu informatyków tego nie rozumie. Kodowanie może nie być dla nich ważne, ale jeśli jesteś w ich klasie, prawie na pewno będzie dla ciebie ważne.

Innym dużym problemem w edukacji komputerowej jest to, że wielu prawdziwych informatyków nie ma doświadczenia przemysłowego, aby być przydatnym w nauczaniu tworzenia oprogramowania. Zasadniczo starają się nauczyć czegoś, czego tak naprawdę nie znają. To powoduje, że tracą wiarygodność. Rzeczy ważne w środowisku przemysłowym po prostu często nie rejestrują się u niektórych z tych informatyków.

Długie i krótkie kodowanie jest ważne dla większości ludzi, którzy zostają „informatykami”, ponieważ większość z nich zostanie programistami i inżynierami systemów komputerowych.

Jay Godse
źródło
Doskonała odpowiedź, prosto do sedna problemu. Problem polega na tym, że musisz nauczyć się zarówno: informatyki i inżynierii oprogramowania odpowiednich dla przemysłu. Większość uniwersytetów uczy jednego lepiej od drugiego, zwykle pierwszego - nie jest to zbyt łatwe do osiągnięcia drugiego, ponieważ uniwersytet z natury jest instytutem badawczym, który promuje ten pierwszy i ma niewiele wspólnego z drugim. Jest to problem w większości praktycznych dziedzin.
Orbling
3

Zależy od podpola, w którym przebywa profesor.

Każdy, kto jest kompetentny w analizie numerycznej, to prawdopodobnie świst z Fortranu. Każdy profesor AI zakoduje w Lisp lub Prolog lub coś w tym rodzaju.

W niektórych bardziej matematycznych obszarach naprawdę nie ma potrzeby kodowania. Sam wciąż byłbym podejrzliwy.

David Thornley
źródło
2

Brzmi jakby był bardziej dyskretnym facetem z matematyki ... tylko matematyką i teorią stojącą za informatyką. Weź to, co ci profesorowie mają do powiedzenia z odrobiną soli.

Steven Striga
źródło
5
Jestem entuzjastą matematyki i uzależniony od algorytmów. Zawsze lubię kodować. Jednak za kodowaniem stoją algorytmy. Myślę, że 1 pióro i 1 papier wystarczą na algorytmy i teorię obliczeń. To, co robię obecnie, to tylko myślenie i pisanie algorytmów, ale nie kodowanie
hilal
5
Weź to, co mówi każdy profesor z odrobiną soli. Jeśli jest dyskretnym matematykiem, weź go poważnie, gdy mówi o dyskretnej matematyce, a nie kiedy mówi o programowaniu lub inżynierii oprogramowania.
David Thornley,
1
Dyskretni faceci matematyki są jednymi z najważniejszych w tej dziedzinie, teoria jest implementowana przez programistów, nie trzeba implementować, aby udowodnić, że jest poprawna. Rzeczywiście szczypta soli.
Orbling
@Orbling I weź to, co mówią ci, którzy programują (szeroka grupa) z podobną dozą zawieszonego osądu i zdrowego rozsądku.
Mark C
@Mark C: Cóż, tak, zachęcam wszystkich do wzięcia wszystkiego, co powie ktoś z tymi dawkami.
Orbling
2

Muszę powiedzieć „Logika jest ważna”

John Hartsock
źródło
2
Ok, ale jak to się ma do pytania?
Robert Harvey
2

Możesz zrozumieć tylko teorię, ale zawsze odkryłem, że rozumiem algorytmy i takie 1000 razy lepiej po ich zakodowaniu (na przykład sortowanie bąbelkowe vs. Quicksort, dobrze jest znać Big-O, ale widzieć to w praktyce z dużymi danymi -set daje ci pewną aprobatę w świecie rzeczywistym w zakresie pomiaru złożoności obliczeniowej).

Jedną z interesujących rzeczy, które znalazłem, jest to, że im więcej studiujesz teoretyczne aspekty informatyki, tym łatwiejsze staje się kodowanie. W pewnym momencie przestajesz myśleć o rzeczach w określonym języku, ale raczej postrzegasz je jako szersze pojęcia sience computer.

Kurtis
źródło
2

To jest jak pytanie, czy wszyscy angielscy profesorowie powinni być w stanie pisać filmy, seriale telewizyjne, powieści, sztuki i wiersze. Podobnie wyobraź sobie profesora matematyki, który nigdy nie używa liczb do równie dziwacznego pomysłu. To znaczy, że istnieją pewne podstawowe elementy, które nadają kodowaniu pewne znaczenie w nauczaniu podstawowej informatyki. Dlatego profesor powinien znać podstawową składnię języka i pisać programy tak wyrafinowane, jak kursy, które wykłada profesor. Jeśli profesor uczy o projektowaniu kompilatora i nigdy wcześniej nie napisał kompilatora, byłby to poważny problem. Wyobraź sobie szefa kuchni gotującego ciasto, które nigdy wcześniej nie gotowało ani nie jadło ciasta. Aye carumba.

Chociaż widzę pewne zalety implementacji algorytmu, aby go znać, wątpię, że jest to wymóg. W końcu można się zastanawiać, jak daleko sięga do króliczej dziury implementacji, rozumiejąc, w jaki sposób algorytm jest implementowany? Na przykład, czy ktoś musi wziąć dowolny algorytm i wdrożyć go w ramach różnych paradygmatów, takich jak programowanie proceduralne, obiektowe i funkcjonalne, aby naprawdę go poznać? Czy muszą wiedzieć, w jaki sposób kompilatory tłumaczą cały kod i przenoszą bity na poziomie elektron-elektron, aby być raczej pedantycznym.


„Nigdy nie koduję” implikuje jednak ograniczenie zarówno przeszłości, jak i czasu teraźniejszego. Można również domniemywać, że „kodowanie” jest skromną rzeczą, która znajduje się poniżej profesora, w inny sposób, aby zobaczyć stwierdzenie, które może mieć raczej negatywny ton, który może nie wypaść dobrze w niektórych kręgach.

JB King
źródło
3
Angielscy profesorowie powinni wiedzieć, jak pisać skrypty filmowe, jeśli uczą innych, jak pisać skrypty filmowe. Ale wszyscy angielscy profesorowie z pewnością powinni umieć napisać bardzo dobrą pracę magisterską, jeśli nie prawdziwą książkę.
Robert Harvey
2
@Robert Harvey: Profesor OP nie powiedział, że nie umie kodować, tylko że nie. Mógłby być teoretycznym informatykiem, który spędza większość czasu na badaniach. Jak zauważył JB King, dopóki nie wykłada, powiedzmy, na temat projektowania kompilatorów lub inżynierii oprogramowania, bardzo dobrze mógłby być doświadczony i kompetentny w swojej dziedzinie.
mipadi
@Robert Harvey: Myślę, że @mipadi ma rację, profesor powiedział „nigdy nie koduję , nie że nie jest niezdolny.
Orbling
@JB King, @Orbling: założę się, że cytat to tłumaczenie, więc nie przesadzaj z nim dosłownie.
Javier
@Javier: Mógłby być, w takim przypadku byłoby to jeszcze mniej wyraźne.
Orbling
2

Twój profesor może mieć trochę racji, ponieważ aby być profesorem, nie musisz kodować, ale dużo wie o teorii. Ale to nie zadziała poza granicami uniwersytetu.

Manoj R.
źródło
1

Pomimo tego, że jestem profesjonalnym programistą, uzyskałem dyplom inżyniera mechanika.

Możesz być dobrym projektantem mechanicznym z bardzo małym doświadczeniem w budowaniu i obróbce części, pozostawiając to zadanie operatorom. Ale wiedza, jak budować i obrabiać części, uczyni cię znacznie lepszym inżynierem, ponieważ możesz przewidzieć trudności związane z produkcją i montażem wszystkiego, co projektujesz.

To samo dotyczy oprogramowania. „Koder” to mechanik lub technik, podczas gdy inżynier oprogramowania to inżynier. W wielu miejscach jedna osoba wykonuje obie prace. Nie jest to niemożliwe, a w przypadku niektórych bardzo abstrakcyjnych kwestii może działać pozycja „tylko inżynierska”.

Ale w zdecydowanej większości nie ma żadnej korzyści z odmowy kodowania.

Jaka jest nazwa?
źródło
2
Ale, jak powiedziałeś, jesteś inżynierem mechanikiem i mówisz o inżynierii oprogramowania . Inżynierowie budują różne rzeczy. Ale profesor, o którym mowa, uczy informatyki .
mipadi
1

O ile nie zastanawiasz się i nie skończysz z problemem zatrzymania, zawsze jest zastosowanie kodowania w każdym aspekcie informatyki.

Jedyną klasą CS, którą wziąłem bez programowania, była teoria. Wyobrażam sobie, że jest wielu fizyków, którzy mówią: „Nigdy nie eksperymentuję”, ale prawdopodobnie są to również ci, którzy mówią: „Nigdy niczego nie odkrywam”. Byłbym zaskoczony, gdyby ich to obchodziło.

Peter Turner
źródło
1
W moim stopniu informatyki (z uniwersytetem w pierwszej dziesiątce na arenie międzynarodowej, więc nie jest to nic kiepskiego), powiedziałbym, że co najmniej jedna trzecia moich zajęć nie miała w sobie żadnego programowania. Komputery to znacznie więcej niż kod.
Orbling
Ok, no cóż, najwyraźniej poszedłem też do pierwszej dziesiątki uniwersytetu, być może nawet poszliśmy na ten sam uniwersytet i chodziliśmy na różne zajęcia w oparciu o nasze upodobania lub niechęci lub przypadkowo zdobywaliśmy profesorów jednego lub drugiego.
Peter Turner,
0

Jako student informatyki myślę, że na początku lepiej jest zrozumieć pojęcia związane z tworzeniem oprogramowania. Gdy poznasz ideę oprogramowania i jego współdziałanie z komputerem, nadszedł czas, aby rozpocząć kodowanie i rozwiązywanie określonych problemów związanych z implementacją.

Jest to tak jak „wyjątki programowe”, na początku zajmujesz się nimi tylko dlatego, że zrobiłeś coś, co nie było dozwolone. Następnie, kiedy się ich nauczysz, zacznij robić to samo z kodem, aby był bardziej szczegółowy.

Myślę, że ludzie, którym nie zależy na takich koncepcjach, jak programiści, którzy używają wyjątków jako normalnego przepływu pracy w swoich aplikacjach. Wiedzą JAK, ale tak naprawdę się nie DLACZEGO.

guiman
źródło
-6

Mam inny idiom dla twojego profesora:

Ci, którzy potrafią, robią, ci, którzy nie mogą, nauczają.

imo, rozmowa jest tania. Każdy może bez końca gadać o „teorii” i nazwać to „informatyką”. Ale dopóki nie zostanie wprowadzona w życie, teoria nie jest zbyt przydatna, ponieważ nie ma możliwości jej potwierdzenia. Chciałbym wziąć prof za opinię o czymś znacznie bardziej poważnie , gdybym wiedział, że rzeczywiście rozwiązać konkretny problem w kodzie, niż gdyby po prostu regurgitating „teorii”, które mogą lub nie mogą mieć żadnego dowody potwierdzające w celu wykonania kopii zapasowej swojego punktu widzenia.

Grandmaster B.
źródło
6
Einstein, Arystoteles, Webster, Ayn Rand, Thoreau, Konfucjusz i Booker T. Washington byli nauczycielami. Co za niewykształcone oświadczenie.
JeffO,
4
-1 za niezwykle obraźliwy komentarz dla nauczycieli. Często cytowany wiem, ale zawsze śmieszny. Oryginalna uwaga George'a Bernarda Shawa brzmiała: „Kto może, robi. Kto nie może, uczy”. z Man and Superman, 1903 - powiedział także: „Dla mnie jedyną nadzieją ludzkiego zbawienia jest nauczanie”. i był współzałożycielem London School of Economics (LSE), więc oceniasz jego zdanie.
Orbling
2
Einstein nigdy w życiu nie przeprowadzał fizycznego eksperymentu - opisał kilka eksperymentów myślowych, które zostały przeprowadzone przez innych i (z jednym wyjątkiem) wyszedł dokładnie tak, jak przewidywał. Czy powiedziałbyś, że Einstein nie osiągnął „znaczących osiągnięć poza klasą”? Dlaczego zakładamy, że tylko dlatego, że profesor niczego nie bezpośrednio wykorzystywane przez użytkowników końcowych realizowane, on nie, powiedzmy, zbadane nowy algorytm, który jest używany przez programistów w tej dziedzinie? W rzeczywistości wydajesz się nawet zakładać, że zadaniem profesora jest nauczenie studentów kodowania !
ShreevatsaR
3
Koleś, wielu moich profesorów informatyki (w MIT) było niesamowitych i wnieśli ogromny wkład w społeczeństwo, a oni robią „rzeczy w swojej dziedzinie” - dużo! Ale ich dziedzina ma niewiele wspólnego z kodowaniem i kodują co najwyżej bardzo rzadko, jeśli w ogóle. (Poważnie, czy oczekujesz, że ktoś pracujący nad obliczeniami kwantowymi napisze kod dla komputerów kwantowych, które nawet nie istnieją?) Wygląda na to, że masz bardzo wąski pogląd na informatykę. (Należy pamiętać, że to komputer nauka , nie inżynierskiej .)
ShreevatsaR
2
@GrandmasterB: Jeśli profesor nauk ścisłych skupi się na teorii obliczeń, jest bardzo prawdopodobne, że rzadko musi pisać kod. To nie znaczy, że nic nie robi w swojej dziedzinie - prawdopodobnie publikuje artykuły na temat teorii obliczeń! Jesteś utożsamiając programowanie z informatyki .
mipadi