Difference between revisions of "Integrated development environment/ja"

From IDE Collections
Jump to navigationJump to search
(Created page with "== 参考文献 == {{reflist}}")
Line 179: Line 179:
 
# '''Several technological shifts''' have made IDEs more extensible, including extension frameworks, open-source distribution of IDEs, and instrumentation features of programming languages, such as application programming interface for reflection. They allowed the programmer to concentrate on the improvements and leave the rest as provided by the existing IDEs.
 
# '''Several technological shifts''' have made IDEs more extensible, including extension frameworks, open-source distribution of IDEs, and instrumentation features of programming languages, such as application programming interface for reflection. They allowed the programmer to concentrate on the improvements and leave the rest as provided by the existing IDEs.
  
== References ==
+
== 参考文献 ==
 
{{reflist}}
 
{{reflist}}

Revision as of 01:39, 9 August 2014

Other languages:
English • ‎日本語

統合開発環境(IDE)は、プログラマがプログラムを書いたり、実行したり、デバッグするためのインタラクティブなユーザインタフェースを備えた環境を指します。IDEには、プログラミングに利用するプログラミング言語、コンパイラ、デバッガ、ツールキットやその他のツールが含まれます。一般的なツールがプログラミング活動の一部だけを支援するものであるのに対し、環境は全体を支援するものです。

このページはIDEが進化してきた歴史を時系列に説明しています。IDEの研究に関する国際会議の一覧Category:Academic conferencesを見てください。個別具体的な説明があるIDEの一覧Category:Integrated development environmentsを見てください。

統合開発環境の歴史

1950年代: 手作業によるプログラミングの時代

コンピュータのプログラミング作業は、最初の頃はインタラクティブと言い難いものでした。プログラマはパンチカードを使って機械語を記述し、コンピュータに命令を送っていました。カードにパンチする物理作業には、計算機による支援が入る余地がありませんでした。

1960年代: IDEの登場

世界最初のIDEと言われているのは、Character-based User Interface (CUI)とハイレベルな文字ベースのプログラミング言語が登場したあと、1964年に開発されたDartmouth BASICです。このIDEはテキストエディタを備え、コンパイラを内蔵しており、プログラムをIDEの中でコンパイルして実行できました。当時コンピュータはまだ個人のものではなく、今のスーパーコンピュータがそうであるように、たくさんの人が共有して利用するものでした。Dartmouth BASICは、そのような目的で作られたDartmouth Time Sharing System (DTSS)で動作する開発環境であり、利用者は全員が専門知識を備えたプログラマでした。

1970年代: プロのための、文字ベースのIDE

近代的なIDEには当然備わっているべきと考えられるインタラクティブな機能の多くは1970年代に開発されました。その歴史はInteractive Programming Environments<ref> David R. Barstow, Howard E. Shrobe, Erik Sandewall,

Stephen W. Smoliar. Interactive programming environments

Vol. 9, ACM, New York, NY, USA, July 1984. [URL] [BibTeX]

</ref>という本によくまとまっています。例えば、デバッガや解析ツール、構造化エディタなどがIDEに組み込まれました。よりインタラクティブな開発環境は、生産性を向上させるために非常に重要な要素と考えられており、研究開発が積極的に行われました。例えば、Interlispというデバッガと解析ツールを備えたIDEは1967年から1970年代を通してXerox PARCで継続的に開発されました。また、Cornell Program SynthesizerMENTORは、それぞれPL/IとPascalというプログラミング言語の構造化エディタを含むIDEで、同時期に開発されました。

1980年代: エンドユーザの登場

1980年代は、プログラミングにおけるヒューマンファクターがにわかに注目を集めた時代です。これは、IBMがパーソナルコンピュータを1981年に発売したのを皮切りに、プログラミングの初学者や、プログラミングの知識を持たないエンドユーザの数が劇的に増えたことが要因と考えられます。ヒューマンファクターに興味を持った研究者はエンドユーザプログラミングやGraphical User Interface (GUI)の研究に注力し、プログラミングの前提知識が不要でも使えるコンピュータの実現を目指しました。Human-Computer Interaction分野の主要な国際会議はこの時代に生まれました。なお、プログラミングに関する主要な国際会議も同様に1980年代生まれです。ソフトウェア工学やプログラミング言語のデザインに関する研究も、同時期に目覚ましい進展があったわけです。ただし、文字ベースの開発環境を改善する研究は、プログラミング言語の設計に関する研究と比べると目立ちません。プログラミング言語の設計指針はホーアの論文<ref>

C. A. R. Hoare. Hints on Programming Language Design

Programming Languages, pp.31-40, 1983. [URL] [BibTeX]

</ref>のように多数見られますが、IDEの研究はわずかです<ref name="pane1996usability" /><ref name="ko2004six" />。

