mboost-dp1

Hjælp en nybegynder.


Gå til bund
Gravatar #1 - Hithlum
16. apr. 2010 16:15
Hejsa alle sammen, jeg er spritny bruger af newz og ville lige høre ind til om i har nogen forslag til gode sider/bøger der kan introducere mig til at skrive i Java på et helt begynder niveau. (:
På forhånd tak for hjælpen.
Gravatar #2 - arne_v
16. apr. 2010 16:23
To relevante sider er:

http://java.sun.com/docs/books/tutorial/
http://javabog.dk/

Jeg er ikke uptodate med hvad der er gode begynder bøger. Formentligt er det bedst at gå efter en anerkendte pædagigisk forfatter (Horton, Eckel, Schildt etc.).
Gravatar #3 - squad2nd
16. apr. 2010 16:31
Gravatar #4 - arne_v
16. apr. 2010 16:38
#3

O'Reilly og Wrox bøger er normalt gode.

Jeg er dog ikke sikker på at Wrox Professional matcher "introducere ... helt begynder niveau".

Normalt gælder det at for Wrox at:

Professional Xxxx er for dem som kan Yyyy og Zzzz og skal have fakta i komprimeret form.

Beginning Xxxx er for dem som ikke kan nogle andre sprog/teknologier og skal have forklaret det hele fra bunden af med masser af screen dumps.
Gravatar #5 - Hithlum
16. apr. 2010 16:51
Mange tak alle sammen : D
#3-4 Jeg vil starte med java som mit første sprog og så arbejde mig op derfra.
Gravatar #6 - squad2nd
16. apr. 2010 18:52
#3

Jeg er dog ikke sikker på at Wrox Professional matcher "introducere ... helt begynder niveau".


Det gør den heller ikke, den står som nummer 3 på listen. Den går dybere ned i de almene features fra version 5-6 og introducerer lidt flere hands-on topics og en god gennemgang af tools og design patterns.

Jeg husker bare, at da jeg startede som programmør, så var der for mange bøger som bare introducerede sproget og tilhørende API's, men ingen havde best practices eller fortalte hva faen de skulle bruges til. Man fik altså ikke et overview.

Men på listen, dét skal den! :)
Gravatar #7 - arne_v
16. apr. 2010 18:59
#6

Ah. Rækkefølge var læse-rækkefølge (først til sidst) ikke vurderings-rækkefølge (bedst til mindst god).
Gravatar #8 - onetreehell
17. apr. 2010 06:22
Core java bøgerne er også rigtig gode når man godt kan programmere lidt.
Gravatar #9 - qed
18. apr. 2010 16:27
Jeg vil anbefale dig Bamse og Kylling.

Alle, der starter på en naturvidenskabenlig uddannelse på Århus Universitet, skal have kurset Introduktion til Programmering, hvilket vil sige at selv folk med en meeeget lidt teknisk baggrund skal introduceres til Java-programmering. I kurset benyttes ovenstående bog. Den er meget pædagogisk og den lærte nogle af mine holdkammerater at programmere, selvom de ikke havde oddsne med sig. ;-)
Gravatar #10 - arne_v
18. apr. 2010 17:35
#9

Der er mange som er glade for BlueJ, men jeg er altså lidt skeptisk overfor den.

Der er mange som har lært "Java" med den som ikke aner noget som helst om hvordan man programmerer i Java.

Det er muligt at jeg er gammeldags, men jeg er stadig tilhænger af:
1) man starter med en helt normal editor og builder command line for at lære javac, java, classpath etc.
2) man switcher til en rigtig IDE (Eclipse, NetBeans etc.) for at blive mere produktiv
3) man begynder at bygge med ant og kun bruge IDE som editor
Gravatar #11 - qed
18. apr. 2010 17:52
arne_v (10) skrev:
Der er mange som har lært "Java" med den som ikke aner noget som helst om hvordan man programmerer i Java.


Ja, jeg kan godt se din pointe. Måske bruger de BlueJ på universitetet fordi det er fint nok for de fleste, som følger kurset. Geologer, fysikere osv. behøver nok ikke at lære om rigtige IDE'er.

Jeg foreslog Barnes og Kölling fordi jeg mener, det er en fin måde hurtigt at få nogle successoplevelser med at programmere. Der var i hvert fald nogle ikke-tekniske piger fra mit hold, som lige pludselig fandt det meget sjovt at skrive programmer i BlueJ.

Hvis #0 mener det seriøst, så skal han nok lære om ant, javac osv. uanset om han starter med BlueJ eller hvad han gør, tror det er vigtigere at man hurtigt føler, at det bliver til noget.

