Menü×

Der IT-Thread

  • #1801 Stinkachu 1 Nov. 2022, 06:49

    Meint ihr echt, dass KI den Job des Programmierers mittelfristig obsolet macht? Bei Versicherungen wird immer noch COBOL benutzt, die Flugsicherung läuft auf 386ern. Was ich damit sagen will: Abseits des Bleeding Edge sehe ich nicht, dass Umgebungen sich so schnell umstellen.
    Was ich mich aber tatsächlich gefragt habe, ob der Code von KIs tatsächlich noch von Menschen verstehbar ist. Was macht man denn, wenn eine Schulklasse die Kartonagefabrik besucht und dort ein Schneidroboter einen Karton aus der kleinen Annabell rausschneidet? Was macht man, wenn kein Mensch mehr den Code begreift (bzw. begreifen kann)?

  • #1802 Karl Klammer 1 Nov. 2022, 08:37

    Compiler schreiben die es für uns wieder rückwärts übersetzen

  • Mod/RDW
    #1803 Sylvester 1 Nov. 2022, 08:49

    Zitat von: Qu4rkey

    Compiler schreiben die es für uns wieder rückwärts übersetzen
    Wie läuft es mit Python?

  • #1804 Karl Klammer 1 Nov. 2022, 08:56

    So lala. Mein Verkaufsbot macht ned so ganz was ich will bezüglich aus ifelse wieder rauskommen

    Kann man ned einfach if diesdas dann springe zu Zeile xy machen

  • Mod/RDW
    #1805 Sylvester 1 Nov. 2022, 09:16

    Zitat von: Qu4rkey

    So lala. Mein Verkaufsbot macht ned so ganz was ich will bezüglich aus ifelse wieder rauskommen

    Kann man ned einfach if diesdas dann springe zu Zeile xy machen
    Du meinst sowas wie ein GOTO. Ist leider in Python nicht implementiert. (Zum Glück)

    Aber wenn du dein Programm nicht postest, kann dir auch keiner helfen.

  • #1806 Gelöschtes Mitglied 1510 1 Nov. 2022, 09:16

    ich fick oich IT_kaschber in den arrrsch

  • #1807 RichterinWinkelmann 1 Nov. 2022, 09:25

    One can also use exceptions to provide a “structured goto” that works even across function calls. Many feel that exceptions can conveniently emulate all reasonable uses of the “go” or “goto” constructs of C, Fortran, and other languages. For example

    class label(Exception): pass # declare a label try: ... if condition: raise label() # goto label ... except label: # where to goto pass ...

    This doesn’t allow you to jump into the middle of a loop, but that’s usually considered an abuse of goto anyway. Use sparingly.

  • #1808 pump3 1 Nov. 2022, 09:38

    Zitat von: Stinkachu

    Meint ihr echt, dass KI den Job des Programmierers mittelfristig obsolet macht? Bei Versicherungen wird immer noch COBOL benutzt, die Flugsicherung läuft auf 386ern. Was ich damit sagen will: Abseits des Bleeding Edge sehe ich nicht, dass Umgebungen sich so schnell umstellen.
    Was ich mich aber tatsächlich gefragt habe, ob der Code von KIs tatsächlich noch von Menschen verstehbar ist. Was macht man denn, wenn eine Schulklasse die Kartonagefabrik besucht und dort ein Schneidroboter einen Karton aus der kleinen Annabell rausschneidet? Was macht man, wenn kein Mensch mehr den Code begreift (bzw. begreifen kann)?
    Code versteht man jetzt schon nicht mehr. Es sei denn man arbeitet sich intensiv rein. Und Assembler den Compiler produzieren ist noch unverständlicher.
    Das ist normal. Genausowenig wie andere Technologien.
    Das war schon immer so. Seitdem die Waffenschmiede von Assurbanipal II. den ulder-bedäss dreifach-gefiederten Pfeil erfunden haben, haben sich Menschen gefragt ob die Wissenschaft jetzt zu weit gegangen ist.
    Alles Blabla.
    Bei Robotern hat man das Problem nicht, die müssen alle in ihren Käfigen sitzen zu denen kein Mensch Zugang hat.

    Zitat von: Qu4rkey
    So lala. Mein Verkaufsbot macht ned so ganz was ich will bezüglich aus ifelse wieder rauskommen

    Kann man ned einfach if diesdas dann springe zu Zeile xy machen
    Definier doch funktionen die das machen was du brauchst und rufe dann die Funktion auf.
    Bsp:
    Python:
    def myAdder(a, b):
        return a+b
    
    bla
    bla
    bla
    
    print("Das resultat ist:")
    print(str(myAdder(zahl1, zahl2)))
    bla
    bla

  • Mod/RDW
    #1809 Sylvester 1 Nov. 2022, 11:50

    Ja gut, Kwarki hat für Python wohl nicht die Stärke, die es braucht. Dann frag ich was. Ich will mit PySide6, QML und Python eine Applikation bauen, jedoch funktioniert das Scheiß Property-Binding wohl nicht so wie ich mir das vorstelle. In C++ habe ich sowas schon mal gemacht, da hat es geklappt.

    Er speichert so einen Mist im Ini-File:

    INI:
    [personal]
    first_name=@Invalid()
    last_name=@Invalid()
    street=@Invalid()
    postal_code=@Invalid()
    location=@Invalid()

    Spoiler: AppWindow.qml
    CSS:
    import QtQuick.Controls
    import QtQuick.Layouts
    import QtQuick
    
    import com.example.app 1.0
    
    Window {
        id: settingsDialog
    
        visible: true
        width: 400
        height: 200
    
        Settings {
            id: settings
        }
    
        GridLayout {
            columns: 2
            anchors.fill: parent
    
            Text { text: qsTr("Vorname") }
            TextField {
                id: first_name
                text: settings.first_name
            }
    
            Text { text: qsTr("Nachname") }
            TextField {
                id: last_name
                text: settings.last_name
            }
    
            Text { text: qsTr("Straße u. Nr.") }
            TextField {
                id: street
                text: settings.street
            }
    
            Text { text: qsTr("Postleitzahl") }
            TextField {
                id: postal_code
                text: settings.postal_code
            }
    
            Text { text: qsTr("Ort") }
            TextField {
                id: location
                text: settings.location
            }
    
            Button {
                text: "Laden"
                onClicked: {
                    console.log("Laden...")
                    settings.load()
                }
            }
    
            Button {
                text: "Speichern"
                onClicked: {
                    console.log("Speichern...")
                    settings.save()
                }
            }
        }
    
        Component.onCompleted: {
            console.log("I'm loaded.")
            settings.load()
        }
    }

    Spoiler: Settings.py
    Python:
    # To be used on the @QmlElement decorator
    
    # (QML_IMPORT_MINOR_VERSION is optional)
    
    QML_IMPORT_NAME = "com.example.app"
    QML_IMPORT_MAJOR_VERSION = 1
    
    from PySide6.QtCore import QObject, Signal, Slot, Property, QSettings
    from PySide6.QtQml import QmlElement
    
    @QmlElement
    class Settings(QObject):
    
        def __init__(self, parent=None):
            super().__init__(parent)
    
            self.__first_name = None
            self.__last_name = None
            self.__street = None
            self.__postal_code = None
            self.__location = None
    
        @Slot()
        def load(self):
            self.__settings = QSettings('settingsdialog.ini', QSettings.IniFormat)
    
            self.first_name = self.__settings.value('personal/first_name')
            self.last_name = self.__settings.value('personal/last_name')
            self.street = self.__settings.value('personal/street')
            self.postal_code = self.__settings.value('personal/postal_code')
    
        @Slot()
        def save(self):
            self.__settings.setValue('personal/first_name', self.__first_name)
            self.__settings.setValue('personal/last_name', self.__last_name)
            self.__settings.setValue('personal/street', self.__street)
            self.__settings.setValue('personal/postal_code', self.__postal_code)
            self.__settings.setValue('personal/location', self.__location)
    
        def get_first_name(self):
            return self.__first_name
    
        def set_first_name(self, name):
            if self.__first_name != name:
                self.__first_name = name
                self.first_name_changed.emit(name)
    
        first_name_changed = Signal(str)
    
        def get_last_name(self):
            return self.__last_name
    
        def set_last_name(self, name):
            if self.__last_name != name:
                self.__last_name = name
                self.last_name_changed.emit(name)
    
        last_name_changed = Signal(str)
    
        def get_street(self):
            return self.__street
    
        def set_street(self, street):
            if self.__street != street:
                self.__street = street
                self.street_changed.emit(street)
    
        street_changed = Signal(str)
    
        def get_postal_code(self):
            return self.__postal_code
    
        def set_postal_code(self, code):
            if self.__postal_code != code:
                self.__postal_code = code
                self.postal_code_changed.emit(code)
    
        postal_code_changed = Signal(str)
    
        def get_location(self):
            return self.__location
    
        def set_location(self, loc):
            if self.__location != loc:
                self.__location = loc
                self.location_changed.emit(loc)
    
        location_changed = Signal(str)
    
        first_name = Property(str, fget=get_first_name, fset=set_first_name, notify=first_name_changed)
        last_name = Property(str, fget=get_last_name, fset=set_last_name, notify=last_name_changed)
        street = Property(str, fget=get_street, fset=set_street, notify=street_changed)
        postal_code = Property(str, fget=get_postal_code, fset=set_postal_code, notify=postal_code_changed)
        location = Property(str, fget=get_location, fset=set_location, notify=location_changed)

    Spoiler: Main.py
    Python:
    import sys
    from PySide6.QtCore import QUrl
    from PySide6.QtGui import QGuiApplication
    from PySide6.QtQml import QQmlApplicationEngine, qmlRegisterType
    
    from Settings import Settings
    
    if __name__ == '__main__':
        app = QGuiApplication(sys.argv)
    
        qmlRegisterType(Settings, "com.example.app", 1,0, "Settings")
        engine = QQmlApplicationEngine(QUrl("AppWindow.qml"))
    
        app.exec()

  • Mod/RDW
    #1810 BigBANG 1 Nov. 2022, 11:54

    Wer braucht Stackoverflow, wenn man GWN hat aldr

  • #1811 RichterinWinkelmann 1 Nov. 2022, 11:57

    Qt ins Glas hinein.

    Ich wette es hat irgendwo Probleme von diesem qStr zu konvertieren.


    E: Lel, mein Handy hat aus Glas Gulag gemacht. Da sitzt die Überzeugung wohl tief.

  • Mod/RDW
    #1812 BigBANG 1 Nov. 2022, 12:00

    Ich empfehle jedem, der eine neue Library oder Sprache erlernt "GitHub Copilot" zu verwenden.
    Dann einfach einen Kommentar schreiben, der sagt, was der Code machen soll und sich das Ergebnis anschauen.
    Es spart die Google-Suche.

  • Mod/RDW
    #1813 Sylvester 1 Nov. 2022, 12:07

    Zitat von: RichterinWinkelmann

    Qt ins Gulag hinein.

    Ich wette es hat irgendwo Probleme von diesem qStr zu konvertieren.
    Das qStr ist nur für die Labels. Das ist gar nicht involviert. Qt und die Widgets ist schon knorke, aber dieses QML-Gedöns ist leider teilweise der pure Krebs. Ich sehe leider derzeit nix besseres und die Widgets werden auch nicht weiterentwickelt, und bei mir gibt es teilweise schon Darstellungsfehler auf dem Desktop mit den Widgets.

    Zitat von: RichterinWinkelmann
    E: Lel, mein Handy hat aus Glas Gulag gemacht. Da sitzt die Überzeugung wohl tief.
    Lol, das war nicht dein Handy.

  • Mod/RDW
    #1814 BigBANG 1 Nov. 2022, 12:20

    Zitat von: Hexley

    Ich sehe leider derzeit nix besseres und die Widgets werden auch nicht weiterentwickelt, und bei mir gibt es teilweise schon Darstellungsfehler auf dem Desktop mit den Widgets.
    Darf ich die Frage nach dem Warum stellen?
    Wenn was nicht mehr weiterentwickelt wird, würde ich es auch nicht mehr benutzen.

  • Mod/RDW
    #1815 Sylvester 1 Nov. 2022, 12:23

    Zitat von: BigBANG

    Darf ich die Frage nach dem Warum stellen?
    Wenn was nicht mehr weiterentwickelt wird, würde ich es auch nicht mehr benutzen.
    QML/QtQuick wird schon weiterentwickelt. Das oben ist ein QML-Beispiel.

  • #1816 Karl Klammer 1 Nov. 2022, 12:25

    Zitat von: Hexley

    Ja gut, Kwarki hat für Python wohl nicht die Stärke, die es braucht.
    Hab ne Lösung gefunden. Beim verschachteln darauf achten, immer mit so vielen else wieder nauszugehen, wie man mit ifs neigeht. Daran hats gelegen, dass es je nach input nicht weiter gehen wollte.

    Dieser Beitrag wurde von Karl Klammer am 01.11.2022 12:33:27 bearbeitet.
  • #1817 Katzus Belli 1 Nov. 2022, 12:27

    Zitat von: BigBANG

    Wie geht ihr damit um, dass euer ganzes IT-Wissen in 10-20 Jahren komplett von AI ersetzt wird, die jede Software besser schreibt, als man es per Hand je könnte?
    Frage ist ernst gemeint, mich belastet das ein wenig.

  • #1818 RichterinWinkelmann 1 Nov. 2022, 12:38

    Zitat von: Qu4rkey

    Hab ne Lösung gefunden. Beim verschachteln darauf achten, immer mit so vielen else wieder nauszugehen, wie man mit ifs neigeht. Daran hats gelegen, dass es je nach input nicht weiter gehen wollte.
    Warum Compiler 1 gute Sache sind, Level Otten.

  • Mod/RDW
    #1819 BigBANG 1 Nov. 2022, 13:26

    Zitat von: Qu4rkey

    Hab ne Lösung gefunden. Beim verschachteln darauf achten, immer mit so vielen else wieder nauszugehen, wie man mit ifs neigeht. Daran hats gelegen, dass es je nach input nicht weiter gehen wollte.
    Keine Ahnung, ob das für dein Problem relevant ist, aber ich würde sowas:
    C#:
    if (a == 1) {
        if (b == 1) {
            if (c == 1) {
                penis();
            }
        }
    }

    Immer ersetzen mit:
    Code:
    if (a != 1) return;
    if (b != 1) return;
    if (c != 1) return;
    penis();

    Einrückungen wenn möglich immer vermeiden.

  • #1820 pump3 1 Nov. 2022, 13:33

    Zitat von: RichterinWinkelmann

    Qt ins Gulag hinein.

    Ich wette es hat irgendwo Probleme von diesem qStr zu konvertieren.


    E: Lel, mein Handy hat aus Glas Gulag gemacht. Da sitzt die Überzeugung wohl tief.
    Qt ist super.
    Das neumodische QML zeugs vermutlich weniger, aber widgets und die ganzen Datenklassen, netzwerk , MVC etc... eigentlich richtig nais.