Buku Pengantar Bhs Pemrograman LUA (Hasil PI)

Buku berikut hasil kompilasi penulisan Ilmiah Fitrah, Dian, Pamela, eviyanti, Satyani, mahasiswa Teknik Informatika, Universitas Gunadarma. Meskipun hanya berupa terjemahan user manual LUA, namun saya yakin bermanfaat untuk kita. Buku bisa di download disini (pdf file)

Pendahuluan

Saat ini, banyak bahasa pemrograman yang terfokus pada bagaimana caranya membantu anda menulis program-program dengan ratusan ribu baris. Untuk itu, mereka menawarkan anda paket-paket, namespaces, sistem tipe kompleks, ribuan konstruksi, dan halaman-halaman dokumentasi untuk dipelajari.

Namun tidak pada Lua. Justru, Lua mencoba membantu anda untuk memecahkan masalah dalam ratusan baris, bahkan lebih sedikit. Untuk mencapai tujuan ini, Lua mengandalkan sifat extensibility, seperti banyak bahasa lainnya. Tidak seperti hampir semua bahasa lainnya, bagaimanapun, Lua mudah dikembangkan tidak hanya dengan software khusus yang ditulis dengan Lua, tetapi juga dengan software yang ditulis dengan bahasa lain, seperti C dan C++.

Lua dirancang, sejak awal, untuk terintegrasi dengan perangkat lunak yang ditulis dengan C dan bahasa-bahasa konvensional lain. Dualitas bahasa ini membawa banyak manfaat. Lua merupakan bahasa yang sederhana dan mudah, sebagian karena Lua tidak mencoba untuk melakukan apa yang telah dapat dilakukan bahas C, seperti kinerja yang tipis, operasi low-level, atau penghubung dengan perangkat lunak pihak ketiga. Lua mengandalkan C untuk melakukan tugas tersebut. Apa Yang Lua tawarkan adalah apa yang tidak dapat dilakukan dengan baik pada C : suatu jarak yang baik dari perangkat keras, struktur-struktur dinamis, tanpa redudansi, pengecekan yang mudah dan debugging. Untuk itu, Lua mempunyai lingkungan yang aman, manajemen memori otomatis, dan fasilitas terbaik untuk menangani string dan data jenis lain dengan ukuran yang dinamis.

Lebih dari sekedar menjadi bahasa yang dapat diperluas, Lua juga merupakan bahasa perekat (glue language). Lua mendukung pendekatan berbasis komponen pada perkermbangan software, di mana kita membuat satu aplikasi dengan merekatkan komponen-komponen prioritas tinggi yang ada. Biasanya, komponen-komponen ini ditulis dalam susunan hipunan (compiled), bahasa yang statis, seperti C atau C++; Lua merupakan perekat yang kita gunakan untuk menyusun dan menghubungkan komponen-komponen itu.

Biasanya, komponen-komponen (object) ditunjukkan lebih kongkrit, konsep low-level (seperti widgets dan struktur data) yang bukan subjek pada banyak perubahan selama perkembangan program dan yang mengambil sebagian terbesar waktu CPU dari program akhir. Lua memberi bentuk akhir dari aplikasi, yang mungkin akan mengubah selama daur hidup produk. Bagaimanapun, tidak seperti teknologi glue lainnya. Oleh karena itu kita dapat menggunakan Lua tidak hanya untuk melekatkan komponen, tetapi juga untuk mengadaptasikan dan mengatur bentuk komponen itu, atau bahkan menciptakan seluruh komponen itu.

Tentu saja, Lua bukan satu-satunya bahasa penulisan (scripting language). Terdapat bahasa-bahasa lain yang dapat digunakan dengan tujuan yang hampir sama, seperti Perl, Tcl, Ruby, Forth, and Python. Keunggulan fasilitas-fasilitas berikut menjadikan Lua jauh berbeda dari bahasa-bahasa ini; meski bahasa-bahasa lain berbagi sebagian fasilitas berikut dengan Lua, tidak ada bahasa lain yang menawarkan profile serupa:

