先生に聞いてみた

京都先端科学大学サイト

京都先端科学大学先生に聞いてみた

Ian PIUMARTA 教授

今回の「先生に聞いてみた」では、イギリス出身でコンピュータサイエンスがご専門の工学部機械電気システム工学科のイアン・ピュマータ先生にお話を伺いました。

プログラミングで人がイメージするすべてを叶えたい

日本語ENGLISH

Q:先生はどんな少年でしたか?

5、6歳の頃から地図や天文学、電子工学に興味を持っていました。父がはんだこてを買ってくれたので、小学生の頃は小さな電子機器を作っていました。私は祖母から科学に関する多くの本を受け継いでおり、それを読むのが好きでした。両親はさらに物理や電気に関する本を買ってくれましたが、私はそれらの仕組みを知るのが好きでした。父は、私の寝室の窓から庭の端まで長い電線を張り巡らせ、それを使ってラジオの電波を拾ったりしました。

プログラミングを始めたのは12歳の頃で、テキサス・インスツルメンツのTi-59というプログラマブル電卓を使っていました。プログラミングが好きだということに気づき、プログラムを書いて自分の意図を機械に伝えるために使う言語に魅了されました。13歳のときにはマシン語(※)を使ったコンピュータのプログラミングを学び、15歳のときには自分で高級言語(※)を作り始めました。
(※)マシン語はコンピュータを直接動かす一番原始的な言語ですが、人間にとっては分かりづらくて扱いが面倒で、相当にスキルがないと扱えないコンピュータ言語です。この逆に、高級言語は人間が使いやすいプログラミング言語で、この言語で記述したプログラムをマシン語に翻訳することで(コンパイル、Compileといいます)、コンピュータを動かすことができます。

Q:現在の研究活動はいつから始めましたか?

マンチェスター大学で、LispとSmalltalkという、特にエレガントで影響力のある2つの言語に出会いました。この2つの言語を通して、私はプログラミングでのシンプルさと汎用性の大事さに気づきました。それ以来、私の使命は、コンピュータをプログラミングする方法に、できるだけ多くの単純性、一般性、柔軟性をもたらすことです。(そのおかげで、Smalltalkの発明者とカリフォルニアで10年間一緒に仕事をしたり、Lispの発明者に直接会ったりすることができました)。このパズルを解決するための大きな要素がメタプログラミングで、これは自分自身や他のプログラムを理解し、修正することができるプログラムを意味します。この15年間、私が発表してきた研究の多くは、複雑なプログラミング言語やプログラミングのためのソフトを構築するための最小限の原理を見つけ出すこと、そしてそのためにメタプログラミングの技術が役立つことに焦点をあててきました。仮想マシン(VM)や柔軟なパーサー(プログラマーが書いた内容を理解しようとするプログラミング言語の実装の一部)も、その研究の中で重要な位置を占めています。

現在の研究では、私のこれまでの成果を、工学分野で特に重要なC言語などの「主流」の汎用言語に適用できるかどうかを調べています。私たちは、Cコンパイラのための柔軟な構文解析システムとメタ言語を構築しています。その目的は、プログラマーが自分の意図をCプログラムで表現するための新しい「最適な」方法を身につけられるようにすることです。これにより、プログラマーがシステムのさまざまなコンポーネントの周りに優れた「ファイアウォール」を構築したり、プログラムの特定の性質を厳しく試験したりすることが可能になり、複雑さを管理して重要なシステムの信頼性を向上させることができると期待しています。

Q:上記の研究の中で、特に力を入れていきたい分野を教えてください。

メタプログラミングは、特に強力なツールです。多くのプログラミング言語では、最初の言語設計者が決定し、言語に組み込んだアイデアにより、表現できる範囲が制限されています。メタプログラミングは、そのような制限から逃れるための手段です。アプリケーションソフトのプログラマーが大規模なソースコードに埋め込む形でメタプログラムを書くと、このメタプログラムは、問題の領域の専門家が使用するようなものであってかつ人間に優しい表現から、自動的に大部分のコードを生成してくれます。洗練されたメタプログラミングにより、プログラマーは非常に大きなアプリケーションプログラムの様々な側面を検査し、分析することができます。また、プログラムで意図を表現するために使用できる表現(シンタックス)と意味(セマンティクス)の範囲を拡張することもできます。

Q:上記の研究において、あなたが強調したい分野を具体的に教えてください。

