Dlaczego Java jest językiem francuskim w tak wielu instytucjach? [Zamknięte]


22

EDYCJA: To pytanie na początku wydaje się bić Java, i chyba w tym momencie jest trochę. Jednak większą uwagę staram się wyjaśnić, dlaczego jeden język jest wybrany jako jeden koniec, wszystkie rozwiązania wszystkich problemów. Zdarza się, że Java jest tą, która została użyta, więc musiałem ją tutaj pokonać, ale nie zamierzam zgrywać Java nowej :)

Nie lubię Java w większości ustawień akademickich. Nie twierdzę, że sam język jest zły - ma kilka bardzo pożądanych aspektów, a przede wszystkim możliwość uruchamiania bez ponownej kompilacji na większości platform. Nie ma nic złego w używaniu języka dla Twojej następnej aplikacji ^ TM. (Nie jest to coś, co osobiście bym zrobił, ale to więcej, ponieważ mam mniej doświadczenia z tym, niż z powodu złego projektu)

Myślę, że marnotrawstwem jest nauczanie kursów CS na wysokim poziomie przy użyciu języka Java jako języka. Zbyt wielu moich studentów nie jest w stanie uczyć się nic, bo nie wiedzą, jak pracować w świecie, w którym nie ma śmieci. Nie rozumieją zasadniczo maszyn, dla których programują. Kiedy ktoś może pracować poza światem śmieci, może pracować wewnątrz jednego, ale nie odwrotnie. GC jest narzędziem, a nie kulą. Ale sposób, w jaki jest on używany do nauczania studentów informatyki, jest kulą.

Informatyka nie powinna uczyć całego zestawu kursów dostosowanych do jednego języka. Uczniowie odchodzą z myślą, że każdy dobry projekt jest idiomatycznym projektem Java i że projekt obiektowy jest JEDNYM PRAWDZIWYM SPOSOBEM, JAKIM JEST JEDYNY SPOSÓB, JAKIE MOŻNA ZROBIĆ. W nauczaniu należy stosować inne języki, z których przynajmniej jeden nie jest językiem zbierania śmieci, aby umożliwić absolwentowi lepsze zrozumienie maszyn.

To zawstydzenie, że ktoś z doktoratem w CS z szanowanej instytucji nie może zaprogramować wyjścia z papierowej torby.

Co gorsza, kiedy rozmawiam z tymi profesorami CS, którzy faktycznie rozumieją, jak rzeczy działają, dzielą się takimi odczuciami, że wyrządzamy krzywdę naszym studentom, robiąc wszystko w Javie. (Zauważ, że powyższe byłoby takie samo, gdybym zastąpił go innym językiem, problem polega zazwyczaj na użyciu jednego języka, a nie na samej Javie)

W sumie wydaje mi się, że nie mogę już dłużej szanować żadnego stopnia - kiedy nie widzę ludzi wokół siebie, którzy potrafią zaprogramować wyjście z problemów z fizzbuzz.

Dlaczego / jak to się stało?


9
Nie martw się Daj Oracle pół szansy, a naprawią sytuację :) Ich pozwy przeciwko Androidowi i Apache to dopiero początek odstraszenia programistów. Uczę w instytucji, która uznała powyższe za wskazówkę, aby rozpocząć nauczanie języka Python w oczekiwaniu na przyszły rynek.
SamGoody,

3
Jakie ustawienia akademickie masz na myśli? Nigdzie nie wiem, gdzie studenci CSci powinni uczyć się tylko jednego języka. (Ostatnio, kiedy byłem w szkole, mogłeś sobie poradzić z C i Scheme, myślę, że jeśli starannie wybrałeś specjalizację i klasy, ale używałbyś co najmniej dwóch różnych języków).
David Thornley,

16
Czy możesz wyjaśnić, jak działa pamięć podręczna L1? Czy możesz zaprojektować ALU? Czy potrafisz wyjaśnić równania Maxwella? Co z termodynamicznymi właściwościami twojej płyty głównej? Czy możesz zbudować dysk USB? Czy NAPRAWDĘ wiesz, jak działa Twój komputer? A może wybrałeś poziom abstrakcji odpowiedni do twoich zainteresowań i stamtąd?
MetricSystem,