エンドユーザは通常、プログラムを与えられた状態のまま使用します。したがって、エンドユーザは自分の意図をプログラムのコマンド列に置き換えて考え、しばしばコマンドを何回も繰り返す必要に迫られます。そのような面倒を避けるために、プログラムを作ったり、編集したり、拡張したいという欲求が生まれます。エンドユーザプログラミングは、そのような欲求を持ったエンドユーザやプログラミング初心者が直面するさまざまな課題に応える研究分野です。その方針は、大まかに2つに分けられます。ひとつはプログラミングを簡単にすることで、もうひとつは、いわゆるプログラミングそのものをなくしてしまうことです。例えば、構造化エディタやVisual Programmingに関する研究はひとつめ、Programming by Exampleに関する研究はふたつめの方針に沿った研究といえます。それぞれに関する詳細な説明はCategory:Visual programmingCategory:Programming by exampleに載せてあります。これらの用語の使い分けについては、Myerらのサーベイ論文<ref> Brad A. Myers. Visual programming, programming by example, and program visualization:

a taxonomy

Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, pp.59-66, New York, NY, USA, 1986. [URL] [BibTeX]

</ref>を読むと詳しく書いてあります。

Visual Programming言語はたいてい何らかのグラフィカルな開発環境を伴うものですが、文字ベースのプログラミング言語用の統合開発環境はBASIC以来似たような見た目のままです。そのような開発環境は、ファイルマネージャ、文字ベースのソースコードエディタ、そして文字ベースのデバッガなどから構成されます(例: Eclipse)。グラフィカルな表現はあまり使われません。既存の文字ベースの統合開発環境が持たない機能を提供するために、さまざまなプログラマ向けのツールが開発されてきました。とくに長い歴史を持つツール研究の例として、ユーザインタフェース用ツールキット

<ref>

Brad A. Myers, Scott E. Hudson, Randy Pausch. Past, present, and future of user interface software tools

ACM Transactions on Computer-Human Interaction (TOCHI), 7(1):3-28, New York, NY, USA, March 2000. [URL] [BibTeX]

</ref>が挙げられます。しかし、統合開発環境そのものは劇的な変化を遂げることはなかったのです。文字ベースの統合開発環境は、職業プログラマの大部分にとってプログラム開発の主要な手段であり続けました。

1990年代: アプリケーション開発の複雑さが増加した時代

Throughout the 1990s, programming became more complex and involved. For instance, it is not straightforward to specify a GUI using solely a text-based approach. Visual Basic 1.0 was released in 1991 and addressed this issue by integrating a graphical GUI builder into a text-based IDE. It allowed the programmer to seamlessly move between the interface design and implementing functionality. In 1995, Lieberman applied the famous concept of Norman's gulf of execution and evaluation<ref>

Donald A. Norman, Stephen W. Draper. User Centered System Design; New Perspectives on Human-Computer Interaction

L. Erlbaum Associates Inc., Hillsdale, NJ, USA, 1986. [URL] [BibTeX]

</ref> to programming. He pointed out difficulties in understanding the dynamic behavior of a program from the static text-based source code<ref name="lieberman1995bridge">

Henry Lieberman, Christopher Fry. Bridging the gulf between code and behavior in programming

Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, pp.480-486, New York, NY, USA, 1995. [URL] [BibTeX]

</ref>. To address this issue, he proposed a visual debugger named ZStep, integrated with a text-based IDE which shows the programmer the relationship between an expression in the source code and its output at runtime.

2000s: towards natural programming

In the 2000s, many enhancements to text-based IDEs appeared. One of the most prominent projects in the enhancement of text-based IDEs is the Natural Programming project<ref>

Brad A. Myers, John F. Pane, Andy Ko. Natural programming languages and environments

Communications of the ACM, 47(9):47-52, New York, NY, USA, September 2004. [URL] [BibTeX]

</ref>, which was initiated by Myers and colleagues in 1998. Their previous work highlighted usability issues for novice programmers in programming language design<ref name="pane1996usability">

John F. Pane, Brad A. Myers. Usability issues in the design of novice programming systems

1996. [BibTeX]

</ref>, and the Natural Programming project places more emphasis on the IDE and accompanying libraries. Their work takes a human-centered approach: they first investigate the programmer's behavior and then address the difficulties. For instance, they studied six learning barriers in end-user programming systems<ref name="ko2004six">

Andrew J. Ko, Brad A. Myers, Htet Htet Aung. Six Learning Barriers in End-User Programming Systems

Proceedings of the 2004 IEEE Symposium on Visual Languages and Human-Centric Computing, pp.199-206, 2004. [BibTeX]

</ref> and discussed the gulf of execution and evaluation, which develops some of Lieberman's ideas<ref name="lieberman1995bridge" />. Various technical contributions were made following the study.

Three factors made the proliferation of such ideas feasible.

  1. The Internet has enabled new ways of collaboration between programmers, and given rise to the remarkable growth in open-source technologies. This work includes collecting, analyzing and utilizing anonymized usage data of IDEs to identify areas for improvements and provide targeted support for cooperative work through the Internet.
  2. The variety of programs has continued to evolve, and has done so at an ever-increasing rate, with growing emphasis on physical interaction, including interactive camera applications and robotics applications. The development of such programs requires tool support, and enhancements to IDEs.
  3. Several technological shifts have made IDEs more extensible, including extension frameworks, open-source distribution of IDEs, and instrumentation features of programming languages, such as application programming interface for reflection. They allowed the programmer to concentrate on the improvements and leave the rest as provided by the existing IDEs.

参考文献

<references group=""></references>