Czy wyrażenie „nigdy nie wymyślaj koła ponownie” jest odpowiednie dla studentów?

115

Ciągle napotykam na wyrażenie „nie wymyślaj koła ponownie” lub „nigdy nie wymyślaj koła ponownie”, kiedy zadaję kilka pytań na temat SO. Mówią ci, abyś używał niektórych frameworków lub istniejących pakietów. Wiem, skąd taka postawa, ponieważ niemądrze jest tracić czas na coś, co inni już rozwiązali. A może tak?

Jako student stwierdzam, że używając kodu napisanego przez innych w celu rozwiązania mojego problemu, nie mogę się nauczyć tyle, ile bym chciał, i mam mniej wglądu. Czasami myślę, że to wyrażenie jest przeznaczone głównie dla pracujących programistów, którzy stoją w obliczu terminów, a nie dla studentów takich jak ja.

Czy to takie złe „odkrywać koło”? Może myślę, że to źle? Może jest jakiś sposób, aby uniknąć ponownego odkrycia koła, a jednocześnie wiele się nauczyć?

Gnijuohz
źródło
51
Przystąpienie do siłowni nie przyniesie większych korzyści, jeśli zachęcisz innych ludzi do podnoszenia ciężarów za ciebie (chyba że uczysz się żłobka).
Charles E. Grant,
82
Jeśli chcesz budować koła, możesz wynaleźć koło na nowo. Kiedy budujesz domy, dobrym pomysłem jest założenie, że budowniczowie kół wiedzą, co robią lepiej niż ty.
zzzzBov
22
Musisz przynajmniej spróbować zrobić koło! W przeciwnym razie nie wiesz, dlaczego powinieneś używać prefabrykowanego.
59
Absolutnie nie jest właściwe określenie. :)
CVn
2
Podczas tworzenia wyjątkowo zoptymalizowanego kodu może być w porządku wymyślać koła na nowo. Standardowe biblioteki są bardzo przydatne, ale często można stworzyć coś mniej ogólnego, ale szybszego.
Leo

Odpowiedzi:

126

Myślę, że masz rację. Większość programistów na tej stronie to prawdopodobnie profesjonaliści pracujący, których celem jest jak najszybsze stworzenie wysokiej jakości oprogramowania. Ponowne wynalezienie koła nie spełnia tego celu z dwóch powodów.

  1. Ponowne pisanie istniejącego kodu to zmarnowany wysiłek, który można by wykorzystać w unikatowych częściach systemu i powoduje, że projekt zajmuje więcej czasu niż to konieczne.
  2. Pierwsza wersja dowolnego kodu może zawierać błędy / nieprzewidziane problemy. Większość bibliotek i komponentów wielokrotnego użytku była wielokrotnie testowana w bitwie i łatana. Jeśli ponownie wymyślisz algorytm mieszający lub spróbujesz utworzyć własny RDBMS (chyba że taki jest projekt), częściej będziesz miał gorsze wyniki.

To powiedziawszy, w środowisku akademickim celem jest nauka , a nie dostarczanie oprogramowania z ograniczonym budżetem. Ponowne wynalezienie koła, aby zrozumieć, jak działają szprychy lub oś, to świetny sposób na osiągnięcie tego celu. Właśnie dlatego wiele programów nauczania obejmuje klasę budowania kompilatorów, gdy tylko niewielu pracujących programistów kiedykolwiek ma ku temu powód.