私の現在の研究は、C言語のプログラマーが他の仕事を中断することなく導入できるようなアドオン機能を目指したものです。このアプローチで、少しでも多くのCプログラマーがツールとして利用できればいいな、と思っています。また、私はコンピュータサイエンスの研究におけるオープンソースシステムに深く関わっており、私たちの成果はすべて、誰もが自分の目的のためにコピーして使用したり、あるいは変更したりできるような、非常に自由なライセンスで公開される予定です。

Q:プログラミングの魅力とは?

私にとってのプログラミングの魅力とは、非常に厳格な制約が課せられ、ユーザーには一定の表現や行動の自由しか与えられていないシステムの中で、問題をエレガントに解決することへの挑戦と喜びです。

そのようなシステムの一例として、私がカリフォルニアに住んでいたとき、飛行機の勉強をしてパイロットの免許を取得したことをお話します。航空システムは非常に大規模でよく組織だった制約システムであり、その中でユーザーは一定の自由と制限を持っています。A地点からB地点まで飛行機を飛ばすには、望ましい最終結果に向かって、システム内の非常に多くの問題を同時に解決する必要があります。実は、私が航空に興味を持ったきっかけは、古本屋で手にした航空管制システムの歴史と運用について書かれた本でした。私は、自分たちを取り巻く複雑なパラレルワールドに魅了され、自分もその一部になりたいと思ったのです。航法システム、無線通信システムと手順、特定の規則や規制がある異なる空域でのルート交渉、異なる気象システムの理解と計画、航空機の機械システムと航空システムの理解と操作など、何百もの制約がある複雑で相互に絡み合ったシステム群が形成されており、航空機をA地点からB地点に移動させるための効果的なソリューションを見つけることは、困難であると同時に非常にやりがいがありました。

私は、プログラムやアルゴリズムをアーキテクチャと考えていますが、もちろんコミュニケーションも含まれます。プログラミングとは、問題のモデルをある状態から、より面白く、より理解しやすく、より効率的な、あるいは初期の疑問に対する解決策を示す別の状態に変換するルールを作ることです。「汎用」のプログラミングシステムであっても、すべての問題をエレガントに解決したり、必要なモデルを効率的かつエレガントな方法で構築・操作したりすることはできません。そのため、プログラミング言語を選択することで、どのような妥協点に対処するかを常に選択しなければなりません。自分の表現の自由度を制限するこれらの妥協点に対処することは、私にとってプログラミングの非常に魅力的な部分です。プログラミングシステムの「底辺」には、マシンとそのマシン語があり、「上辺」には、人間の心が夢見るあらゆる抽象化や表現があります。「上」と「下」の関係、そしてその関係がどのように表現され、プログラムされるのか、これが私にとってコンピュータサイエンスの最も魅力的な部分なのです。

Q:どのような社会貢献をしたいと考えていますか?

私の研究が社会に貢献できることは、おそらく4つあると思います。

1つ目は、具体的で有用な 「アーティファクト 」(副産物)の提供です。そのため、私は誰でも簡単に使えるようなプロトタイプを設計しています。これまでのプログラミング作業に1ステップ追加するだけで、メタプログラミングを使った強力なプログラム変換ができるようなものです。使ってみたいと思う人が誰でもアクセスできるようなツールを作っています。

2つ目の貢献の仕方は、「研究成果はみんなのもの」という考えに基づいています。私が作ったものはすべてオープンで、欲しい人が自由に使えるようになっています。そのため、「製品」そのものだけでなく、最終的な「製品」の設計や開発に使われたすべての部品を手に入れることができます。コンポーネントを見て理解し、すべての仕組みの背後にある哲学を見て理解し、自分の目的のためにシステム全体を修正し、少し違った方法で動作させたり、拡張したり、さらには単純化したりすることができるのです。研究結果だけでなく、自分のシステムや研究に再利用するための研究成果も得ることができるのです。

3つ目の貢献は、言語研究者がプログラミング問題の解決策を記述する新しい方法を実験できるプラットフォームを提供することです。ワールド・ワイド・ウェブ(www)の成功は、出版やコミュニケーションのための新しいアプローチをもたらし、エンドユーザーや研究者のコミュニティがそれらのアプローチを使用し、進化させるようになりました。私たちの研究が大きな成功を収めれば、ユーザーグループや研究コミュニティ、さらには商業団体が、私たちのスタイルであるメタプログラミング・フレームワークに基づいて、異なるプログラミング哲学を具現化するさまざまなツールキットを進化させ、設計し、開発し、リリースするようになるかもしれませんし、プログラマーが使用する新しい強力なツールやパラダイムを提供するようになるかもしれません。

