Der Sinn von Objective-C oder D wäre es eine "bessere" Sprache als C++ zu verwenden. Aber ausser PHP könnte man da ja fast alles nehmen.
Und der Unterschied beim "nur" recherchieren ist, dass das keine grosse Aussagekraft hat. Ich habe auch Implementierungen vorgeschlagen!
Wie überzeuge ich einen Zweifler?
Hi,
bei Jython bin ich nicht sicher, ob man damit direkt Java-Bytecode erzeugen kann. Soll wohl gehen, ich hab's aber nicht geschafft . Mit Groovy
http://groovy.codehaus.org/
soll das besser gehen. Es soll wohl noch etwas besser in die Java-Welt integriert sein.
Ansonsten wollt ihr mit C++, Java oder Python offenbar in jedem Fall eine objektorientierte Sprache verwenden. GUI-Toolkits drängen einem das ja auch auf.
Aus dem (hier allerdings gelegentlich auch kritisierten) Buch "Python GE-PACKT" nehme ich zum Ausprobieren anderer Sprachen immer dieses primitive Beispiel einer Lampe, das in Python z.B. so ausehen kann:
Das versuche ich dann, in anderen objektorientierten Sprache nachzubilden.
Macht das doch mal in C++ und Java (hab' ich schonmal gemacht) und vergleicht dann, welches euch am besten gefällt.
Meiner Meinung nach ist Python-Code am klarsten und übersichtlichsten und bei in den meisten Fällen akzeptabler Ausführungsgeschwindigkeit am einfachsten und schnellsten zu schreiben.
Deshalb ist Python meine bevorzugte Sprache.
Viele Grüße
bei Jython bin ich nicht sicher, ob man damit direkt Java-Bytecode erzeugen kann. Soll wohl gehen, ich hab's aber nicht geschafft . Mit Groovy
http://groovy.codehaus.org/
soll das besser gehen. Es soll wohl noch etwas besser in die Java-Welt integriert sein.
Ansonsten wollt ihr mit C++, Java oder Python offenbar in jedem Fall eine objektorientierte Sprache verwenden. GUI-Toolkits drängen einem das ja auch auf.
Aus dem (hier allerdings gelegentlich auch kritisierten) Buch "Python GE-PACKT" nehme ich zum Ausprobieren anderer Sprachen immer dieses primitive Beispiel einer Lampe, das in Python z.B. so ausehen kann:
Code: Alles auswählen
#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-
class Lamp:
def __init__(self):
self.itsStatus = "off"
def showStatus(self):
print "The lamp is " + self.itsStatus + " now."
def switchOn(self):
print "Click."
self.itsStatus = "on"
def switchOff(self):
print "Click."
self.itsStatus = "off"
myLamp = Lamp()
myLamp.showStatus()
myLamp.switchOn()
myLamp.showStatus()
myLamp.switchOff()
myLamp.showStatus()
Macht das doch mal in C++ und Java (hab' ich schonmal gemacht) und vergleicht dann, welches euch am besten gefällt.
Meiner Meinung nach ist Python-Code am klarsten und übersichtlichsten und bei in den meisten Fällen akzeptabler Ausführungsgeschwindigkeit am einfachsten und schnellsten zu schreiben.
Deshalb ist Python meine bevorzugte Sprache.
Viele Grüße
Und hier meine Version der Lampe:In Zeile 5 musste ich den ternären Operator einklammern, weil sonst (wenn die Lampe aus ist) nur 'off' und nicht 'Lamp is off' zurückgegeben wird.
Code: Alles auswählen
In [28]: class Lamp(object):
def __init__(self, on=True):
self.on = on
def __str__(self):
return 'Lamp is %s' % ('on' if self.on else 'off')
def switch(self):
self.on = not self.on
....:
....:
In [35]: lamp = Lamp()
In [36]: print lamp
Lamp is on
In [37]: lamp.switch()
In [38]: print lamp
Lamp is off
Mit der aktuellen stable version 2.2 funktioniert das problemlos. Dazu gibt es das Tool jythonc: Die richtigen Parameter angeben und fertig ist alles in einem jar-Archiv.abgdf hat geschrieben:bei Jython bin ich nicht sicher, ob man damit direkt Java-Bytecode erzeugen kann. Soll wohl gehen, ich hab's aber nicht geschafft
Bei den derzeitigen Beta-Versionen von 2.5 fehlt das Tool allerdings noch.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wobei genau dieses Beispiel irgend wie häßlich ist und nun genau mal nicht zeigt, worin Pythons Stärken liegen:abgdf hat geschrieben: Aus dem (hier allerdings gelegentlich auch kritisierten) Buch "Python GE-PACKT" nehme ich zum Ausprobieren anderer Sprachen immer dieses primitive Beispiel einer Lampe, das in Python z.B. so ausehen kann:
- kein PEP8
- ein Haufen sinnloser Methoden
- "Thema" dieser Klasse ist sinnfrei! (Wieso sollte man aus einem Boolschen Problem eine Klasse gießen?)
Generell ist es ja durchaus sinnvoll, sich einzelne kleine Use-Cases zu definieren und das in anderen Sprachen nachzubauen, aber dieses Beispiel ist da imho wenig sinnvoll!
EDIT: Ok, sehe grad "derdon" hat hier gleich mal konstruktiv gekontert
Hi,
@Hyperion, derdon: Auch wenn der Code von derdon kürzer ist und bestimmt auch funktioniert, finde ich die ursprüngliche Version dennoch besser, weil sie verständlicher ist und damit besser gewartet werden kann. Wer versucht, möglichst kurz zu schreiben und dabei in Kauf nimmt, sich kryptisch auszudrücken, ist im Herzen eigentlich Perl-Programmierer (was ja nichts Schlechtes ist). Er muß dann aber auch mit Perls Fluch leben, daß größere Projekte so kaum zu realisieren sind, weil nach einiger Zeit keiner mehr den Code versteht.
Viele Grüße
Damit soll gezeigt werden, daß man in der objektorientierten Programmierung versucht, Gegenstände aus dem wirklichen Leben abzubilden. Ich glaube, das weißt Du aber.Hyperion hat geschrieben:Wieso sollte man aus einem Boolschen Problem eine Klasse gießen?
@Hyperion, derdon: Auch wenn der Code von derdon kürzer ist und bestimmt auch funktioniert, finde ich die ursprüngliche Version dennoch besser, weil sie verständlicher ist und damit besser gewartet werden kann. Wer versucht, möglichst kurz zu schreiben und dabei in Kauf nimmt, sich kryptisch auszudrücken, ist im Herzen eigentlich Perl-Programmierer (was ja nichts Schlechtes ist). Er muß dann aber auch mit Perls Fluch leben, daß größere Projekte so kaum zu realisieren sind, weil nach einiger Zeit keiner mehr den Code versteht.
Viele Grüße
@abgdf
Deine Version verwendet doch nur mehr Methoden und Strings statt einem (boolschen) Zustand. Man könnte derdon's Klasse auch mit einer on und off Methode oder ähnlichem ausstatten, wenn man wollte. Das benutzen von boolschen Werten für mehr oder weniger einfache Zustände würde ich mir aber nicht nehmen lassen und empfinde derdon's Klasse auch als besser. Genau für solche Dinge sind boolsche Operationen und Werte mitunter vorgesehen, sollte man nicht nur bei "if" benutzen.
Deine Version verwendet doch nur mehr Methoden und Strings statt einem (boolschen) Zustand. Man könnte derdon's Klasse auch mit einer on und off Methode oder ähnlichem ausstatten, wenn man wollte. Das benutzen von boolschen Werten für mehr oder weniger einfache Zustände würde ich mir aber nicht nehmen lassen und empfinde derdon's Klasse auch als besser. Genau für solche Dinge sind boolsche Operationen und Werte mitunter vorgesehen, sollte man nicht nur bei "if" benutzen.
@abgdf: Bei OOP versucht man nicht Gegenstände aus dem "wirklichen Leben" 1:1 abzubilden. Es geht beim Programmieren immer darum das "wirkliche Leben" zu abstrahieren und nur die Teile zu modellieren die wichtig sind. Und wenn die Aspekte einer Lampe, die man abbilden möchte, abstrakt gesehen einfach nur ein Boolean sind, dann bastelt man da nicht künstlich eine Klasse drum herum.
Das kann man natürlich mit "Spielzeugbeispielen" nicht zeigen. Mit solchen OOP-Beispielen kann man eigentlich fast nur die Syntax demonstrieren. Der fast wichtigere Aspekt, wann und wie man OOP sinnvoll einsetzt ist schwieriger zu zeigen, weil man da ein Problem mit einer gewissen Komplexität für braucht.
Das Beispiel von derdon ist kürzer aber nicht so kurz das es unverständlich wäre. Der Vergleich mit Perl hinkt gewaltig. Dort ist der Schalter auch mit dem passenden Datentyp modelliert. An- und Ausschalten kann man durch direktes Zuweisen, da braucht man keine Methoden für. Und die Klasse weiss wie sie sich selbst als Zeichenkette darstellt, aber nicht so etwas spezielles wie eine Ausgabe.
Das kann man natürlich mit "Spielzeugbeispielen" nicht zeigen. Mit solchen OOP-Beispielen kann man eigentlich fast nur die Syntax demonstrieren. Der fast wichtigere Aspekt, wann und wie man OOP sinnvoll einsetzt ist schwieriger zu zeigen, weil man da ein Problem mit einer gewissen Komplexität für braucht.
Das Beispiel von derdon ist kürzer aber nicht so kurz das es unverständlich wäre. Der Vergleich mit Perl hinkt gewaltig. Dort ist der Schalter auch mit dem passenden Datentyp modelliert. An- und Ausschalten kann man durch direktes Zuweisen, da braucht man keine Methoden für. Und die Klasse weiss wie sie sich selbst als Zeichenkette darstellt, aber nicht so etwas spezielles wie eine Ausgabe.
..... Es muss in praktischer Hinsicht noch erwähnt werden, dass wir es hier mit zwei verschiedenen Schaltertypen zu tun haben.
a) abgdf-Schalter (Kippschalter)
b) derdon-Schalter (Schrittschalter)
Gruss wuf
a) abgdf-Schalter (Kippschalter)
b) derdon-Schalter (Schrittschalter)
Gruss wuf
Take it easy Mates!
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Naja, stimmt aber nicht so ganz! bei b.) kann man die Zustände ja auch direkt setzen! Also ist es ein Hybrid aus Kipp- und Schrittschalterwuf hat geschrieben:..... Es muss in praktischer Hinsicht noch erwähnt werden, dass wir es hier mit zwei verschiedenen Schaltertypen zu tun haben.
a) abgdf-Schalter (Kippschalter)
b) derdon-Schalter (Schrittschalter)