Programowałem od wielu lat, ale chciałem uzyskać dyplom, który sprawi, że będę bardziej zatrudniony. Będąc już raz na uniwersytecie, nie wybrałem pełnego 5-letniego kierunku informatycznego, ale krótszy, bardziej praktyczny program inżynierii oprogramowania .
Spodziewałem się, że może skupiać się bardziej na konkretnych umiejętnościach niż na teorii, ale nadal miałem pomysł, że uniwersytety i profesorowie lubią rzeczy poprawne, formalne, akademickie. To wciąż nauka, prawda? Źle - zdziwiło mnie, jak niechlujnie było wiele kursów IT.
W kursie wprowadzającym na temat C ++ testowaliśmy stereotypy typu „dlaczego globale są złe” i „dlaczego stałe są dobre” po napisaniu 1-2 programów. Losowe anegdoty bez właściwego kontekstu. Materiały informacyjne zawarte system(pause/cls)
, getch
a nagłówki jak conio.h
i iodos.h
. Jednym z zadań było wydrukowanie „znaków ASCII” od 32 do 255 , a zrzut ekranu pokazujący taką tabelę wydrukowano przy użyciu strony kodowej Windows-1252, ale w ogóle nie wspominając o kodowaniu.
Pytanie : kiedy uniwersytet / profesor wydaje się używać gorszych i / lub przestarzałych narzędzi i metod, a nauczana treść jest na granicy niepoprawna, jak radzisz sobie z nią konstruktywnie i z szacunkiem, jeśli w ogóle?
Niektóre odpowiedzi wskazują, że powinieneś wyjść poza programowanie, ponieważ jest to tylko narzędzie do uczenia się na takie tematy, jak struktury danych i algorytmy. Zgadzam się z tym pomysłem, ale w tym przypadku tak kiepski styl nie istniał. Większość kursów po prostu uczyłaby innego „narzędzia” bez dużej teorii tła lub „dużego obrazu”. Często wydawało się, że zostały szybko zebrane w celu zaoferowania takiego kursu.
Utknąłem z tym i ostatecznie ukończyłem szkołę. Jakość pozostała dość niska przez cały czas (z kilkoma wyjątkami) i narzekało na to kilku innych studentów. Zgodnie z oczekiwaniami nauczyłem się znacznie więcej z osobistych projektów i pracy w niepełnym wymiarze godzin niż ze szkoły, jednak proces kończenia szkoły i etykietowania „ucznia oprogramowania” wydają się w tajemniczy sposób przydatne same w sobie!
Odpowiedzi:
Matematyka i programowanie to zupełnie inne rzeczy. Matematyka to nauka, programowanie to technika. W świecie akademickim programowanie jest czymś, co musisz wiedzieć, aby poradzić sobie z prawdziwymi sprawami, które są naprawdę interesujące i ważne - algorytmy.
Kogo to obchodzi, jeśli kompilator jest starożytny i używasz
system
połączeń? Kogo to obchodzi, jeśli masz system Linux, a nie Windows? Cóż, profesorowie nie, to na pewno. I tak naprawdę nie powinni. Nie spodziewaj się zostać profesjonalnym programistą na kursach w instytucji akademickiej. Nie po to tam chodzisz.To prawda, że kompilator, którego oczekuje od ciebie, jest starożytny, a założenie dotyczące systemu operacyjnego jest anachroniczne i jest problematyczne. Możesz go podnieść, a być może zostanie to rozwiązane. Ale nie dlatego, że kurs jest niezgodny z branżą, ale raczej dlatego, że powoduje bezpośrednie trudności dla studentów. Znajdź stary kompilator i uruchom go na MacBooku ...
Ogólnie rzecz biorąc, nie należy marnować studiów akademickich na naukę C ++ i Androida, powinieneś uczyć się tam prawdziwych informatyki. Nie dostaniesz na to kolejnej szansy. Android? Pobierz Eclipse z ADT i zacznij pracować nad nim w domu, tak jak ja. Nie potrzebuję do tego szkoły.
Myślę, że nie jest w porządku oczekiwać rozwoju techniki od uniwersytetów. Zwłaszcza nie uniwersytety badawcze. Można powiedzieć, że miejsce, które oferuje tylko kawalerów, powinno być bardziej ukierunkowane na przemysł, ale uniwersytety badawcze - chcą badaczy. Profesorowie szukają przyszłych doktorantów i doktorantów, a nie doskonałych programistów. Myślę więc, że powinieneś odpowiednio ustawić swój poziom oczekiwań.
źródło
Informatyka polega na programowaniu, czym fizyka jest dla stolarstwa.
Jeśli chcesz zostać stolarzem, studiowanie fizyki nie sprawi, że tak się stanie. Nauczy Cię wielu interesujących rzeczy, które możesz zastosować w swojej pracy, ale nie nauczy Cię, jak być dobrym stolarzem. W tym celu musisz nauczyć się rzemiosła stolarskiego.
Podobnie, jeśli chcesz zostać dobrym programistą, musisz nauczyć się programowania . Niestety nie ma żadnej instytucji, która wydawałaby certyfikaty dowolnego rodzaju. Zasadniczo jest to coś, co musisz zrobić sam, z pomocą jakiejkolwiek osoby, którą możesz znaleźć. Dla ciebie oznacza to powtórzenie i refleksję. Napisz dużo kodu, a następnie wróć, aby na niego spojrzeć. Poświęć również czas na odczytanie kodu innych osób. Rozważ udział w projektach typu open source.
Uniwersytety nie dbają zbytnio o programowanie, a tym bardziej o szczegóły, które zmienią się w ciągu najbliższych kilku lat. W swojej szkole widzisz, że wybrali jakieś środowisko programistyczne (złe, ale to nie jest tak ważne) i teraz ci to pokazują, aby mieli ramkę odniesienia, w której mogą nauczyć cię różnych technik programowania. Można argumentować, że ramka odniesienia jest słaba i nawet język jest dziwnym wyborem. Z ich perspektywy prawdopodobnie nie ma to znaczenia, ponieważ jest dość arbitralnie wybrane.
źródło
Nie ma nic złego w nauce „stylu DOS”. Jestem pewien, że wiele starych timerów zaczynało od DOS-a, a nawet wcześniejszych systemów, piszących programy oparte na liniach i dobrze się dostosowało. Świat komputerów zmienia się tak szybko, że nie mogłem oderwać się od takich szczegółów, jak biblioteka, do której użyto.
Podejrzewam, że powodem, dla którego mamy świat pełen programistów, którzy mogą powiedzieć ci, czym jest zastrzyk zależności , ale trudno jest odpowiedzieć na FizzBuzz , jest fakt, że wielu programistów nie spędza dużo czasu na tym bardzo podstawowym poziomie.
Wygląda na to, że jest to wprowadzenie do programowania, więc w zasadzie nie martw się o to. Naucz się podstaw, a poradzisz sobie. Jeśli interesują Cię inne platformy, odkrywaj je samodzielnie. To wspaniała rzecz w programowaniu.
źródło
Jak sobie z tym poradzić? Pobierz e-książki programistyczne lub streaming wideo, sam spróbuj przykładów. Nie polegaj na swoich profesorach. Programowanie jest bardzo wyuczone na własną rękę.
źródło
Wiele uniwersytetów ma kiepskich profesorów programowania. Poszedłem do jednej z najlepszych szkół w moim kraju i prawie nauczyłem się przysiadu w programowaniu. Wydaje mi się, że większość Unis jest taka, ponieważ naprawdę dobrzy programiści wybierają lepiej płatne prace (nie ucząc). Powinieneś podjąć mały projekt i sam spróbować go zakodować. Możesz uzyskać wskazówki z wielu forów, takich jak ten. To może być lepszy sposób na naukę na dłuższą metę.
źródło
Uważam, że uniwersytet powinien uczyć abstrakcyjnych pojęć języków programowania, algorytmów itp. I nie powinien być miejscem, w którym uczysz się programowania: programowanie jest bardzo praktyczną czynnością i możesz się go nauczyć tylko poprzez działanie.
Podczas studiów nauczyłem się podstaw programowania w Pascalu, potem miałem jeden projekt w C (musieliśmy uczyć się języka sami), a potem miałem kurs z zakresu programowania języków programowania (proceduralnego, obiektowego, funkcjonalnego, logiki) . To był folklor, że w MSDOS masz conio.h lub dalekie wskaźniki, których nie masz w systemie UNIX. To były rzeczy, które my, studenci, omawialiśmy przy piwie, nie było to coś, o czym rozmawialiśmy podczas zajęć, ponieważ nie było to tak ważne. Nauczanie uniwersyteckie koncentruje się na wiedzy abstrakcyjnej, ogólnej i unika zagłębiania się w szczegóły: przykłady i szczegóły przedstawiono tylko w celu zilustrowania ogólnych rzeczy.
Podany przez ciebie przykład na temat ASCII kontra Unicode i biblioteki conio.h MSDOS oznacza po prostu, że każde środowisko programistyczne ma swój szczególny sposób robienia i organizowania rzeczy. Jeśli programujesz w C ++ na Visual Studio, będziesz musiał użyć innych bibliotek, z których niektóre nie zostaną znalezione, np. W systemie Linux. Więc jeśli kurs byłby w Windows 7 / Visual Studio, niektórzy ludzie mogliby narzekać, że lepiej byłoby to zrobić na Linux / GCC. Ale, IMO, nie o to chodzi.
Myślę więc, że powinieneś starać się nie rozpraszać szczegółami i skoncentrować się na ogólnych pojęciach omawianych przez kurs. Na przykład, że w większości języków programowania potrzebujesz biblioteki do implementacji I / O konsoli i że, biorąc pod uwagę środowisko programowania, będziesz musiał rozwiązać swój problem za pomocą dostępnych narzędzi. Może brzmi to dla ciebie dość oczywisto i masz wrażenie, że tak naprawdę nie uczysz się czegoś, ponieważ masz już trochę wiedzy (może się zdarzyć), ale nie miałem wrażenia, że uczęszczasz na zły kurs.
źródło
Uczelnie dają podstawy. Gdy jest już mocny, możesz na nim budować drapacze chmur. Nauczyłem się języka BASIC, C i C ++ podczas moich studiów. Później, kiedy projektowałem w Visual C ++, wierzyłem, że to zupełnie inny świat. Później zdałem sobie sprawę z różnicy między Framework a Languages.
Wybierz odpowiedni uniwersytet, na którym zapewniają ukierunkowany rozwój wybranej dziedziny obliczeniowej. Co może ci pomóc w dalszej karierze.
źródło
Wydruki pełne
system("");
to tak naprawdę cholernie dobra rzecz! Jestem zszokowany, że ludzie obecnie nic nie wiedzą o tych funkcjach.system("pause")
, i pozbędziesz się wszystkich gotowych funkcji getX.system("cls")
, a właśnie zapisałeś jedną stronę kodu.system("mkdir foo")
i właśnie zapisałeś 2 strony alokacji buforów, podziałów ścieżek, _makepath_ss, 256 limitów ścieżek, mnóstwo wyjść błędów i tak dalej.Co więcej, kod jest tak prosty, że małpa go zrozumie.
Szkoła perwersji polimorficznych jest tym, co powinno być zakazane przez prawo.
PS: Co więcej, z całym szacunkiem, ciężko mi zaakceptować fakt, że ludzie uczą się C ++ z wyjątkami i wirtualnie wszystko jako DOBREJ RZECZY, ponieważ ma więcej gotchas i min przeciwpiechotnych, niż można sobie wyobrazić, a nawet Bjarne Stroustrup ewangelizuje wyjątki jako coś bardzo łatwego i bezpiecznego, podczas gdy w rzeczywistości są miną jądrową.
Zobacz analizę dotyczącą Misra-C ++ i JSF-C ++. I http://blogs.msdn.com/b/oldnewthing/archive/2005/01/14/352949.aspx . Jestem zbyt leniwy, aby znaleźć wszystkie pozostałe artykuły dzisiaj.
Biorąc to wszystko pod uwagę, jestem programistą c ++ i lubię wiele funkcji i języka jako całości.
źródło
Moja sugestia może się wydawać, ale wysłuchaj mnie ... Zmień kierunek.
Z mojego doświadczenia w środowisku akademickim specjalizacja Computer Science była bardzo niskim spojrzeniem na to, co sprawia, że komputery tykają. Zacząłeś od podstawowego startera w C ++, aby upewnić się, że wiesz, co to był program, a także podstaw pamięci i obliczeń stojących za programem, a następnie nauczyłeś się montażu, koncepcji systemu operacyjnego, elektrotechniki, projektowania cyfrowego itp. Otrzymujesz ten stopień i poszukaj pracy z NVidią, AMD lub Lockheed; gdzieś, gdzie produkują nowy sprzęt, który potrzebuje kogoś, kto może zrozumieć ten sprzęt na niskim poziomie, aby napisać sterowniki i oprogramowanie sterujące.
Wygląda na to, że chcesz studiować na moim uniwersytecie pod nazwą Zarządzanie systemami informatycznymi. To był kurs, który podążałem; nauczył programowania w Javie, VB.NET, C # oraz niektórych skryptach PHP i innych skryptach sieciowych po drodze. Wymagało to również rachunku (ale nie w tym samym stopniu co CS), rachunkowości, finansów, statystyk, komunikacji biznesowej, OO A&D, projektowania baz danych i analizy systemów. Dostałem BBA zamiast BS i miałem podstawowe narzędzia do rozpoczęcia pracy jako programista Windows lub Web.
To, co przygotowuje kierunek „Informatyka”, zależy w dużej mierze od tego, który uniwersytet ją oferuje. Wygląda na to, że jesteś na wczesnej ścieżce, aby uzyskać bardzo anachroniczne, niskopoziomowe spojrzenie na komputery, które nie brzmi jak to, czego szukasz po ukończeniu edukacji. Wzywam was do rozejrzenia się po uniwersytecie i znalezienia kierunku studiów, który bardziej skupia się na rodzaju pracy przy komputerze, którą chcielibyście podjąć po szkole.
Niezależnie od tego, kierunek studiów zacznie się od bardzo podstawowego pisania programów na poziomie konsoli. Język nie ma znaczenia; uczą cię podstawowego programowania proceduralnego; jak myśleć wystarczająco małymi krokami, aby komputer mógł podążać za Tobą krok po kroku (ponieważ komputer nie bierze niczego za pewnik i nie może podążać za większością skoków logiki człowieka). Następnie przejdziesz do programowania obiektowego (zamiast jednej długiej funkcji, która robi wszystko, łatwiej jest utrzymać kilka mniejszych „obiektów” kodu, które reprezentują stan i logikę obiektów w świecie rzeczywistym, a następnie programowanie sterowane zdarzeniami („Nie dzwoń do nas, zadzwonimy”; Twój program w zasadzie uruchamia się, informuje system operacyjny, aby skonfigurował początkowy graficzny interfejs użytkownika,
źródło
Kursy informatyki nie nauczą Cię programowania. To spacer w parku w porównaniu do niektórych programów, które zrobiłem na kursie CS.
Z mojego doświadczenia wynika, że podstawowym problemem jest to, że prawie nic nie nauczy Cię programowania na równoważnym poziomie, więc nie masz wyboru.
źródło
Myślę, że mogą istnieć pewne nieporozumienia dotyczące tego, co i dlaczego studiujesz.
Wygląda na to, że studiujesz wstępny program informatyczny. Jest to skierowane do osób z minimalnym doświadczeniem, które uczą się podstaw, w jaki sposób komputery działają na niskim poziomie.
Wygląda również na to, że jesteś półpoważnym lub profesjonalnym programistą. Programujesz od 10 lat i czujesz się komfortowo w 3 językach. Wygląda na to, że wiesz, co robisz, co najmniej na tyle, aby pracować jako część zespołu. Czy czujesz się nie na miejscu na tym kursie? Czy inni uczniowie mają podobny poziom doświadczenia lub umiejętności jak ty?
Co zamierzasz wyjść z tego kursu?
Są po prostu po tej „kartce papieru”? Jeśli tak jest to nie przestać próbować dostać pracę podczas studiowania. Złóż podanie o pracę, powiedz im, że jesteś kompetentnym programistą i uczysz się, ponieważ potrzebujesz kartki papieru, aby znaleźć pracę. Jeśli cię zatrudniają, rozważ rezygnację z pracy - kiedy już wykonasz profesjonalną pracę, naprawdę nie potrzebujesz już tego kawałka papieru. Zaakceptuj niższe niż normalnie wynagrodzenie, ponieważ lepiej jest płacić za naukę (w pracy) niż za naukę w szkole - a ty także uczysz się szybciej. Po roku lub dwóch będziesz w większości nabierać tempa, a następnie możesz poprosić o przyzwoitą podwyżkę wynagrodzenia lub możesz znaleźć inną pracę, ponieważ będziesz mieć doświadczenie.
Lub starasz się czegoś nauczyć? Następnie zatrzymać sądząc profesora. Jak niezapomniany nauczyciel z liceum zwykł mawiać „SIEDZISZ I ZAMKNIJ SIĘ”. Jest niemal pewne, że profesor ma niezmiernie więcej doświadczenia i wiedzy niż ty i możesz się od niego wiele nauczyć. Jeśli idzie za wolno dla ciebie, spróbuj zdobyć punkty za te kursy wprowadzające na podstawie wcześniejszej wiedzy i doświadczenia.
Ale jesteś we właściwym kursie? Możesz się także wiele nauczyć od profesora literatury lub profesora historii ... niezbyt istotnego. Być może nie chcesz „informatyki”, ale zamiast tego chcesz bardziej praktycznych umiejętności w „prawdziwym świecie”. Spróbuj „inżynieria oprogramowania”. Spójrz na inne instytucje do bardziej ukierunkowanego oczywiście.
Podobnie jak po rozpoczęciu nowej pracy, klasę lub tok studiów może być bardzo trudne do przeglądu z zewnątrz. Wydaje się, że jesteś na kursie, który nie daje ci tego, czego oczekujesz. Ponownie rozważ swoje opcje.
źródło
Myślałem, że wiele odpowiedzi na to pytanie było rozczarowujące. Wrócili do starego, zmęczonego sporu o CS vs. Programowanie itp. Być może tak jest, ale wydaje mi się, że kurs, na którym działa OP, też nie uczy.
Byłem w sytuacji, gdy już pracowałem jako programista i studiowałem całkiem sporo sam, zanim studiowałem CS w niepełnym wymiarze godzin na studiach. Rozglądałem się ostrożnie, ale ogólnie rzecz biorąc, program nauczania był stratą czasu. Nie pozwolą mi też pominąć kursów, mimo że mają już doświadczenie zawodowe w tej dziedzinie.
Z mojego doświadczenia wynika, że znaczna część profesorów jest dość leniwa i stosuje przestarzały program nauczania. Szczerze mówiąc, to brzmi jak marnowanie czasu. Pytam nawet, czy wypełnienie dyplomu pomoże ci znaleźć pracę.
Wątpię, czy możesz wiele zrobić, aby zmienić swoje postępowanie. Możesz albo uzupełnić go badaniami samodzielnie. Albo po prostu zapomnij o wszystkim i studiuj CS niezależnie, a także uzyskaj certyfikaty branżowe.
Powinienem dodać, że nie mam pojęcia o wartości dyplomu na rynku pracy w twoim kraju. Jeśli sam dyplom jest cenny pomimo treści, być może będziesz musiał pogodzić się z programem nauczania, którego nieco brakuje.
źródło
Muszą zaspokoić potrzeby studentów. Większość studentów nie może programować. Więc nie są zmuszani do technicznych.
Mają też swoje własne wyspecjalizowane obszary badań, ale ich nie nauczają. Zresztą wielu badaczy i tak nie jest dobrymi nauczycielami, więc możesz uważać się za szczęściarza, jeśli nauczają rzeczy, które już znasz!
W każdym razie wydaje się, że nie wiesz, czym jest informatyka. Nie chodzi o to, co jest praktyczne dla przemysłu.
źródło
Poprosiłbym (a następnie nalegał) o zwrócenie twoich zadań w standardowym c ++. Jest to całkowicie uzasadnione, ponieważ nie można wykonać zadań w inny sposób.
Co do złego stylu; nieuchronnie będzie na początek trochę tego. Nauka prawidłowego korzystania ze standardowej biblioteki io wymaga sporo zaawansowanych funkcji c ++, w szczególności szablonów i iteratorów. Rozumiem, dlaczego wykładowca miałby na początku używać bardzo prostych funkcji io. Nie bałbym się o to pytać, pokazuje entuzjazm i odrobinę światła w twoich oczach. Twój wykładowca powinien być w stanie przełożyć twoje pytanie na przyszły wykład, na którym (mam nadzieję) poprawisz swoje wczesne ćwiczenia.
Ale zostawiłbym to przy tym. Mimo C ++ może być język niezależny od platformy, to często nie jest. Nauka niektórych funkcji systemu Windows nie jest złą rzeczą, szczególnie jeśli następnie ćwiczysz się zgodnie ze standardem. W pewnym momencie natkniesz się
conio.h
na kod innych ludzi - i dobrze jest wiedzieć, co robi.źródło