Beiträge von a9bejo

    Als Fan des Mittelalters bin ich immer auf der Suche nach einem Browserspiel, bei dem man in Ruhe aufbauen kann, ohne befürchten zu müssen, überfallen zu werden

    Du solltest Dir mal ein Geschichtsbuch kaufen. Wenn Dich nach einer Stunde Spielzeit noch kein Priester vergewaltigt, deine Mutter am Scheiterhaufen denunziert, oder die Pest dir die Eier abgefault hat, dann bist Du nicht im Mittelalter gewesen.

    Hallo,


    könnte mir mal vl. jemand irgendwie n grundgerüst mit kommentaren aufschreiben, denke das hilft mir dann schon weiter....

    Das Java SDK besitzt eine Implementierung des Observer Patterns. Und der Java Source ist ja frei zugaenglich und sehr gut dokumentiert.

    Die Wikipedia Seite erklaehrt das Pattern auch sehr gut, und es gibt dort sogar eine Implementierung in Java, die die oben genannten Klassen verwendet.


    Eine Google Suche nach java observer pattern war auch sehr ergiebig, z.b. hier wird das sehr anschaulich anhand eines Beispiels erklaehrt.

    Hmm, bin mir jetzt nicht ganz sicher, welche Features du jetzt genau meinst, aber wirds nicht noch komplexer, wenns vollständig sind? Oder meinst mit unvollständig was ganz anderes - also dass etwas nicht funktioniert, wie man sichs normalerweise vorstellt?

    Um in OOP sinnvoll Software zu designen braucht man natürlich einiges an Übung , aber das Prinzip selber ist ja eigentlich relativ simpel: Du teilst dein Programm in Objekte, die einem bestimmten Zweck dienen und einen Zustand haben können. Kommunikation zwischen Objekten erfolgt über Nachrichten. Dann gibt es noch Vererbung + Polymorphie, und das war es dann fast auch schon. Alles andere ist laesst sich mehr oder weniger aus diesen Regeln logisch ableiten. Z.b. Klassen oder Instanzierung - Das sind aus OOP Sicht ja schon keine speziellen Features von OOP mehr, sondern eher Patterns die sich aus den Grundsaetzen ergeben: Klassen sind halt Objekte, die andere Objekte erzeugen. Wenn man die Grundlagen mal verstanden hat, ist es ziemlich logisch wie man beim Coden vorgeht.

    In einigen Sprachen (z.b. Smalltalk oder Ruby) sind Programme groesstenteils genau so umgesetzt. Aber in C# eben nur sehr unvollständig. C# Programme bauen eben nicht auf diesen Grundsätzen auf, sondern enthalten zahlreiche Ausnahmen und Sonderegeln. Und das macht es (vor allem für einen Einsteiger) ziemlich schwer, objektorientiert zu denken.

    Z.b. gibt es Objekte, die sich mit anderen Objekten praktisch gar keine Gemeinsamkeiten teilen (z.b. primitive Datentypen oder die null-Referenz). Der Programmierer kann die gar nicht wie Objekte behandeln.

    Es gibt Objekte und "Klassen", die du nicht erweitern kannst. Zu diesen Objekten gehören alle Klassen, die Teil der Standardbiliothek sind, bzw. die Klassen aus externen Bibliotheken.

    Allein wegen diesen beiden Aussnahmen werden schon die grundlegendsten Prinzipien von OOP verletzt.
    Z.b. die Kapselung von Verantwortung: Sagen wir Du willst den Absolutwert der Zahl -5. Eigentlich solltest Du jetzt -5, einer Instanz von einer Klasse Zahl, eine Nachricht schicken und sie nach ihrem Absolutwert fragen. Stattdessen holst Du dir von irgendwo eine Funktionssammlung System.Math und uebergibst der dann ein "Ding" namens -5 als Parameter.

    Oder sagen wir du hast eine Liste von Zahlen und willst eine Liste, wo die selben Zahlen in zufaelliger Reihenfolge stehen. OOP waere

    Code
    neueliste = liste.shuffle

    , richtig? Und wenn shuffle nicht existiert, dann tut man es halt da hinein. In C# geht das aber nur dann, wenn Du den Code der Collection zur Verfügung hast. In C# 3.0 gibt es die Möglichkeit, die Methode dahin zu stecken wo sie gehoert. Aber auch in C# 3.0 ist das wieder ein spezielles, stark eingeschraenktes Konstrukt. Ein komplizierter Sonderfall für etwas, was eigentlich ganz einfach sein sollte.


    Also ich find grad Python mit der eher seltsamen Tatsache, dass Einrückungen Teil der Syntax sind, eher seltsam. Da wird man sich als Anfänger schon ein paar Mal wundern.

    Für einen Anfänger ist es sicherlich ein erstes Hindernis Codebloecke zu verstehen. Das es für ihn einen Unterschied macht wie der Block angegeben wird, glaub ich aber nicht.


    Beim lernen der Sprache selbst bringts nicht viel. Beim Programmiern schon. Mit ner ordentlichen Codevervollständigung ist Anfängern meistens sehr viel geholfen, da es einen Haufen Leserei in den oft miserablen docs erspart.

    Nach meiner Erfahrung verwenden Anfänger in ihren Programmen nur ganz wenige Bibliotheken. Da gibt es nur wenig, was man sich anschauen muss. Und wenn man fremden Code benutzt, dann hilft es meiner Meinung nach mehr, wenn man lernt eine Dokumentation zu lesen als wenn man lernt mit einem komplizierten Werkzeug.

    Du hast schon recht, dass das beim Programmieren selbst sehr praktisch ist. Aber beim Lernen finde ich das eher kontraproduktiv.


    Und ab und zu braucht man halt ein paar Erfolgserlebnisse, auch wenn man die Sprache noch nicht vollständig beherrscht.

    Ja, da geb ich dir auch 100% recht. Ich weiß aber nicht, ob du solche Erfolgserlebnisse durch eine IDE wirklich schneller bekommst, als mit einer möglichst einfachen, abstrakten Programmiersprache und (nach den ersten Schritten) guten Bibliotheken. In Smalltalk/Squeak kannst Du z.B. ganz einfach ein tolles, graphisches Spiel erstellen. Einfach indem du ein paar bestehende Objekte nimmst, neu zusammensteckst, und ein paar Parameter veränderst.

    Ich finde das wichtigste, das ein Anfänger braucht, ist ein gutes Buch, das die Theorie gut erklärt, und das viele praktische Beispiele enthält.

    Dafür werd ich hier zwar gleich geflamed aber die einfachste Sprache die ich kenne ist C#.

    Ich wuesste nicht wie dich da jemand "flamen" sollte, denn Du hast ja nicht dazu geschrieben, welche Sprachen Du so alles kennst. Gut moeglich das Du C# von denen am einfachsten findest. Das kannst nur du wissen. ;)

    Ich persönlich finde C# für Einsteiger aus den gleichen Gründen ungeeignet, aus denen sich TU Einsteiger mit Java so schwer tun: Mann kann die Sprache selbst nur sehr schwer benutzen, wenn man Objektorientierte Programmierung ignoriert. Und man Objektorientierte Programmierung nicht gut mit C# lernen, weil die OOP-Features von C# unvollständig und sehr komplex sind.


    die einfachste Sprache die ich kenne ist C#. Das liegt wahrscheinlich mehr am Visual Studio und am Dot Net als an der Sprache selbst.

    Hier laesst sich aber schon diskutieren, denn die beiden Aussagen widersprechen sich ja: Ist die Sprache jetzt einfacher als andere Sprachen oder nicht?

    Und was ist denn mit all den anderen Sprachen, die die gleichen Tools verwenden. Z.b. F#, Visual Basic, Python, Ruby, Smalltalk, Javascript, Fortran, Cobol und viele andere Sprachen laufen alle auf .NET, und viele werden auch im Visual Studio unterstützt.

    Und ganz grundsätzlich: Wie hilft dir eine IDE oder ein Framework dabei, eine Sprache zu lernen, oder gar Programmieren?


    Das Spiel sollte...

    Hallo,

    So ein Spiel ist eigentlich sehr einfach, aber es ist erstmal ganz egal was du programmieren moechtest. Du musst erstmal lernen wie man Software macht. Und dabei ist es nicht besonders wichtig mit welcher Sprache du das lernst, oder was Du spaeter mit deinem Wissen programmieren willst. Wichtig ist nur das dir das Lernen so viel Spass macht, dass Du bereit bist einiges an Zeit darin zu investieren.

    Schau mal auf http://ubuntuforums.org/showthread.php?t=796494 , das ist ein guter Einstieg. Viel Spass!

    ( Und es stimmt - der Titel deines Threads ist richtig, richtig mies. Genau wie die vielen doppelten Satzzeichen in deinem Posting. )


    Womit sollte ich mich als Anfänger auseinandersetzen, um mir halbwegs solide Linux-Kentnisse zu verschaffen?

    Hallo m4rS,

    Also um Ubuntu einfach zu benutzen musst Du dir keine besonderen Kenntnisse aneignen. Versuch einfach das zu machen was Du machen willst, und wenn Du da auf ein Hindernis stoesst, dann fragst Du Google nach "Ubuntu [MEIN PROBLEM]". In den meisten Faellen landest Du dann auch ubuntuforum.org oder einer anderen Supportseite.

    Ubuntu hat den besten Support von allen Produkten die ich jemals verwendet habe - Das solltest Du ausnutzen.

    Wenn Du tiefer in die Materie eintauchen willst, dann kannst Du dir mal anschauen wo auf einem Linux System was wo abgelegt wird: Wo tut ein Programm die Konfiguration hin, welche Programme sind ueberhaupt installiert. Die wichtigsten dieser Programme, die Du dir genauer anschauen solltest, sind die vielen unix-tools (man,ls, grep, cat, wc, bash, ssh, wget, ps, du, df usw.). Wenn Du mal gelernt hast diese Tools richtig zu benutzen, kannst Du das System gleich viel effizienter verwenden als zuvor.

    Auch ganz toll ist es, wenn man sich mit https://launchpad.net/ubuntu vertraut macht. Dann kann man nämlich immer sehen, woran gerade gearbeitet wird. Man kann Bugs reporten und verfolgen, und man kann sich natürlich auch selbst nützlich machen wenn man will.


    ich sage nicht, dass NUR die gis gebühr dafür verwendet wird. ich sage auch nicht, dass ALLE digitalen Medien archiviert werden.

    Hmm. Gesagt hast Du es vielleicht nicht, aber geschrieben hast du es auf jeden Fall:

    man zahlt eigentlich nicht wirklich für das fernsehen.
    vielmehr bezahlt man dafür, dass dem ORF auferlegt wurde, alle digitalen Medien zu archivieren.

    man zahlt eigentlich nicht wirklich für das fernsehen.
    vielmehr bezahlt man dafür, dass dem ORF auferlegt wurde, alle digitalen Medien zu archivieren. und das kostet nun einmal und wird immer teurer... so wie die nationalbibliothek eben literarische ergüsse erhalten muss bzw archivieren muss, muss der ORF das mit den digitalen medien machen.

    Also ich weiss nicht wo du das herhast, aber ich halte diese Infos für völlig falsch. Die eigenen Angaben lassen darauf schließen, dass das Geld der GIS nicht in die digitale Archivierung, sondern direkt in die Produkte des ORF fließt:

    Zitat


    Das Programmentgelt (Radioentgelt, Fernsehentgelt)
    kommt dem ORF zugute, der zwei TV-Programme, zwölf Radioprogramme und neun Landesstudios betreibt. Nach Abzug von Umsatzsteuer, Einhebungs- und Verfahrensverwaltungsvergütung erhält der ORF bei einer Meldung von Fernsehempfangseinrichtungen (inkl. Radio) monatlich EUR 14,50.

    Der ORF archiviert auch bei weitem nicht alle digitalen Medien. Und das, was er archiviert, hat ganz bestimmt nicht den Aufwand von 14,50 EUR mal Anzahl aller Haushalte in AT.

    Mein Arbeitgeber hat mal fuer den ORF consulting gemacht, und ich kann dir versichern, das die Menschen dort von den meisten digitalen Medien gar nicht wissen, das es sie gibt. Ich kann dir auch versichern, dass der ORF keinen Zugriff auf das youtube Archiv von Google hat, und das er keine riesigen Serverfarmen besitzt, um alle Weblog und Podcastnetze zu archivieren.

    Was der ORF archiviert, ist wohl nur das eigene Programm, sowie, falls das sie die kaufen dürfen, auch die Angebote von anderen Anbietern. Ja, auch das ist ein kostenintensiver Task, aber ~50 Millionen Euro jeden Monat ist das ganz bestimmt nicht wert.

    Gegen eine Steuer als Investition des ORF würde ich mich ebenfalls aussprechen, weil ich die nicht für kontraproduktiv empfinden würde (Ich finde wir brauchen weniger lineares Fernsehen und nicht mehr).

    Aber wenn so eine Steuer durchgesetzt würde, dann müsste ich das natürlich schlucken. Das ist aber bis jetzt nicht der Fall.


    die gis/orf schimpfen ist also nicht wirklich die lösung. schimpft den staat. der is immer schuld

    Wie meinen? Die gis/orf sind doch staatliche Einrichtungen!

    So, jetzt wird es spannend:

    Österreichs GEZ-Pendant verlangt erstmals TV-Gebühren für Computer@heise

    Zitat


    ...Ein GIS-Sprecher bekräftigte gegenüber heise online die Rechtsansicht der Service-Gesellschaft, wonach für Computer mit Internetzugang Rundfunkgebühren zu bezahlen seien, weil damit Programme wahrnehmbar gemacht werden könnten, die auch über Rundfunk verbreitet werden. Diese Meinung ist unter Juristen aber umstritten. Webstreams seien eben gerade kein Rundfunk und würden keine Gebührenpflicht auslösen, so das Gegenargument....

    Ich hoffe das diesem gierigen Verhalten (23,06 Euro pro Monat für einen Haushalt ohne Fernseher oder Radio) durch einen Rechtsstreit bald ein Ende gesetzt wird. Hoffentlich noch bevor ich auch so einen frechen Bescheid bekomme.

    Bei großen Projekten entsteht die meiste Komplexität (und damit die meiste Arbeit) durch die Abhängigkeiten zwischen den einzelnen Komponenten. Wenn eine von 4 Komponenten jede der anderen 3 Komponenten braucht, dann kannst Du z.b. keine isolierten Tests machen, oder die einzelnen Komponenten austauschen, oder sie unabhängig voneinander deployen.

    Bei dynamisch typisierten Sprachen stellt sich das Problem praktisch gar nicht. Aber bei Java ist es ein sehr großer Vorteil, wenn Du die Abhängigkeiten zwischen den einzelnen Modulen deines Programm dynamisch und auch zur Laufzeit, "von außen" zusammenkleben kannst.

    Spring bietet zudem auch noch sehr viele Bibliotheken an, die teilweise sehr gut funktionieren. Aber die wesentliche Eigenschaft ist eben jene Inversion of Control. Natuerlich kostet das Pflegen der Configuration und das gewissenhafte Vermeiden von direkten Abhaengigkeiten auch Zeit. Darum zahlt es sich eben erst bei einer gewissen Projektgröße aus.

    die compiler kenn ich aber sie funktionieren nicht[werbetext, oder das kompilieren funktioniert nicht weil die 1.6 features nicht unterstützt werden]. ich hab eine java1.6 anwendung die ich gern kompiliert hätte. kennts ihr noch andere compiler?

    Leider nein. GCJ z.b. benutzt die Java Implementierung aus dem GNU CLASSPATH Projekt, und das ist unvollstaendig. Da die SUN Implementierung ja jetzt freie Software ist, wird es wohl in Zukunft auf diesem Gebiet besser aussehen.

    Darf ich fragen was Du in deinem Posting mit "werbetext" gemeint hast?

    OK, das ist natuerlich ein guter Grund. Ich habe

    Zitat


    hm.... service provider? warum nicht eine einfache variante davon nachprogrammieren?!

    als einen Loesungsvorschlag fuer Stephes Problem gelesen, als bessere Variante gegenueber der fertigen Implementierung. Vielleicht wegen des entsetzten "?!" .

    Der uebliche Weg, um alle Klassen, die ein bestimmtes Interface implementieren, aus dem Jar File zu laden ist dieses Service Provider Pattern. Das hab ich auch heuer in "Technologien für verteilte Systeme" gelernt.

    Uebrigens:
    Ein wenig bloed ist, das diese Service Klasse in dem sun.* namespace liegt und nicht in java.* oder org.*. D.h. eigentlich sollte man von sun.* packages die Finger lassen, weil die nicht Teil der JDK Spec sind.. Ich habe da aber auch Diskussionen zu gefunden, und die Klasse wird wohl demnachst in einen oeffentlichen Namespace wandern.