5
Ponieważ decyzja, że ​​musisz zrozumieć zarządzanie pamięcią, aby „zasadniczo zrozumieć maszyny, dla których programują”, jest całkowicie arbitralnym poziomem, na którym należy się zatrzymać. Jeśli nie musisz rozumieć problemów, którymi jesteś zainteresowany, lepiej poświęcić swój czas na studiowanie tego, co Cię interesuje (ponieważ nikt nie ma wystarczająco dużo czasu, aby nauczyć się wszystkiego). A każdy argument, który przedstawisz, dlaczego programiści Java muszą nauczyć się zarządzania pamięcią, może zostać przedłużony do nieskończoności, dopóki wszyscy nie będą musieli znać fizyki atomowej, aby „coś zrozumieć”.
MetricSystem,

7
Co więcej, jeśli ktoś ma tutaj argument słomkowy, to ty, biorąc pod uwagę, że nigdy nie słyszałem o żadnym programie CS, który prezentuje Javę tylko jako język programowania.
MetricSystem

Odpowiedzi:


30

To nie jest problem Java, to problem nauczania. Nie wiedząc, jak programować, nie jest to wina języków, to wina uczniów. To samo dotyczy wszystkich twoich problemów, GC, podstawowej wiedzy o maszynie, jak to działa „pod maską”, że tak powiem.

Wasza główna wada związana z odśmiecaniem śmieci rzuca mnie lekko. Chyba że robisz C lub C ++ odśmiecanie jest zwykle bardzo dobre i nie stanowi problemu. Czy wolelibyście wszyscy uczyć się montażu? Surowe języki wyższego poziomu są bardzo przydatne do nauczania. Zapewnia elastyczność bibliotek, pakietów i innych drobiazgów, gdy są potrzebne, bez mylącego języka „cukier” występującego w większości innych języków wyższego poziomu (PHP, Ruby, Python, Perl).


5
Nie twierdzę, że nie należy uczyć języków wyższego poziomu. Ale mówię, że należy nauczać także czegoś niższego poziomu (rzędu C, Fortran lub innego języka programowania systemów). (Zejście poniżej C jest mniej przydatne, ponieważ poniżej tego poziomu wszystko, czego się nauczysz, będzie specyficzne dla architektury pojedynczego komputera). Nie twierdzę, że wszystkie stopnie CS powinny być świetnymi programistami niskiego poziomu. Ale mówię, że w obliczu problemu niskiego poziomu nie powinni pluć i umrzeć, jak wszyscy uczniowie wokół mnie.
Billy ONeal,

3
@Billy: Zejście poniżej poziomu początkowego jest trudne. Patrzę na kod C ++ / C i dobrze się bawię, otaczając go głową. Nie oczekuj cudów, ale nie oczekuj też aniołów. Programiści muszą mieć napęd, brakuje im, że wszyscy „rozpryskają się i umierają” dość szybko, bez względu na poziom problemu.
Josh K

5
@Josh: Wystarczająco uczciwe, ale formalne narażenie IMHO na co najmniej jedno inne środowisko programowania powinno być koniecznością uzyskania dyplomu CS. Dyplom nie mówi „rozumiem Javę”, mówi „rozumiem CS”. Obie nie są takie same i nie można osiągnąć pełnego zrozumienia CS przy użyciu samej Javy (lub, w tym przypadku, dowolnego języka). (BTW, +1)
Billy ONeal

2
@JoshK: Niemożność debugowania na niskich poziomach i znacznie zmniejszona zdolność do prawidłowego rozumowania na temat skutków pisania kodu.
Mason Wheeler,

1
Znam programistów, którzy tylko nauczyli się języka Java i są przerażeni przez C ++ lub C, ponieważ muszą używać wskaźników. Nie wiem, czy ktoś, kto nie potrafi programować za pomocą wskaźników, może zostać uznany za prawdziwego programistę: w końcu wszystkie współczesne komputery i środowiska wykonawcze są nadal oparte na podstawowej architekturze obejmującej rejestry, pamięć główną, stos, stos. Wolę więc programować w Javie niż w C ++ (zdecydowanie łatwiej jest robić rzeczy, jeśli nie musisz przejmować się zarządzaniem pamięcią), ale zgadzam się, że nauczanie zdecydowanie nie powinno ograniczać się do Javy.
Giorgio

12

Czy uniwersytety naprawdę to robią? Czy jest to tylko postrzeganie, jakie ludzie dostają, gdy dostają złego kandydata do rozmowy kwalifikacyjnej?

