Forum: Offtopic Außergewöhnliche Karriere für herausragende Informatiker


von A. $. (mikronom)


Lesenswert?

"Was berechnet dieser Code? Wie geht es besser?
1
           void m(int[] a, int[] b, int[] c, int p, int q) {
2
                 if (p + 1 < q) {
3
                        m(a, c, b, p, (p + q) / 2);
4
                        m(a, c, b, (p + q) / 2, q);
5
                        for (int i = p, j = p, k = (p + q) / 2; i < q; i++) {
6
                               b[i] = (k >= q || j < (p + q) / 2 && c[j] <= c[k]) ?
7
                        c[j++] : c[k++];
8
                        }
9
                 } else {
10
                        b[p] = a[p];
11
                 }
12
           }

Was berechnet dieser Code? Wie geht es besser?

Bewerben Sie sich mit der richtigen Lösung
Praktika, Werkstudenten, Abschlussarbeiten, Festanstellung
[Website zensiert]"

So, nun zeigt mal was ihr könnt!

von Superkalifragilsistikexpialigetisch (Gast)


Lesenswert?

42.

von D. I. (Gast)


Lesenswert?

http://mobile.itestra.de/

Habe ich erst vor 2 Tagen dort gelesen und von nem Informatiker kann man 
erwarten, dass er Mergesort erkennt ohne herausragend zu sein ;)

Habe schon überlegt ob ich zum Spaß auf die Anzeige antworte da man ja 
vielschichtig schreiben kann was man besser machen könnte, habs dann 
aber gelassen.

von Udo S. (urschmitt)


Lesenswert?

Scheiß Code!
In einer Firma die so unleserlichen Code schreibt will ich gar nicht 
erst anfangen :-)

von Hans-Peter (Gast)


Lesenswert?

Andi $nachname schrieb:
> [Website zensiert]"
>
> So, nun zeigt mal was ihr könnt!
Klar, ich löse die Aufgabe für dich damit du das auf der Website abgeben 
kannst und DU dann die außergewöhnliche Karriere machen kannst?! 
Hoffentlich haben die noch einen Vor-Ort-Einstellungstest.
PS: Nach kurzem draufgucken hab ich ne Idee, aber wär ja bescheuert sie 
hier hinzuschreiben...

von D. I. (Gast)


Lesenswert?

Btw. etwas ansprechender wäre noch gewesen nachzufragen mit welchen 
Argumenten ich die Methode aufrufen muss, damit das korrekt 
funktioniert.

von Markus M. (mark_m)


Lesenswert?

Ich würde es erst mal alles in eine Zeile schreiben und die 
überflüssigen Leerzeichen entfernen. Lächerlich so ein Weichei Code. 
ironie

Grüsse

von laurel (Gast)


Lesenswert?

2. Semester, Algorithmen und Datenstrukturen. Standardstoff.

finde das trotzdem nicht schlecht sowas rein zu schreiben, einfach als 
Aufhänger für eine Bewerbung. Es ist ja eine offene Aufgabe, wo man 
einfach mal Ideen benennen soll. Wer einfach nur irgendwo abschreibt, 
fliegt sicher im VG auf die Nase. Ich denke als Punkt im Gespräch um den 
Kandidaten etwas zu testen, ist das sicher nicht schlecht, besser als 
teilweise irgendwelche Brainteaser wo gefragt wird, wie viele Smarties 
passen in einen Smart usw.

oder die üblichen Personaler Fragen von wegen "wo sehen Sie ihre Stärken 
und Schwächen und wo sehen Sie sich in fünf Jahren"

von Markus M. (mark_m)


Lesenswert?


von A. $. (mikronom)


Lesenswert?

Hans-Peter schrieb:
> Andi $nachname schrieb:
>> [Website zensiert]"
>>
>> So, nun zeigt mal was ihr könnt!
> Klar, ich löse die Aufgabe für dich damit du das auf der Website abgeben
> kannst und DU dann die außergewöhnliche Karriere machen kannst?!

