AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ist Delphi so Bedeutungslos ?

Ein Thema von ATS3788 · begonnen am 12. Feb 2013 · letzter Beitrag vom 28. Feb 2013
Antwort Antwort
Seite 13 von 33   « Erste     3111213 141523     Letzte »    
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#121

AW: Ist Delphi so Bedeutungslos ?

  Alt 15. Feb 2013, 11:32
Eben genau solche Beispiele. Zum Beispiel was du in Delphi hättest machen müssen, aber durch entsprechende Features (also Traits, Duck Typing, Type Inference, etc.) in einer anderen Sprache übersichtlicher oder einfacher hinbekommen hast.
OK. Fangen wir mal mit Type Inference an. Wie sehen anonyme Funktionen in Delphi aus (Beispiel aus der Doku)?
Delphi-Quellcode:
type
  TFuncOfInt = reference to function(x: Integer): Integer;

function MakeAdder(y: Integer): TFuncOfInt;
begin
  Result := function(x: Integer)
    begin
      Result := x + y;
    end;
end;
Bitte was? Eigentlich ist das Konzept auch dazu gedacht, Code kürzer und pregnanter schreiben zu können. Aber das ist ja mal gelinde gesagt größtenteils Code Noise. Mit Inferer könnte das ganze logisch völlig äquivalent (und nach wie vor typsicher) z.B. so aussehen:
Delphi-Quellcode:
function MakeAdder(y: Integer): Integer => Integer;
begin
  Result := x => x + y;
end;
Weiter zum Thema AOP. Damit kann ich z.B. mit weniger als 10 Zeilen Code an einer gebündelten Stelle einen kompletten Call Tree Logger implementieren, der z.B. JEDEN Methodencall loggt. Das ganze ist auch wunderbarst optional einkompilierbar, d.h. in der Production-Version ist der Code einfach nicht drin. Ansatzweise sähe das so aus (AspectJ):
Code:
public aspect TraceCalls {
  pointcut aCall : call(* *(..));
  before() : aCall() {
    System.out.println(thisJoinPoint);
  }
}
Das einzige was mir da in Delphi bleibt, ist in JEDER Methode einen Log-Aufruf zu implementieren und am besten noch mit ifdefs zu umschließen, damit das ganze auch optional reinkompiliert werden kann. ODer ich brauche ein special-prupose Logging-Tool, das den Code entsprechend instrumentieren kann. Muss ich noch viel mehr dazu sagen?

Weiter zum Thema Traits. Traits sind enorm vielseitig einsetzbar, und deren Mächtigkeit habe ich selbst glaube ich auch noch nicht vollumfänglich erfasst. z.B. kann man damit Multiple-Inheritance-ähnliche Dinge machen, allerdings mit deutlich weniger Brainfuck. Man kann auch einfach beliebige Funktionalität an beliebige Objekte drankleben. z.B. könnte man damit folgendes implementieren (gewürzt mit Duck Typing):
Code:
type ConvertibleToString: { def toString: String }

trait Signature { self => ConvertibleToString
 
  var signature: String = ""

  def isSigned: Bool = ...
  def sign(key: String) = ... // Implementation über self.toString

}

// und jetzt kann ich alles, was eine toString Methode hat, damit signieren.
val s = new List("a", "b", "c") with Signature
s.sign("secret")
Oha. Ein beliebiges Objekt hat nun plötzlich eine Signatur und wäre somit quasi vor Änderung geschützt (wobei man in echt vermutlich eher auf Serializable gehen sollte, anstelle von toString). Ist in Delphi einfach völlig unmöglich. Was da am nächsten hinkäme, wäre dann, eine Art Service zu haben, der Signaturen für Objekte verwaltet. Aber mal ganz ehrlich: Was davon ist der bessere Code?

Duck Typing ist auch extrem nützlich, wenn man mit Interfaces zu tun hat, die man selbst nicht manipulieren kann - also z.B. alles was Teil der Standardlibrary ist. Ich kann einfach Funktionen definieren, die alles als Input schlucken, was eben die Methoden hat, die ich in dieser Methode brauche - ohne dass dafür dieses Objekt ein explizites Interface implementieren müssten. Sprich ich kann damit ganz leicht Kompatibilität herstellen, wo sie das Typsystem ohne tieferen Sinn "zerstört" hat.