Otrzymałem dyplom CS 4 lata temu i chociaż Java była używana w klasach wprowadzających, nie było to potem szczególnie podkreślane. Zasadniczo wymagane kursy podstawowe wymagały nauki Java, C, C ++, SML (funkcjonalny język programowania), asemblera, matlaba i CAST (język opisu obwodu). Nie bierze to pod uwagę wszystkich kursów matematycznych i teoretycznych CS oraz, oczywiście, pół tuzina fakultatywnych kursów CS, które wystawiłyby cię na wiele innych. Od rozmowy z przyjaciółmi na wielu różnych uniwersytetach nie brzmiało to tak, jakby to, co robili, było zupełnie inne.

Jeśli istnieją uniwersytety zajmujące się wyłącznie Javą, to rzeczywiście jest to tragedia. Nie dlatego, że Java jest zła, ale dlatego, że jest tylko jednym z wielu narzędzi, które powinny być dostępne dla programisty. Deweloper, który zna tylko Javę, jest odpowiednikiem stolarza, który wie tylko, jak używać młotka. Mam jednak problem z przekonaniem, że tak jest naprawdę, przynajmniej w przypadku poważanych uniwersytetów. Podejrzewam, że jest to tylko postrzeganie złych kandydatów i obwinianie szkoły za niekompetencję kandydatów, a nie własny brak motywacji / motywacji / ciekawości / profesjonalizmu itp.


2
Zgoda. Właśnie ukończyłem szkołę kilka lat temu i chociaż większość moich zajęć była prowadzona przy użyciu języka Java, ciężko było ukończyć je bez wzięcia udziału w zajęciach z języka C lub C ++, a także mieliśmy kurs języka programowania, który podkreślał użycie Haskell .
mipadi

W moim stopniu najpierw zrobiliśmy Pascal, a potem Javę jako nasz język OO. Jednak po drugim roku 90% profesorów nie obchodziło, jakiego języka używasz. Niektórzy z nas używali c / c ++ / ruby ​​/ C # / python / nawet haskell, ale większość ludzi trzymała się tego, co wiedzieli, java. Wymagana jest tylko garść kursów przy użyciu asemblera / c / c ++, a mianowicie rzeczy takie jak nasz kurs grafiki 3D (opcjonalnie) wstępnie wymuszony c / c ++ dla Opengl. I oczywiście podstawowy system wymuszał montaż SPARC (ponieważ celowo pracowaliśmy na niskim poziomie). Słyszałem, że przeszli na Python / c ++ już od pierwszego roku ...
Aren

11

Jestem naprawdę zaskoczony, że taka jest sytuacja wielu szkół. Kiedy uzyskałem dyplom CS, miałem serię kursów językowych, które obejmowały wszystkie popularne języki dnia (to było prawie 40 lat temu): asembler (Univac 1108 i MIX), FORTRAN IV, SNOBOL4, COBOL, Lisp i Algol 68. Nie wyobrażam sobie, aby uczyłem się tylko jednego języka. Lub jak mogłem docenić, co musiały zrobić kompilatory bez napisania programów asemblera.

W przypadku większości kursów danych i algorytmów korzystaliśmy z Algolu i FORTRAN. Chciałbym spędzić więcej czasu z Lispem - zamiast tego mieliśmy tylko wstęp i teraz próbuję ponownie nauczyć się niektórych pojęć. Użyliśmy SNOBOL4 do pisania parserów - a jego dopasowanie do wzorca z cofaniem zbudowało dobry fundament dla późniejszej pracy bibliotek regex zawartych w wielu współczesnych językach.

To wprowadzenie do pół tuzina języków wywołało we mnie zainteresowanie, które trwa do dziś.


8

Aby uzyskać prawdziwy powód, musisz zapytać ludzi, którzy zarządzają tymi instytucjami (a nawet wtedy mogą ci nie powiedzieć).

Kilka możliwych powodów (i nie bronię ani nie oskarżam nikogo tutaj, zgaduję):

Możesz robić rzeczy w Javie

Java to język ogólnego przeznaczenia i jako taki może być używany do rozwiązywania wielu problemów.

Wielu nauczycieli rozumie Javę

Trudno jest nauczyć języka, którego nie rozumiesz

Java jest popularna

