Java lernen sinnlos?



  • java als Lehrsprache?

    Welchen Vorteil hat es, einem Schüler, der zum ersten Mal programmiert, erklären zu müssen, daß er ``public static void main(...){ ... }'' schreiben muß, wo bei python ``main(...)'' reicht ?



  • volkard schrieb:

    +fricky schrieb:

    programmieren mit Java macht einfach mehr spass. 🙂

    lol. bis man zum ersten mal was ernsthaftes in java angeht.

    was denn z.b.?

    u_ser-l schrieb:

    java als Lehrsprache?
    Welchen Vorteil hat es, einem Schüler, der zum ersten Mal programmiert, erklären zu müssen, daß er ``public static void main(...){ ... }'' schreiben muß, wo bei python ``main(...)'' reicht ?

    'public static void main(...)' kommt ja nicht alle 10 zeilen vor, so dass es nerven würde. java wird gern als einsteigersprache genommen. ich kenne jemanden, der gibt kurse int Java und PHP, seine schüler haben ziemlichen spass an Java. früher hat er auch mal c++ unterrichtet, aber daran hatten die leute nicht so viel freude. c++ kurse bieten die auch garnicht mehr an, weils in der wirtschaft nicht mehr so gefragt ist, dafür machen sie jetzt verstärkt .NET sachen. aber python ist bestimmt auch nicht schlecht als lehrsprache.
    🙂



  • +fricky schrieb:

    eher allgemein, also wer überhaupt das erste mal programmiert, ist mit Java gut dran.

    Mit C doch au !?

    +fricky schrieb:

    man kann mit wenig aufwand dinge tun, die auch sofort klappen und das sorgt gleich für die nötige begeisterung.

    Welche Dinge ?

    u_ser-l schrieb:

    Welchen Vorteil hat es, einem Schüler, der zum ersten Mal programmiert, erklären zu müssen, daß er ``public static void main(...){ ... }'' schreiben muß, wo bei python ``main(...)'' reicht ?

    Bei C wärs einfach einfach int main{} 😉

    Grüße
    agi 🙂



  • u_ser-l schrieb:

    wo bei python ``main(...)'' reicht ?

    Was für ein Python soll das denn sein, wo man main(...) schreiben muss? Ein Python-Script wird doch von vorne nach hinten ausgewertet, eine Hauptprozedur ist überflüssig. Man schreibt höchstens ganz gerne if __name__ == "__main__": , um Module auch als Scripte behandeln zu können.
    Und selbst wenn, würde man dann nicht def main(): schreiben? Klär mich auf, Python ändert sich ja gelegentlich mal.

    Abgesehen davon halte ich das Argument für nicht stichhaltig, insbesondere halte ich es für eine schlechte Idee, Programmiersprachenerfindern einen Anreiz zu geben, für die Kürze des ersten Hello World Programms zu optimieren. Wozu sowas führt sieht man bei Sprachen wie VB.



  • Das sieht ja recht unübersichtlich aus:

    public class HalloWelt {
         public static void main(String[] args) {
             System.out.println("Hallo Welt!");
         }
     }
    

    und dat nennt ihr "einfach" ?
    Guckt ma hier:

    #include <stdio.h>
    
    int main()
    {
        printf("Hallo Welt!");
        getchar();
        return 0;
    }
    

    und lasset euch von der Einfachheit dieser Sprache begeistern.

    Grüße
    agi 🙂



  • @aXYZn 👍

    Java ist absolut ungeeignet als Anfaengersprache, C++ ist katastrophal. C# ist eine Mischung zwischen Java und C++.



  • jetzt werden die argumente richtig professionell.



  • u_ser-l schrieb:

    Welchen Vorteil hat es, einem Schüler, der zum ersten Mal programmiert, erklären zu müssen, daß er ``public static void main(...){ ... }'' schreiben muß, wo bei python ``main(...)'' reicht ?

    Reden wir von Schülern oder von Studenten? In dem Jahr was ich in der Schule Informatik hatte, hieß es "Das ist einfach so". Allerdings konnte uns der Lehrer auch am Ende des Schuljahres nicht erklären was static überhaupt bedeutet.

    In der Uni wurd es ganz anders angegangen. Da wurde bei uns der praktische Teil einfach ausgespart. Zuerst wurden per Hoare-Kalkül Algorithmen in einer Java ähnlichen Syntax verifiziert. Dann wurde die Java Syntax per BNF definiert um danach auf zig Kleinigkeiten im Bezug auf Sichtbarkeit von Variablen einzugehen. Der praktische Teil war einem so selbst überlassen.



  • Bashar schrieb:

    Was für ein Python soll das denn sein, wo man main(...) schreiben muss?

    Wer schreibt schon die gesamte Programmlogik der Hauptroutine hinter ein "if" -
    ich meinte eher so etwas:

    ...
    def main():
        ...
        ...
        ...
    if __name__ == "__main__":
        main()
    

    oder man läßt man main() komplett weg, aber es geht hier ja um den Vergleich
    zu java ...



  • aXYZn schrieb:

    +fricky schrieb:

    eher allgemein, also wer überhaupt das erste mal programmiert, ist mit Java gut dran.

    Mit C doch au !?

    kommt drauf an. ich finde java ist ein klein wenig einfacher zu lernen als C. schon weil diese ganze pointerarithmetik wegfällt. dafür kriegste bei Java OOP zwangsweise serviert, aber so schwierig sind OOP grundlagen ja auch nicht.

    aXYZn schrieb:

    +fricky schrieb:

    man kann mit wenig aufwand dinge tun, die auch sofort klappen und das sorgt gleich für die nötige begeisterung.

    Welche Dinge ?

    eigentlich alles was anfängern spass macht und sie bei guter laune hält. kleine GUI-anwendungen, mal ein soundfile abspielen, irgenwelche programme, die sich übers netz unterhalten, usw. in C musste dir für sowas alles irgendwelche libraries besorgen. alles selber machen geht zwar auch, aber kann für 'nen einsteiger ganz schön frustrierend werden.
    🙂



  • ach ja, zum thema 'anfänger und c++': http://www.courageunfettered.com/stuf/cpp/
    🙂



  • Das sieht ja recht unübersichtlich aus:

    aXYZn schrieb:

    Das sieht ja recht unübersichtlich aus:

    public class HalloWelt {
         public static void main(String[] args) {
             System.out.println("Hallo Welt!");
         }
     }
    

    und dat nennt ihr "einfach" ?
    Guckt ma hier:

    #include <stdio.h>
    
    int main()
    {
        printf("Hallo Welt!");
        getchar();
        return 0;
    }
    

    und lasset euch von der Einfachheit dieser Sprache begeistern.

    Grüße
    agi 🙂

    und lasset euch von der Einfachheit dieser Sprache begeistern.

    10 PRINT "Hallo Welt!"
    


  • u_ser-l schrieb:

    Wer schreibt schon die gesamte Programmlogik der Hauptroutine hinter ein "if" -
    ich meinte eher so etwas:

    Mit anderen Worten, du verschweigst, dass das "main()" nur der Aufruf deiner selbst definierten Hauptroutine ist, dass dazu die Definition selbst noch gehört sowie dieses Tänzchen mit dem if __name__ == "__main__": . Ganz seltsamer Diskussionsstil, das.



  • @ volkard

    Was kann denn BASIC, das nicht C kann ?



  • Mannmannmannmannmann ...

    ich verschweige gar nichts. `if __name__ == "__main__"' ist überflüssig, wenn das Skript standalone laufen soll, ich bleibe aber in jedem Fall dabei, daß `def main():' intuitiv verständlicher ist als `public static void main(...){...}', ob mit oder ohne if-Zeile ...



  • prgorammiere lieber in whitespace

    
    

    fertig!



  • aXYZn schrieb:

    @ volkard
    Was kann denn BASIC, das nicht C kann ?

    Auf Datasette speichern, Programmierter Direktmodus, den eigenen Quelltext ausgeben, egal. Kannst alles wegdiskutieren. Und ich sag doch gar nicht, C könne mehr oder weniger.
    Nur ist Basic für kleine Programme offenbar viel viel einfacher.
    Wer also in seiner Argumentation ums Einfachheitsargument tanzt wie die Juden ums Goldene Kalb, der sollte nicht bei Java und C stehen bleiben, sondern zu wirklich einfachen Sprachen wie Basic und Brainfuck schreiten. Wer dazu nicht bereit ist, muß mit Tanzen aufhören und zugeben, daß es ganz andere Gründe sind, Java oder C zu bevorzugen (normalerweise, weil man den Doppeldenk zustandebringt, zu blöd für C++ zu sein und sich gleichzeitig für den Größten Programmierer Aller Zeiten zu halten).



  • Einfach und effektiv volkard, einfach und effektiv...

    Grüße
    agi 🙂



  • u_ser-l schrieb:

    ich bleibe aber in jedem Fall dabei, daß `def main():' intuitiv verständlicher ist als `public static void main(...){...}', ob mit oder ohne if-Zeile ...

    Du "bleibst" da bei etwas, was du vorher anders gesagt hast.



  • du weißt schon genau, was ich meine.

    Es ist ein Unterschied, ob ein Schüler erst über

    1. Rückgabetypen (void),
    2. Zugriffsbereiche (public) und
    3. Klassenmethoden (static)

    lernen muß, um main(...) in java zu verstehen, oder eben nicht.

    gut geeignete Sprachen für die Lehre sind mMn python, smalltalk oder lisp, notfalls C. Man lernt ja auch in Latein nicht einen weitverbreiteten römischen Dialekt, sondern Schriftlatein, eben weil es methodisch besser ist. Popularität sollte bei der Wahl der Lernmittel nicht erstes Kriterium sein, finde ich.


Anmelden zum Antworten