第4章アルゴリズムの言語による実現:低水準プログラミング言語

credit: modification of “Tilly Lockey at the SingularityU The Netherlands Summit 2016” by Sebastiaan ter Burg/Flicker, CC BY 2.0 · CC BY 2.0 · Source出典
Figure 4.1 Low-level programming languages support little or no abstraction; they allow programmers to write software in languages that are closer to English and are suitable for system software that powers mobile devices with limited energy and computing resources such as prosthetics. (credit: modification of “Tilly Lockey at the SingularityU The Netherlands Summit 2016” by Sebastiaan ter Burg/Flicker, CC BY 2.0)
図4.1 低水準プログラミング言語は、抽象化をほとんど、またはまったく提供しない。英語により近い言語でソフトウェアを書けるようにし、義肢など、エネルギーや計算資源が限られた携帯型装置を動かすシステムソフトウェアに適している。(クレジット:Sebastiaan ter Burg/Flickerによる「Tilly Lockey at the SingularityU The Netherlands Summit 2016」を改変、CC BY 2.0)
Introductionはじめに
The machines we call “computers,” including modern desktop computers, laptops, and web servers, are remarkably fast and capacious. However, computer hardware is also embedded in devices that do not fit the traditional definition of computers: home appliances, automobiles, smart thermostats, tools, and televisions. Along with being energy-efficient and affordable, these devices may also need to be lightweight, portable, or even wearable. For these reasons, embedded systems have meager processing speed and memory capacity. This chapter focuses on low-level programming languages, which are used in practice to create software for resource-constrained devices. Efficiency is critical to making these devices useful and economically viable. The efficiency of embedded software is make-or-break; in other words, if we can write efficient code that runs fast and uses little memory, we enable technologies that can help people with their daily lives. Therefore, computer scientists place considerable emphasis on the efficiency and speed of low-level languages, which is why low-level languages are important to society. For efficiency reasons, the syntax of low-level programming languages relies on instructions that are computer-centric and challenging for humans to work with. This has led computer scientists to create “middle-level” languages that emphasize human-readability without compromising efficiency.
英語のヒント
現代のデスクトップコンピューター、ノートパソコン、ウェブサーバーなど、私たちが「コンピューター」と呼ぶ機械は、驚くほど高速で、大きな記憶容量を持つ。しかし、コンピューターのハードウェアは、家電、自動車、スマートサーモスタット、工具、テレビのように、従来のコンピューターの定義に当てはまらない機器にも組み込まれている。これらの機器は、省エネルギーで手頃な価格であることに加え、軽量で、持ち運びや、場合によっては身に着けることができる必要もある。そのため、組込みシステムの処理速度とメモリ容量は乏しい。本章は、こうした資源の制約された装置のソフトウェアを実際に作るために使われる、低水準プログラミング言語を扱う。機器を有用で、経済的にも成り立つものにするには、効率が不可欠である。組込みソフトウェアの効率は、成否を分ける。つまり、速く動き、メモリをあまり使わない効率的なコードを書ければ、人々の日常生活を助ける技術を実現できる。このため、コンピューター科学者は低水準言語の効率と速度を大いに重視し、そこに低水準言語の社会的な重要性がある。効率を優先するため、低水準プログラミング言語の構文は、コンピューター中心で、人間には扱いにくい命令に基づいている。そこで科学者は、効率を損なわずに人間の読みやすさを重視する「中水準」言語を作るに至った。
Consider our fictional company, TechWorks, which is bringing a line of next-generation prosthetics to the market. While legacy prosthetics are sometimes awkward to use and limited in function, “smart” prosthetics can be revolutionary. These prosthetics are computer-controlled, Internet-connected, and make use of artificial intelligence, allow those who need prosthetics to enjoy a quality of life that meets or exceeds expectations.
英語のヒント
架空の企業TechWorksが、次世代の義肢の製品群を市場に投入しようとしていると考えよう。従来の義肢は、使いにくかったり機能に限りがあったりするが、「スマート」義肢は画期的なものになり得る。コンピューターで制御され、インターネットにつながり、人工知能を利用するこれらの義肢は、それを必要とする人々が、期待に応え、あるいは期待を超える生活の質を享受できるようにする。
Computer control refers to the ability to manage, organize, or run something on a computer, whereas intelligent control is a class of control techniques that use various artificial intelligence computing approaches. For example, artificial intelligence algorithms can accurately determine the intentions of the wearer and control a prosthetic’s motion in an accurate and natural way. Internet connectivity means devices can be conveniently controlled by applications, relay telemetry to healthcare providers, and automatically apply over-the-air updates. TechWorks has fitted a small, inexpensive, energy-efficient system-on-chip computer to their devices, and are using the middle-level language C to implement these features efficiently.
英語のヒント
コンピューター制御は、コンピューターで何かを管理、整理、実行する能力を指す。一方、知的制御は、人工知能のさまざまな計算方法を使う制御技術の一群である。たとえば人工知能のアルゴリズムは、装着者の意図を正確に判断し、義肢の動きを正確で自然なものにできる。インターネットに接続すれば、アプリケーションから便利に制御し、遠隔測定データを医療従事者に送り、無線での更新を自動適用できる。TechWorksは、小型で安価、省エネルギーのシステムオンチップ型コンピューターを製品に取り付け、中水準言語Cで、これらの機能を効率よく実装している。