CodeGym/Java-blogg/Tilfeldig/Ble sittende fast? De vanskeligste delene av å lære Java ...
John Squirrels
Nivå
San Francisco

Ble sittende fast? De vanskeligste delene av å lære Java og hvordan du kan overvinne dem

Publisert i gruppen
Som du vet anbefaler vi å kode nybegynnere til å begynne å lære programmeringsspråk med Java, og CodeGym har alt for å gjøre prosessen med å lære Java fordøyelig selv for de mest uforberedte elevene. Men så mye som gamification-elementer, lettfattende historier og morsomme karakterer bidrar til å lette denne prosessen, er det sjelden å lære det grunnleggende om Java i sin fulle grad uten utfordringer for de fleste nye elever. Ble sittende fast?  De vanskeligste delene av å lære Java og hvordan du kan overvinne dem - 1I dag skal vi ta en titt på noen av de tøffeste områdene innen Java-programmering, og prøve å forstå hvorfor mange synes det er vanskelig og om det er noe du kan gjøre med det.

1. Generiske legemidler

Generiske i Java er typer som har en parameter. Når du oppretter en generisk type, spesifiserer du ikke bare en type, men også datatypen den skal fungere med. Generikk blir ofte nevnt av Java-elever som en av de vanskeligste delene av Java for dem å forstå. "Mitt hovedproblem er fortsatt å håndtere Generics. Det er mye enklere når du har metoder med parametere å følge, men det blir forvirrende når du må skrive din egen, sa en anonym Java-lærer.

Tips og anbefalinger

Her er en mening om Generics in Java fra Ravi Reddy, en erfaren programmerer og universitetsprofessor: «Java Generics gjør én ting som C++-maler ikke gjør – implementer typesikkerhet. Implementeringen av C++-maler er et enkelt pre-prosessor-triks og sikrer ikke typesikkerhet. Generikk i Java er som C++-maler, men med ekstra typesikkerhet. Og IMHO, typesikkerhet er en viktig funksjon i ethvert godt utviklingsmiljø. Og ja! De kan være forvirrende på grunn av våre mentale skift mellom parametrene og typene. Men jeg tror at det er verdt innsatsen å bruke tid på å mestre dem. Fordi jeg fant meg selv "tenke" mye bedre i Java når jeg hadde forstått grensesnitt og Generics."

2. Multithreading

Multithreading i Java er en prosess for å kjøre to eller flere tråder samtidig for å oppnå maksimal utnyttelse av CPU av applikasjonen. Multithreading løser svært viktige oppgaver og kan gjøre programmene våre raskere. Ofte mange ganger raskere. Men det anses å være et av temaene der mange ferske Java-elever har en tendens til å bli sittende fast på. Alt fordi multithreading også kan skape problemer i stedet for å løse dem. Det er to spesifikke problemer som multithreading kan skape: dødlås og løpsforhold. Deadlock er en situasjon der flere tråder venter på ressurser som holdes av hverandre, og ingen av dem kan fortsette å kjøre. En løpsbetingelse er en designfeil i et multithreaded system eller applikasjon, hvor driften av systemet eller applikasjonen avhenger av rekkefølgen som deler av koden utføres i.

Tips og anbefalinger

Her er en god anbefalingom hvordan man håndterer multithreading fra S.Lott, en programvarearkitekt og aktiv bruker av StackExchange, et populært nettsted for spørsmål og svar: «Multi-threading er enkelt. Å kode en applikasjon for multi-threading er veldig, veldig enkelt. Det er et enkelt triks, og dette er å bruke en godt utformet meldingskø (ikke rull din egen) for å sende data mellom tråder. Den vanskelige delen er å prøve å få flere tråder til på magisk vis å oppdatere et delt objekt på en eller annen måte. Det er da det blir utsatt for feil fordi folk ikke tar hensyn til løpsforholdene som er tilstede. Mange bruker ikke meldingskøer og prøver å oppdatere delte objekter og skape problemer for seg selv. Det som blir vanskelig er å designe en algoritme som fungerer godt når data sendes mellom flere køer. Det er vanskelig.

3. Klassebaneproblemer

Klassebanefeil anses også å være et av de mest klagede problemene Java-utviklere står overfor i sitt daglige arbeid. "Klassebaneproblemer kan være tidkrevende å feilsøke og har en tendens til å skje på verst mulig tider og steder: før utgivelser, og ofte i miljøer der det er liten eller ingen tilgang for utviklingsteamet. De kan også skje på IDE-nivå og bli en kilde til redusert produktivitet, sier Vasco Ferreira, en erfaren Java/Javascript-utvikler og forfatter av programmeringsrelaterte opplæringsprogrammer.

Tips og anbefalinger

