mboost-dp1

unknown

Delphi 7 på gaden

-

Delphi 7 skulle være noget af en gigant blandt IDE-programmer. IDE (Integrated Development Environment) stammer tilbage fra Turbo Pascals tid. Den nye Delphi kommer i flere versioner, men den testede hedder Architect og koster 33.334,- DKK.





Gå til bund
Gravatar #1 - SPiR
27. okt. 2002 16:34
Sgu'da en pæn slat penge vil jeg mene :)
Gravatar #2 - sphinx
27. okt. 2002 16:36
#1

Yup, men mon ikke de fleste her newz.dk får en kopi af den alligevel. I hvert tilfælde dem der programerer.
Gravatar #3 - DarkwingDuck
27. okt. 2002 16:40
citat: "De mange guides og skeletter vidner om værktøjets store rækkevidde."

yeah right!!!!
Gravatar #4 - Hektor
27. okt. 2002 16:43
#2 sphinx:
"Yup, men mon ikke de fleste her newz.dk får en kopi af den alligevel. I hvert tilfælde dem der programerer."

Så kunne jeg godt tænke mig at vide, hvad du regner med, jeg kan bruge et Delphi-IDE til, når jeg er javaudvikler og -programmør ...
Gravatar #5 - cas2
27. okt. 2002 16:50
Mon ikke de lægger en gratis personal edition ud (til ikke kommercielle formål). Det har Borland ihvertfald gjort både med Delphi 6 og JBuilder ..... btw Delphi er et fabelagtigt RAD (Rapid Application Development) tool .....
Gravatar #6 - sphinx
27. okt. 2002 16:53
Hektor

Du følte vel ikke et personligt angreb her? ;)

Nej i såfald må du jo bruge andre værtøjer.
Gravatar #7 - Hektor
27. okt. 2002 16:55
#6 sphinx:
Nej, men jeg følte den fornemmelse, jeg altid får, når folk anbefaler Delphi.
Gravatar #8 - sphinx
27. okt. 2002 17:02
#7 Hektor

Det må du virkelig undskylde, jeg er skam ikke ude på at fornærme dig. Kun prikke lidt til dig i ny og næ. ;)
Gravatar #9 - wk
27. okt. 2002 17:04
Sjovt, jeg har den samme fornemmelse når folk kalder sig selv Javaudvikler/-programmør.

Jeg bruger Delphi (professionelt) hver dag, har brugt det siden version 4 og det er mindst ligeså stærkt et sprog som C++ eller C# for slet ikke at snakke om Java. Det er bare lidt synd at folk udtaler sig om noget de ikke har forstand på. Og ja, jeg både kender og bruger C++ og Java, jeg fortrækker alligevel Delphi (Object Pascal).
Gravatar #10 - Cluq
27. okt. 2002 17:07

#4
Delphi er da godt, hvis man lige skal rykke en GUI af...dejligt nemt at bruge.
Jeg synes personligt at Java er lidt tungere når det kommer til programmering af GUI...

Men ser man bort fra det, så synes jeg at Java er klart bedre at programmere i end Delphi. Nogle gange virker det som om man har rykket en objektorienteret tankegang ned over noget som absolut ikke kunne tåle det (Pascal). Bagefter har man så prøvet at få begge dele til at passe sammen - nogle steder virker det, andre steder ikke...
Gravatar #11 - cas2
27. okt. 2002 17:13
Delphi program strukturen er da ekstremt meget som i Java(Og man har debugger og compiler integreret i samme app).
Og koden må vel være hurtigere afviklet end i Java, man compiler til en eksekverbar fil, og ikke bare en "halvkompilering" som i Java. (I kan nok gætte at jeg ikke er vild med Java. No flaming please)

Iøvrigt, er Kylix ligeså brugbart som Delphi?
Gravatar #12 - ke
27. okt. 2002 17:22
<STRONG>#2</STRONG>
Hov hov hov! Du mener vel ikke piratkopier?
Gravatar #13 - sphinx
27. okt. 2002 17:23
#12

Hvad vil du da ellers kalde en kopi du forærer væk?
Gravatar #14 - cas2
27. okt. 2002 17:24
forrige:

personal edition
Gravatar #15 - sphinx
27. okt. 2002 17:28
casperk

*LOL* ;)
Gravatar #16 - lugzan
27. okt. 2002 17:28

#10
Helt enig. Java håndterer generelt alt, der har med klassestrukturer at gøre, langt mere elegant end Delphi overhovedet kunne drømme om. Men stadigvæk er det ikke helt umuligt i Delphi at opbygge en ganske udmærket klassestruktur, det er bare en lille smule mere kringlet.

