Hallo Besucher, der Thread wurde 5,2k mal aufgerufen und enthält 35 Antworten

letzter Beitrag von whose am

OT aus "Einzelne Zeichen aus String"

  • "Wozu dann überhaupt BASIC?" und zur ketzerischen Antwort "Eben -> Lern Assembler" Sorry...

    Oder auch C geht auf dem C64.
    Für Text-Bearbeitungstasks sicher einfacher als in Assembler.

  • Eine andere Sprache ist ja schön und gut ABER ich möchte erstmal Basic richtig verstehen befor ich assembler,c oder sonstwas lerne !

    Das finde ich auch eine gute Einstellung. Yep, zuerst die Grundlagen verstehen.
    Mir ging es eher darum, dass man nicht gleich wegen der Garbage Collection auf Assembler wechseln muss.


    Der Wechsel auf eine andere Programmiersprache (z.B. auf einem PC) später wird - zumindest von den Grundlagen her - nicht also schwierig sein.
    Viele hier - wie auch ich - haben in Deinem Alter in den 80ern auch mit dem C64 und BASIC angefangen und es war der Grundstein für die weitere Berufsauswahl.
    Ich bin heute noch in der IT tätig und wenn es zwar manchmal stressig sein kein, im Grundsatz liebe ich es und die Grundlagen dazu habe ich mit dem C64 auf dem Weg mitbekommen.

  • Oder auch C geht auf dem C64. Für Text-Bearbeitungstasks sicher einfacher als in Assembler.


    Wozu C - Pascal ist viel sauberer


    Ja, für textlastige Anwendungen ist auch C (wegen fehlendem String-Datentyp) nicht der Bringer.


    EDIT:

    GPascal

    ... hat leider auch keinen Stringtypen, musste halt in 16 KB passen,

  • C kennt keine Zeichenketten, nur Pointer.


    Davon ab verwenden die Funktionen der Standardbibliothek Pointer vom Typ "char *" als Zeiger auf Zeichenketten, welche _vereinbarungsgemäß_ durch Nullbytes terminiert werden.


    Es hält dich aber niemand davon ab, Varianten der I/O-Funktionen zu schreiben, welche mit Länge+Inhalt arbeiten.

  • Du hast jetzt nicht wirklich verstanden, was ich mit meinem Post #29 geschrieben hab.


    C hat diesbezüglich keine "Nachteile" gegenüber V2 BASIC. Alles, was Du in V2 BASIC machen kannst, geht auch in C - auch dann, wenn Nullbytes in "Strings" auftauchen. Umgekehrt ist das nicht so, da Zeichenketten in V2 auf 255 Zeichen beschränkt sind.

  • Abgesehen von der internen Repräsentation sei vielleicht dazu gesagt, dass C die Verwaltung von Strings elegant aus dem Weg geht und das dem Betriebssystem bzw. Librarys überlässt, also an Aufrufe der mailoc()-Funktion delegiert. Die Verwaltung gehört an sich nicht zur Sprache, so wie es aber im Gegensatz zumindest bei BASIC V2 der Fall ist. Aber auch hinter der malloc()-Funktion verbirgt sich eine mehr oder weniger gute Speicherorganisation, die sich da mit Speichermüll herumschlagen muss. Das ist dann auch schon wieder ein nettes Betätigungsfeld an sich, wie man so etwas geschickt macht.


    Aber wie Mike schon geschrieben hat, ist C genau genommen nicht auf Strings - als Konvention verstanden - festgelegt. Ein dynamisch angeforderter Speicherbereich könnte ebenso als Datenstruktur verwendet werden, die mit einer Längeninformation ausgestattet ist, so im Stile der Basic-V2-Strings (dann gehen freilich auch 0-Bytes mitten drinnen). ;)

  • Hallo ,


    Es war ja eine einfache Fragen die ich gestellt habe .
    Aber ich finde es toll das dieses Forum so Scrivens ist das sich selbs um so einfachen Fragen gleich Diskussionen eröffnen :dafuer:

    Ja, das ist oft so hier. Manchmal entstehen interessante Diskussion so.
    Aber eben: Sobald wir uns im Bifspace bewegen, dann nimmt die Realitätsverzehrung im 7-dimensionalem Zeitraumkontinuum enorm zu .... :bgdev

  • Hallo ,


    Es war ja eine einfache Fragen die ich gestellt habe .
    Aber ich finde es toll das dieses Forum so Scrivens ist das sich selbs um so einfachen Fragen gleich Diskussionen eröffnen :dafuer:

    Normalerweise sind solche einfachen Fragen auch mit einem einfachen Blick ins Bedienungshandbuch oder Wiki geklärt.


    So weit waren wir ja auch schon im zweiten Post dieses Threads.



    Ich kann mir aber gut vorstellen, daß sich für einen Programmieranfänger der Sinn all der im BASIC vorhandenen Befehle und Funktionen erst mal gar nicht erschließt; wenn man sich dann an einer Stelle "vortastet", kommt man dann möglicherweise auf Problemstellungen (hier: ein einzelnes Zeichen aus einer Zeichenkette herausholen), für die es im BASIC eben schon eine vorgefertigte Lösung gibt, und deren Einsatz bei denjenigen, die schon länger programmieren "automatisch" erfolgt, ohne daß dazu noch groß darüber nachgedacht werden muß.


    BASIC hat für diese Problemstellung die MID$()-Funktion, und genau dafür ist sie da: eine "Unter-"Zeichenkette (kann eben auch ein einzelnes Zeichen sein) *mitten* aus einer anderen Zeichenkette herauszuholen.


    Nun ist der Gebrauch von Zeichenketten, mit Verkettung durch "+" und Erzeugung von Teilzeichenketten mit MID$(), RIGHT$() und LEFT$() geradezu typisch für BASIC - mit diesem Komfort sieht man das recht selten in anderen Programmiersprachen. Die tatsächliche Ausführung der Zeichenkettenverwaltung im BASIC des C64 ist indes mit einigen handwerklichen Mängeln behaftet, so daß sich ab einer größeren Menge von verwendeten Strings die Auswirkungen der bereits erwähnten Garbage Collection überproportional stark auswirken. Dazu benötigt es allerdings dennoch eine hohe zweistellige Anzahl von "aktiven" Strings, damit die Pausen durch die GC bemerkbar werden.


    Jan, ich sehe jetzt nicht, daß Du schon soweit wärst, daß sich diese Problematik in irgendwelchen deiner Programme derartig auswirken könnte. Sobald Du mal soweit bist, hast Du dir vorher längst - aber aus anderen Gründen! - die Maschinensprache angeeignet, und dann kannst Du dir passgerechte Lösungen selbst konstruieren.


    Insofern kannst Du die von BIF vorgeschlagenen Problemlösungen getrost ignorieren. Wenn Du sie bräuchtest, hättest Du keine Chance zu verstehen wie sie arbeiten, und wenn Du verstehst, wie sie arbeiten, brauchst Du sie nicht (mehr).

  • Nun ist der Gebrauch von Zeichenketten, mit Verkettung durch "+" und Erzeugung von Teilzeichenketten mit MID$(), RIGHT$() und LEFT$() geradezu typisch für BASIC - mit diesem Komfort sieht man das recht selten in anderen Programmiersprachen.

    Ähm, Konkatenation und Extraktion von Substrings gibt es in so ziemlich jeder Programmiersprache, wovon sprichst du hier?

  • Zitat von Henning

    Ähm, Konkatenation und Extraktion von Substrings gibt es in so ziemlich jeder Programmiersprache, wovon sprichst du hier?

    Das prominenteste Gegenbeispiel wurde hier schon genannt: in C gehört die Zeichenkettenverarbeitung nicht zum Sprachkern. Dort wird das über Funktionen in der Standardbibliothek abgewickelt.


    Davon ab können jetzt gerne die Perl-, Python- oder sonstwas-Jünger aus ihren Löchern hervorkriechen - *hier* in dem Thread geht es um Strings in BASIC. :bgdev

  • Das prominenteste Gegenbeispiel wurde hier schon genannt: in C gehört die Zeichenkettenverarbeitung nicht zum Sprachkern. Dort wird das über Funktionen in der Standardbibliothek abgewickelt.

    Haarspalterei. Was glaubst du, warum es Standardbibliothek heißt? Und vom "Sprachkern" bei einem 8-Bit-Heimcomputer-BASIC-Interpreter zu sprechen, ist nicht sonderlich vergleichsfähig mit einer Systemsprache wie C oder "Programmiersprachen" im allgemeinen -- BASIC ist notgedrungen monolitisch und muss alles mitbringen, was nötig ist. Oder sagst du deinem 8K großen, ROM-basierten Basic-Interpreter, welche Bibliotheken und/oder Module er aus einem fiktiven Standard-Include-Pfad bitte einzubetten hat?

    Davon ab können jetzt gerne die Perl-, Python- oder sonstwas-Jünger aus ihren Löchern hervorkriechen

    Sehr freundlich ausgedrückt.

    *hier* in dem Thread geht es um Strings in BASIC.

    Du hast mit Pauschlaussagen zu anderen Programmiersprachen angefangen, sorry.

  • Henning, was willst Du eigentlich?


    Die Diskussion über Zeichenkettenfunktionen hat hier eine Lösung gefunden.


    Du hängst hier eine Nachfolgediskussion an einer kleinen Nebenaussage von mir, Zitat: "[D]er Gebrauch von Zeichenketten [ist] typisch für BASIC - mit diesem Komfort sieht man das recht selten in anderen Programmiersprachen." auf.


    Wenn dir diese Aussage nicht paßt, ist das nicht mein Problem.


    Ich hatte in der Vergangenheit genug Programmiersprachen zwischen, um mir da ein Urteil erlauben zu können. Wo Programmiersprachen reguläre Ausdrücke anbieten, da ist die Beschreibung von Zeichenkettenoperationen noch kompakter als in den meisten BASIC-Dialekten - aber reguläre Ausdrücke versteht man nicht ohne viel Übung. Und die Handhabung von Zeichenketten über Funktionen, und nicht innerhalb von normalen Ausdrücken, wie BASIC es erlaubt, ist eben nicht so komfortabel wie in BASIC!

    Zitat von Henning

    Du hast mit Pauschlaussagen zu anderen Programmiersprachen angefangen, sorry.

    Mit der Erwähnung von C und Pascal seitens anderer User war da das Kind schon eher in den Brunnen gefallen.


    So, das war's für mich. Ich bin hier raus.