| dbpprop:abstract
|
- In computer programming, intentional programming is a collection of concepts which enable software source code to reflect the precise information, called intention, which programmers had in mind when conceiving their work. By closely matching the level of abstraction at which the programmer was thinking, browsing and maintaining computer programs becomes easier. The concept was introduced by long-time Microsoft employee Charles Simonyi, who led a team in Microsoft Research which developed an Integrated Development Environment called IP that demonstrates these concepts. For reasons that are unclear, Microsoft stopped working on intentional programming and ended development of IP in the early 2000s. An overview of intentional programming is given in Chapter 11 of the book Generative Programming: Methods, Tools, and Applications.
- Intentionale Programmierung ist ein Programmierparadigma. Sie bezeichnet den Ansatz, vom herkömmlichen Quelltext als alleinige Spezifikation eines Programms abzurücken, um die Intentionen des Programmierers durch eine Vielfalt von jeweils geeigneten Spezifikationsmöglichkeiten in besserer Weise auszudrücken. Die Intentionale Programmierung befindet sich noch in Entwicklung, basierend auf Ideen von Charles Simonyi. Insbesondere auch die traditionellen, in der Regel sehr ausgereiften Notationen diverser Problemdomänen (z. B. mathematische Formeln, Notenschrift, chemische Strukturformeln, Schaltungssymbole etc. ) sollen verwendbar sein. Die Unzulänglichkeit, einen komplizierten Sachverhalt lediglich mit einer einzigen Darstellung zu erfassen, ist nichts Ungewöhnliches. Z. B. in der Differentialgeometrie versucht man Mannigfaltigkeiten zu beschreiben. Eine Kugel kann nicht in allen Aspekten gut auf eine einzige zweidimensionale Karte projiziert werden. Man muss mehrere Karten anfertigen, die jeweils nur Teilaspekte erfassen. Es gibt derzeit keine Implementation einer intentionalen Programmiersprache.
- En programmation informatique, la programmation par intention (PPI, en anglais intentional programming, IP) est un paradigme de programmation qui permet au code source du logiciel de refléter précisément l'intention du développeur lors de la conception. En respectant le niveau d'abstraction de la pensée du programmeur, la revue et la maintenance des programmes informatiques devient plus facile étant donné que le lecteur du code source n'a plus à comprendre l'implantation qu'à choisi le programmeur pour savoir ce que le programme est censé faire. Le concept a été introduit par Charles Simonyi alors qu'il dirigeait une équipe chez Microsoft Research. Son groupe a développé un environnement de développement intégré nommé PPI qui démontre ce concept. Pour des raisons encore obscures, Microsoft a interrompu le développement sur PPI au début des années 2000. Une présentation de la programmation par intention est disponible dans le chapitre 11 du livre
- インテンショナルプログラミング({{lang-en-short|Intentional programming)は、プログラミングにおいて、ソースコードに intention(意図、意向)と呼ばれる正確な情報を反映させるコンセプトの集合である。インテンション (intention) とは、プログラマが構想を練る際に頭の中に生じる概念をさす。プログラマの思考と抽象化のレベルをうまく一致させ、ソースコードの閲覧とプログラムの保守を容易にする。 マイクロソフトに長く勤めたチャールズ・シモニーが提唱したコンセプトである。彼はMicrosoft Researchで、この概念を実証する IP と名づけた統合開発環境の開発を指揮した。理由は不明だが、マイクロソフトはインテンショナルプログラミングに関する作業を止めさせたため、IP の開発は2000年代初期に中止された。 インテンショナルプログラミングに関するよい解説は "Generative Programming: Methods, Tools, and Applications" という本の11章にある。
- Programowanie intencyjne lub intencjonalne PI (Intentional programming IP) to pojęcie nadane koncepcji programowania komputerowego, stanowiącej próbę ułatwienia pisania i pielęgnowania programów komputerowych. Nazwa ta jest związana ze sposobem, w jaki systemy usiłują pojąć dodatkowe znaczenia – zamysły (intencje programistów) – niezależnie od tego jak kody źródłowe prezentują te zamysły. Robiąc tak system pozwala programiście znacznie łatwiej śledzić rozwlekły kod. Termin wprowadził Charles (Karol) Simonyi, wieloletni pracownik firmy Microsoft i kierownik zespołu badawczo-rozwojowego pracującego nad systemem znanym jako IP. W “normalnym” programowaniu operujemy pewną ilością zbiorów tekstowych zwanych kodami źródłowymi. Kody źródłowe są przetwarzane przez programy takie jak kompilatory (lub interpretery), co można obrazowo opisać jako łączenie i przekształcenie wielu programów źródłowych do pewnej specyficznej postaci, która w wyniku innych koniecznych zmian tworzy w końcu wykonywalny program komputerowy. W sensie ogólnym kod (program) źródłowy zawiera w sobie zamiary (intencje) programisty, ale na bardzo niskim poziomie, głęboko ukryte. Przypuśćmy na przykład, że zamierzamy napisać program wypisujący liczby od 1 do 10. Przy użyciu syntaktyki języka Java program taki można napisać jak poniżej: for (int i = 1; i <= 10; ++i) { System. out. println("liczba " + i); Powyższy kod zawiera jedną z najbardziej rozpowszechnionych w większości języków programowania konstrukcję – pętlę zamkniętą – reprezentowana przez instrukcje for. Kod ten, po skompilowaniu, otrzymaniu następnie programu wykonywalnego i jego uruchomieniu wykona 10 pętli drukując aktualną wartość zmiennej i zwiększając wartość tej zmiennej o 1 za każdym razem. Tym niemniej kod ten nie w pełni obrazuje zamysł programisty – było nim proste „wydrukuj liczby od 1 do 10”. Jeśli ktoś będzie miał się zajmował tym kodem, to prawdopodobnie odtworzy tę prostą intencję, ale nie zawsze jest to tak oczywiste. W systemach PI powyższa pętla lub podobna do niej będzie skutkiem translacji powyższej intencji „wydrukuj liczby od 1 do 10”. Kluczową różnicę stanowi to, że tak wygenerowany kod będzie pozbawiony poziomu semantycznego, gdyż jest on domeną zarządzaną przez system PI, co pozwala, zwłaszcza dla wielkich (długich) programów drastycznie zwiększyć ich czytelność. Kluczem do zrozumienia PI (IP) jest koncepcja tożsamości (deklaracji lub typu) zmiennych. W powyższym kodzie mamy symbol "i", który w tym przypadku jest licznikiem pętli. W wielkich programach symbol "i" może być użyty wiele razy, i do tego do różnych celów. Rozważmy na przykład taki kod: String i = "Jestem Polką/Polakiem"; for (int i = 1; i <= 10; ++i) { System. out. println(i); System. out. println(i); Jest on całkowicie poprawny, nawet jeśli wygląda dość ułomnie. Znaczenie symbolu "i" zmienia się – na górze i na dole wskazuje na znakowy (string) obiekt zawierający wartość "Jestem Polką/Polakiem", a w pętli oznacza jak poprzednio wartość licznika typu integer. Tożsamość „i” zmienia się zgodnie z ogólną cechą większości języków programowania – definiowania tożsamości na podstawie tego, gdzie jest zawarty symbol, czyli jego zasięgu, jak też innych różnych reguł. W kodzie ciągnącym się przez wiele stron trudnym staje się określenia, który symbol odnosi się do jakiego obiektu. Jeśli podejmie się decyzje o zmianie nazwy jednego z nich, to należy starannie sprawdzić cały kod, aby stwierdzić gdzie jest on używany. W systemie PI (IP) oba powyższe symbole “i” będą reprezentowane przez oddzielne, prywatne identyfikatory. System PI będzie śledził każdy z nich, i potrafi w każdej chwili wskazać jaki obiekt odnosi się do jakiej definicji. Jeśli zostanie podjęta decyzja o przenazwaniu, np. dość nieszczęśliwej zmiennej znakowej, to system PI „wiedząc” o wszystkich użyciach tego identyfikatora potrafi zmienić go we wszystkich tych miejscach na przykład na „mojeZnaki” bez problemów. Systemy PI oferują ponadto kilka poziomów szczegółowości, pozwalając programiście niejako włączać lub wyłączać powiększanie (zoom) w postrzeganiu kodu. W powyższym przykładzie programista może wejść na poziom, który „oznajmi” coś w rodzaju: Tak więc systemy PI w wielkim stopniu samodokumentują się, co pozwala programiście postrzegać program w postaci obrazu na wysokim poziomie uogólnienia. Faktycznie systemy IP zawierają bazę symboli i ich definicji, oraz operacji (manipulacji) nad nimi. System generuje z takiej bazy kod źródłowy, który jest następnie kompilowany jak zwykle, itd. Możliwe jest wygenerowanie dowolnego rodzaju źródła wymaganego przez użytkownika o ile jest dostępny odpowiedni translator. Pod tym względem systemy PI stanowią rodzaj generatorów kodu. Microsoft nigdy nie utworzył takiego systemu, ale Simonyi po opuszczeniu Microsoftu założył własną firmę i kontynuuje prace rozwojowe.
|
| rdfs:comment
|
- In computer programming, intentional programming is a collection of concepts which enable software source code to reflect the precise information, called intention, which programmers had in mind when conceiving their work. By closely matching the level of abstraction at which the programmer was thinking, browsing and maintaining computer programs becomes easier.
- Intentionale Programmierung ist ein Programmierparadigma. Sie bezeichnet den Ansatz, vom herkömmlichen Quelltext als alleinige Spezifikation eines Programms abzurücken, um die Intentionen des Programmierers durch eine Vielfalt von jeweils geeigneten Spezifikationsmöglichkeiten in besserer Weise auszudrücken. Die Intentionale Programmierung befindet sich noch in Entwicklung, basierend auf Ideen von Charles Simonyi.
- En programmation informatique, la programmation par intention (PPI, en anglais intentional programming, IP) est un paradigme de programmation qui permet au code source du logiciel de refléter précisément l'intention du développeur lors de la conception.
- Programowanie intencyjne lub intencjonalne PI (Intentional programming IP) to pojęcie nadane koncepcji programowania komputerowego, stanowiącej próbę ułatwienia pisania i pielęgnowania programów komputerowych. Nazwa ta jest związana ze sposobem, w jaki systemy usiłują pojąć dodatkowe znaczenia – zamysły (intencje programistów) – niezależnie od tego jak kody źródłowe prezentują te zamysły.
|