· Extensibility: Extensibility Lua sangat menarik perhatian sehingga banyak orang menganggap Lua bukan sebagai suatu bahasa, tetapi sebagai suatu perangkat untuk membangun bahasa-bahasa domain spesifik. Lua telah dirancang untuk diperluas/diaplikasikan, pada kode Lua dan kode eksternal C. Sebagai suatu bukti dari konsep, Lua menerapkan banyak kemampuan dasarnya melalui fungsi-fungsi eksternal. Hal ini sangat mudah untuk menghubungkan Lua dengan C/C++ dan bahasa-bahasa lain, seperti Fortran, Java, Smalltalk, Ada, bahkan dengan bahasa-bahasa penulisan yang lain.

· Simplicity / Sederhana : Lua adalah bahasa yang mudah dan sederhana. Lua mempunyai sedikit konsep (namun tangguh). Kesederhanaan ini membuat Lua mudah dipelajari dan memperbesar suatu implementasi yang sederhana. Distribusinya yang lengkap (source program, manual, biner-biner lebih untuk beberapa platform) sesuai dengan floopy disk.

· Efisiensi: Lua mempunyai implementasi yang efisien. Benchmark-benchmark yang mandiri menunjukkan Lua sebagai bahasa tercepat dalam dunia bahasa penulisan (interpreted).

· Portabilitas: Ketika kita berbicara tentang portabilitas, kita tidak berbicara tentang menjalankan Lua di platform Windows dan Unix. Kita berbicara tentang menjalankan Lua di semua platform yang sudah pernah kita dengar, seperti: NextStep, OS/2, PlayStation II (Sony), Mac OS-9 dan OS X, BeOS, MS-DOS, IBM, EPOC, PalmOS, MCF5206ELITE Evaluation Board, RISC OS, dan tentu saja semua jenis Unix dan Windows. Source program untuk masing-masing platform hampir sama. Lua tidak menggunakan kumpulan kondisi untuk menyesuaikan kodenya kepada mesin-mesin yang berbeda; sebagai gantinya, Lua mengikuti standar ANSI ( ISO) C. Dengan cara itu, biasanya anda tidak perlu menyesuaikan pada suatu lingkungan baru: Jika anda mempunyai satu compiler ANSI C, anda hanya harus meng-kompile Lua, out of box.

Bagian kehandalan Lua terletak pada pustakanya (library). Salah satu dari kekuatan utama Lua yaitu sifat ekstensibilitas pada tipe barunya dan fungsi-fungsinya. Banyak fitur yang berperan dalam kehandalan ini. Pengetikan dinamis mengizinkan tingkat polimorfisme. Manajemen memori otomatis menyederhanakan penghubungan, karena tidak perlu memutuskan siapa yang bertanggung jawab atas alokasi dan dealokasi memori, atau bagaimana caranya menangani overflows. Fungsi-fungsi penugasan yang tinggi (Higher-order) dan fungsi-fungsi tanpa nama mengizinkan suatu prioritas tinggi parametrisasi, pembuatan fungsi-fungsi lebih serbaguna. Lua hadir dengan suatu set kecil pustaka standar. Saat menginstall Lua pada lingkungan dengan kapasitas terbatas, seperti processor, mungkin harus lebih hati-hati untuk memilih pustaka yang dibutuhkan. Lebih dari itu, jika keterbatasan sangan besar, dengan mudah dapat masuk pada pustaka source program dan memilih satu-persatu fungsi-fungsi mana saja yang harus tetap disimpan. Ingat, bagaimanapun, Lua lebih sederhana (bahkan dengan semua standar pustaka) dan dalam kebanyakan sistim anda dapat menggunakan keseluruhan paket tanpa kawatir.

lebih detail silahkan baca bukunya (pdf file)

Ditulis dalam Bahasa Pemrograman, LUA, Programming Language. Comments Off

Carnap Programming Language (for the next generation of many-core devices)

Carnap is a general purpose programming language for the next generation of many-core devices, many many-core systems and their applications. It introduces a process oriented programming model that allows programmers to seperate the concerns of data structures and the concurrent processes that act upon them.

