Dlaczego uczymy się języka Java na uniwersytecie? [Zamknięte]

25

Java często znajduje się w środowisku akademickim. Jaki jest tego powód?

Goma
źródło
9
Nie ma żadnych kosztów licencyjnych dla środowiska Java IDE, podobnie jak dla ekosystemu Microsoft. Więcej twoich ogromnych opłat za studia na uniwersytecie.
mjhilton
16
Co? możesz uzyskać Microsoft Visual Studio Express za darmo.
quant_dev
12
W rzeczywistości przez większość czasu możesz uzyskać Visual Studio za darmo, jeśli jesteś studentem i co drugą aplikację Microsoft.
Erin
5
ponieważ chcesz zarabiać pieniądze po ukończeniu szkoły, prawda? Spędzenie 4 lat na studiowaniu rzeczy, których nikt nie używa na realświecie, nie stanowi korzyści dla studentów lub firm, które chcą ich zatrudnić.
5
@JarrodRoberson, tylko niektóre firmy używają Java, uniwersytety powinny naprawdę uczyć cię w szerszej gamie języków, abyś był lepiej przygotowany do prawdziwego świata. Nie chcesz tkwić w byciu tylko programistą Java, gdy istnieje wiele innych sposobów myślenia i rozwoju.
CaffGeek

Odpowiedzi:

73

Na kilku uniwersytetach jest ktoś, kto jest wystarczająco dobrze znany, że wiele (jeśli nie większość) decyzji dotyczy upodobań, niechęci, opinii, gustu itp. Na przykład w Texas A&M Bjarne Stroustrup ma pracowników; prawdopodobnie nikogo nie dziwi fakt, że ich program nauczania kładzie nacisk na C ++.

Większość uniwersytetów jest jednak nieco inna. Po pierwsze, decyzje podejmowane są często o wiele bardziej na korzyść wykładowców niż studentów. Najważniejszym kryterium w wielu przypadkach jest „który język wymaga najmniejszego wysiłku z naszej strony?” Większość z nich jest również ostrożna w swoim lenistwie - chcą nie tylko języka z najmniejszą liczbą zaawansowanych pojęć, ale także takiego, który jest (na przykład) najwolniejszy do wprowadzania innowacji, aktualizacji lub wprowadzania czegokolwiek nowego.

Po drugie, większość decyzji podejmowana jest przez komisję. Oznacza to, że ostateczna decyzja rzadko (jeśli w ogóle) jest tym, czego ktoś naprawdę chciał - to jest właśnie to, co najmniej członków komitetu (szczególnie tych o największym wpływie) uznało za szczególnie niekorzystne. To jak wybieranie smaku lodów. Jeden naprawdę lubi truskawki, ale inny ma alergię na truskawki. Inny naprawdę uwielbia czekoladę, ale ktoś inny nie może tego znieść. Jeszcze inny uważa, że ​​rodzynki rumowe są świetne, ale dwaj pozostali martwią się, że wymienienie „rumu” zostanie zinterpretowane jako zachęcające do nadużywania alkoholu - więc kończą się wanilią, chociaż tak naprawdę nikt tego nie chciał.

Wreszcie, mimo to zwykle działa bezpośrednio wbrew większości tego, co dwa poprzednie kryteria wytworzyłyby oddzielnie, na ogół muszą (lub przynajmniej chcą) być postrzegane jako reagujące na potrzeby przemysłu.

Java to skrzyżowanie tych trzech:

  1. Każda koncepcja, którą ucieleśnia, była dobrze znana w 1980 roku. Niewiele można wiedzieć poza najbardziej podstawowym pojęciem tego, czym jest OOP.
  2. To bez smaku, bezwonny, nietoksyczny, biodegradowalny, politycznie poprawny wybór.
  3. Prawie jedynym innym językiem w historii, który istniał tak długo i (prawdopodobnie) mniej innowacyjnym, jest SQL. Mimo że nie są to tak zwane szybko poruszające się cele, COBOL i Fortran wciąż wprowadziły innowacje więcej niż Java.
  4. Jest szeroko stosowany. Kiedy się do tego zabierasz, profs i PHB mają podobne kryteria.

Zauważ, że tak naprawdę nie mówię (na przykład), że nie ma nic więcej do powiedzenia na temat Javy niż najbardziej podstawowe pojęcie o tym, czym jest OOP - tylko że to wszystko, co jest potrzebne do zrobienia tego, co przechodzi do zadowalającej pracy polegającej na nauczaniu go.

Jerry Coffin
źródło
wszystkie komentarze zostały stąd usunięte, ponieważ opinie na temat tej odpowiedzi są podzielone.
Nazwa wyświetlana
1
FWIW, wolę wanilię.
Lekkość ściga się z Monicą
Zapisałem się, aby głosować na twoją odpowiedź
2445942
22

Studiowałem informatykę na początku lat dziewięćdziesiątych, tuż przed pojawieniem się Java. Podejście stosowane przez naszych profesorów było następujące.

Pierwszy rok: kurs wprowadzający na temat programowania i algorytmów w Pascal. Dlaczego Pascal? Ponieważ jest to czysty język przeznaczony do nauczania pojęć programowania bez możliwości hakowania. Oczywiście my, studenci, wiedzieliśmy, że najpopularniejszym językiem w tym czasie było C i że pojawił się nowy język o rosnącej popularności: C ++. Więc cały czas czytaliśmy i rozmawialiśmy o tych językach i sami realizowaliśmy małe projekty. Pomysł był następujący: na zajęciach uczymy się poważnej teorii (Pascal), podczas gdy w domu uczymy się hakowania (C). :-)

W drugim roku mieliśmy kurs systemu operacyjnego, w którym poproszono nas o wykonanie ćwiczeń w C i montażu. Profesor nie dał nam pełnego kursu na temat C (tylko kilka lekcji), ponieważ (1) mieliśmy już kurs programowania w pierwszym roku i (2) powiedział, że każdy informatyk, który zna pojęcia programowania, powinien być w stanie przeczytać książkę i nauczyć się nowego języka programowania. Kurs przebiegał dość sprawnie i wszyscy uważaliśmy za normalne, że C i montaż były praktycznymi tematami, których uczysz się sam lub omawiasz na korytarzu z innymi studentami, ale nie warto było kontynuować kursu.

W trzecim roku mieliśmy kurs języka programowania, w którym badaliśmy różne paradygmaty języków programowania (imperatywny, funkcjonalny, logiczny, obiektowy), poznawaliśmy ogólne koncepcje i techniki wdrażania oraz poprawiliśmy główne języki programowania (Pascal, C, Modula2, Simula, Lisp, C ++, Prolog). Nasz profesor powiedział nam na początku kursu: nie powinieneś oceniać tego kursu, myśląc o tym, ile języków programowania znasz na końcu kursu, a raczej o wszystkich ogólnych pojęciach, których się nauczyłeś, jakie są powiązane ze sobą, do czego są dobre, w jaki sposób są używane w jakich językach. Następnie nauka określonego języka to tylko czytanie książki, przeglądanie istniejącego kodu, próba użycia go w konkretnym projekcie i tak dalej.

Uważam to podejście za bardzo odpowiednie i skuteczne. Nie uważam, że uniwersytet powinien dążyć do przygotowania dobrych programistów, ale raczej do zapewnienia dobrej wiedzy, która pozwala zrozumieć języki programowania i programowania. Zostanie dobrym programistą stanie się efektem ubocznym tego. Rozważam teraz ubieganie się o pracę, w której wymagana jest Ada, i nie boję się jej, chociaż nigdy wcześniej nie robiłem poważnego programowania w Adzie.

Wracając do kwestii nauczania Java. Wydaje mi się, że Java jest często używana do nauczania, ponieważ jest wystarczająco neutralna i pozwala wyjaśnić zasady programowania przy użyciu języka zbliżonego do świata przemysłu.

Osobiście nadal używałbym Pascala lub podobnego języka na pierwszym kursie, ponieważ pozwoliłoby mi to odróżnić struktury kontrolne od struktur danych, które w językach Java / obiektowych są ściśle zintegrowane. Moim zdaniem Pascal umożliwiłby bardziej stopniowe wprowadzenie do podstawowych pojęć programowania.

Ponadto informatyk (i dobry programista) powinien wiedzieć o podstawowych mechanizmach / strukturach wykonawczych, takich jak stos, sterta, przekazywanie parametrów, alokacja pamięci, wskaźniki lub jak zaimplementować abstrakcyjne typy danych bez korzystania z wbudowanych funkcji język (listy, zestawy itp.). Java zabiera wiele z tego od programistów (to oczywiście dobre), ale początkujący powinien dowiedzieć się o tych rzeczach. Być może po pierwszym kursie programowania w Javie należy również wziąć bardziej ogólny kurs z zakresu pojęć języków programowania.