Co oznacza, że ​​istnieje wiele zasobów Java - książek, aktywnej społeczności, bibliotek kodów itp.

Java jest łatwa

Nie musisz rozumieć wielu rzeczy lub teorii niskiego poziomu, aby robić Java. Możesz nie robić tego dobrze , ale przynajmniej możesz załatwić sprawę.

Java jest wszechobecna

Możesz uruchomić go mniej więcej na czymkolwiek.

Są zadania dla programistów Java

Istnieje wiele miejsc pracy, które wymagają Java - nauczyciele powinni przygotowywać uczniów do prawdziwego świata.

Jest ograniczony czas

Na wielu kursach nie ma czasu na nauczanie wielu języków, teorii, koncepcji niskiego poziomu itp.

Tego chcą studenci

Wielu studentów już słyszało o Javie (a nawet korzystało z niej). Lubią, bo jest znajomy.


6

O to prosił przemysł. Brakowało programistów Java, więc szkoły zaczęły je tworzyć. Firmy mają programistów, którzy mogą rozpocząć pracę, gdy tylko przejdą przez drzwi.

W każdym razie język nie ma znaczenia. Mogliby uczyć języka innego niż GC i nadal produkować złych programistów. Korzystanie ze szkół językowych stanowi szczegół implementacji. Szkoły powinny uczyć pojęć. Jeśli tak nie jest, problem stanowi szkoła, a nie język, w którym się uczą. To, że ktoś nie wie, czym jest wskaźnik, nie oznacza, że ​​nie może być skutecznym programistą.

GC i tak jest drogą przyszłości.


4
Nie musisz wiedzieć, co to jest wskaźnik. Ale musisz być w stanie stosunkowo szybko przyjąć tę koncepcję. Niezrozumienie wskaźników lub pojęć podobnych do wskaźników wskazuje na niezrozumienie informatyki jako całości. Nie twierdzę, że wszystkie stopnie CS muszą być niesamowitymi programistami niskiego poziomu, ale mówię, że powinni przynajmniej mieć koncepcyjne zrozumienie tego, co się dzieje, gdy otrzymają 4-letni dyplom uniwersytecki.
Billy ONeal,

1
CS nie polega na programowaniu.
Javier,

1
@Javier: Jak CS nie polega na programowaniu? Pewien, że istnieje gałąź CS, „Teoretyczne Computer Science”, który nie jest na temat programowania, ale dla większości to jest o programowaniu.
Billy ONeal,

1
@Billy ONeal: definicja wikipedii jest trochę długa, ale najbardziej zbliża się do programowania: „nauka praktycznych technik ich wdrażania”. to znaczy, nie chodzi o implementację (programowanie), ale badanie technik implementacji (algorytmy, struktury, języki itp.)
Javier

1
@Javier: Myślę, że „nauka programowania” i „akcja programowania” to jedno i to samo. W końcu kod jest odczytywany znacznie częściej niż jest zapisywany. Ale to nie ma znaczenia - kiedy uzyskasz dyplom CS, to, co skończysz, to programowanie.
Billy ONeal,

4

Lenistwo i motyw zysku. Java pomaga większości ludzi w 80% przy 20% wysiłku. Jednak często powoduje to koderów voodoo typu „małpa patrz małpa”, którzy nie mają głębokiego zrozumienia tego, co się dzieje, i nie są w stanie kopać głębiej niż narzędzia wysokiego poziomu.

Nauczenie C / C ++ poprawnie jest trudne. Nawet jeśli zrobione dobrze, wielu nie w pełni zrozumie koncepcje niskiego poziomu, takie jak wskaźniki (istnieją badania na ten temat). Co więcej, wydaje się, że nie ma to natychmiastowego znaczenia na rynku pracy.


2
Ale jeśli zrozumiesz wskaźniki, łatwiej zrozumiesz odniesienia.
Michael K

3

W większości się zgadzam, ale do pewnego stopnia.

Jeśli chcesz uczyć CS, zwróć uwagę na struktury danych lub algorytmy. Dobrze jest usunąć większość niepotrzebnych rzeczy. Nie chcesz, aby uczniowie radzili sobie z problemami niskiego poziomu podczas uczenia się koncepcji wysokiego poziomu.

Z drugiej strony należy także uczyć rzeczy na niskim poziomie. Właśnie dlatego mamy więcej wszechstronnych programistów.