“The primitive process of a Carnap program is called an action. An action determines a local or shared state. Actions are assembled by construction to form the component processes of a program. Programs consist of concurrent processes that construct and interact via logically shared data structures and resources called contexts.

In this way the application programmer is able to separate concerns, reasoning separately about the two primary aspects of Carnap programs: data structures and the concurrent processes that act upon them.

The primary goal of Carnap is to ease the general purpose programming of applications that can utilize the concurrency of future many-core and many many-core systems.”

This project is a part of IASE’s Process Interaction Models Research .

Carnap is Open Source and freely available to the research community.

Ditulis dalam Bahasa Pemrograman, Open Source, Programming Language. Comments Off

Top 10 Kemampuan/skills komputer akan mati

Baru-baru ini majalah ComputerWorld menampilkan daftar 10 kemampuan/skills bidang komputer akan mati:

  1. Kemampuan dalam pemrograman Bahasa Cobol
  2. Kemampuan dalam ‘non-relational DBMS’
  3. Kemampuan dalam ‘non-ip network’
  4. CC-mail
  5. Kemampuan dalam aplikasi ‘coldfusion”
  6. Kemampuan dalam bahasa pemrograman C
  7. Kemampuan dalam bahasa pemrograman Powerbuilder
  8. Certified NetWare Engineers
  9. Kemampuan dalam PC-Network Administrators
  10. Kemampuan pada OS/2

Detail alasan mengapa dapat dilihat di sini (a list of 10 computer skills that are largely irrelevant when compared to other more popular technologies)

StreamIt: Bahasa Pemrograman baru yang mudah untuk mesin multicore

Dengan perkembangan teknologi mikroprosessor, kita jumpai sekarang terdapat PC, Laptop maupun Gagdet memiliki prosessor lebih dari 1 atau istilahnya multicore, ada yang dual-core atau quad-core. Pada saat ini mesin dengan multicore tersebut lebih banyak digunakan untuk aplikasi-aplikasi yang memang memerlukan banyak proses komputasi, seperti video processing dan gaming. Namun, pada dasarnya mesin multicore ini merupakan superkomputer skals-kecil. Agar kita dapat memanfaatkan keuntungan dari kekuatan komputasinya, software atau program harus dikoding bagi mesin tersebut harus berbasis algoritma paralel (pemrograman paralel). Dan para pakar yakin, apabila pemrograman paralel tidak dapat dibuat lebih mudah, progress komputasi akan menjadi tersendat-sendat dan bahkan terhenti.

Peneliti dari MIT memperhatikan hal ini. Dan mereka telah berhasil mendesain sebuah bahasa pemograman dan compiler yang memberikan kemudahan dalam pemrograman paralel, khususnya bagi mesin-mesin mutlicore. Bahasa Pemrograman dan Compiler disebut StreamIt , dikembangkan oleh Saman Amarasinghe, professor teknik elektro dan ilmu komputer MIT.

StreamIt saat ini berjalan pada mesin multicore khusus yang dikembangkan di MIT. Pada musim panas tahun ini diharapkan dapat berjalan pada chip-komersial dari IBM, Sony, dan Toshiba.

Pada mesin single core, kode software (tasks)akan berjalan sekuensial; pada mesin multicore task-task akan dipecah diantara core-core. Jika task yang berbeda perlu mengakses ‘chunk’ memori yang sama, task tersebut harus bekerja bersama-sama untuk mensinkronisasi akses-akses.

Debugging sekuesial program adalah mudah. Pada sistem paralel proses debug cukup kompleks dan sulit, karena sifat-nya menjadi probabilistik. Setiap kali program berjalan, multicore mengeksekusi tugasnya secara independent, memungkinkan terjadinya jutaan orde eksekusi yang mungkin bagi program.

Data flow, menurut Amaransinghe, merupakan solusinya. Pada data flow, data di stream secara sekuensial melalui sebuah ’sort’ pipeline fungsi-fungsi. Ketika data mengalir compiler akan melihat fungsi mana yang independen. Dengan demikian, compiler dapat memisahkan task-task pada core yang berbeda, tanpa khawatir bahwa task-task akan berinterferensi satu sama lain atau menempati ruang memori yang sama.

