Ruby

A few years ago, I came across the Ruby programming language, and I fell in love. Somehow, it just seemed to work the way my brain works—I can express myself in Ruby more naturally and with less intervening fluff than in any other language I know. […] And now, for the first time, I can seriously say that Ruby is ready for the enterprise. The language is stable, the libraries are great, and there is a growing pool of talented and enthusiastic Ruby developers, all rising to the challenge. Dave Thomas (Schmidt 2006, Foreword)

 

Ruby ist eine Programmiersprache, die 1995 von dem Japaner Yukihiro Matsumoto veröffentlicht wurde. Sie wurde durch die Sprachen Perl, Eiffel, Ada, Smalltalk und Lisp inspiriert. Die herausragenden Eigenschaften von Ruby sind:

  • Vollständige Objektorientierung. Es existieren keine einfachen Datentypen.
  • Die durch Lisp inspirierten Closures erlauben mächtige Operationen.
  • Ruby Mixins, die eine elegante Art der Mehrfachvererbung darstellen.
  • Das dynamische Typsystem, das große Flexibilität ermöglicht.
  • Die Ausbalancierung zwischen funktionaler und imperativer Programmierung.

Suchmaschinen

Eine Suchmaschine ist eine Software, die Verfahren des Information Retrieval implementiert. Sie dient zur Informationsfilterung von Dateien, die in einem Computersystem abgelegt sind. Eine Suchmaschine erstellt einen Index für die Datenbasis, um Suchanfragen für jeden Suchbegriff mit einer nach Relevanz geordneten Ergebnisliste zu beantworten. Dieser Index ist vergleichbar mit einem Index-Objekt eines Datenbanksystems. Nach Eingabe eines Suchbegriffes zeigt die Suchmaschine eine Liste mit Verweisen auf relevante Dokumente. Meistens werden die Suchergebnisse mit dem Titel des Dokuments und einem mit dem Suchbegriff enthaltenen Auszug aus dem Dokument dargestellt. Suchmaschinen haben drei wesentliche Aufgabenbereiche: 

  • Generierung, Aktualisierung und Optimierung einer Datenstruktur mit Informationen über die zu durchsuchenden Dokumente. Diese Datenstruktur wird Index genannt.
  • Verarbeitung der Suchanfragen und ordnen der Ergebnisse anhand der Relevanz des indizierten Dokumentes zum Suchbegriff.
  • Aufbereitung und Darstellung der Ergebnisse in einer Form, die vor allem den Kriterien: Erwartungskonformität, Aufgabenangemessenheit und Selbstbeschreibungsfähigkeit entspricht.

Nach der von Jakob Nielson erstellten und zuletzt im Jahr 2007 aktualisierten Liste mit den zehn schlimmsten Fehlern im Webdesign ist eine schlechte Suche der zurzeit am Häufigsten gemachte Fehler auf Webseiten. In Search: Visible and Simple beschreibt Jakob Nielsen die Gründe, warum Anwender Suchfunktionen auf Webseiten erwarten. Diese sind:

  • Anwender wollen nicht die Navigation einer Seite benutzen. Sie wollen nur das finden, was sie interessiert.
  • Die Suche bietet einen Ausweg wenn sich die Anwender in der Navigationsstruktur verloren fühlen und nicht weiter wissen.

Daraus ergibt sich, dass auf größeren Webauftritten eine Suchmaschine, aus Gesichtspunkten der Usability, ein unverzichtbarer Bestandteil ist. Jedoch ist die Implementierung einer Volltextsuchmaschine und die sinnvolle Gewichtung der zu durchsuchenden Inhalte sehr aufwendig.

Stammformreduktion

Als Stammformreduktion bezeichnet man im Information Retrieval ein Verfahren, mit dem verschiedene Varianten eines Wortes auf ihren gemeinsamen Wortstamm zurückgeführt werden. So sollen bei einer Suche nach test auch Ergebnisse zu finden sein, die zum Beispiel die Begriffe tested, tests oder testing enthalten.

Zur Stammformreduktion gibt es unterschiedliche Algorithmen für verschiedene Sprachen. Die Entwicklung eines Algorithmus zur Stammformreduktion ist eine experimentelle Wissenschaft, da dieser nicht mathematisch verifiziert werden kann, sondern an realen Texten getestet werden muss.

Man verfolgt mit der Stammformreduktion zwei Ziele:

  1. Durch das Zusammenführen verschiedener Wortformen zu einem Wort tritt dieses tendenziell häufiger auf. Es sollten deshalb mehr Dokumente bei einem Suchbegriff gefunden werden.
  2. Durch die Zusammenführung verschiedener Wortformen zu Einem, werden Listen mit Verweisstrukturen auf die zu indizierenden Dokumente kleiner, da weniger Wörter verwaltet werden müssen.