4つ目の貢献は、プログラマーの哲学的な視野を広げることではないかと思います。この40年間、まったく進化していない、非常に古く、非常に厳格なプログラミング言語が、世界の重要なインフラの70%のプログラミングに使われています。エンドユーザー」であるプログラマーにとっての哲学的な貢献は、強力なメタプログラミング技術によってプログラムを整理・管理する新しい方法を示すことでしょう。言語の「管理者」にとっては、プログラミング言語の進化は、言語そのものだけではなく、メタ言語空間でも起こりうることを示すことが、もう一つの哲学的な貢献となるでしょう。例えば、最近、C言語を「近代化」しようとする動きがありますが、これは私が非常に心配している方向に進化し始めています。C言語には何が足りないのか、多くの人が様々な意見を持ち、ベースとなる言語自体に新しい機能を追加しようとしています。複素数への対応などはその一例です。しかし、ベースとなる言語に機能を追加すればするほど、その言語は複雑になり、実装の信頼性も低下し、その言語で作られたシステムの信頼性も低下してしまいます。(C言語に何百もの複雑な機能を追加したC++言語では、このような状況が深刻化しました)。ベースとなるC言語を「下方向」に拡張するのではなく、メタプログラミングによってプログラミングツールをより知的に、より柔軟に、より一般的にすることで「上方向」に拡張すべきだと思います。プログラマーは、自分のプログラムをどのように書くかを選択し、それに影響を与えることができます。なぜなら、機能は必要な形で言語にメタプログラミングされ、適切な場所や状況でのみ使用できるからです。サン=テグジュペリが航空における設計思想について書いた「完璧さが達成されるのは、これ以上加えるものがないときではなく、これ以上取り去るものがないときのようだ」(Terre des Hommes, 1939年より)という言葉に、私は心から共感します。

Q:KUASの学生にアドバイスをお願いします。

学ぶための最良の方法は、何かをすることです。本を読んでも自転車に乗れるようにはなりませんし、本を読んでも料理はできません。私たちは皆、語彙や文法の本を一冊も読まずに、会話や、疲れたとかお腹が空いたとか両親に伝えることを学びました。話せるようになりたければ、間違いがなくなるまでやればいいのです。私たちは、失敗しない方法を学ぶことで、ほとんどのことを最もよく学ぶことができると思います。子供は600の音を出すことができますが、そのうち母国語に関連する音は数十音程度です。それらの音を手当たり次第に試してみて、どの音が(親とのコミュニケーションに)有効なのかを少しずつ学び、どうすれば失敗しないのかを身をもって知ることで、言葉を身につけていくのです。料理は、食べられないものを作らないと覚えられません。自転車の乗り方も、どうすれば自転車から落ちないかを実体験で学ばなければ習得できません。

工学を学ぶ最良の方法は、やはり実践的に、そして実際に体験することだと思います。物を作る。実験してみる。目の前に実用的な問題があったら、自分の手と機械や電気部品を使って解決し、その状況をモチベーションにして、問題解決に必要な理論を追求する。そのような実践的な状況は、基礎となる理論を正しく学び、定着させるために非常に重要です。壊れることを恐れず、作り直すことを恐れない。うまくいかないものを作ることを恐れず、なぜうまくいかないのかを理解し、経験を積み重ねることで、うまくいかないものを避ける方法を少しずつ身につけていけばいいのです。KUASではこれが英語にも当てはまり、多くの学生がエンジニアリングの学習と並行して学んでいます。私たちは工学、数学、物理、プログラミングを英語で教えています。スペルや文法が完全に間違っていても、私は全く気にしません。私が気にしているのは、工学のアイデアを効果的かつ正確に自分たちの間で伝えられるかどうかです。まずはその方法を学ぶことから始め、英語を使ってコミュニケーションをとる経験を積むことで、スペルや文法のミスをしない方法を実践的に徐々に身につけていきましょう。英語でのコミュニケーションを学ぶ前に、完璧な英文を作ろうとするのは、いわば「本末転倒」なのです。

Q:趣味は何ですか?

私は料理が大好きで、日本食も各国の料理も作ります。家では自分で新鮮なハーブを育て、味噌や(副産物としての)たまりを作っています。

