Constraintprogrammierung

Die Constraintprogrammierung (englisch Constraint Programming, CP) ist ein Programmierparadigma, das seit Mitte der 1980er Jahre entwickelt wird und als Weiterentwicklung der logischen Programmierung entstanden ist. Die Constraint-basierte Programmierung erlaubt die Integration von Constraints und ihren Lösungsmechanismen in eine Programmiersprache. Mittlerweile ist sie ein eigenständiger Bereich der künstlichen Intelligenz und hat vielfältige Anwendungsgebiete in Praxis und Wissenschaft.

Bei der Constraintprogrammierung beschreibt der Nutzer das Problem auf deklarative Weise, während der Lösungsprozess aus Nutzersicht in den Hintergrund tritt. Dieser wird vom Constraint-Löser übernommen. Für Eugene Freuder stellt das Paradigma deshalb die bisher größte Annäherung an den „Heiligen Gral“ der Programmierung dar: Der Nutzer statuiert das Problem, der Computer löst es.[1]

Constraints

Der Begriff Constraint bedeutet in etwa Zwang oder Nebenbedingung. Es handelt sich um spezielle prädikatenlogische Formeln, die Bedingungen oder Einschränkungen beschreiben. Im mathematischen Sinn sind damit auch Nebenbedingungen gemeint, wie sie beispielsweise bei der Lösung mathematischer Optimierungsprobleme Anwendung finden.

Man kann zum Beispiel die Umrechnungsformel von Grad Celsius in Grad Fahrenheit als ein Constraint auffassen: . Durch die Belegung der Variablen mit Werten wird das Constraint entweder erfüllt (true) oder nicht erfüllt (false). Die Umrechnung ist beispielsweise mit und erfüllt, während und das Constraint offensichtlich verletzt.

Das Constraint ist unabhängig von einer Wertebelegung immer erfüllt, das Constraint dagegen nie.[2]

Ein weiteres Beispiel ist ein pythagoreisches Tripel, das von drei natürlichen Zahlen , und gebildet wird, welche die Seitenlänge eines rechtwinkligen Dreiecks angeben. Eine Constraint-basierte Modellierung solcher Tripel über dem Definitionsbereich kann durch folgende Constraint-Konjunktion dargestellt werden:

Eine mögliche Lösung ist das Tripel .[3]

Erfüllbarkeit und Lösungen

Nachdem man ein Problem durch Constraints beschrieben hat, möchte man herausfinden, ob die Constraints erfüllbar sind. Zusätzlich können mögliche Lösungen von Interesse sein. Die Fragen nach der Erfüllbarkeit von Constraints und nach konkreten Lösungen sind eng miteinander verbunden. Ist ein Constraint erfüllbar, so gibt es mindestens eine Lösung. Allerdings gestaltet sich die Berechnung einer Lösung oft komplizierter als die Feststellung der Erfüllbarkeit.[4]

Eine „naive“ Herangehensweise zur Entscheidung der Erfüllbarkeit und zur Berechnung konkreter Lösungen wäre, alle möglichen Belegungen der Variablen mit Werten durchzuprobieren. Allerdings ist die Anzahl möglicher Belegungen oft sehr groß oder unendlich, sodass diese Vorgehensweise scheitert. Deshalb kommen in vielen Situationen spezielle Algorithmen zur Behandlung von Constraints zum Einsatz.

Constraint-Löser sind Algorithmen, die Tests und Operationen auf Constraints zur Verfügung stellen. Diese können häufig nicht nur die Erfüllbarkeit prüfen und konkrete Lösungen berechnen, sondern auch weitere Operationen auf Constraints durchführen.[5]

Constraint-Systeme

Aus formaler Sicht stellen Constraints spezielle prädikatenlogische Formeln dar, mit deren Hilfe man Eigenschaften von Problemen und deren Lösung beschreibt.[6] Dazu gehören Gleichungen und Ungleichungen über Zahlen, aber auch andere Ausdrücke über Zahlen, boolesche Werte oder beliebige andere Mengen wie Buchstaben oder Wörter.

Constraint-Löser funktionieren in der Regel nur auf einer speziellen Klasse von Constraints. Diese werden durch Constraint-Systeme klassifiziert. Dadurch lassen sich den Constraint-Systemen passende Lösungsmechanismen zuordnen.[7]