Zitat:
Ich frag mich immer was die ganzen Bullshit-Bingo-Spieler des OOP noch hier im Delphi-Forum suchen
Man kann sich natürlich auch auf dem Wissensstand vor 20 Jahren ausruhen - weil eigentlich sind das ja alles nur völlig wertlose Buzzwords
Leo S.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#122

AW: Ist Delphi so Bedeutungslos ?

  Alt 15. Feb 2013, 11:49
Manchmal stelle ich mir die Frage, ob ich noch auf der Delphi-PRAXiS bin oder auf troll-selbstbeweihraeucherung.de. Ich will ja gar nicht verhehlen, dass einige Dinge in Delphi fehlen oder nicht optimal umgesetzt sind oder es für gewisse Aufgaben schlicht das falsche Werkzeug ist, aber man muss es ja nicht nutzen. Aber darin, nur auf Threads wie diese zu lauern, um endlich mal wieder loswettern und zig andere Sprachen ins Feld führen zu können, sehe ich keinen Sinn. Aber da man ja ach so produktiv ist, hat man wahrscheinlich zu viel Zeit. Mir persönlich wäre das zu blöd.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#123

AW: Ist Delphi so Bedeutungslos ?

  Alt 15. Feb 2013, 11:53
Sehe ich auch so. Wir sitzen alle in einem Boot.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#124

AW: Ist Delphi so Bedeutungslos ?

  Alt 15. Feb 2013, 11:56
Sehe ich auch so. Wir sitzen alle in einem Boot.
Ja. Es heisst Titanic...
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#125

AW: Ist Delphi so Bedeutungslos ?

  Alt 15. Feb 2013, 11:57
Volle Zustimmung. @DeddyH
Stellt ihr euch auch in den Discounter und meckert weil der Joghurt X nur rechtsdrehende Joghurtdingens hat, der andere aber linksdrehende, welche man noch geschwindigkeitsregeln kann...
Man muß einfach auch mal wissen wann man die Klappe zu halten hat.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#126

AW: Ist Delphi so Bedeutungslos ?

  Alt 15. Feb 2013, 12:01
Man muß einfach auch mal wissen wann man die Klappe zu halten hat.
Ich wurde gefragt, ich habe geantwortet. Wie heißt es immer so schön: wenn es dich nicht interessiert, brauchst du es ja nicht zu lesen.

Aber ich mag euch auch
Leo S.
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#127

AW: Ist Delphi so Bedeutungslos ?

  Alt 15. Feb 2013, 12:05
Und einmal mehr wünsche ich mir für post von DeddyH einen Dankeknopf unter dem post
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#128

AW: Ist Delphi so Bedeutungslos ?

  Alt 15. Feb 2013, 12:29
Unter Delphi gibt es auch noch Möglichkeiten:

Spannend finde das UniGui-Projekt. Mit dem hohem Anteil gleichen Codes für den Webserver, als auch den Dektop zu programmieren, das könnte viel Zeit sparen. Sowohl bei der Programmierung, als auch bei der Einarbeitung von Entwickler und Endanwender.

Grüße in die Runde // Martin

Na das sieht ja richtig gut aus. Gefällt mir.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#129

AW: Ist Delphi so Bedeutungslos ?

  Alt 15. Feb 2013, 14:17
Zitat:
Ich frag mich immer was die ganzen Bullshit-Bingo-Spieler des OOP noch hier im Delphi-Forum suchen
Man kann sich natürlich auch auf dem Wissensstand vor 20 Jahren ausruhen - weil eigentlich sind das ja alles nur völlig wertlose Buzzwords
1) Gratuliere zum 4.800sten Post
2) Mit 30 Jahren Entwicklungserfahrung versichere ich dir folgendes: Je mehr Du auf die kleinen bis großen Nettigkeiten vertraust, die im Rahmen der Buzzword-Befriedigung irgendwo eingebaut werden, desto schlechtere Karten hast Du, in Deinen komfortablen Dreizeilen Fehler zu finden. Das heisst nicht, daß ich Maschinencode befürworte. Ein gesundes Mittelmaß ist angesagt. Und das bietet Delphi IMHO.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#130

