<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9075573227612431052</id><updated>2011-04-24T03:44:57.155-07:00</updated><category term='Entwicklung'/><category term='Software'/><category term='Blitzprog'/><category term='Design'/><category term='Abstraktion'/><category term='Programmiersprache'/><category term='Problem'/><title type='text'>Blitzprog</title><subtitle type='html'>Moderne Softwareentwicklung</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blitzprog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9075573227612431052/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blitzprog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Eduard Urbach</name><uri>http://www.blogger.com/profile/04272552598210613933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9075573227612431052.post-5363877747063991956</id><published>2008-09-23T14:04:00.000-07:00</published><updated>2008-09-23T14:24:57.713-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Problem'/><category scheme='http://www.blogger.com/atom/ns#' term='Blitzprog'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><title type='text'>Klammern optional oder zwingend?</title><content type='html'>Beim Programmieren eines Beispiels für Blitzprog bin ich über das folgende Problem gestolpert:&lt;br /&gt;&lt;pre&gt;outStream.write inStream.read&lt;/pre&gt;Da es in bp auch Funktionsobjekte gibt, ist eine solche Anweisung bisher zweideutig gewesen. Einerseits könnte man den Rückgabewert von inStream.read verwenden und diesen dann an outStream.write übergeben oder es wird das Funktionsobjekt selbst als Parameter für outStream.write betrachtet. Letzteres würde dazu führen, dass das Funktionsobjekt in einen String konvertiert wird und am Ende der Text "inStream.read" im Streambuffer steht.&lt;br /&gt;&lt;br /&gt;Eine mögliche Option wäre es, den Rückgabewert nur bei Angabe der Klammern zu beachten (so wird es beispielsweise in Blitz3D realisiert). Das "Problem" bei diesem Ansatz ist, dass man nicht mehr&lt;br /&gt;&lt;pre&gt;string.length&lt;/pre&gt;schreiben kann, sondern auf&lt;br /&gt;&lt;pre&gt;string.length()&lt;/pre&gt;oder&lt;br /&gt;&lt;pre&gt;string.getLength()&lt;/pre&gt; ausweichen muss.&lt;br /&gt;Die getLength()-Methode möchte ich ungern verwenden, da man analog dazu eine set-Funktion für alle Variablen benötigt und dies sowohl einen zusätzlichen Aufwand als auch weitere Abhängigkeiten zur Folge hat (die ich gerne vermeide).&lt;br /&gt;&lt;br /&gt;Bleibt noch die length()-Variante. Eigentlich eine gute Lösung, aber meiner Ansicht nach sollten Funktionen nach Tätigkeiten bzw. Verben benannt werden und "Länge" ist nun wirklich keine Tätigkeit.&lt;br /&gt;&lt;br /&gt;Für welche Option ich mich entscheiden werde, steht noch nicht fest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9075573227612431052-5363877747063991956?l=blitzprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blitzprog.blogspot.com/feeds/5363877747063991956/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9075573227612431052&amp;postID=5363877747063991956' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9075573227612431052/posts/default/5363877747063991956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9075573227612431052/posts/default/5363877747063991956'/><link rel='alternate' type='text/html' href='http://blitzprog.blogspot.com/2008/09/klammern-optional-oder-zwingend.html' title='Klammern optional oder zwingend?'/><author><name>Eduard Urbach</name><uri>http://www.blogger.com/profile/04272552598210613933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9075573227612431052.post-1637899896020951676</id><published>2008-09-21T01:48:00.001-07:00</published><updated>2008-09-23T14:23:40.534-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Entwicklung'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Abstraktion'/><title type='text'>Wie wird man künftig Software entwickeln?</title><content type='html'>Das kann niemand genau sagen, aber ich glaube, dass die Entwicklung von Software schon sehr bald stark abstrahiert werden kann (in einigen Teilbereichen ist es auch heute schon möglich). Nichts ist nerviger für Programmierer als sich wiederholende Abläufe. Prozesse, die man eigentlich formal beschreiben kann. Da ich ein Freund der Praxis bin, hier ein Beispiel:&lt;br /&gt;&lt;pre&gt;print(1)&lt;br /&gt;print(2)&lt;br /&gt;print(3)&lt;/pre&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;Hinweis:&lt;/span&gt;&lt;span style="font-size:78%;"&gt; Die hier vorgestellten Codes sind Pseudo-Codes und stellen nicht die Blitzprog-Sprache dar.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jeder erfahrene Programmierer würde diesen Code in eine For-Schleife umwandeln:&lt;br /&gt;&lt;pre&gt;for i = 1 to 3&lt;br /&gt;  print(i)&lt;/pre&gt;Dies ist die einfachste Möglichkeit, einen Prozess abstrakt zu beschreiben.&lt;br /&gt;Etwas komplexer wird es in diesem Fall:&lt;br /&gt;&lt;pre&gt;class Vector3&lt;br /&gt;  int x&lt;br /&gt;  int y&lt;br /&gt;  int z&lt;br /&gt;  function add(vec)&lt;br /&gt;    self.x = x + vec.x&lt;br /&gt;    self.y = y + vec.y&lt;br /&gt;    self.z = z + vec.z&lt;/pre&gt;Erster Versuch:&lt;br /&gt;&lt;pre&gt;class Vector3&lt;br /&gt;  int x, y, z&lt;br /&gt;  function add(vec)&lt;br /&gt;    self.x += vec.x&lt;br /&gt;    self.y += vec.y&lt;br /&gt;    self.z += vec.z&lt;/pre&gt;Hier wurde der Dreizeiler für die Deklaration der drei Integervariablen zu einer Zeile zusammengefasst. An dieser Stelle kann man sich bereits darüber streiten, welches die höhere Lesbarkeit mit sich bringt. Da x, y und z in diesem Kontext zusammenhängen, ist es aus meiner Sicht logischer, diese auch in einer Zeile zu schreiben. Außerdem verbessert sich die Wartbarkeit, da bei einer Änderung des Datentyps nur eine Zeile umgeschrieben werden muss (C++ Templates würden hier ebenfalls hilfreich sein).&lt;br /&gt;Nun zu Abstraktionsstufe 2:&lt;br /&gt;&lt;pre&gt;class Vector3(DataType = int)&lt;br /&gt;  DataType x, y, z&lt;br /&gt;  function add(vec)&lt;br /&gt;    self.[x, y, z] += vec.[x, y, z]&lt;/pre&gt;Zwei weitere Verbesserungen: Erstens wurde der Datentyp verallgemeinert, so dass die 3D-Vektorklasse nun auch mit anderen Datentypen wie z.B. float nutzbar ist. Zweitens wurde die Zuweisung bzw. di Addition der xyz-Variablen in einer - für die meisten Leser - bisher noch unbekannten Syntax zusammengefasst. Der Compiler erkennt, dass die erste Variable des Objekts self (in diesem Fall x) mit der ersten Variablen des zweiten Objekts vec (dessen x) addiert werden muss. Bei der zweiten und dritten Variable ist der Vorgang äquivalent. Zum Schluss möchte ich noch zeigen, wie dieser Code nun in bp (Abkürzung für die Blitzprog-Programmiersprache) aussehen würde:&lt;br /&gt;&lt;pre&gt;class Vector3&lt;br /&gt;  init value&lt;br /&gt;    self.[x, y, z] = value&lt;br /&gt;  &lt;br /&gt;  add vec&lt;br /&gt;    self.[x, y, z] += vec.[x, y, z]&lt;/pre&gt;Dies sind nur kleine Beispiele einer Abstraktion im Vergleich zu dem, was später möglich sein wird.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9075573227612431052-1637899896020951676?l=blitzprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blitzprog.blogspot.com/feeds/1637899896020951676/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9075573227612431052&amp;postID=1637899896020951676' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9075573227612431052/posts/default/1637899896020951676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9075573227612431052/posts/default/1637899896020951676'/><link rel='alternate' type='text/html' href='http://blitzprog.blogspot.com/2008/09/wie-wird-man-knftig-software-entwickeln_58.html' title='Wie wird man künftig Software entwickeln?'/><author><name>Eduard Urbach</name><uri>http://www.blogger.com/profile/04272552598210613933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9075573227612431052.post-3095375197738124914</id><published>2008-09-21T01:47:00.000-07:00</published><updated>2008-09-23T14:24:32.401-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blitzprog'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Programmiersprache'/><title type='text'>Einführung</title><content type='html'>&lt;ul&gt;&lt;li&gt;Wie wird man künftig Software entwickeln?&lt;/li&gt;&lt;li&gt;Wo liegen die Probleme bei den heutigen, populären Programmiersprachen?&lt;/li&gt;&lt;li&gt;Wie weit wird die künstliche Intelligenz die Softwareentwicklung unterstützen?&lt;/li&gt;&lt;li&gt;Kann es überhaupt eine perfekte Programmiersprache geben?&lt;/li&gt;&lt;li&gt;Wie wichtig ist die Lesbarkeit von Programmen beim Design einer Programmiersprache?&lt;/li&gt;&lt;/ul&gt;Dies sind die Themen, über die ich mir in diesem Blog Gedanken mache (in der Hoffnung, dass jemand seine Zeit damit verschwendet diese zu lesen ;). Ich entwickle parallel dazu eine Programmiersprache, die meine Anforderungen an eine moderne, produktive, möglichst fehlerfreie und schnelle Arbeitsweise ermöglicht:&lt;br /&gt;&lt;a href="http://code.google.com/p/blitzprog/"&gt;&lt;br /&gt;Blitzprog Projektseite&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Eine grobe &lt;a href="http://code.google.com/p/blitzprog/wiki/About"&gt;Beschreibung von bp&lt;/a&gt; existiert ebenfalls. Feedback (auch per E-Mail) ist bei mir stets willkommen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9075573227612431052-3095375197738124914?l=blitzprog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blitzprog.blogspot.com/feeds/3095375197738124914/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9075573227612431052&amp;postID=3095375197738124914' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9075573227612431052/posts/default/3095375197738124914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9075573227612431052/posts/default/3095375197738124914'/><link rel='alternate' type='text/html' href='http://blitzprog.blogspot.com/2008/09/wie-wird-man-knftig-software-entwickeln_21.html' title='Einführung'/><author><name>Eduard Urbach</name><uri>http://www.blogger.com/profile/04272552598210613933</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