To tylko moje doświadczenie i opinie.

Giorgio
źródło
1
Kiedy byłem na uniwersytecie w pierwszym roku, zrobiliśmy Adę na kursy programowania (trochę montażu na kursie systemów komputerowych). Drugi rok był dość podobny styl językowy. Trzeciego roku powiedziano nam dokładnie: „każdy informatyk, który zna pojęcia programowania, powinien umieć przeczytać książkę i nauczyć się nowego języka programowania”. Do końca roku uczyliśmy się języka C, C ++, Java i jakiego języka używałeś w swoim projekcie (moim był Python) To było najlepsze przygotowanie, jakie kiedykolwiek przygotowałem do prawdziwego świata, jak uczyć się szybko i w locie
Amy
(+1) Języki programowania związane z Pascalem lepiej nadają się do nauczania programowania, ponieważ jego ojciec „Niklaus Wirth” starannie je projektuje, do nauczania. ;-)
umlcat
@umlcat: Dzięki. Tak, myślę, że dobrze jest mieć C lub C ++, w którym możesz łamać zasady i hakować. Ale przed złamaniem zasad musisz wiedzieć, jakie zasady łamiesz. W tym celu bardzo użyteczny jest czysty język programowania, taki jak Pascal, aby dowiedzieć się, jak należy programować w „idealnym świecie”. Wtedy przynajmniej wiesz, co robisz, gdy się włamujesz. :-)
Giorgio
@Giorgio: Myślę, że uczniowie powinni uczyć się najpierw Pascala, później C / C ++, a później Java. Nie mam na myśli tylko jednego lub drugiego, ale wszystkie w określonej kolejności. Niektóre szkoły rezygnują z nauczania jednej na rzecz innej. Pracuję również w C i Javie. Mam nadzieję, że to pomoże ;-)
umlcat,
@umlcat: Całkowicie się zgadzam. Dodałbym też trochę Lisp, Haskell, Prolog: im więcej paradygmatów programistycznych się zna, tym lepiej.
Giorgio
10

Byłem w szkole, kiedy wyszła Java. A mój uniwersytet prawie się zmienił z dnia na dzień. Ludzie byli wściekli na Jawie w środowisku akademickim. Byłem juniorem, kiedy to wyszło, i do czasu mojego ostatniego roku prawie wszystkie środowiska akademickie szybko zaczęły zmieniać swój program nauczania. Nie tylko na moim uniwersytecie, ale wszędzie. To było naprawdę tak szybkie. Naszym drugim kursem wprowadzającym był Pascal, który szybko przeszedł na Javę w niecały rok. Dlaczego przekonali się tak szybko? Dwa ważne powody.

Jeden naukowiec chce uczyć teorii i algorytmów. Najlepsze są języki, które ułatwiają naukę algorytmów, które nie wymagają dużego doświadczenia: Scheme, Python, Java, Smalltalk itp. Im bardziej język przeszkadza w uczeniu się prawdziwych algorytmów. W tym czasie języki skryptowe były traktowane przez pracodawców jako obywatele drugiej klasy, uważani za tanie lub szybkie i brudne. Naukowcy postrzegali ich jako więcej kopiujących kotów, ale to, czego chcą pracodawcy, ma również wpływ na naukowców.

To prowadzi nas do następnego powodu. Pracodawcy chcą mieć pewne doświadczenie językowe, a wtedy był to C / C ++. Ale C / C ++ wymaga dużo doświadczenia, aby się uczyć i ma wiele narożnych przypadków, a jeśli ands lub ale są rozpraszające. Nauczyliśmy się kursów w C / C ++, ale nie na niższych poziomach. W tym czasie pracodawcy byli wściekli na programy CS, ponieważ studenci nie wyszli z guru C / C ++.

Java przeczesywała przemysł zbyt szybko, tak jak środowisko akademickie. W końcu środowisko akademickie dostawało to, czego chcieli. Język wysokiego poziomu, który był łatwiejszy do nauczenia, a język, którego chcieli pracodawcy. To było zbyt idealne. Miałem przyjaciela, który wrócił na uczelnię, może 3 lata po moim odejściu, i powiedział, że możesz znaleźć książkę o Javie w każdym temacie CS. Tak szybko Java przejęła środowisko akademickie.