AW: Ist Delphi so Bedeutungslos ?

  Alt 15. Feb 2013, 14:29
Vorweg: Ich halte meinen Beitrag für konstruktiv und zum Thema passend, aber falls ein Mod der Meinung ist, dass er das Thema sprengt, dann darf er ihn gerne in einen separaten Thread auslagern.
Eben genau solche Beispiele. Zum Beispiel was du in Delphi hättest machen müssen, aber durch entsprechende Features (also Traits, Duck Typing, Type Inference, etc.) in einer anderen Sprache übersichtlicher oder einfacher hinbekommen hast.
OK. Fangen wir mal mit Type Inference an. Wie sehen anonyme Funktionen in Delphi aus (Beispiel aus der Doku)?
Delphi-Quellcode:
type
  TFuncOfInt = reference to function(x: Integer): Integer;

function MakeAdder(y: Integer): TFuncOfInt;
begin
  Result := function(x: Integer)
    begin
      Result := x + y;
    end;
end;
Bitte was? Eigentlich ist das Konzept auch dazu gedacht, Code kürzer und pregnanter schreiben zu können. Aber das ist ja mal gelinde gesagt größtenteils Code Noise. Mit Inferer könnte das ganze logisch völlig äquivalent (und nach wie vor typsicher) z.B. so aussehen:
Delphi-Quellcode:
function MakeAdder(y: Integer): Integer => Integer;
begin
  Result := x => x + y;
end;
Anonyme Funktionen sind ein gutes Beispiel für das, was ich mit „nicht Pascal-like“ meinte. Ich finde dieses Konstrukt zwar sehr praktisch, wenn ich mit c-artigen Sprachen arbeite, aber IMO lässt sich das mit einer Pascal-Syntax einfach nicht gescheit umsetzen, ohne dass es wie ein Fremdkörper wirkt (das schließt beide obigen Varianten mit ein).

Pascal ist eine sehr explizite Sprache, was sicher daran liegt, dass sie ursprünglich für die Lehre konzipiert wurde. Deshalb schreiben wir in Pascal ja auch „begin“ und „end“ statt „{“ und „}“, Funktionsdeklarationen enthalten (anders als etwa in C) explizit das Wort „function“, Variablendeklarationen sind nur im „var“-Block möglich usw...
Dazu passt so ein Konzept wie lambda-Funktionen einfach nicht, weil der Witz ja gerade darin besteht, Informationen wegzulassen, um den Code zu verschlanken. Das beißt sich mit dem Pascal-Konzept, alles explizit hinzuschreiben.

Ich halte es nicht für sinnvoll, wild Konzepte aus anderen Sprachen in Pascal einzupflanzen. Sprachdesign heißt halt auch, manche Dinge wegzulassen. Bei anderen Sprachen sind wir es doch auch gewohnt, dass sie bestimmte Konzepte zugunsten anderer Konzepte weglassen...

Auch Pascal hatte seinerzeit innovative Konzepte – z.B. gibt es nested functions, weshalb z.B. der Bedarf für anonyme Funktionen gar nicht so groß ist. Man sollte lieber dieses Konzept ausbauen... nested functions sind z.B. wie gemacht für Closures (und die wiederum passen super zum Sichtbarkeitsprinzip von Pascal):

Delphi-Quellcode:
type
  TFuncOfInt = function(x: Integer): Integer;

function MakeAdder(y: Integer): TFuncOfInt;
  function Add(x: integer): Integer;
  begin
    Result := x + y;
  end;
begin
  Result := Add;
end;
Es ist eigentlich naheliegend, aber soweit ich weiß geht es immer noch nicht.

Geändert von Namenloser (15. Feb 2013 um 14:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 13 von 33   « Erste     3111213 141523     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz