• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Am verzweifeln mit Java...

cyphorious

Braeburn
Registriert
11.05.08
Beiträge
46
Das stimmt so nicht, denn Java Referenzen folgen der Semantik von Zeigern aus anderen Programmiersprache z.B. Pascal. Nur Zeigerarithmetik ist nicht möglich, aber diese Eigenschaft teilt Java mit Pascal und vielen anderen Sprachen.

jap. mein fehler, sorry!
 

tfc

Ontario
Registriert
21.07.07
Beiträge
348
Es ist sicherer auf Zeigerarithmetik zu verzichten, daß heißt zwar nicht, daß es keine Probleme mehr mit Zeigern gibt, aber die übelsten Fehler kann man so verhindern.

An der Stelle müsste man diskutieren, ob es wirklich so sein sollte, dass Programmierer vor ihrer eigenen Dummheit geschützt werden. Von der Tatsache ausgehend, dass nicht alle Programmierer dumm sind.
 

Maluku

Finkenwerder Herbstprinz
Registriert
10.05.08
Beiträge
464
Das Problem ist eher: Zeigerarithmetik und der Garbage Collector vertragen sich nun gar nicht.
(Woher soll der denn auch wissen das der Speicherberich hinter einer Referenz auch noch gebraucht wird)
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
An der Stelle müsste man diskutieren, ob es wirklich so sein sollte, dass Programmierer vor ihrer eigenen Dummheit geschützt werden.
Das hat nichts mit Dummheit zu tun. Fehler werden immer wieder gemacht werden, insofern ist es wichtig die Möglichkeit fundamentale Fehler einzubauen zu verhindern. Es ist so, daß man durch Verzicht auf Zeigerarithmetik nichts verliert, aber viel gewinnt. Das überprüfen von Indices von Feldern, kostet auch nicht so viel Zeit, daß es sich lohnen würde darauf generell zu verzichten. Zumal, man schaue sich Ada Compiler an, es grundsätzlich die Möglichkeit gibt, bei ausgetesteten Programme diese Prüfung beim Übersetzen nicht mit einzubauen.
 

Maluku

Finkenwerder Herbstprinz
Registriert
10.05.08
Beiträge
464
Der D Compiler macht das genauso, der schmeisst alle überprüfungen im final build raus.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
An der Stelle müsste man diskutieren, ob es wirklich so sein sollte, dass Programmierer vor ihrer eigenen Dummheit geschützt werden. Von der Tatsache ausgehend, dass nicht alle Programmierer dumm sind.
Ich tippe mal, dass bestimmt > 80 % aller Sicherheitslöcher auf der falschen Annahme über einen verzeigerten Bereich beruhen, sei es innerhalb von Zeigerarithmetik, sei es durch falsche Abschätzung/Überprüfung des verzeigerten Bereiches.

Das trifft große OSS-Projekte, die mehrfach überprüft werden ebenso wie große Softwarehäuser, bei denen nicht nur komplette Vollidioten sitzen.

Entweder du hältst dich für schlauer als die alle zusammen oder man muss dich vor deiner eigenen Dummheit schützen. :)
 

cyphorious

Braeburn
Registriert
11.05.08
Beiträge
46
An der Stelle müsste man diskutieren, ob es wirklich so sein sollte, dass Programmierer vor ihrer eigenen Dummheit geschützt werden. Von der Tatsache ausgehend, dass nicht alle Programmierer dumm sind.

Das hat mit Dummheit nichts zu tun. Leider legen viele ProgrammiererInnen öfters eine diverse Arroganz an den Tag, was vor allem dann deutlich wird, wenn man sich anmaßt von einem DAU zu sprechen.

Wie auch immer: Tatsache ist, und das ist sehr schön durch Untersuchungen belegt, dass durchschnittlich bei 10.000 LOC (Java!!) ca. zwischen 30-100 fehlerhafte und unsichere Codezeilen drin sind. Und ich würde mich nicht wagen, die Leute dumm zu nennen. Über die meisten Fehler ist man sich gar nicht bewusst.

Ich halte es für unumgänglich, dass es eine Sprache, wie beispielsweise C++ gibt, die mir erlaubt mein Speichermanagement komplett selbst zu verwalten. Die Idee hinter Java war damals ja eine Sprache für "Jedermann" zu entwickeln. Dass sie das nicht geworden ist liegt auf der Hand, aber die Vorteile, die sie mitbringt, wenn man sich z.b. nicht um seinen Heap kümmern muss sind einfach nett. Ich produziere hauptsächlich C++ Code und bin sehr froh, wenn ich wieder mal was in Java zu machen habe und nicht fast jede Funktion auf Herz und Nieren testen muss, um zumindest halbwegs sicher sein zu können, dass Dinge wie Buffer-Overflow-Hacks ausgeschlossen werden können.

Zum Glück gibt es ja genug Sprachen die uns zur Verfügung stehen, um unsere Bedürfnisse und vor allem die Bedürfnisse der UserInnen abzudecken.