Uniwersytet uczy C ++ w stylu DOS, jak sobie z tym poradzić [zamknięte]


19

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), getcha nagłówki jak conio.hi 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!


2
Opierając się na własnym doświadczeniu, nauczysz się lepiej, szybciej i taniej, samodzielnie studiując programowanie i otrzymując pomoc z forów. Często zdarza się, że program uniwersytecki jest przestarzały. W Rosji Pascal jest nadal nauczany na niektórych uniwersytetach (chociaż podoba mi się ten język i nie uważam tego za coś zupełnie złego).
WKS

@ WKS: Myślę, że Pascal jest bardzo dobrym językiem nauczania do nauki zasad (programowania proceduralnego), które wcale nie są przestarzałe. Kursy uniwersyteckie nie powinny tracić czasu na nauczanie określonego języka programowania, ale raczej na nauczanie paradygmatów (proceduralnych, obiektowych, funkcjonalnych, logicznych itd.).
Giorgio

Tak, oczywiście @Giorgio, język programowania wybrany jako narzędzie dydaktyczne nie ma znaczenia, należy jednak oczekiwać, że przedstawione praktyki programowania są solidne i aktualne.
glampert

Większość uniwersytetów uczy studentów w celu umożliwienia im osiągnięcia tytułu magistra. Większość studiów magisterskich uczy studentów studiów magisterskich w celu umożliwienia im pomyślnego uzyskania doktoratu. Większość programów doktoranckich ma na celu pomóc ci odnieść sukces jako badacz.
Rob P.

@glampert: Programowanie proceduralne nie zmieniło się po wprowadzeniu Pascala. Co więcej, Pascal został zaprojektowany jako język nauczania, więc nie ma wielu hacków, które mogą być przydatne w praktyce, ale są dużym rozproszeniem podczas nauki nowych rzeczy. Więc Pascal jest na bieżąco, jeśli chodzi o nauczanie programowania imperatywnego. Oczywiście, ktoś może chcieć uczyć innych paradygmatów, takich jak obiektowa, funkcjonalna, logika: wtedy musisz szukać innych języków, np. Python, Java, Haskell, Scheme, Prolog, ...
Giorgio

Odpowiedzi:


34

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 systempołą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ń.


3
Mam jeden problem z twoją odpowiedzią: „Ogólnie rzecz biorąc, studia akademickie nie powinny być zmarnowane na naukę C ++ i Androida, powinieneś uczyć się tam prawdziwych informatyki”. - Bez znajomości przynajmniej jednego języka programowania, CS nie ma sensu i jest zbyt łatwe do zastosowania w niewłaściwy sposób.
Izkata

4
@Martin i izkata - programowanie pod DOS w C ++ przy użyciu kompilatora z poprzedniego wieku nie oznacza, że ​​nie znasz programowania. Oznacza to po prostu, że używasz przestarzałych narzędzi - ale jeśli chcesz wdrożyć drzewa RB - kogo to obchodzi? Jest to przestarzałe dla branży, ale programy działają i robią to, co powinny - to wystarczy.
littleadv,

3
@littleadv - OP napisał „wydaje się starożytny zgodnie z tym, co przeczytałem”. co sugeruje mi, że musiał szukać gdzie indziej niż odpowiednich materiałów informacyjnych, aby dowiedzieć się, że jest to przestarzałe i nieprzenośne. Jasne, wiele, jeśli nie wszystkie kompilatory mają dodatkowe niestandardowe biblioteki, ale jeśli uczysz ich bez wiedzy, że są niestandardowe, myślę, że to źle - i to liczy się zarówno dla nowych rzeczy, jak i starych, a nawet dla C ++ 11 rzeczy, ponieważ na razie C ++ 03 jest najnowszym szeroko i w pełni obsługiwanym standardem.
Steve314,