Typische Constraint-Systeme sind:

  • Finite-Domain-Constraints: Diese haben die Eigenschaft, dass den beteiligten Variablen von vornherein endliche Wertebereiche (engl. finite domains) zugeordnet sind. Dieses Constraint-System wurde in der Forschung eingehend untersucht. Es hat in der Praxis große Bedeutung bei der Lösung kombinatorischer Probleme, z. B. zur Behandlung von Planungs-, Diagnose- und Konfigurationsproblemen.[9]

Constraint-basierte Programmierung

Die Constraint-basierte Programmierung erlaubt die Integration von Constraints und ihren Lösungsmechanismen in eine Programmiersprache. Darüber hinaus ermöglicht sie in der Regel die Definition neuer Constraints. Constraint-Bibliotheken erlauben die funktionale und syntaktische Erweiterung einer existierenden Sprache um Constraints unter Ausnutzung existierender Sprachkonzepte. Eine Constraint-basierte Sprache ist eine semantische Erweiterung einer existierenden Sprache um neue Konzepte und Auswertungsmechanismen bis hin zu einem vollständigen Neuentwurf.[10]

Ursprünglich entwickelte sich die Constraint-basierte Programmierung als Erweiterung der logischen Programmierung. Mittlerweile ist sie ein eigenständiger Bereich der künstlichen Intelligenz und hat vielfältige Anwendungsgebiete in Praxis und Wissenschaft.

Constraint-logische Programmierung

Die logische Programmierung arbeitet auf Basis einer Wissensdatenbank, aus der die Lösung von Anfragen hergeleitet wird. Bei der Auswertung von Anfragen werden die Prädikate mit Hilfe der Resolution abgeleitet. Constraint-logische Programme unterscheiden sich von logischen Programmen nur insofern, als sie in den rechten Seiten der Klauseln und in Anfragen neben logischen Prädikaten auch Constraints zulassen, die mit Hilfe von Constraint-Lösern auf Erfüllbarkeit überprüft werden.[11]

Die Syntax Constraint-logischer Programme unterscheidet sich nicht wesentlich von logischen Programmen. Es sind lediglich auch Constraints in den rechten Seiten der Regeln und in den Anfragen zulässig. Während logische Prädikate weiterhin durch Unifikation behandelt werden, werden die zusätzlichen Constraints gesammelt, in den Constraint-Speicher übertragen und von einem Constraint-Löser behandelt. Constraint-logische Programme lassen oft verschiedene Constraint-Domänen (z. B. FD-Constraints, arithmetische Constraints oder boolesche Constraints) mit entsprechenden Lösungsverfahren zu, die dann beispielsweise in Form von Bibliotheken vorliegen.[12]

Typische Constraint-logische Sprachen, die eine Generalisierung der logischen Sprachen darstellen, sind zum Beispiel ECLiPSe[13], CHIP[14] und SICStus-Prolog[15].

Nebenläufige Constraint-logische Programmierung

Die nebenläufige Constraint-logische Programmierung (engl. Concurrent Constraint Logic Programming, CCLP) integriert das Konzept der Nebenläufigkeit in die Constraint-logische Programmierung. Nebenläufigkeit ist die Eigenschaft eines Systems, mehrere Berechnungen, Anweisungen oder Befehle gleichzeitig ausführen zu können. Das System verzichtet dadurch auf Sequentialisierung. Dies ist dann möglich, wenn die betreffenden Aktionen voneinander kausal unabhängig sind, d. h. keine Aktion das Resultat einer anderen benötigt. Unabhängige Aktionen können entweder in beliebiger Reihenfolge sequentiell abgearbeitet werden oder echt parallel auf mehreren Rechnern gleichzeitig ausgeführt werden.

Das Modell der nebenläufigen Constraint-Programmierung kann auch mit partiellen Informationen über Variablenbelegungen arbeiten. Statt konkreter Daten für Variablen können auch Bedingungen auf diesen festgelegt werden.[16]

Eine multiparadigmatische Programmiersprache, die unter anderem deklarative, parallele und Constraint-basierte Ansätze vereint, ist beispielsweise Oz.

Constraint-imperative Programmierung

Die Constraint-imperative Programmierung vereinigt die beiden Paradigmen Constraintprogrammierung und imperative Programmierung. In imperativen Sprachen beschreibt der Programmierer, wie ein gegebenes Problem durch eine Sequenz von Anweisungen gelöst wird. Sie eignet sich besonders zur Modellierung von zeitlichen Abläufen. Dagegen konzentriert sich der Programmierer in der Constraintprogrammierung auf das Was, d. h., er beschreibt das Problem durch deren Eigenschaften in Form von Constraints. Die Kombination der imperativen Programmierung mit deklarativen Constraints stellt somit eine besondere Herausforderung dar.[17]

