Was muss ein guter Programmierer können?
-
dreaddy schrieb:
hm... in 99% aller Fälle ist es egal ob die Funktion in 0.0001 oder in 0.000001 Sekunden durchläuft.
Oft würd ich sogar den simpleren Weg bevorzugen damit man nicht noch 10 Zeilen Kommentare dazuschreiben muss damit auch jeder begreift was man da wieder gebaut hat.
Und für das 1% schau ich mal ins www oder benutzt eine vorgegebene Funktion.Ich finde man sollte ein wenig praxisbezogen sein... ist ja toll wenn die Hello World Funktion vom Nachbarn 10 Milliarden mal in einer Sekunde durchläuft wärend meine nur ein zehntel schafft aber...
Okay, dann schreib mal eine Funktion mit einem Parameter n, die die Zahlen von 1 bis n aufaddiert und zurückgibt. Und zwar so ganz praxisbezogen, wie du das immer machst.
-
Ein guter Programmierer sollte programmieren können.
-
volkard schrieb:
Okay, dann schreib mal eine Funktion mit einem Parameter n, die die Zahlen von 1 bis n aufaddiert und zurückgibt. Und zwar so ganz praxisbezogen, wie du das immer machst.
Das mach ich mal:
public static int addFirstNNumbers(int n) { return (n * (n+1)) >> 1; }
-
Prinzipiell stimmt das schon, ABER man sollte in der Lage sein sich in mathematische Vorgänge einzudenken oder zumindest in der Lage sein aus der Vorgabe eines mathematischen Sachverhalts einen halbwegs brauchbaren Algo abzuleiten und auf den benötigten Sachverhalt anzupassen.
Ich bin selbst ein mathematischer Tiefflieger, aber reale Sachverhalte lassen sich ohne fundamentales mathematisches Verständnis nunmal nicht in jedem Fall umsetzen.
-
Anonymous schrieb:
Ein guter Programmierer sollte programmieren können.
Ja, aber das sollte auch ein schlechter Programmierer können. Der gute Programmierer sollte zusätzlich, wie schon gesagt, Fähigkeiten wie ein gutes logisches Denkvermögen haben.
-
[quote="Gregor"]
volkard schrieb:
public static int addFirstNNumbers(int n) { return (n * (n+1)) >> 1; }
sogar mit ein wenig obfuscation. wie nett.
ok, diese lösung hat ein wenig mathe verlangt und ging über dreisatz hinaus. ist doch leichter zu lesen als die schleife. und schneller getippt auch. und schneller in der ausführung allemal. und das alles, weil man ein wenig in mathe aufgepaßt hat. ist das nicht toll?
-
Mir fehlt hier was. Nämlich die Antwort auf die Frage:
Was ist ein guter Programmierer?
Ist man gut, wenn man effizienten Code schreibt? Oder ist es wichtiger, dass der Code gut pflegbar ist und von anderen schnell verstanden wird? (Eine Kombination wäre natürlich optimal.)
Ist jemand ein guter Programmierer, wenn er sich auf das Programmieren beschränkt? Oder ist jemand besser, der sich auch intensiv mit den Problemen beschäftigt, die sein Programm lösen soll.
Ist es wichtiger andere Programmierer in Erstaunen zu versetzen, oder Programme zu schreiben, mit welchen die Anwender gut zurechtkommen?IMHO ist eine Beurteilung der Qualität eines Programmierers nur möglich, wenn man die Zielsetzung seiner Arbeit kennt.
-
Gregor schrieb:
public static int addFirstNNumbers(int n)
Gibt es in Java mittlerweile schon eine brauchbare Möglichkeit 'unsigned' zu sagen?
-
Lustig.
dreaddy ist offensichtlich nicht gut in Mathe. Dennoch möchte er natürlich ein "guter Programmierer" sein und kann somit nicht zugeben, dass gute Mathematik-Kenntnisse wichtig sind dafür
Wie einfach doch die menschliche Psyche manchmal zu durchschauen ist...
-
Da muß ich uneingeschränkt zustimmen. Optimal wäre sicher beides, da es sich auch nicht unbedingt ausschließt. Die meisten "guten" Entwickler sind so Algorithmenverliebt, das sie mit der Zeit eine gewisse Abneigung gegen GUI - Programmierungen entwickeln. Der Anwender ist aber nach meiner Erfahrung eher bereit ein paar Sekunden länger zu warten, als sich mit einer unverständlichen GUI anzufreunden.
Das Leben könnte so schön sein, wenn wir nicht Anwendungen für die ganzen DAUs da draußen, sondern nur für ITler schreiben müßten. Aus Sicht einer Firma ist sicher der Programmierer der Beste, der die wenigsten Kosten verursacht und das heißt geringe Entwicklungszeit, gute Wartbarkeit und das Eingehen auf Kundenwünsche (Kenntnis der Zielgruppe).
-
TheBigW schrieb:
Der Anwender ist aber nach meiner Erfahrung eher bereit ein paar Sekunden länger zu warten, als sich mit einer unverständlichen GUI anzufreunden.
Und wie erklärst Du den Erfolg vieler GUI-Anwendungen. Wer will schon Tastaturkürzel auswendig lernen, bevor er produktiv arbeiten kann (siehe: vim, emacs, etc.).
-
lesen, denken, posten
-
Bashar schrieb:
lesen, denken, posten
Umgekehrt funktioniert manchmal auch
-
Nö, sieht man ja an deinem Posting.
-
deswegen das "manchmal"
-
- ein problem logisch erfassen und strukturieren
- das problem durch gut auskommentierten code lösen
- das problem billig lösen
- den benutzer zufrieden stellen damit er mehr von dieser firma kauft
-
@Floh:
Das aber sind Eigenschaften eines guten Softwareentwicklers, der auch gut programmieren kann. Ein Programmierer hat nur nach Anweisung zu arbeitenBlackbird
-
Er sollte ggfalls dem Kunden (intern oder extern) erklären können, was er wann warum tut, und zwar in solchen Worten, daß der andere nicht sofort anfängt zu schielen.
Gerade in kleineren Softwareabteilungen sind die Entwickler nicht völlig vom Kunden getrennt, sondern haben immer wieder Kontakte zu ihm. Eine normale Kommunikationsmöglichkeit wie "sprechen ohne zu stottern" ist manchmal hilfreich.
-
etechniker schrieb:
Lustig.
dreaddy ist offensichtlich nicht gut in Mathe. Dennoch möchte er natürlich ein "guter Programmierer" sein und kann somit nicht zugeben, dass gute Mathematik-Kenntnisse wichtig sind dafür
Wie einfach doch die menschliche Psyche manchmal zu durchschauen ist...Naja entweder bin ich kein Mensch oder du musst das mit der Psyche nochmal überdenken :o
Ich war in Mathe immer zischen 1 und 2(und das auch bei Lehrern wo 90% eine 4 oder schlimmer bekommen haben), das Ding ist nur das ich in den 2 Jahren die ich ejtzt arbeite diese mathematischen Kentnisse oder zumidnest alles was nach der 7ten Klasse kam noch nie ernsthaft gebraucht habe...
Ich mein ob ich jetzt eben in 2 minuten ohne nachzudenken
unsigned long addFirstNNumbers(unsigned long endwert) { unsinged long retval = 0; for(int i = 1; i<= endwert; i++) { retval+=i; } return retval; }
tippe oder mich an Mathezeiten zurückversetze und irgendwelche schnelleren Algorythmen zusmamenbastel macht sogut wie nie einen Unterschied, ausser das letzteres meist wesentlich länger dauert bis es funktioniert(und meist nicht auf Anhieb läuft
).
Wenn das ganze schneller sein muss klar, aber wann ist das denn?Wir hatten aufer Arbeit auch mal ne nette Diskussion vonwegen "die meisten Info-Studenten fliegen wegen Mathe raus" ... letztendlich kam raus das mein Kollege auch noch nie wirklich Mathekentnisse gebraucht hat.
Und der arbeitet hier jetzt 12 Jahre oder so :o
-
@dreaddy: *hüstel* Ich hoffe es ist Dir wenigstens bewußt, auf welches Beispiel Du hier reingefallen bist... ist ein echter Klassiker. Du solltest vielleicht diesen speziellen Punkt wegen akuter Blamagegefahr nicht vertiefen.
Ich denke, daß man die Mathematik nicht auf Rechnen reduzieren sollte. Die wenigstens Softwareentwickler (gerade die Informatiker) lösen später rechnerische Probleme (das begegnet sogar noch eher Leuten im Maschinenbaubereich oder Statik, oder Etechnik - also Ingenieuren). Trotzdem ist ein gewisses mathematisches Verständnis notwendig, mehr im Sinne von "Abläufe verstehen, ordnen, lösen". Das ist das, was man unter Mathematik einordnet. Die Schule unterrichtet keine Mathematik (war übrigens ja auch ein Kritikpunkt bei PISA), sondern das Schulfach ist nur falsch benannt - es müßte eher "Rechnen" heißen.