JohnFx
źródło
37
Zgadzam się z pomysłem zrozumienia, jak to działa, ale chciałbym również, aby szkoły programistyczne poświęciły trochę czasu na program nauczania, aby dowiedzieć się, jak korzystać z bibliotek stron trzecich i dlaczego powinieneś. Ciągle znajduję programistów i programistów o profesjonalnych umiejętnościach, którzy nie mogą tego zrobić i ostatecznie odkrywają koło.
Spoike,
3
świetna uwaga na temat kompilatorów
Chani,
1
Myślę, że ważniejsza jest nauka, aby nie wymyślać koła na nowo. Istnieje wiele rzeczy, które możesz zrobić, które nie wymagają tworzenia czegoś, co już zostało utworzone.
Thomas Bonini
@Krelp Gdy ktoś jest studentem, najważniejsze są pojęcia. Wielu profesorów wykorzystuje próbki kodu, aby umożliwić teorię i zastosowanie pomostu. Są to rodzaje programów, które zamierzają wynaleźć bibliotekę na nowo, ale ma to na celu upewnienie się, że uczniowie rozumieją materiał.
Jetti
2
Jako student musisz odkryć koło, aby zobaczyć, dlaczego jedzie tak szybko, jak to robi, ale jako profesjonalista musisz używać kół komercyjnych, abyś mógł jechać tak szybko, jak to możliwe. Niestety, jak się okazuje, SO to przede wszystkim strona dla profesjonalistów, a nie dla studentów (czy nie
zakazali
19

Odpowiedź zależy w dużej mierze od kontekstu. Jeśli chcesz uzyskać bardziej dogłębne zrozumienie struktur danych, próbując swoich sił w implementacji tabeli skrótów, najlepszym rozwiązaniem jest „odkrycie koła”. Jeśli uczysz się pisać kompilatory i potrzebujesz tablicy symboli, wdrożenie własnej mapy skrótów zamiast ponownego korzystania ze standardowej biblioteki jest całkowitą stratą czasu.

dasblinkenlight
źródło
17

Jako student spodziewałbym się, że zaczniesz edukację programistyczną, najpierw kopiując koło lub dwa na początek, a następnie ucząc się modyfikować koła, aby zobaczyć, jak działają i zrozumieć wszelkie ograniczenia. Później możesz nawet stworzyć zupełnie nowe koło, aby sprawdzić, czy możesz ulepszyć projekt, lub pokazać swojemu kierownikowi kursu swoje zrozumienie związanych z tym koncepcji.

Jako zawodowy profesjonalista oczekuję jednak, że nauczyłeś się, którego koła użyć, aby rozwiązać dany problem, i kiedy może być właściwe zmodyfikowanie istniejącego koła, jeśli tylko częściowo rozwiąże problem. Jeśli nie można znaleźć koło gdziekolwiek, to może zidentyfikowaniu nisza rynkowa, albo nie zbadane wystarczająco daleko i trzeba by być wystarczająco doświadczony, aby wiedzieć, kiedy byłoby właściwe, aby utworzyć nowy koło twojego posiadać.

Kwestia, kiedy należy ponownie wynaleźć rozwiązanie, jest złożona i wymaga czasu i doświadczenia, aby dowiedzieć się, kiedy lepiej byłoby stworzyć zupełnie nową wersję czegoś, co już zostało zrobione wcześniej. Jeśli rozwijasz się tylko przez krótki czas, lepiej po prostu użyć istniejącego rozwiązania i poprosić mentorów o zasugerowanie opcji. Kiedy masz napięte terminy i dużo niepewności w projekcie, użycie czegoś, co istnieje, może być ogromną oszczędnością czasu i zawsze jest twoim pierwszym wyborem. Zawsze możesz refaktoryzować, aby użyć innych rozwiązań później, jeśli jest to właściwe, nawet jeśli oznacza to w końcu powrót do wynalezienia twojego koła .

S.Robins
źródło
12

Będąc nauczycielem lub programistą nieustannie walczę z przeciwną stroną problemu: kiedy proszę uczniów, aby wymyślili nowe koło?

Weźmy te proste sytuacje: badamy algorytm sortowania, a ja zlecam zadanie napisania programu, który sortuje niektóre dane; lub pracuję nad funkcją daty, a ja proszę o kalendarz.

W obu przypadkach dostępnych jest niezliczona ilość gotowych bibliotek i funkcji; ale chcę, aby uczniowie ich unikali i opracowali własną wersję algorytmu sortowania lub kalendarza.

Teraz weźmy jeszcze jeden: wyznaczyłem zadanie napisania prostej aplikacji, powiedzmy, na planowanie spotkań. Może to wymagać sortowania, kalendarza i innych rzeczy. Tym razem obowiązuje zasada „nie wymyślaj na nowo koła”: nie chcę, aby uczniowie borykali się z rozwiązanymi problemami, ale zamiast tego gromadzą istniejące funkcje, aby uzyskać wynik.

Moja trudność polega na tym, o ile poprosić cię o odtworzenie istniejącej, która pozwala ci się uczyć i ma tę zaletę, że rozwiązane problemy z wiedzą o trudnościach, które mogę wykorzystać, abyś ćwiczył rzemiosło, i ile powinienem postawić jesteś w świecie rzeczywistym, w którym koła nie są wymyślane na nowo?

Aby odpowiedzieć bardziej szczegółowo na twoje pytanie, dwie sugestie:

  • jeśli nauczyciel mówi ci, aby „nie wymyślać koła na nowo”, prawdopodobnie tak mówią, ponieważ zaprojektowali w ten sposób swój problem. Może chcą, żebyś wypróbował bibliotekę, zmagał się z implementacją algorytmu przez kogoś innego, zamiast pisać własny - jest w tym również nauka, a odtwarzanie jest interesujące, ale nie ma sensu.
  • jeśli masz zbyt wiele ćwiczeń, które składają się na wywołania biblioteki, zamiast opracowywać algorytmy, możesz porozmawiać z nauczycielami o równowadze między tymi czynnościami - podkreśl, że nigdy nie proszono Cię o napisanie własnych algorytmów, np. sortowanie i scalanie. Komunikacja nigdy nie pójdzie nie tak.
boisvert
źródło
6

Praktyka Wątpię, aby pierwsze 1000 wierszy kodu, które ktoś pisze, były bardzo unikalne.

Rozszerz swój zestaw narzędzi Korzystanie ze szkieletu daje więcej korzyści, gdy rozumiesz, co on robi (prawie do tego stopnia, że ​​możesz to zrobić samodzielnie), dzięki czemu wiesz, jak go zastosować.

Zrozumienie „kół” Używanie źle skonstruowanego i zużytego koła lub takiego, które nie pasuje, nie jest usprawiedliwieniem ślepego trzymania się tej zasady. Być może brakuje Ci czasu, funduszy i wiedzy, więc po prostu załataj to i dokończ podróż.

Jest kilka absolutów .

JeffO
źródło
1
+ Zwłaszcza w ostatnim punkcie.
Mike Dunlavey,
Pierwsze 1000 wierszy kodu, które każdy pisze, są bardzo wyjątkowe pod względem błędów twórczych.
lewo około
@leftaroundabout - Chyba powinienem ograniczyć tę instrukcję do wierszy kodu, które można skompilować.
JeffO
3

Studenci nie mają budżetów pieniężnych na realizację zadań, ale są terminy do rozważenia.

Jako ktoś, kto do niedawna był studentem, myślę, że ilość wymyślania kół, która jest odpowiednia, zależy od klasy, dla której wykonujesz zadanie. Nie chcesz pisać własnej biblioteki gniazd dla klasy programowania i projektowania stron internetowych (jeśli możesz to zrobić i oddać zadanie na czas, co robisz, biorąc lekcję tak łatwo?), Ale byłoby ci brakować świetna okazja, jeśli było to zadanie dla klasy sieci. Oczywiście profesorowie zwykle biorą to pod uwagę podczas tworzenia zadań, więc będziesz głównie wykonywać pracę związaną z klasą, ale czasami wiedza o tym, czego nie powinieneś pisać, jest również ważna.

To powiedziawszy, kiedy opuścisz szkołę, ciężko jest znaleźć czas na zbudowanie rzeczy, które już istnieją. Skorzystaj z każdej okazji, kiedy możesz, kiedy jesteś jeszcze w szkole.

Jeśli pojawi się komunikat „Użyj biblioteki X / framework Y” na stronie SO, poprzedzaj swoje pytanie słowem „Piszę sam X, aby dowiedzieć się więcej na ten temat”

Sójka
źródło
wstęp do pytania: „Piszę sam X, aby dowiedzieć się więcej na ten temat”. To. +1.
boisvert
2

Jeśli nie masz ustalonego terminu dla swojego projektu, IMO, lepiej wymyślić koło na nowo. Jeśli nie masz pracy lub po prostu chcesz nauczyć się programować, a nie zarabiać na programowaniu, jaki jest sens korzystania ze skrótów, które nie uczynią cię lepszym programistą, które tylko przyspieszą twój projekt? Chociaż jest to prawda, zdecydowanie dobra umiejętność korzystania z bibliotek, frameworków i kodu innych osób.

Billjk
źródło
Na tym polega idea Code Katas, polegająca na przepisywaniu kodu w kółko, aby go ulepszyć i uczyć się z niego. Powiedziałbym, że nawet w pracy wielokrotne przepisywanie kodu jest dobre, a możliwość implementacji wielu wzorców, jeśli trzeba, jest jeszcze lepsza.
Bill K
2

W prawdziwym życiu koło jest ciągle wymyślane na nowo. Jeśli szukamy powodów, możemy znaleźć pewien wgląd, gdy potrzebujemy nowego podejścia do programowania.

Od czasów sumeryjskich wiele się zmieniło:

  • Materiał użyty do budowy kół: z kamienia, drewna, metalu, węgla, ...
  • wielkość przedmiotów wymagających kół - wielkości nanometrów do instrumentów medycznych i kół do zarabiania węgla brunatnego, o wielkości 100 m
  • środowisko produkcyjne - produkcja ręczna lub produkcja przemysłowa
  • precyzja potrzebnych kół
  • Właściwa sytuacja wokół twojego koła. Może być idealne koło do twojej pracy, ale może być opatentowane.
  • Lśniące i polerujące koło. Cadillac może zasłużyć na inne koło niż VW Golf.
  • Optymalne koło dla wózka dziecięcego zależy od wielu parametrów: wielkości i masy wózka (plus niemowlęta), warunków klimatycznych, cen surowców za olej lub gumę naturalną, maszyn do budowy kół i rzemieślników, dostępnych do produkcji. Krótko mówiąc: światowa ekonomia.

Jak to się przekłada na świat oprogramowania? Dobrze,

  • może istnieć serwer WWW, ale niestety jest napisany w PHP. Wolisz mieć go w języku, w którym mówisz płynnie
  • algorytm sortowania może być zbyt duży dla 10 elementów, ale nie skaluje się do 1T elementów
  • możesz potrzebować rozwiązania, które samo jest generowane przez drugi program
  • precyzja jest najczęściej pytaniem cyfrowym w krainie oprogramowania, jeśli algorytm sortuje listę, jest sortowany - nie w większości sortowany. Ale oprócz wydajności mogą się zdarzyć rozmiar kodu, użycie pamięci lub inne ograniczenia
  • Sądzę, że patenty nie wymagają dalszego wyjaśnienia.
  • Wygląd i sposób działania są stałym powodem do wymyślania czegoś na nowo - pomyśl dropDownList (ComboBox).
  • Globalna sytuacja gospodarcza może wpłynąć na koło oprogramowania: czy będzie to koło chmurowe, koło Open Source, koło przeglądarki czy koło aplikacji?
  • I oczywiście najsłynniejszy powód do zbudowania własnego koła: lubisz się go uczyć.
nieznany użytkownik
źródło
2

Jestem nowo wykształconym studentem. W szkole „uczyliśmy się” asp.net i C #, przez te 2 lata edukacji nie próbowaliśmy tworzyć własnego systemu poczty e-mail, systemu logowania ani CMS. Wszystko po prostu przeciągało i przestawiało kontrolę w widoku projektu .

Rozpoczęliśmy 102 studentów, 23 ukończyło. 4 osoby mają pracę. Powód ?: Te 4 osoby (w tym ja) wiedziały, jak programować, zanim zaczęliśmy naukę.

Reszta ludzi jest zagubiona. Ponieważ nigdy nie „wynaleźliśmy koła”. Nigdy nie dowiedzieliśmy się, jak działa kod. Zbudowanie pełnego systemu logowania z zarządzaniem użytkownikami jest dość proste - ale studenci z mojej edukacji nie wiedzą, jak to zrobić. Ponieważ nie wiedzą, jak działa system logowania.

Jest mi smutno, że w pewnym momencie zmarnowałem 2 lata, niczego się nie ucząc. - Chciałbym, aby nauczyciele na całym świecie mówili: Tak, wiemy, że istnieją ramy, w których istnieje kod. Możesz ich używać w prawdziwym życiu. Ale na tym szkoleniu nauczysz się programowania.

Wiele edukacji programistycznych jest bardzo krótkich, więc edukacja musi obejmować wiele rzeczy w tym czasie. Myślę, że byłoby lepiej, gdyby lista rzeczy została zmniejszona do połowy i poświęcenie więcej czasu na programowanie. Ludzie mogą „wymyślić nowy rodzaj koła”, jeśli wiedzą, jak zbudować normalne „koło”. Ludzie nie są głupi, jeśli mają małą wiedzę, ale nie można poprosić człowieka, który nic nie wie o samochodach, o zbudowanie samochodu. Ale zapytanie człowieka, który umie zbudować rower, byłoby znacznie łatwiejsze z budowaniem samochodu.

Zerpex
źródło
1

To naprawdę zależy od tego, co robisz. Jeśli próbujesz zrozumieć koła, dobrze jest je odkryć na nowo. Jeśli jednak próbujesz zrozumieć samochody, wynalezienie koła lub silników spalinowych jest generalnie marnotrawstwem i rozprasza.

Na przykład, jeśli chcesz zrozumieć, jak może działać indeks wyszukiwania pełnotekstowego, dobrym pomysłem jest utworzenie własnego. Jeśli próbujesz zbudować aplikację do zarządzania dokumentami, lepiej ponownie wykorzystać istniejącą bibliotekę, ponieważ większość pracy polega na tym, aby jednocześnie uzyskać architekturę aplikacji i wrażenia użytkownika.

back2dos
źródło
1

Tak, należy powiedzieć uczniom, aby nie wymyślali koła na nowo. Ale musi być jasne zrozumienie, co to oznacza dla ucznia: napisz, co jest istotne dla zadania. Nie oznacza to, że zadaniem jest napisanie bubbleortortu, skopiujesz go z Wikipedii, ani nie oznacza to użycia array.sort lub ekwiwalentów, jeśli zapewnia to twój framework lub język. Ale po omówieniu różnych algorytmów sortowania, napisaniu własnego sortowania bąbelkowego i szybkiego sortowania, nie zawracaj sobie głowy przepisywaniem go dla każdego nowego zadania, użyj wbudowanego sortowania lub tego, co napisałeś, nie rób ponownie tej samej starej rzeczy .

Nowe odkrywanie koła polega na tym, aby nie marnować czasu, co dotyczy zarówno studentów, jak i profesjonalistów - różnica polega na tym, jakie są cele. Uczniowie powinni się uczyć, więc coś, co nie pogłębia ich zrozumienia, jest stratą czasu - po napisaniu jednego bąbelkowego fragmentu wiesz, co on robi, wiesz, dlaczego nie chcesz go używać na dużym zestawie, a przepisywanie go od nowa to strata czasu. Nie będziesz uczyć się niczego nowego podczas 25 przepisywania.

Dla studentów nie oznacza to, że nie pisz tego, co napisali inni, oznacza to, że nie przerabiaj tego, co już opanowałeś - ten czas, który można lepiej poświęcić na to, czego nie opanowałeś.

jmoreno
źródło
Z wyjątkiem sytuacji, gdy 25. przepisywanie jest praktyką dla jakiegoś nowego języka programowania, którego się uczysz.
lewo około
1

Dużo myśli i wysiłku włożono w stworzenie koła. Rada brzmi: „nie wymyślać koła na nowo”, ale możesz iść naprzód i dokonać inżynierii wstecznej koła i zrozumieć, dlaczego pewne rzeczy są wykonywane w sposób, w jaki zostało to wykonane. Następnie możesz spróbować zastosować koło na swój własny sposób, co może doprowadzić do jednego z trzech logicznych zakończeń.

  1. Albo rozumiesz, dlaczego rzeczy są takie, jakie są.
  2. Możesz go zoptymalizować i ulepszyć
  3. Możesz to zepsuć i nauczyć się, jak tego nie robić.

Dla mnie uczeń nie powinien wymyślać koła na nowo, ale spróbować go odtworzyć i zrozumieć konsekwencje.

Ramesh
źródło
1

Powiedziałbym, że to zależy od tego, czy odkrywasz na nowo, jak działa koło, czy wymyślasz koło w trakcie wykonywania innego zadania. Z pewnością istnieją koła, które każdy uczeń musi wdrożyć przynajmniej raz na własną rękę. Musisz wiedzieć, jak działają niektóre podstawowe struktury danych i algorytmy, aby zrozumieć, w jaki sposób wpłyną one na wydajność twojego kodu lub wybierz, które z nich będą używane w różnych okolicznościach.

Stosy, stosy, powiązane listy, drzewa itp. Są zdecydowanie warte inwestycji w czasie, aby wdrożyć je raz; potem zawsze po użyciu tych dostarczonych przez framework. Każdy, kto korzysta z wtyczki jQuery, powinien napisać co najmniej jeden, ale nie musisz pisać każdego innego typu, którego kiedykolwiek będziesz używać. Powiedziałbym, że napisanie małego harmonogramu procesów lub mini-OS jest pomocne, ale nie konieczne, abyś mógł zrozumieć, co dzieje się pod maską komputera. Musisz jednak zrozumieć, jak działają procesy, wątki itp.

Gdy masz dobrą wiedzę praktyczną, może być również ważne (i zabawne) wrócić i wdrożyć nowe struktury / algorytmy, aby się z nimi zapoznać. Jeśli nie jest to twoja praca lub nie jesteś w tym naprawdę dobry, trzymałbym się istniejących w twoim kodzie.

tvanfosson
źródło
1

Odpowiedź zależy od tego, czy chcesz się uczyć, czy tworzyć.

Jeśli celem jest nauka, „wynalezienie koła” może dać lepszy wgląd i lepsze zrozumienie niż korzystanie z istniejących kół (funkcje biblioteczne).

Ale jeśli celem jest stworzenie skomplikowanego produktu, wówczas „wynalezienie koła” może być czasochłonną praktyką i niewiele pomoże w stworzeniu produktu.

Niemniej jednak, jeśli celem duszy jest nauka zapewniająca wystarczającą ilość czasu i wytrzymałości, najlepszym rozwiązaniem jest „wynalezienie koła”, ponieważ pomaga dostosować każdą funkcję.

CoolEulerProject
źródło
1

Są dwa aspekty.

Po pierwsze, jeśli próbujesz się uczyć, przydatne może być zrobienie pewnych rzeczy od zera lub użycie interfejsów niższego poziomu niż to konieczne. Jednak nadal musisz określić, czego się uczysz: jeśli chcesz dowiedzieć się o protokole HTTP, nie musisz samodzielnie programować gniazd. Wymyślaj na nowo rzeczy, o których się uczysz i rób to tylko po to, aby je naprawdę poznać i zrozumieć.

Ale - jedną z najważniejszych umiejętności profesjonalnego programisty jest wybór, poznanie i używanie wcześniej istniejącego oprogramowania. Tego też musisz się nauczyć. Ogromna część pytań dotyczących SO wydaje się pochodzić od osób niezdolnych do czytania dokumentacji.

Wreszcie, programowanie opiera się na znacznej podstawie teoretycznej. Aby nauczyć się teorii, będziesz musiał skorzystać z obu praktycznych ćwiczeń połączonych z czytaniem.

Marcin
źródło
Zgadzam się. Właśnie dlatego cały czas powstaje tak wiele nowych, wcześniejszych ram oprogramowania i bibliotek :)
gbjbaanb 13.04. O
0