"Klassebaneproblemer er ikke så lavt nivå eller utilnærmelige som de kan virke med det første. Det handler om at zip-filer (jars) er tilstede/ikke til stede i visse kataloger, hvordan man finner disse katalogene og hvordan man feilsøker klassebanen i miljøer med begrenset tilgang. Ved å kjenne til et begrenset sett med konsepter som klasselastere, klasselasterkjeden og foreldrenes første / siste foreldres modus, kan disse problemene løses effektivt, forklarer eksperten.

4. Polymorfisme og riktig bruk

Når det kommer til prinsipper for OOP, sier mange at de hadde vanskelig for å forstå polymorfisme. Polymorfisme er et programs evne til å behandle objekter med samme grensesnitt på samme måte, uten informasjon om objektets spesifikke type. Til tross for at polymorfisme er et ganske grunnleggende emne, er det ganske omfattende og utgjør en god del av Javas grunnlag. For mange studenter er polymorfisme en første vanskelighet i å lære Java. Alt fordi det er forskjellige former for polymorfisme som brukes i forskjellige sammenhenger, noe som kan være forvirrende.

Tips og anbefalinger

Det er ingen annen måte å håndtere polymorfisme enn å lære det. Slik forklarer Torben Mogensen, som underviser i programmering ved Københavns Universitetdette konseptet: «Enkel overbelastning: + kan bety både heltallsaddisjon, flyttallsaddisjon og (på noen språk) strengsammenkøyning. Subtype polymorfisme: Hvis B er en undertype av (arver fra) A, kan enhver verdi av type B brukes i en kontekst som forventer en verdi av type A. Parametrisk polymorfisme: En type kan parameteriseres med typeparametere, slik at du i forskjellige kontekster kan levere forskjellige typeargumenter, så du instansierer den parameteriserte typen til forskjellige konkrete typer. Dette kalles også "maler" eller "generiske" og er på OO-språk typisk spesifisert ved hjelp av vinkelparenteser (som T<A>). Interface polymorfisme. Dette er i utgangspunktet en mekanisme der du begrenser subtype polymorfisme til subtyper som implementerer et visst grensesnitt eller parametrisk polymorfisme til typeparametere som implementerer et bestemt grensesnitt."

5. Refleksjon

Refleksjon er en mekanisme for å utforske data om et program mens det kjører. Refleksjon lar deg utforske informasjon om felt, metoder og klassekonstruktører. Den lar deg også jobbe med typer som ikke var til stede på kompileringstidspunktet, men som ble tilgjengelige under kjøretiden. Refleksjon og en logisk konsistent modell for utstedelse av feilinformasjon gjør det mulig å lage korrekt dynamisk kode. Men for mange mennesker er det ikke så lett å finne ut hvordan man bruker Reflection.

Tips og anbefalinger

"I tilfelle av refleksjon og Java, tillater refleksjon at Java, som er designet for å skrives statisk, kan skrives dynamisk. Dynamisk skriving er ikke iboende ondt. Ja, det lar programmereren bryte visse OOP-prinsipper, men samtidig tillater det mange kraftige funksjoner som runtime proxying og avhengighetsinjeksjon. Ja, Java lar deg skyte deg selv i foten ved hjelp av refleksjon. Du må imidlertid meget eksplisitt peke pistolen mot foten din, ta av sikkerheten og trykke på avtrekkeren,” forklarer Jayesh Lalwani, en erfaren Java-programmerer og applikasjonsarkitekt.

6. Inn-/utdatastrømmer

Strømmer lar deg jobbe med hvilken som helst datakilde: Internett, datamaskinens filsystem eller noe annet. Strømmer er et universelt verktøy. De lar et program motta data fra hvor som helst (inndatastrømmer) og sende dem hvor som helst (utdatastrømmer). Oppgaven deres er den samme: å ta data fra ett sted og sende det til et annet. Det er to typer strømmer: inndatastrømmer (brukes til å motta data) og utdatastrømmer (for å sende data). Det som gjør det vanskelig for mange mennesker å forstå bruken av strømmer, er det faktum at Java har flere I/O-strømklasser.

Tips og anbefalinger

"Java har så mange I/O-strømklasser hovedsakelig på grunn av to medvirkende faktorer. Først er arv. Noen klasser er fortsatt der av historiske årsaker, og de er ikke avviklet siden de ikke anses som skadelige. For det andre, fleksibilitet. Ulike applikasjoner har forskjellige krav, og derfor har du flere alternativer avhengig av dine behov. Nyttige abstraksjoner gir klarhet når du leser det, og med få linjer med kode kan du gjøre mye, sier Jonas Mellin, en Java-ekspert fra Sverige. Hvilke aspekter ved Java syntes du var vanskeligst å forstå eller satt du fast på en stund? Del dine erfaringer i kommentarene.
Kommentarer
  • Populær
  • Ny
  • Gammel
Du må være pålogget for å legge igjen en kommentar
Denne siden har ingen kommentarer ennå