December 19, 2005, 23:34
* The literal syntax is much too meagre. Ther is no Map, no Collection, no List, no multiline String,
no expression substitution in Strings.
* The standard libraries provide poor abstractions and little convenience.
* There is no clean systax for block closures.
* It’s statically typed without providing proper generics or some kind of double dispatch.
December 19, 2005, 23:31
This morning I had to write the code to initialize a field to one year before today. It was *four* lines. And it is not type safe, but using magic int constants.
December 19, 2005, 23:29
Gerade hatten wir wieder einen WTO Gipfel und wieder war allerlei Törichtes über den bösen Neoliberalismus zu hören und zu lesen.
Der neoliberalismus als Richtung der Ökonomik ist heute “Mainstream” und das ist auch gut so. Wer heute Keynes total wichtig findet ist m.E. schief gewickelt. Dass der Welthandel nicht fair ist, ist bekannt. Das Problem der dritten Welt besteht nun gerade darin, dass die Industrienationen auf hohen Zölle bzw. Subventionen für Agrargüter bestehen, die z.B. in Europa aufgrund der klimatischen Bedingungen eigentlich gar nicht so richtig gut hergestellt werden können.
Diese Politik ist nun aber überhaupt nicht neoliberal, sondern reines Lobby-Appeasement, das noch als patriotischer Merkantilismus verkauft wird. Ein Zoll führt nach mikroökonomischer Analyse zu höheren Preisen für Verbraucher, schlechteren Preisen für die Anbieter und zu einem geringeren Marktvolumen (geringere Produktion). Durch die geringere Produktion entsteht ein Gesamtwohlfahrtsverlust. Am Schluss geht es fast allen schlechter: den per Zoll gestraften Produzenten und den Verbrauchern, die zuviel für die Bananen ausgeben. Lediglich die protegierten Landwirte gewinnen, aber nicht in dem Maße, wie die anderen verlieren (es werden insgesamt weniger Güter produziert).
Die reine Marklösung offenbart, dass es unrentabel ist in Europa gewisse landwirtschaftliche Produkte anzubauen, die Arbeitszeit wird also auf “unfruchtbarem Acker” verschwendet.
Ich glaube Attac & Co wären gut beraten sich mit der “neoliberalen” Theorie vertraut zu machen und sich gewissermaßen an die Spitze der Bewegung zu setzen und die konsequente Anwendung neoliberaler Empfehlungen zu verlangen.
December 15, 2005, 20:17
Suche elegante Möglcihkeit das untenstehende Idiom in generischer Form zu implementieren, da ich insbesondere das put gerne vergesse. Any Ideas?
map = ....;
//probably a loop here:
key = ....;
Element element;
if (map.containsKey(key)){
element=(Element)map.get(key);
}
else{
element=new Element();
map.put(key,element);
}
//work with element
December 15, 2005, 19:24
zeichnet sich nicht dadurch aus, dass sie Exceptions großzügig fängt und ins log schreibt. Das gilt auch für betwixt!
December 15, 2005, 00:11
After my recent post about the advent of the sunset of java I’ve read Bruce Tate’s “Beyond Java”, which seems to fall into line with my argument.
What I did particularly like about the book was the statement that Java is a language for system programming (which cached in on a lot of shortcomings of C/C++), but not an application language.
He tries to give us an idea of the things to come. As examples he points to Ruby on Rails and Seaside. What I miss in his book is the non-web perspective, because currently we see a trend towards real multi tier apps, that have a web(service) tier and a richclient (AJAX, Flex, Laszlo whatever) tier. The real richclient is gathering steem driven by IBMs Eclipse RCP endeavour.
And what I see currently is that the Java community itself is falling apart into different camps:
* The Webapps folk (Spring and friends)
* The Swing folk
* The Eclipse folk
They all employ their own utilities and modelling/ meta-approaches.
Another thing that Bruce does not mention is the integration power of dynamic languages. Ruby has excellent support to wrap C libs (not comparable to the average JNI-nightmare) and so has Python. Both languages provide bindings to dynamically support windows OLE automation in a natural way (by calling methods).
December 14, 2005, 23:57
heute wurde ich in eine lebhafte Diskussion über das Fernsehen, insbesondere das private, verwickelt (Jaja, ich habe eine Neigung in Diskussionen verwickelt zu werden).
Meine These war so ungefähr, dass Privatfernsehen in der aktuell dargebotenen Form schädlich ist und der Staat eingreifen muss.
Verschiedene Argumente für die Schädlichkeit hat Kathy Sierra
zusammengestellt. Das sieht ganz plausibel aus und besagt das Fernsehen auf verschiedene Arten negativ auf das Gehirn einwirkt.
Die Kernfrage ist jetzt ist eine Reglementierung des Fernsehens auf ein nveauvolles (schon das Wort!) nicht zu häufig durch Werbung unterbrochenes Programm ein Gebot der Stunde oder unerwünschter staatlicher Eingriff – am Ende gar Zensur?
Geäußert wurde unter anderem, dass man dem Kind tausendmal sagen (also verbieten) kann, dass es nicht auf die Herdplatte greifen soll, gelernt werde durch den Schmerz. Ich würde mal behaupten das zieht im Fall des Fernsehens nur bedingt, aber wer einen staatlichen Eingriff will, muss Ihn gut legitimieren können…
* Welches Rechtsgut steht also auf dem Spiel?
* Ist das Fernsehen, dadurch dass es auf subtile Art und Weise als Wirklichkeit aufgefasst wird etwas anderes als z.B. Literatur?
* Unterliegt unser Umgang mit dem Fernsehen unseren Moralvorstellungen oder umgekehrt?
* Und wer entscheidet was gutes und was kein gutes Programm ist?
Keine unerheblichen Fragen also.
Ich frage mich, ob das alte öffentlich rechtliche System nicht ein sehr gutes war.
December 11, 2005, 22:25
Wer bisher Probleme mit dem Web-gerechten Zitieren von Simpsons Folgen hatte, für den gibt’s hier Abilfe: The Simpsons Archive.
December 6, 2005, 01:12
Today I had a glance at commons collections. I’m convinced, that the more mature parts of the commons are what sun forgot about. If you know and use them you’ve definitely got a competive advantage.
But now for the code:
public class CollectionsDemo {
public static void main(String[] args) {
List list= Arrays.asList(new String[]{"Hund","Katze","Huhn"});
List hList = (List) CollectionUtils.select(list,new Predicate() {
public boolean evaluate(Object object) {
return ((String)object).startsWith("H");
}
});
System.out.println(hList);
List upperList=(List)CollectionUtils.collect(list, new Transformer() {
public Object transform(Object object) {
return ((String)object).toUpperCase();
}
});
System.out.println(upperList);
}
}
It’s quite terse, isn’t it. The typecasts make the whole thing a bit awkward (but generics to the rescue). Just feel the power of closures. And of course I don’t want to deprive you of the output of the lines above:
[Hund, Huhn]
[HUND, KATZE, HUHN]
It’s been around for almost 30 years, but nobody told us! Martin Fowler recently wrote about these idioms in ruby/ smalltalk.
December 2, 2005, 22:16
Wie hier schon zu lesen war bin ich ein großer Freund der Exception, auch als Kontrollstruktur (für den Ausnahmefall). Eben hatte ich wieder so einen Fall, in dem ich besser eine Exception geschmissen hätte ,statt mit false zu “returnen.” Das ging etwa so:
public boolean myOperation(){
if (!preconCheck1){
log("precon 1 failed")
return false;
}
if (!preconCheck2){
log("precon 2 failed")
return false;
}
performActualOperation();
return true;
}
Jetzt war es so, dass die Prüfung der Vorbedingungen immer umfangreicher wurde.
Nun wollte ich den Code etwas aufräumen, da noch einige Modifikationen notwendig geworden waren. Mein Instinkt sagte mir “Extract Method”, aber leider hat der Vorbedingungscheck mehrere Exitpoints. Ich müsste den boolean als Rückgabewert der Methode verwenden und nach aufruf prüfen und ggf. mit return false abbrechen.
Problem ich hatte auch noch einen echten Wert zurückzugeben, ganz abgesehen davon, dass mir meine IDE die Sache nur ohne das Flag geschenkt hätte.