ICH soll als Programmierer arbeiten? Das wäre so, als wenn man einen 
Feldhasen mit der Reparatur einer Quartzuhr beauftragen würde!

> PS: Nach kurzem draufgucken hab ich ne Idee, aber wär ja bescheuert sie
> hier hinzuschreiben...

Das behaupten alle die es nicht wissen!

von laurel (Gast)


Lesenswert?

Markus M. schrieb:
> Ich würde es erst mal alles in eine Zeile schreiben und die

genau ! ein richtiger Nerd löst sowas in der Tat in ein - oder zwei 
Zeilen PROLOG Code rekursiv ( ist möglich )

egal, man sieht die Aufgabe bietet interessanten Gesprächstoff wo man 
erkennt ob jemand was drauf hat oder nicht.

von Hans-Peter (Gast)


Lesenswert?

Andi $nachname schrieb:
> ICH soll als Programmierer arbeiten? Das wäre so, als wenn man einen
> Feldhasen mit der Reparatur einer Quartzuhr beauftragen würde!
Dann hättest du die Website ja nicht zensieren brauchen.

Andi $nachname schrieb:
> Das behaupten alle die es nicht wissen!
Stimmt, aber da waren andre ja eh schneller.

von Mark B. (markbrandis)


Lesenswert?

Udo Schmitt schrieb:
> Scheiß Code!
> In einer Firma die so unleserlichen Code schreibt will ich gar nicht
> erst anfangen :-)

Genau so sieht's aus.

von Markus M. (mark_m)


Lesenswert?

Die Firma sucht bestimmt jemanden, der aus diesem schlecht pflegbaren 
Code gut pflegbaren Code generieren kann. Mit solchen Leuten würde ich 
gerne zusammenarbeiten.

Grüsse

von D. I. (Gast)


Lesenswert?

Ja in der Tat gibts interessante Diskussionsaspekte die man anbringen 
kann:

- wie ist es zu so einem code gekommen? keine code reviews gemacht?

- CleanCode ein Begriff?

- Funktioniert der Code aktuell? Warum muss der jetzt refaktorisiert 
werden?

- Ist der Code zu langsam? Brauche ich einen besseren Ansatz O(n) 
Sortierung statt O(nlogn)?

- Warum wurde überhaupt Sortiercode geschrieben und keine fertige 
Standardbibliotheksroutine verwendet?

Solche Fragen finde ich 1000mal interessanter als das Personalergedöhns, 
aber gibt ja durchaus einige Firmen die herausragende Informatiker 
anderweitig testen ;)

von A. $. (mikronom)


Lesenswert?

Und was tut der Code jetzt? Ich erkenne mit meinen rudimentäremn 
Java-Kenntnissen noch, dass ich drei Arrays und zwei Integer-Werte 
übergebe und dass sich das Ding wohl rekursiv aufruft. Nur was macht es?

von D. I. (Gast)


Lesenswert?

Andi $nachname schrieb:
> Und was tut der Code jetzt? Ich erkenne mit meinen rudimentäremn
> Java-Kenntnissen noch, dass ich drei Arrays und zwei Integer-Werte
> übergebe und dass sich das Ding wohl rekursiv aufruft. Nur was macht es?

Schau in meinen ersten Beitrag.

von Hans-Peter (Gast)


Lesenswert?

D. I. schrieb:
> Ja in der Tat gibts interessante Diskussionsaspekte die man anbringen
> kann:
Du betrachtest das ganze viel zu praxisnah/sinnvoll. Es geht einfach nur 
darum Leute zu finden, die "schwierige" Probleme lösen können, die aus 
wenigen/kryptischen Informationen etwas herauslesen können. Es wird 
dabei praktisch vermutlich weniger um das Dechiffrieren von 
Standardalgorithmen wie diesen gehen, sondern eher vielleicht Debuggen 
von fiesen Programmen die "undurchsichtige" Datenmengen verarbeiten, 
Verstehen/Optimieren von generiertem ASM-Code o.ä. ... Eben nicht der 
typische Java-Programmierer der schon verzweifelt wenn er nur eine .java 
Datei bekommt und nicht weiß wie er sie ohne den grünen Knopf in Eclipse 
kompilieren soll, da er an seiner Hochschule nichts anderes beigebracht 
bekommen hat :-)

