インテンショナルプログラミング

インテンショナルプログラミング: intentional programming)は、プログラミングにおいて、ソースコードインテンション(意図、意向)を可視化することで、その開発者がそのソースコードにどんな内容を記述したのかをわかりやすくするためのプログラミング手法。インテンションとは、プログラマが構想を練る際に頭の中に生じる概念をさす。プログラマの思考と抽象化のレベルをうまく一致させ、ソースコードの閲覧とプログラムの保守を容易にする。

インテンショナルプログラミングはマイクロソフトに長く勤めたチャールズ・シモニーが提唱した考え方である。彼はマイクロソフトリサーチで、この概念を実証する IP と名づけた統合開発環境の開発を指揮した。理由は不明だが、マイクロソフトはインテンショナルプログラミングに関する作業を止めさせたため、IP の開発は2000年代初期に中止された。[1]

インテンショナルプログラミングに関するよい解説は「Generative Programming: Methods, Tools, and Applications」という本の11章にある[2]

開発工程

シモニーの構想によれば、インテンショナルプログラミングのパラダイムを使ったアプリケーションの開発は次のように進められる。プログラマはまず、問題の対象領域(例えば生命保険など)に特化したツールボックスを構築する。次にその領域の専門家がプログラマに協力して、WYSIWYG的手法でアプリケーションがどう動作すべきかを記述する。最後にそのプログラムに関する記述とツールボックスを使って自動化システムが最終的なプログラムを生成する。その後の変更は WYSIWYG レベルでのみ行われ、「ドメイン・ワークベンチ」と呼ばれるシステムを利用する[3]

ソースコードの格納形式と表示形式の分離

インテンショナルプログラミングの鍵となる利点(同時に広く普及しない障害でもある)は、ソースコードが単なるテキストファイルではなく、独自のメタな構造を持っている点であり、XML にも似ている。XML と同様、コードの各部に特別な構文解析は不要であり、それらが集まってプログラムが形成される。これにより、記述やツールの修正が容易になる。

エディタとソースコード構造が密接に関連することで、ソースコードへの一種の関係の正規化がなされる。同一性のコンセプトによって、定義変数名、演算子といったものは常に1つだけ存在するよう格納され、冗長性を排除している。このため、宣言と参照は本質的に区別され、見た目にも明らかになるよう表示される。空白もソースコード内には格納されない。字下げも表示の際に個々のプログラマが設定したとおりに表示される。より進んだ視覚化として、各文を入れ子になった箱のように表示でき、例えばif文論理回路のように編集したり、名前を他の言語で表示したりといったことが可能である。

ある意味で、C++Javaのような一般的な言語に XML Schema 的な標準化を行ったようなもので、この環境のユーザーは Eiffel や他の言語のアイデアを組み合わせて利用できる。ドメイン固有言語などの言語指向プログラミングアスペクト指向プログラミングと同じ文脈で語られることが多い。インテンショナルプログラミングは生成的プログラミングに一種のブレークスルーをもたらすことを意図している。これらの技法により、開発者は言語環境を拡張して領域固有の構成要素を把握でき、その際に新たな言語のためのコンパイラやエディタを一から作る必要がない。

括弧を使用する文法で、1 から 10 までの数を出力するプログラムを書くと、次のようになる。

 for (int i = 1; i <= 10; i++) {
   System.out.println("the number is " + i);
 }

このコードには多くのコンピュータ言語に必ず存在する制御構造であるループが出てくる。この場合それは for という構文で表されている。これをコンパイルし、リンクして実行すると、10回ループを実行し、ループする度に i がインクリメントされ、表示される。

しかし、このコードではプログラマの「意図; intention」、すなわち「1 から 10 までの数を表示する」ということが伝わらない。このような単純な場合では「意図」が明確化されるよう修正することは簡単だが、そうは行かない場合もある。ループが長大なコードを含んでいる場合、意図を理解するのは難しくなり、特に最初のプログラマが分かり易いコーディングを心がけていない場合には問題はいっそう困難となる。従来、コードの「意図」を示す方法はコメントを追加することだけだったが、必要なものではないため省略されることが多く、そのために改造を重ねるうちに本来の意図とはかけ離れたものになっていくことが多い。

インテンショナルプログラミングでは、上記のループをあるレベルで表現し、そこで「1 から 10 までの数を表示する」という意図が明確化される。システムはその「意図」を使ってソースコードを生成する。生成されるコードは上記のコードとよく似たものになるだろう。つまり、インテンショナルプログラミングでは、ソースコードのレベルにはない意味論的レベルを扱い、大規模なプログラムにおける可読性を劇的に向上させる。

