- disposable
- Medlem ●
- Avesta
Jag är ganska säker på att frågan har varit uppe förut, men jag skulle gärna vilja ha lite uppdaterade tips. Jag är nybörjare, och det närmaste jag varit programmering är HTML, en Hello World med PHP och lite CSS-snickrande. Vilket språk borde jag då välja? På Sweclockers säger de C#, C++ eller Java. Och här verkar Java vara det föredragna nybörjarspråket.
Vad behöver jag för att komma igång med att lära mig, och börja knacka kod, i Java?
Skulle gärna vilja ha tips om:
1. Nyttiga och bra sidor med tutorials och tips (förutom Suns egna referensmanualer)
2. Bra (svenska) böcker om javaprogrammering?
3. En bra textredigererare?
... och fjärde frågan: Vilken API bör jag använda? XCode? Eftersom jag inte någonstans i huset kan hitta min Tigerskiva, misstänker jag att jag inte har tillgång till det programmet. Eller kan man ladda ner XCode någonstans?
–> Vilka andra program/API föredrar ni?
Som sagt, jag är nybörjare och egentligen uppskattas alla svar och tips om hur jag smidigast kommer igång med Java Tack på förhand.
... och fjärde frågan: Vilken API bör jag använda? XCode? Eftersom jag inte någonstans i huset kan hitta min Tigerskiva, misstänker jag att jag inte har tillgång till det programmet. Eller kan man ladda ner XCode någonstans?
IDE antar jag att du menar, API är något annat. Eclipse är bra, gratis och populär. Ladda ned på http://www.eclipse.org/downloads/index.php
Om det är programmering för Mac som du är specifikt intresserad av, skulle jag satsa på kombinationen Cocoa, Objective-C och Xcode.
Annars skulle jag satsa på vanlig standard Java om jag var du. För att lära sig grunderna duger Xcode bra. Finns dock andra mer kompletta utvecklingsverktyg för Java att ladda ner eller köpa.
Om det är grafik- och spelprogrammering du är intresserad av, så är troligen C++ tillsammans med Xcode och OpenGL det bästa valet för dig. Om du kan C++ kan du även lära dig utveckla vanliga Macprogram med Carbon.
Eftersom både Objective-C och C++ är utökningar av C, kan det vara bra att först lära sig lite grundläggande C-programmering.
Xcode kan du ladda ner från Apple Developer Connection om du registrerar dig som online-medlem (gratis). Där kan du även hitta svar på det mesta inom Macprogrammering.
http://developer.apple.com/
Det finns ett flertal böcker på svenska om grundläggande programmering i C, C++ och Java. Lämnar dock över bollen till andra för att ge konkreta tips.
Tänk på att mer avancerade böcker, samt specifika böcker om Macprogrammering i princip bara finns på engelska.
Okej, tack för väldigt bra svar Att börja med C verkar vara en ganska vettig idé. Men tips på bra sidor uppskattas varmt Till exempel hur man steg för steg bygger något (ytterst) enkelt program... Tror att man kan lära sig mycket med den metoden.
Lär dig Java utan förkunskaper och ha kul samtidigt?
Det går med boken Head First Java
Boken antar att du skriver i ren text och kompilerar i terminalfönstret. Men det blir enklare att använda med en käck utbildningsmiljö för java. Prova BlueJ som förklara sig självt.
MR
Jag är rätt partisk, men av de språken jag arbetat med så tycker jag att Java är grymt fett. Och skall du sätta igång med nånting så tycker jag att du skall välja ett objektorienterat språk direkt, d.v.s rekommenderar jag dig inte C utan hellre C++ eller Java. I de flesta C++ böcker så brukar de ta upp själva C delen i C++'en också så jag skulle nog inte säga att det är bäst att börja med C innan du sätter igång med C++. Bättre att köra på C++ direkt, i min mening.
Det beror som sagts innan på vad det är för sorts program du skall utveckla. Skall man bygga saker som behöver gå riktigt snabbt och effektivt så skall man ju skriva i C och C++ eftersom du har mycket mer kontroll över hårdvaran då. Dock så krävs det ju att man har koll på hur man skall optimera och sånt. Det känns som om att C och C++ ibland kan vara lite väl avancerade, i alla fall C++, eftersom det innehåller pekare (för att kunna allokera objekt och variabler vid körning) dessa måste man städa bort annars så kommer minnet att bli överfullt med massa data som ändå inte används (så kallad minnesläcka). Java har en grej som heter garbage collector (sophämtare) som atomatiskt tar hand om att städa upp objekt som inte längre används, därför får man inga minnesläckor på i java.
Skall man göra enklare webbsidor och sånt så kanske java är overkill i vissa fall. Själv skulle jag nog säga att Java är ett språk att växa i, man kan ju göra enkla eller fett avancerade saker med java också så man kan lägga det på den nivån som passar en själv. Du kan göra vanliga skrivbords applikationer om du vill som funkar både på Windows, Linux och Mac. Du kan göra webbprogrammering med det både enklare sidor (ungefär som php sidor) eller feta EJB application servers och använda andra mer avancerade bibliotek.
En sak som jag tycker är schysst med java är att de flesta grejerna man behöver är helt gratis. Om du t.ex. vill programmera för webben så är tomcat en helt gratis "webbserver" för att skriva JSP och servlets (webbprogrammering i java). Problemet verkar dock vara att det inte verkar finnas så jättemånga webbhotell som erbjuder hosting för webbapplikationer skrivna i java för en rimlig peng. Installerar man tomcat på en egen dator så är det ju inga problem.
C# är i princip Java, det är inte jättemånga grejer som skiljer själva språken åt förutom några fler konstruktioner i C# som inte finns i Java (och tvärtom sedan java 1.5 kom med stöd för generics bl.a.). Sedan är det ju ett annat Framework som följer med som standard när du programmerar C#. Det är fler webbhotell som stödjer C# med ASP.NET verkar det som. Det som är fint med java är ju att det finns mycket bättre stöd för java på mac'en än för C#.
Finns lite olika IDE's för java men den jag tycker bäst om är eclipse, den är relativt lätt att sätta sig in i, och hjälper dig jättemycket när du skall programmera. Den kan t.ex. upptäcka direkt när du har fel i din kod (ungefär som rättstavningen i word) till exempel om du tilldelar en sträng till en int varibel så får du direkt en röd understrykning som säger att du har inkompatibla typer.
Vad gäller hjälp och information om att komma igång med java så har jag tyvärr inte så mycket information. Dock vet jag att detta är en nybörjarbok som de rekommenderar vid introduktionskursen i Java vid Linköpings universitet. Jan Skansholm, Java Direkt.
http://www.bokus.com/b/9144038437.html?pt=search_result
Hoppas jag inte har pladdrat på för mycket, jag tenderar till att få lite konstiga meningsbyggnader ibland när jag skriver
En sak jag glömde förresten
En jävligt bra och heltäckande om C++ programmering är "The C++ programming Language" av Björn Stroustrup den kan vara lite svår att förstå ibland så man måste läsa den noggrant. Men den innehåller nog det mesta som man behöver veta om man skall programmera i C++. En bra detalj med den boken är också att om man läser något och inte förstår så refererar han ganska flitigt tillbaka till andra kapitel så man kan läsa mer om just den grejen. Dock är boken på engelska.
Okej, tack för väldigt bra svar Att börja med C verkar vara en ganska vettig idé. Men tips på bra sidor uppskattas varmt Till exempel hur man steg för steg bygger något (ytterst) enkelt program... Tror att man kan lära sig mycket med den metoden.
Det låter väldigt dumt att börja med C/C++. Java är mer nybörjarvänligt och man kan göra nästan allt i Java, förutom typ drivrutiner :). Det är även otroligt smidigt att programmen är plattformsoberoende.
Prestandamässigt når Java i många fall upp till samma hastighet som C/C++ (i vissa fall snabbare), även om det är mindre lämpligt för vissa prestandakrävande algoritmer.
http://www.idiom.com/~zilla/Computer/javaCbenchmark.html
Dessutom är det ingen störe ansträngning att lära sig C om man redan kan Java.
Intressant artikel det här. Jag läste om lite liknande grejer på dessa sidorna för ett tag sen. Typ IBM påstår att allokering av minne går mycket snabbare med javas JVM än malloc() i C.
http://www-128.ibm.com/developerworks/java/library/j-jtp01274.html
http://www-128.ibm.com/developerworks/java/library/j-jtp09275.html
Det verkar som om det forskas mycket på virtual machines och garbage collectors. Var en kompis som sa att sun hade kommit på någon skitsmart algoritm för nån funktionalitet i java 1.6 (kommer inte på vad det var för nåt nu) men det skulle kunna bli feta förbättringar till nästa java version i alla fall.
Känns som om java är jäkligt hett just nu, stor efterfrågan på det på arbetsmarknaden känns det som.
Intressant artikel det här. Jag läste om lite liknande grejer på dessa sidorna för ett tag sen. Typ IBM påstår att allokering av minne går mycket snabbare med javas JVM än malloc() i C.
http://www-128.ibm.com/developerworks/java/library/j-jtp01274.html
http://www-128.ibm.com/developerworks/java/library/j-jtp09275.html
Det verkar som om det forskas mycket på virtual machines och garbage collectors. Var en kompis som sa att sun hade kommit på någon skitsmart algoritm för nån funktionalitet i java 1.6 (kommer inte på vad det var för nåt nu) men det skulle kunna bli feta förbättringar till nästa java version i alla fall.
Känns som om java är jäkligt hett just nu, stor efterfrågan på det på arbetsmarknaden känns det som.
Enda orsaken att det går snabbare är att minnet redan är allokerat...med...du gissar rätt....malloc....
Enda orsaken att det går snabbare är att minnet redan är allokerat...med...du gissar rätt....malloc....
Sedan brukar det, som jag förstått det, gå snabbare (i genomsnitt) att frigöra minnet eftersom GC:n tar hand om ganska stora stycken i ett enda stort svep... jämfört med att köra free(), som i sig kan vara ett ganska kostsamt anrop, här och där på enskilda variabler brukar det ge rätt stora vinster. Finns en rätt trevlig artikel på osnews för den som vill ha lite allmänorientering, även om jag fortfarande tycker det känns lite som svart magi ibland
Jo det är väl kanske sant att minne redan blir allokerat när man kör igång JVM. Men sen under runtime av sitt program så måste ju JVM'en, i sin egen minnesarea som den har blivit tilldelad, sköta allokering av minne för nya objekt, även om det nu är allokerat på en lägre nivå innan.
Editor: emacs (http://home.att.ne.jp/alpha/z123/emacs-mac-j.html). Enligt mig världens bästa texteditor. Enkel att börja med, mycket att lära sig.
En bra bok är Skansholm "Java direkt" (på svenska). Eftersom den är ganska vanlig som kurslitteratur kan du nog hitta begagnade exemplar att köpa av någon gammal student.
Editor: emacs (http://home.att.ne.jp/alpha/z123/emacs-mac-j.html). Enligt mig världens bästa texteditor. Enkel att börja med, mycket att lära sig.
En bra bok är Skansholm "Java direkt" (på svenska). Eftersom den är ganska vanlig som kurslitteratur kan du nog hitta begagnade exemplar att köpa av någon gammal student.
Jag har en till salu, tyvärr är det förra upplagan som inte innehåller Swing (nyare API för att göra grafiska gränssnitt). Den som är intresserad av att köpa den är välkommen att kontakta mig. Säg 100:- plus portot? Skicka PM om du är intresserad.
Även jag slår ett slag för Java och Eclipse. Det tar lite tid att komma igång med Eclipse men det betalar sig snabbt. Jag är professionell utvecklare sen drygt 23 år tillbaka och har jobbat med många programspråk och miljöer, och utan att darra på manschetten hävdar jag att det är svårt att utföra seriöst programmerande utan en kompetent IDE som Eclipse, utom möjligen för väldigt små program.
Men Eclipse är inte allt. Det pågår ett race mellan olika IDE:er och Netbeans är också attraktivt. Sysslar man med Swing-programmering ska man definitivt kolla på senaste versionen (5.0) som har en tjusig och kompetent visuell editor för GUI-bygge inbyggd. Såg en snabb demo av den på JavaPolis i Antwerpen förra veckan och det såg mycket fint ut.
En intressant notering från JavaPolis är förresten att man ser fler och fler PowerBooks bland Javaprogrammerare. Och Oracle, som hade en monter på utställningen, hade enbart iMac G5 på plats när de demade sin utvecklingsmiljö för Java!
Tipset om att börja med C först dissar jag helt och hållet. Det finns inget skäl till det. Programmera Java, och uppstår nånsin ett behov av att skriva något i C så kan du det redan till 90%.
Tipset om att börja med C först dissar jag helt och hållet. Det finns inget skäl till det. Programmera Java, och uppstår nånsin ett behov av att skriva något i C så kan du det redan till 90%.
Word. Det finns ingen anledning i världen att börja med C.
Eclipse måste jag nog kolla upp när jag får en ny dator.
Jag har programmerat java ganska intensivt under de senaste två åren, båda på mac och pc men i huvudska på mac. Har skrivit tex skrivit ett ganska stort projekt >20k rader för fysikiska simuleringar som innehåller både tunga beräkningar opengl kod och en hel den nätverks pill.
Mina erfarenheter säger mig att om du ska programmera java så är det eclipse som gäller det är så mycket bättre än allt annat som finns just nu. Den dokumentation som behövs fås oftast snabbast direkt i eclipse eller via en sökning på google typ "java 5.0 class vector"
Just det du vill nog använda java 5.0, vilket kräver en nerladdning från apples sida om det inte har kommit default än men det tror jag inte det har.
Collected Java Practices
http://www.javapractices.com/TableOfContents.cjp
är en mycket lärorik sida med mycket bra tips
Att börja med BlueJ som många redan nämnt är att rekommendera. Det är inte speciellt avancerat och är utvecklat för att nya användare ska kunna lära sig java. Det visar på ett visuellt sett hur objektorienterad programmering fungerar och visar olika class-er i ett flödesdiagram. Gå sedan över till antingen Eclipse eller Netbeans när du förstått grunderna, bägge dessa program är gratis men är lite mer avancerade.
Vill du utveckla egna program med gränssnitt så har Netbeans bra stöd för det. Dock så kan man inte manuellt redigera i den kod som programmet skapat, utan alla förändringar måste göras genom programmet. Jag fattade inte varför knappar som jag manuellt lade in i koden, inte syntes i utvecklingsmiljön, förrän jag insåg att den tolkar inte koden, utan den sparar gränssnittet i en extern fil.
En del saker kan dock skrivas in på platser där programmet tillåter det, t.ex. om du vill styra färg på text och liknande. Jag hade följande litteratur Objects First with Java, a practical introduction using BlueJ och JAVA In A Nutshell. Det hade underlättat tror jag om jag också hade haft litteratur för NetBeans.
Men jag är inte någon hardcore-programerare och kommer aldrig att bli det heller, men jag tog mig genom kursen och fick G, så jag är nöjd.