Nie mówię o jednym kursie. Na pojedynczy kurs, w porządku. W przypadku całego programu nauczania tak nie jest.
Billy ONeal,

3

Jak zawsze chodzi o to, czego chcesz uczyć i ile czasu masz na to.

Robienie rzeczy w Javie oznacza, że ​​nie musisz radzić sobie ze zbłąkanymi wskaźnikami i free / malloc. Oznacza to znacznie mniej trudnych do znalezienia błędów.

Nie oznacza to, że nie powinieneś uczyć się o podstawowej maszynie - którą musisz być dobry w branży - ale być może powinieneś wybrać odpowiednie narzędzie do pracy. Algorytmy wysokiego poziomu nie są chyba najlepszym tematem na kurs asemblera.


W przypadku kursu wprowadzenia do programowania lub kursu dotyczącego struktur danych Java jest w porządku. Jednak nie przez cały 4-letni program nauczania.
Billy ONeal,

@Pałka policjanta. Zgoda. Wspominam tylko, że korzystanie z Java kupuje ci rzeczy, o które nie musisz się martwić. Powinieneś nauczyć się podstaw na innych kursach bez Java.

2

Czy to zbyt wiele, aby poprosić ich o nauczenie się, jak naprawdę działają komputery ? Nie ma dla mnie sensu, aby jakikolwiek zarys kursu CS nie zawierałby czegoś z systemów operacyjnych i komputerowej wykładu. Nie twierdzę, że powinieneś być w stanie zaprojektować komputer na odwrocie koperty, ale ogólny przegląd przedstawia wszystkie języki w odpowiednim świetle. Mam na myśli, że Java działa na maszynie wirtualnej!


1
Czy istnieją dobre programy informatyczne, które nie zawierają kursu systemu operacyjnego i kursu organizacji komputera?
mipadi

Mam nadzieję, że nie!
Michael K

0

Szczerze mówiąc, nie sądzę, że powinieneś tracić szacunek dla wszystkich stopni naukowych, a zwłaszcza CS, ponieważ jedynym nauczanym językiem jest Java.

Każdy przyzwoity komp. Student sci rozumie, że jego stopień CS to nic więcej niż kartka papieru i że prawdziwa wiedza będzie pochodzić z osobistych projektów i osobistych studiów. Chciałbym pomyśleć, że dobrzy studenci wiedzą, że muszą znać C i nauczyć się, jak załatwiać sprawy w Linux / Unix i nauczyć się, jak NIE trzymać ręki za pomocą nowoczesnych języków.


-1

Nie widzę problemu z używaniem Javy. Największym problemem (jak wspomniałeś) jest to, kiedy uniwersytety uczą programowania imperatywnego jako najlepszego i jedynego sposobu rozwiązania wszystkich twoich problemów. To jest bardzo dalekie od prawdy. Na przykład zamiast używać trzech imperatywnych języków (lub nawet najgorszego tego samego języka) dla trzech różnych kursów, powinni stosować trzy różne paradygmaty programowania. Przykładem jest Java (tryb rozkazujący), Prolog (deklaratywny) i Haskell (funkcjonalny).

Jeśli chodzi o to, dlaczego tak się dzieje, myślę, że jest to połączenie (1) polityki - przewodniczący nie są otwarci ani nie mają osobistych korzyści / sponsorów oraz (2) lenistwa - profesorowie byli kiedyś studentami i uczą tego, co wiedzą lub lubią.


-1

Calvin college w Grand Rapids Mi. Kiedy przeszli z Javy na Python na wstępne zajęcia z programowania, profesor z niedowierzaniem wspomniał o grupie pod koniec semestru: „Wielu z nich potrafi programować, to niesamowite”. Jego zdumienie kontrastowało z wcześniejszymi doświadczeniami z Javą. To nie sprawia, że ​​Java jest złym językiem, po prostu trudnym do opanowania od zera. Twierdziłbym to samo o C, C ++ lub dowolnym języku wymagającym dogłębnej znajomości schematów lub typów alokacji pamięci.


1
Eee, Python wymaga dogłębnej znajomości typów, podobnie jak innych języków, o których wspomniałeś.
Billy ONeal,

Oczekuję, że języków z tłumaczami ustnymi będzie o wiele łatwiej się nauczyć, ponieważ uczniowie mogą uzyskiwać informacje zwrotne po oświadczeniu, a nie po kompilacji.
kevin cline,

