Java - vad är det som är pest och pina med det?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Perra82
Läs KoTTe:S inlägg. C++/java är imperativa och om du ej vet det så ger jag inte mycket för hur du har fuskat igenom din civ. ing. Datateknik.

Jag gjorde min civ. ing. (Datateknik, KTH) ärligt, det är väl därför jag vet skillnaden

BTW: Läskigt att en civ. ing. Datateknik tycker att c++ är ett härke...

Tror du har lite för höga krav på civing Datateknik om du förutsätter att D:are gillar C++.

Permalänk
Citat:

Ursprungligen inskrivet av Perra82
Ifall dina argument hänvisar tillbaks till "buffer overruns" och "jäkla pekare" och "segt att debugga" så visar det på att du ej har någon erfarenhet av felsökning utav mjukvarusystem. För ifall du hade det så skulle du veta vilka bra hjälpmedel som finns för att underlätta allt sådan.

Så vad du säger är att kodare på Apache, Firefox, Windows och Linux alla har saknat utbildning, eftersom alla de har haft dylika problem?

Visa signatur

Python-IRC på svenska: #python.se

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av Perra82
Läs KoTTe:S inlägg. C++/java är imperativa och om du ej vet det så ger jag inte mycket för hur du har fuskat igenom din civ. ing. Datateknik.

Jag gjorde min civ. ing. (Datateknik, KTH) ärligt, det är väl därför jag vet skillnaden

BTW: Läskigt att en civ. ing. Datateknik tycker att c++ är ett härke...

Kan inte någon annan som läst datalogi komma in och förklara för dessa två att jag har rätt?

Om du verkligen gjort datateknik civ ing på KTH, då skulle du vetat att den svåraste och tyngsta inriktningen där, är just "Teoretisk Datalogi" och att man inte kan "fuska" sig igenom den. Du skulle vetat att det är endast en handfull på hela KTH som väljer den, för den är så svår. Du skulle vetat att när KTH jämt representerar Sverige i programmeringsVM så slår KTH de andra universiteten: MIT, Stanford, Harvard, Caltech, etc och kommer väldigt högt, och du skulle vetat att de KTH studenterna läser just "teoretisk datalogi". Du skulle känt till den inriktningens rykte bland tekniska fysiker. Så, jag undrar, om du nu verkligen läst på KTH, vilken inriktning läste du?

Du skulle även känt till att matematiker gillar eleganta bevis och konstruktioner. Inte stora mastodontiska saker såsom C++. "Perfection is not achieved when there is nothing left to add, but when there is nothing left to take away". Litet, elegant, det är matematikernas ledstjärna. Du skulle känt till det, om du läst en civ ing.

Permalänk
Medlem

Hur har du rätt? C++ och Java _är_ imperativa programmeringsspråk, så varför säger du att de inte är det?

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av KTottE
Hur har du rätt? C++ och Java _är_ imperativa programmeringsspråk, så varför säger du att de inte är det?

Som sagt, när jag undervisar programmerarna i finansbranschen så kostar jag nästan 5000kr/h (för dom säger jag förklarar så bra - jag skämtar inte). Jag lägger gärna ned en halvtimme och skriver ett inlägg och diskuterar, om det är intressanta saker och på en hög nivå, och där alla är snälla mot varandra. Det är ganska ointressant att lägga en halvtimme (2500kr) på att övertyga er två om basala saker, som alla känner till. Men om det får er två att släppa det hära, så kan jag förklara lite för er. Eller... Äsch, jag googlar lite... och fann detta direkt:
http://www.cs.uu.nl/docs/vakken/imp/diktaat/imp-en1.pdf
läs rubriken på sid 3 och rubriken på sid 4.

Annars kan ni läsa den kursbok jag hade på KTH, när jag läste programmeringsparadigmer:
Kenneth Louden, "Programming Languages - Principles and Practices", ISBN 0-534-93277-0

Permalänk

Ni har båda rätt eftersom C++ och Java ingår både i gruppen Imperativa och Objektorienterade språk.

Visa signatur

I'm taking you out Funfrock, and NOT for pizza!

Permalänk
Medlem