また、音楽も大好きで、演奏するのも聴くのも大好きです。大学ではクラシックギターを専攻し、セミプロとしてバンド活動をしていましたし、今でも毎日数分はギターやベースを弾いています。音楽を聴くことは、私がヘッドフォンを(あまりにも多く!)収集するための言い訳となっています。また、アンプやデジタル・アナログ・コンバーターなどのオーディオ・ハードウェアを自分で設計・製作するのも好きで、これがエレクトロニクスへの愛を深めています。

私は様々な複雑なシステムや活動に魅力を感じ、余暇を利用してそれらをマスターしようと楽しんでいます。例えば、私は日本に来る前に、アメリカではパイロットライセンス(曲技飛行や水上飛行機の操縦も可能)を、オーストラリアではボート免許(船の大きさの制限なし)を取得しました。特にパイロットライセンスでは、機械や電気のシステム、さまざまな航法、天候パターンの理解と予測、無線システムや通信手順など、多くのことを学び、実践しました。また、コンピュータをプログラミングすることも好きで、複雑なアルゴリズムを使いこなす楽しさを味わっています。特に幸運なことに、私の研究と教育の両方でプログラミングが大きく関わっているので、より一層楽しむことができます。最近は、コンピュータハードの自作にも興味を持っていて、「フィールド・プログラマブル・ゲート・アレイ(FPGA)」を使って独自のコンピュータの設計・製作を始めました。FPGAとは、一般ユーザー自身が回路構成し、ほぼどんな機能でも実現可能なハードウェアの一種です。

何もせずにのんびりしたいときは、人里離れた小さな温泉旅館で何日か過ごし、お風呂や景色、もてなし、地元の美味しい料理を楽しむのが私のお気に入りです。


Professor Ian PIUMARTA

In this edition of “Tell Us Teacher,” we spoke with Dr. Ian Piumarta, a professor in the Department of Mechanical and Electrical Systems Engineering at the Faculty of Engineering at KUAS. Dr. Piumarta is from the United Kingdom and specializes in computer science.


Making Imagination into Reality through Programming

Q:What kind of a boy were you?

I was interested in maps, astronomy, and electronics from five or six years old. My father bought me a soldering iron and I was building small electronic devices when I was in primary school. I inherited many books from my grandmother on science that I loved to read, and my parents bought me more books about physics and electricity and I loved knowing how all of it worked. My father put up a very long wire running from my bedroom window to the end of our garden that I used to pick up radio signals.

I began learning programming when I was about 12 years old, using a Texas Instruments Ti-59 programmable calculator. I discovered that I loved the process of programming and became fascinated with the languages that we use to write programs and communicate our intentions to the machine. When I was 13 I learned to program computers using machine code, and started to implement my own high-level programming languages when I was 15 years old.

Q:When did you start your current research activity?

At Manchester University I was introduced to two particularly elegant and influential languages called Lisp and Smalltalk. Through them I discovered the power of simplicity and generality in programming. Ever since then my mission has been to bring as much simplicity, generality, and flexibility as possible to the way we program computers. (Because of that mission I was even able to work with the inventor of Smalltalk for ten years in California and to meet the inventor of Lisp in person.) A large piece of the solution to this puzzle has been metaprogramming, which means programs that can understand and modify themselves or other programs. Much of my published work in the past 15 years has concentrated on finding the smallest possible set of principles on which complex programming languages and programming systems can be built, and on which metaprogramming techniques can help with that. Virtual Machines (VMs) and flexible parsers (part of a programming language implementation that tries to understand what the programmer wrote) have also featured prominently in that work.

My current research investigates whether my past results can be applied to ‘mainstream’ general-purpose languages such as the C language which is especially important in engineering. We are building a flexible parsing system and metalanguage for the C compiler, with the aim of letting programmers develop their own new and ‘optimal’ ways of expressing their intentions in their C programs. Among other things we expect this will encourage programmers to build better ‘firewalls’ around different components of their systems, or to rigorously prove certain properties of their programs, helping them to manage complexity and improve the reliability of critical systems.

Q:In your research described above, please specify the areas that you would like to emphasize?

Metaprogramming is a particularly powerful tool. In many programming languages the range of ideas that can be expressed is limited by the decisions that were made, and built into the language, by the original language designer(s). Metaprogramming allows a way out of that prison. An application programmer can write a metaprogram, embedded in their larger application’s program source code, that can automatically generate large parts of their application code from a more human-friendly representation that might be similar to the notation that an expert in the problem domain would use. Sophisticated metaprogramming lets the programmer inspect aspects of very large application programs and analyse them, or even extend the range of representations (syntax) and meanings (semantics) that they can use to express their intentions in their programs.

