Beiträge von a9bejo

    querstrom, wenn du Lust hast, schau Dir doch auch mal Io an. Die Sprache ist speziell fuer embedded systems entwicklet, aber sehr maechtig. Vielleicht ist sie fuer Dein Projekt besser geeignet als Ruby oder Python?

    Alternativ koenntest Du Dir auch eine Implementierung von LISP ueberlegen. Lisp ist ja nicht nur sehr maechtig, sondern auch relativ einfach zu implementieren. Also vermutlich weniger Aufwand fuer Dich als wenn du eine VM fuer Python schreiben musst. ;)

    Hallo,

    Ich beschaeftige mich seit Jahren mit beiden Sprachen und ich glaube
    auch, das die Differenzen in Punkto Produktivitaet nicht so gewaltig
    sind. Sowohl Ruby als auch Python sind dynamische Sprachen die fuer
    objektorientierte Programmierung ausgelegt sind und mit elementen aus
    der funktionallen Programmierung angereichert wurden. Bei Ruby ist
    dieses OOP Design etwas sauberer implementiert als bei Python, das
    macht in der Praxis aber jetzt nicht so den riesen Unterschied.

    Beide Sprachen verfuegen ueber umfangreiche Bibliotheken und eine sehr
    aktive Community.

    Wenn man die Sprachen aus der Sicht eines Java/C#/C++ Programmierers
    betrachtet, ist es vermutlich nicht so relevant, mit welcher man
    programmiert. Die groessten Umstellungen/Vorteile/Nachteile aus dieser
    Sicht sind sich sehr aehnlich.

    Fuer sich betrachtet gibt es aber schon einige Unterschiede. Ich versuch mal
    ein paar wesentliche aufzulisten, die fuer mich besonders
    hervorstechen:

    1. Message Passing vs. Strukturelles Objektdesign

    Der Begriff Objektorientierte Programmierung wurde in seiner
    Entstehung (Simula,Smalltalk) eigentlich sehr einfach definiert: Man
    unterteilt sein System in Objekte, die einen Zustand
    haben. Moechte man den Zustand eines Objektes veraendern oder
    abfragen, sendet man Nachrichten an das Objekt.

    In Smalltalk (und damit auch in Ruby, denn Ruby ist nichts weiter als
    eine neue Version von Smalltalk) wurde das Konzept auch genau so
    umgesetzt.

    die Zeile

    Code
    lamp.lightswitch.press_button

    bedeutet hier tatsaechlich: sende an die objektinstanz 'lamp' die
    nachricht 'lightswitch'. Die antwort aus diese Nachricht ist wieder
    ein objekt (hier ein lichtsschalter), an das eine weitere Nachricht gesendet wird.

    Rechts vom '.' steht also immer eine Nachricht. Tatsaechlich ist die
    schreibweise oben nur sythaktischer Zucker fuer das hier, was
    ebenfalls korrektes Ruby ist:

    Code
    lamp.send("lightswitch").send("press_button")

    In Python betrachtet man das etwas anders, naemlich so wie in C++,C# oder Java:

    Objekte werden hier wie Behaelter behandelt, die wiederum weitere
    objekte enthalten koennen. Diese sichtweise kommt, so vermute ich, aus
    dem Umstand, das die C++ Objekte von den Strukturen aus C inspiriert
    wurden.

    Code
    lamp.lightswitch.press_button()

    bedeutet also in python: "greife in die objektinstanz 'lamp' hinein
    und suche das element 'lightswitch' (bzw. die referenz auf dieses
    objekt)." Der Punkt bedeutet hier also "gehe in". Aus dem lightswitch
    Behaelter holen wir uns das MethodenObjekt "press_button" und fuehren
    es aus.

    Fuer den Programmierer ist das erstmal nicht so der riesen
    Unterschied. Python programmierer koennen in den meisten Faellen auch
    in "nachrichten an objekte" denken.

    Wenn man sich laenger mit den Sprachen beschaeftigt, wird dieser
    Unterschied aber immer deutlicher. Z.b. kann es in Ruby natuerlich
    keine oeffentlichen Instanzattribute geben. Man kann ja ueberhaupt
    nicht auf Attribute zugreifen, sondern eben nur Nachrichten senden.

    Weil eine Methode in Python nichts als eine objectinstanz ist, die
    teil eines "Behaelters" ist, kann man z.B. so etwas hier schreiben:

    Code
    amethod = object.methode
    amethod()

    Moechte man in Ruby eine Methode als Objektreferenz bekommen,
    muss man, wie immer in Ruby, das zugehoerige objekt danach fragen:

    Code
    amethod = object.method(:methode)
    amethod.call


    Es gibt noch zahlreiche weitere Unterschiede zwischen Ruby und Python,
    die sich auf eben diese unterschiedliche Sichtweise zurueckfuehren lassen.
    Aber jetzt zu einem anderen Punkt im Sprachdesign, der fast noch wichtiger ist:

    2. The one obvicious way vs. The Principle of least surprise

    Ein Grundprinzip bei der entwicklung von Python: Es darf zwar immer
    viele Wege geben, ein Problem zu loesen, aber es sollte nicht 2
    verschiedene Konstrukte geben, die im Prinzip das selbe machen. Wenn
    man z.B. alle Programmierer dazu zwingt, eine abfrage mit einem "if"
    zu machen, anstatt ihnen noch switch anwesungen oder was auch immer
    anzubieten, dann koennen diese Programmierer untereinander ihren code
    leichter lesen (Denn sie haetten es ja genauso gemacht).

    Darum gibt es in python keine switch anweisungen oder do...while
    schleifen oder zaehlschleifen.


    Die Ruby designer (und mittlerweile auch ich) sehen das etwas anders:
    Was Chaos verursacht, ist wenn das grundlegende Sprachdesign komplex
    oder undurchsichtig ist, nicht wenn es verschiedene Arten gibt eine
    Schleife zu implementieren. Ob eine if oder eine case anweisung den
    Code besser beschreibt, ist abhaengig von der jeweiligen Situation,
    und Programmierer haben eigentlich in der Praxis nie sorgen, weil sie
    ueberall Konstrukte sehen die sie anders implementiert haetten.

    Vielmehr kommt man dem Programmierer entgegen wo man nur
    kann. D.h. wenn man bei der Arbeit immer wieder auf Regular
    Expressions stoesst, dann baut man die halt direkt in die Sprache ein.

    Viele sehen solche Konstrukte dann und erinnnern sich schmerzvoll an
    ihre Erlebnisse mit Perl. Das ist aber unbegruended, denn waehren man
    fuer die ruby Syntax einiges von Perl uebernommen hat, ist in ruby das
    sprachdesign selbst voellig konsistent. So eine "built-in" Regular
    expression ist dann halt auch nichts anderes als eine objektinstanz,
    an die man Nachrichten schicken kann.


    3. Domain Specific Languages

    Das ist der Grund warum ich jetzt mehr mit Ruby mache: Es ist, weil
    flexibler, besser fuer das erstellen von internen DSLs.

    Aber das hat Martin Fowler hier schon sehr gut beschrieben:

    http://martinfowler.com/articles/languageWorkbench.html

    solang du keine windows.forms verwendest, grundsaetzlich ja.

    lustig schauts aus, wenn du in einer shell auf einmal eine *.exe datei dann ausfuehrst...

    Nicht nur windows.forms, auch z.b. fast alles aus winFX oder avalon ist bis jetzt nicht drinnen.

    Ich find Mono ist schon ein sehr interressantes Projekt und es in Zukunft vielleicht auch noch seinen Nutzen haben, aber eine (tatsaechliche, praxisrelevante) Kompabilitaet zu Microsoft .NET ist sicherlich nicht realistisch.

    Dafuer dass, diese Sprache jetzt "Version 1.0" erreicht, ist sie ja schon recht weit oben im TIOBE-Index.

    Ich glaube der Tiobe index hat bei einigen Sprachen sehr grosse Probleme, halbwegs brauchbare Statistiken zu liefern. Eine webseite mit einem Text wie

    "Here is my code, written in the Java programming: d = new Distance();"

    wuerde z.B. schon als Stimme fuer die Sprache D zaehlen.

    [ Update: Bin mir gar nicht mehr so sicher ob das stimmt: "The search query that is used is +"<language> programming". Wenn die Anfuehrungsstriche in der Query sind ist das Beispiel oben nicht mehr korrekt ]

    Natuerlich kann man nicht erwarten, dass so eine Statistik wie die von Tiobe genau ist, aber bei manchen Sprachen ist das Ergebnis sicher schlechter als bei anderen.

    Ein anderes Problem ist z.B. VB: Visual Basic und Visual Basic.NET sind zwei voellig unterschiedliche Sprachen, aber ueber eine Suchanfrage kannst Du die kaum sinnvoll auseinanderhalten. Also musste TIOBE sie einfach wie eine einzelne Programmiersprache behandeln.

    Ruby wäre echt meine Traumprogrammiersprache, wenn es einen guten Compiler dafür gäbe :wein:

    Dazu eine Randbemerkung:

    JRuby ist ein stabiles und sehr aktives Projekt. Die Entwickler wurden vor ein paar Monaten von Sun eingestellt, damit sie Fulltime an dem Projekt weiterarbeiten koennen. D.h. die Zukunft ist auch relativ sicher. Und unter den Programmierern sind richtig clevere Hacker wie Ola Bini. Ich hab mir schon ueberlegt, ob ich nicht ganz von C-Ruby auf JRuby umsteigen soll.

    Was C-Ruby selbst betrifft, ist YARV seit Montag offiziell im Ruby 1.9.1 trunk. Und um den japanischen Developer zu zitieren "YARV make fast all Ruby Program by 50 times" (quelle).

    Das Zitat erinnert mich uebrigens daran was ich mir von Ruby wuenschen wuerde: Naemlich das die vielen Japanischen Entwickler mal richtig Englisch lernen. ;)

    Da habe ich wiederum zu wenig Hirn und baue durch die dynamische Typisierung hinterhältige Fehler in meinen Code ein.

    Ich gebe Dir recht, dass sich bei dynamischer Typisierung Fehler einschleichen koennen. Auf der anderen Seite fuehrt statische Typisierung aber zu deutlich mehr Code, und die Menge des Codes haengt sehr stark mit der Anzahl der produzierten Fehler zusammen.

    Am Ende hat also beides seine Schwaechen. Aber gegen Typfehler kann ich als Programmierer zumindest was machen (naemlich Unit Tests die man ja eigentlich sowieso immer machen sollte). Viel Code bleibt aber immer viel Code.

    Zitat von heise


    ... D verspricht hohe Performance, sparsamen Umgang mit Ressourcen sowie gute Les- und Wartbarkeit durch leicht verständlichen und zugleich kompakten Code.D verspricht hohe Performance, sparsamen Umgang mit Ressourcen sowie gute Les- und Wartbarkeit durch leicht verständlichen und zugleich kompakten Code. ...

    Das ist meiner Meinung nach ein krasser Wiederspruch, man kann eine Sprache nicht zugleich fuer den Compiler und den Programmierer optimieren.
    "Les- und Wartbarkeit, leicht verstaendlicher und kompakter Code", alle diese Dinge erhaelt man doch durch einen hohen Grad von Abstraktion. Fuer Performance aber braucht man die Kontrolle ueber Details.

    Ich glaube was wir hier haben ist (mal wieder) der Versuch einer eierlegenden Wollmilchsau, und weil D von der Syntax ungefaehr so aussieht wie die in der Wirtschaft gerade populaeren Sprachen C++,Java und C#, gibt es sogar Hoffnung auf Erfolg. Sowohl akademisch als auch wirtschaftlich gesehen find ich die Sprache aber nicht besonders interessant.

    D hat ein halbherziges, sehr kompliziertes objektorientiertes Design. Es hat eine aufgeblaehte und wenig intuitive Syntax und kommt von der Performance her sicher nicht an C heran. Wenn man seine Programme in einer moeglichst abstrakten Sprache entwicklelt, und fuer performancekritische Probleme eine zweite, maschinennahe Sprache einsetzt, ist man der Wollmilchsau D doch wohl immer einen Schritt voraus?

    Was wir wirklich brauchen koennten waehre eine neue Version von Smalltalk, die besser mit bestehenden Systemen zusammenarbeitet. Oh, aber die gibt es ja schon laengst. Nennt sich Ruby.

    Wieso belgische Tastatur?

    http://www.dooyoo.de/online-shops/dell-de/595725/

    http://www.dooyoo.de/online-shops/dell-de/685129/


    Ich schaetze die Wahrscheinlichkeit, das mein Rechner auch mit dem falschen Tastaturlayout geliefert wird, wird recht gering sein. ;) Aber das Dell bei seinen Lieferungen Mist baut hab ich jetzt schon oefter gelesen.

    Beim Kampf um die Krone muss halt alles so schnell wie moeglich gehen, da sind Fehler vorprogrammiert.

    Naja hoffen wir mal das bei uns alles gut geht ;)

    So, um die Geschichte (hoffentlich) abzuschliessen:

    Ich hatte bis heute wiederholt keine Auftragsbestaetigung erhalten, obwohl sie mir (das letzte mal Mittwoch) noch mit vielen Entschuldigungen fuer den selben Tag zugesichert wurde.

    Heute (vor ca.15 Minuten) habe ich dann nochmal angerufen und nachgefragt.
    Mein Dell Berater meinte, dass Problem waehre seine Kollegin, die fuer Oesterreichische Bestellungen zustaendig sei. Ich hab ihm dann gesagt dass ich mein Angebot zurueckziehen wuerde, wenn ich die Bestaetigung im Verlauf des heutigen Tages nicht mehr in meiner Inbox finden wuerde. Er meinte er wuerde jetzt persoenlich mit ihr sprechen. Ca. 5 Minuten später hab ich dann einen Anruf von besagter Kollegin erhalten. Ihre Software würde es unmöglich machen, eine Auftragsbestaetigung zweimal zu verschicken (da hat aber jemand mitgedacht ;) ).

    Na, jedenfalls habe ich mir dann von ihr alle wichtigen Daten ueber das Telefon durchsagen lassen, inklusive Gesamtpreis => scheint alles zu stimmen. Außerdem habe ich jetzt Kundennummer und Auftragsnummer, so dass ich den Bestellstatus einsehen kann: Gerät ist am 5.12 weggegangen und soll am 14. eintreffen. Schließlich wurde mir noch versichert, ich würde auf jeden Fall noch eine Auftragsbestaetigung per Post erhalten.


    So, geht doch. Die ganze Telefoniererei (teilweise auf eigene Kosten) fand ich dann doch sehr mühsam, aber wenn ich mein Gerät jetzt mehr oder weniger zeitgemaess und vollstaendig erhalte und keine belgische Tastatur mitgeliefert wird (soll bei Dell schon oefter mal passiert sein), bin ich eigentlich wieder recht zufrieden.

    Um meine eigene Frage jetzt mal zu beantworten: ja, ueblicherweise sollte man kurz nach der Telefonbestellung eine Auftragsbestaetigung per mail erhalten, ganz so als haette man online bestellt.

    Ich hab meinem Dell Berater heute morgen noch eine Nachricht auf seiner Mailbox hinterlassen und jetzt hat er gerade zurueckgerufen (dabei ist es Sonntag) und mir mitgeteilt, das die Email in meinem Fall erst am Montag abgeschickt werden wird. Als Grund fuer die Verzoegerung hat er mir irgendeine lame Ausrede genannt, das war mir natuerlich nicht so wichtig denn wen juckt es schon ob die Bestaetigung einen Tag frueher oder spaeter in der Inbox liegt.

    Hmm jetzt ist der Dienstag bald vorbei und ich hab immer noch keine Email bekommen. Ich mach mir deshalb sorgen, weil ich die Verguenstigungen (keine Versandkosten, schnelleres RAM) ja bis jetzt nur muendlich bestaetigt bekommen habe. Ich werde halt morgen noch einmal Kontakt aufnehmen muessen :( .

    Ich finde das Angebot ja nicht unbedingt schlecht, aber so guenstig wie fruehere Angebote ist es lange nicht. Wahrscheinlich nicht guenstig genug, um sich Medion anzutuen.

    Zum Vergleich mal das Geraet, dass ich mir juengst bei Dell bestellt habe:


    Dell Dimension 9200
    mit nur einem Jahr Garantie und einem Speicherupgrade auf 2*1GB 667Mhz RAM fuer 937,- . (Liefergebuehren muss man nicht bezahlen)

    Das sind 138,- mehr als beim Hofer, und dafuer gibt es

    +) 1GB mehr RAM, eine bessere Grafikkarte ( 7900GS statt 7600GS)
    - ) nur 1 Jahr Garantie und es fehlt sowas wie ein TV tuner (dafuer gibt es ne webcam dazu).

    Ich bin der Meinung das bei einem Desktop eine langjaehrige Garantie nicht so eine grosse Rolle spielt wie z.B. bei einem Notebook. Festplatte, RAM, DVD Laufwerk und Netzteil sind meiner Erfahrung nach die Teile, die bei einem PC als erstes draufgehen. Und diese Dinge haben so einen starken Preisverfall dass es wahrscheinlich billiger kommt sie nachzukaufen anstatt das Geraet fuer Wochen (bei Medion duerfen es auch schonmal Monate sein) in die Reparatur zu schicken.
    Man kann natuerlich Pech haben und alle Geraete fallen innerhalb von 3 Jahren alle der Reihe nach aus. Das halte ich aber fuer unwahrscheinlich und wenn doch, dann passiert das wohl eher dem Medion Rechner als dem Dell.

    Ich finde Gericom, aehh "Medion" sollte schon sehr, sehr guenstige Angebote machen, damit man sich fuer ein solches Geraet entscheidet. Denn auch wenn Dell nicht Apple oder Lenovo ist: Was Qualitaet betrifft, kann man Medion nicht unterbieten.