{"id":2456,"date":"2018-08-16T20:15:04","date_gmt":"2018-08-16T18:15:04","guid":{"rendered":"https:\/\/launix.de\/launix\/?p=2456"},"modified":"2023-07-11T08:23:40","modified_gmt":"2023-07-11T06:23:40","slug":"fop-ein-low-code-tool-das-php-generiert","status":"publish","type":"post","link":"https:\/\/launix.de\/launix\/en\/fop-ein-low-code-tool-das-php-generiert\/","title":{"rendered":"FOP &#8211; ein Low Code Tool, das PHP generiert"},"content":{"rendered":"<p>FOP &#8211; Feature Oriented Programming &#8211; der Name ist Programm.<!--more--><\/p>\n<p>Traditionelle Programmiersprachen basieren auf imperativer Befehls-Abarbeitung. S\u00e4mtliche Abstraktion und Modularisierung bezieht sich darauf, Befehlsketten miteinander zu verkn\u00fcpfen.<\/p>\n<p>Nun sind aber die Probleme der Kunden nur schlecht in Befehlsketten von Funktionsaufrufen \u00fcbersetzbar. Jeder Kunde denkt in seiner eigenen Problemwelt, die man auch <strong>Dom\u00e4ne<\/strong> nennt. Um genau diesen dom\u00e4nenspezifischen Probleme passgenau l\u00f6sen zu k\u00f6nnen, haben sich <strong>dom\u00e4nenspezifische Sprachen<\/strong> etabliert.<\/p>\n<p>Diese Sprachen k\u00f6nnen Probleme direkt ausdr\u00fccken. Ein paar Beispiele:<\/p>\n<ul>\n<li>Eine Datenbank-DSL kann Daten, ihre Beziehungen und Daten-Interaktionen beschreiben<\/li>\n<li>Eine medizinische DSL kann Wirkstoffe und deren Interaktion beschreiben<\/li>\n<li>Eine Industrie-4.0-DSL kann Maschinen, F\u00f6rderb\u00e4nder und Greifarme, sowie deren Aufgaben und Zusammenarbeit beschreiben<\/li>\n<li>Eine Workflow-DSL kann Abl\u00e4ufe im Unternehmen darstellen<\/li>\n<\/ul>\n<p>Am Ende m\u00fcssen die DSLs wieder in Code bzw. berechnete Ergebnisse umgewandelt werden. Dabei hilft der FOP-Compiler. Dem FOP-Compiler kann man beliebig neue DSLs beibringen, die dieser dann in Code \u00fcbersetzen kann. Damit werden ganze Klassen von Problemen einfacher l\u00f6sbar als auf dem &#8220;h\u00e4ndischen&#8221; Weg.<\/p>\n<p>Das gr\u00f6\u00dfte Beispiel bietet unser PHP+MySQL-Generator von FOP: Mit ihm kann man ERP- und CRM-Konstellationen zusammenklicken, die anschlie\u00dfend zu Software werden.<\/p>","protected":false},"excerpt":{"rendered":"<p>FOP &#8211; Feature Oriented Programming &#8211; der Name ist Programm.<\/p>","protected":false},"author":2,"featured_media":1829,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","footnotes":""},"categories":[128],"tags":[],"class_list":["post-2456","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","single-item"],"featured_image_urls_v2":{"full":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",1920,1280,false],"thumbnail":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920-150x150.jpg",150,150,true],"medium":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920-300x200.jpg",300,200,true],"medium_large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920-768x512.jpg",751,501,true],"large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920-1024x683.jpg",751,501,true],"1536x1536":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",1536,1024,false],"2048x2048":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",1920,1280,false],"trp-custom-language-flag":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",18,12,false],"xs-thumb":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",64,43,false],"appku-shop-single":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",620,413,false]},"post_excerpt_stackable_v2":"<p>FOP &#8211; Feature Oriented Programming &#8211; der Name ist Programm. Traditionelle Programmiersprachen basieren auf imperativer Befehls-Abarbeitung. S\u00e4mtliche Abstraktion und Modularisierung bezieht sich darauf, Befehlsketten miteinander zu verkn\u00fcpfen. Nun sind aber die Probleme der Kunden nur schlecht in Befehlsketten von Funktionsaufrufen \u00fcbersetzbar. Jeder Kunde denkt in seiner eigenen Problemwelt, die man auch Dom\u00e4ne nennt. Um genau diesen dom\u00e4nenspezifischen Probleme passgenau l\u00f6sen zu k\u00f6nnen, haben sich dom\u00e4nenspezifische Sprachen etabliert. Diese Sprachen k\u00f6nnen Probleme direkt ausdr\u00fccken. Ein paar Beispiele: Eine Datenbank-DSL kann Daten, ihre Beziehungen und Daten-Interaktionen beschreiben Eine medizinische DSL kann Wirkstoffe und deren Interaktion beschreiben Eine Industrie-4.0-DSL kann Maschinen, F\u00f6rderb\u00e4nder und&hellip;<\/p>\n","category_list_v2":"<a href=\"https:\/\/launix.de\/launix\/en\/category\/programming\/\" rel=\"category tag\">Programming<\/a>","author_info_v2":{"name":"Carl-Philip H\u00e4nsch","url":"https:\/\/launix.de\/launix\/en\/author\/carli\/"},"comments_num_v2":"0 comments","uagb_featured_image_src":{"full":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",1920,1280,false],"thumbnail":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920-150x150.jpg",150,150,true],"medium":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920-300x200.jpg",300,200,true],"medium_large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920-768x512.jpg",751,501,true],"large":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920-1024x683.jpg",751,501,true],"1536x1536":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",1536,1024,false],"2048x2048":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",1920,1280,false],"trp-custom-language-flag":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",18,12,false],"xs-thumb":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",64,43,false],"appku-shop-single":["https:\/\/launix.de\/launix\/wp-content\/uploads\/2017\/02\/student-849825_1920.jpg",620,413,false]},"uagb_author_info":{"display_name":"Carl-Philip H\u00e4nsch","author_link":"https:\/\/launix.de\/launix\/en\/author\/carli\/"},"uagb_comment_info":0,"uagb_excerpt":"FOP &#8211; Feature Oriented Programming &#8211; der Name ist Programm.","_links":{"self":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/2456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/comments?post=2456"}],"version-history":[{"count":3,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/2456\/revisions"}],"predecessor-version":[{"id":2461,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/posts\/2456\/revisions\/2461"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/media\/1829"}],"wp:attachment":[{"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/media?parent=2456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/categories?post=2456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/launix.de\/launix\/en\/wp-json\/wp\/v2\/tags?post=2456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}