@BillyONeal Źle mnie odczytałeś, kontekstem było przydział pamięci w moim ostatnim zdaniu. Muszę się martwić o rozmiar lub liczbę elementów str () lub dict () lub krotki () lub list () lub set () ... Po prostu je „używam”.
Ben DeMott,

@kevincline Dzięki, Kevin - właśnie to chciałem przekazać. Sądząc po opiniach, muszę popracować nad umiejętnościami komunikacyjnymi;)
Ben DeMott,

-2

Uzyskałem dyplom inżynierii systemów komputerowych, więc studiowałem montaż, mikroprocesory, VHDL, jakie są bramki logiczne i jak z nich stworzyć flip-flop, studiowałem obwody elektryczne, wzmacniacze operacyjne, filtry dolnoprzepustowe, amplitudę modulacja, zbudował obwód w laboratorium, który brzmiałby jak klawiatura telefonu, pomieszany z analizatorem logicznym, wziął kilka zajęć z fizyki. Po stronie Linuksa - skompilowałem wcześniej jądro, napisałem mały sterownik urządzenia i system plików zadań domowych.

Ale potem zdałem sobie sprawę, że bardziej lubię więcej rzeczy na wysokim poziomie. Wolę Python od C. Lubię C # i uwielbiam śmietnik. Lubię matematykę, algorytmy i struktury danych, ale nie jestem szczególnym fanem wskaźników - mogę z nimi zadzierać; Po prostu nie chcę.

Uważasz więc, że uniwersytet powinien uczyć więcej C, mniej Java. Ktoś inny uważa, że ​​powinien uczyć wszystkiego w systemie. Spolsky weźmie oba.

Tak, prawdą jest, że dyplom uniwersytecki to tylko kartka papieru, ale „nie pozwól, aby edukacja przeszkadzała w edukacji”. Zawsze istnieje Wikipedia, Stack Overflow, Coursera.org itp. Wygląda na to, że tradycyjne uniwersytety staną się mniej ważne.

Gdybym mógł zrobić licencjat, to poszedłbym do innej szkoły, nie studiowałbym żadnych elektrotechniki, a raczej matematykę, CS + moll z fizyki i francuskiego. Scratch French; Powinienem był uczyć się za granicą w Szwajcarii i uczyć się w tym czasie 5 języków naturalnych. Chciałbym też wrócić i znaleźć osobę, która mnie przekonała, że ​​absolutnie muszę wziąć udział w zajęciach ekonomicznych na studiach, aby przetrwać w prawdziwym świecie i uderzyć go w głowę moją kolekcją książek Miltona Friedmana (tylko kilka książki na temat ekonomii, które czytam, które nie są do kitu). Nie zapłaciłbym także za książkę Freakonomics 1 lub książkę o języku Perl.

Z perspektywy czasu zrobiłbym wiele rzeczy inaczej. Wszystko, co mogę teraz zrobić i polecam to, to wybrać własną przygodę: http://www.codinghorror.com/blog/2008/03/choosing-your-own-adventure.html

Z perspektywy czasu zarobiłbym do tej pory 100 miliardów dolarów na giełdzie i zainwestowałbym to w badania nad rakiem, zatrudniłbym naukowców, aby pozbyli się świata plastikowych odpadów; Przekazałbym wystarczającą ilość pieniędzy na kampanię Rona Paula, aby wojna na Bliskim Wschodzie miała miejsce ponad 3 lata temu.

Rozpoznaj teraz, że nigdy nie odzyskasz swojego czasu, więc staraj się go mądrze wykorzystywać.


Downvoters, proszę rozwinąć.
Job

-2

Kilka lat temu czytałem gdzieś, że w Wielkiej Brytanii podjęto decyzję o Javie, aby zachęcić więcej studentów do programowania. Najwyraźniej było to łatwiejsze dla mózgu z powodu braku nieprzyjemnych wskazówek i zarządzania pamięcią itp. Domyślam się, że właśnie dlatego Python jest szybko adoptowany jako nowe „narzędzie do nauki”. Byłbym zdania, że ​​twój typowy kurs uni nie uczyni cię programistą. Wystarczy uzbroić cię w pewną wiedzę i przygotować do programowania. Dzień, w którym można się nazywać programistą, zwykle przychodzi dość długo po uni, a kiedy nadchodzi, wskaźniki, zbieranie śmieci i paradygmaty programowania inne niż OOP nie powinny stanowić problemu.