Osobiście uważam, że Java nie stępiła CS.Myślę, że to była dobra rzecz, ponieważ uczniowie mogą uczyć się CS, uczestniczyć w Open Source i znaleźć pracę, nawet gdy są w szkole. Nadal uważam, że powinieneś uczyć się wielu języków jako student CS, a to nie powinna być tylko Java. Ale gdyby wszyscy używali Pythona, Joel też nie znosiłby Pythona.

chubbsondubs
źródło
Jeśli twoja szkoła nadal używała Pascala w połowie lat 90., to i tak były one spóźnione z powodu remontu. Moje pierwsze zajęcia z CS odbywały się w Pascal, ale to było w 1980 roku! Co ciekawe, były to tylko kursy wprowadzające - klasy wyższe używały C (dla elementów wewnętrznych systemu operacyjnego), Modula (do projektowania kompilatora), Prolog, a niektóre kursy dla absolwentów korzystały nawet z Ady. Nie rozumiem, dlaczego szkoły wciąż tego nie robią.
TMN
1
większość lub wszyscy nadal korzystali z Pascala dopiero w 1995 r., niektórzy przenieśli się do Moduli. Mój zaczął wprowadzać C ++ w 1995 roku dla seniorów, utrzymując Pascala dla juniorów. Myślę, że do tej pory zastąpili Pascala Javą (potrzebują niskiego poziomu języka, ponieważ wiele pracy wymaga interakcji ze sprzętem, więc C ++ prawdopodobnie nadal istnieje).
jwenting
Po kursie wprowadzającym do Pascala dość często korzystaliśmy z C / C ++. Prolog, LISP, Scheme, Smalltalk, Assembly były używane w klasach średnich. Ponieważ znaczenie konsumpcji technologii przez rząd zmniejszyło się w latach 90. XX wieku, Ada została wycofana i wspomniana dopiero pod koniec lat 90. Myślę, że zagrożenia związane z Javą nie mają nic wspólnego z Javą, ale z monokulturą i nauką. Jestem teraz programistą Flex, a Adobe zakończył moją zdolność zarabiania na tym w zeszłym tygodniu. Nie martwię się, ponieważ mam długą historię używania nie jednego języka. Mam Java, Ruby, Php, Python, na których mogę polegać.
chubbsondubs
8

Jest kilka powodów, w tym:

  • Wszechobecność na rynku pracy - jeśli uniwersytety chcą, aby ich studenci zostali zatrudnieni (i polecają uniwersytetowi więcej studentów), muszą uczyć odpowiednich języków.
  • Upraszcza program nauczania
  • Łatwiej jest oceniać i łatwiej realizować w nim pracę domową.
  • Śmieci zebrane, więc nie trzeba uczyć wskaźników i ręcznego zarządzania pamięcią

Zauważ, że istnieje wiele szkół, które uczą języka C # z wielu tych samych powodów. Istnieje wiele innych powodów, z których niektóre są bardziej szczegółowe dla poszczególnych szkół. Zasadniczo Java stała się obiektową „BASIC” z przeszłości.

Berin Loritsch
źródło
Są świetne książki o Javie, a także upraszcza OOP, takie jak pierwszy obiekt Java za pomocą BlueJ. Jednak w C # nie widziałem takich książek do nauki, które zabierają cię od zera i uczą cię w dobry sposób. Zgadzasz się ze mną?
Goma
Będę. Nauczanie jest bardzo trudnym zadaniem, a nauczyciele wciąż uczą się, jak najlepiej nauczać. Znajdziesz tu wiele szkół internetowych, takich jak Strayer trzymaj się C #, a szkoły murowane i morter dążą do Javy. Prawdopodobnie dlatego, że szkoły internetowe są przeznaczone dla uczniów, którzy już pracują. Podstawowe książki programistyczne mogą dotyczyć dowolnego języka, dlatego dostępne są materiały.
Berin Loritsch
„Śmieci zebrane, więc nie trzeba uczyć wskaźników i ręcznego zarządzania pamięcią”. jeśli jako inżynier oprogramowania nie wiesz o wskaźnikach i zarządzaniu pamięcią lub nie wiesz, jak one działają, brakuje ci bardzo ważnej wiedzy.
prawy
Java może nie mieć *składni, ale korzystanie z niej bez podstawowej znajomości wskaźników byłoby bardzo trudne.
dan04,
@WTP i dlatego Java jest często używana do kursów wprowadzających (gdzie wcześniej używano Pascala lub Moduli), a później wprowadza się C (++).
jwenting
6