3
@littleadv - Może wtedy będziemy musieli się zgodzić, żeby się nie zgodzić. Chociaż pomyślałbym, że informatyk musi być pedantem w kwestii szczegółów, a kilka sekund potrzebnych do wskazania, że ​​coś jest niestandardowe, są z tym zgodne i w żaden sposób nie są wielkim trudem. Jak byś się czuł, gdyby profesor CS stosował własne notacje ad-hoc pomieszane z matematyką i nie zwracał na to uwagi? To w końcu kolejny aspekt tego samego problemu - czy inni informatycy są w stanie cię zrozumieć. Kod jest odczytywany zarówno przez ludzi, jak i przez kompilatory.
Steve314,

4
@littleadv - Nigdy nie twierdziłem, że OP został poinformowany o conio.h jest standardem - zasugerowałem, że nie powiedziano mu, że jest niestandardowy, a nawet wtedy powiedział: „Jeśli wyjaśnią, które sztuczki są nieprzenośne, prawdopodobnie DOBRZE.". Sposób, w jaki uczono mnie nawet podstawowych nauk, polega na tym, że używasz standardowych terminów lub jeśli musisz używać niestandardowych terminów, określasz ich znaczenie. Na moich szkolnych lekcjach nauki nawet używanie centymetrów było niezgodne z zasadami - to nie są jednostki SI. Używanie niestandardowych bibliotek wydaje mi się niczym innym. Znaczenie kodu w informatyce powinno być jednoznaczne.
Steve314,

19

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.


2
A co z fizyką to inżynieria? Programiści powinni zrozumieć zasady CS, aby stosować je podczas projektowania programów tak, jak inżynier musi rozumieć fizykę do projektowania budynków, samolotów i procesów chemicznych.
Jay Elston,

3
@JayElston: Fizyka to inżynieria, a informatyka inżynieria oprogramowania, która obejmuje analizy, projektowanie, planowanie, wdrażanie, kontrolę jakości itp. Samo programowanie to tak naprawdę sztuka tworzenia materiałów, które chcesz robić, podczas gdy inżynieria zaczyna się od ustalenia, co naprawdę chcesz zrobić.
back2dos,

Nadal podoba mi się jeden z cytatów moich profesorów: „Inżynieria to sztuka stosowania nauki do rozwiązywania problemów”.
Chris O

1
@Chris: Być może więc nauka jest sztuką tworzenia nowych problemów.
JasonTrue

@JasonTrue: Cóż, można argumentować, że nauka jest sztuką tworzenia lepszych problemów;)
back2dos

9

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.


5

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ę.


1
Programowanie jest jak gra na pianinie. Potrzebujesz mistrza, który nauczy Cię, jak robić rzeczy, i dużo praktyki, aby robić to dobrze. Uważam, że jest bardzo niewielu światowej sławy pianistów.

7
Co za dziwna analogia, na pewno jest wielu wysoko wykwalifikowanych programistów samouk.
ocodo

@Slomojo True i poznałem kilka z nich. To dziwna rasa, doskonała z tego, co wiedzą. Trudność polega na szerokości napotkanych problemów. Czasami problem ma znacznie krótszą ścieżkę do rozwiązania, gdy znasz jakiś zakątek informatyki, a jednak ci utalentowani ludzie mają tendencję do wbijania go w jedyny znany im sposób, który ostatecznie wygląda jak brutalna siła. Przykład: problem, który był „trudny do rozwiązania” dla samouka, został rozwiązany przez DFA w dwa dni, wraz z testowaniem (w TCL / TK, aby uruchomić!). Dwa tygodnie później nadal tego nie rozumieli, z wyjaśnieniem.
Edwin Buck,

4

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ę.


Dobra rada, oczywiście, całkowicie się zgadzam. To tylko dyplom ... :)
Toerndev

@gaidal: Tak! właśnie to dostałem ze szkoły - marką: P (chociaż miałem nadzieję na znacznie więcej, kiedy dołączyłem)
Jan S

