Att välja programmeringsspråk: Java eller C#?

Permalänk
Medlem

Att välja programmeringsspråk: Java eller C#?

Hej!

Jag funderar på att återuppta min gamla hobby, programmering. Men jag vet inte riktigt vilket språk jag ska ge mig i kast med. Har tidigare programmerat i C/C++, C# och Basic, och är relativt bekväm i alla. Då jag helst vill programmera i ett högre språk än C/C++ faller mina alternativ på att antingen lära mig Java (vilket verkar spännande), eller fortsätta med C#. Det jag främst kommer att ägna mig åt är nätverksrelaterad programmering (diverse serverprogram främst).

Mina frågor är då:

  • Är det värt att lära sig Java? Säger i och för sig sig självt, det är allt bra att kunna saker.

  • Licensmässigt och liknande, hur står sig Java mot C#? Har inte Google massa juridiska problem Oracle för att de använder Java i Android? Bör man oroa sig över framtida utveckling? Som ett fan av öppen källkod känns båda språken lite sisådär om jag ska vara ärlig.

  • Har ni någon idé om något annat språk som kan vara intressant att testa? Python?

Tack

Permalänk
Medlem

Högre språk än C++? C++ räknas som ett högnivåsrpåk, precis som Java och C#. Jag tolkar det som att du vill slippa minneshanteringen, vilket jag kan upplevas som väldigt jobbigt innan man vänjer sig vid det.

Om det är värt att lära sig Java? Ja, Java är plattformsoberoende till skillnad från C# (som i teorin är plattformsoberoende, men i praktiken ofta inte är det), vilket alltid är ett plus. Licensmässigt spelar det ingen roll, du kan släppa ett program i båda Java och C# utan några licensproblem.