Lubię post Joela Spolsky'ego zatytułowany The Perils Of Java Schools . Myślę, że Berin Loristch ma rację, upraszczając cirriculum, a także ma zastosowanie w prawdziwym świecie.

Wielokrotnie słyszałem, co następuje: „stopień informatyki nie jest stopniem do nauki programowania, to do nauki teorii”. Język niekoniecznie musi mieć znaczenie (choć nie przeszkadza), dopóki teoria się uczy. Java jest stosunkowo łatwym do opanowania językiem, który pozwala poświęcić więcej czasu na naukę teorii stojącej za wszystkim. Jest to jeden z powodów, dla których MIT korzysta ze Schematu (tak słyszałem).

Jetti
źródło
2
Mit przestał używać Schematu kilka lat temu - cemerick.com) / 2009/03/24 /…
nate c
@ kwiecisty c - nie byłem pewien. Mimo to można łatwo nauczyć się języka Python. Dzięki za link!
Jetti
Gdybym prowadził lekcje, kompletnie bym się pieprzył z moimi uczniami. Zachęcam do pisania własnego języka programowania i możesz używać tego języka programowania tylko w trakcie zajęć.
berlinbrown2
1
@Berlin - Wydaje mi się, że dlatego nie jesteś nauczycielem :)
Jetti
3

Wiele z powyższych odpowiedzi jest dobrych, ale coś pomijają.

Java jest językiem wieloplatformowym. Jeden uczeń może korzystać ze swojego Maca, inny z jej komputera, a inny z jej studenckiego konta Unix. Ten sam kod zrobi to samo. Pomyśl, o ile łatwiej jest wspierać zarówno nauczyciela, jak i szkolny dział IT.

To było prawdziwe znaczenie Java, kiedy się pojawiła. Żart brzmiał: „Kod raz, debuguj wszędzie”, ale tak naprawdę nie bierze się pod uwagę sprzętu i systemów operacyjnych.

Matthew Flynn
źródło
Być może to wyjaśnia, dlaczego Java jest wybierana zamiast C, C ++ lub C #, ale Ruby i Python (między innymi) działają dobrze na różnych platformach.
Eric Wilson,
Słuszna uwaga. Uważam, że z wielu powodów działy CS preferują również mocno pisane języki. Poza tym Java miała przewagę w USA. Ruby nie pojawiła się tutaj aż do 1999 roku lub później, a Python był dość ograniczony, dopóki nie pojawił się 2.0.
Matthew Flynn
1

Słyszałem, że profesorowie mówią, że używają java do nauczania, ponieważ:

  • używa nowszych paradygmatów (OOP, niektóre generyczne)
  • składniowo bardzo prosty, choć dość gadatliwy
  • brak zaawansowanych pojęć, takich jak funkcje wyższego rzędu, zamykanie, curry lub kontynuacje, które mogłyby wprowadzać w błąd ludzi wciąż uczących się podstawowych pojęć
  • napisano o tym wiele bibliotek
  • studenci nie są tak pochłonięci debugowaniem wycieków pamięci, ponieważ istnieje GC

Osobiście cieszę się, że wziąłem CS w Berkeley, kiedy używali Scheme do nauczania. Chociaż nie zdawałem sobie sprawy z tego, jak elegancki był ten język, dopiero kilka lat później.

dietbuddha
źródło
1

Trochę tła

Wziąłem jedyną klasę Java oferowaną w naszej szkole. To był koniec lat 90. i początek 2000. Java rozwijała się, ale jeszcze nie wystartowała. Wychodząc z wielu prac rozwojowych w C, byłem trochę sfrustrowany całym kodem niezbędnym do uruchomienia Javy. Nie mogłem skupić się na swoim zadaniu. Nie mogłem po prostu otworzyć pliku za pomocą „open”. Musiałem zdefiniować klasę, a następnie import itp.

Byłem inżynierem komputerowym, więc najpierw wziąłem programowanie asemblera, potem C, a potem C ++, Scheme i ten kurs Java. Był to głównie program szkolny zorientowany na język C. Klasy algorytmów uczy się za pomocą C.

