Io (bahasa pengaturcaraan)

Io merupakan bahasa pengaturcaraan berorientasi objek sepenuhnya yang diilhamkan oleh Smalltalk, Self, Lua, Lisp, Act1, dan NewtonScript. Io mempunyai model objek berasaskan prototaip serupa dengan yang terdapat pada Self dan NewtonScript, menghapuskan perbezaan antara Objek (computer science) dan kelas (computer science). Sebagaimana Smalltalk, semuabenda adalah objek dan ia menggunakan sistem Taip. Sebagaimana Lisp, tidak terdapat kenyataan (statement), kawalan aliran dicapai dengan menggunakan fungsi, dan aturcara hanyalah pokok data. Io menggunakan model aktor bagi serentak (concurrency), teknik yang jarang digunakan dalam bahasa pengaturcaraan moden.

Ciri-ciri hebat Io adalah keberkesanannya, saiz minima dan terbuka bagi menggunakan sumber kod luar. Io dilaksanakan oleh mesin maya, ketil mudah alih.

Sejarah 
Bahasa Li dicipta oleh Steve Dekorte sekitar 7 March 2002, selepas membantu kawannya mengoptima bahasanya. Dia mendapati bahawa dia tidak tahu banyak mengenai bagaimana bahasa komputer berfungsi dan mula menulis bahasa komputer kecil bagi memahami masalah tersebut dengan lebih mendalam.

Falsafah 

Matlamat Io adalah mengkaji konsep penyatuan dan bahasa pengaturcaraan Dinamik, dengan itu tolak ansur cenderung kepada mudah dan lentur berbanding prestasi.

Contoh 

Atur cara hello world:

"Hello world!" println

Objek baru dihasilkan oleh objek klon. Bagi Io khususnya, objek kosong baru dicipta dan perbezaan antaranya dan keluarganya disimpan dalam objek baru; tabiat ini dikenali sebagai differential inheritance. Contoh tabiat ini ditunjukkan sebegini:

A := Object clone // creates a new, empty object named "A"

Sebuah funcgsi faktorial yang tidak rekursif dalam Io:

factorial := method(n,
  if(n == 0, return 1)
  res := 1
  n to(1) foreach(i, res = res * i)
  res
)

Demostrasi di atas menggunakan julat, dan tidak menggunakan gelung for() yang lebih pantas.

Pautan luar 

 Io home page
 Io Notes 
 Open Directory: Programming: Languages: Io
 jEdit - "Programmer's Text Editor" has syntax highlighting for Io files

Io