Kan egentligen ingenting men java är väl populärt på webben? jsp, är inte det java? Väldigt många sidor som kör det har jag sett.

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av Nisse Jöök
Ni har båda rätt eftersom C++ och Java ingår både i gruppen Imperativa och Objektorienterade språk.

Ja, om man ska vara petnoga så kan man programmera dem imperativt. Men Java och C++ är designade för att programmeras objektorienterat. Ett jetflygplan kan, om man ska vara petnoga, åka på motorvägarna som en bil, men det är designat för flygning. På samma sätt kan Scheme programmeras imperativt, men det är designat för funktionell programmering och räknas därför till funktionella språk.

Förresten, vet någon av er två vad det betyder att ett språk är imperativt? En global tillståndsvektor? Jag har läst en kurs, som bara handlade om vilka typer av programmeringsspråk det finns (dvs paradigmer), och vilka typer C++/Java/Pascal/etc anses höra till. Vet ni exakt vad vi pratar om, förresten? Känner ni till alla begreppen? Eller skriver ni ned saker, som ni hört av andra? Utan att studerat begreppen alls?

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av emilsson
Ja, om man ska vara petnoga så kan man programmera dem imperativt. Men Java och C++ är designade för att programmeras objektorienterat. Ett jetflygplan kan, om man ska vara petnoga, åka på motorvägarna som en bil, men det är designat för flygning. På samma sätt kan Scheme programmeras imperativt, men det är designat för funktionell programmering och räknas därför till funktionella språk.

Förresten, vet någon av er två vad det betyder att ett språk är imperativt? En global tillståndsvektor? Jag har läst en kurs, som bara handlade om vilka typer av programmeringsspråk det finns (dvs paradigmer), och vilka typer C++/Java/Pascal/etc anses höra till. Vet ni exakt vad vi pratar om, förresten? Känner ni till alla begreppen? Eller skriver ni ned saker, som ni hört av andra? Utan att studerat begreppen alls?

Vad spelar det för roll? Både Java och C++ är multi-paradigm-språk, liksom många andra språk. Obektorientering skiljer sig lite från de andra padigmerna i att det mest är en teoretisk sådan, man kan ju till och med koda OO i C, eller åtminstonde använda tankesättet och implementera det hela med funktioner och structs. Språk med "riktigt" stöd för OO har dock koncept som inkapsling, arv och polymorphism inbyggda.
Men, hur bygger man upp dessa objekt utan någon grund? Det är här de andra paradigmerna kommer in, man använder dem för att bygga objekten.

Min personliga åsikt är att du inte bör fortsätta med att upprepa dina "meriter" och högskoleutbildningar, finns väldigt många här inne som antagligen är minst lika kvalificerade. Själv har jag ingen sådan utbildning, men det betyder inte att jag är kunskapslös. Utbildning i sig säger egentligen inte så mycket om kunskaper, det bevisar mer att man är en jävel på att plugga/minnas saker inför prov. Nu stämmer inte detta helt, eftersom att man faktiskt kan lära sig genom utbildning, men det man främst lär sig på är erfarenheter och liknande.

Du (eller någon annan) får väldigt gärna rätta mig om jag har fel, men det är så här jag uppfattat objektorientering, och hittills har jag inte stött på något scenario där jag inte kan applicera den.

Vänligen observera, att jag inte försöker idiotförklara dig eller något liknande, liksom de övriga som svarat i den här tråden. Jag vill bara att begreppen ska rättas ut, om du tycker att vi är fel ute i vad Java och C++ tillhör för programmeringsparadigm, berätta för oss vad du lärde dig i skolan, istället för att säga att du läst en kurs i ämnet.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Avstängd

Om du uttrycker dig så taktfullt, så måste jag göra som du säger. Jag ska sluta upprepa mitt CV. Och jag släpper detta, vi kommer inte så mycket längre.

Permalänk
Medlem

Från egen erfarenhet av både C++ och Java, tycker jag inte att det är någon markant skillnad mellan de båda språken, sett till hur lång tid det tar att utveckla applikationer med dem.

Dock gör alla utvecklare misstag. Även de mest erfarna. Erfarenhet kan minska mängden och vikten av misstagen - men det eliminerar dem inte helt. Den stora skillnaden mellan C++ och Java är (enligt min åsikt) resultatet av dessa misstag och hur de hanteras.