Kiedy wkroczyłem w przemysł, Java była wyraźnie dominującym graczem. Być może był to jedyny odtwarzacz podczas konwersji z wewnętrznych systemów COBOL na aplikacje biznesowe Java. Java poczyniła ogromne postępy w świecie biznesu na początku 2000 dni.

Jednocześnie nie znałem wszystkich frameworków Java, ale wiedziałem, jak kodować i dostosowywać się do środowiska Java. Gdybym wziął udział w szkoleniach dotyczących dobrych standardów kodowania Java, prawdopodobnie mógłbym zacząć od lepszego stylu Java lub znajomości ekosystemu Java.

Z perspektywy czasu nie sądzę, żeby to miało znaczenie.

Aby odpowiedzieć na twoje pytanie: Dlaczego uczymy się języka Java na uniwersytecie?

Języka Java należy uczyć, ale nie należy go stosować we wszystkich kursach:

Jeśli uczysz się informatyki, powinieneś uczyć się języka Java na pewnym etapie studiów. Jest popularny w świecie biznesu. Powinieneś nauczyć się Java i może C #. Absolutnie nie uczyłem Java jako wstępnego kursu programowania. A Java z pewnością nie powinna być podstawowym językiem używanym we wszystkich kursach.

W sprawie krytyki Java:

Java jest bardzo krytykowana i zawsze tak jest. Czytam czasopisma Java, które wspominają o Javie ze znakiem zapytania: „Czy Java jest gotowa na Enterprise?”. Platforma Java jest nadal szeroko stosowaną platformą. Ale w przypadku większości ogólnych zadań programistycznych Java działa dobrze. I nie ma żadnych większych problemów z używaniem Javy. Nie zaszkodzi twojemu zestawowi umiejętności. Może się zdarzyć, jeśli polegasz na bibliotekach Java, nie wiedząc, co dzieje się pod spodem. Ale Java nie powoduje żadnego uszkodzenia mózgu (niektórzy programiści naprawdę wierzą w to).

Ponadto, dlaczego programiści nie atakują C lub C ++? Lub przynajmniej C ++. Imperatywne paradygmaty programowania są bardzo podobne. I nigdy nie zastanawiałbym się nad napisaniem aplikacji internetowej w C ++, ale mógłbym to zrobić w Javie.

Oto jak skonfigurowałbym program nauczania:

  1. Kurs wprowadzający: Schemat, Python, asembler, C (wszystkie trzy)
  2. Kurs Algorytmów: C, Haskell, Python (wszystkie trzy)
  3. Kurs systemu operacyjnego / Kurs sieci: C / C ++
  4. Rozwój GUI: Java Swing, C ++ na Win32
  5. Programowanie obiektowe: (jest to trudne, nie miałbym kursu OOP). C ++, Java, C #
  6. Przedsiębiorstwo? Programowanie: Java, C #, Python
  7. Projektowanie języka, kompilatory: Haskell, Scala, C, asembler, schemat, Common Lisp, Prolog.

Języki wymienione w moim programie nauczania są dość powszechne. Wiele szkół uczy wielu języków bez problemu. W przemyśle będziesz używać wielu różnych języków programowania. Będziesz używać języków, o których nawet nie słyszałeś.

Temat Java w szkołach nie stanowi problemu, chyba że chcą całkowicie chronić Cię przed Javą lub chcą uczyć TYLKO Javy. W obu przypadkach szkoły są nieuzasadnione.

(Przepraszam, Ruby Lang)

berlinbrown2
źródło
(-1) „Asembler” zbyt skomplikowany do „kursu wprowadzającego”. Nie mam na myśli „nie ucz tego”, mam na myśli „
Nauczymy
1

Przepraszam, tylko nudna odpowiedź:

(1) Czy chodziło Ci o:

„Dlaczego uczymy się języka Java na uniwersytecie jako pierwszego języka programowania?”

(2) Czy masz na myśli:

„Dlaczego w ogóle uczymy się języka Java na uniwersytecie, nawet jeśli uczymy się innych języków programowania przed Javą?”

Wygląda na to, że naprawdę masz na myśli oba pytania.

W przypadku (1):