My current research is designed to be an add-on facility for C programmers that they can introduce into their normal workflow without disrupting any other part of it. I hope this approach will make it available as an optional tool to the widest possible community of C programmers. I am also deeply committed to open source systems in Computer Science research, and all of our results will be made available with a very liberal license that allows anyone to copy and use them, or even modify them, for their own purposes.

Q:What is the attraction of programming?

To me the attraction of programming is the challenge and pleasure of solving a problem elegantly within a system that imposes very rigid constraints and in which the user has only certain freedoms of expression and behaviour.

As an example of another such a system, when I lived in California I studied flying and obtained my pilot’s license. Aviation is a very large, well-organised constraint system in which its users have certain freedoms and limitations. Flying an airplane from point A to point B involves solving very many problems within that system simultaneously in order to make progress towards the desired end result. In fact my interest in actively participating in aviation was first ignited by a book that I picked up in a second-hand book shop about the history and operation of the Air Traffic Control system. I was fascinated by this complex parallel universe that surrounds all of us and yet remains invisible to almost everyone, and I wanted to be part of it. Navigation systems, radio communication systems and procedures, negotiating a route through different airspaces with their particular rules and regulations, understanding and planning for different weather systems, understanding and operating the mechanical and avionics systems of the aircraft, together form a complex interconnected set of systems with hundreds of constraints in which finding an effective solution to moving the airplane from point A to point B is both challenging and incredibly rewarding.

I see programs and algorithms as architectures, which of course subsume communication. Programming is creating the rules that transform a model of a problem from one state to another state that is more interesting, more understandable, more efficient, or which represents a solution to some initial question. Even ‘general-purpose’ programming systems tend not to allow you to solve every problem elegantly, or to build and manipulate the models you want in efficient and elegant ways. You always have to choose which compromises, by choosing a particular programming language, that you want to deal with. Learning to deal with these different compromises, which limit what kind of freedoms you have to express yourself, is a hugely fascinating part of programming for me. At the ‘bottom’ of any programming system you have the machine and its machine code; at the ‘top’ you can have any abstractions and representations that the human mind can dream up. The relationships between the ‘top’ and the ‘bottom’, and how those relationships are expressed and implemented, is maybe the most fascinating part of Computer Science for me.

Q:Contributions to society?

I think there are maybe four ways that my research can contribute to society. First is contributing a concrete, useful artefact and I am therefore designing my prototypes so that they can be used very easily by anybody. They can be inserted into a normal programming workflow, as one additional step that performs powerful transformations on programs using metaprogramming. I’m making a tool that I hope is accessible to anybody who wants to try to use it.

The second way of contributing is based on the idea that the products of research belong to the everyone. Everything I produce is open and freely available to anyone who wants it, so they can take all the components that went into the design and development of the final ‘product’ and not just the ‘product’ itself. They can look at the components, understand them, see and understand the philosophy behind how everything works, and modify the entire system for their own purposes, to work in a slightly different way or to extend it or to even to simplify it. They get not only the results of the research, they get the research work as well to reuse in their own systems or their own research.

Thirdly I contribute by providing a platform on which language researchers can experiment with new ways of describing solutions to programming problems. The success of the World Wide Web led to new approaches to publishing and communicating, with end user and research communities arising to use and evolve those approaches. If our work is extremely successful then maybe we will see user groups, research communities, and even commercial entities arise to evolve, design, develop, and release different toolkits that embody different programming philosophies, built on our style of metaprogramming framework, to provide new, powerful tools and paradigms for programmers to use.

I think the fourth contribution might be to broaden the philosophical horizons of programmers. A very old, very rigid programming language that has not evolved much at all in the last 40 years is still used to program 70% of the world’s most critical infrastructure. For ‘end user’ programmers, a philosophical contribution would be to show them a new way to organise and manage their programs through powerful metatprogramming techniques. For the ‘curators’ of languages, another philosophical contribution might be to demonstrate that evolution of programming languages can happen in the metalanguage space and not exclusively in the languages themselves. For example, a recent desire to ‘modernise’ the C programming language has caused it to begin evolving in a direction that greatly worries me. Many people have many opinions about what is ‘missing’ from the C language and are pushing to add new features to the base language itself. Support for complex numbers is one example. However, the more you add to the base language the more complicated it becomes, the less reliable its implementation becomes, and for both reasons the less reliable will be the systems created in that language. (We saw this situation turn critical with the C++ language, which added hundreds of new and complicated features to the C language.) Instead of expanding the base C language ‘downwards’ I believe we should expand ‘upwards’ by making our programming tools more intelligent, more flexible, and more general through metaprogramming. The programmer can have access to, and influence over, how they choose to write their programs. If we get this right then there is no need at all to add anything to the base language, since features can be meta-programmed into the language in exactly the form needed and in only the specific places and situations where they are appropriate. I agree wholeheartedly with Saint-Exupéry who wrote about design philosophy in aviation saying, “it seems that perfection is attained not when there is nothing more to add but when there is nothing more to take away.” [Terre des Hommes, 1939]