-2

Dlaczego używana jest Java?

Trzy powody:

  1. Java używa składni w stylu C. Wielu programistów zna go, więc zmniejsza to krzywą uczenia się.

  2. Pieniądze wydano na promocję Javy jako fajnej i nowoczesnej. Ale w porównaniu do seplenia java żyje w epoce kamienia łupanego.

  3. JVM. JVM to jedna fajna rzecz w Javie, która jest legalna, nie tylko marketingowy szum. Chociaż JVM należy chwalić jako platformę do uruchamiania programów, sam w sobie nie zasługuje na istnienie języka Java. Możesz teoretycznie i praktycznie skompilować wiele różnych języków dla JVM.


1
Witamy. Wygląda na to, że może to być twój pierwszy post dla programistów stosu wymiany. Zajrzyj na stronę faq programmers.stackexchange.com/faq, aby uzyskać porady dotyczące reputacji, zadawania pytań i odpowiadania na nie. Kluczową kwestią jest to, że odpowiedzi powinny być pouczające, a nie prowokujące. Jeśli stwierdzisz, że Java to epoka kamienia, a Lisp jest nowoczesny, wyjaśnij dlaczego. Wielu czytelników może wiedzieć, że Lisp został wymieniony w 1958 roku i jest tylko nieco młodszy niż FORTRAN. Jeśli chcesz powiedzieć, że coś o Javie, która jest współdzielona z FORTRAN lub Algolem, wpływa na jego projekt i ogranicza go, opisz to.
DeveloperDon

-3

Twoje pytanie potwierdza ustalenia innej osoby, która napisała artykuł stwierdzający, że Java jest tak fajna, ale niewystarczająco ciężka do naukowego przetwarzania. Myślę, że powinien po prostu używać Big Decimal ze wszystkimi jego dokładnymi dokładnościami, sieciami NAN itp. I zaczynać.

Chcę żyć tylko w świecie automatycznych śmieci. Jest zdrowszy, czystszy, schludniejszy, estetyczny, zapobiega marnowaniu pieniędzy na wydatki zdrowotne, jest bardziej pożądany - nie trzeba oznaczać czegoś jako niechcianego - po prostu usuwając z niego odniesienie lub ustawiając go na zero lub gdy wychodzę poza zakres, przedmiot dostaje się automatycznie oznaczono do śmieci.

Ok, teraz mówię tylko o Javie, ale byłoby to najbardziej pomocne, gdyby działało to również w prawdziwym scenariuszu śmieci. Java jest pisana raz uruchamiana w dowolnym miejscu, co jest dla mnie wystarczająco dobre, aby używać jej jako języka w szkołach. Brak wycieków pamięci i bycie lubianym przez szczęśliwych programistów, którzy nie chcą tracić czasu na oznaczanie każdego obiektu, którego używają i przestają się używać, jest dobrą logiką w imieniu Java.

Java ma wskaźniki - no to nazywamy je referencjami. String s1 = "Hello"; String s2 = "Hello"; String s3 = new String („Hello”);

s1 i s2 będą wskazywać na ten sam obiekt String - który jest przez odniesienie s1 == s2, s1.equals (s3), ale s1 == s3 jest fałszem, ponieważ s3 jest nowym obiektem odniesienia - jest to arytmetyka java odwołań, a ja rozumiem to wszystko bardzo przepraszam, nie chcę być oznaczony jako ktoś, kto nie rozumie ukrytych zawiłości arytmetyki wskaźników z C lub C ++.


2
Referencje nie są wskaźnikami. Nie można ich używać arytmetycznie i nie można ich używać do ponownej interpretacji fragmentu pamięci, na który wskazują. I oczywiście, bez względu na to, jak bardzo chcesz żyć w świecie śmieci, faktem jest, że świat nie jest światem śmieci. Nie twierdzę, że Java jest złym językiem lub że ludzie nie powinni używać java. Jeśli ci się podoba, użyj go, są w tym świetne rzeczy. Po prostu uważam, że jest nieodpowiedni jako język dla początkujących, ponieważ ukrywa rzeczy niezbędne dla nowych programistów do zrozumienia.
Billy ONeal
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.