Nie sądzę, że Java (lub .NET C # i Visual Basic) powinny być nauczane jako pierwsze języki programowania. Structured & Modular Pascal powinien być pierwszy, nawet jeśli wydaje się stary i przestarzały.

Wiele osób uważa, że ​​powinniśmy od razu uczyć ludzi programowania obiektowego lub programowania funkcjonalnego tylko dlatego, że jest to „szum” lub „trend”.

Uczę się Structured Pascal jako małej wersji „Programowania obiektowego”, a nie jako czegoś podobnego. Widzę program strukturalny jako pojedynczy mały obiekt.

Następnie sugeruję kontynuację języków funkcjonalnych i Object Pascal.

A później C, C ++, C #, VB.Net, Java.

Głównymi powodami, dla których nie lubię Javy ani C # jako pierwszego języka programowania, jest to, że mają mieszane pojęcia „wskaźniki”, „wskaźniki do obiektów” i „same obiekty” („odniesienia”).

Uważam, że studenci powinni mieć na uwadze różnice i podobieństwa między tymi pojęciami. Porównanie obiektów Strings w Javie jest dobrym przykładem tego dziwactwa:

String A = "Mars";
String A = "Venus";

// pointer comparison or object comparison ???
if (A == B)
{
  DoSomething();
}

W przypadku (2):

Myślę, że Java lub C # powinny być nauczane w szkole, ponieważ mają kilka zaktualizowanych dobrych funkcji, a jednocześnie mają rzeczywiste zastosowanie.

umlcat
źródło
0

Jeśli uczysz się informatyki, powinieneś uczyć się języka Java na pewnym etapie studiów. Jest popularny w świecie biznesu. Powinieneś nauczyć się Java i może C #. Absolutnie nie uczyłem Java jako wstępnego kursu programowania. A Java z pewnością nie powinna być podstawowym językiem używanym we wszystkich kursach.

Nie mogę się nie zgodzić. Java była językiem w mojej szkole, który musiałeś wziąć, aby dostać się do programu CS&E w mojej szkole. Java jest wyjątkowo łatwa do nauczenia. Ponieważ możesz ograniczyć się do pewnych pojęć, których mogą nauczyć się „nieprogramiści”.

Nie umiem też powiedzieć, czy absolutnie uczyłbyś Javy jako wstępnego kursu programowania. Zasadniczo powiedziałeś, że NIE ABSOLUTNIE NIE CHCESZ tego uczyć ?

Prosty powód został już wyjaśniony. Java nie ma opłat licencyjnych. Możesz tego nauczyć za pomocą podstawowego edytora testów. Z pewnością jest używany z niewłaściwych powodów.

Nie zgadzam się z poprzednią odpowiedzią, że Java nie sprawiła, że ​​uczniowie zdawali ją „głupszą”, to naprawdę pokazuje, kiedy mają problemy z naprawdę prostymi pojęciami, takimi jak tablice i listy w C ++.

Ramhound
źródło
Chciałbym zaznaczyć, że ignorancja to nie to samo, co „głupota”. Ludzie „przechodzący” przez Javę mogą nie znać tych „prostych pojęć”, ponieważ ich nie nauczono. Nie znaczy to, że gdyby poświęcili trochę czasu, aby to rozgryźć, nie dostaliby tego.
Jetti
0

Zmiana z C na Java nastąpiła w niewłaściwym czasie .

Gdzieś około 2000. Byłem w ostatniej klasie C na moim uniwersytecie.

  • C ++ miał zbyt wiele funkcji, aby nie mylić nowicjusza. (I nadal tak jest. I planuje dodać.)

  • NET nie był wystarczająco dojrzałe i była nawet bardziej kosztowne niż dzisiaj.

  • Cel C był stary, a użycie go przez Apple leciało poniżej radaru (w pobliżu nie było iPhone'a )

ZJR
źródło
Inne problemy .NET w tym czasie? Brak przenośnego środowiska wykonawczego - nie było dostępne mono .
ZJR
Brak neutralności edytora tekstu . ( wojny edytorów tekstów są brzydkie, ale prawdziwe) I domyślne IDE, które sprawia, że ​​uczniowie oddają się bojlerom .
ZJR
BTW, wolałbym, żeby świat obrał ścieżkę Celu C , Apple nie byłby jedynym dzieckiem na tym boisku, a nawet jego model biznesowy byłby nieco mniej szalony.
ZJR
0

Czuję się zmuszony do dodania tutaj odpowiedzi, ponieważ tak naprawdę nie widzę żadnej z tych odpowiedzi, która faktycznie zakrywa moją perspektywę.

Jestem programistą hobbystycznym. Byłem daleko przed konkurencją, jeśli chodzi o „komputery” i „programowanie”. Ukończyłem studia licencjackie - licencjackie - w 2007 roku i magisterskie około dwa lata później - 2009. Pracowałem z wieloma językami, w tym Asembler, QuickBASIC, C, C ++, Java, PHP, Perl, Python, Skrypty BASH, JavaScript, COBOL itp. .

IMHO, język używany do nauczania programowania dla studentów, jest wskaźnikiem czasów, w których obecnie żyjemy. Na przykład w latach 80. Zgromadzenie było językiem niskiego poziomu, podczas gdy C był uważany za język wysokiego poziomu.

W latach 90. C ++, Java, Perl i takie języki zyskały na znaczeniu przede wszystkim dlatego, że znacznie wyższy poziom niż C i ucieleśniały zasady szybkiego rozwoju. Przestali więc trochę uczyć asemblera studentów CS i nauczali C jako sposobu wyrażania algorytmów. Powoli zmieniło się to w ciągu ostatniej dekady, gdy język C jest uważany za język niskiego poziomu, aby skutecznie uchwycić istotę algorytmów i bez zbytniej wiedzy na temat „systemów”. Jest to w rzeczywistości niezwykle ważne, ponieważ program nauczania CS powinien być bardziej „teoretyczny” niż praktyczny i za każdym razem, gdy ktoś chce napisać algorytm, jeśli zaplątają się alokacje pamięci i arytmetykę wskaźników, nie dostaniesz gdziekolwiek.

Nawet dzisiaj, jeśli uczestniczysz w programie Masters CS, musisz spełnić pewne wymagania dotyczące „Systemów” (przynajmniej w USA i nie powinno to być bardzo różne dla amerykańskich uniwersytetów), które wymagają od studentów umiejętności programowania aplikacji na poziomie systemów i w niektórych przypadkach tak głębokie jak hakowanie na poziomie jądra, aby faktycznie spełnić wymagania. Tak więc, chociaż C nie jest nauczanym językiem defacto w szkołach, ważne jest, jeśli chcesz specjalizować się w powiedzmy Systems lub High Performance Computing lub takich niszach.

Chciałbym również wspomnieć o innej kwestii, że C wymaga dużej dyscypliny, aby wszystko było w porządku, podczas gdy języki takie jak Java są nieco rozluźnione w odniesieniu do takich ograniczeń. Ułatwia to prowadzenie kursów bez wymagania od RA / TA uruchomienia GDB w celu debugowania programu studenckiego :)

void_ptr
źródło
0

Myślę, że duża część tego jest wykorzystywana w branży.

Mój program CS miał Przemysłową Radę Doradczą, składającą się z wyższego personelu z lokalnych firm technologicznych i kosmicznych, i mieli oni duży wkład w program nauczania. Wstępne klasy CS upuściły Pascala na korzyść C w roku, w którym zacząłem (1986), w dużej mierze na żądanie IAB. Podobnie, na niektórych kursach wyższego stopnia naciskano na nauczanie Ady, ponieważ lokalne firmy z branży lotniczej musiały używać go do pracy DoD.

Java jest teraz dość wszechobecna, szczególnie teraz, gdy startują urządzenia z Androidem. Jest do bani z perspektywy dydaktycznej, ale potem, podobnie jak C.

John Bode
źródło
0

Ponieważ mają nadzieję, że mniej uczniów nie zaliczy kursu, który sam w sobie jest AWARIĄ, IMHO. Być może jest to jeden z powodów, dla których prawie nikt nie bierze poważnie dyplomów uniwersyteckich, przynajmniej tutaj.

Java jest zbyt prosta w języku i nie uczy, że komputer ma ograniczony paradygmat zasobów. Podczas gdy jednocześnie zmusza do myślenia „nie ma nic, czego nie można rozwiązać inną warstwą abstrakcji”.

Tak, jest dobry dla koncepcji OOP i problemów z zabawkami, ale uczy podejścia do problemów z niewłaściwego punktu widzenia. Użyj tutaj zgrabnej konstrukcji, a następnie wkręć resztę.

Ale środowisko akademickie znane jest z marzeń o AI, OWL i innych technologiach zabawek. Podczas gdy wciąż badają takie rzeczy, czasami ktoś wymyśla również coś niesamowitego, ale jeśli chcesz być dobrym programistą, musisz się tego nauczyć niezależnie.

Koder
źródło