多くの言語には何らかの抽象化を行う手法が備わっているが、インテンショナルプログラミングではLISP系言語のように全く新しい機構を追加していくことができる。従って、最初はC言語のような言語から開発を開始しても、それを拡張していって(新たなコンパイラを待つことなく)C++ のような機能を持たせることができる。これは、クラスプロシージャよりも強力な拡張機構が使えることを意味する。

同一性

インテンショナルプログラミングの中核的概念として同一性がある。多くのプログラミング言語ではソースコードは平坦なテキストであり、オブジェクトは名前で定義/参照され、その同一性はコンパイラが推測するしかない。例えば、ある名前が変数としても、プロシージャ名としても、さらにはデータ型名としても使われることもある。大きなプログラムでは、あるシンボルが実際にはどのオブジェクトを指しているのかを把握するのが非常に困難になる。何かの名前を変更したとき、それに対応してどこを修正しなければならないかは、注意深く調査しなければならない。

対照的に、インテンショナルプログラミングでは、全ての定義には名前が付けられるだけでなく、ユニークな識別子とオブジェクトの対応付けがなされる。従って、変数やプロシージャを参照したとき、名前だけでなくオリジナルの実体に付与された識別子ともリンクされる。

このため、ある実体の名前を変更すると、プログラム内の全ての参照が自動的に更新される。また、別の名前空間で同じ名前を使った場合でも、間違った参照を修正するという作業が不要となる。この機能により、プログラムを各種言語バージョンに移植することも簡単になる。英語の名前群と日本語の名前群を必要に応じて切り換えるなどといったことが簡単にできる。

プログラム内の全ての定義されたオブジェクトにユニークな識別子を付与することで、リファクタリングの自動化や、バージョン管理システムへのコードのチェックインの単純化が容易になる。例えば、共同作業むけのバージョン管理システム(CVSなど)では、2人のプログラマの修正でコンフリクトが生じたとき(例えば、1人がある関数名を変更し、もう1人がその関数の中身を修正した場合)、バージョン管理システムはそれを間違って解釈する可能性がある(1人が新たな関数を定義し、もう1人が古い関数を修正した)。インテンショナルプログラミングでは、同一性が維持されるため、このような誤解が生じない。

詳細さのレベル

インテンショナルプログラミングでは詳細さのレベルを何段階か用意し、プログラマが「ズームイン」したり「ズームアウト」したりできる。例えば上の例では、ズームアウトすると次のような表示となる。

 <<print the numbers 1 to 10>>

従って、インテンショナルプログラミングでは自己ドキュメント化が大いに取り入れられており、プログラマはプログラムの高レベルな全体像を容易に把握できる。

関連項目