Vilket språk jag rekommenderar? Det spelar ingen roll egentligen, båda språken är väldigt lika varandra. Man brukar rekommendera Java till nybörjare, men jag vet inte om det spelar någon roll egentligen. XAML är ett väldigt simpelt sätt att designa GUI på om man är van vid XML (C#), annars är Javas Swing (bland annat) ett enklare alternativ om man vill köra på ett objektorienterat GUI, dock brukar folk klaga mycket på det. Å andra sidan kan man skriva GUI objektorienterat i C# vilket gör mitt föregående argument helt ogiltigt. Så om jag ska ge dig en rekommendation, kör på C# om du inte bryr dig om oss Mac/Linux-anvädare, annars kör på Java. I slutändan är språken väldigt lika varandra, om du kan Java, kan du skriva applikationer i C# och om du kan C# kan du utan problem skriva applikationer i Java.

Om man jämför språken med varandra, verkar dock C# vara kraftfullare enligt

Wikipedia

, men det bör du inte se som ett problem, eftersom när du väl kan Java (förutstatt att du väljer Java), så lär du inte ha några problem med att lära dig allt det extra som C# har att erbjuda.

Visa signatur

>> AUK <<

Permalänk
Medlem

Jag skulle vilja påstå att det har inte någon jättestor betydelse vilket du väljer (av C# och Java). Språken är ganska lika och det går snabbt att lära sig C# om man kan Java och vice versa. Jag började med att lära mig Java, lite själv och lite från högskolekurser och kunde i princip byta till C# och börja programmera direkt där. Som du säger själv, det är bra att kunna Java, det är plattformsoberoende vilket såklart är en fördel. Personligen programmerar jag mycket för Windows och föredrar att använda C#. Man får properties och slipper checked exceptions! Jag gillar också WPF bättre än Swing för GUIs.

Men det är mycket vad du själv föredrar, mitt tips är att eftersom språken är så lika, så testa att skriva lite små program i Java och se vad du tycker och bestäm dig efter det. Har inte speciellt bra koll på vad som händer mellan Google och Oracle, men jag tror att båda språken känns som säkra kort för framtida utveckling.

EDIT: Ni får ursäkta, jag hann inte se Sanes svar innan jag postade.

Permalänk
Medlem
Skrivet av Santrium:

Hej!

Jag funderar på att återuppta min gamla hobby, programmering. Men jag vet inte riktigt vilket språk jag ska ge mig i kast med. Har tidigare programmerat i C/C++, C# och Basic, och är relativt bekväm i alla. Då jag helst vill programmera i ett högre språk än C/C++ faller mina alternativ på att antingen lära mig Java (vilket verkar spännande), eller fortsätta med C#. Det jag främst kommer att ägna mig åt är nätverksrelaterad programmering (diverse serverprogram främst).

Mina frågor är då:

  • Är det värt att lära sig Java? Säger i och för sig sig självt, det är allt bra att kunna saker.

  • Licensmässigt och liknande, hur står sig Java mot C#? Har inte Google massa juridiska problem Oracle för att de använder Java i Android? Bör man oroa sig över framtida utveckling? Som ett fan av öppen källkod känns båda språken lite sisådär om jag ska vara ärlig.

  • Har ni någon idé om något annat språk som kan vara intressant att testa? Python?

Tack

Frågan är snarare vilken plattform du bör välja: Java (JVM) eller .NET
Det finns massvis med språk till bägge. På Java-sidan har du exempelvis Groovy (dynamiskt/objektorienterat), Clojure (funktionellt/dynamiskt) och Scala (statiskt/funktionellt/objektorienterat) medan du i .NET kan programmera i till exempel F# (funktionellt/statiskt/(objektorienterat)) eller Nemerle (statiskt/funktionellt/objektorienterat).

.NET är toppstyrt av Microsoft och har ekonomisk uppbackning, standardiserad plattform och utvecklingsverktyg. Java går mer åt open source-hållet, har bättre multiplattformsstöd och "lite lösare tyglar".

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Jag själv som hobbyprogrammerare använder både C# och Java, brukar använda Java till server applikationer och har nyss börjat pilla lite på Android Appar och det går utan några problem. Brukar använda C# för att snabbt göra applikationer med fönster och så, senast gjorde jag VPN-Failsafe(http://www.sweclockers.com/forum/10-programmering-och-digital...) med C#.

Permalänk
Datavetare

Liten kommentar kring C# och plattformsoberoende. Språket C# är helt plattformsoberoende och faktiskt helt standardiserat. Det finns två plattformar som implementerar detta språk, Microsofts .Net och det öppna alternativet Mono.

Däremot så sätter nog de flesta likhetstecken mellan språket C# och plattformen .Net. .Net är inte en standard utan något som helt kontrolleras av Microsoft och .Net finns endast implementerat för Windows. Till väldigt stor del så överlappar API:erna i Mono och .Net så det är möjligt att skriva relativt avancerade applikationer som fungerar på båda plattformarna.

Licensen kring Java är inget att oroa sig för. Dels så har det aldrig varit några tvivel kring de program som använder en "godkänd" JVM , vilket inkluderar den från Oracle, den från IBM samt även OpenJDK som finns för bl.a. Linux. Bråket var kring Googles variant av Java som använde en bytekod som inte är kompatibel med vanliga JVMer, men den rättegången slutade med att Google i princip vann på alla punkter och de patent de handlade om blev ogiltigförklarade eller fick ändras så det blev så smala att de blev irrelevanta.

Om du bara ska programmera som hobby och inte rikta in dig på spel (då du borde använda C++) så finns det betydligt enklare/roligare språk att titta på då Java och C# är system-språk som har samma abstraktionsnivå som C++. C++ har haft automatiskt minneshantering sedan det fick stöd för templates för runt 20 år sedan.

Du nämner Python och det är ett väldigt trevligt alternativ, andra har nämnt Clojure. JavaScript kan ju också vara ett alternativ med tanke på all hype som finns kring detta språk nu, fördelen med JS program är ju att de kan köras i webbläsaren på allt från vanliga datorer, pekplattor och telefoner.

Vill du testa på att skriva serverapplikationer som kan hantera riktigt många samtida sessioner kan du titta endera på Erlang (ja det kommer ursprungligen från Ericsson och har bl.a. används i AXE-växlar) eller på Googles helt färska språk Go (version 1.0 kom i våras).
Det som skiljer Erlang/Go från andra språk som t.ex. Java/C# är att de har ett speciellt koncept som kallas "process" i Erlang och "goroutine" i Go. Dessa beter sig väldigt mycket som en tråd i Java/C# men medan varje tråd tar minst 1MB RAM och belastar OS:et så tar en Erlang-process / goroutine kanske ~300 byte, vilket betyder att man utan problem kan ha 100.000-tals av dessa.

Erlang är relativt olikt de flesta andra språk (kommer från Prolog), men det är definitivt ett högre-nivå språk än C#/Java och relativt enkelt att lära sig. Go är på många sätt likt Python (som också är en av språken man inspirerats av), men Go är ett lågnivåspråk precis som C#/Java/C++.

Mina personliga favoriter just nu är Clojure och Go.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Skulle rekommendera att du i alla fall lär dig grunderna i Java, då det är bra att kunna. Annars spelar det ingen roll. Sen finns ju även Python och Perl, som inte är lika avancerade.

Skickades från m.sweclockers.com