Napotkałem tę samą sytuację. Wynika to z różnicy w postrzeganiu w przemyśle i środowisku akademickim.

Jeśli nie „wymyślisz koła”, absolutnie nie możesz uczyć się w szkole ani zrozumieć, jak coś działa.

Natomiast w branży celem jest wprowadzenie produktu w jak najkrótszym czasie i wysiłku.

Osobiście lubię schodzić się do króliczej nory i nie cierpię filozofii branżowej, ale tak właśnie robią firmy i nie można narzekać.

Jan
źródło
0

Hacker Fachowe Lexikon ma bardzo dobrą opinię na temat wyważania otwartych drzwi :

Zaprojektować lub wdrożyć narzędzie równoważne istniejącemu lub jego częściowi, z implikacją, że jest to głupie lub strata czasu. Jest to często uzasadniona krytyka. Z drugiej strony, samochody nie używają drewnianych rolek, a niektóre rodzaje kół trzeba wielokrotnie wymyślać, zanim je poprawisz. Z drugiej strony ludzie wymyślający na nowo koło zwykle mają moralny odpowiednik trapezu z przesuniętą osią.

Może więc warto wymyślić koło na nowo, ale upewnij się, że patrzysz na rozwiązania innych przed lub po zrobieniu tego.

Hans-Peter Störr
źródło
0

