Probleme mit Strings/MutableStrings

  • RE: Textparsing - Lex & Yacc ist die Wahl

    Ist das nicht ein bisschen oversized. Er will ja nur mathematische Ausdrükce parsen und fängt gerade an.

    Ich habe das vor Ewigkeiten mal mit GFA Basic gemacht. Dazu benötigt man nun wirklich nicht gleich lex und yacc.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Was spricht eigentlich gegen meine AppleScript-Methode?

    Dass die Performance nicht so umwerfend sein dürfte, ist doch bei einem Taschenrechner relativ egal und man hätte diese ganzen Klammerungs- und Operatorprioritätsgeschichten for free...

    Das ist allemal einfacher, als mit NSScanner was eigenes zu bauen. Einen kleinen "Präprozessor" zu schreiben, damit die Klammerung auch korrekt ist, dürfte kein so großes Problem sein.

    Klar kann man auch einen ganzen Haufen Code schreiben, der dann letztlich das gleiche vielleicht schneller macht und sich hinterher auf die Schulter klopfen, und es gibt sicher Szenarien, die das rechtfertigen würden, aber für einen Taschenrechner als Anfängerprojekt? Ich glaube nicht... ;)
  • Erstens kann es nicht schaden, auch zumindest ein wenig mit AppleScript umgehen zu können, da die meisten Cocoa-Programme von Scriptability in beiden Richtungen profitieren können.

    Und zweitens hat das Schreiben eines mathematischen Parsers dagegen im Kern viel weniger mit Cocoa zu tun und ist mit Sicherheit keine geeignete Anfängerübung für jemanden, der überhaupt erst mit Programmierung anfängt...
  • Original von omz

    Und zweitens hat das Schreiben eines mathematischen Parsers dagegen im Kern viel weniger mit Cocoa zu tun und ist mit Sicherheit keine geeignete Anfängerübung für jemanden, der überhaupt erst mit Programmierung anfängt...


    Sag ich doch, er will Cocoa /Obj. C lernen und nicht AppleScript.
    Wenn er jetzt auch noch damit anfängt, wird er wohl bald die Übersicht verlieren.

    Naja er hat ja schon ein halbes Jahr Obj. C Erfahrung.

    Im Prinzip finde ich es keine schlecht Übung einen Taschenrechner zu machen, vielleicht erst mal nur mit den Standardfunktionen. Den Parser kann er doch immer noch später einbauen.
  • 1. man braucht keine fundierten applescript-kenntnisse, um ein skript wie "2+3" zu verstehen...
    2. ein skript aus obj-c-code auszuführen (zumal ein so simples) hat mehr mit cocoa als mit applescript zu tun.
    3. du wirst um applescript früher oder später nicht herumkommen, wenn du ernsthaft cocoa programmierst.
    4. ich glaube nicht, dass das level, das man mit dem hillegass bis seite 77 erreicht, ausreicht, um einen parser zu schreiben.
  • 5. sind übungen motivierender, wenn man etwas produziert, das es noch nicht gibt und nicht ewig etwas nachbaut, das andere schon gemacht und man einfach verwenden könnte.

    wie wär's denn mit latex-gestütztem rendering des mathematischen ausdrucks im display oder sowas? oder auch irgendwas anderes. würdest du auf die idee kommen, eine Kategoriemethode in NSString zu bauen, die -mySuperFloatValue heißt und mit einem NSScanner eine Gleitkommazahl parst? Die gibt es schon? Ach so...
  • War jetzt eher eine allgemeine Empfehlung - lohnt natürlich nicht in jeder Situation. Andererseits ist Compiler- und Parserbau jetzt auch nicht gerade was ideales für Anfänger, aber ich denke trotzdem, dass es nicht schaden kann sich damit (auch lex & yacc) und mit regulären Ausdrücke und Automaten zu beschäftigen.

    Es ist damit zumindest wesentlich entspannter.

    Gruß
    Chris
  • Original von omz
    1. man braucht keine fundierten applescript-kenntnisse, um ein skript wie "2+3" zu verstehen...
    2. ein skript aus obj-c-code auszuführen (zumal ein so simples) hat mehr mit cocoa als mit applescript zu tun.
    3. du wirst um applescript früher oder später nicht herumkommen, wenn du ernsthaft cocoa programmierst.
    4. ich glaube nicht, dass das level, das man mit dem hillegass bis seite 77 erreicht, ausreicht, um einen parser zu schreiben.


    1. wie schon gesagt er will kein applescript lernen
    3. ja?? warum denn??
    4. das hat ja auch niemand gesagt

    das er im Moment noch keinen Parser bauen kann, sieht er ja selber, es geht ja nur darum COCOA / OBJECTIVE C zu lernen (wie er ja selbst schon gesagt hat) und nicht applescript und auch nicht latex oder sonst was, sonst wäre er ja nicht in diesem Forum.
  • 1. Aha, er lernt nach dem "Cocoa Programming for Mac OS X", da ist auch ein Kapitel über AppleScript drin. Das wäre ja so, als würde man sagen "Er will Cocoa lernen und nicht CoreData"; NSAppleScript, NSAppleEventDescriptor etc. sind keine Cocoa-Klassen?

    3. Um mal im Beispiel zu bleiben: Ein skriptfähiger Taschenrechner wäre schon ein interessantes (Cocoa-)Programm, zumal es über die Funktion des Standard-Rechners hinausginge. Und es wäre sogar noch sinnvoll, man könnte z.B. eigene Funktionstastenbelegungen von fortgeschrittenen Benutzern hinzufügen lassen, die dann entsprechende mathematische Funktionen per AppleScript beschreiben können. Die allermeisten erfolgreichen (nativen) Mac-Programme sind skriptfähig. Schau dir z.B. mal die OmniGroup-Apps an. Hast du schon mal ein Cocoa-Programm skriptfähig gemacht? Hatte das nichts mit Cocoa zu tun?
    Ich finde es demotivierend, ein Programm zu bauen, das sich in nichts von einem schon vorhandenen unterscheidet, das hat was mit extrinsischer und intrinsischer Motivation zu tun...

    4. :)
  • Original von omz
    1. Aha, er lernt nach dem "Cocoa Programming for Mac OS X", da ist auch ein Kapitel über AppleScript drin. Das wäre ja so, als würde man sagen "Er will Cocoa lernen und nicht CoreData"; NSAppleScript, NSAppleEventDescriptor etc. sind keine Cocoa-Klassen?

    Soweit ich mich erninnern kann, ist das Kapitel ziemlich zum Schluß, was wohl auch Sinn macht ;)
    Natürlich sind das Cocoa-Klassen, aber muss ich sie deswegen auch nutzen, wenn ich sie nicht brauche??

    3.
    Ich finde es demotivierend, ein Programm zu bauen, das sich in nichts von einem schon vorhandenen unterscheidet, das hat was mit extrinsischer und intrinsischer Motivation zu tun...

    4. :)


    Für Ihn ist es warscheinlich wichtiger im Moment überhaupt ein Programm zu bauen und genau darum geht es doch hier eigentlich.
    ich glaube nicht das es ihm wichtig ist das es Scriptfähig ist.
  • Soweit ich mich erninnern kann, ist das Kapitel ziemlich zum Schluß, was wohl auch Sinn macht :)
    Natürlich sind das Cocoa-Klassen, aber muss ich sie deswegen auch nutzen, wenn ich sie nicht brauche==

    Kommt drauf an, was man "brauchen" nennt... du brauchst auch z.B. keinen NSKeyedArchiver, weil du das alles auch low-level mit C hinkriegen kannst...

    Für Ihn ist es warscheinlich wichtiger im Moment überhaupt ein Programm zu bauen und genau darum geht es doch hier eigentlich.
    ich glaube nicht das es ihm wichtig ist das es Scriptfähig ist.

    Wohl richtig, das Beispiel sollte auch nur verdeutlichen, dass AppleScript ziemlich viel mit Cocoa zu tun hat. Um ein Cocoa-Programm skriptfähig zu machen, musst du keine einzige Zeile AppleScript schreiben. Klar ist das ein eher fortgeschrittenes Thema, aber es ging ja auch eigentlich nicht darum, sein Programm skriptfähig zu machen, sondern ein simples AppleScript von seinem Programm aus auszuführen und das würde ich absolut zu den Cocoa-Basics zählen!
  • Original von longW
    Könnt Ihr nicht einfach warten, bis 'S*W*A*T" aus der Schule zurück ist?
    W.


    ^^^

    Original von Wolf_10de
    Für Ihn ist es warscheinlich wichtiger im Moment überhaupt ein Programm zu bauen und genau darum geht es doch hier eigentlich.
    ich glaube nicht das es ihm wichtig ist das es Scriptfähig ist.


    irgendwie hast du recht
    ich will das mein taschenrechner rechnen kann und (möglichst) in cocoa geschrieben ist
    der soll nicht unbedingt scripte ausführen können

    danke übrigens für die ganzen Antworten.
    Wenn Word für längeres gemacht wäre, würde es Sentence, Page oder Article heißen.