Ein Beispiel für eine Constraint-imperative Programmiersprache ist Turtle.[18] Diese entstand als eine einfache imperative Basissprache und wurde zunächst um funktionale Konzepte wie Funktionen höherer Ordnung erweitert. Danach wurde sie mit vier wesentlichen Konzepten zur Constraint-Programmierung angereichert[19]:

  • Constraint-Variablen: Diese unterscheiden sich von „normalen“ imperativen Variablen, deren Werte durch Zuweisungen festgelegt werden, dadurch, dass ihre Werte durch Constraints festgelegt bzw. eingeschränkt werden. Constraint-Variablen werden auch als deklarative Variablen bezeichnet.
  • Constraint-Anweisungen: Eine Constraint-Anweisung kann mehrere durch den and-Operator verknüpfte Constraints enthalten. Mit Ausführung der require-Anweisung werden die Constraints zum Constraint-Speicher des Constraint-Lösers hinzugefügt. Der Löser prüft die Erfüllbarkeit der Constraint-Konjunktionen und weist eine Lösung den Constraint-Variablen zu.
  • Nutzer-definierte Constraints: Diese abstrahieren von Constraints wie Funktionen von Ausdrücken. Sie dienen der Definition häufig auftretender Muster, um den Programmieraufwand zu verringern und die Lesbarkeit der Programme zu verbessern.
  • Constraint-Löser: Diese sind dafür verantwortlich, die mit require ausgeführten Constraints zu verwalten und Lösungen zu berechnen. Sind die Constraints im Speicher zusammen unerfüllbar, wird eine Exception ausgelöst.

Die C++-Bibliothek Turtle++ hat viele Konstrukte von Turtle übernommen und für eine harmonische Integration in C++ angepasst.

Constraint-objektorientierte Programmierung

Die Einbettung von Constraints in objektorientierte Programmiersprachen wird als Constraint-objektorientierte Programmierung bezeichnet.

Für die objektorientierte Programmiersprache Java existiert die Bibliothek firstcs zur objektorientierten Constraintprogrammierung. Ihr Kern bildet eine Klasse namens CS (Constraint-Solver). Jedes Objekt dieser Klasse besitzt und verwaltet Variablen über endlichen, ganzzahligen Domänen und Constraints über diesen Variablen. Aufgrund des objektorientierten Designs der Bibliothek ist es möglich, in einem Programm mehrere Constraint-Systeme gleichzeitig zu generieren und zu manipulieren, die jedoch gegenwärtig nur voneinander unabhängige CSP repräsentieren können. Des Weiteren gibt es die Klassen Domain, Variable, Constraint und die Unterklassen von Constraint, die um den Kern herum die grundlegenden Methoden und Verfahren zur Modellierung und Lösung von CSP bereitstellen.[20]

Als ein weiterer Ansatz entstand die Programmiersprache Kaleidoscope, die Constraints in einen imperativen objektorientierten Stil integriert. Es ist eine der ersten Sprachen, bei der Constraints zwischen Attributen verschiedener Objekte spezifiziert werden.[21]

Des Weiteren ist Koalog eine bekannte Java-Bibliothek für Finite-Domain-Constraints und Ilog-Solver eine C++-Bibliothek für verschiedene Domänen.

Anwendungen

Im wissenschaftlichen Bereich findet die Constraint-basierte Programmierung beispielsweise bei der Verarbeitung natürlicher Sprache, im maschinengestützten Beweisen, in der Analyse von Programmen und in der Molekularbiologie Anwendung. In der industriellen Praxis sind typische Anwendungen Optimierungsprobleme und Scheduling-Aufgaben, Schaltkreis-Design und -Verifikation, graphische Systeme und Benutzerschnittstellen.[22]