Ett mindre misstag i C++ kan lätt resultera i krascher, minnesläckor och liknande - ofta "spontant" och/eller svårt att hitta. Men de brukar å andra sidan märkas - vilket gör att det måste läggas tid på att hitta och åtgärda bristerna.

Ett mindre misstag i Java, resulterar förhållandevis sällan i stabilitetsproblem, då de flesta på ett eller annat sätt fångats upp innan applikationen når slutanvändaren (exempelvis genom de kontroller språket och utvecklingsmiljön gör redan i utvecklingsfasen). Å andra sidan är det (IMO) väldigt vanligt med misstag som påverkar prestandan negativt. Men hur många utvecklare brukar bry sig om att lägga tid på profiling och refactoring efter att applikationen fungerar och är stabil...?

Vad jag försöker få fram är att en duktig C++ utvecklare kan göra stabila applikationer - men det tar förståss tid och kräver en del kunskap. På samma sätt kan en duktig Java-utvecklare göra snabba och effektiva applikationer - men det tar förståss tid och kräver en del kunskap! Då mindre misstag får lite olika konsekvenser i de båda språken är det ju helt naturligt att de fått lite olika användningsområden (och rykten).

Permalänk
Medlem

emilsson, du kan ju ta en funderare på om du skulle lägga lite av dom där pengarna du tjänar på att gå en läskurs.

Var god bläddra ner till sida 9 och berätta för mig vad som står i den gula rutan i Fig 1.1, längst ner till vänster, märkt "Imperative".

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av emilsson
Ja, om man ska vara petnoga så kan man programmera dem imperativt. Men Java och C++ är designade för att programmeras objektorienterat. Ett jetflygplan kan, om man ska vara petnoga, åka på motorvägarna som en bil, men det är designat för flygning. På samma sätt kan Scheme programmeras imperativt, men det är designat för funktionell programmering och räknas därför till funktionella språk.

Förresten, vet någon av er två vad det betyder att ett språk är imperativt? En global tillståndsvektor? Jag har läst en kurs, som bara handlade om vilka typer av programmeringsspråk det finns (dvs paradigmer), och vilka typer C++/Java/Pascal/etc anses höra till. Vet ni exakt vad vi pratar om, förresten? Känner ni till alla begreppen? Eller skriver ni ned saker, som ni hört av andra? Utan att studerat begreppen alls?

Ja, jag har också läst programmeringsparadigmer för Leif...
Läste inriktningen Programsystemteknik...

Citat:

Ursprungligen inskrivet av emilsson
"Du skulle även känt till att matematiker gillar eleganta bevis och konstruktioner. Inte stora mastodontiska saker såsom C++. "Perfection is not achieved when there is nothing left to add, but when there is nothing left to take away". Litet, elegant, det är matematikernas ledstjärna. Du skulle känt till det, om du läst en civ ing."

Vad har eleganta matematiska bevis med programmering i C++ att göra? Skulle Java vara mindre mastodontiskt än C++?

Citat:

Ursprungligen inskrivet av emilsson
Och har snart en fil mag i ren matematik från Stockholms Universitet

Och jag har snart en kandidatexamen i smutsig matematik

Permalänk
Citat:

Ursprungligen inskrivet av emilsson
Som sagt, när jag undervisar programmerarna i finansbranschen så kostar jag nästan 5000kr/h (för dom säger jag förklarar så bra - jag skämtar inte). Jag lägger gärna ned en halvtimme och skriver ett inlägg och diskuterar, om det är intressanta saker och på en hög nivå, och där alla är snälla mot varandra. Det är ganska ointressant att lägga en halvtimme (2500kr) på att övertyga er två om basala saker, som alla känner till. Men om det får er två att släppa det hära, så kan jag förklara lite för er. Eller... Äsch, jag googlar lite... och fann detta direkt:
http://www.cs.uu.nl/docs/vakken/imp/diktaat/imp-en1.pdf
läs rubriken på sid 3 och rubriken på sid 4.

Annars kan ni läsa den kursbok jag hade på KTH, när jag läste programmeringsparadigmer:
Kenneth Louden, "Programming Languages - Principles and Practices", ISBN 0-534-93277-0

Ta inte i så du spricker! Tänker du så när du kollar på tv också? "Nä usch! Nu la jag ned 7500 kr på 1,5 timmes slötittande."

Permalänk
Medlem

Att jämföra imperativa språk och OO-språk är som att jämföra fordon och bilar. Alla vanliga OO-språk är oxå imperativa, däremot är inte alla vanliga imperativa språk objektorienterade. Det står klart o tydligt i länken som emilsson klippte in, det står även på massor av andra ställen som på tex wikipedia: http://en.wikipedia.org/wiki/Imperative_programming

(får ta med den lilla försäkringen "vanliga", finns ju en del hybrider, precis som en del bilar, tex leksaksbilar inte vanligtvis klassas som fordon osv)

Trots detta tycker jag ändå att det är ganska stor skillnad på Java och C++..

Permalänk
Medlem

emilsson sa, klart och tydligt, att Java och C++ inte var imperativa språk, vilket de helt uppenbarligen är. Men vi är ju bara outbildade kretiner, och vår tid är inte lika mycket värd som hans, så uppenbarligen så har vi fel när vi säger emot honom...

Permalänk

EDIT: Man ska inte mata trollen, så jag låter bli.

Permalänk
Medlem

Ni har ju helt ballat ur nu.
Bara en massa skrytprat om vem som kan flest obskyra fracktermer och matematiska samband.

C/C++ är snabbare än Java för det kompileras för processorarchitekturen det är tänkt att köras på.

Det behöver man ingen Civ.inj eller magisters-grad för att lista ut. T.om .NET på Windows är snabbare än Java.

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av vb
Att jämföra imperativa språk och OO-språk är som att jämföra fordon och bilar. Alla vanliga OO-språk är oxå imperativa, däremot är inte alla vanliga imperativa språk objektorienterade. Det står klart o tydligt i länken som emilsson klippte in, det står även på massor av andra ställen som på tex wikipedia: http://en.wikipedia.org/wiki/Imperative_programming

(får ta med den lilla försäkringen "vanliga", finns ju en del hybrider, precis som en del bilar, tex leksaksbilar inte vanligtvis klassas som fordon osv)

Trots detta tycker jag ändå att det är ganska stor skillnad på Java och C++..

Tack för påpekandet, vet dock ej ifall det var någon som undrade.
Det jag ville få fram var att emilsson var fel ute när han började jämföra olika programmeringsparadigmer mot varandra. Han jämförde ett imperativt mot ett objektorienterat (som i sin tur är imperativt)programmeringsspråk och började dra liknelser mellan dessa.

Han försökte föra fram ett argument om att jag trodde att det skulle ta lika lång tid att utveckla en applikation (till exempel Microsoft office) i assembler som det skulle göra i C++

Nog om programmeringsparadigmer och tillbaks till vad tråden handlade om från början...

Permalänk
Citat:

Ursprungligen inskrivet av Perra82
Det finns avancerade hjälpmedel som jämför en variabels ursprungliga tilldelade minne och vart den för tillfället (i run-time) läser.

På vilket sätt hjälper dessa hjälpmedel till med att hitta möjliga källor till buffer overruns?

Permalänk

Det värsta är i min mening JVM. Sedan är andra (följd-) problem prestanda och bristen på lågnivåoperationer. Jag är inte heller särskilt förtjust i OO-tvånget, jag vill inte behöva göra en additionsklass för göra ett enkelt program som räknar ut en summa och skriver ut den på skärmen.

Men var sak har väl sin plats, och det finns nog tillfällen då jag skulle välja java.

Visa signatur

System.out.print(madness ? this.is.SPARTA : "");

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av maDa
C/C++ är snabbare än Java för det kompileras för processorarchitekturen det är tänkt att köras på.

Det behöver man ingen Civ.inj eller magisters-grad för att lista ut. T.om .NET på Windows är snabbare än Java.

Det har redan tagits upp i tråden att både Java och .NET JIT-kompileras till maskinkod (för den processorarkitekturen man kör på) vid startup, detta är samma maskinkod som c++ skapar vid kompilieringen och därför är språken i sig i princip lika snabba.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Chimaira
Det har redan tagits upp i tråden att både Java och .NET JIT-kompileras till maskinkod (för den processorarkitekturen man kör på) vid startup, detta är samma maskinkod som c++ skapar vid kompilieringen och därför är språken i sig i princip lika snabba.

Den maskinkod som Suns klientkompilator skapar är klart sämre än den maskinkod som en optimerande C++-kompilator skapar. Serverkompilatorn däremot kommer nog nära den prestanda som C++ har, men de flesta som klagar på Javas låga prestanda syftar antagligen på klientversionen.

Den finns många anledningar till det här, till exempel semantiska skillnader i hur exceptions funkar, hur metodanrop går till, javas säkerhetsmodell osv, men den största anledningen är att tunga optimeringar tar för lång tid att utföra för att man ska vilja göra det under runtime när en användare sitter och väntar. Därför kör klientkompilatorn bara relativt enkla optimeringar som går snabbt att utföra. Med servrar är det en annan femma dock, eftersom den typen av program är igång väldigt länge och därför hinner tjäna in kostnaden.

Å andra sidan behöver man ju inte alltid köra Java med en JIT eftersom det faktiskt finns vanliga statiska kompilatorer för Java också (gnu). Fast du pratade om jittar.

Visa signatur

Alla män är dödliga. Sokrates var dödlig. Alltså är alla män Sokrates.

Permalänk
Medlem

Mycket av den vetenskapliga värdlen skulle nog stanna upp (temporärt iaf) om java plötsligt försvann. Anledningen: matlab.

Visa signatur

P4 2.0 GHz@2.26 GHz | GF6600GT Core 500 MHz@580 MHz Mem 900 MHz@1135 MHz | 1 GB pc2700 <<Lite kuriosa bara: Ping eller mer korrekt latency är en storhet, ms är enheten. Spänning är också en storhet medan volt är enheten. Tänk vad skoj det skulle låta om du sa: "Hörru höj upp kilometer per timmen va!" (Brun hårig sjuk sköterska)>>

Permalänk
Avstängd

Verkar vara en del som klagat på att Java inte släpper från sig minnet.
Jag har ingen koll på Java. Men med C# så är det iallafall så att den släpper minnet först när systemet kräver det. För dem som maniskt tittar på siffrorna i taskmanager kan det vara lite trist att programmet behåller samma minne fasten man frigjort massor med objekt etc. Men prestanda mässigt spelar det ingen roll.

Om Java funkar lika dant har jag ingen aning om

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av XCan
Mycket av den vetenskapliga värdlen skulle nog stanna upp (temporärt iaf) om java plötsligt försvann. Anledningen: matlab.

Lite lustigt dock att när jag använde matlab i skolan var det i stort sett alltid med "-nojvm"-argumentet.

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av vb
Lite lustigt dock att när jag använde matlab i skolan var det i stort sett alltid med "-nojvm"-argumentet.

Samma här

Permalänk

1. Avsaknaden av properties (a'la C#)

C#

private string _myString; public string MyString { get {return _myString;} set {_myString = value;} }

Java

private string _myString; public string GetMyString() { return _myString; } public string SetMyString(string myString) { _myString = myString; }

2. Utvecklad databinding.

Visa signatur

"Mies saa kaatua mutta ei karata." -- Adolf Ehrnrooth IR 7, Äyräpää 1944.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Turbo_tail
1. Avsaknaden av properties (a'la C#)

Jag trodde tråden skulle handla om vad som är dåligt med Java, inte vad som är dåligt med C#. Lite provocerande kanske, men långt ifrån alla tycker att det där är en sund lösning.

Permalänk
Citat:

Ursprungligen inskrivet av conio
Jag trodde tråden skulle handla om vad som är dåligt med Java, inte vad som är dåligt med C#. Lite provocerande kanske, men långt ifrån alla tycker att det där är en sund lösning.

Vad tillförde det där debatten? Debatten handlar om vad "Vi" tycker är dåligt med Java, något jag kommenterade.

Ingen tvingar en att använda properties, man kan lika väl skriva ~50*2=~100 get'ters och set'ters i t.ex. ett bussinesobjekt om man vill det. Dubbla mängden alltså.

Visa signatur

"Mies saa kaatua mutta ei karata." -- Adolf Ehrnrooth IR 7, Äyräpää 1944.