logo

アップルの新プログラミング言語「Swift」--その目的と意味するところ - (page 2)

Tim Stevens (CNET News) 翻訳校正: 村上雅章 野崎裕子2014年06月17日 07時30分
  • 一覧
  • このエントリーをはてなブックマークに追加

プログラミング言語の種類

 何らかの目的を達成するアプリを作り出すには、それがスマートフォンのような流行の最先端にあるガジェット上で動作するか、ノートPCやデスクトップPCといった少しありきたりなマシン上で動作するかにかかわらず、たくさんの方法がある。最も尖った方法はマシンが直接理解できるバイトコードや、アセンブリ言語といったものを使い、メモリの値を書き換えたり、ディスプレイ上のピクセル情報を変更するなど、考えられ得るあらゆる操作ごとに、プログラマーがマシンに対する命令を手作業で逐一記述していくというものだ。優れた開発者であれば、このようなやり方で素晴らしいアプリを記述できるだろう。しかし、この方法でのアプリ開発には驚くほどの手間がかかり、間違いも作り込まれやすくなるというのは想像に難くないはずだ。

 こういった問題を解決するために高水準言語が生み出された。これは、プログラマーが記述する内容とコンピュータ側の演算操作が1対1で対応付けられているのではなく、プログラマーが特定の命令を記述すると、その命令を達成するための複数の演算操作がコンピュータ側で行われるというものだ。高水準言語にはシンタックス(構文)や形式的な構造が備わっているため、ある意味において本物の自然言語に近いと言える。

 例えば、誰かに冷蔵庫に入っているジュースを取ってきてほしいと頼む場合を考えてみよう。この場合、「ソファーから立って、冷蔵庫に入っているジュースを取ってきてほしい」と頼むだけで、人はどうすればよいのかが分かるはずだ。しかし、低水準言語では「足を両方とも地面につけろ。腕を使ってソファーから立ち上がれ。右足を左足の前に出し、左足を右足の前に出し(以下略)」といった指示を出す必要がある。これでイメージできただろう。ソファーとキッチンの間を往復するなかで必要なすべての動作を個別に、そして正確に記述する必要があるというわけだ。

 Cというプログラミング言語は古典的な高水準言語であり、その流れをくむObjective-Cは昔からAppleが「OS X」と「iOS」向けとして選択したプログラミング言語であった。驚くことにObjective-Cは30年以上前から、そしてC自体も40年以上前から存在している。そういった点からも新たなプログラミング言語が登場する時が到来していると言えるだろう。

 また、プログラミング言語には「スクリプティング言語」と呼ばれるジャンルも存在している。その特徴は筆者の説明では少し分かりにくいかもしれないが、我慢して読み進めてほしい。基本的に、従来の高水準言語は実行の前に1度コンパイルしておくという作業が必要となる。コンパイルはすべての命令(「~に行く」や「~を取る」など)を、コンピュータが理解できる特定の命令群に翻訳しておくという作業だ。

 そのシンタックスは人間にとって可読性のある言語要素を切り出し、コンピュータが読めるかたちにしたようになっており、正しく記述すれば、プログラマーの意図通りにアプリを実行できるようになる。こういったコンパイルという作業は時間がかかる場合も多く、プログラマーの記述したコードが正しいかどうかは、コンパイルが終わるまで明らかにならない。そして、シンタックス上のちょっとしたミスでさえもコンパイルするまで分からないこともしばしばあり、開発速度を低下させる一因となっている。

 一方、スクリプティング言語は実行時に1行ずつ解釈が行われていく。このため、開発しながらでも容易に実行結果を確認でき、コンパイルという作業を待つ必要もない。これによって開発が迅速に、かつ(比較的)容易に進められる。ただ、スクリプティング言語はその能力に限りがあるため、たいていの場合は簡単な作業にのみ用いられている。また問題がより複雑化すると、パフォーマンスに制約が及ぶこともしばしばある。これは多くのケースで受け入れ難い点となる。

 スクリプティング言語でよく利用されているのはPythonであり、AppleがWWDCにおいて比較対象にしていた言語もまさにPythonであった。

提供:Tim Stevens/CNET
Swiftは「Objective-C without the C」(C言語のしがらみがないObjective-C言語)と銘打たれている。
提供:Tim Stevens/CNET

CNET Japanの記事を毎朝メールでまとめ読み(無料)

-PR-企画特集

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]