脚注

  1. ^ シモニーは彼のアイデアを公表することを熱望していたが、状況がそれを許さなかった。彼は「マイクロソフトが .NET を近々世に出すというときに、同じ組織の誰かが、それは間違っている、こっちの方がいいなんて言い出すのは現実的ではなかった」[1] と説明している。(引用は "Part II: Anything You Can Do, I Can Do Meta: Space tourist and billionaire programmer Charles Simonyi designed Microsoft Office. Now he wants to reprogram software."、2007年1月9日、Scott Rosenberg、Technology Review
  2. ^ Generative Programming: Methods, Tools, and Applications」、Krzysztof Czarnecki、Ulrich Eisenecker 共著、アジソンウェスレイ社、アメリカ合衆国マサチューセッツ州レディング、2000年6月
  3. ^ Scott Rosenberg: "Anything You Can Do, I Can Do Meta." Technology Review, 2007年1月8日

外部リンク

Read other articles:

AgordatUna fotografia dell'AgordatDescrizione generale Tipoincrociatore torpediniere (1900-1914)esploratore (1914-1921)cannoniera (1921-1923) ClasseAgordat Proprietà Regia Marina CostruttoriRegio Arsenale, Castellammare di Stabia Impostazione18 febbraio 1897 Varo11 ottobre 1899 Entrata in servizio26 settembre 1900 Radiazione4 gennaio 1923 Destino finaledemolito Caratteristiche generaliDislocamentocarico normale 1340 tpieno carico 1530 t Lunghezza91,6 m Larghezza9,3 m Pescaggio4...

 

Aleix Vidal Informasi pribadiNama lengkap Aleix Vidal ParreuTanggal lahir 22 Agustus 1989 (umur 34)Tempat lahir Valls, SpanyolTinggi 1,76 m (5 ft 9 in)Posisi bermain Gelandang sayapInformasi klubKlub saat ini EspanyolNomor 22Karier junior2007–2008 CF DammKarier senior*Tahun Tim Tampil (Gol)2008–2009 Espanyol B 2 (0)2009 → Panthrakikos (pinjaman) 8 (0)2009–2010 Pobla Mafumet 31 (7)2009–2010 Gimnàstic 2 (0)2010–2011 Mallorca B 35 (6)2011 Almería B 1 (2)2011–...

 

2017 American satirical comedy drama television series Dear White PeopleGenreComedy drama SatireCreated byJustin SimienBased onDear White Peopleby Justin SimienStarring Logan Browning Brandon P. Bell DeRon Horton Antoinette Robertson John Patrick Amedori Ashley Blaine Featherson Marque Richardson Jemar Michael Courtney Sauls Narrated byGiancarlo EspositoComposerKris BowersCountry of originUnited StatesOriginal languageEnglishNo. of seasons4No. of episodes40ProductionExecutive producers Justin...

« Ire législature de la Seconde Restauration » redirige ici. Pour les autres significations, voir Liste des législatures françaises. Seconde RestaurationIre législaturedite Chambre introuvable 7 octobre 1815-5 septembre 1816 11 mois et 29 joursA gauche : Drapeau du royaume de FranceA droite : Armoiries de la FranceInformations généralesType Assemblée bicamérale constituanteChambre basse du parlement (Chambre des députés des départements)Lieu Palais Bourb...

 

Perpetuo Guasco, O.F.M.vescovo della Chiesa cattolica  Incarichi ricoperti Custode di Terra Santa (1838-1841) Vescovo titolare di Fessei (1839-1859) Vicario apostolico d'Egitto (1839-1859) Delegato apostolico in Egitto e Arabia (1839-1859)  Nato2 luglio 1803 a Solero Ordinato presbitero1826 Nominato vescovo7 giugno 1839 da papa Gregorio XVI Consacrato vescovo29 settembre 1839 dall'arcivescovo Francisco Villardel, O.F.M. Deceduto26 agosto 1859 (56 anni) a Il Cairo   Manuale...

 

Pour les articles homonymes, voir Dépendance. Une dépendance territoriale est un territoire qui n'a pas une pleine souveraineté ou indépendance politique comme un État souverain et se trouve politiquement sous un contrôle partiel de l'État auquel il est rattaché. À titre d'exemple, les îles Wallis-et-Futuna ont leurs propres institutions (dont la monarchie), mais dépendent de la France[1]. Cette page est basée en partie sur le bulletin officiel des douanes françaises relatif à ...

Questa voce sull'argomento attori spagnoli è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Francisco Liberto Rabal Cerezales Francisco Liberto Rabal Cerezales, meglio noto come Liberto Rabal (Roma, 30 maggio 1975), è un attore e regista spagnolo. Indice 1 Biografia 2 Filmografia parziale 2.1 Come attore 2.2 Come regista 3 Altri progetti 4 Collegamenti esterni Biografia Rabal è nato a Roma, in Italia, da una famiglia d'artisti spagnola, figlio del re...

 

TimișoaraKotaTimișoara Lambang kebesaranJulukan: Little Vienna (bahasa Rumania: Mica Vienă), City of Flowers (Orașul Florilor), Heart of Banat (Inima Banatului)[1]Kota TimisoaraTimișoaraLocation of Timișoara within RomaniaKoordinat: 45°45′35″N 21°13′48″E / 45.75972°N 21.23000°E / 45.75972; 21.23000Koordinat: 45°45′35″N 21°13′48″E / 45.75972°N 21.23000°E / 45.75972; 21.23000Kota Rumani...

 

此条目序言章节没有充分总结全文内容要点。 (2019年3月21日)请考虑扩充序言,清晰概述条目所有重點。请在条目的讨论页讨论此问题。 哈萨克斯坦總統哈薩克總統旗現任Қасым-Жомарт Кемелұлы Тоқаев卡瑟姆若马尔特·托卡耶夫自2019年3月20日在任任期7年首任努尔苏丹·纳扎尔巴耶夫设立1990年4月24日(哈薩克蘇維埃社會主義共和國總統) 哈萨克斯坦 哈萨克斯坦政府...

ABA 2 Liga 2018-2019 Competizione ABA 2 Liga Sport Pallacanestro Edizione II Organizzatore ULEB Date 27 settembre 2018 - 8 aprile 2019 Partecipanti 12 Risultati Vincitore  Primorska(1º titolo) Secondo  MZT Skopje Statistiche Miglior giocatore Marko Jagodić-Kuridža Cronologia della competizione 2017-2018 2019-2020 Manuale La ABA 2 Liga 2018-2019 è stata la 2ª edizione della ABA 2 Liga, il secondo livello della Lega Adriatica. La vittoria finale è stata ad appannaggio degl...

 

Part of the LGBT rights seriesLegal status ofsame-sex unions Marriage Andorra Argentina Australia Austria Belgium Brazil Canada Chile Colombia Costa Rica Cuba Denmark Ecuador Estonia Finland France Germany Greece Iceland Ireland Liechtenstein* Luxembourg Malta Mexico Nepal Netherlands1 New Zealand2 Norway Portugal Slovenia South Africa Spain Sweden Switzerland Taiwan United Kingdom3 United States4 Uruguay Recognized Israel5 Civil unions andregistered partnerships Bolivia Croatia Cyprus Czech...

 

Electrons that are not associated with a single atom or covalent bond Benzene, with the delocalization of the electrons indicated by the circle In chemistry, delocalized electrons are electrons in a molecule, ion or solid metal that are not associated with a single atom or a covalent bond.[1] The term delocalization is general and can have slightly different meanings in different fields: In organic chemistry, it refers to resonance in conjugated systems and aromatic compounds. In soli...

ماركو فريتز   معلومات شخصية الميلاد 3 أكتوبر 1977 (47 سنة)  مواطنة ألمانيا  الحياة العملية المهنة حكم كرة قدم  اللغات الألمانية  الرياضة كرة القدم  بلد الرياضة ألمانيا  تعديل مصدري - تعديل   ماركو فريتز (بالألمانية: Marco Fritz)‏ هو حكم كرة قدم ألماني، ولد في 3 أكتو...

 

نيو هيفن     الإحداثيات 37°54′26″N 88°07′37″W / 37.9072°N 88.1269°W / 37.9072; -88.1269   [1] تقسيم إداري  البلد الولايات المتحدة[2]  التقسيم الأعلى مقاطعة غالاتين  خصائص جغرافية  المساحة 1.26 ميل مربع  عدد السكان  عدد السكان 399 (1 أبريل 2020)[3]  الكثافة ...

 

Principato di Piombino Principato di Piombino - LocalizzazioneIn verde, la Signoria di Piombino attorno all'anno 1500 Dati amministrativiNome ufficialePrincipatus Plumbinensis Lingue ufficialiItaliano, latino Lingue parlateDialetto piombinese CapitalePiombino Dipendente da Sacro Romano Impero • Vicereame di Napoli (e di conseguenza Spagna nel '600 e Austria e poi Due Sicilie nel '700) PoliticaForma di governoMonarchia feudale(principato) SignoriPrincipi di Piombino Organi deliberativiConsig...

Internet Group Management Protocol (IGMP) とは、IPネットワーク上でマルチキャスト(特定の一対多または多対多通信)を行うために、マルチキャストに参加するホストのグループを設定し、ネットワークに通知するための通信プロトコルである。マルチキャストは、動画や音楽のストリーミングなど、同時に多数のホストへ同一のデータを送信するときに通信を効率化する技術で...

 

2013 single by Lorde For the song by Paul Rey, see Royals (Paul Rey song). RoyalsSingle by Lordefrom the EP The Love Club EP and the album Pure Heroine B-side400 LuxBravadoTennis CourtReleased3 June 2013 (2013-06-03)RecordedJuly 2012StudioGolden Age (Auckland)Genre Art pop electropop alternative pop Length3:10LabelUniversalSongwriter(s) Ella Yelich-O'Connor Joel Little Producer(s)Joel LittleLorde singles chronology Royals (2013) Tennis Court (2013) Music videoRoyals on YouTube ...

 

Russian politician In this name that follows Eastern Slavic naming customs, the patronymic is Victorovna and the family name is Vasilkova. Maria VasilkovaMPМария ВасильковаMember of the State Duma (Party List Seat)IncumbentAssumed office 12 October 2021 Personal detailsBorn (1978-02-13) 13 February 1978 (age 46)Megion, Khanty-Mansi Autonomous Okrug, Tyumen Oblast, RSFSR, USSRPolitical partyUnited RussiaEducationIrkutsk State Economic AcademySkolkovo Moscow School o...

Questa voce sugli argomenti laghi e Etiopia è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Lago CiamòStato Etiopia RegioneRegione delle Nazioni, Nazionalità e Popoli del Sud Coordinate5°51′00″N 37°49′59.99″E5°51′00″N, 37°49′59.99″E Altitudine1.110 m s.l.m. DimensioniSuperficie317 km² Lunghezza32 km Larghezza13 km Profondità massima14 m Idrogra...

 

Head of the Catholic Church from 1154 to 1159 PopeAdrian IVBishop of RomeAdrian IV depicted in the Chronicle of Casauria, second half of the 12th centuryChurchCatholic ChurchPapacy began4 December 1154Papacy ended1 September 1159PredecessorAnastasius IVSuccessorAlexander IIIOrdersCreated cardinal1146by Eugene IIIPersonal detailsBornNicholas Breakspearc. 1100Abbots Langley, Hertfordshire, EnglandDied1 September 1159(1159-09-01) (aged 58–59)Anagni, Papal States, Holy Roman EmpireOt...