Sammy: Vorher auf include-Funktionen zugreifen?

Hallo,

kann ich am Anfang eines php- Programms auf eine Funktion zugreifen, die erst später als include geladen wird?

Wenn php erstmal alles lädt und dann mit der Ausführung startet, müsste es ja gehen.

Oder führt php bereits Programmcode aus, ohne zu wissen, was später kommt?

Güße, Sammy

  1. zur Erklärung:

    Das include ist ein HTML- Formular mit der zugehörigen PHP- Prüfung der Eingabedaten (das ist die Funktion)

    Wenn das Formular fehlerhaft abgeschickt wird, soll oben auf der HTML- Seite eine Fehlernachricht erscheinen.

    Ich kann das include nicht an den HTML- Anfang setzen, denn das Formular soll unten auf der Seite sein.

    Sammy

    1. Mahlzeit Sammy,

      Das include ist ein HTML- Formular mit der zugehörigen PHP- Prüfung der Eingabedaten (das ist die Funktion)

      Das heißt, es werden direkt beim Ausführen der Datei bereits Ausgaben generiert? Und zusätzlich sind dort Funktionen zur Überprüfung der Daten enthalten?

      Ich kann das include nicht an den HTML- Anfang setzen, denn das Formular soll unten auf der Seite sein.

      Dann solltest Du lieber die Ursache für Dein Problem - nämlich die ungeschickte Vermischung Deines Codes - beheben. Halte Dich ans EVA-Prinzip, dann kann eigentlich kaum etwas schiefgehen.

      Warum müssen in der Datei, die für die Ausgabe eines Formular sorgt, auch die Funktionen für die Überprüfung der enthaltenen Formulardaten enthalten sein? Diese Funktionen sind doch eigentlich nur während der Verarbeitung der Daten erforderlich.

      MfG,
      EKKi

      --
      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      1. Hallo, EKKi,

        Dann solltest Du lieber die Ursache für Dein Problem - nämlich die ungeschickte Vermischung Deines Codes - beheben. Halte Dich ans EVA-Prinzip, dann kann eigentlich kaum etwas schiefgehen.
        Warum müssen in der Datei, die für die Ausgabe eines Formular sorgt, auch die Funktionen für die Überprüfung der enthaltenen Formulardaten enthalten sein? Diese Funktionen sind doch eigentlich nur während der Verarbeitung der Daten erforderlich.

        Naja, soo ungeschickt ist das nicht. Ich wollte einen include- Baustein kreiren, der das Formular anzeigt und beim zweiten Durchlauf - also wenn submit gedrückt wurde - die Prüfung und Verarbeitung vornimmt. In diesem Fall ein Mailformular mit Mailversand in einer HTML- Seite.

        Sammy

        1. Naja, soo ungeschickt ist das nicht.

          Prinzipiell nicht, aber die Lösung muss so gekapselt sein, das sie von sich aus läuft und nicht irgendwelche Funktionsaufrufe von außen (vorher) benötigt.

          Etwa so:

          include('formhandling.php');
          formhandling($option1, $option2);

          Wobei das schon fast wieder in die Richtung "Gutes Beispiel wo Objektorentierung sinnvoll ist" fällt und man dann in diesem Include am besten gleich eine Klasse verpackt die man danach instaziert und benutzt.

          Ich wollte einen include- Baustein kreiren, der das Formular anzeigt und beim zweiten Durchlauf - also wenn submit gedrückt wurde - die Prüfung und Verarbeitung vornimmt. In diesem Fall ein Mailformular mit Mailversand in einer HTML- Seite.

          1. Etwa so:

            include('formhandling.php');
            formhandling($option1, $option2);

            Okay, das heisst, ich brauche zwei Funktionen in der include- Datei. Die eine zum Prüfen der Eingabe zu Beginn des PHP- Programms. Denn Fehler müssen oben auf der Seite angezeigt werden.

            Die zweite zur Darstellung des Formulars unten auf der Seite.

            Ich wollte es mit einer Prüf- Funktion erschlagen und die Anzeige direkt als HTML machen. Aber so geht's eben nicht.

            1. Okay, das heisst, ich brauche zwei Funktionen in der include- Datei. Die eine zum Prüfen der Eingabe zu Beginn des PHP- Programms. Denn Fehler müssen oben auf der Seite angezeigt werden.

              Ja - das include bindest du "ganz oben" im Script ein - die beiden funktionen führst du dann dort aus, wo du sie benötigst.

        2. Mahlzeit Sammy,

          Naja, soo ungeschickt ist das nicht.

          Doch, ist es.

          Eine einzubindende Datei ist entweder ein - mehr oder weniger - statisches "Ich gebe direkt irgendwas aus" *ODER* eine Sammlung/Bibliothek von Funktionen ... aber *NIEMALS* beides.

          Letzteres kannst Du dann oben im Kopf von Dateien einbinden, die diese Funktionen benötigen - ohne dass bereits Output erzeugt wird, der das Layout zerschießt oder eine Weiterleitung per header() unmöglich macht.

          Und Ersteres kannst Du *an genau der Stelle*, an der Du die Ausgabe an den Browser schicken möchtest, direkt einbinden, ohne Dir weitere Gedanken machen zu müssen.

          Ich wollte einen include- Baustein kreiren, der das Formular anzeigt und beim zweiten Durchlauf - also wenn submit gedrückt wurde - die Prüfung und Verarbeitung vornimmt. In diesem Fall ein Mailformular mit Mailversand in einer HTML- Seite.

          Was Du wolltest, ist klar. Es ist aber keine gute Idee. Halte Dich - wie bereits gesagt - ans EVA-Prinzip, dann solltest Du eigentlich niemals schwerwiegende Probleme bekommen.

          Ganz simpel könnte das z.B. so oder so ähnlich aussehen:

          <?php  
          include('foo.php.inc'); // Diese Dateien enthalten nur Funktionen, die z.B.  
          include('bar.php.inc'); // für die Eingabeüberprüfung und die Verarbeitung  
          include('baz.php.inc'); // der Werte benötigt werden  
            
          // Eingabe  
          read_inputs();  
            
          // Verarbeitung  
          if (process_inputs()) {  
            redirect_to_next_page();  
          } else {  
            prepare_error_message();  
          }  
            
          // Ausgabe  
          include('form.php.inc'); // Diese Datei zeigt das Formular an - falls bei  
                                   // der Verarbeitung Fehlermeldungen aufgetreten  
                                   // sind, müssen diese natürlich ausgegeben werden  
            
          ?>
          

          Ggf. wäre auch eine Lösung mit der von suit vorgeschlagenen Objektorientierung sinnvoll - das kommt ganz auf die Komplexität Deiner Skripte an.

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          1. Hello,

            Eine einzubindende Datei ist entweder ein - mehr oder weniger - statisches "Ich gebe direkt irgendwas aus" *ODER* eine Sammlung/Bibliothek von Funktionen ... aber *NIEMALS* beides.

            nur zu meinem Verständnis:
            meintest Du "sollte sein" oder meintest Du tatsächlich "ist"?

            Ich kenne genügend "include-Dateien", die alles durcheinander würfeln.

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Mahlzeit Tom,

              nur zu meinem Verständnis:
              meintest Du "sollte sein" oder meintest Du tatsächlich "ist"?

              "Ist" - nach meinem Verständnis ... d.h. also "sollte sein".

              Ich kenne genügend "include-Dateien", die alles durcheinander würfeln.

              Ich leider auch. Deswegen bin ich da auch so kategorisch.

              MfG,
              EKKi

              --
              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Oder führt php bereits Programmcode aus, ohne zu wissen, was später kommt?

    PHP ist zwar prinzipiell eine prozedurale bzw. strukturierte Scriptsprache (die auch Objektorientierung erlaubt) - sie wird aber nicht vollständig interpretiert sondern kurz vor Ausführung kompiliert.

    Wann include- oder require-Anweisungen aufgelöst werden und was mit den Variablen passiert, ist aber klar definiert (siehe Dokumentation).

    Was haben denn deine Versuche ergeben um das selbst herrauszufinden?

    echo foo();  
      
    function foo() {  
    	return 'foobar';  
    }
    

    oder

    echo foo();

    include('foo-function.php');

    function foo() {  
    	return 'foobar';  
    }
    
    1. Was haben denn deine Versuche ergeben um das selbst herrauszufinden?

      Ich mag dieses try - and - error - Prinzip nicht, deshalb habe ich vorher gefragt. Aber dann doch ausprobiert. So wie ich es gemacht habe, geht es nicht.

      echo foo();  
      function foo() {  
        return 'foobar';  
      }  
      // Ausgabe: foobar  
        
      // Fehlt hier eine forward- Angabe?  
      echo foo_2();  
      include test_funktion.php;  
      // Ausgabe: Fatal error: Call to undefined function: foo_2() in ...  
      
      

      Datei test_funktion.php:

      <?php  
      function foo_2() {  
        return 'foobar_2';  
      }  
      ?>
      

      In Turbo-Pascal muss man eine später kommende Funktion mit "forward" ankündigen. Gibt es sowas bei PHP auch? Habe ich nicht gefunden, heisst vielleicht ganz anders.

      Sammy

      1. Ich mag dieses try - and - error - Prinzip nicht, deshalb habe ich vorher gefragt.

        Das ist prinzipiell nicht schlecht - aber es schadet auch nicht, etwas auszuprobieren und dann eine "Warum?"- oder "Alternativen?"-Frage zu stellen anstatt einfach mal "Geht das?" zu fragen.

        Das spart allen beteiligten Zeit - und vor allem dir, wenn es dringend ist :)

        In Turbo-Pascal

        Du meinst Pascal - Turbo Pascal ist eine IDE und erinnert mich immer wieder an einen Bluescreen ;) das kann nichts gutes verheissen.

        muss man eine später kommende Funktion mit "forward" ankündigen.

        So ist das bei rein interpretierten, prozeduralen Sprache die einen Strukturierungsansatz - da gibts auch GOTO-Konstrukte.

        Gibt es sowas bei PHP auch? Habe ich nicht gefunden, heisst vielleicht ganz anders.

        Auch wenn es viele unsinnige Leichen aus dem prozeduralen Bereich in PHP gibt (z.B. auch GOTO) Gibts afaik nichts was dem entspricht. Beim verarbeiten eines Includes wird in den HTML-Mode geschaltet - von da ab kennt PHP keine Anweisungen wie etwa GOTO mehr (wenn man davon absieht, dass im Include selbst natürlich schon so gearbeitet werden kann). Wenn das Include Abgearbeitet ist, werden die Variablen und Funktionen in den entsprechenden Gültigkeitsbereich geschrieben und wieder in den PHP-Mode gewechselt.

        Es ist afaik also nicht möglich eine Funktion in einem Include aufzurufen bevor das Include abgearbeitet wurde - genausowenig sollte es möglich sein, mit einem GOTO von "außen" auf eine Zeile in einem Include zu sprigen.

        Da PHP eine Objektorientierte Sprache sein möchte - und das auch immer mehr wird - ist wie von EKKi angesprochen das EVA-Prinzip empfehlenswert. Ausgaben sollen möglichst nicht dort erfolgen wo sie erzeugt werden sondern später und gesammelt.

        Idealerweise holt man sich zuerst alle benötigen Funktionen/Klassen und führt sie später an der richtigen Stelle aus.

        Für deinen Fall bietet sich eventuell noch eine Krücke mit Output-Control-Funktionen an. Die lassen sich auch in includes verwenden - auch das steht in der Doku - aber schlau ist das imho nicht.

        1. Ich mag dieses try - and - error - Prinzip nicht, deshalb habe ich vorher gefragt.

          Das ist prinzipiell nicht schlecht - aber es schadet auch nicht, etwas auszuprobieren und dann eine "Warum?"- oder "Alternativen?"-Frage zu stellen anstatt einfach mal "Geht das?" zu fragen.

          Das spart allen beteiligten Zeit - und vor allem dir, wenn es dringend ist :)

          Bedingt. Bei try and error klappt der Spezialfall, z.B. Einrückungen mit &nbsp; Beim nächstenmal - etwa mit anderer Schriftfamilie - geht's in die Hose.

          Also neige ich dazu, die Allgemeingültigkeit zu prüfen. Nicht immer, aber immer öfter.

          Sammy

          1. Hi,

            Bedingt. Bei try and error klappt der Spezialfall, z.B. Einrückungen mit &nbsp; Beim nächstenmal - etwa mit anderer Schriftfamilie - geht's in die Hose.

            Formatierung per geschützter Leerzeichen ist error and error.

            Und mit dem, was suit hier angeregt hat, hat das irgendwie gar nichts zu tun.

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        2. Moin Moin!

          In Turbo-Pascal

          Du meinst Pascal - Turbo Pascal ist eine IDE und erinnert mich immer wieder an einen Bluescreen

          Nö.

          1. Die blaue IDE auf Turbo-Vision-Basis kam erst mit TP6, in den ersten TP-Versionen war die IDE schlicht schwarz und kaum mehr als ein Editor. Außerdem gab es den TP-Compiler immer auch als Kommandozeilen-Compiler, nicht zuletzt, weil man in den alten Zeiten nicht unbegrenzt Platz im Arbeitsspeicher hatte, um Editor und Compiler gleichzeitig im Speicher zu halten. Stand sogar irgendwo im Handbuch: Wenn die IDE wegen "out of memory" nicht mehr compilieren mag, nimm den Command-Line-Compiler.

          2. Turbo Pascal ist definitiv mehr als Pascal. Turbo Pascal macht einige Dinge optional, die in Standard-Pascal Pflicht sind (z.B. die Deklaration von Input und Output bei "program"), hat ein Unit-Konzept, das Pascal überhaupt nicht kennt (erst Modula bringt vergleichbares), und in späteren Versionen gab es auch noch einen Inline-Assembler.

          muss man eine später kommende Funktion mit "forward" ankündigen.

          Das liegt vor allem daran, das Turbo Pascal einen Single-Pass-Compiler benutzt, der den Quelltext einmal von oben nach unten abarbeitet und gleich Object-Code auswirft. Rasend schnell[1], aber eben auf solche Hilfen angewiesen. Ich denke nicht, dass "forward" im Standard-Pascal enthalten ist.

          Alexander

          [1] Bill Gates saw the success of Turbo Pascal "in very personal terms, and 'couldn't understand why [Microsoft's] stuff was so slow. He would bring in poor Greg Whitten [programming director of Microsoft languages] and yell at him for half an hour.' He couldn't understand why Kahn had been able to beat an established competitor like Microsoft." (engl. Wikipedia)

          --
          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
          1. Hello,

            [1] Bill Gates saw the success of Turbo Pascal "in very personal terms, and 'couldn't understand why [Microsoft's] stuff was so slow. He would bring in poor Greg Whitten [programming director of Microsoft languages] and yell at him for half an hour.' He couldn't understand why Kahn had been able to beat an established competitor like Microsoft." (engl. Wikipedia)

            DANKE

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Die blaue IDE auf Turbo-Vision-Basis kam erst mit TP6, in den ersten TP-Versionen war die IDE schlicht schwarz und kaum mehr als ein Editor. Außerdem gab es den TP-Compiler immer auch als Kommandozeilen-Compiler, nicht zuletzt, weil man in den alten Zeiten nicht unbegrenzt Platz im Arbeitsspeicher hatte, um Editor und Compiler gleichzeitig im Speicher zu halten. Stand sogar irgendwo im Handbuch: Wenn die IDE wegen "out of memory" nicht mehr compilieren mag, nimm den Command-Line-Compiler.

            2. Turbo Pascal ist definitiv mehr als Pascal. Turbo Pascal macht einige Dinge optional, die in Standard-Pascal Pflicht sind (z.B. die Deklaration von Input und Output bei "program"), hat ein Unit-Konzept, das Pascal überhaupt nicht kennt (erst Modula bringt vergleichbares), und in späteren Versionen gab es auch noch einen Inline-Assembler.

            Danke für die Aufklärung - so tief bin ich in den "blauen Feind" nicht eingestiegen ;)

            Ein Jahr in der Schule hat gereicht - mitterweile fast alles verdrängt :D

            1. Hello,

              Danke für die Aufklärung - so tief bin ich in den "blauen Feind" nicht eingestiegen ;)

              Das ist ein Fehler.
              Wir bewegen uns auf das Zeitalter der Schläfer-Computer zu, die jahrzehntelang irgendwo geparkt werden, um dann eines Tages mit der ganzen Wahrheit herauszuplatzen. Die dürfen in der ganzen Zeit nicht abstürzen. Das versuch doch mal mit einem C++-Programm

              :-P

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
            2. Moin Moin!

              Danke für die Aufklärung - so tief bin ich in den "blauen Feind" nicht eingestiegen ;)

              Ein Jahr in der Schule hat gereicht - mitterweile fast alles verdrängt :D

              Neee, in der Schule standen bei uns noch C128 rum, mehr als BASIC gab's da nicht.

              Turbo Pascal hab ich irgendwann mal als "Sicherheitskopie" mit einem gebrauchten PC bekommen, quasi als Einstiegsdroge. Das muß TP2 oder TP3 gewesen sein. TP5.0, TP5.5 und TP6 gabs im Bekanntenkreis, später hab ich das gute "Borland Pascal 7" (= Turbo Pascal + Runtime Sources + TP für Windows) gekauft und mich damit richtig ausgetobt. Runtime Libraries umgeschrieben, "lahmen" Pascal-Code durch Assembler ersetzt, dazu kistenweise eigene Units geschrieben. Liegt alles noch in irgendeiner finsteren Ecke meines RAIDs.

              Geblieben ist aus der Zeit viel Erfahrung und vor allem die Art, wie ich meinen Programmcode organisiere. Pascal zwingt zu sauberem Arbeiten, und das hilft ungemein. Spätestens dann, wenn man Perl entdeckt hat.

              Alexander

              --
              Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
              1. Hallo,

                Danke für die Aufklärung - so tief bin ich in den "blauen Feind" nicht eingestiegen ;)
                Ein Jahr in der Schule hat gereicht - mitterweile fast alles verdrängt :D
                Neee, in der Schule standen bei uns noch C128 rum ...

                du Glücklicher, bei uns gab's nur ein kleines Rudel Schneider CPC664 - sechs Stück, wenn ich mich recht erinnere.

                mehr als BASIC gab's da nicht.

                ACK. Das lag aber bei uns mehr daran, dass der Lehrer sonst nicht viel konnte. Auch das CP/M, das für die Kiste verfügbar war, benutzte er nur, um damit streng nach Spickzettel Disketten zu formatieren.
                Denn im Prinzip gab's auch schon Pascal für die Büchsen, wir hatten das in der Schule sogar im Schrank stehen. Aber keiner wusste etwas damit anzufangen ...

                Turbo Pascal hab ich irgendwann mal als "Sicherheitskopie" mit einem gebrauchten PC bekommen, quasi als Einstiegsdroge. Das muß TP2 oder TP3 gewesen sein. TP5.0, TP5.5 und TP6 gabs im Bekanntenkreis, später hab ich das gute "Borland Pascal 7" (= Turbo Pascal + Runtime Sources + TP für Windows) gekauft und mich damit richtig ausgetobt. Runtime Libraries umgeschrieben, "lahmen" Pascal-Code durch Assembler ersetzt, dazu kistenweise eigene Units geschrieben.

                Mir kommt's vor, als lese ich meine eigene Biographie. ;-)

                Geblieben ist aus der Zeit viel Erfahrung und vor allem die Art, wie ich meinen Programmcode organisiere. Pascal zwingt zu sauberem Arbeiten, und das hilft ungemein.

                Richtig, deswegen bin ich heute noch der Meinung, dass Pascal sehr empfehlenswert als erste Programmiersprache ist.

                Spätestens dann, wenn man Perl entdeckt hat.

                Das ist mir bisher erspart geblieben - ich weiß, dass es das gibt, und das soll erstmal genügen.

                Ciao,
                 Martin

                --
                Ich wollt', ich wär ein Teppich.
                Dann könnte ich morgens liegenbleiben.
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. Moin Moin!

                  mehr als BASIC gab's da nicht.

                  ACK. Das lag aber bei uns mehr daran, dass der Lehrer sonst nicht viel konnte. Auch das CP/M, das für die Kiste verfügbar war, benutzte er nur, um damit streng nach Spickzettel Disketten zu formatieren.

                  Exakt. Man hätte sich das Theater mit den 128ern komplett sparen können, denn die Kisten liefen *immer* im 64er-Modus.

                  Denn im Prinzip gab's auch schon Pascal für die Büchsen, wir hatten das in der Schule sogar im Schrank stehen. Aber keiner wusste etwas damit anzufangen ...

                  Ja, schlimme Zeiten. Irgendjemand hat beschlossen, dass die Kinder unbedingt "was mit Computern machen" sollen, was nicht auf Ballerei und zerbrochene Joysticks hinauslief. Irgendein armer Lehrer hat dann das kürzeste Stäbchen gezogen und mußte den Kindern beibringen, was er selbst nicht verstand. Es mag Schulen mit engagierten und kompetenten "Informatik"-Lehrern gegeben haben, aber die waren ganz klar in der Minderheit. Vor allem reicht auch ein engagierter Lehrer nicht, man braucht ja auch noch die Hardware samt Support und mindestens einen passenden Raum. 20 Schüler an 8 Heimcomputern ist auch nicht wirklich toll.

                  In der Oberstufe hat sich das bei mir gebessert, nicht zuletzt, weil die Oberstufe einer BBS angegliedert war, und entsprechend die Lehrer auch mal "richtig gearbeitet" haben, bevor sie auf die Jugendlichen losgelassen wurden. Da war überdurchschnittlich viel fachliche Kompetenz vorhanden, und ehrlich gesagt auch mehr Respekt, eben weil die Lehrer von dem, was sie lehrten, wirklich Ahnung hatten. IT: zwei oder drei Räume voller DOS-PCs, vernetzt mit Novell. Übrigens hatten auch die Lehrer Novell-PCs. Alles im selben Netz, aber offenbar ganz gut gesichert. In meiner Zeit gab's jedenfalls keine Vorfälle.

                  Mir kommt's vor, als lese ich meine eigene Biographie. ;-)

                  Kunststück.

                  Fairerweise muß ich sagen: Es war richtig, die Kinder an die Rechner zu bringen. Viele hatten ohnehin den einen oder anderen Heimcomputer, meistens C64, später Amiga, und der eine oder andere Exot hat sich mit Ataris rumgeschlagen.

                  Und ich hab nach einem Jahr harter Überzeugungsarbeit einen ZX81 bekommen, nicht zuletzt dank der extrem überzeugenden Worte eines Lehrers (Chemie/Physik/Bio/Mathe), den meine Eltern hinter meinem Rücken gefragt haben: "Der Junge wächst in die Computer-Zeit hinein, der braucht unbedingt einen Computer." Weise Worte. Der ZX81 war damals als Bausatz zu haben, und deutlich billiger als C64 oder gar Amiga / Atari. Trotzdem war es für meine Eltern nicht ganz einfach, "mal eben" 300 DM locker zu machen.

                  Aber der Bausatz sparte 100 DM ein, und so war ich natürlich extrem nah an der Hardware. Am Ende hatte der ZX81 eine externe Tastatur aus einer E-Schreibmaschine, 32 KByte RAM, Joystick-Anschlüsse, PIO, Maus, ein vernünftiges, stabilisiertes Netzteil und einen großen Kühlkörper für den eingebauten Spannungsregler. Und natürlich einen Video-Ausgang. Alles in einem robusten, hinten offenen Holzgehäuse.

                  Nur bin ich nie so wirklich in die Raubkopierer-Szene reingekommen, mit dem ganzen C64- und Amiga-Zeugs vom Schulhof konnte der ZX81 natürlich nichts anfangen, so hab ich halt meine eigene Software geschrieben und eigene Hardware gebaut. Rückblickend war das so ganz gut.

                  Geblieben ist aus der Zeit viel Erfahrung und vor allem die Art, wie ich meinen Programmcode organisiere. Pascal zwingt zu sauberem Arbeiten, und das hilft ungemein.

                  Richtig, deswegen bin ich heute noch der Meinung, dass Pascal sehr empfehlenswert als erste Programmiersprache ist.

                  Hmmm, jein.

                  Ein wenig Heimcomputer-Basic, um überhaupt mal den Fuß ins Wasser gehalten zu haben, war als allererster Schritt nicht schlecht.

                  Für eine ordentliche Ausbildung halte ich Pascal durchaus für den richtigen Einstieg, vielleicht ein Semester lang, bis die Strukturierung im Kopf angekommen ist. Dann kann man sich um OOP kümmern, das geht mit TP6 / TP7 auch noch ganz gut. ANSI C muß auch in den Kopf, zum einen ist es nicht auszurotten, zum anderen basieren jede Menge andere Sprachen darauf. Mit der aus C gelernten Syntax und den OOP-Konzepten aus TP6/TP7 sollte Java dann kein großes Problem mehr sein. Irgendwann sollte man auch mal etwas über Betriebsysteme gelernt haben, wenigstens DOS / Windows auf der einen und einige Unixe auf der anderen Seite. Shell-Scripte fallen dabei quasi automatisch an. Und frühestens dann sollte man mit Perl anfangen. Ohne Unix verstanden zu haben kann man Perl nicht verstehen, ohne Pascal-Strukturen verstanden zu haben kann man kein sauberes Perl schreiben.

                  Und ganz ehrlich fände ich es sehr hilfreich, wenn man mal während der Ausbildung lernt, Sicherheitslücken zu finden und auszunutzen. Man muß ja nicht gleich so wie ich den Admins des Fachbereichs erklären, dass ihr großer Server offen wie ein Scheunentor ist, und dass sie das nicht ohne massive Umbauten ändern können. Aber ein isoliertes, altes System mit bekannten Lücken in einem Labornetz wäre schon interessant. "Hier ist ein Server, da steht die Dokumentation, dort steht ein Rechner mit WWW-Zugang. Ihr habt drei Tage Zeit, euch Root-Rechte auf dem Server zu verschaffen." Oder man läßt die Studenten gegeneinander antreten, erst einmal eigene Software für eine bestimmte Aufgabe schreiben, dann die Software der anderen knacken. Wenn man nie auch nur im Ansatz begriffen hat, wie man ein System knackt, kann man später Software auch nicht gegen Angriffe schützen.

                  Mit beidem zusammen sollte man dann kapiert haben, warum man ohne Not nicht in C programmiert. Oder um einen meiner Prof's zu zitieren: "Wer in C programmiert, sollte einen Waffenschein haben müssen."

                  Spätestens dann, wenn man Perl entdeckt hat.

                  Das ist mir bisher erspart geblieben - ich weiß, dass es das gibt, und das soll erstmal genügen.

                  Ich bin jeden Tag froh, dass es Perl gibt, und insbesondere CPAN. Das hat mir schon Jahre an Arbeit erspart. "Swiss Army Chainsaw" ist nicht übertrieben, aber wie bei jeder Kettensäge sollte man beim Jonglieren aufpassen, wo man hinfaßt.

                  Der Einstieg in Perl ist leicht, und es ist sehr leicht, fürchterlich unwartbaren Code zu schreiben. Perl läßt einem sehr viele Freiheiten, mehr als so ziemlich jede andere Programmiersprache. Dazu kommt der Anspruch, auch in der neuesten Version immer noch Code, der für Perl 1 geschrieben wurde, ausführen zu können. Es braucht einige Disziplin, diese Freiheiten nicht immer maximal auszunutzen, und stattdessen wartbaren, lesbaren Code zu schreiben.

                  Alexander

                  --
                  Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
                  1. Hallo,

                    Ja, schlimme Zeiten. Irgendjemand hat beschlossen, dass die Kinder unbedingt "was mit Computern machen" sollen, was nicht auf Ballerei und zerbrochene Joysticks hinauslief. Irgendein armer Lehrer hat dann das kürzeste Stäbchen gezogen und mußte den Kindern beibringen, was er selbst nicht verstand.

                    schön auf den Punkt gebracht. ;-)

                    20 Schüler an 8 Heimcomputern ist auch nicht wirklich toll.

                    20 Schüler? Davon hätte das Remstalgymnasium damals in den frühen 80er Jahren geträumt. In der Unter- und Mittelstufe waren Klassenstärken von 30..35 eher die Regel.

                    In der Oberstufe hat sich das bei mir gebessert, ...

                    Ja, bei mir auch; durch die Auflösung des Klassenverbunds zugunsten des relativ frei konfigurierbaren Kurssystems wurden die Kurse kleiner, aber 20..25 Schüler in einem Grundkurs war immer noch üblich. Informatik wurde bei uns an der Schule damals überhaupt erst für die Oberstufe (Jahrgangsstufe 12 und 13) angeboten.

                    Fairerweise muß ich sagen: Es war richtig, die Kinder an die Rechner zu bringen. Viele hatten ohnehin den einen oder anderen Heimcomputer, meistens C64, später Amiga, und der eine oder andere Exot hat sich mit Ataris rumgeschlagen.

                    ACK. In meinem Umfeld war auch der C64 ganz klar der Platzhirsch, ein paar wenige sangen Loblieder auf ihren Atari ST. Amiga war in meinem Bekanntenkreis überhaupt nicht vertreten.

                    Und ich hab nach einem Jahr harter Überzeugungsarbeit einen ZX81 bekommen

                    Hehe, der war auch meine Einstiegsdroge - allerdings gebraucht für 50DM von einem Schulfreund abgekauft, der des Geräts überdrüssig wurde und nun auf C64 umstieg. Der Schritt kam bei mir gut ein Jahr später, nachdem der ZX81 nach einer Panne bei einer Hardware-Bastelei in die ewigen Jagdgründe einging.

                    Am Ende hatte der ZX81 eine externe Tastatur aus einer E-Schreibmaschine, 32 KByte RAM, Joystick-Anschlüsse, PIO, Maus, ein vernünftiges, stabilisiertes Netzteil und einen großen Kühlkörper für den eingebauten Spannungsregler. Und natürlich einen Video-Ausgang. Alles in einem robusten, hinten offenen Holzgehäuse.

                    Respekt.

                    Nur bin ich nie so wirklich in die Raubkopierer-Szene reingekommen

                    Ich auch nicht; auch später mit dem C64 hatte ich nie den Drang dazu. Okay, ich hatte einen Assembler und ein paar kleine Hilfsprogramme und Anwendungen illegal, und von den Freunden vielleicht eine Handvoll Spiele. Aber insgesamt vernachlässigbar gegen die "Großen".

                    Richtig, deswegen bin ich heute noch der Meinung, dass Pascal sehr empfehlenswert als erste Programmiersprache ist.
                    Hmmm, jein.
                    Ein wenig Heimcomputer-Basic, um überhaupt mal den Fuß ins Wasser gehalten zu haben, war als allererster Schritt nicht schlecht.
                    Für eine ordentliche Ausbildung halte ich Pascal durchaus für den richtigen Einstieg

                    Das meinte ich, ja, Für den professionellen Einstieg. Der Hobbyprogrammierer, der nur hier und da mal eine kleine Aufgabe lösen will, oder fürs Ego ein bisschen "programmieren können" will, ist mit einer der vielen moderneren Basic-Varianten sicher nicht schlecht bedient.

                    Mit beidem zusammen sollte man dann kapiert haben, warum man ohne Not nicht in C programmiert. Oder um einen meiner Prof's zu zitieren: "Wer in C programmiert, sollte einen Waffenschein haben müssen."

                    Würde ich -zumindest dem Gedanken nach- unterschreiben.

                    Ciao,
                     Martin

                    --
                    Wenn zwei dasselbe tun, sind sie vielleicht bald zu dritt.
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    1. Moin Moin!

                      20 Schüler an 8 Heimcomputern ist auch nicht wirklich toll.

                      20 Schüler? Davon hätte das Remstalgymnasium damals in den frühen 80er Jahren geträumt. In der Unter- und Mittelstufe waren Klassenstärken von 30..35 eher die Regel.

                      Autsch.

                      Ich hab eigentlich immer relativ kleine Klassen gehabt, meistens so 18 bis 22, 25 waren schon viel. Im Erstsemester kam dann Mathe im großen Hörsaal, gefühlt tausend Leute, real wohl irgendwas um 200, in einem Raum. Da lernt man exakt gar nichts. Zum Glück wurde da hauptsächlich Oberstufen-Stoff wiederholt, den ich noch greifbar hatte.

                      Am besten lernt man in kleinen Gruppen, so bis etwa 10 Leute.

                      Neulich hatte eine Kollegin von einem anderen Standort das große Glück (lerntechnisch, inhaltlich wohl eher Pech ...), eine Einzelschulung von meiner Kollegin und mir zu bekommen. Das hat sie enorm weiter gebracht. Vorher hatten wir ähnliche Schulungen mit drei bis fünf "Schülern" gemacht, das funktioniert auch ganz gut.

                      Kleine Gruppen alleine bringens aber auch nicht, wenn der Lehrer nicht lehren kann. Vor ein paar Monaten lief eine "Schulung" von einem Externen  für ungefähr 8 Leute von uns, die mehr zu einer "schaut mal wie schön man in unserem Tool klicken kann"-Veranstaltung wurde. Nix gelernt, ziemlich geärgert, weil man so viel Zeit mit dem Mist verbrannt hat.

                      Und bei einem meiner Ex-Arbeitgeber hat der jetzige CEO auch mal einen Lehrer für MS-Produkte nach 10 Minuten abgewürgt und ihm vor dem Besprechungsraum mit wenigen leisen Worten sehr klar gemacht, dass er seine Rechnung und alle folgenden Auftritte mal ganz entspannt vergessen kann.

                      Informatik wurde bei uns an der Schule damals überhaupt erst für die Oberstufe (Jahrgangsstufe 12 und 13) angeboten.

                      Ja, bei mir auch. Die C64/C128 waren im wesentlichen eine Ergänzung für den Mathe-Unterricht, und wer wollte, durfte sich nachmittags in einer Computer-AG am Gerät austoben.

                      ACK. In meinem Umfeld war auch der C64 ganz klar der Platzhirsch, ein paar wenige sangen Loblieder auf ihren Atari ST. Amiga war in meinem Bekanntenkreis überhaupt nicht vertreten.

                      Amiga kam bei den "reichen" Kindern auf, die vorher schon den 64er und auch teilweise den 128er hatten. Man braucht halt jedes Jahr was Großes zu Weihnachten. Aber dominierend war ganz klar der C64.

                      Und ich hab nach einem Jahr harter Überzeugungsarbeit einen ZX81 bekommen

                      Hehe, der war auch meine Einstiegsdroge - allerdings gebraucht für 50DM von einem Schulfreund abgekauft, der des Geräts überdrüssig wurde und nun auf C64 umstieg.

                      Was für ein Abstieg! ;-)

                      Der Schritt kam bei mir gut ein Jahr später, nachdem der ZX81 nach einer Panne bei einer Hardware-Bastelei in die ewigen Jagdgründe einging.

                      Lustigerweise habe ich meinen ZX81 nie gekillt, trotz aller Hardware-Basteleien. Auch der folgende ZX Spectrum + hat alle Basteleien überlebt, erst Nummer 3, ein gruseliger PC/XT-90%-Clone, mußte an einem falsch aufgesteckten Power-Stecker sterben: +12V auf die +5V-Schiene und alles, was nach IC aussah, war hinüber. Das hat mein Vater verbockt und entsprechend beim danach gekauften, neuen AT-Clone gut Kohle dazugelegt. (Die Kiste hat fast so viel gekostet wie mein erstes Auto ...)

                      Für eine ordentliche Ausbildung halte ich Pascal durchaus für den richtigen Einstieg

                      Das meinte ich, ja, Für den professionellen Einstieg. Der Hobbyprogrammierer, der nur hier und da mal eine kleine Aufgabe lösen will, oder fürs Ego ein bisschen "programmieren können" will, ist mit einer der vielen moderneren Basic-Varianten sicher nicht schlecht bedient.

                      Ja, allerdings. Das Problem ist nur, dass die Leute, die ein wenig mit Office-Basic herumfrickeln können, sich plötzlich für die größten Programmierer aller Zeiten halten und tatsächlich auch als solche eingestellt werden.

                      Die Scherben so einer Aktion kehren wir gerade mühsam unter den Teppich. 10 Jahre planloses, ahnungsloses und verständnisloses Gefrickel auf Basis eines Systems, das vorher 20 bis 30 Jahre von anderen Fricklern zusammengebastelt wurde. 850.000 Zeilen Code und "Kommentare". Über die Fehlerquote mag ich gar nicht reden ...

                      Alexander

                      --
                      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
                      1. Hallo,

                        20 Schüler? Davon hätte das Remstalgymnasium damals in den frühen 80er Jahren geträumt. In der Unter- und Mittelstufe waren Klassenstärken von 30..35 eher die Regel.
                        Autsch.

                        ja, als ich am Gymnasium anfing, waren wir 36 Schüler in der Fünften. Eine der vier Parallelklassen hatte sogar 37.

                        Am besten lernt man in kleinen Gruppen, so bis etwa 10 Leute.

                        Ja, oder allein. Je nach Veranlagung und Lernfortschritt. Ich erarbeite mir Lernstoff am besten (am liebsten) selbständig und möchte nur ergänzend ab und zu die Anleitung eines "Lehrers". Das kann dann auch gern in einer kleinen Gruppe sein.

                        ZX81
                        Hehe, der war auch meine Einstiegsdroge - allerdings gebraucht für 50DM von einem Schulfreund abgekauft, der des Geräts überdrüssig wurde und nun auf C64 umstieg.
                        Was für ein Abstieg! ;-)

                        Nun, ich empfand es als Aufstieg.

                        Der Schritt kam bei mir gut ein Jahr später, nachdem der ZX81 nach einer Panne bei einer Hardware-Bastelei in die ewigen Jagdgründe einging.
                        Lustigerweise habe ich meinen ZX81 nie gekillt, trotz aller Hardware-Basteleien.

                        Tja, ich habe versehentlich einen Ausgangspin des ASICs kurzgeschlossen, der ja quasi der "Chipsatz" der kleinen Box war. Mausetot ...

                        Der Hobbyprogrammierer, der nur hier und da mal eine kleine Aufgabe lösen will, oder fürs Ego ein bisschen "programmieren können" will, ist mit einer der vielen moderneren Basic-Varianten sicher nicht schlecht bedient.
                        Ja, allerdings. Das Problem ist nur, dass die Leute, die ein wenig mit Office-Basic herumfrickeln können, sich plötzlich für die größten Programmierer aller Zeiten halten und tatsächlich auch als solche eingestellt werden.

                        Da sagst du was ...

                        Die Scherben so einer Aktion kehren wir gerade mühsam unter den Teppich. 10 Jahre planloses, ahnungsloses und verständnisloses Gefrickel auf Basis eines Systems, das vorher 20 bis 30 Jahre von anderen Fricklern zusammengebastelt wurde. 850.000 Zeilen Code und "Kommentare". Über die Fehlerquote mag ich gar nicht reden ...

                        Ich hoffe, ihr habt einen schönen großen Hochflor-Teppich.

                        Ciao,
                         Martin

                        --
                        Er:  Mit wem warst du gestern abend aus?
                        Sie: Du bist mal wieder eifersüchtig wie immer!
                        Er:  Wer ist Immer?
                        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                        1. Moin Moin!

                          Am besten lernt man in kleinen Gruppen, so bis etwa 10 Leute.

                          Ja, oder allein. Je nach Veranlagung und Lernfortschritt. Ich erarbeite mir Lernstoff am besten (am liebsten) selbständig und möchte nur ergänzend ab und zu die Anleitung eines "Lehrers". Das kann dann auch gern in einer kleinen Gruppe sein.

                          Das hängt natürlich auch vom Thema ab, und von den Vorkenntnissen. Für den ersten Schritt in ein völlig neues Thema halte ich eine kleine Gruppe für sinnvoller.

                          Mir fällt gerade die etwas ungeschickt gestellte Frage eines Lehrers, Dozenten, wie auch immer sich der "ich bringe Hausfrauen Java bei"-Mensch tituliert hat. "Was erwarten Sie von diesem Kurs?" (zu dem ich verdonnert wurde)

                          Meine Antwort: Ich will das lernen, was ich nicht schon aus der im WWW verfügbaren und bereits durchgelesenen Dokumentation kenne. Best Practices, Dinge die man besser nicht tut, wie man typischerweise ein Problem angeht, usw.

                          Das hat ihn etwas aus der Bahn geworfen, und am Ende der Woche war mein damaliger Arbeitgeber reichlich Kohle los, ohne dass ich viel aus dem Kurs mitgenommen hätte. Aber ich hab jetzt ein Stück Pappe in irgendeinem Ordner rumfliegen, dass mir attestiert, dass ich mal Java gelernt habe. Nicht, dass ich Java in dem Jahrzehnt seit dem Kurs auch nur 5 Minuten gebraucht hätte. Vor dem Kurs hab ich mal zwei oder drei Applets zusammengezimmert, die Dinge erledigten, die man heute per JQuery und/oder AJAX erschlagen würde.

                          Die Scherben so einer Aktion kehren wir gerade mühsam unter den Teppich. 10 Jahre planloses, ahnungsloses und verständnisloses Gefrickel auf Basis eines Systems, das vorher 20 bis 30 Jahre von anderen Fricklern zusammengebastelt wurde. 850.000 Zeilen Code und "Kommentare". Über die Fehlerquote mag ich gar nicht reden ...

                          Ich hoffe, ihr habt einen schönen großen Hochflor-Teppich.

                          Naja, die Chefetage hat gerade beschlossen, dem Verbund den Support für einen Klumpen von 100.000 Zeilen Code ersatzlos zu streichen. Nicht wegen des katastrophalen Zustands, sondern weil an anderer Stelle Resourcen fehlen. Die Installation bei uns wird irgendwie weiter laufen, bei den Kollegen an anderen Standorten auch, aber eigentlich kann sich keiner mehr darum kümmern.

                          Weitere 500.000 Zeilen sollen in den nächsten *würfel* zwei *würfel* drei *würfel* fünf Jahren durch Teile eines anderen Systems ersetzt werden. Nach dem ursprünglichen Plan sind wir damit gerade fertig. Aber - tadaaa! - wir haben eine Projektmanagement-Software, und wir ziehen genau dieses Projekt nochmal komplett von vorne auf, nach Lehrbuch und geleitet von zwei Leuten, die von Software-Projektsteuerung absolut keinen Plan haben. Die Diskussionen klingen immer nach zwei Blinden, die sich mit Fotografen um die Qualität von Farbfotos streiten.

                          Und die letzten 250.000 Zeilen werden wohl einfach weiter laufen. Do not touch-Schild draufgepappt, niemandem sagen, dass es für den Schrott effektiv niemanden mehr gibt, der Support leisten kann, und - ach ja - ein externer Dienstleister wird auf den Haufen noch ein Häufchen draufsetzen, um eine völlig abgedrehte Schnittstelle zu einem anderen System zu schaffen. Für dessen Steuerung -- Spec rein, Code und Doc raus, prüfen und einspielen -- haben wir eigentlich auch gar keine Resourcen.

                          Wir haben in der Nähe ein sehr großes, ausreichend tiefes Loch in der Erde. Da sollten wir eigentlich den ganzen Krempel reinkippen, einbetoniert und eingeschweißt, und mit einer Lage Ton und einer Lage Humus abdecken. Teppich reicht dafür nicht.

                          Man wieselt sich seit mindestens 10 Jahren bei den Überwachern damit durch, dass man sie mit Tonnen von Papier erschlägt, so dass sie gar nicht bis zu diesem Sondermüll durchkommen. Und wenn doch, sehen sie nur eine halbwegs ansehnliche Oberfläche, die auf den ersten Blick brauchbare Daten ausspuckt. Nachgerechnet hat die Daten ganz offensichtlich noch niemand.

                          Wie die neue Aufgabe aussieht, ahne ich schon. Es müffelt nach Lochkarte, alten Großrechnern, und Leuten, die sich vor Jahrzehnten alles selbst beigebracht haben. 30 Jahre gewachsene Software. Prinzipiell mit einer nachvollziehbaren Historie (in mehreren Regalmetern Aktenordnern AUSGEDRUCKT), prinzipiell dokumentiert (in weiteren Regalmetern). Spaghetti-Code vom Feinsten. Befehle auf einen Buchstaben abgekürzt, signifikante Leerzeichen, Zeilen vollgestopft mit Code. Kommentare braucht man nicht, "der Code erklärt sich doch von selbst". Bloß kein Stückchen virtuelle Lochkarte verschwenden, in Zeiten von Terabyte-Platten. Import in SVN/git/... nahezu unmöglich. Wahrscheinlich gibt's da die eine oder andere Million Code-Zeilen. Über die Fehlerquote mag ich noch gar nicht nachdenken. Ich hoffe darauf, dass sie etwas niedriger liegt. Wenigstens ist absehbar, dass das System zu Grabe getragen wird. Und ich werde einer der Sargträger sein. Geplanter Beerdigungstermin: 2015 oder irgendwann danach.

                          Vielleicht sollte ich die einschlägigen Stellenanzeigen mal wieder etwas genauer lesen ...

                          Alexander

                          --
                          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
                          1. Hi,

                            Am besten lernt man in kleinen Gruppen, so bis etwa 10 Leute.
                            Ja, oder allein. Je nach Veranlagung und Lernfortschritt. Ich erarbeite mir Lernstoff am besten (am liebsten) selbständig und möchte nur ergänzend ab und zu die Anleitung eines "Lehrers". Das kann dann auch gern in einer kleinen Gruppe sein.
                            Das hängt natürlich auch vom Thema ab, und von den Vorkenntnissen. Für den ersten Schritt in ein völlig neues Thema halte ich eine kleine Gruppe für sinnvoller.

                            wie gesagt, das ist individuell sehr unterschiedlich. Gerade das erste Eintauchen in ein neues Thema mach ich gern, ohne dass mich jemand dabei "stört". Du bringst das Beispiel Java, eine Programmiersprache, mit der ich bisher nichts zu tun hatte. Wenn ich mich jetzt eines Tages entschließen sollte, ich möchte (oder sollte) Java lernen, dann würde ich sagen, prima, die Syntax lehnt sich an C an, da habe ich schon eine Grundlage. Dann würde ich mir ein Buch oder ein Online-Tutorial über die Grundlagen suchen, vielleicht noch eine Referenz zur Sprache und den Standardbibliotheken (auch wenn man sie hier vielleicht Klassen nennt). Und damit würde ich mich dann erstmal ein paar Tage im Selbststudium beschäftigen.
                            Erst wenn ich die Grundlagen begriffen und ein paar erste Gehversuche gemacht habe, halte ich ein Lernen in der Gruppe und mit Anleitung für sinnvoll.

                            Mir fällt gerade die etwas ungeschickt gestellte Frage eines Lehrers, Dozenten, wie auch immer sich der "ich bringe Hausfrauen Java bei"-Mensch tituliert hat. "Was erwarten Sie von diesem Kurs?" (zu dem ich verdonnert wurde)
                            Meine Antwort: Ich will das lernen, was ich nicht schon aus der im WWW verfügbaren und bereits durchgelesenen Dokumentation kenne. Best Practices, Dinge die man besser nicht tut, wie man typischerweise ein Problem angeht, usw.

                            Sehr schön!

                            Das hat ihn etwas aus der Bahn geworfen, und am Ende der Woche war mein damaliger Arbeitgeber reichlich Kohle los, ohne dass ich viel aus dem Kurs mitgenommen hätte.

                            Mit anderen Worten: Der Lehrgang (bzw. deine Entsendung dahin) war gut gemeint, aber eigentlich völlig für'n A... Das ist leider oft so.

                            Die Scherben so einer Aktion kehren wir gerade mühsam unter den Teppich. [...]
                            Ich hoffe, ihr habt einen schönen großen Hochflor-Teppich.
                            Naja, die Chefetage hat gerade beschlossen, dem Verbund den Support für einen Klumpen von 100.000 Zeilen Code ersatzlos zu streichen. Nicht wegen des katastrophalen Zustands, sondern weil an anderer Stelle Resourcen fehlen.

                            Super. Wenn man sparen muss, fängt man also einfach wahllos irgendwo mit Streichen an.
                            Das erinnert mich an den Investplan, den mein Chef vor einigen Jahren abgegeben hat. Da war ein exklusives, aber eben auch teures Oszilloskop drauf, und zwei HV-Tastköpfe, die exakt auf das Gerät abgestimmt waren. Was soll ich sagen ... die Tastköpfe hätten wir kaufen dürfen, das Oszi ist aber gestrichen worden. Das war einfach zu teuer.

                            Die Installation bei uns wird irgendwie weiter laufen, bei den Kollegen an anderen Standorten auch, aber eigentlich kann sich keiner mehr darum kümmern.

                            Ach komm, da wird sich doch bestimmt jemand finden, der schonmal mit VBA rumgemacht hat und daher solide Programmier-Erfahrung hat. ;-)

                            Die Diskussionen klingen immer nach zwei Blinden, die sich mit Fotografen um die Qualität von Farbfotos streiten.

                            Da unterscheidet sich die Leitung mancher Industriebetriebe nicht von der großen Politik.

                            Man wieselt sich seit mindestens 10 Jahren bei den Überwachern damit durch, dass man sie mit Tonnen von Papier erschlägt, so dass sie gar nicht bis zu diesem Sondermüll durchkommen. Und wenn doch, sehen sie nur eine halbwegs ansehnliche Oberfläche, die auf den ersten Blick brauchbare Daten ausspuckt. Nachgerechnet hat die Daten ganz offensichtlich noch niemand.

                            Und wird auch hoffentlich nie jemand. Und wenn doch, dann möge derjenige bitte nur die Test-Datensätze verwenden, die auch der Programmierer verwendet hat.

                            Wie die neue Aufgabe aussieht, ahne ich schon. Es müffelt nach Lochkarte, alten Großrechnern, und Leuten, die sich vor Jahrzehnten alles selbst beigebracht haben. 30 Jahre gewachsene Software. Prinzipiell mit einer nachvollziehbaren Historie (in mehreren Regalmetern Aktenordnern AUSGEDRUCKT), prinzipiell dokumentiert (in weiteren Regalmetern). Spaghetti-Code vom Feinsten.

                            Oh, Spaghetti sind was Feines. Auf dem Teller beim Italiener um die Ecke.

                            Befehle auf einen Buchstaben abgekürzt, signifikante Leerzeichen, Zeilen vollgestopft mit Code. Kommentare braucht man nicht, "der Code erklärt sich doch von selbst".

                            *jauuuul*

                            Wenigstens ist absehbar, dass das System zu Grabe getragen wird. Und ich werde einer der Sargträger sein. Geplanter Beerdigungstermin: 2015 oder irgendwann danach.

                            Dann leg jetzt schon mal den dunklen Anzug raus - in der Hoffnung, dass das finale Ereignis früher eintreten könnte.

                            Vielleicht sollte ich die einschlägigen Stellenanzeigen mal wieder etwas genauer lesen ...

                            Oder so. :-)

                            Mein aufrichtiges Beileid,
                             Martin

                            --
                            Es sagte...
                            ein korpulenter Lehrer zu einem Schüler, der ihn ein Fass genannt hatte: "Nein. Ein Fass ist von Reifen umgeben, ich dagegen von Unreifen."
                            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                            1. Moin Moin!

                              Mit anderen Worten: Der Lehrgang (bzw. deine Entsendung dahin) war gut gemeint, aber eigentlich völlig für'n A... Das ist leider oft so.

                              Fast. Er war nicht mal gut gemeint, ich hatte einfach mein jährliches Schein-Soll noch nicht erfüllt. Und irgendein Wirrkopf meinte, dass man 100.000 Zeilen Perl-Code "mal eben" auf Java umschreiben könnte. Deswegen der Kurs. Ich hab's gerade noch so eben auf "Java für Hausfrauen" umbiegen können, eigentlich war "Java für Leute, die nicht wissen, was ein Computer ist" geplant.

                              Die Scherben so einer Aktion kehren wir gerade mühsam unter den Teppich. [...]
                              Ich hoffe, ihr habt einen schönen großen Hochflor-Teppich.
                              Naja, die Chefetage hat gerade beschlossen, dem Verbund den Support für einen Klumpen von 100.000 Zeilen Code ersatzlos zu streichen. Nicht wegen des katastrophalen Zustands, sondern weil an anderer Stelle Resourcen fehlen.

                              Super. Wenn man sparen muss, fängt man also einfach wahllos irgendwo mit Streichen an.

                              Ich hab mit meinem obersten Chef geredet, sehr lange, und versucht ihm klarzumachen, dass wir zwei bis drei weitere Stellen brauchen, damit die Leute endlich mal von 150% runter kommen und damit wir uns nicht unnötig angreifbar machen. Schönes Gespräch, aber effektiv hätte ich das Thema auch mit einem Baum ausdiskutieren können.

                              Das erinnert mich an den Investplan, den mein Chef vor einigen Jahren abgegeben hat. Da war ein exklusives, aber eben auch teures Oszilloskop drauf, und zwei HV-Tastköpfe, die exakt auf das Gerät abgestimmt waren. Was soll ich sagen ... die Tastköpfe hätten wir kaufen dürfen, das Oszi ist aber gestrichen worden. Das war einfach zu teuer.

                              Die 100.000 Zeilen sind die Qualitätskontroll-Software. Noch Fragen?

                              Die Installation bei uns wird irgendwie weiter laufen, bei den Kollegen an anderen Standorten auch, aber eigentlich kann sich keiner mehr darum kümmern.

                              Ach komm, da wird sich doch bestimmt jemand finden, der schonmal mit VBA rumgemacht hat und daher solide Programmier-Erfahrung hat. ;-)

                              Vermutlich wird das irgendeinem Fachtechniker ans Bein gebunden, oder irgendein Depp in der EDV macht nicht schnell genug einen Schritt nach hinten, wenn es "Freiwillige vor!" heißt. Ich sehe da schon zwei bis drei mögliche Opfer. Ich werde nicht unter ihnen sein.

                              Man wieselt sich seit mindestens 10 Jahren bei den Überwachern damit durch, dass man sie mit Tonnen von Papier erschlägt, so dass sie gar nicht bis zu diesem Sondermüll durchkommen. Und wenn doch, sehen sie nur eine halbwegs ansehnliche Oberfläche, die auf den ersten Blick brauchbare Daten ausspuckt. Nachgerechnet hat die Daten ganz offensichtlich noch niemand.

                              Und wird auch hoffentlich nie jemand. Und wenn doch, dann möge derjenige bitte nur die Test-Datensätze verwenden, die auch der Programmierer verwendet hat.

                              "Man kann Software testen?" würde derjenige fragen. Systematische Tests gibt es nicht, außer für die Teile, die ich bereits angefaßt habe. Das liegt daran, dass es keine Spezifikation gibt, aus der man Tests ableiten könnte.

                              Im Klartext: Die Qualitätskontrollsoftware wurde ohne jede Qualitätskontrolle gebastelt. SVN gibt es erst, seit dem ich hier arbeite. Ebenso Bugzilla. Und Test-VMs. Und ein paar andere Sachen, die man so für die Software-Entwicklung braucht.

                              Oh, Spaghetti sind was Feines. Auf dem Teller beim Italiener um die Ecke.

                              Right! Sollte ich auch mal wieder kochen ...

                              Befehle auf einen Buchstaben abgekürzt, signifikante Leerzeichen, Zeilen vollgestopft mit Code. Kommentare braucht man nicht, "der Code erklärt sich doch von selbst".

                              *jauuuul*

                              Zähl mal in Gedanken ein paar Kinderkrankheiten auf. Such sie in der deutschen oder englischen Wikipedia. Irgendwann findest Du mein neues Betätigungsfeld. Und ja, der Name ist auch im Englischen eine Krankheit. Das fand jemand wohl zum brüllen komisch. Ich finde es eher beschreibend. Insbesondere, wenn Du Dir die Symptome und Folgen der Krankheit durchliest.

                              Wenigstens ist absehbar, dass das System zu Grabe getragen wird. Und ich werde einer der Sargträger sein. Geplanter Beerdigungstermin: 2015 oder irgendwann danach.

                              Dann leg jetzt schon mal den dunklen Anzug raus - in der Hoffnung, dass das finale Ereignis früher eintreten könnte.

                              Fertigstellungstermine haben hier die Angewohnheit, ständig zu flüchten. Und zwar mit beeindruckenden Geschwindigkeiten. Bis ich den dunklen Anzug brauche, fließt noch viel Wasser die Elbe runter.

                              Vielleicht sollte ich die einschlägigen Stellenanzeigen mal wieder etwas genauer lesen ...

                              Oder so. :-)

                              Ja, nur will ich das eigentlich gar nicht. Das Umfeld ist sehr angenehm, nur nützt mir das nichts, wenn ich jeden Morgen von der Aufgabe genervt den Rechner einschalte.

                              Alexander

                              --
                              Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
                          2. Mahlzeit Alexander (HH),

                            mir schwant, ich leide an multipler Persönlichkeitsstörung ... Deine Schilderung kommt mir beängstigend bekannt vor.

                            MfG,
                            EKKi

                            --
                            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        3. Hello,

          In Turbo-Pascal

          Du meinst Pascal - Turbo Pascal ist eine IDE und erinnert mich immer wieder an einen Bluescreen ;) das kann nichts gutes verheissen.

          Turbo Pascal ist eine spezielle Sourcen-Zusammenstellung für DOSen-Computer in strenger Anhlehnung an Pascal. Das hat mit IDE noch lange nichts zu tun. Die kam erst viel später.
          Und mit "Bluescreen" hatte die IDE auch nichts zu tun. Du weißt einfach nicht, was gut ist ;-P

          Zu Zeiten der Real-Mode-Programmierung konnte man mittels Turbo-Pascal schon erstaunlich stabile Programme erzeugen, _obwohl_ das darunterliegende DOS in höchstem Maße suspekt war.

          Es gibt inzischen bei den Microcontrollern wieder einen Trend zu Turbo-Pascal als Entwicklungsumgebung, da hier Speicheroptimierung und Typengenauigkeit echte Sicherheitsvorteile bieten gegenüber anderen Entwicklungsumgebungen. Sogenannte "Buffer Overflows" kennt man in TP nur dann, wenn der Programmierer sie ganz bewusst herbeigeführt oder zugelassen hat.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de