Endvidere tror jeg, at den måde objekter bliver visualiseret i BlueJ gør det nemmere for nybegyndere at forstå den objekt orienterede tankegang.
Gravatar #12 - onetreehell
18. apr. 2010 18:01
Jeg ved egentlig ikke hvor godt java og andre OO-sprog er for en nybegynder. Da jeg lærte at programmere i java (jeg havde ikke lavet så meget andet i forvejen, og det var lidt sporadisk), havde jeg svært ved at forstå det med objekter. Jeg tror det kan gøre det unødigt komplekst.
F. eks. kan man spørge sig selv hvorfor man skal skrive
public class Something {
public static void main(String... args) {...} //Jeg ved ikke hvorfor newz.dk vil smide det ned på en ny linie. Pissetræls
}

for overhovedet at skrive Hello World. Og hvorfor skal man skrive System.out.println(...); for at skrive til stdout?
Hvis man skal forklare det, begynder det at blive RET indviklet for et første program.

#10
Jeg kender en på datalogi som jeg udfordrede til at compile det han skrev i java fra commandlinen. Det kunne han simpelthen ikke finde ud af! For det første var der problemer med Windows, nemlig at man ikke bare kan skrive javac SourceFile.java uden først at lave nogle tricks. Men det er så det; han kunne heller ikke finde ud af at sætte classpath op!
IDEer som eclipse og netbeans kan nemt skjule detaljer som faktisk er (meget) relevant for nybegyndere. Så jeg tilslutter mig at man kun skal bruge en IDE af den type når man godt ved hvad der sker "under the hood".
Han forstår heller ikke hvordan jeg kan programmere i gedit og vim. "Hvad gør du uden auto-completion?!". Han importerer også bare det første og det bedste i eclipse uden nogen tanke.


Jeg synes BlueJ egentlig er god til at vise hvordan det objekt orienterede virker. På den måde synes jeg det er fint nok. Så vidt jeg husker gav den nogle gange nogle underlige compiler-fejl. Måske husker jeg forkert..
Gravatar #13 - squad2nd
18. apr. 2010 19:52
#12

F. eks. kan man spørge sig selv hvorfor man skal skrive
public class Something for overhovedet at skrive Hello World.


Sådan er nogen sprog, herunder Java designet. Det virker måske som overkill til små programmer, og dertil kan jeg da personligt anbefale Python fx, hvis du vil skrive quick n' dirty programmer. Men du kommer sateme ikke udenom om den OOP agtige måde at tænke på, og du kommer til at sætte pris på den jo større projekterne bliver. Læs en bog om OOP og du vil få et større indblik.


Og hvorfor skal man skrive System.out.println(...); for at skrive til stdout?


Det behøver du egenligt heller ikke. Siden Tiger (1.5) har der været en shortcut til at skrive statiske metoder...



import static java.lang.System.out;

public class CalculateTaxOnPinkDildo{
public static void main(String[] args) {
out.println("Hello newz.dk!");
}
}



Jeg kender en på datalogi som jeg udfordrede til at compile det han skrev i java fra commandlinen. Det kunne han simpelthen ikke finde ud af!


Ikke alle der studerer datalogi er ligegode, det samme gælder for datamatikere. Jeg er datamatiker, MEN kan dog sagtens finde ud af at compile fra kommando-prompten! (dog helst fra Ant) :-P
Gravatar #14 - arne_v
18. apr. 2010 20:25
squad2nd (13) skrev:

Sådan er nogen sprog, herunder Java designet. Det virker måske som overkill til små programmer, og dertil kan jeg da personligt anbefale Python fx, hvis du vil skrive quick n' dirty programmer.


Og det kan faktisk nemt blive mere grumset ved det nemme.

Eksempel:

C.groovy


class C {
}

o = new C()


Indrømmet - fejlbeskeden er rimeligt god.
Gravatar #15 - onetreehell
19. apr. 2010 08:26
#13
Sådan er nogen sprog, herunder Java designet. Det virker måske som overkill til små programmer, og dertil kan jeg da personligt anbefale Python fx, hvis du vil skrive quick n' dirty programmer. Men du kommer sateme ikke udenom om den OOP agtige måde at tænke på, og du kommer til at sætte pris på den jo større projekterne bliver. Læs en bog om OOP og du vil få et større indblik.

Jeg har udmærket styr på OOP nu, tak :)
Problemet, som jeg ser det, er at OOP tit ikke gavner for f. eks. en fysiker der kun skal bruge programmering til at lave beregninger.