Hvis jeg skulle lave et objekt-orienteret program, ville jeg klart vælge Java, men KUN hvis det ikke kræver en flot og lækkert GUI (læs: Java = terminal-programmernes konge). Delphi derimod er genialt hurtigt at lave GUI'er i (læs: Delphi = GUI-programmernes konge) og med de objekt-orienterede egenskaber det trods alt har, er det slet ikke helt skidt.
Gravatar #17 - Simm
27. okt. 2002 18:00
#11: Kylix er ikke et enkeltstående program. Det er nærmest en pakke, da det både indeholder Delphi/C++ compiler og en IDE
Gravatar #18 - sguft
27. okt. 2002 20:09
Jeg er gammel Delphi programmør (fornyligt hovedsageligt skiftet over til C# dog). Det nye i Delphi 7 er hovedsageligt integrationen med MS .NET platformen.
Jeg ejer i forvejen en Delphi 5 Pro indkøbt til dyre domme. Jeg så i sin tid ingen grund til at opgradere til Delphi 6 da forskellen var minimal, og Delphi 7 må jeg også indrømme jeg har svært at se hvad jeg skal med. Selvfølgelig meget neat at kunne kombinere object pascal med .NET platformen, men vil jeg programmere til .NET, er C# vejen frem imo, og det man så ikke kan i C# kan man klare via managed C++.

Det skal så også lige siges at er man studerende, så kan en Delphi Professional erhverves for ca. 3.500,- (hvilket er en pæn slat penge for de fleste på SU), til sammenligning kan Visual Studio.NET Pro anskaffes som studerende til 1.000,-

Og medmindre man er total MS hader-fanatiker, så kan jeg kun anbefale at kigge på .NET programmering, det er virkelig herligt at arbejde med og imo kommer det til at have en enorm indflydelse ude i erhvervslivet, for MS mener det sgu seriøst :)
Gravatar #19 - SilverWolf
27. okt. 2002 20:39
Det kom for lang tid siden :D
Gravatar #20 - Disky
28. okt. 2002 07:58
Hmmm, hvorfor skulle man dog købe eller skaffe delphi ?

Jeg er også prof. java udvikler og har rodet med Delphi, som jeg til dags dato stadigvæk mener er en voldtægt af Pascal.

Delphi er ligesom VB et fint sprog hvis man bare lige skal have lavet en fancy GUI, men ellers kan jeg personligt ikke se den fjerneste grund til at bruge sproget.

Der er en der nævner at det ikke bare laver en halv compiling som java, hvilket tydeligt viser skribenten ikke har forstået hele ideen med Java 'Compile once run anywhere'.

Det fede ved Java er også det minder extremt meget om C/C++ og ens derved opnåede erfaring kan meget meget nemt flyttes til andre sprog om nødvendigt, hvorimod Delphi følger en helt andet standard som ikke minder om meget andet end Pascal.
Gravatar #21 - Disky
28. okt. 2002 08:06
sguft:
Heldigvis er en stor del af erhverslivet imod Microsofts monopolisering af alt, og bruger derfor andre (bedre) produkter end .net.
Gravatar #22 - SKPFræser
28. okt. 2002 08:10
#18 du er fame langt ude sguft

#20 jeg syntes oss C++Builder virker bedre
Gravatar #23 - Ajax
28. okt. 2002 08:37
Disky:
Hvad bruger du som du mener er bedre end .NET, og hvad er fordelene i forhold til .NET?

Jeg kunne godt tænke mig at få lidt argumentation for dine udtalelser her. Det er ren og sker af nysgerrighed, da jeg selv på nuværende tidspunkt ikke kender til noget godt alternativ til .NET
Gravatar #24 - wk
28. okt. 2002 08:51
Disky, det viser bare hvor meget du kender til Delphi (Object Pascal) når du nu sammenligner det med VB. Men ok, det kommer også fra en "javaudvikler" :-)
Gravatar #25 - hyperchaotic
28. okt. 2002 09:21
Ja Pascal er et *rigtigt* sprog hvor Basic er en ildelugtende perversitet der kun opfordrer programmoeren til at lave langsom grim og u-vedligeholdelsesbar kode. Basic er klasser under begge sprog (Pascal/Java). Sammenligningen af Java og Object Pascal er lidt mere paa samme niveau, omend Object Pascal kommer ud som taberen paa visse punkter.
Gravatar #26 - GreatMilenko
28. okt. 2002 09:45
Jeg har brugt Delphi helt tilbage fra version 4 (inden da turbo pascal) og jeg må sige at det holder hele vejen, det er perfekt til store projekter såvel som små. Det skalerer ligeså pænt som c++, hvilket absolut ikke kan siges om VB (som er fuldstændigt tåbelig at sammenligne med Delphi) det har et supernice klassehieraki til deres visuelle komponenter, alle der har prøvet både at kode i MFC og Delphi vil kunne nikke genkendene til at Microsofts Visuelle programmerings miljø sutter røv til dødsmetal. Dog kan det være at der er kommet andre boller i suppen med deres nye .Net, men det er jo også Borlands gamle Superudvikler Anders Hjelsberg der har været med til at lave c#, så det er sikkert c++ med alle de lækre Delphi detaljer bygget ind i sproget.
Een ting der dog irreterer mig lidt er at Borland ikke har kigget på nogen som helst Compiler optimeringer siden version 5, der er blevet fokuseret mere på features og nye komponenter. Men hvad f..... der gik jo 5 år inden Visual studio blev opgraderet (og nej service packs tæller ikke : )
Gravatar #27 - Disky
28. okt. 2002 10:10
Tja endnu engang har dette sites skribenter vist de ikke vil forstå.

Jeg sammenlig VB med Delphi på det niveau at begge sprog er gode til at lave fancy GUI på kort tid, ikke om sprogene ellers har noget til fælles.

Delphi er Borlands forsøg på at holde liv i et rigtigt godt sprog, nemlig Pascal, mere er der ikke i det.

Sproget er altså æld gammelt og forsøgt holdt i live ved at gøre det objekt orienteret, desværre er det ikke lykkedes særligt godt.
C++ og Java er langt mere udbredt.

Delphi er begrænset i sin udbredelse eller hvor mange telefoner eller andre embeddede enheder har i set som kan køre Delphi ? Jeg kan nævne mange der kan C++ eller java.