Im Beispiel wurde eben einfacher C-Code und ein Standardalgorithmus 
verwendet, damit die Aufgabe überhaupt lösbar wird ohne Einarbeitung in 
die Firmeninterna.

von A. $. (mikronom)


Lesenswert?

D. I. schrieb:
> aber gibt ja durchaus einige Firmen die herausragende Informatiker
> anderweitig testen ;)

An der Stelle kann ich euch empfehlen, dass ihr euch mal bei Google 
bewerbt. Meine Kollegen, die das mitgemacht haben, schwärmen von dem 
Bewerbungsverfahren! Das ist genau für solche Profiinformatiker gemacht. 
Kein Gelaber mit einem Personaler über "unser tollstes" Unternehmen, von 
Umsätzen, Mitarbeiteranzahl, was man in 5 Jahren sein will, sondern mit 
anderen Fachprofis nur über Algorithmen und Programmschnipsel.

von A. $. (mikronom)


Lesenswert?

D. I. schrieb:
> Andi $nachname schrieb:
>> Und was tut der Code jetzt? Ich erkenne mit meinen rudimentäremn
>> Java-Kenntnissen noch, dass ich drei Arrays und zwei Integer-Werte
>> übergebe und dass sich das Ding wohl rekursiv aufruft. Nur was macht es?
>
> Schau in meinen ersten Beitrag.

Ein Mergesort? Mehr ist das nicht?

von D. I. (Gast)


Lesenswert?

Andi $nachname schrieb:
> D. I. schrieb:
>> Andi $nachname schrieb:
>>> Und was tut der Code jetzt? Ich erkenne mit meinen rudimentäremn
>>> Java-Kenntnissen noch, dass ich drei Arrays und zwei Integer-Werte
>>> übergebe und dass sich das Ding wohl rekursiv aufruft. Nur was macht es?
>>
>> Schau in meinen ersten Beitrag.
>
> Ein Mergesort? Mehr ist das nicht?

Nein mehr ist das nicht.

Andi $nachname schrieb:
> An der Stelle kann ich euch empfehlen, dass ihr euch mal bei Google
> bewerbt. Meine Kollegen, die das mitgemacht haben, schwärmen von dem
> Bewerbungsverfahren!

Meine Rede, dabei ists egal welchen US-Topplayer man nimmt, FB, Amazon, 
MS, Google, und andere große US Techfirmen setzen auf ähnliche 
Verfahren. Für FB habe ich das ja im Forum schonmal lang und breit als 
Selbstexperiment dokumentiert. Die größte Hürde dabei ist, dass die 
Bewerbung wahrgenommen wird, entweder man hat Reputation oder Vitamin B, 
so dass man überhaupt beachtet wird, wenn das geschafft ist liegts aber 
an einem selbst und etwas Dusel bei der Aufgabenauswahl. Dafür kann man 
bei einem Fehlschlag wenn man nicht total versagt hat nach nem halben 
Jahr wieder anklopfen.

Hans-Peter schrieb:
> Du betrachtest das ganze viel zu praxisnah/sinnvoll. Es geht einfach nur
> darum Leute zu finden, die "schwierige" Probleme lösen können, die aus
> wenigen/kryptischen Informationen etwas herauslesen können.

Woher weißt du was der Fragesteller für Intentionen hatte?

von Markus M. (mark_m)


Lesenswert?

> sondern mit anderen Fachprofis nur über Algorithmen und Programmschnipsel.
In vielen Firmen ist dieses noch nicht mal möglich wenn man jahrelang 
dort angestellt ist. Als Informatiker sollte man eigentlich einen 
natürliche Neugierde für Algorithmen und Programmschnipsel mitbringen.

Grüsse

von laurel (Gast)


Lesenswert?

