Themen Ideen Sammlung

Auf dieser Seite werden Themen Ideen gesammelt. Du hast Ideen? Möchtest etwas lernen oder du kannst uns etwas beibringen? Schreibe uns einen Kommentar.


Zurzeit stehen folgende Themen auf unserer Liste

Jetzt aber zum Linux Treffen!

Ein Kommentar

  1. Ich reich euch mal eine Beitragsidee die letzens beim Arbeiten mit Codeeditor sublime text gekommen ist ein. Es geht um das Feature Codefaltung in Editoren. Nich zu verwechseln mit Faltungscodes. Das ist was ganz anderes 🙂
    Es handelt sich ersteimal um einen Rohtext den man vielleicht noch einmal reflektieren müsste – was wir theoretisch bei einem unserer nächsten Zusammenkünfte tun könnten

    Tach an alle Linuxer,
    Frei nach Alfons – daas Theeema iss heute : Codefaltung-)

    Es geht um das Feature der Codefaltung und dessen effiziente Nutzung in
    Codeeditoren. Fast alle aktuellen Quelltexteditoren bieten dieses
    Ausstattungsmerkmal. Damit lassen sich ganze Codesequenzen im Quellcode ein
    und ausklappen. Sinn ist das man nicht seitenweise in seinem Code scrollen
    muss um diesen an einer ganz bestimmten Stelle zu editieren. Alle aktuell
    nicht benoetigten Codesequenzen werden einfach eingeklappt, und nur das
    interresierende zum editieren ausgeklappt.

    Realisiert wird dies durch eine zusätzliche Leiste am linken Rand des Quellcodeeditor neben der Zeilennummerierung ausserhalb des eigentlichen Textbereiches beispielsweise mit anfassbaren Pfeilen.

    So die Theorie. Basieren tut diese Technologie auf die automatische
    Erkennung einer zusammenhaengenden Codesequenz. Grundlage dafuer ist das
    Quellcode in Intervallen organisiert ist. Der Beginn eines Intervall wird
    durch ein bestimmtes syntaktisch elementares Zeichen oder einer Sequenz
    eingeleitet und am Ende durch deren komplimentaeres Element ausgeleitet.

    Beispiel waere hierzu die geschweifte Anweisungsblockklammer in der
    C-Programmierung zur Einrahmung eines Sets an Anweisungen. Oeffnende und
    zugehoerende schliessende Klammer werden im Quelltext von der Codefaltung
    identifiziert und der Code dazwischen ist dann wahlweise ein- oder ausklappbar.

    Ich benoetige dieses Feature aktuell in Zusammenhang mit der HTML- und
    JavaScript Programmierung. Theoretisch bieten sich diese Sprachen
    besonders gut fuer die Codefaltung an, da in ihnen das Prinzip der
    Intervallgueltigkeit durch die oeffnenden und schliessenden Tags auf die
    Spitze getrieben ist.

    Haken ist aber hierbei das die Faltung natuerlich nur nach Quelltextsyntaktischen und nicht nach semantischen Kriterien funktionieren kann. Ein auf und zuklappbares Quelltextintervall muss nicht automatisch auch eine eigene inhaltlich funktionale Einheit bilden.

    Eines der wenigen Gegenbeispiele sei im Folgenden erlaeutert. Wir lassen ein p – Absatz Tag” mit Hilfe der Codefaltung ein-  und ausgeklappen. In einem HTML- Formatierten klassischen Sachtext dient das P-Tag eigentlich nur der Formatierungsanweisung fuer die Absatzbildung in der Frontend Darstellung auf dem Bildschirm. Da Absaetze aber auch eine thematisch zusammenhaengende Informationseinheit bilden, haben wir in diesem speziellen Fall die Situation das die technologische Codefaltung mit der der semantischen korrespondiert.

    Moechte man aber beispielsweise einen Variablendeklarationsbereich innerhalb
    einer JavaScript Sequenz spezifisch ein oder ausklappen, wuerde die
    Codefaltung aber nur den kompletten JavaScript Bereich anhand der geamten
    oeffnenden und schliessenden Tag-Sequenz …
    identifizieren und alles ein oder ausklappen. Denn im Sinne der
    Quelltextsyntax stellt der Variablendeklarationsbereich erst eimal keine
    eigene Entitaet dar.

    Ich habe es mir mittlerweile angewöhnt semantisch eine Einheit bildenen
    HTML – Codes mit einer horizontalen Linie und einer mittig angeordneten
    Hinweismitteilung zum Beginn und einer 2. am Ende einzurahmen und damit vom
    anderen Code abzugrenzen. Diese Linie baue ich einfach mit Bindestrichen
    auf. Da sie Syntaktisch natuerlich in keiner Weise eine Wirkung haben darf
    ist sie Teil einer HTML – Kommentar Sequenz.

    In der Art:

    Bla, Bla, Bla


    Leider laesst sich eine so selbstdefinierte semantische Klammerung nicht in
    das Codefaltungsfeature einbinden da die Codefaltung Kommentarsequenzen
    generell ignorieren. Dachte ich zumindestens weil mir die Faltung im Editor sublime text zunaechst nicht gelang. Dazu aber spaeter mehr.

    Allerdings koennte ich sie im oben gezeigten Beispiel der Faltung von
    Absaetzen dazu nutzen Kapitelueberschrifen und deren Abschluss zu
    generieren Die Kapitelgrenzen weden vor und nach dem jeweiligen p-Tag
    gesetzt und sind damit selbst nicht Element der Codefaltung. Bleiben wenn
    man so will immer ausgeklappt. Sind alle Absaetze eingeklappt, seh ich vom
    Sachtext nichts mehr, koennte aber anhand der als Kommentarsequenz
    gestalteten Kapitelueberschrift sofort den Absatz identifizieren dem ich
    noch eine Anmerkung hinzufuegen moechte und diesen ueber die Codefaltung
    aufklappen.

    Eine faltfaehige Codesequenz ist im HTML – Kontext fast immer auch eine nach aussen hin wirkende HTML-Formatierungs Sequenz. D.h man kann nicht einfach HTML-Tags in den Quelltext einbauen die nur der spezifischen Faltung des Codes dienen sollen. Sie würden
    immer auch auf das Layout des Bildschirm Frontends durchschlagen.

    Mit nach meiner bisherigen Erkenntnis einer Ausnahme dem JavaScript
    Intervall einrahmenden – Tag.

    Man braeuchte also Quelltextstatements die nur in der Codefaltung wirken.
    Codeelemente die innerhalb eines Quelltextes in einem eigenen Kontext
    wirken, nennt man in einem anderen Zusammenhang typischer Weise
    Praeprozessor Statements.

    Im oben eräuterten Beispiel der separaten Einfassung des Variablendeklarationsabschnittes, für die Codefaltung koennte man also statt einen kompletten JavaSript intervall einrahmenden Script – Tag den Variablendeklaraionsbereich mit dem – Tag spezifisch einrahmen.
    D.h. obwohl der JavaScript – Bereich eigentlich weiterwirken soll wird
    er vor Beginn des Variablendeklarationsbereiches abgeschaltet und gleich
    wieder eingeschaltet. Das gleiche am Ende des Variablenbereiches. Wir haben
    damit die separate Anfassbarkeit des Variablendeklaraionsbereiches erreicht.

    Das aber ist eine unglueckliche Vorgehensweise den -Tag dazu Zweck zu entfremden eigentlich zusammenghoerige Kontexte kuenstlich zu fragmentieren nur um damit die spezifische Zugriffsfaehigkeit durch die Codefaltung zu erhalten.

    In unserem Fall braeuchten wir also eine Art HTML-Fake Tag
    das nur fuer die Codefaltung da ist, im HTML-Sinne aber keine
    Formatierungsbedeutung hat. Das aber ist ein Widerspruch in Sich.

    Hier waere also ein eigenstaendiges Tag fuer die Faltung wuenschenswert. Aber muss es ueberhaupt ein Tag sein. Die Codefaltung ist ein Feaure das universell und unabhaengig der gerade im Editor bearbeiteten Programmiersprache arbeitet. Sie funktioniert weil alle Programmiersprachen Syntaxelemente aufweisen die eine Klammerung von Kontexten ermoeglichen. Diese Synaxstrukturen werden von der Codefaltung adaptiv erkannt und fuer die Faltung beruecksichtigt.

    Das fuert zu der Frage welche Moeglichkeiten es ueberhaupt gibt einen zusammengehoerigen Kontext in einem Quelltext mit Mitteln der Notation zu klammern. Der Begriff Klammerung sagt es ja eigentlich schon. zunaechst eben alle Arten von klammernden Einzelzeichen also geschweifte, runde, eckige Klammern. Eine weitere waere die Klammerung nicht durch Einzelzeichen sondern zusammengehörigen öffnenden und schliessenden Zeichensequenzen. Ein erstes Beispiel ist hier die Blockkommentar Klammer /* */ in etlichen Programmiersprachen. In diese Kategorie gehören auch die oeffnenden und schliessenden HTML-Tags die ja oben schon ausfuehlich erlaeutert wurden.

    Eine weitere blieb mir allerdings bisher verborgen, und wird im folgenden erlaeutert.

    Ein aktuelles Experiment im Codeeditor sublime hat ergeben das HTML –
    Kommentarsequenzen eventuell doch fuer die Codefaltung geeignet sind. Ich
    habe festgestellt das die Codefaltung auch bei ihnen Funktioniert wenn die
    korrespondierenden Zeilen am Beginn und am Ende eines Codeblocks die
    gleiche horizontale Einruecktiefe aufweisen.

    Das koennte Hinweise auf die tiefer gehende Arbeitsweise des
    Codefaltungsfeature geben. Solange es geht versucht die Codefaltung
    zusammengehoerende Codeabschnitte anhand spezischer Syntaxmerkmale zu
    intervallisieren. Das Funktioniert wie oben schon erwaehnt weil dem Editor Syntaxgrammatiken gänger Programmiersprachen bekannt sind. Hilft das nicht weiter wie bei unsereren Kommentarsequenzen, koennte der Editor dann anhand von Codeeinrueckungen
    zusammengehoerende Schachtelungstiefen zu identifizieren versuchen. Diese
    Straregie koennte sogar Vorteile aufweisen weil der Codeeditor dann gar
    kein Syntaxwissen braeuchte. Das steckt quasi der Entwickler durch seine
    geschickte Einrueckungsstrategie in das System rein.

    Was ist die Quintessenz obiger Ueberlegungen. Mit keinem Stilmittel der physischen Kontextzusammenfassung allein, sei sie nun durch elementare Klammerungszeichen, Tag-Klammerung oder Einrueckungebenen des Quellextes erreicht, laesst sich der Konflikt der Diskrepanz der semantischen Kontextzusammenfassung mit mitteln der syntaktischen Klammerung wirklich umgehen.
    Aber im Arrangement entfalten sie vielleicht die gewünschte Wirkung.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.