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

Hasil Test Aptitude Pemrograman Mhs tahun pertama di UK

Saeed Dehnadi dan Richard Bornat (paper pdf) melakukan sebuah tes apititude pemrograman:

Learning to program is notoriously difficult. A substantial minority of students fails in every introductory programming course in every UK university. Despite heroic academic effort, the proportion has increased rather than decreased over the years. Despite a great deal of research into teaching methods and student responses, we have no idea of the cause.

It has long been suspected that some people have a natural aptitude for programming, but until now there has been no psychological test which could detect it. Programming ability is not known to be correlated with age, with sex, or with educational attainment; nor has it been found to be correlated with any of the aptitudes measured in conventional intelligence or problem-solving-ability tests.

We have found a test for programming aptitude, of which we give details. We can predict success or failure even before students have had any contact with any programming language with very high accuracy, and by testing with the same instrument after a few weeks of exposure, with extreme accuracy. We present experimental evidence to support our claim. We point out that programming teaching is useless for those who are bound to fail and pointless for those who are certain to succeed.

Berdasarkan hasil pengujian mereka, terdapat tiga kelompok dalam kelas pemrograman,

  1. Kelompok yang ingin belajar lebih cepat
  2. Kelompok yang mengatur diri dan berusaha supaya lulus
  3. Kelompok yang belum memahami ide dasar pemrograman (sampai perkuliah selesai)

Tampaknya kesalahan bukan pada dosen (baik dari material maupun cara mengajarnya):

The cause isn’t to be found in inappropriate teaching materials or methods either. Essentially, the computer science community has tried everything (see section 2) and nothing works. Graphics, artificial intelligence, logic programming languages, OOP, C, C++, PROLOG, Miranda: you name it, we’ve tried it. We’ve tried conventional teaching, lab-based learning by discovery and remedial classes. We’ve tried enthusiasm and cold- eyed logical clarity. Nothing makes a difference. Even the UK’s attempt in the 1980s to teach the whole UK population to program on the BBC Micro ran into the sand.

Bagaimana dengan mahasiswa kita ????

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)

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