Java lernen sinnlos?
-
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
agiund 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.
-
Also langsam komme ich auch zur Einsicht und sehe die Programmiersprachen nun als Mittel zum Zweck. Mal ehrlich es ist doch abhängig von der Vorliebe des Programmierers, ob er nun diese oder diese wählt beide können eventuell das gleiche machen, aber unterscheiden sich wohlmöglich durch ihre Syntax und eventuell durch ihren Aufwand.
Programmieren ist eben die Kunst abstrahiert zu denken und zu handeln.PS: Laut Wiki basiert Java auf C :p
Grüße
agi
-
volkard schrieb:
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.
relative einfachheit und hoher gebrauchswert, das haben C und Java gemeinsam. mir fällt grad nicht ein, welche anderen sprachen 'nen ähnlich guten 'wirkungsgrad' haben wie diese beiden. alle anderen sind entweder für 'n spezielles themengebiet gedacht oder zu kompliziert, zu überladen, zu unhandlich, zu schlicht, usw.
-
u_ser-l schrieb:
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.
Denk das weiter und Du bringst deinem Sohn zuerst Latein oder Esperanto bei und wenn er das kann, darf er vielleicht man Deutsch oder Englisch lernen.
-
+fricky schrieb:
volkard schrieb:
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.
relative einfachheit und hoher gebrauchswert, das haben C und Java gemeinsam.
Ähm. Wollen wir wirklich wiedermal vergeblich versuchen, die Programme aufzuzählen, die gut sind aber in Java geschrieben wurden, und dabei nichtmal bis zehn kommen? Damit ist der Gebrauchsbert bei 0. Es gibt angeblich einen hohen Lehrwert, aber der ist nur postuliert und nicht glaubwürdig.
-
@+fricky
Und die "genutzte Energie" von beiden bleibt Gleich, ohne dass die "zugeführte Energie" an Konstanz verliert ?
Grüße
agi
-
volkard schrieb:
Denk das weiter und Du bringst deinem Sohn zuerst Latein oder Esperanto bei und wenn er das kann, darf er vielleicht man Deutsch oder Englisch lernen.
ja und nein, würde ich sagen: Die Muttersprache ist immer leichter zu lernen als Fremdsprachen - von daher hätten Latein oder Esperanto als "first language" zwar einen methodischen Vorteil, nicht aber den der Einfachheit. Der Punkt ist ja gerade, daß smalltalk oder lisp sowohl einfacher als auch methodisch "geschlossener" sind als die meisten "Gebrauchssprachen", die immer Kompromisse aus methodischer Reinheit und Praktikabilität sind, und noch Rücksicht auf Traditionen und Gewohnheiten nehmen (s. java-Syntax).