Literatur

  • Frédéric Benhamou, Narendra Jussien, Barry O’Sullivan: Trends in constraint programming. John Wiley and Sons: London/Newport Beach, 2007.
  • Thom Frühwirth, Slim Abdennadher: Constraint-Programmierung: Grundlagen und Anwendungen. Springer-Verlag: Berlin/Heidelberg, 1997, ISBN 3-540-60670-X
  • Petra Hofstedt, Armin Wolf: Einführung in die Constraint-Programmierung. (Springer eXamen-press) Springer-Verlag: Berlin/Heidelberg, 2007, ISBN 978-3-540-23184-4
  • Francesca Rossi, Peter van Beek, Toby Walsh (Hrsg.): Handbook of Constraint Programming. Elsevier: Amsterdam et al., 2006.

Einzelnachweise

  1. Eugene C. Freuder: In Pursuit of the Holy Grail. In: Constraints 2 (1), 1997, S. 57–61; Petra Hofstedt: Kapitel Constraints. In: Günther Görz, Josef Schneeberger, Ute Schmid (Hrsg.): Handbuch der Künstlichen Intelligenz. 5. überarbeitete und aktualisierte Auflage. Oldenbourg Verlag: München, 2014, S. 206.
  2. Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 51–52.
  3. Petra Hofstedt: Kapitel Constraints. In: Günther Görz, Josef Schneeberger, Ute Schmid (Hrsg.): Handbuch der Künstlichen Intelligenz. 5. überarbeitete und aktualisierte Auflage. Oldenbourg Verlag: München, 2014, S. 205.
  4. Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 58.
  5. Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 60.
  6. Für eine formale Definition von Constraints siehe Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 54–55.
  7. Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 53–55.
  8. Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 177.
  9. Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 57, 71.
  10. Petra Hofstedt: Kapitel Constraints. In: Günther Görz, Josef Schneeberger, Ute Schmid (Hrsg.): Handbuch der Künstlichen Intelligenz. 5. überarbeitete und aktualisierte Auflage. Oldenbourg Verlag: München, 2014, S. 220.
  11. Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 127–133.
  12. Petra Hofstedt: Kapitel Constraints. In: Günther Görz, Josef Schneeberger, Ute Schmid (Hrsg.): Handbuch der Künstlichen Intelligenz. 5. überarbeitete und aktualisierte Auflage. Oldenbourg Verlag: München, 2014, S. 221.
  13. The ECLiPSe Constraint Programming System
  14. Coystec: CHIP V5
  15. SICStus: SICStus Prolog
  16. Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 141–162.
  17. Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 185.
  18. catamorph.de: Turtle – eine constraint-imperative Programmiersprache (Memento vom 8. April 2016 im Internet Archive)
  19. Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 185–192.
  20. Hofstedt, Wolf: Einführung in die Constraint-Programmierung. 2007, S. 199–215.
  21. Gus Lopez, Bjorn Freeman-Benson, Alan Borning: Kaleidoscope: A Constraint Imperative Programming Language. In: Brian Mayoh, Enn Tyugu, Jaan Penjam: Constraint Programming. Springer-Verlag, S. 313–329.
  22. Petra Hofstedt: Kapitel Constraints. In: Günther Görz, Josef Schneeberger, Ute Schmid (Hrsg.): Handbuch der Künstlichen Intelligenz. 5. überarbeitete und aktualisierte Auflage. Oldenbourg Verlag: München, 2014, S. 206.


Read other articles:

People of southern Mexico and northern Central America This article is about the ethnic group. For the historical civilization, see Maya civilization. Mayans redirects here. For the television series, see Mayans M.C. Mayas redirects here. For the Indonesian ethnic group also known as May-as, see Sibuyanon. MayaMaya women in traditional dress, Quetzaltenango, GuatemalaTotal populationc. 8 million+ (2018)Pre-Columbian: 5–10 million[1][2]Regions with significant populationsPart...

 