2
Uniwersytet nie polega na nauce programowania, ale na nauce języków programowania i, bardziej ogólnie, informatyki. Kiedy musiałem wykonać swój projekt systemów operacyjnych na uniwersytecie, powiedziano mi: będzie w C, książka jest w bibliotece, idź po nią i naucz się jej. Programowanie dotyczy praktyki i uczenie się tego nie jest zadaniem uniwersytetu.
Giorgio

1
O lepiej płatnych pracach, to prawda. Mój przyjaciel, który wykłada na uniwersytecie, kiedyś narzekał: „Uczymy ich, jak programować, a potem zarabiają więcej niż my, powinno być na odwrót!”
Giorgio

3

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.


Dziękuję, będę pamiętać, że nie uważasz, że wystarczy powiedzieć, że to zły kurs. Na marginesie, nie miałem na myśli, że powinno tak być w Linuksie, tylko że mógł podjąć wysiłek, aby poinformować studentów o różnicach i że istnieje standard.
Toerndev,

Zgadzam się z tobą, że dobrym pomysłem byłoby poinformowanie o innych systemach. To zależy również od doświadczenia nauczyciela: mogą czuć się nieswojo, mówiąc o środowisku, którego nie znają. Np. Jestem w domu z Windows i Linuxem, ale unikałbym MacOS, ponieważ nawet to może być bardzo fajny system operacyjny, nigdy go nie używałem. Być może możesz spróbować zapytać, czy mogą dać krótkie porównanie różnych środowisk C ++: tylko kilka przykładów, aby poczuć, co może być inne, a co pozostaje niezmienne. Np. Możesz grać z sizeof na MSDOS i Linux.
Giorgio

2

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.


2

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.

 if(!system("mkdir foo"))
     //booo and exit`

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.


1
Nie jestem pewien, czy zgodziłbym się, że niejawne zachęcanie niedoświadczonych programistów do przeskakiwania bezpośrednio do systemu bez żadnego prawdziwego pojęcia o problemach to dobry pomysł ...
deworde

@deworde: To samo piszesz w konsoli, nie sądzę, że możesz sprawić, by rzeczy były mniej podatne na błędy i bezpieczne.
Koder

Tak, ale kiedy piszesz go w konsoli, wiesz (na przykład), gdzie jesteś, z kim pracujesz, na jakiej maszynie działasz i, co najważniejsze, DLACZEGO TY ROBISZ. Program niekoniecznie jest świadomy żadnej z tych rzeczy, a osoba uruchamiająca plik wykonywalny nie będzie wiedziała, że ​​musi je sprawdzić przed uruchomieniem.
deworde

@deworde: Niezupełnie, polecenie EraseFile nadal odziedziczy uprawnienia do procesu, więc równie łatwo jest zepsuć dowolne polecenie.
Koder

1

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,


Dziękuję, tak. Rozważę to. Jeśli czuję, że zmierza w złym kierunku, mogę to zmienić później, podstawowe kursy powinny być kompatybilne między wszechświatami.
Toerndev,

Ostrożnie z tym założeniem; Zmieniłem kierunki z CS na MIS i żadna matematyka, którą już podjąłem, nie została przeniesiona, ponieważ szkoła biznesu miała całkowicie odrębną ścieżkę matematyczną. Angielski, nauki ścisłe, nauki humanistyczne, tak, przeniesione.
KeithS,

1

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.


0

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.


Dziękuję, pomyślałem o tym i myślę, że masz rację co do tych dwóch opcji. To pierwsze jest dla mnie bardziej prawdziwe i będę szukał pracy, czekając, czy kursy staną się bardziej interesujące. To rzeczywistości jest to edukacja w zakresie inżynierii oprogramowania, którą wybrałem zamiast informatyki, ponieważ chcę wcześniej przyspieszyć i uczyć się poprzez pracę. Być może to wyjaśnia, dlaczego spodziewałem się nieco więcej „umiejętności z prawdziwego świata”. :)
Toerndev