Det er rigtigt nok at du kan importere printstreamen fra System. Men det er dårlig stil, da man på den måde skjuler hvilken printstream man bruger. Og det gør det jo ikke simplere for en nybegynder, for spørgsmålet om hvad System er (og hvad out er) er der stadig.

Det er jo sådan set heller ikke så svært at compile fra commandline. Der er bare nogen der aldrig rigtigt lærer det fordi det bliver pakket for meget ind i en IDE, og det er skadeligt, mener jeg.
Gravatar #16 - squad2nd
19. apr. 2010 11:52
#15

Jeg har udmærket styr på OOP nu, tak :)

Det var nu ikke ment som at belære dig. :)

Men indrømmet, det er *trods alt* en anelse mere nemt at programmere idag end det var da C og C++ havde føringen, omendt der er lagt meget mere fokus på OOP og arkitektur.

Gravatar #17 - illishar
19. apr. 2010 12:00
Personligt er jeg stor tilhænger af, at købe papir-udgaven af Javabog.dk. Danske bøger (hvis de findes) indeholder generelt meget mindre BS og er derfor rare, når man skal lære noget nyt.
Når du har tygget den igennem et par gange og skal til 1337-tingene, så vil Google lære dig resten ;)
Gravatar #18 - Windcape
19. apr. 2010 12:51
#17

Man kan låne dem på biblioteket :-) (Hvilket er et godt alternativ til at købe bøger til 3-400 kr. stykket)
Gravatar #19 - arne_v
19. apr. 2010 19:30
#17

Generelt synes jeg bare at niveauet i danske bøger er for dårligt sammenlignet med bøger på udenbysk.
Gravatar #20 - røvskæg
19. apr. 2010 19:50
onetreehell (15) skrev:
Jeg har udmærket styr på OOP nu, tak :)
Problemet, som jeg ser det, er at OOP tit ikke gavner for f. eks. en fysiker der kun skal bruge programmering til at lave beregninger.


En fysiker der skal lave modeller, har da netop meget stor glæde af OOP.

Det kan godt være du har styr på OOP, men er du sikker på du også tænker OO.

Man kan jo sagtens lave alle programmer uden brug af OOP, men i de fleste tilfælde kan det gøre opgaven langt mere simpel. Det kræver dog man ser opgaven fra den rigtige vinkel.
Gravatar #21 - arne_v
19. apr. 2010 20:09
#20

Min erfaring er at scientific computing ofte klarer sig glimrende med procedural programmering.

Flere årsager:
- matematik er ikke specielt objekt orienteret i natur
- maintenance/udvikling er langt lavere i scientific computing end i business computing og derfor er der ikke det samme behov for encapsulation etc.
Gravatar #22 - røvskæg
19. apr. 2010 20:17
#21
OK, Rasmus Modsat.
Gravatar #23 - onetreehell
19. apr. 2010 20:20
#20
Det kan godt være du har styr på OOP, men er du sikker på du også tænker OO.

Ja, når jeg skriver OO. Hvilket jeg oftest gør, men ikke altid.
Min kritik går ikke på OOP per se, men at nybegyndere ikke har det største krav til nemt at kunne vedligeholde sine programmer (hello world?) eller kunne modellere store komplekse systemer (eller watever).

Det er lidt et problem, synes jeg, at folk tænker OO på ALTING! Også selvom det slet ikke er relevant. OOP har masser af forcer, men... det er altså ikke altid det eneste rigtige valg til enhver given situation.
Gravatar #24 - arne_v
19. apr. 2010 20:27
#23

Og slet ikke ved små programmer.

For 20 år siden var jeg af den opfattelse at OOP kun var en fordel ved programmer > 5000 linier.

OOP har udviklet sig siden. Idag ville jeg nok snarere sætte grænsen ved 500 linier.
Gravatar #25 - arne_v
19. apr. 2010 20:38
røvskæg (22) skrev:
OK, Rasmus Modsat.


Har du erfaringer med fysik og OOP som er anderledes?

Jeg forbinder fysik og programming med Fortran, LAPACK, BLAS og den slags.

Men ting kan have ændret sig siden jeg forlod academia.

Gravatar #26 - røvskæg
20. apr. 2010 05:10
#25
Jeg tænker på modellering af fx. kaotiske systemer.

Hvad enten det er til avanceret lineær algebra, eller mere simpel vector regning, vil jeg da mene, der med fordel kan benyttes OOP.

OOP kan i flere tilfælde erstatte lineær algebra. Om der er en god ide ved jeg ikke.

Så vidt jeg ved, så undervises fysikstuderende i java med henblik på bla. simulering.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login