Til den der spurgte om .net:
Der er flere årsager til jeg fraråder brugen af .net i mit job som software konsulent.

1. Det er MEGET properitært
2. Det understøtter IKKE brugen af alle de sprog de reklamerer med, man kan til dels bruge dem bare ikke fuldt ud. Kun C# kan bruges fuldt ud, C# er en forvrænget version af Java, hvor de har indført en masse problemmer så som pointere, buffer overrun osv. At en dansker har været med til at udvikle det betyder ikke det fjerneste. Hvis han var så dygtig, havde han nok ikke indført pointere.

C# har kun en fed feature, som jeg savner i Java, nemlig det at en simpel data type automatisk bliver lavet om til et objekt hvis det er nødvendigt, i Java skal man selv gøre det.
Men ud over dette er C# bare et dårligt kopi.
Gravatar #28 - wk
28. okt. 2002 10:16
GreatMilenko, Borlands compiler er jo stadig den hurtigste compiler (de bruger den samme til C++ og Delphi), den er langt hurtigere end VS compileren, så med hensyn til hastigheden er der ikke meget at optimere.

Borland compileren producerer også ret optimal asm kode ud fra Delphi/C++ koden, jeg har siddet og debugget både Delphi og VSC++ kode (i asm form) og VSC++ gør det ikke altid optimalt.

Jeg må indrømme at jeg har ikke kigget på binære filer produceret af .net compileren, men nu kender jeg Microsoft :-)
Gravatar #29 - wk
28. okt. 2002 10:26
Der er en del mere i Delphi end bare et fancy RAD miljø. Jeg bruger måske 5-10% på selve GUI'en og de resterende procent dybt i klasser/objekter/funktioner/biblioteker/osv.

Men det er vel også det der er essensen bag RAD, at man bruger minimal tid på interfacet og mest tid på selve koden. Jeg har prøvet at bruge MFC til at lave mindre applikationer med, men jeg synes det er lidt kikset.

Hvis det er små programmer man er ude efter, så kan man med Delphi (2-7) og Key Object Library lave exe filer med et fuldt ud VCL-agtigt interface fra 13kb og op. Og det er stadigt et RAD miljø med KOL.

Men det er vel mere en religionskrig. Nogen folk kan ikke lide C/C++, nogen kan ikke lide Delphi, andre kan ikke lide Java og de fleste kan ikke lide Basic :-)
Gravatar #30 - _VeNtUrAx_
28. okt. 2002 11:25
Jeg har desværre ikke programmeret så meget i Delphi. Men jeg har programmeret nok i andre sporg til at vide:

Man kan molestrere enhver hensig med sproget, hvis man koder med hovedet under armen. De sprog som henvender sig til at lave lidt hurtigt GUI (VB), laver ikke pæn kode, da programmøren oftest anvender et drag'n drop værktøj. Men hvis man skriver alt selv, så er man selv herre over havd man laver.

Man kan, hvis man tænker sig om, lave udemærket OO kode i ansi c, hvis man bare tænker sig om.

Jeg vil også vove at påstå, at delphi (i sin nuværende form)ikke henvender sig til samme formål som c/c++/java.

Sprog er kun et værktøj til at løse en opgave. Problemet er oftest i "Programmering" at vælge det rigtige værktøj (sprog), såfremt man har kvalifikationen til at træffe valget.

Folk har en tendens til at forsvare de sprog, som de mestrer. Det er ikke særlig objektivt.
/V
Gravatar #31 - hermandsen
28. okt. 2002 12:05
#22
Øhhh, Borland's C++ Builder's klasser er kompileret Delphi-kode!
Gravatar #32 - SKPFræser
28. okt. 2002 13:07
#31 ok, men det var ikke det jeg mente, bare at jeg bedre kunne lide det end feks visual basic
Gravatar #33 - sguft
28. okt. 2002 13:30
well, jeg gidder ikke gå ind i en størrer diskution, da jeg ved hvor fanatiske folk er med de sprog de nu engang kender til og ofte afviser en hver form for sund fornuft da det snarere er et religionsspørgsmål for mange.

men Disky, jeg gerne vide hvorfor java udviklere altid mener det er totalt elendigt at man har _muligheden_ for at arbejde med pointere i C# og hvordan det på nogen måde er en forringelse af sproget ? Bemærk venligst at for at arbejde med pointere (unsafe kode) skal man explicit specificere at man ønsker at afvikle unsafe kode og derudover compilere projektet med en /unsafe parameter, dvs. folk der ikke ved hvad de laver kommer ikke bare pludselig til at benytte sig af pointere eller anden unsafe kode, men muligheden foreligger til dem der ved hvad de laver.

Jeg har arbejdet med Java i 1½ år og har altid fundet sproget underlegen Object Pascal, den eneste fordel jeg ser i Java er muligheden for at køre på alle platforme, men kræver mit projekt ikke det, ser jeg ingen fordel i at foretage udviklingen i Java, der vil jeg til hver en tid vælge Object Pascal fremfor java. Som jeg ser det har jeg i Object Pascal gode muligheder for at lave systemer der kan afvikles uden der skal installeres yderligere komponenter på systemet (sålænge vi snakker programmer udviklet til enten Windows eller Linux), jeg har mulighed for at lave lowlevel kode, jeg kan tilmed gå helt ned i ASM kode hvis jeg har behov for det, afviklingshastigheden er betydeligt hurtigere hvilket enhver der har prøvet at køre et Java program til sammenligning vil kunne nikke genkendende til, derudover har jeg mulighed for at lave systemkald og benytte mig af operativsystemets API'er da jeg ikke er tvunget til at udvikle OS uafhængigt.
Derudover tager GUI design _væsentligt_ kortere tid end at sidde og rode med AWT og SWING i Java!

