Skip to content

Latest commit

 

History

History
61 lines (31 loc) · 11.4 KB

File metadata and controls

61 lines (31 loc) · 11.4 KB

Metadaten

Verglichene Sprachen: kein Vergleich Seniorität: Senior Domäne: Server-Applikationen Desktop-Applikationen, Betriebssysteme

Transkript

I: Mit welchen Programmiersprachen hast du schonmal über einen längeren Zeitraum gearbeitet?

B: Also wo ich richtig viel Erfahrung hab ist C, C++ und Bash

I: Ok und hast du noch anderen Sprachen mit denen du schonmal gearbeitet hast aber noch nicht so viel Erfahrung hast.

B: Ja ich hab schon mit Rust gearbeitet und mit Java,

I: Und was würdest du sagen ist deine Lieblingsprogrammiersprache

B: Lieblingsprogrammiersprache ist derzeit C++ aber...

I: Wenn du sagst derzeit, hat sich das dann über die Zeit geändert

B: Achso ich hab auch mal ne Weile lang Objective-C programmiert, weil ich es musste

I: Du hattest gerade gesagt das du Derzeit C++ am liebsten magst. Hat sich das über die Zeit geändert?

B: Ich hab halt früher, das erste mal das ich programmiert hab war ja schon in den frühen 90ern und da hab ich natürlich Basic Programmiert, so wie man das halt gemacht hat so. Und ich wollte halt immer mal C++ lernen weil ich halt wusste das Videospiele in C++ meistes programmiert sind deswegen fand ich das so interessant. Und ich hab dann halt mal von einem aus meiner Klasse dessen Vater war programmierer, ein C++ Buch direkt von Bjarne Stroustrup ausgeliehen. Aber damit hab ich es irgendwie nicht gerlernt. (...

I: Was sind denn die Gründe dafür das C++ deine Lieblingssprache ist?

B: Also ich halte C++ für eine sehr Lesbare Sprache. Also ich hab bei vielen anderen Sprachen oft das Problem gehabt dass wenn ich mir den Code anschaue dann hab ich oft Probleme zu verstehen, was macht das jetzt.Es klingt jetzt blöd aber da sind dann halt oft irgendwelche Sonderzeichen oder sonst was. und du denkst dann "Was macht das jetzt eigentlich" und in der Situation war ich bei C++ bisher nicht. Und ich muss auch zugeben das ich jetzt nicht alle modernen Features von C++17 kenne. Also man kann da durchaus sagen wir mal, fortgeschritteneres C++ Programmieren.

I: Ok aber glaubst du das es daran liegt das die Sprache allgemein gut lesbar ist oder ist das eher so ein Erfahrungsding. Du benutzt das ja jetzt schon sehr sehr lange das du das ja vielleicht schon verinnerlicht hast das du das direkt verstehst

B: Ne ich glaube das liegt schon an der Sprache selber. Also wie gesagt ich hab mal ne Weile lang Objectiv-C Programmiert und bei Objektiv-C ist es so zum Beispiel wenn man das ne Weile nichtmehr benutzt hat dann verliert man schon wieder die Fähigkeit den Code zu verstehen. Weil es einfach seh unintuitiv ist. Aber es durchaus so, dass wenn man Übung hat und das auch immer wieder macht dann kann man das durchaus lesen. Aber ich hatte da immer den Eindruck, das war halt so ... Zum beispiel wenn du bei Objektiv-C mal irgendeine Methode aufrufst dann heißt da das du dem Objekt eine Nachricht schickst aber letztendlich rufst du nur ne Methode auf. Und dann ist das mit der Syntax so merkwürdig mit eckigen Klammern und so und man steht dann so davor... "was will das jetzt eigentlich von mir" Also es ist defitniv schon bisschen die Gewöhnung aber ich denke C und C++ sind halt sehr lesbare Sprachen. Ich sag nicht das es die besten Sind aber ich halte sie für sehr gut lesbar. Also es gibt halt schon auch modernere Sprachen die halt deutlich bessere Features haben die halt auch sozusagen wenn es darum geht so bestimmte Informatik-Probleme abzubilden dann geht das zum Beispiel in modernen Programmiersprachen wie Rust deutlich besser. Aber teilweise wird es halt auch dann nicht unbedingt auf den ersten Blick ersichtlich was da jetzt an der Stelle gemacht wird. Also es ist immer so ein Trade-Off

I: Das ist ja dann eigentlich eine zusätzliche Abstraktion die da eingezogen wird und auf der einen Seite ist das Problem vielleicht abstrahierter aber glaubst du das Abstraktion immer die Gefahr birgt wenn was nicht funktioniert das dann auch zu verstehen was da passiert

B: Ja das denke ich schon. Also ich glaube das Problem bei vielen Programmiersprache ist ja oft das wenn die zu sehr Abstrahieren das die Leute dann nichtmehr verstehen was da passiert. Also bei C sagt man ja immer so ein bisschen spöttisch das ist ein besserer Assembler das klingt gemein aber ich bin der Meinung das ist wirklich so. Aber es hat den Vorteil wenn du C wirklich kannst das du halt realtiv gut verstehst was eigentlich passiert. Und das ist halt bei so Sprachen wie Python oder sogar noch Javascript. Die Verbergen ja vieles von der Komplexität die da dahinter steckt. Also zum Beispiel dieses Memory Management. das ist ja nicht selbstverständlich. Du hast halt diese Programmiersprachen die halt so einen Garbage Collector haben die machen das halt einfach für dich. Oder wenn du jetzt so ein Problem hast du du irgendeinen Float in einen Integer umwandeln willst oder so. Eigentlich sind das ja intern wenn du das auf Maschineneben runterschraubst grundverschiedene Typen. Aber Python und so schirmen das so ein bisschen ab. Das hat Vorteile und Nachteile aber ich bin der Meinung das ein Nachteil daran ist das es sicherlich viele Leute gibt die sind Programmierer aber die verstehen halt nicht was sie machen. Deswegen siehst du halt oft teilweise ich sagmal sehr haarsträubenden Code. Gerade wenn da so Leute die nicht so viel Grundverständniss haben dann Anfangen viel C oder C++ Code zu schreiben dann siehst du halt so Bugs wo du einmal drauf schaust und dann siehst das funktioniert nur auf einem 64Bit Rechner macht und sobald du das auf einem 32Bit Rechner machst fliegt dir das halt um die Ohren. Weil die Leute einfach nicht verstehen wie das mit den Zeigern und dem Speicher und dem Alignment funktioniert. Hat halt alles seine Vor und Nachteile

I: Du hast vorher schon Lesbarkeit gesagt, gibt es noch andere Eigenschaften die eine Programmiersprache haben sollte das du sie gut findest?

B: (überlegt) Also das läuft so ein bissche in die Lesbarkeit rein, (überlegt) Das das was die halt macht präzise ist. Also für mich ist das halt so, wie sagt man das auf Englisch, expressiv, sozusagen nicht zu verstecken was da eigentlich passiert sondern lieber mehr Text schreiben aber dafür verständlicher. Also es gibt ja viele Programmiersprachen die sozusagen viele Sachen indirekt machen und wenn die Programmiersprache das sehr expressiv hinschreibt, also meiner Meinung nach ist das ein Vorteil. Auch gerade wenn die Programmiersprache halt statisch Typisiert ist und dich dadurch halt zwingt wirklich mit anzugeben ob das jetzt Integer oder Float ist. Also meiner Meinung nach ist das ein Vorteil. Aber da gibt es sicher Leute die Sagen "Damit will ich mich nicht beschäftigen" Aber das ist halt vermutlich auch Geschmacksache. Und was ich auch defintiv sagen muss wenn es darum geht das sozusagen Kommerziell einzusetzen ist wenn es eine gute Standartbibliothek gibt und zusätzlich. viele Bibliotheken. ICh hab das halt gemerkt als ich im Beruf C++ und Qt programmiert hab. das es im Prinzip selbst für die Abstrusesten Aufgaben gab es halt in dem Qt Framework was ja hauptsächlich Qt ist, gab es schon die Entsprechenen Klassen. Also da merkt man schon das da sehr viel Erfahrung beim Design von diesem gesammten Toolkit dahinter steckt. Also die Programmiersprache alleine ist nur die halbe Miete sondern du brauchst halt auch noch gute Librarys. Das ist ja bei python auch der Fall das es im Prinzip für jedes Standartproblem schon ne Lösung gibt. Also am Ende willst du ja eigentlich nur irgendein Problem lösen. Und da kann dir ja sonst irgenjemand sagen "ja mach das in Nim, weil Nim ist besonders schnell oder mach das in Julia weil Julia ist ganz gut für High Performance Computing" aber der Punkt ist halt, was nützt mir das halt alles wenn es da keine guten librarys gibt. Das ist halt so eines dieser Killer-Features von C++ und Python. Es gibt halt schon Haufen Fertige Problemlöseunge. Zumindest wenn es darum geht das Produktiv zu sein auch eine gute Programmiersprache auszeichnet. Und das ist übrigens auch einer der Vorteile warum sicht Go relativ schnell durchgesetzt hat,meiner Meinung, weil Google einfach zusammen mit der Sprache diese ganze wichtigen Standartlibrarys ausgeliefert hat. Also wenn ich zum Beispiel was mit Web machen will, irgendwelche HTTP-Requests. Das hat Google einfach schon zur Verfügung gestellt. (...) Du musstest nicht umständlich anfangen dir irgendwelche Librarys zusammenzubauen. Es ist halt einfach alles Da.

I: (...)

B: (...)Es geht schon darum das man eine Möglichst elegante Lösung zu finden. Also meiner Meinung nach ist eine Lösung immer dann Elegenant wenn du mir möglichst wenig Code möglichst viele Eingaben erschlägst. (...) Es gibt auch ganz viel Code den man schreibt das ist dann reine Fleißarbeit. Gerade wenn man kommerzielle Anwendungen entwickelst. Da ist vieles so das du schon genau weißt was du machst und du musst das alle nur in Code gießen. Man darf ja auch nicht vergessen das man dann hinterher auch damit beschäftigt ist den Code zu debuggen udn auf Richtigkeit zu überprüfen. (...) Also klar man will also immer die Eleganteste Lösung haben, aber ob man die dann kriegt ist auch immer ne andere Frage. Man hat ja auch nicht immer die Freiheit und die Zeit das man sich da beliebig Lange den Kopf zerbrechen kann. Also gerade wenn du in einem Unternehmen Arbeitest kann du nicht zu deinem Chef sagen "ich brauche jetzt nochmal ein jahr"

I: Würdest du sagen das das auch dazu führt das man im Zweifel dann die Tools benutzt die man eh scon und weiß das es funktioniert und eher nicht dazu tendiert neue Sachen auszuprobieren.

B: Ja würde ich schon sagen. Also neue Sachen probiert man vor allen Dingen dann aus wenn man die Zeit hat. Solange es keinen Äußeren Zwang gibt kann man das gerne machen. Wenn das nicht so ist dann sagt man sich meistens "Ok ich nehm jetzt das von dem ich weiß das es funktioniert"

I: Es gab in der Android Community vor einiger Zeit den Trend das sich alle auf Kotlin gestürzt haben weil sie von Java wegwollte. Glaubst du das das in anderen Bereichen auch so passieren kann wenn erstmal was besseres da ist oder war das ein Spezialfall.

B: Das würde ich eher für einen Spezialfall halte das zeugt dann eher davon das es da einen großen Druck gab Java zu ersetzten. Für gewöhnlich würde ich aus eigener Erfahrung behaupten ist das nicht so. Also Oft ist es das es eine bedeutende Investition in bestehenden Code gibt und man nicht einfach über Nacht hin und ersetzt das mit was neuem. Klar das würden viele Leute gerne machen. Zum Beispiel würde natürlich viele Projekte sagen, "hey wir schreiben das jetzt mal eben in Rust neu" aber das geht halt nicht mal eben das zu ersetzten. Man muss ja auch immer bedenken das muss dann noch getestet werden und dann stabilisiert werden.

I: Würdest du bei dir sagen das die Programmiersprache einer der wichtigsten Kriterien ist wo du bei der Jobwahl darauf achtest

B: Also es nicht das absolute Hauptkriterium. Man sollte auch immer in der lage sein das man sich auf neue Programmiersprachen umstellen kann. Also wie gesagt bei meinem vorherigen Job musst ich ja Objektiv-C lernen obwohl ich das nicht so toll fand. Aber ich musst so LowLevel sachen auf MacOS machen und das geht halt nicht anders. Es ist schon wichtig. Wenn der Rest stimmt ist mir die Programmiersprache nicht so wichtig. Es ist ein Kriterium aber nicht das wichtigste. Wichtigeres Kriterium ist wie man in dem Team und dem Unternehmen klar kommt. Weil das ist nicht selbstverständlich.