Programmer hanya perlu menulis program yang beroperasi secara sekuensial. Compiler yang akan melihat seluruh interaksi-interaksi yang perlu dilakukan, berdasarkan kode yang ditulis programmer, dan mengalokasikan instruksi-instruksi yang tepat.

Lihat lebih jauh tentang StreamIt
StreamIt is a programming language and a compilation infrastructure, specifically engineered for modern streaming systems. It is designed to facilitate the programming of large streaming applications, as well as their efficient and effective mapping to a wide variety of target architectures, including commercial-off-the-shelf uniprocessors, multicore architectures, and clusters of workstations.

Komentar:

It is a sound idea based on well-known concepts, says Ras Bodik, a professor of computer science at the University of California, Berkeley. “If you want programmers who are not experts in parallelism to be productive, if you want them to effectively write programs, you want to give them a language like StreamIt,” he says. However, Bodik suspects that software engineers will need to rely on a hierarchy of tools that operate at different levels. For instance, transactional memory, which allows numerous tasks to share the same memory at the same time, could operate behind the scenes, helping maximize StreamIt’s
potential. (See
The Trouble with Multi-Core Computers.”)

Programming Language LUA

Lua is a powerful light-weight programming language designed for extending applications. Lua is also frequently used as a general-purpose, stand-alone language. Lua is free software.

Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.

A fundamental concept in the design of Lua is to provide meta-mechanisms for implementing features, instead of providing a host of features directly in the language. For example, although Lua is not a pure object-oriented language, it does provide meta-mechanisms for implementing classes and inheritance. Lua’s meta-mechanisms bring an economy of concepts and keep the language small, while allowing the semantics to be extended in unconventional ways. Extensible semantics is a distinguishing feature of Lua.

Lua is a language engine that you can embed into your application. This means that, besides syntax and semantics, Lua has an API that allows the application to exchange data with Lua programs and also to extend Lua with C functions. In this sense, Lua can be regarded as a language framework for building domain-specific languages.

Lua is implemented as a small library of C functions, written in ANSI C, and compiles unmodified in all known platforms. The implementation goals are simplicity, efficiency, portability, and low embedding cost. The result is a fast language engine with small footprint, making it ideal in embedded systems too.

Lua is designed and implemented by a team at PUC-Rio, the Pontifical Catholic University of Rio de Janeiro in Brazil. Lua was born and raised at Tecgraf, the Computer Graphics Technology Group of PUC-Rio, and is now housed at Lablua. Both Tecgraf and Lablua are laboratories of the Department of Computer Science.

‘Lua’ means ‘moon’ in Portuguese and is pronounced LOO-ah.

Here are brief descriptions of some projects around the world that use Lua.

see more http://www.lua.org/uses.html

The New Twelf Wiki

We are pleased to announce the Twelf Wiki, a major new source of documentation about Twelf: http://twelf.plparty.org

Twelf is a language used to specify, implement, and prove properties of deductive systems such as programming languages and logics. Large research projects using Twelf include the TALT typed assembly language, a foundational proof-carrying-code system, and a type safety proof for Standard ML. Visitors without a technical background are encouraged to read the general description of Twelf.The Twelf Wiki includes:

  • A new introduction to LF and Twelf.
  • Tutorials on common Twelf tricks and techniques.
  • Case studies of larger applications of Twelf, including encodings of and proofs about linear logic, mutable state, and CPS conversion.
  • Pre-compiled CVS builds of Twelf for Linux and Windows.

We invite you to come share what you know, learn from what’s there, and ask questions about what’s not.

- The Twelf Wiki Team

(I know many of the people working on this, and they’ve put in a lot of effort to make a really useful resource.)

Site Programming Languages

Site mengenai Programming languages yang bagus Lambda the Ultimate .

Pada site terdapat Diskusi mengenai up-to-date programming language, download paper, link ke course programming languages dll (more also about Lambda Calculus)