Q:Do you have advice for KUAS students?

The best way to learn is to do something. You cannot learn to ride a bicycle by reading books. You cannot learn to cook by reading books. We all learned to talk and to tell our parents that we were tired or hungry without studying a single book on vocabulary or grammar. If you want to learn to talk, you just do it until you stop making mistakes. I would say we learn most things best by learning how not to fail at them. A child can make 600 sounds of which maybe a few tens are actually relevant to their particular native spoken language. By trying lots of these sounds at random, and gradually learning which ones work (to communicate with parents), the child learns how to speak by figuring out from first-hand experience how not to fail at speaking. You cannot learn to cook without first making some inedible things. You cannot learn to ride a bike except by learning, through practical experience, how not to fall off it.

I think the best way to learn engineering is also to experience it practically and at first-hand. Build things. Experiment with them. When you have a practical problem in front of you, solve it using your own hands along with mechanical and electrical components, and use that situation as motivation to pursue the theory that you need to solve those problems. That kind of practical context is very important in properly learning and retaining the underlying theory. Do not be afraid to break things and have to rebuild them. Do not be afraid to build things that do not work at all; just make sure you figure out why they don’t work and hence gradually, through accumulated experience, learn how to avoid all the things that don’t work. At KUAS this applies to English language too, which many of our students are learning in parallel with learning engineering. We teach engineering, mathematics, physics, and programming in English. I sincerely do not care if your spelling and grammar are completely wrong! All I care about is that we can communicate engineering ideas effectively and precisely between ourselves. Start by learning how to do that and then, as you gain experience using English to communicate, you will gradually learn how not to make spelling and grammatical mistakes through practical experience. Leaning to make perfect English before learning to communicate effectively verbally really is ‘putting the cart before the horse’, as we say.

Q:May ask your hobbies?

I love to cook, both Japanese and international food; at home I grow my own fresh herbs, and make my own miso and (as a by-product) tamari.

I also love music, both playing and listening to it. I studied classical guitar in college and also played semi-professionally in a band at university, and I still play my guitars or bass for a few minutes every day. Listening to music is an excuse for me to collect (far too many!) headphones. I also love to design and build my own audio hardware, such as amplifiers and digital-to-analogue converters, which fuels my love of electronics.

I find many kinds of complex systems or activities to be fascinating and enjoy trying to master them in my spare time. For example, before moving to Japan I studied for and obtained both a pilot’s license (with additional ratings for aerobatic and seaplane flying) in the USA, and a boating license in Australia (with no limitation on the size of vessel). The pilot’s license in particular involved a lot of study and practice of mechanical and electrical systems, different methods of navigation, understanding and predicting weather patterns, radio systems and communication procedures, and so on. I also enjoy programming computers just for the fun of mastering complex algorithms and I am especially fortunate that programming features so largely in both my research and teaching work, making them all the more enjoyable for me. I recently became interested in the implementation of computer hardware too and have started designing and implementing my own computer architectures using ‘Field-Programmable Gate Arrays’ which are a form of end-user configurable hardware that can perform almost any function.

When it is time to do nothing but relax, one of my favorite things to do is spend several days at some small, remote onsen ryokan enjoying the baths, the scenery, the hospitality, and the great local food.

Ian PIUMARTA 教授イアン ピュマータ

工学部 機械電気システム工学科

博士。「ACM」「IEEE」の学会に所属。立命館大学(日本)、Viewpoints Research Institute (アメリカ)、パリ大学(フランス)、フランス国立情報学自動制御研究所(フランス)、マンチェスター大学(イギリス)を経て現職。専門分野は「コンピューターサイエンス」。担当科目は「数値解析プログラミング」「Pythonプログラミング」「C言語プログラミング」など。

TOP