D. I. schrieb:
> Meine Rede, dabei ists egal welchen US-Topplayer man nimmt, FB, Amazon,
> MS, Google, und andere große US Techfirmen setzen auf ähnliche
> Verfahren.

bei deutschen Konzern habe ich da bisher andere Erfahrungen gemacht. Da 
regieren wohl eher die Personalbürokraten mit ihren ACs und 
Personalerfragen. Ich wurde von Konzern häufig eher nur oberflächlich zu 
fachlichen Themen befragt. Im Mittelstand hatte ich meist sehr fachliche 
Gespräche oft auch mit konkreten Aufgaben die zu lösen waren.

von Hans-Peter (Gast)


Lesenswert?

D. I. schrieb:
> Woher weißt du was der Fragesteller für Intentionen hatte?
Ganz einfach, ich bin ein herausragender Informatiker der aus den 
gegebenen Informationen rückwärts den Ausgangspunkt erkennen kann.
Im Ernst, theoretisch könnte der Fragesteller die Intention haben 
jemanden gratis für sich das Problem lösen zu lassen, aber meine 
Einschätzung erscheint mir doch am realistischsten. Ein bisschen 
Erfahrung mit Prüfungssituationen und gesunder Menschenverstand...

von laurel (Gast)


Lesenswert?

Hans-Peter schrieb:
> aber meine
> Einschätzung erscheint mir doch am realistischsten. Ein bisschen
> Erfahrung mit Prüfungssituationen und gesunder Menschenverstand...

selbstverständlich ist das so. Es geht um zu testen was jemand bezüglich 
C und Algorithmen so drauf hat. Wenn man obiges Problem optimieren 
wollte, würde man entweder eine Standardfunktion aus einer ohnehin schon 
optimierten Library nehmen oder man würde in Standardwerken zum Thema 
nachschlagen.

wie schon jemand sagt, es ist ein Problem was ein guter Informatiker 
ohne Einarbeitungszeit lösen kann, ohne dass man Firmeninterna 
veröffentlichen muß.

von D. I. (Gast)


Lesenswert?

Hans-Peter schrieb:
> Ganz einfach, ich bin ein herausragender Informatiker

Achso na dann, ...

Hans-Peter schrieb:
> Im Ernst, theoretisch könnte der Fragesteller die Intention haben
> jemanden gratis für sich das Problem lösen zu lassen, aber meine
> Einschätzung erscheint mir doch am realistischsten. Ein bisschen
> Erfahrung mit Prüfungssituationen und gesunder Menschenverstand...

Er könnte auch einfach nur prüfen wollen wie sehr du über den Tellerrand 
des eigentlichen Problems hinausschauen kannst und davon ausgehen, dass 
man das als Mergesort erkennt.

laurel schrieb:
> bei deutschen Konzern habe ich da bisher andere Erfahrungen gemacht. Da
> regieren wohl eher die Personalbürokraten mit ihren ACs und
> Personalerfragen. Ich wurde von Konzern häufig eher nur oberflächlich zu
> fachlichen Themen befragt.

D != US

von Hans-Peter (Gast)


Lesenswert?

D. I. schrieb:
> Er könnte auch einfach nur prüfen wollen wie sehr du über den Tellerrand
> des eigentlichen Problems hinausschauen kannst und davon ausgehen, dass
> man das als Mergesort erkennt.
Ja das meine ich doch, eben das was man nicht im 2. Semester lernt (wo 
man sonst nur die "einfache Richtung" Mergesort->Code beigebracht 
bekommt).
D. I. schrieb:
> Achso na dann, ...
Höhö, Reverse-Engineeren ist eben nicht auf Code entschlüsseln 
beschränkt...

von D. I. (Gast)


Lesenswert?

Hans-Peter schrieb:
> Höhö, Reverse-Engineeren ist eben nicht auf Code entschlüsseln
> beschränkt...

Ich meinte eigentlich eher das mit "herausragenden Informatiker" ;) Wo 
kann ich deine herausragende Arbeit bestaunen? :)

von Hans-Peter (Gast)