Med C# og .NET platformen har jeg stortset de samme fordele som jeg har med Object Pascal og derudover har jeg også OS uafhængigheden (det er som jeg ser det kun et spørgsmål om tid før der dukker .NET frameworks op til Linux og andre platforme, men allerede nu er det muligt at programmere til mobile enheder)

Det kan godt ske du har noget imod MS' monopol, men hvordan du kan begrunde at .NET platformen og C# er elendige produkter på den baggrund, må jeg stille mig uforstående overfor.

For mig lyder det mildest talt som om du ikke har kigget nærmere på de muligheder du har med .NET og C#, med de udtalelser du kommer med.

T7: C++Builder er et alternativ til Delphi, de deler samme baselibary den eneste forskel er bare at du skriver C++ kode istedet for Object Pascal, ellers er der ingen forskel og der er ingen forskel i de muligheder du har. Det er udelukkende et alternativ for den store mængde af folk der kommer fra en C++ baggrund og ikke ønsker at sætte sig ind i Object Pascal (da sproget syntax ligger ret fjernt fra C familien, på trods af mulighederne er nærmest identiske).

Det sidste jeg vil pointere: Vær lidt åbne overfor de forskellige teknologier og lad være med at flame andre sprog og teknologier fordi I ikke selv har giddet at sætte jer ind i dem endnu og derfor anser dem som underlegne i forhold til det i allerede kender til. DROP RELIGIONEN! :)

(øv, nu blev det sgu alligevel til en størrer smøre)
Gravatar #34 - Disky
28. okt. 2002 16:39
sguft:
Dit spørgsmål vedrørende hvorfor pointere er en dum ting, har du selv svaret på 'UNSAFE' mode.

Prøv at kig på årsagen til sikkerhedsbrister både på linux og windows, i langt de fleste tilfælde skyldes det bufferoverrun, hvilket meget tit sker pga. pointere, dette problem er ikke eksisterende i Java, da buffer overrun ikke kan lade sig gøre.

At gui design i delphi er hurtigere skyldes ene og alene du bruger gui værktøjer, som forresten også findes i Java :)

Du siger object pascal kan lave programmer der ikke kræver yderligere installation, det kan du da også i java.
Bare husk du ligesom i delphi skal inkludere en hulens masse klasser. Kun VC undgår dette de MFC klasserne er en del af Windows.

Assembler kode fra java er skam ikke noget problem overhovedet, det kaldes brug at JNI.

Problemmer med .net og c# er at det bliver aldrig 100% platformsuafhængigt, eller tror du virkelig microsoft vil lave noget som gør de mister grebet i kunderne ? Hvis du tror det, må du undskyld men så er du naiv.

p.s. Jeg er åben for nye sprog, men jeg Delphi er ikke et nyt sprog, det er ny suppe kogt på noget meget gammel kød og grønsager. Men det glæder mig du kan finde brug for det, jeg kan ikke. Jeg holder mig til Java og native c/c++ kode. Som 100% dækker de arbejdsopgaver jeg får.

En sidste detalje, jeg arbejder som software konsulent for et europæisk konsulent hus, og mig bekendt har vi ikke en eneste delphi konsulent, simpelthen fordi kunderne i de markede vi operere i ikke ønsker delphi. Vi snakker her om den finansielle, sundheds, offentlig og mobil branchen.

Men en ting kan vi blive enige om, det er religion. For der er ikke en ting du kan i Delphi som jeg ikke kan lave i Java og omvendt, eller for den sags skyld i C#. Nå jo der er en ting 'bufferoverrun' :)
Gravatar #35 - sguft
28. okt. 2002 19:22
hehe bør måske lige pointere at jeg ikke har fundet 1 seriøst GUI værktøj til java endnu der tillader mig at lave GUI's på en bare nogenlunde fornuftig måde, det bedste jeg har fundet er Sun's eget værktøj Forte og det halter mildest talt en del bagefter de udviklingsværktøjer der findes til andre sprog. Måske du har noget bedre du kan anbefale ? :)

ja, du kan lave stortset alt i alle sprog, men visse sprog er bare mere egnet til visse projekter end andre og for mig kommer Java langt nede på prioriteringslisten :)
Måske også fordi det er et af de mest begrænsede sprog, adgang til OS API'er, OpenGL, DirectX, pointeraritmetik etc. er stortset umuligt, hvis muligt, at tilgå fra Java, der skal ihvertfald hackes en del for at få det til at køre ;)
Hvorimod at det er en ren selvfølge i de fleste andre sprog.

