Programmiersprachen der Zukunft



  • "Uncle" Bob Martin - "The Future of Programming"
    https://www.youtube.com/watch?v=ecIWPzGEbFc



  • Es wird wohl noch etwas dauern aber ich denke es ist eine Frage der Zeit bis menschliche Programmierer nicht mehr effizient genug sind. Ich könnte mir vorstellen dass es in Zukunft KI Systeme geben wird die die eigentliche Programmierung ausführen. Die Aufgabe des heutigen Programmierers könnte dann sein der KI möglichst exakte Befehle und Abhängigkeiten mitzuteilen und die Ergebnisse in den verschiedenen Entwicklungsschritten zu validieren. Die KI kann nicht in unseren Kopf rein schauen und weiß nicht was das Programm genau tun soll. Daher wird am Anfang noch eine intensive Kommunikation mit menschlichen Leitern sicher wichtig sein. Bis in einer fernen Zukunft die KI mindestens genau so klug ist wie der Mensch und die Kommunikation auf ein Minimum sinkt. Dann wird nur noch beschrieben werden was für eine Software man möchte und welche Funktionen sie haben soll und die gesamte technische Umsetzung kann die KI erzeugen und validieren.

    Vielleicht kommt es aber auch anders. Wenn der Mensch offen dafür ist sich selbst genetisch und technisch zu verbessern, werden es vielleicht noch "Menschen" sein die programmieren. Aber nicht mehr mit den Fingern auf einer mechanischen Tastatur sondern mit Gehirn-Maschine Schnittellen. Das wird dann quasi viel schneller und effektiver sein als mit emacs und vim 😉
    Vielleicht wird man sich die Funktionen nur denken und ein automatisches KI System erzeugt den optimierten und passenden Code dazu. Ich glaube ich würde das Geräusch der Tasten beim tippen vermissen 😃



  • @DocShoe sagte in Programmiersprachen der Zukunft:

    Das wird bei uns nix. Hier wird noch diskutiert, welche (und ob) ein VCS Vorteile gegenüber Zip Archiven bietet.

    Also die Diskussion hätte ich schnell beendet 🙂



  • @hustbaer sagte in Programmiersprachen der Zukunft:

    @DocShoe sagte in Programmiersprachen der Zukunft:

    Das wird bei uns nix. Hier wird noch diskutiert, welche (und ob) ein VCS Vorteile gegenüber Zip Archiven bietet.

    Also die Diskussion hätte ich schnell beendet 🙂

    Magste uns mal besuchen kommen? 😉


  • Mod

    @DocShoe sagte in Programmiersprachen der Zukunft:

    @hustbaer sagte in Programmiersprachen der Zukunft:

    @DocShoe sagte in Programmiersprachen der Zukunft:

    Das wird bei uns nix. Hier wird noch diskutiert, welche (und ob) ein VCS Vorteile gegenüber Zip Archiven bietet.

    Also die Diskussion hätte ich schnell beendet 🙂

    Magste uns mal besuchen kommen? 😉

    Das würde mich auch mal interessieren, was hustbaers Erfolgsmethode ist, um sture Fortschrittsverweigerer zu überzeugen. So etwas könnte ich täglich brauchen.




  • Mod



  • @DocShoe @SeppJ
    Wenns um sowas krasses geht wie als Firma die Softwareentwicklung betreibt kein VCS zu verwenden, dann bin ich da nicht sehr diplomatisch und sage klar und unmisverständlich dass ich das für vollkommen wahnsinnig halte. Plus natürlich die sachlichen Argumente dazu warum.

    Wenn die Argumente ignoriert bzw. wegdiskutiert werden ist der nächste Schritt dass ich sage "OK, wenn ihr glaubt dass wir das nicht brauchen, mir egal, glaubt es weiter, aber ich will es trotzdem haben". In einer Art und Weise die klar macht dass es sich dabei nicht um einen Wunsch handelt den die Firma ohne Konsequenzen ignorieren kann. Ist jetzt schwer da eine genaue Anleitung zu schreiben, aber im Prinzip geht es darum dem Gegenüber klar zu machen dass man sehr sehr angepisst sein wird wenn diesem Wunsch/dieser Forderung nicht entsprochen wird.

    Vorausgesetzt natürlich die Forderung ist vernünftig. Aber ich kann mir wenig Gründe vorstellen warum die Forderung ein VCS zu verwenden in einem speziellen Fall unvernünftig sein könnte.

    Und wenn auch das nichts hilft, und es mir wichtig genug ist, dann würde ich einfach kündigen. Bzw. davor vermutlich nochmal mit meinem Vorgesetzten sprechen und ihm erklären warum ich kündigen werde wenn sich nichts ändert. Wobei ein grosser Teil des Grundes dann sein wird dass ich keine Lust habe für eine Firma zu arbeiten die entweder glaubt dass ich Dinge wie ob es Sinn macht ein VCS zu verwenden nicht objektiv beurteilen kann oder die meint die Forderung aus einem anderen Grund ignorieren zu müssen/können.

    Im Prinzip das selbe wie wenn ich deutlich unter Wert bezahlt werde und dann deswegen kündige - was ich bereits getan habe.


  • Mod

    Ich weiß nicht. zip-Archive habe für uns immer gut funktioniert. Und ich habe mal git ausprobiert, das war total kompliziert. Die Leute jammern auch überall, dass es so kryptisch wäre. Ich denke auch nicht, dass wir dort unseren bisherigen zip-Archiv Workflow abbilden können.



  • @SeppJ Willst du jetzt ne Demo oder was soll das werden?

    Davon abgesehen: git ist auch total kompliziert. Aber es muss ja nicht git sein. Subversion ist auch gut und viel einfacher. Und wenn die Devs sogar für Subversion zu doof sind gibt es immer noch Systeme wie SourceGear Vault.



  • @hustbaer
    Ich glaube das ist nur Spaß.

    Git mag auf der Console kompliziert sein, aber hierfür gibts Oberflächen wir TortoiseGit. Und ehrlich gesagt ist damit ist die Sache aus meiner Sicht einfach.

    Aber ich habe auch diverse "Abgründe" in Sachen CVS bzw. ZIP Archiven erlebt. Meine Erwartungen an eine Versionsverwaltung sind daher ein wenig niedriger als vielleicht bei anderen Leuten.

    @SeppJ
    Und das Branching ist so einfach! Einfach [Strg]+[c], [Strg]+[v] und gut iss! 😆

    SCNR



  • @SeppJ sagte in Programmiersprachen der Zukunft:

    Ich denke auch nicht, dass wir dort unseren bisherigen zip-Archiv Workflow abbilden können.

    Doch, das geht ganz wunderbar. Seit wir die ZIP-Dateien in git versionieren ist noch nie eine verloren gegangen. Da einzige Problem ist der Platz. Das Repository ist jetzt 35TB gross und wächst täglich ...



  • @Quiche-Lorraine sagte in Programmiersprachen der Zukunft:

    Git mag auf der Console kompliziert sein, aber hierfür gibts Oberflächen wir TortoiseGit. Und ehrlich gesagt ist damit ist die Sache aus meiner Sicht einfach.

    Nö, ich meine nicht das Command-Line Interface. Ich meine Git ist konzeptionell kompliziert.
    Nicht Rocket Science, aber erklär Git mal einer Dofnuss. Vor allem einer Dofnuss die es gar nicht verstehen will.



  • @DocShoe sagte in Programmiersprachen der Zukunft:

    Was ich wirklich vermisse ist ein Feature, das einen Pull mit Abhängigkeiten in anderen Repositories macht und dabei die Repositories, zu denen Abhängigkeiten bestehen, automatisch "mitpullt".

    Das vermisse ich auch. Eine Art
    git pull --recurse-submodules

    Ist aber eigentlich auch mein einziger Kritikpunkt an git. Wir arbeiten viel mit Submodules, weil nach reiflicher Überlegung die Alternativen noch verworrener erschienen.



  • @Quiche-Lorraine sagte in Programmiersprachen der Zukunft:

    Git mag auf der Console kompliziert sein, aber hierfür gibts Oberflächen wir TortoiseGit.

    Ich finde Git auf der Konsole im Rahmen des Daily Business überhaupt nicht kompliziert. Nachdem ich anfangs auch Konsolenverweigerer war, finde ich es jetzt super und nutze die GUI nur noch gelegentlich zur Visualisierung.



  • @hustbaer

    Nö, ich meine nicht das Command-Line Interface. Ich meine Git ist konzeptionell kompliziert.
    Nicht Rocket Science, aber erklär Git mal einer Dofnuss. Vor allem einer Dofnuss die es gar nicht verstehen will.

    Was willst du mir damit sagen?

    Den Zusammenhang zwischen "Doofnuss will nicht verstehen" und Kompliziertheit von Git verstehe ich nicht. Was kann Git dafür das jemand Git nicht verstehen will?

    Für den Anfang reicht es doch zu wissen was ein Push, Pull, Commit und ein Diff macht. Oder etwa nicht?



  • @Quiche-Lorraine sagte in Programmiersprachen der Zukunft:

    Für den Anfang reicht es doch zu wissen was ein Push, Pull, Commit und ein Diff macht. Oder etwa nicht?

    Nein, reicht nicht. Rebase und Merge musst du kennen. Was tust du, wenn ein Konflikt auftritt oder du den vorvorletzten Commit nochmal ändern musst? ("interactive rebase"). Und wie funktioniert das mit Branches, was sind tracking-Branches? etc. Was ist, wenn du "irgendeinen komischen Status" erreicht hast und nicht wieder zurückkommst? (Lösung a: Verzeichnis komplett kopieren, Repo neu clonen und Änderungen von Hand rüberkopieren?) Nur sollte doch in einer Softwarefirma sich irgendjemand finden lassen, der das kennt.



  • Was man können muss, um git zu können, ist dann doch sehr subjektiv.

    Defintiv:

    • Push & Pull
    • add & commit (wobei das mit einer guten gui z.B. integriert in VS Code relativ selbsterklärend ist ... selbst als Konsolen Liebhaber, nutze ich dafür oft die gui)
    • Branches erzeugen können und zwischen diesen wechseln können (Und damit verbunden den Workflow kennen, den man verwendet)

    Nun der Merge/Rebase Teil, meistens arbeitet man ja doch mit tools wie gitlab etc. und merge requests:

    • Man kann per Button mergen, wenn es keine merge Konflikte gibt
    • Mann muss das auch nicht unbedingt selbst machen ... Code Reviewen macht eh jemand anderes (hoffentlich) und einen git "Experten" wird es schon geben, der das Zeugs dann mergt
    • Wenn man es dann doch mal selbst können möchte, halte ich es auch nicht für zwingend notwendig rebase zu kennen. Sollte man können, wenn man es ernst meint, aber notwendig ist es nicht

    Optionalerweise möchte man vlt. auch den Code von anderen reviewen können:

    • Auch hier kann man in gitlab / github schon recht weit kommen, wenn man diffs lesen kann
    • Will man es dann doch mal ausprobieren, sollte man fetch kennen und das Prinzip von remote tracking branches -> Im besten Fall guckt man sich hier auch mal an was denn HEAD bedeutet

    In der historie rumspringen, die Historie verändern, cherry picken und anderer Kram sind optional. Klar sind das teilweise features, die git Nutzung erst rechtfertigen, aber man kommt eben auch relativ gut ohne aus (und zu wissen, dass man theoretisch davon Gebrauch machen könnte, kann ja als Begründung git zu nutzen ja schon ausreichen)

    Vorraussetzung so ein bisschen ist natürlich, dass einer git zumindest akzeptabel kann (Das ist ist den meisten Fällen aber ja gegeben ... einer muss ja vorgeschlagen haben, es zu nutzen ;)). Dann sollte man mit einer 5min Einführung für alle anderen in git recht weit kommen.

    Es ist nun mal auch ein wichtiges tool und ich würde grade von Entwicklern erwarten, dass sie mal sich 30min damit auseinandersetzen können. Ist immer schwierig sich von alten Gewohnheiten loszulösen, aber git ist jetzt auch nicht grade von gestern und so ein "Trend tool", was in 3 Monaten wieder abgelöst ist. Ein bisschen anpassen muss man sich eben an den Fortschritt.

    Edit: Und vermutlich sind meine "Must Haves" sogar noch viel zu hoch gegriffen. In erster Linie muss es ja erstmal nur den zip Workflow ersetzen und entweder braucht man dann gar keine branches oder zumindest kein mergen, sondern kann wie gewohnt den Code manuell rüber kopieren auf den master 😉



  • @Leon0402 sagte in Programmiersprachen der Zukunft:

    Nun der Merge/Rebase Teil, meistens arbeitet man ja doch mit tools wie gitlab etc. und merge requests:

    Man kann per Button mergen, wenn es keine merge Konflikte gibt
    Mann muss das auch nicht unbedingt selbst machen ... Code Reviewen macht eh jemand anderes (hoffentlich) und einen git "Experten" wird es schon geben, der das Zeugs dann mergt
    Wenn man es dann doch mal selbst können möchte, halte ich es auch nicht für zwingend notwendig rebase zu kennen. Sollte man können, wenn man es ernst meint, aber notwendig ist es nicht

    Das kommt aber wirklich stark darauf an!

    Wir verwenden hier Gerrit als Review-Tool (so eingerichtet, dass jeder +2 geben kann und dann "Submit" klicken kann, sofern Jenkins nichts dagegen hat) und haben entschieden, dass es klarer/einfacher ist, wenn wir normalerweise immer git pull --rebase; gerrit_push_review machen, wobei letzteres ein Alias ist auf git push origin HEAD:refs/for/$(git symbolic-ref --short -q HEAD).

    Merges führen gerne zu wilder Historie.

    Aber das kommt sicher total darauf an, wie man arbeitet. Wir haben meist nur einen Haupt-Branch (und ggf. Branches für große, langfristige Features, die dann auch irgendwann gemerget werden, sowie Branches für Release-Fixes). Also im Prinzip machen wir zu 99% rebase und nur ganz selten mal einen merge.

    Kommt aber mit Sicherheit total auf die Anzahl der Entwickler, das Team etc. an. Jendenfalls hatten wir das bei meinem ehemaligen Arbeitgeber so und ich habe das dann seit Anfang an in der Firma, wo ich jetzt bin, so eingeführt - und es funktioniert gut.

    Ich benutze auch VSCode (wir haben hier 90% Python und 10% C++) und kommt mit dem grafischen Git-Zeugs überhaupt nicht klar - da weiß ich nie, was ich tatsächlich gerade mache 😉



  • @wob sagte in Programmiersprachen der Zukunft:

    Merges führen gerne zu wilder Historie

    Ich will dir auch gar nicht widersprechen, rebases haben schon ihre Berechtigung. Aber gewissermaßen sind sie eben nur nice to have. Git Historie kann man eh erstmal vergessen, denn wer neu mit git anfängt macht nur commits wie "Aktueller Stand, ich mach Feierabend, bis morgen!" 😉
    Kommt natürlich auch drauf an mit welcher begründung man git verwendet ... für mich ist der absolute Hauptgrund erstmal, dass man im Team angenehm zusammen arbeiten kann. Aus diesem Grund ist meine Liste mit den absoluten Grundanforderungen auch nur gering. Wenn dann mal jeder git für ein paar Wochen benutzt hat und sich einigermaßen sicher damit fühlt, würde ich natürlich auch dafür sorgen wollen, dass die anderen Vorteile von git gut genutzt werden können 🙂

    @wob sagte in Programmiersprachen der Zukunft:

    Ich benutze auch VSCode (wir haben hier 90% Python und 10% C++) und kommt mit dem grafischen Git-Zeugs überhaupt nicht klar - da weiß ich nie, was ich tatsächlich gerade mache

    Echt nicht? Also im allgemeinen bin ich wirklich absoluter Konsolen fan, was git (und viele weiter tools angeht) und hier so ne git gui wie sie z.B. in pycharm drin ist, wo man dann alle branches sieht und buttons zum pushen/pullen/fetchen etc. hat geht einfach gar nicht.
    Aber den git tab von VsCode finde ich wirklich eine große Erleichterung ... ich sehe auf einen Blick welche Dateien sind geändert haben, kann sie anklicken für einen diff und per maus klick adden. Auch commiten geht damit vergleichweise einfach.
    Sehr minimalistisch gehalten!
    Ich adde allerdings auch oft über die Konsole und commite, gerade wenn ich eig. alles adden will und das genau im Blick habe

    Edit: Man kann übriegens auch in gitlab rebasen per Button soweit ich weiß (zumindest bei der properitären variante?)


Anmelden zum Antworten