Lesenswert?

D. I. schrieb:
> Ich meinte eigentlich eher das mit "herausragenden Informatiker" ;) Wo
> kann ich deine herausragende Arbeit bestaunen? :)
Na indem du mich einstellst :-P ... Ne momentan gibts online noch nichts 
zu bestaunen...

von A. $. (mikronom)


Lesenswert?

D. I. schrieb:
> D != US

Ja, heute. Aber für t -> oo konvergiert die Folge (D)_k gegen (US)_k.

von D. I. (Gast)


Lesenswert?

Andi $nachname schrieb:
> D. I. schrieb:
>> D != US
>
> Ja, heute. Aber für t -> oo konvergiert die Folge (D)_k gegen (US)_k.

Âber nur was die schlechten Sachen betrifft. Wenn das Gehalt mit 
konvergieren würde hätte ich nichts dagegen.

Wie ich schonmal ausführte (weiß nicht ob du zur Zeit des FB-Threads von 
mir schon Teilnehmer warst, die übrigen Foristen mögen mir meine 
ferkesartige Wiederholung verzeihen).
Einstiegsgehalt FB Softwareentwickler: 120.000$ / anno + 30k$ Sign-on 
bonus + 5k$ Relocation expenses, 20 Tage Urlaub.
Roundabout macht das für nen Single in CA, 6k$ netto bei ca. 3k$ 
Lebenshaltung (2k$ Miete + Versicherung, Auto, etc, ...)

von Udo S. (urschmitt)


Lesenswert?

Wobei ich vor über 20 Jahren das letzte mal Sortieralgorithmen selbst 
programmiert habe.
Wo bitte macht das heute noch Sinn? Ist genauso exotisch wie Assembler 
auf einem PC zu programmieren.
Also kriegen die nur die Jungen unerfahrenen (die ja sowieso so viel 
besser sind ;-)) weil die den Merge Sort vom Studium noch präsent haben.

D. I. schrieb:
> CleanCode ein Begriff?
Genau daran habe ich auch gedacht als ich den Code gesehen habe :-))

von D. I. (Gast)


Lesenswert?

Ach ja die Angaben sind für nen Single. Sobald man Kinder hat wirds da 
drüben teuer. Wenn du deine Kinder nich an ne öffentliche Schule geben 
willst (und das willst du nicht), bist du mit mind. 1,5k$ im Monat 
Schulgebühr dabei, das ist dann uncool.
Aber in den ersten Berufsjahren würde ich sagen ist das mit das Beste 
was man haben kann.

von Mark B. (markbrandis)


Lesenswert?

Udo Schmitt schrieb:
> Wobei ich vor über 20 Jahren das letzte mal Sortieralgorithmen selbst
> programmiert habe.

Richtig: Im Berufsleben macht das niemand.

von D. I. (Gast)


Lesenswert?

Mark Brandis schrieb:
> Udo Schmitt schrieb:
>> Wobei ich vor über 20 Jahren das letzte mal Sortieralgorithmen selbst
>> programmiert habe.
>
> Richtig: Im Berufsleben macht das niemand.

Richtiger: Im Berufsleben macht das niemand, wenn es nicht einen 
zwingenden Grund gibt :)

von Mark B. (markbrandis)


Lesenswert?

D. I. schrieb:
> Richtiger: Im Berufsleben macht das niemand, wenn es nicht einen
> zwingenden Grund gibt :)

Und den gibt es in 99.9% aller Fälle nicht ;)

von D. I. (Gast)


Lesenswert?

Mark Brandis schrieb:
> D. I. schrieb:
>> Richtiger: Im Berufsleben macht das niemand, wenn es nicht einen
>> zwingenden Grund gibt :)
>
> Und den gibt es in 99.9% aller Fälle nicht ;)

Das bestreite ich auch nicht ;)

von Arc N. (arc)


Lesenswert?

Udo Schmitt schrieb:
> Wobei ich vor über 20 Jahren das letzte mal Sortieralgorithmen selbst
> programmiert habe.
> Wo bitte macht das heute noch Sinn? Ist genauso exotisch wie Assembler
> auf einem PC zu programmieren.