Jeg forstår dog ikke at du mener at muligheden for pointere er et onde? For mig er det et gode at jeg har _muligheden_ for det. Bemærk at i C# kan du ignorere at du har muligheden for at bruge pointere, men skal du lave noget hastighedskrævende, f.eks. en lynhurtig strengklasse kan det ikke lade sig gøre uden brug af pointere. Desuden vil de fleste aldrig nogensinde opdage at de har muligheden for at bruge pointere da sproget ikke ligger op til at man bruger dem. Men de fleste C++ programmører er nu ret glade for at det er muligt hvis man explicit 3 steder i sin kode definerer at man altså hjertens gerne vil have adgang til dem. Og man kommer altså ikke bare sådan lige til at erklære 3 steder at man ønsker at bruge pointere, hvis ikke det er fordi man meget gerne vil have adgang til dem og gerne vil påtage sig ansvaret for at det kan resultere i buffer overruns. Med andre ord, man kommer ikke bare til at bruge pointere medmindre man har fuldstændig styr på hvad man laver!
Så hvordan det kan være en ulempe har jeg svært ved at se, da folk der ikke har styr på dem bare kan holde sig fra dem.
Gravatar #36 - Disky
28. okt. 2002 20:00
sguft:
Ud fra din listning af ting der mangler i java, må jeg sige du mangler indsigt i java, kun pointere er noget der ikke er tilstede.

Alle andre ting kan man uden problemmer, selv native api kald, men hvorfor skulle man dog det ? Så er det ikke platformsuafhængigt.

Du siger folk der ikke har styr på pointere bare kan lade være med at bruge det.
Med den udtalelse har du lige sagt at tæt på alle udviklere der har lavet microsoft og linux programmer ikke kan finde ud af det, for der bliver konstant opdaget bufferoverrun fejl, som oftest skyldes misbrug af pointere.

Pointere kan være en god ting, men hold da ferie en gang besvær de kan resultere i hvis en eller anden ikke passer 100% på. I java har man ikke alle de problemmer og kan beslæftige sig med at lave god og gennemtænkt kode.
Dine negative ting vedrørende java og dine dertilhørende udtalelser tyder på du ikke har gennemgående erfaring med Java.
Java er lidt langsomere end C++ programmer, det siger ligesom sig selv, men den lille pris er velbetalt i forhold til de store fordele java giver.
Og java er et meget alsidigt sprog det kan med stor succes bruges til:
Applicationer
Applets
Midlets (Java til mobile enheder, som telefoner)
Webserver programmering i form af Jsp/Servlets/J2ee
Embeddet udvikling til små styreenheder
Små utilities
osv.
Alt dette med et eneste sprog, denne alsidighed er i sig selv en enorm fordel frem for andre sprog, som kun kan bruges til en af disse ting.
Selvfølgelig er der nogle rent performance mæssige ting, hvor folk måske synes et perl script er hurtigere eller bedre end en servlet. Men at firmaer som IBM (Websphere) og Oracle (9ias) understøtter java/J2ee er i sig selv en erklæring for kvalitet og top performance.

p.s. Dette er ikke en kritik af dine evner/viden om java, men flere af tingene tyder på du mangler dybdegående erfaring med sproget.
Gravatar #37 - sguft
28. okt. 2002 21:19
sry det var ikke min mening at formulere det på den måde at det ikke kunne lade sig gøre (kun pointeraritmetik), det jeg mente var at det er en del besværligere at lave den slags i Java end i de fleste andre sprog, Delphi indeholder en del libaries til at udføre de ting så smertefrit som muligt, C# bliver fra DirectX 9 kædet uhyggelig tæt sammen med det og det bliver derfor også formodentligt enormt let at udvikle til DirectX fra C# fremover (siger vel også sig selv når det er MS der står bag begge teknologier). C++ har fordelen i det at alle headerfiler etc. udkommer i sproget og dermed vil jeg også mene man har en lettere tilgangsvinkel herfra end fra Java.

Tilbage til vores pointerdiskussion så tror jeg altså der er noget du ikke har fanget af det som jeg har sagt. Den normale C# programmør vil aldrig nogen sinde komme ind og rode med pointere og I langt de fleste tilfælde (til nøjagtig det samme punkt som hvor Java må stå af på dette område) kan du udvikle alle dine applikationer uden nogensinde at vide at der er noget der hedder pointere.
Det er udelukkende en avanceret mulighed man har tilrådighed og som sagt flere gange kommer man ikke bare liige til at bruge dem ved et uheld, da man skal slå en del til for at få lov til at afvilke pointer funktioner.
Som du selv har nævnt minder C# uhyggelig meget om Java, men det har nogle ekstra finesser og så er det ikke udelukkende baseret på objecter da sproget ogsa arbejder med simple datatyper (f.eks structs) og du har også mulighed for at lave operator overloading, en lækker ting du heller ikke har mulighed for i Java.
Men sproget ligger ufattelig tæt på Java og det betyder at referencer også håndteres på samme måde som i Java, så din argumentation med Windows og Linux udviklere:

Jeg quoter:
"Med den udtalelse har du lige sagt at tæt på alle udviklere der har lavet microsoft og linux programmer ikke kan finde ud af det, for der bliver konstant opdaget bufferoverrun fejl, som oftest skyldes misbrug af pointere."

lyder som om du har misforstået et eller andet. Bemærk at disse produkter du refererer til er udviklet i C++, hvor du død og pine er nødt til at bruge pointere. Dette er ikke tilfældet i C# da den håndterer referencer på samme måde som Java.
Man skal derfor ud i nogle meget ekstreme optimeringsfunktioner for at man kan argumentere for at slå til i sit program således man kan benytte sig af pointere og for langt hovedparten af C# udviklere vil dette aldrig blive relevant. Men muligheden foreligger .. er det virkelig så slemt?