Odpowiedź A: Ponownie wymyśl koło. Pogłębia to zrozumienie struktur danych i algorytmów i sprawia, że ​​dużo bardziej prawdopodobne jest, że napiszesz dobre rzeczy. Jestem pewien, że kiedy Guido van Rossum zaczynał od Pythona, ludzie mówili mu, żeby nie wymyślał koła na nowo. Było już wiele języków. Po co pisać w Google, gdy był już Yahoo! Co powiesz na brzęk? Dowiedz się wszystkiego. Bądź gigantem. Nie pozwól, aby mali ludzie cię ograniczali. Odpowiedź B: Jeśli instruktor powie ci, co masz robić, daj mu to, czego chce, lub tylko trochę więcej, nawet jeśli wydaje się to głupie. Jeśli chcesz TAKŻE zwariować, tworząc zadziwiające rozwiązanie i dać mu link do niego, śmiało. Najpierw jednak spełnij podane wymagania, aby był szczęśliwy.

phorgan1
źródło
-1

Jeśli jesteś studentem, a zatem nie masz określonego terminu swojego projektu, lepiej „wymyślić koło”. Jeśli programujesz teraz tylko po to, aby nauczyć się programować, a nie zarabiać, po co wybierać skróty, które nie pomogą ci się uczyć? Dlaczego nie zrobić tego w trudny sposób? Ale kiedy staniesz się działającym programistą, ludzie będą sceptyczni, jeśli nie wiesz, jak korzystać z frameworków lub bibliotek ...