Weil bspw. die Bibliotheken/Frameworks nur einen Algorithmus 
implementiert haben, dessen Laufzeit bei bestimmten Eingabedaten O(n^2) 
ist, weil man hin und wieder O(n) braucht, weil hin und wieder In-Place 
sortiert werden muss, weil hin und wieder nur ein kleiner Teil der zu 
sortierenden Daten in den Hauptspeicher passt (bei großen Datenmengen 
hat der Beispielcode einen weit verbreiteten Fehler eingebaut...)

von Hans-Peter (Gast)


Lesenswert?

Arc Net schrieb:
> weil man hin und wieder O(n) braucht,
Weil man mathematisch beweisen kann, dass man zum sortieren mindestens 
O(n*ln(n)) braucht (wenn man nur vergleichen kann, nur bei diskreten 
Werten wie Integern geht weniger)

von Udo S. (urschmitt)


Lesenswert?

Arc Net schrieb:
> Weil bspw. die Bibliotheken/Frameworks nur einen Algorithmus
> implementiert haben, dessen Laufzeit bei bestimmten Eingabedaten O(n^2)
> ist, weil man hin und wieder O(n) braucht, weil hin und wieder In-Place
> sortiert werden muss, weil hin und wieder nur ein kleiner Teil der zu
> sortierenden Daten in den Hauptspeicher passt (bei großen Datenmengen
> hat der Beispielcode einen weit verbreiteten Fehler eingebaut...)

Weil sich Datenbank- und Betriebssystemhersteller schon seit über 30 
Jahren Gedanken über Sortieralgorithmen und deren effiziente 
Implementierungen machen, auch bei Problemen, die nicht mehr in den 
Hauptspeicher passen.
Ich habe NICHT geschrieben "man muss das niemals tun", ich habe 
geschrieben, daß ich mich nicht mehr damit beschäftigen musste, was 
übrigens nicht ganz stimmt, vor etwa 12 Jahren haben wir ein 
Sort-Toolkit in unsere Software für Windows und OS/2 implementiert, das 
mit Datenmengen bis in den GByte Bereich ordentlich funktionierte, für 
die Unix Versionen (Sun, AIX, ...) und die Hostbetriebssysteme reichten 
die Betriebssystem sorts.

Und du meinst, daß du in ein paar Tagen ein Sort schreibst, das besser 
ist als die so verfügbaren?

Gruß

von Max D. (max_d)


Lesenswert?


von Arc N. (arc)


Lesenswert?

Hans-Peter schrieb:
> Arc Net schrieb:
>> weil man hin und wieder O(n) braucht,
> Weil man mathematisch beweisen kann, dass man zum sortieren mindestens
> O(n*ln(n)) braucht (wenn man nur vergleichen kann, nur bei diskreten
> Werten wie Integern geht weniger)

Wenn es, wie in einigen Libs/Frameworks, nur möglich ist mit Hilfe eines 
Vergleichsoperators zu sortieren, dann ja. Ansonsten ist Sortieren 
problemlos in O(n) möglich, bspw. Radix Sort, Count Sort und ähnliches.

Udo Schmitt schrieb:
> Und du meinst, daß du in ein paar Tagen ein Sort schreibst, das besser
> ist als die so verfügbaren?

Besser als die generischen Implementationen...

von Seano L. (Gast)


Lesenswert?

Arc Net schrieb:
> Besser als die generischen Implementationen...
Wenn man überhaupt einen eigene sort schreiben muss dann behandelt der 
Spezialfälle aus der Praxis besser als allgemeine Lösungen. Z.B. 
sortiert man für "kleine" n "in place" weil Speicher heute nix mehr 
kostet, oder man behandelt unsortierte Daten die aber doch einem immer 
gleichen Schema folgen auf diesen Spezialfall angepasst wo die 
Standardlösung schlechter abschneidet, ...
Man kann an die Praxis angepasste sorts immer besser machen als wenn man 
mit den Standardlösungen drauflosschiesst. Ist halt immer die Frage 
lohnt sich der Aufwand oder reicht die 0815-Lösung.