Kilka uwag z mojej uniwersyteckiej przeszłości: studiowałem kurs, na którym mieliśmy „programowanie 101” zgodnie z harmonogramem, ta część była dla mnie irytująco nudna. Ale inne kursy były interesujące (fizyka, mechanika, ...), więc nawet jeśli wykład jest nudny, to może nie dotyczyć całego programu, a dla innych części warto przejść przez ból. Ale wypadło. Tymczasem dowiedziałem się, że czasami ten papier byłby korzystny, mimo że nie oznacza, że ​​będę lepszy w swojej pracy (mam dobrą pracę, dobrą pensję, ... więc nie jest źle ;-))
johannes,

0

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.


Nie widziałem tego wcześniej. Cieszę się, że ktoś mówi dokładnie to, co czułem na temat niektórych odpowiedzi (twój pierwszy akapit)! Tak, nauczanie jest raczej bezużyteczne, nie uczęszczam już na zajęcia, ale po prostu włączam programy, które muszę napisać. Robię to po swojemu (co zwykle jest dość złe, przechodząc z CL do C ++), spotykam wiele rzeczy, których nie ma w programie nauczania, i raczej pytam przyjaciół programisty niż profesora. W ten sposób jest to naprawdę dobra zabawa. Mam jednak nadzieję, że uda mi się znaleźć pracę przed ukończeniem studiów.
Toerndev

0

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.


-6

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.hna kod innych ludzi - i dobrze jest wiedzieć, co robi.


10
nie, otrzymujesz narzędzia do wykonania pracy i Twoim zadaniem jest korzystanie z tych narzędzi. Jeśli masz pracę, w której wszystko, co masz, to 15-letni XT z CP / M, wymagający, że zaakceptują twój 64-bitowy kod systemu Windows 7 też nie będzie działał, najlepiej przyzwyczaić się do tego jak najwcześniej.
jwenting

2
@Ramhound Uczelnia powinna umożliwić ukończenie kursu bez konieczności kupowania drogiego sprzętu (takiego jak system operacyjny Windows). Jej szkodliwe.
Tom

3
@Tom, gdybym uczył Photoshopa, spodziewałbym się, że kupisz Photoshopa (co jest bardzo drogie) i spodziewam się, że kupisz podręczniki, które są drogie, nie wiem, gdzie to jest inaczej. I założę się, że w kampusie jest wiele komputerów, których mógłby użyć do tego zadania bez kupowania systemu Windows (które szczerze mówiąc każdy, kto studiuje CS, prawdopodobnie powinien mieć jedno i drugie, nigdy nie wiadomo, gdzie skończysz, ludzie programujący w stosie Microsoft produktów nie korzysta z Linuksa).
HLGEM,

3
@Ramhound Nawet jeśli profesor nie powiedział wprost, dlaczego używa uproszczonych procedur IO opartych na dosie, możemy prawdopodobnie zgadnąć. Jak wspomniał Tom, procedury io C ++ są stosunkowo złożone, więc ukrywanie szczegółów nie jest nierozsądne na kursie wprowadzającym. Decyzja o użyciu biblioteki specyficznej dla platformy Windows zamiast biblioteki opartej na * nix prawie na pewno sprowadza się do założeń, że większość studentów używa systemu Windows nie * nix i że więcej użytkowników systemu Windows miałoby problemy z rozpoczęciem korzystania z * nix niż odwrotnie.
Dan Neely

5
@gaidal - zasady istnieją z określonego powodu. Jeśli zaczniesz gdzieś pracować i zdecydujesz, że zamiast zastrzeżonej biblioteki skorzystasz ze standardu, ponieważ „standardy istnieją z jakiegoś powodu” - bardzo szybko stracisz pracę. Weź ten kurs jako ćwiczenie zgodności ze standardami kodowania. Nie zawsze ci się spodoba.
littleadv
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.