Stammformreduktion ist immer sprachenabhängig, da je nach Sprache unterschiedliche grammatikalische Regeln für Wortkomposition, Flexion und das Hinzufügen von Affixen (Präfix, Suffix und Infix) gelten, die unterschiedliche Algorithmen erfordern.

Kandelmarsch 2008

Der 86. Kandelmarsch fand im Rahmen der Absolventenverabschiedung der Hochschule Esslingen am 25. Juli 2008 statt. Dabei ziehen die Absolventen der Hochschule Esslingen mit Frack, Zylinder und einer Holzleiter durch die Esslinger Innenstadt. Wie im Jahr 1922 marschieren die Befrackten im Kandel – immer ein Fuß auf dem Gehweg und einer auf der Straße.

Die Hochschule hat auch einen Bericht über den Kandelmarsch ins Netz gestellt.

Information Retrieval

Information Retrieval (IR) ist ein Fachgebiet der Informatik, das die inhaltliche Suche nach Informationen in Dokumentensammlungen untersucht und Modelle, Methoden und Verfahren dafür entwickelt. Der Begriff Information Retrieval wurde 1950 von dem amerikanischen Informatikpionier Calvin Northrup Mooers geprägt. Es existiert keine eindeutige Definition des Begriffes. Die Fachgruppe Information Retrieval der Gesellschaft für Informatik beschreibt den Begriff folgendermaßen:

Im Information Retrieval (IR) werden Informationssysteme in Bezug auf ihre Rolle im Prozess des Wissenstransfers vom menschlichen Wissensproduzenten zum Informations-Nachfragenden betrachtet. Die Fachgruppe „Information Retrieval“ in der Gesellschaft für Informatik beschäftigt sich dabei schwer- punktmäßig mit jenen Fragestellungen, die im Zusammenhang mit vagen Anfragen und unsicherem Wissen entstehen. Vage Anfragen sind dadurch gekennzeichnet, dass die Antwort a priori nicht eindeutig definiert ist. […] Aus dieser Problematik ergibt sich die Notwendigkeit zur Bewertung der Qualität der Antworten eines Informationssystems, wobei in einem weiteren Sinne die Effektivität des Systems in Bezug auf die Unterstützung des Benutzers bei der Lösung seines Anwendungsproblems beurteilt werden sollte (Gesellschaft für Informatik).

 

Diese Definition ist sehr allgemein gehalten. Es wird die Vagheit oder Unschärfe betont. Zur Bewertung soll die Nützlichkeit herangezogen werden. Es wird also versucht, aus gespeichertem Wissen in Form einer Datenbasis den Informationsbedarf eines Benutzers zu befriedigen. Dabei spezifiziert der Benutzer eine Anfrage, die die erwartete Antwort nur grob charakterisieren muss. Das IR-System versucht dann diejenigen Informationen in der Datenbasis ausfindig zu machen, die Relevanz für diese Anfrage aufweisen. Dabei können eventuell mehrere Benutzerinteraktionen notwendig sein, bis ein endgültiges Ergebnis vorliegt. Zur Bewertung der Ergebnisse hinsichtlich ihrer Relevanz ist ein Bewertungsverfahren nötig, mit dem sich die Qualität der Ergebnisse feststellen lässt.

Ruby on Rails

Since it first appeared in July 2004, Ruby on Rails has revolutionized the process of developing web applications. It has enabled web developers to become much faster and more efficient, al lowing for quicker application development a critical advantage in these days of web time.
(Orsini 2007, S.1)

 

Ruby on Rails ist ein in Ruby programmiertes Framework für die Entwicklung von Webapplikationen. Es wurde von David Heinemeier Hansson entwickelt und 2004 der Öffentlichkeit vorgestellt. Das Framework folgt dem Model-View-Controller Architekturmuster, bei dem das Softwaresystem in Datenhaltungsschicht (Model), Präsentationsschicht (View) und Programmsteuerung (Controller) aufgeteilt wird.

Ruby on Rails macht von der Möglichkeit der Metaprogrammierung gebrauch um Methoden zu definieren, die wie Erweiterungen der Ruby Syntax wirken. Es folgt dem Prinzip Don’t Repeat Yourself und stellt Konvention über Konfiguration.

Besonders hervorzuheben ist das Modul Active Record, das eine objektrelationale Abbildung der Datenbank nach dem von Martin Fowler, in Patterns of Enterprise Application Architecture, vorgestellten Active Record Designpattern bereitstellt. In Agile Web Development with Rails wird Ruby on Rails in allen Details beschrieben.