von Robert L. (lrlr)


Lesenswert?

> Wie geht es besser?

eine Programmiersprache verwenden, die Range-Checks macht...

von A. $. (mikronom)


Lesenswert?

Robert L. schrieb:
>> Wie geht es besser?
>
> eine Programmiersprache verwenden, die Range-Checks macht...

Was hat ein Range-Check, der ja wohl ganz offensichtlich nur zur 
Laufzeit geprüft werden kann, mit der Programmiersprache zu tun? (nein, 
ich habe keine Ahnung, aber das klingt nicht konsistent)

von John D. (Gast)


Lesenswert?

Andi $nachname schrieb:
>
> Feldhasen mit der Reparatur einer Quartzuhr beauftragen würde!

Was soll dass für eine Uhr sein? Daraus: 
http://www.wie-sagt-man-noch.de/synonyme/quartzen.html kann ich es nicht 
wirklich ableiten.

von A. $. (mikronom)


Lesenswert?

John Drake schrieb:
> Andi $nachname schrieb:
>>
>> Feldhasen mit der Reparatur einer Quartzuhr beauftragen würde!
>
> Was soll dass für eine Uhr sein?

http://www.docstoc.com/docs/41027367/On-the-origin-of-the-name-quartz
http://webmineral.com/data/Quartz.shtml

von (prx) A. K. (prx)


Lesenswert?

Andi $nachname schrieb:
> Was hat ein Range-Check, der ja wohl ganz offensichtlich nur zur
> Laufzeit geprüft werden kann, mit der Programmiersprache zu tun?

Range-Checks sind in C nicht durchgängig möglich, weil allzu oft von 
Arrays nur noch Pointer ohne sicher bekannte Schranken übrig bleiben, 
beispielsweise bei Parameterübergabe.

Ebenso fehlen Datentypen mit definierten Schranken, also beispielsweise 
sowas wie (frei erfunden):
   declare Monat as integer range 1..12;

Eine generischere Variante sind Contracts: http://dlang.org/dbc.html

von A. $. (mikronom)


Lesenswert?

A. K. schrieb:
> Andi $nachname schrieb:
>> Was hat ein Range-Check, der ja wohl ganz offensichtlich nur zur
>> Laufzeit geprüft werden kann, mit der Programmiersprache zu tun?
>
> Range-Checks sind in C nicht durchgängig möglich, weil allzu oft von
> Arrays nur noch Pointer ohne sicher bekannte Schranken übrig bleiben,
> beispielsweise bei Parameterübergabe.

Das ist aber doch kein Problem der Programmiersprache, sondern des 
Compilers. Oder? Meinem Turbopascalcompiler kann ich doch auch sagen, ob 
er Rangecheck machen soll oder nicht, dann wird der Programmcode größer 
und langsamer, weil er zur Laufzeit prüft, ob der Range passt. Aber das 
hat doch rein GAR NICHTS mit Pascal zu tun!

von (prx) A. K. (prx)


Lesenswert?

Andi $nachname schrieb:
> Das ist aber doch kein Problem der Programmiersprache, sondern des
> Compilers.

Es gibt in C keine Möglichkeit, Arrays als Parameter zu übergeben. Sie 
werden implizit als Pointer übergeben, auch wenn man syntaktischen 
Zucker drüber streuen darf indem man "int p[]" statt "int *p" schreibt. 
Innerhalb der Funktion ist rein aus der Parameterübergabe per 
Sprachdefinition keine Information über die Grösse des Arrays vorhanden. 
Nur wenn es der Programmierer als separaten Parameter übergibt - aber 
davon weiss der Compiler dann nichts.

Das Problem mit Range-Checks in C ist also, dass die paar Stellen, wo 
man das real tun kann, die Mühe nicht Wert sind. Es würde zudem eine 
Sicherheit vortäuschen, die schlicht nicht vorhanden ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.