Silesian duchy (1290–1850) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Duchy of Nysa – news · newspapers · books · scholar · JSTOR (January 2008) (Learn how and when to remove this template message) You can help expand this article with text translated from the corresponding article in Czech. (Mar...

 

Mud

Mixture of water and any combination of soil, silt, sand, and clay For other uses, see Mud (disambiguation). This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Mud – news · newspapers · books · scholar · JSTOR (January 2022) (Learn how and when to remove this template message) A pair of muddy boots Gamo mud vol...

Chemical compound NS-2664Identifiers IUPAC name 5-furan-3-yl-1-(3-imidazol-1-yl-phenyl)-1H-benzoimidazole CAS Number184097-13-0 YPubChem CID9840300ChemSpider8016018 NUNIIY8N5L9ASF9Chemical and physical dataFormulaC20H14N4OMolar mass326.359 g·mol−13D model (JSmol)Interactive image SMILES c5occc5-c(cc1nc4)ccc1n4-c2cc(ccc2)-n3cncc3 InChI InChI=1S/C20H14N4O/c1-2-17(23-8-7-21-13-23)11-18(3-1)24-14-22-19-10-15(4-5-20(19)24)16-6-9-25-12-16/h1-14H NKey:QMKRPSVBKKEAKS-UHFFFAOYSA...

 

This article relies largely or entirely on a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources.Find sources: 1979 Louisiana gubernatorial election – news · newspapers · books · scholar · JSTOR (September 2013) 1979 Louisiana gubernatorial election ← 1975 October 27, 1979 (first round)December 8, 1979 (runoff) 1983 →   Candidate Da...

 

Travis KalanickLahirTravis C. Kalanick6 Agustus 1976 (umur 47)Los Angeles, California, A.S.Tempat tinggalSan Francisco, California, A.S.KebangsaanAmerika SerikatAlmamaterUniversitas California, Los AngelesPekerjaanWirausahawanDikenal atasPendiri & CEO Uber Travis C. Kalanick (lahir 6 Agustus 1976) adalah seorang wirausahawan Amerika Serikat. Ia merupakan pendiri perusahaan berbagi berkas Red Swoosh dan perusahaan jaringan transportasi Uber. Kehidupan awal dan pendidikan Kalanick lah...

Carica eroicaTania Weber in una scena del filmPaese di produzioneItalia Anno1952 Durata95 min Dati tecnicibianco/nero Genereavventura, guerra RegiaFrancesco De Robertis SoggettoFrancesco De Robertis SceneggiaturaFrancesco De Robertis ProduttoreLux Film - Mambretti Distribuzione in italianoLux Film FotografiaCarlo Bellero MontaggioFranco Fraticelli MusicheEnzo Masetti ScenografiaPiero Filippone Interpreti e personaggi Tania Weber: Kalina Franco Fabrizi: capitano Franchi Gigi Reder: soldato...

 

Norwegian cyclist Martin UrianstadUrianstad at the 2023 Tour of NorwayPersonal informationFull nameMartin Bugge UrianstadBorn (1999-02-06) 6 February 1999 (age 25)Stavanger, NorwayTeam informationCurrent teamUno-X MobilityDisciplinesRoadRoleRiderProfessional teams2018Uno-X Norwegian Development Team (stagiaire)2019–Uno-X Norwegian Development Team Martin Bugge Urianstad (born 6 February 1999) is a Norwegian professional road cyclist, who currently rides for UCI ProTeam Uno-X ...

 

Moldovan politician (born 1982) Adrian EfrosEfros in 2023Minister of Internal AffairsIncumbentAssumed office 17 July 2023PresidentMaia SanduPrime MinisterDorin ReceanPreceded byAna Revenco Personal detailsBornRatuș, Moldavian SSR, Soviet UnionAlma materPerspectiva-Int UniversityAlexandru cel Bun Military AcademyNaval War CollegeMilitary serviceRankColonel Adrian Efros (born 7 October 1982) is a Moldovan military officer and politician who currently serves as the Minister of Internal Affa...

For the station at 207th Street and Broadway, see Inwood–207th Street station. New York City Subway station in Manhattan New York City Subway station in Manhattan, New York 207 Street  New York City Subway station (rapid transit)Station statisticsAddressWest 207th Street & 10th AvenueNew York, NYBoroughManhattanLocaleInwoodCoordinates40°51′52″N 73°55′08″W / 40.8644°N 73.9189°W / 40.8644; -73.9189DivisionA (IRT)[1]Line  ...

 

Zoltán FábriLahir(1917-10-15)15 Oktober 1917Budapest, Austria-HungariaMeninggal23 Agustus 1994(1994-08-23) (umur 76)Budapest, HungariaPekerjaanSutradaraTahun aktif1951–1983 Zoltán Fábri (15 Oktober 1917 – 23 Agustus 1994) adalah seorang sutradara dan penulis latar Hungaria. Film buatannya The Boys of Paul Street (1969)[1] dan Hungarians (1978)[2] dinominasikan pada Academy Award untuk Film Berbahasa Asing Terbaik. Film 1965 buatannya Twenty Hours berbagi Gra...

 

American politician (1837–1906) Aaron T. Bliss25th Governor of MichiganIn officeJanuary 1, 1901 – January 1, 1905LieutenantOrrin W. RobinsonAlexander MaitlandPreceded byHazen S. PingreeSucceeded byFred M. WarnerMember of the U.S. House of Representativesfrom Michigan's 8th districtIn officeMarch 4, 1889 – March 3, 1891Preceded byTimothy E. TarsneySucceeded byHenry M. YoumansMember of the Michigan Senatefrom the 25th districtIn office1883–1884Preceded ...

خارطة شمال الهند في أواخر عهد فيدا. تشير الديانة الفيدية أو الديانة الفيدية التاريخية (المعروفة أيضًا بالفيدية أو الهندوسية القديمة) إلى الأفكار والممارسات الدينية بين معظم الشعوب الناطقة بالهندوآرية في الهند القديمة بعد عام 1500 قبل الميلاد.[1][2] وُجدت هذه الأفكار �...

 

Ne doit pas être confondu avec Gouberville. Gourbesville L'église Saint-Ermeland. Administration Pays France Région Normandie Département Manche Arrondissement Cherbourg Intercommunalité Communauté de communes de la Baie du Cotentin Statut commune déléguée Maire délégué Mandat Marylise Gervais 2020-2026 Code postal 50480 Code commune 50212 Démographie Population 166 hab. (2019) Densité 20 hab./km2 Géographie Coordonnées 49° 25′ 15″ nord, 1° ...

 

Australian Broadcasting Corporation radio service For the American sitcom, see NewsRadio. For the American radio service, see ABC News Radio. 5PB redirects here. For the video game company, see 5pb. ABC NewsRadioBroadcast areaAustralia (some areas AM/FM) & InternetFrequencyVarious (FM and AM; see Frequencies)DAB+DVB-T Channel 204onlineFoxtel – TV Channel 875 / Radio Channel 43ProgrammingFormatAll-news radioOwnershipOwnerAustralian Broadcasting CorporationHistoryFirst air date15 August 1...

Questa voce o sezione sull'argomento centri abitati del Trentino-Alto Adige non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. PadergnonefrazionePadergnone – Veduta LocalizzazioneStato Italia Regione Trentino-Alto Adige Provincia Trento Comune Vallelaghi TerritorioCoordinate46°03′35″N 10°59′05″E46°03′35″N, 10°59′05″E�...

 

Nama ini menggunakan kebiasaan penamaan Filipina; nama tengah atau nama keluarga pihak ibunya adalah Zimmerman dan marga atau nama keluarga pihak ayahnya adalah Duterte. Paolo Duterte BiografiKelahiran24 Maret 1975 (49 tahun)Kota Davao Member of the House of Representatives of the Philippines (en) 30 Juni 2022 – Masa parlemen: 19th Congress of the Philippines (en) Daerah pemilihan: Davao City's 1st congressional district (en) Member of the House of Representatives of the Philippin...

 

Campionato mondiale di Formula 1 1957Edizione n. 8 del Campionato mondiale di Formula 1 Dati generaliInizio13 gennaio Termine8 settembre Prove8 Titoli in palioPiloti Juan Manuel Fangiosu Maserati 250F Altre edizioniPrecedente - Successiva Edizione in corso Il campionato mondiale di Formula 1 1957 organizzato dalla FIA è stato, nella storia della categoria, l'8° ad assegnare il Campionato Piloti. È iniziato il 13 gennaio ed è terminato l'8 settembre, dopo 8 gare. Il titolo mondiale pil...

Tragedies written by William Shakespeare Sarah Siddons as the Tragic Muse, Joshua Reynolds (1784). Sarah Siddons (1755–1831) was an esteemed performer of Shakespearean tragedy. Shakespearean tragedy is the designation given to most tragedies written by playwright William Shakespeare. Many of his history plays share the qualifiers of a Shakespearean tragedy, but because they are based on real figures throughout the history of England, they were classified as histories in the First Folio. The...

 

1985 essay by Bob Black This article is about the essay by Bob Black. For the concept, see Abolition of work. The Abolition of Work and Other Essays AuthorBob BlackCover artistDonna KossyLanguageEnglishSubjectCritique of workGenreSocial criticismPublished1986PublisherLoompanicsPublication placeUnited StatesISBN0-915179-41-5OCLC15135277 The Abolition of Work is an essay written by Bob Black in 1985. It was part of Black's first book, an anthology of essays entitled The Abolition of Work a...