En sidste ting, du nævner en række fordelagtige ting Java kan bruges til at udvikle, og ja I nogle af de specialtilfælde vil jeg også vælge Java som udviklingsværktøj, men jeg er hovedsageligt Applications udvikler og det er yderst sjældent jeg har behov for at lave hjemmeside applets eller sjove programmer til en mobiltelefon. Og til Applicationsbrug udvikler jeg sjældent crossplatform (ikke mere end til max Windows og Linux ihvertfald, hvilket dækker det meste imo) og der vil jeg mene at der findes stærkere sprog en java at benytte. Men ja, man vælger vel det sprog der passer til projektet ? :)
Gravatar #38 - _VeNtUrAx_
28. okt. 2002 21:50
Java mangler en ting, som jeg virkelig savner:
pre kompiler direktiver

Java er et fedt sprog, men man kan da sagtens lave et memory leak, hvis man anstrenger sig lidt ;o)

Og pointere eksisterer i java, men de er skjulte i sprogets syntaks, således programmøren ikke skal tænke over det.

Men alle highlevel programmører burde lære et low-level sprog (c eller assembler) for forståelsens skyld ;o)

/V
Gravatar #39 - sguft
28. okt. 2002 22:12
Slevfølgelig eksisterer der pointere i Java også, forskellen på de moderne sprog såsom bl.a. Java og C# er at de håndtere pointere under overfladen, som du også selv nævner.
C# er så bare det eneste af de 2 der ligesom alle andre programmeringssprog pånær Java understøtter muligheden for at man selv roder med pointere. Til forskel fra alle de ældre sprog, er det dog ikke så ligetil at få adgang til pointere i C# da det kan resultere i kritiske fejl og man kan også vælge helt at lade være med at rode med dem uden man af den grund står dårligere stillet end hvis man havde anvendt Java.

Men ja, tænker man sig ikke om kan pointere være farlige, men så er de vist heller ikke sværere at anvende og kræver altså ikke nogen højere datalogigrad at få en forståelse for ;) Desuden, gennemtester man sine kritiske funktioner ordentligt er det overhovedet ikke noget problem.

Med hensyn til memory leaks i Java behøver man slet ikke være så kreativ, den enormt dårligt implementerede garbage collector klarer det fint selv ;)
Gravatar #40 - Disky
29. okt. 2002 07:38
sguft:
Nu er det altså ikke en memory leak, hvis du glemmer at sætte en reference til et objekt til null når du ønsker den garbage collectet.

Den garbage collector der er i java >=1.3.1 er bestemt ikke dårlig tværtimod, den ryder særdeles effektivt op efter dig, men kan selvfølgelig kun gøre det hvis du lader dine objekter komme ud af scope, eller explicit sætter referencerne til 'null'.
Hvis du ikke gør dette er der ikke en eneste garbage collector i verdenen der ville røre dine objekter, da en reference betyder at objektet er i brug.

Hvis 'gennemtester man sine kritiske funktioner ordentligt er det overhovedet ikke noget problem' hvorfor findes der så overhovedet sikkerhedshuller i programmer ?
Jeg er ret sikker på nogle af de udviklere der f.eks. har lavet den SSH implementation på linux som der var et hul i for et stykke tid siden, er noget dygtigere end dem der er her på sitet, og alligevel laver de fejl. Gad vide hvorfor.

Du siger du synes 'structs' er en fed ting, i et objektorientere sprog er der ingen forskel på en klasse og en struct, bortset fra at i en klasse er tingene per default private og i en struct er de public.

Operator overloading er et tveægget svær, det kan bruges til fornuftige ting, men desværre også til virkeligt afskyelige ting, og begge dele ser man desværre også fra dygtige udviklere.

Java er heller ikke 100% baseret på objekter, der findes simple datatyper som f.eks.:
int
float
long
boolean
Og et par til.


Men som sagt tidligere, man kan lave det samme i de fleste højniveau sprog, ihvertefalde de ting vi snakker om her.
Man skal selvfølgelig holde sig til de sprog man bedst kan lide, og er bedst til at udvikle i.
Jeg ville aldrig søge et job hvor jeg skulle bruge VB, C# eller Delphi. Og du har det sikker på samme måde med andre sprog.
Selvfølgelig kunne vi godt lære at udvikle ordentligt i de andre sprog, men jeg kan ikke se nogen grund til det, jeg er 100% tilfreds med de sprog jeg bruger, og hvorfor skifte ?

Venturax:
Beskriv lige hvorfor du ønske pre kompilerede direktiver.
De memory leaks du beskriver, er de opstået pga. en dum udvikler eller pga fejl i sproget ?
Hvis du allokerer en kæmpe buffer og har en reference til den et sted, er det jo ikke nogen memory leak.

Det er korrekt at man i alle sprog kan lave dårlig programmering som leak'er osv, men en stor fordel i java er at bufferoverrun ikke er muligt, og langt de fleste sikkerhedshuller der opstår er netop pga. bufferoverrun.
Men en dårlig udvikler laver selvfølgelig altid lort i det, ligegyldigt hvilket sprog han/hun anvender.
Gravatar #41 - _VeNtUrAx_
29. okt. 2002 08:19
Disky: Hejsa ;o)
Grunden til at jeg suger at man kan memory leake i Java, er at mange tror at den hellige grav er vel forvaret, når man ikke længere har pointere. Derfor og ikke andet. Selvfølgelig laver ALLE programmører memory leak, men du har ret i, at mange af de fleste fejl sker ved memory overskrivning og det er meget svær at replikere i java (jeg tror faktisk ikke de kan lade sig gøre)

Jeg savner prekompiler direktiver, fordi:
Hvis man har multiple produkter (med begrænsede ressourcer) som benytter sig at samme kode platform. Men i produkt a, skal den bruge et andet display, som har andre dimensioner, til forskel fra produkt b.

i c/c++ skriver man så (da man ikke har ubegrænset kode plads og derfor <STRONG>skal</STRONG> minimere, hvis muligt):
#ifdef produkt_a
#define DISPLAY_HEIGHT 128
//evt structs og andre hw ting
#elif produkt_b
#define DISPLAY_HEIGHT 64
#else
#error "error text"
#endif

<STRONG>eller:</STRONG>
Hvis man har debug kode i sit program som kunne være rart at kunne slå til/fra.

eks.
#ifdef ENABLE_DEBUG
//Skriv en masse skidt ud her
#endif

men man i en "release" version af kode ikke skal skrive dette ud, kan dette gøres nemt.

Dette kan ikke lade sig gøre i java, desværre. Det ville ellers være kult

ang. operator overloadning ikke kan lade sig gøre er kun for programmørens skyld, således tvetydigheder ikke opstår.

/V
Gravatar #42 - sguft
29. okt. 2002 08:34
Disky: Jeg ved godt hvordan en Garbage collector virker, men den i Java er absolut ikke den mest imponerende jeg har set, f.eks. stiger ramforbruget enormt op til et hvis punkt hvor Garbage Collectoren pludselig får lyst til at træde i kraft og få fjernet alle de færdige objecter, istedet for at fjerne dem mere løbende. Desuden er der en memory leak ved oprettelse af listeners ved brug af anonyme klasser der endnu ikke er blevet rettet i 1.4.

Jeg syntes dog det er forbløffende som du ikke tør anvende noget som helst fordi det i realiteten kan føre til sikkerhedshuller og buffer overruns etc. Sikkerhedshuller kan du lave i alle sprog, det er mere et spørgsmål om at tænke sig om for at undgå den slags end et sprogvalg. Og ja, vi er mennesker, så ligegyldigt hvor kloge vi gerne vil tro vi er, så begår vi fejl som bl.a. kommer til udtryk i sikkerhedshuller i div. software. Pointere er ofte i krydsilden hvad det angår, da pointere er ret abstrakte at arbejde med og har man ikke en abstrakt og matematisk tankegang, kan de være svære at overskue ved kompleks brug. Men det er ikke sværere end det er for en matematiker at bevise en formel eller udføre kompliserede regnestykker, skal vi også holde os langt fra matematik fordi manden er et menneske og i teorien nemt kan begå en regnefejl?

Ja, jeg ved godt der findes simple datatyper i Java, men dem ville de tilsyneladende også meget gerne slippe for hvis de kunne. Det jeg mente var at Java er låst meget fast i den object orienterede verden, istedet for at udnytte det bedste fra begge verdener. Din argumentation med at structs og en klasse er identisk holder ingen steder, en struct nedarver ikke fra et grundobject dvs. du har langt mindre overhead på en struct, desuden bliver structs "passed by value" hvor klasser bliver "passed by reference".

At du rent afviser Operator Overloading fordi det igen er noget der "kan bruges til at love rod i den", viser igen bare min tidligere pointe med at istedet for at du ser de muligheder du har, ser du istedet på hvad en minoritet kan finde på at gøre med de muligheder af grimme ting.
Jeg kender folk der kunne finde på at kalde deres variabler for guldFisk eller abeKat, skal vi også afskaffe variabler fordi nogen ikke kan finde ud af at navngive dem ordentligt og koden dermed ikke bliver til at læse? Hvor vil du hen med den tankegang?
Gravatar #43 - Disky
29. okt. 2002 09:18
Venturax:
Lige på det område vil jeg give dig ret.

snugft:
Du vil tydeligtvis ikke forstå mine argumenter, så istedet for at bruge mere tid på at argumentere synes jeg ligeså godt vi kan stoppe her.
Du bliver ved med at jokke rundt i de samme ting du ikke vil forstå, og jeg er sikker på at ligegyldigt hvilke argumenter jeg kommer med, synes du at de ikke passer. Ganske enkelt fordi du synes java er dårligt og delphi er super godt.

At du så samtidigt totalt misforstår alt hvad man skriver tyder endnu mere på du er meget bundet i din opfattelse af tings sammenhæng.
Jeg tør udemærket godt bruge pointere og andre ting, jeg har faktisk udelukkende programmet C til mobiltelefoner de sidste 6 måneder.

Jeg bruger også operator overloading i C++ hvis jeg har brug for det. Men jeg savner bestemt hverken pointere eller overloading i Java.

Din undskyldning med matematikere og formler er meget meget søgt, igen stempler du alle udviklere som ikke behersker pointer til perfektion som nogle analfabeter, for du er sikker på at man sagtens kan gøre det uden at lave fejl. Hvilket software branchen tydeligt viser man ikke kan.

Men ud fra du bare har helt styr på hvordan man undgår problemmer med pointere og overloading osv, så er der vel heller ikke så meget som en fejl i de programmeringssprog du elsker, for selvfølgelig er det fejlfrie mennesker der har lavet dem.


Du skulle ærligt talt tage og undersøge hvordan jdk 1.4 gc'en virker, dine udtalelser om den viser tydeligt du ikke ved hvad du snakker om, hvilket også kan ses i dine andre udtalelser om java.

Du elsker delphi fair nok, det har jeg ikke noget imod, men jeg har noget imod du forsøger at rakke ned på et programmeringssprog ud fra et meget dårligt kendskab til det.

EOD
Gravatar #44 - sguft
29. okt. 2002 09:38
Tilsyneladende vil jeg nu mene det er dig der ikke er istand til at se det obvios og du bliver også hele tiden ved med at rode rundt i det samme i den argumentation imod det, derfor jeg har forsøgt at udpensle det, men det har åbentbart ikke lykkedes godt nok eller også vil du lukke af for det.

Jeg kan ikke se noget sted at jeg har nævnt at jeg mener de teknologier jeg henviser til er udviklet af fejlfri folk, eller at jeg mener de kun er forbeholdt folk der er superintelligente og ikke begår fejl, der er tilsyneladende noget der du har misforstået totalt i min argumentation eller bare ikke vil forstå.


Det drejer sig heller ikke om at jeg er vildt forelsket i mit Delphi, jeg har efterhånden et rimelig bredt kendskab til div. sprog og kan se fordele og ulemper i dem alle, så det er ikke fordi jeg på nogen måde er fanatiker af et enkelt sprog.

Jeg vil mene jeg har rigeligt kendskab til Java og har også udviklet optil flere produkter i det, at vi så er af forskellige opfattelser af hvordan tingene hænger sammen kan vi tilsynelande diskutere til en uendelighed uden at nå til enighed, så kan du rakke ned på mine kundskaber så meget du har lyst, det mener jeg siger mere om dig end mig.

EOD
Gravatar #45 - Hektor
29. okt. 2002 11:17
#41 _VeNtUrAx_:
Jeg har ikke lige den fjerneste idé om, hvad compiler-direktiver er, så tag lige min udtalelse med et gran salt, for dit ovenstående eksempel har jeg lavet masser af gange i java med properties- eller ini-filer. Det fjerner godt nok ikke de dele af koden, du ikke har tænkt dig at bruge, som jeg gætter (gentager, gætter) på, er formålet med compiler-direktiver, men derfor har jeg stadig kunnet bruge det, selv når jeg har yderst begrænset plads at lege med, p.t. 108.000 bytes.
Gravatar #46 - Disky
29. okt. 2002 11:34
sguft:
Jeg sagde godt nok EOD, men denne her er for morsom til at lade ligge.

Jeg vil mene jeg har rigeligt kendskab til Java og har også udviklet optil flere produkter i det,
Hvilket man tydeligt kan se i din udtalelse om GC'en.
Den er nemlig temmelig forkert.

Så 'rigeligt' kendskab har du vist ikke.


Hektor:
Det jeg tror Venturaz hentyder til kan du ikke ordne med en property fil.

f.eks.

#ifdef mitFlag
mitObjekt.minMetode(1,2,3);
#else
mitobjekt.minAndenmetode(1,2,3);
#endif

Altså hvor forskellige dele af koden bliver kompilet ud fra hvordan forskellige flag er blevet sat.

Men man kan faktisk opnår denne funtionalitet alligevel, ved f.eks. at gøre:

private final static boolean mitFlag=true;


if(mitflag)
mitObjekt.minMetode(1,2,3);
else
mitobjekt.minAndenmetode(1,2,3);

Når der så kompiles med en nyere java kompiler, fjerner den automatisk den af de to metode kald som aldrig kan kaldes pga. det final definerede flag.

Man skal dog huske at bede om optimering, men det afhænger af hvilken compiler man bruger.
Gravatar #47 - _VeNtUrAx_
29. okt. 2002 12:00
Fodelen med kompiler direktiverne er bare at de er en standard del af sproget.

Nu skal det ikke lyde som om det kun er c/c++ der duer, jeg er selv tilhænger af java.

Hektor: "pre kompiler direktiver" er det er står ;o)
noget som sker inden selvekompileringen. Det genereres en fil ud fra din kodefil, som er strippet for kommentarer, mellemrum etc.

Med et præ kompiler direktiv kan du "styre" denne proces. Eks.

void foo(int nummer, int a)
{
if(nummer < a)
{
foo2(nummer);
}
else
{
foo3(nummer);
}
}

med kompiler direktiver kunne jeg skrive:

void foo(int nummer, int a)
{

#ifdef DEBUG_MODE
printf("nummer %i a %i", nummer, a);
#endif if(nummer < a)
{
foo2(nummer);
}
else
{
foo3(nummer);
}
}

så hvis jeg et sted i koden har
#define DEBUG_MODE

vil printf sætningen blieve en del af koden.. ellers ikke

/V
Gravatar #48 - Hektor
29. okt. 2002 12:09
Jeg SAGDE jo, det skulle tages med et gran salt :-)
Gravatar #49 - sguft
29. okt. 2002 12:13
Nu du har lyst til at køre den længere ud .. jamen så det er da godt du morer dig disky, man kan du ikke lige pointere hvad det er i mine udtalelser der er så grinagtigt? Har du overhovedet selv undersøgt hvordan garbage collectoren i Java er implementeret ?
Gravatar #50 - Disky
29. okt. 2002 12:25
sguft:
jeg har set, f.eks. stiger ramforbruget enormt op til et hvis punkt hvor Garbage Collectoren pludselig får lyst til at træde i kraft og få fjernet alle de færdige objecter, istedet for at fjerne dem mere løbende.

Det du synes den skulle gøre er netop hvad den gør løbende. Men ligesom med alt andet, skal du selvfølgelig tildele den korrekte mængder ram fra starten, via diverse parametere.
Der er her mange newbie's falder af, de ved nemlig slet ikke at man kan styre ting som ram osv.
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