Billjk
źródło
10
Nie wiem, do której szkoły chodziłeś, ale gdzie poszedłem, terminy przydzielenia były powszechne.
CVn
-2

Zrób to, o co prosi zadanie / pytanie / egzamin.

Wiele lat temu byłem studentem TA w klasie programowania C. Pytanie egzaminacyjne brzmiało „Napisz program do skopiowania pliku”. Kilku uczniów zadało to samo pytanie - czy mogą odrodzić proces i uruchomić polecenie systemu operacyjnego cp?

To, o co poprosiliśmy, to „Czy Twój program skopiuje plik?”

Pytanie egzaminacyjne wymagało od nich napisania kodu w celu skopiowania pliku. Jeśli odpowiedź nie zawierała kodu C, który kopiował plik (np. Otwórz wejście, otwórz wyjście, pętla do odczytu / zapisu bajtów, zamknij wejście, zamknij wyjście), to nie skopiował pliku.

Jeśli nauczyciel mówi, że należy użyć frameworka lub biblioteki (np. Klasa grafiki może zalecić korzystanie z biblioteki 3D), należy użyć tego, co zalecił. Nie wymyślaj własnych ani nie używaj innego. Cokolwiek innego utrudni nauczycielowi ocenę twojej pracy.

Podczas rozmowy kwalifikacyjnej znajomość popularnych ram pomoże ci odpowiedzieć na pytania. Twórz własne projekty do nauki. Powodzenia z Twoimi studiami.

jqa
źródło
Tak, ale jeśli odrodzili się, cpich program skopiowałby plik.
Marcin