..:: Selamat Datang di iloworld.blogspot.com ::..

Jumat, 26 Oktober 2007

Kecerdasan buatan



source

Menjelaskan apa sesungguhnya AI tidaklah mudah. Ada yang berpendapat, AI adalah kemampuan komputer untuk menyelesaikan tugas. Namun ada yang menyatakan, kemampuan belajarnya yang lebih penting. Tapi sebagian besar sepakat, kemampuan komputer untuk berkomunikasi dengan manusia yang paling penting.

Sebutlah Alan Turing, ahli matematika berkebangsaan Inggris, yang dijuluki bapak komputer modern dan pembongkar sandi Nazi dalam PD II. Tahun 1950 ia menetapkan definisi AI: "Kalau komputer tidak dapat dibedakan dengan manusia saat berbincang melalui terminal komputer, maka bisa dikatakan komputer itu cerdas. Ia punya intelgensi." Inilah AI.

Tahun 1990 industriawan terkemuka Dr. Hugh G. Loebner menyediakan hadiah sebesar AS $ 100.000 bagi yang berhasil menciptakan AI menurut deskripsi Alan Turing. Setiap tahun dalam Kompetisi Loebner tentang AI, 10 orang juri duduk di depan terminal komputer dan "ngobrol" tentang topik tertentu dengan 10 "orang" (bisa manusia, bisa komputer). Mereka harus menebak mana yang komputer dan mana yang manusia. Hadiah sebesar itu akan diberikan pada perancang dari program komputer yang dikira manusia. Tapi sampai tahun 1994 belum ada yang menang.

Di dunia sains komputer ada dua aliran: neat (rapi) dan scruffy (jorok). Aliran yang rapi biasanya bergerak di bidang bahasan yang sudah jelas. Tentunya yang sudah mereka pahami. Sedangkan aliran jorok itu sains yang menjelajahi bidang-bidang bahasan yang masih baru, belum dikenal, masih teka-teki. Ilmuwan yang scruffy kadang-kadang tak dapat menerangkan bagaimana karya ciptanya bisa berfungsi, karena ia memang menjelajah wilayah baru. Istilah neat dan scruffy belakang ini banyak muncul di dunia AI.

Banyak teknologi baru yang kini muncul berkat prinsip logika kabur (fuzzy logic). Maksudnya, komputer mengambil keputusan tidak berdasarkan pertimbangan hitam dan putih, tetapi abu-abu. Ini salah satu cara komputer belajar menyamai cara berpikir yang tak pasti, yang justru amat manusiawi.

Expert system, salah satu contoh program komputer yang menganut aliran neat, karena cara kerjanya serba pasti. Beberapa pertanyaan diajukan, kita jawab, lalu program itu memberikan solusi. Jadi program itu berfungsi sebagai tenaga ahli. Program ini banyak digunakan lembaga keuangan untuk membuat prediksi.

Sebaliknya dengan Neural Nets. Ini program yang belajar sendiri. Sirkuitnya didesain mirip dengan sambungan saraf manusia. Program ini mempelajari data mentah, bahkan menyimpulkan sendiri di mana data yang dibutuhkan itu harus dicari, berdasarkan pengalamannya. Bisa dikatakan, program ini bekerja dari nol. Program macam ini digunakan bank untuk melacak pola belanja nasabahnya dan menemukan keanehan yang mungkin terjadi sehingga mereka terhindar dari pemalsuan atau penipuan.

Ada lagi Genetic Algorithms yang mulai bekerja tidak dari nol, tapi sudah dibekali dengan beberapa prinsip dasar. Prinsip-prinsip ini lalu terus dikombinasikan sampai dihasilkan program-program baik yang kemudian akan saling dikawinkan lagi.

Dari proses itu akan diperoleh solusi, misalnya bagaimana membuat Neural Net yang lebih baik atau bagaimana memprediksi pasar saham.

Pelbagai teknologi ini sudah digunakan untuk segala macam tujuan, mulai dari penyelidikan benjolan kanker payudara sampai menyempurnakan video kamera.

Di MIT, Massachussetts Institute of Technology (ITB-nya AS), kini sedang berjalan sebuah proyek ambisius: Intelligent Room Project (Proyek Ruangan Pintar). Proyek yang disponsori oleh Departemen Pertahanan AS ini melakukan riset untuk membuat aplikasi-aplikasi program yang bakal membuat ruangan pintar, antara lain, manajemen proyek riset, proses brainstorming dengan bantuan komputer, penulisan notulen rapat secara otomatis, pengaturan kamera otomatis pada saat rapat jarak jauh, dukungan multimedia sebuah presentasi, penghadiran tokoh virtual secara nyata.

Ruangan pintar juga dapat dilengkapi dengan kemampuan mendeteksi kebohongan, misalnya, sehingga kegiatan spionase tentu akan amat terbantu.

Aplikasi teknologi AI kini sudah banyak diterapkan untuk untuk kegunaan praktis seperti menemukan deposit minyak bumi

Kecerdasan Buatan pada Angkatan Udara AS



source

Angkatan Udara AS (USAF) kini tengah m,engembangkan sistem kendali penerbangan untuk pesawat militer dan rudal dengan kecerdasan buatan atau artificial intelligence. Tujuannya adalah membantu kestabilan terbang pada saat-saat krisis, sehingga pilot lebih mudah dalam mengatasi kerusakan pada pesawat serta mengurangi kemungkinan jatuhnya korban. Sistem pengendalian yang didasarkan pada jejaring teknologi neural ini dikembangkan bersama dengan Georgia Institute of Technology di Atlanta. Sistem ini sekarang telah siap untuk diuji-cobakan pada beberapa jenis pesawat tak berawak USAF, seperti UCV atau pesawat tempur tanpa awak serta pesawat angkasa VentureStar. UCV adalah proyek dari badan riset USAF untuk membuktikan kemungkinan pemakaian pesawat tak berawak untuk melakukan serangan udara. Menurut USAF, sistem neural untuk kendali penerbangan ini menawarkan kestabilan yang nyaris sempurna dan langsung pada saat timbul kerusakan atau kegagalan pada sistem kendali konvensional. Sistem itu secara otomatis juga menyesuaikan diri dengan perubahan lingkungannya, seperti berat pesawat, kerusakan sayap dan sebagainya. Pengembangan sistem ini telah dimulai sejak 1996, dan sampai tahun lalu telah menghabiskan biaya 2,5 juta dollar. (rb)


Saya Chatbot, Bernama George

source

TEMPO Interaktif, Jakarta:Namanya George. Usianya 39 tahun. Kepribadiannya menarik, baik hati, dan tidak sombong. Padahal perawakannya tak ganteng-ganteng amat. Kurus, berkacamata, dan berkepala plontos.

Tapi ia punya kelebihan yang tak dimiliki manusia biasa: menguasai 40 bahasa dan bisa menemani 2.000 orang dalam satu waktu. Ya, George adalah sebuah perangkat lunak.

Ia diklasifikasikan sebagai chat robot (chatbot) alias software yang dirancang untuk bisa melakukan percakapan (chat) secara otomatis dengan orang-orang yang terhubung di Internet.

Anda bisa mengajaknya berbicara lewat situs www.jabberwacky.com. Kalau Anda bertemu dengan orang yang berkacamata kuning dan baju hangat berleher tinggi (turtle neck), itulah si George.

Walaupun usia resminya 39 tahun, George baru diciptakan tujuh tahun lalu oleh Rollo Carpenter, seorang ahli kecerdasan buatan (artificial intelligence).

Carpenter melengkapi George dengan kecerdasan buatan, suara, dan perangkat lunak pengenal suara (voice recognition). Karena itu, ia mampu berbicara dan mencerna pembicaraan orang.

Ia bisa tersenyum, tertawa, cemberut, atau bisa menjadi sangat romantis. Tapi ia juga bisa menjadi kasar. Pasalnya, setelah melewati 10 juta pembicaraan online yang telah ia lakukan selama ini, George tak hanya mempelajari sikap-sikap yang baik dari lawan bi "Mesin ini meminjam kecerdasan dan kata-kata orang yang bicara dengannya. Ia sedikit demi sedikit belajar menempatkan respons jawaban dalam konteks yang tepat," kata Carpenter. Semakin banyak pembicaraan yang ia lakukan, semakin tepat jawaban yang George berikan dalam percakapan.

George bukanlah chatbot pertama di dunia maya. Sejak 1980, sudah ada "nenek moyang" George. Dan sekarang sudah banyak chatbot lain, termasuk yang meminjam avatar (penampilan) tokoh terkenal, seperti Noam Chomsky atau bahkan John Lennon. Tengok saja di www.botspot.com/pages/chatbots.html.

Tapi, di antara mereka semua, hanya Georgelah yang sudah mendapatkan penghargaan Loebner Prize di Inggris. Ia dianggap sebagai chatbot terbaik yang "paling nyambung/" saat berbicara dengan manusia. Sebab, dari awal George memang dirancang untuk terus berteman sepanjang hidupnya. "Hai, kenalkan nama saya George...."

Kajian Pemanfaatan Teknologi Knowledge-based Expert System di dalam Pengelolaan Sumber Daya Alam

source

Oleh Muhamad Sadly

Membahas masalah sumberdaya alam (natural resources), mulai dari perkembangan teknologinya sampai kepada bagaimana cara pengelolaannya merupakan hal yang terus mendapat perhatian di negara kita. Potret buram tentang banyaknya bencana alam yang terjadi di negeri kita, seperti banjir, gempa bumi serta tanah longsor yang terjadi di berbagai daerah yang menelan banyak korban jiwa manusia dan harta benda serta bencana alam lainnya telah banyak terjadi. Dari potret tersebut mencerminkan belum optimalnya kita sebagai bangsa dalam mengelola sumberdaya alam.

Pada era modern saat ini, telah terjadi perkembangan pesat dalam bidang ilmu pengetahuan dan teknologi, khususnya teknologi komputer dan komunikasi atau sering disebut dengan era informasi. Jika pada mulanya komputer digunakan hanya sekedar alat penghitung, maka dewasa ini mesin komputer telah mampu menggantikan peran atau tugas-tugas rumit yang dilakukan oleh manusia, bahkan sanggup menirukan proses biologis manusia dalam pengambilan keputusan.

Can machine think ? demikian pertanyaan yang muncul seiring dengan berkembangnya bidang kecerdasan buatan (Artificial Intelligence/AI). Pertanyaan lain yang akan muncul: mampukah sistem pakar tersebut memberi kontribusi nyata di dalam pengelolaan sumberdaya alam ?. Untuk menjawab pertanyaan tersebut, di dalam artikel ini akan dibahas secara cermat tentang apa itu teknologi berbasis pengetahuan (knowledge-based expert system), mulai dari perkembangan teknologinya sampai pada aplikasinya pada pengelolaan sumberdaya alam.

Definisi Expert System

Pada tahun 1956, mulai diperkenalkan istilah Kecerdasan Buatan (AI), yang kemudian ditegaskan lagi pada tahun 1961 oleh suatu tulisan Marvin Minsky dari MIT tentang "Steps towards AI". Semenjak itu istilah AI menjadi semakin populer, dan kemajuan bidang ini mencapai puncaknya dengan munculnya pengetahuan tentang Sistem Pakar.

Di dalam perspektif ilmu pengetahuan dan teknologi, sistem cerdas merupakan bagian dari bidang inteligensia semu (Artificial Intelligence/AI). Istilah expert system berasal dari knowledge-based expert system (sistim cerdas berbasis pengetahuan), dimana suatu sistem yang menggunakan pengetahuan manusia (human knowledge) yang dimasukkan ke dalam komputer untuk memecahkan masalah yang umumnya memerlukan keahlian seorang pakar/expert. Atau dapat juga dikatakan, sebuah program komputer yang menggunakan pengetahuan dan teknik inferensi (pengambilan kesimpulan) untuk memecahkan persoalan seperti yang dilakukan oleh seorang pakar.

Berbeda dengan program komputer biasa, sistem cerdas dapat digunaan untuk memecahkan masalah yang tidak terstruktur dan dimana tidak ada suatu prosedur tertentu untuk memecahkan masalah tersebut. Sedangkan definisi pengetahuan (knowledge) menurut Webster's New World Dictionary of the American Language: persepsi tentang sesuatu yang jelas dan tentu, semua yang telah dirasakan dan diterima oleh otak, serta merupakan informasi terorganisasi yang dapat diterapkan untuk penyelesaian masalah.

Penggunaan Knowledge-based expert system (sistem pakar berbasis pengetahuan) ini tidak menjamin solusi yang lebih akurat, tetapi paling tidak mampu menghasilkan keputusan-keputusan yang didasari informasi relatif lebih banyak/terstruktur. Sesuai dengan namanya, suatu "Sistem Pakar" akan sangat tergantung pada pengetahuan (knowledge) yang didapat dari pakar yang menyumbangkan keahlian dan pengalamannya.

Biasanya suatu "sistem cerdas" dapat dibagi menjadi beberapa bagian:

(1). Basis pengetahuan (knowledge-base): berisi pengetahuan yang spesifik mengenai domain tertentuyang mana basis pengetahuan ini dapat diperbaharui sesuai dengan tingkat kemampuan seorang expert terhadap pemecahan suatu masalah,
(2). Mesin inferensi (Inference Engine) : sustu program yang bertugas mengolah data masukan sesuai pengetahuan dalam basis pengetahuan, menurut kaidah-kaidah tertentu.
(3). Bagian kendali/user interface : bagian yang berkomunikasi langsung dengan pengguna (user) sistem. Ada 2 (dua) macam mesin inferensi, yaitu yang bersifat pasti (deterministik) dan kemungkinan (probabilistik).

Sistem konvensional yang berlandaskan logika konvensional berdasarkan pada dua keadaan -benar atau salah (true or false)-, ternyata kurang serasi untuk mengadopsi cara berfikir manusia yang banyak mengandung hal ketidak-pastian (uncertainty), proses belajar (learning process), penalaran, sifat adaptif dan sebagainya. Cara penalaran otak manusia tidaklah sama dengan komputer, karena komputer menalar dengan langkah yang jelas/pasti, sedangkan manusia menalar dengan istilah sehari-hari, misalnya: udara sejuk, airnya hangat, kecepatannya rendah, dan lainnya.

Banyak hal yang bersifat tidak linear, yang susah diformulasikan secara matematis, namun sangat mudah dilakukan dengan perintah manusia biasa, misalnya : kurangi kecepatan, rem dengan perlahan, dan sebagainya. Sedangkan, sistem cerdas, seperti misalnya Logika Fuzzy atau Fuzzy expert system yang pertama kali ditemukan oleh Professor Lofti A. Zadeh pada tahun 1965 telah mampu mengatasi masalah tersebut, karena menurut logika ini segala sesuatu tidaklah dapat dikatakan 100% yes atau 100% no, namun fungsi keanggotaannya (membership function) dalam suatu himpunan dapat bervariasi antara 0 (completely no) dan 1 (completely yes). Sehingga beberapa variabel linguistik yang telah disebutkan, dapat diubah menjadi variabel numerik dan sebaliknya oleh logika fuzzy.

Secara umum, Sistem Konvensional fokus pada pemrosesan informasi, sedangkan sistem cerdas (Expert System) fokus pada pemrosesan pengetahuan (knowledge processing).

Kelebihan dan Kekurangan Expert System

Sistem pakar sekarang banyak digunakan baik pada aplikasi bisnis maupun apikasi lainnya. Aplikasi sistem pakar di dalam pengelolaan sumberdaya alam masih relatif baru dan merupakan pendekatan alternatif yang dapat digunakan untuk penyelesaian masalah-masalah di dalam pengembangan teknologi pengelolaan sumberdaya alam. Hal ini karena sistem pakar memberikan banyak kelebihan. Akan tetapi perlu juga diketahui bahwa seperti halnya sistem yang lainnya, selain memberikan banyak kelebihan, sistem pakar juga mempunyai beberapa kelemahan.

Kelebihan-kelebihan dari sistem pakar secara umum adalah sebagai berikut:

1. Memberikan pengambilan keputusan yang lebih baik. Karena sistem pakar memberikan jawaban yang konsisten dan logis dari waktu ke waktu. Jawaban yang diberikan logis karena alasa logiknya dapat diberikan oleh sistem pakar dalam proses konsultasi.
2. Memberikan solusi tepat waktu. Kadang kala seorang manajer membutuhkan jawaban dari pakar, tetapi pakar yang dibutuhkan tidak berada ditempat, sehingga keputusan menjadi terlambat. Dengan sistem pakar, jawaban yang dibutuhkan oleh pengambil keputusan selalu tersedia setiap saat dibutuhkan.
3. Menyimpan pengetahuan di organisasi. Pengetahuan pakar merupakan hal yang penting dan kadang kala pengetahuan iniakan hilang jika pakar keluar atau telah pensiun dari perusahaan. Dengan sistem pakar, pengetahuan dari pakar dapat disimpan di sistem pakar dan tersedia terus selama dibutuhkan.

Kekurangan-kekurangan dari sistem pakar adalah sebagai berikut:

1. Sistem pakar hanya dapat menangani pengetahuan yang konsisten. Sistem pakar dirancang dengan aturan-aturan yang hasilnya sudah pasti dan konsisten sesuai dengan alur di diagram pohonnya. Untuk pengetahuan yang cepat berubah-rubah dari waktu ke waktu, maka knowledge base di sistem pakar harus selalu diubah (perbarui-red), yang tentu cukup merepotkan.
2. Sistem pakar tidak dapat menangani hal yang bersifat judgement. Sistem pakar memberikan hasil yang pasti, sehingga keputusan akhir pengambilan keputusan jika melibatkan kebijaksaaan dan institusi masih tetap di tangan manajemen.
3. Format knowledge base sistem pakar terbatas. Knowledge base pada sistem pakar berisi aturan-aturan (rules) yang ditulis dalam bentuk statemen if-then.

Pengantar Artificial Intelligence dalam GameContents Pengantar Artificial Intelligence dalam GameContents

source
Artificial Intelligence

AI (Artificial Intelligence) atau intelejensia buatan (selanjutnya disebut dengan IB) adalah pendekatan komputasi yang sebenarnya memiliki makna yang ambigu. beberapa pendekatan seperti pada (Russel, 2000) mengemukakan empat arahan berbeda dalam hal kecerdasan buatan. walaupun ketiganya memiliki persamaan yaitu memodelkan ke-'manusia'-an melalui teknik komputasi. Arah eksplorasi di bidang kecerdasan buatan diantaranya
membuat agen yang 'tampak' seperti manusia.
membuat agen yang 'bekerja' seperti manusia.
membuat agen yang 'berpikir' seperti manusia.
membuat agen yang 'menyerupai dan bersifat' seperti manusia.
sederhananya, IB merupakan teknik komputasi yang mampu menyelesaikan persoalan yang memiliki ciri informasi yang tidak lengkap, tidak pasti pada definisi persoalan dan teknik untuk menyelesaikannya.

Aplikasi IB dalam Pengembangan Game

persepsi umum dari judul di atas biasanya adalah bagaimana membuat lawan (opponent) yang tampak seperti manusia. istilah 'tampak' di sini adalah yang sesuai dengan tes turing. parameter tampak ditentukan dari seberapa 'percaya' pemain yang menghadapinya. ukuran keberpercayaan ini disebut juga sebagai believable atau immersive. pemodelan karakter yang terlibat dalam permainan yang bukan dikendalikan oleh manusia diistilahkan dengan Game AI (jadi beda antara AI untuk game dengan Game AI). walaupun demikian, IB tidak hanya bisa diaplikasikan untuk memodelkan lawan dalam permainan. Contoh aplikasi lainnya dari IB antara lain :
memodelkan lawan (Game AI)
memodelkan objek untuk mendukung 'realisme' situasi permainan (Game AI)
teknik interaksi dengan pemain.
optimasi
Game AI

Game AI adalah aplikasi IB untuk memodelkan karakter yang terlibat dalam permainan baik sebagai lawan, ataupun karakter pendukung yang merupakan bagian dari permainan tetapi tidak 'ikut bermain' (NPC ~ Non Playable Characters).

Karakter Antagonis (Opponent AI)

karakter antagonis adalah karakter yang dalam permainan memiliki tujuan yang sama dengan pemain yaitu memenangkan permainan. untuk mewujudkan tujuan ini karakter tersebut dapat melakukan aksi kepada pemain dan sebaliknya pemain dapat melakukan aksi kepada karakter lawan yang sesuai dengan aturan permainan. contoh sederhana dari karakter antagonis adalah dalam permainan pertarungan (fighting). karakter lawan adalah karakter yang harus 'dikalahkan' oleh pemain dengan melakukan aksi (serangan). fungsi IB pada karakter antagonis adalah melakukan aksi-aksi yang dapat memperbesar peluang karakter tersebut untuk menang.

Karakter Pendukung (NPC AI)

karakter pendukung (NPC ~ Non-Playable Characters) merupakan karakter yang terlibat dalam permainan tetapi tidak memiliki tujuan untuk memenangkan permainan melainkan melakukan peran yang mendukung pemain/lawan untuk memenangkan permainan. contoh sederhana dari NPC AI adalah pada game RPG. Karakter NPC pada permainan bergenre RPG pada umumnya memberikan informasi implisit kepada karakter tentang hal-hal yang berkaitan dengan cerita dalam permainan ataupun panduan bagi pemain mengenai tujuan permainan. fungsi IB pada karakter pendukung adalah menentukan dialog dengan pemain sedemikian rupa sehingga seolah-olah karakter tersebut tampak nyata bagi pemain (life-like).

IB untuk interaksi

Peranan IB dalam hal interaksi pemain dengan permainan adalah pada penggunaan interaksi yang bersifat alami yaitu yang biasa digunakan manusia untuk berinteraksi dengan sesama manusia. contoh-contoh media interaksi antara lain :

penglihatan (Vision)
Untuk menggunakan informasi penglihatan biasanya menggunakan kamera sebagai perangkat untuk mendapatkan data. data yang ditangkap adalah berupa gambar / citra yang merupakan matriks dua dimensi. matriks tersebut dianalisa sesuai dengan kebutuhan aplikasi sehingga didapatkan informasi yang diinginkan (misal pembentukan wajah, deteksi gerakan, rekonstruksi ruang).

suara (voice) atau ucapan (speech)
Informasi suara didapatkan dari microphone yang menghasilkan informasi dalam bentuk deretan angka (disebut sebagai sample). Persoalan utama dari suara adalah informasi yang dikandung memiliki variasi yang sangat besar yang disebabkan oleh faktor alat dan faktor manusia (vokal, intonasi, intensitas, dll). Penerapan interaksi dengan menggunakan suara misalnya untuk permainan bergenre RTS (wargames) yang menterjemahkan perintah dari pemain untuk menggerakkan unit. Contoh lainnya adalah permainan balap kendaraan yang menentukan akselerasi dari suara pemain yang menirukan suara mesin.

Gerakan anggota badan (gesture)
Gesture adalah gerakan sebagian anggota badan yang memiliki makna tertentu (disebut juga sebagai body language). Informasi gesture dapat diakuisisi dengan berbagai cara, diantaranya :
dari video (vision)
informasi deretan koordinat (gerakan) dihasilkan dari analisis terhadap rangkaian gambar terurut (video).
sensor jarak (range)
informasi deretan koordinat diukur dengan menggunakan sensor jarak. sensor posisi yang menempel pada pemain

akhir-akhir ini beberapa produsen konsol memanfaatkan pengendali (controller) yang dapat menghasilkan informasi posisi /perubahan posisi pengendali pada ruang tiga dimensi. Salah satu contoh konsol yang menggunakan ini adalah Nintendo Wii.

Rabu, 10 Oktober 2007

Intel Multicore Compilers

Oleh : Raffaell

Intel telah mengumumkan update nya untuk C++ dan Fortran tools. Kompiler yang terbaru dari Intel’s akan memiliki fitur baru yang memungkinkan kita untuk meng optimasi kapabilitas thread-level optimization dan auto-vectorization secara simultan dalam modus single pass. “Dari sisi data parallelism, Intel C++ Compiler dan Fortran Professional Editions meningkatkan fitur auto-vectorization yang dapat mengaktifkan feature baru Intel’s yaitu SSE4 extensions. Sedangkan untuk thread-level parallelism, compilers akan mensupport penggunaan Intel’s Thread Building Blocks untuk automatic thread-level optimization akan bekerja secara simultan dengan auto-vectorization

… Intel sedang mencoba untuk menyebarkan dan membiasakan developer untuk menggunakan Intel Threading Tools sebagai interface untuk multicore processor nya. Sehingga dengan keberadaan teknologi yang semakin canggih yang terus di implementasikan oleh Intel akan membuat para programmer akan semakin susah untuk mengatur kompleksitas yang di asosiasikan oleh sistem parallelism. Jadi Thread Building Blocks adalah cara Intel’s untuk memasukan sebuah layer abstraksi antara programmer dan processor shingga kode program akan lebih mudah di atur oleh processor multicore.”


Turbo C++

Dari Wikipedia Indonesia, ensiklopedia bebas berbahasa Indonesia.

Turbo C++ merupakan kompiler C++ dengan IDE yang terintegrasi buatan Borland, terkenal karena kecepatannya dalam kompilasi dan lingking - karena itu diistilahkan dengan "Turbo". Produk ini merupakan bagian dari keluarga kompiler borland yang sangat populer termasuk Turbo Pascal, Turbo Basic, Turbo Prolog, dan Turbo C. Turbo C++ merupakan suksesor dari Turbo C yang merupakan pengembangan lebih lanjut dalam keseragaman tata cara dalam kompiler seperti halnya cara yang terdapat pada Turbo Pascal 5.5 dalam menambahkan fungsionalitas object pada versi-versi Turbo Pascal sebelumnya. Namun tidak seperti halnya Turbo Pascal, Turbo C++ senantiasa mengikuti dan mempertahankan standar-standar yang berlaku pada bahasa C++.

Keistimewaan

Dibandingkan dengan perangkat lunak sejenis pada masa itu, Turbo C++ memiliki beberapa keistimewaan dibandingkan dengan yang lain. Turbo C++ membebaskan programmer dari keharusan menuliskan program yang rumit, sebab berbasis pemrograman berorientasi objek (OOP, Object Oriented Programming). Hal ini memungkinkan program lebih cepat dikembangkan.

Sejarah versi

Rilis pertama dari Turbo C++ pertama kali tersedia pada tahun 1988, saat MS-DOS menguasai personal komputer. Produk ini dibundel dalam versi 1.0, berjalan pada OS/2 dan versi 1.01, berjalan pada MS-DOS. Pada perkembangannya kompiler ini dapat pula digunakan untuk menghasilkan program-program COM dan EXE, dan di paketkan bersama Borland Turbo Assembler untuk prosesor Intel x86.

Turbo C++ 3.0 dirilis pada tahun 1992, dan datang pada saat-saat munculnya rilis Microsoft Windows 3.1. Turbo C++ 3.0 pada mulanya diperkenalkan sebagai kompiler untuk platform MS-DOS yang mendukung template, mampu digunakan untuk menghasilkan kode aplikasi dalam mode terproteksi, dan menghasilkan kode yang ditujukan untuk prosesor-prosesor intel sebelumnya, seperti prosesor Intel 80186.

Setelah Windows 3.1 mulai tersedia, Turbo C++ diperdagangkan dengan dukungan MS-Windows. IDE pertama yang berbasis windows adalah Turbo C++ for Windows, diikuti dengan Turbo C++ 3.1 dan Turbo C++ 4.5. Ada anggapan mungkin saja lompatan versi dari 1.x ke versi 3.x merupakan cara untuk menyelaraskan rilis Turbo C++ dengan versi-versi Microsoft Windows.

Pada akhirnya Turbo C++ digantikan oleh Borland C++ yang lebih lengkap dan kaya akan fitur, namun pada akhirnya menghilangkan fitur yang menjadi kesuksesan jajaran produk Turbo, seperti kecepatan kompilasi dan fasilits dari IDE yang sangat baik.

Turbo C++ v1.01 for DOS saat ini didistribusikan secara gratis oleh Borland, dan bisa didonwload dari website mereka sebagai software antik.

Compiler Construction

OLeh : I MADE WIRYANA

Teknik kompilasi telah lama diberikan di lingkungan pendidikan tinggi bidang komputer di Indonesia. Pembahasan dalam mata kuliah ini biasanya berkisar pada teori automata, teori kompilasi, teori grammar. Praktek teknik kompilasi pun telah diberikan di lingkungan laboratorium, walau biasanya masih terbatas pada demonstrasi hal teori, ataupun sekedar pengenalan kompiler yang ada atau banyak digunakan. Beberapa universitas telah mulai memperkenalkan penggunaan perangkat pembangun kompiler.

Telah banyak mahasiswa menggunakan dan memanfaatkan compiler/interpreter, tapi saat ini masih belum banyak muncul nama programmer Indonesia yang terlibat dalam proyek pembuatan compiler/interpreter. Mungkin hanya KILANG nya Prof. Dali S Naga (BASIC Indonesia), yang sempat terdengar, sayang sekarang sudah tidak ada jejaknya. Mungkin merilis KILANG dalam bentuk GPL seperti BWBASIC, adalah suatu langkah menarik untuk terus mengembangkan KILANG ini lebih lanjut.

Memang ada sekelompok programmer Indonesia yang sempat akan merilis bahasa pemrograman "BATAK" tetapi hingga saat ini belum terdengar kembali. Bahasa pemrograman, JAVA, BALI, MADURA, hanyalah namanya saja yang berbau Indoensia, tapi sedikit atau malah tidak ada keterlibatan pengembang dari Indonesia.

Tentu saja akan timbul pertanyaan "apa yang salah dalam pengajaran kompilasi ???" (INGAT SAYA TIDAK INGIN MENDISKREDITKAN SIAPAPUN DALAM PERNYATAAN INI). Hanya mencoba mencari langkah perbaikan yang mungkin bisa diterapkan.

Walaupun sedikit sekali atau nyaris tidak ada "lowongan pekerjaan" yang membutuhkan kemampuan mengembangkan compiler ini (silahkan baca di koran ataupun majalah), bukan berarti pengetahuan itu sama sekali tak dibutuhkan dalam dunia pemrograman sehari-hari. Pada dasarnya pengetahuan pembuatan kompiler (compiler construction) ini merupakan pengetahuan dasar komputasi yang sangat baik sekali. Pengetahuan ini dimanfaatkan pada beragam aplikasi nantinya. Misal teknik parsing, pengenalan pola teks, optimasi kode dan lain sebagainya. Bahkan suatu database engine pun di bagian "front end" selalu menggunakan parsing ini. Pengetahuan tentang kompilasi akan dapat memberikan landasan bagi programmer untuk menyusun program yang efektif dan efisien.

Ketika seseorang melakukan pemrograman, sebetulnya secara tidak sadar dia akan melakukan proses penambahan suatu bahasa. Misal pembuatan suatu fungsi (ataupun prosedur) pada dasarnya merupakan suatu proses "penambahan kosa-kata" dari bahasa pemrograman tersebut. Dari yang tadinya tidak memiliki fungsi tersebut hingga akhirnya ditambahkan suatu "vocabulary" untuk melakukan suatu fungsi tersebut. Untuk itulah pemahaman penyusunan kompiler merupakan suatu dasar yang utama dalam bidang ilmu komputer.

Visual Basic di Linux Makin Matang

Ditulis Oleh Malikoes Dimas Aji

Jakarta, Selama ini pengembang piranti lunak berbasis Visual Basic (VB) boleh dibilang hanya punya satu pilihan, yaitu membuat aplikasi yang berjalan di lingkungan sistem operasi Windows. Namun berkat proyek Open Source bernama Mono, pengembang VB bakal makin mudah menjangkau Linux.

Proyek Mono telah menghasilkan sebuah compiler untuk menjalankan kode VB, yang ditulis pada Visual Studio, di lingkungan non-Windows. Versi awal compiler tersebut sudah bisa dicoba pada paket Mono versi 1.2.3.

Rencananya sebelum akhir 2007 proyek Mono akan melansir versi lengkap dari compiler untuk Visual Basic. Versi yang ada saat ini dibuat untuk framework.NET 2.0 dan bisa menghasilkan aplikasi untuk berjalan di .NET versi 1.0 dan 2.0.

Dasar dasar C++

Source

Tutorial ini untuk siapa saja, walaupun anda belum pernah melakukan pemrograman, atau jika andapun berpengalaman dalam pemrograman dengan bahasa pemrograman lain tapi ingin mempelajari bahasa C++, ada baiknya anda mengikuti penjelasan disini.

C++ adalah sebuah bahasa pemrograman yang memiliki banyak dialek, seperti bahasa orang yang banyak memiliki dialek. Dalam C++, dialek bukan disebabkan oleh karena si pembicara berasal dari Jepang atau Indonesia, melainkan karena bahasa ini memiliki beberapa kompiler yang berbeda. Ada empat kompiler umum yaitu : C++ Borland, C++ Microsoft Visual, C/386 Watcom, dan DJGPP. Anda dapat mendownload DJGPP atau mungkin saja anda telah memiliki kompiler lain.

Setiap kompiler ini agak berbeda. Setiap kompiler akan dapat menjalankan fungsi fungsi standar C++ ANSI/ISO, tetapi masing masing kompiler juga akan dapat menjalankan fungsi fungsi nonstandard (fungsi fungsi ini, agak mirip dengan ucapan yang tidak standar yang diucapkan orang diberbagai pelosok negeri. Sebagai contoh, di New Orleans kata median disebut neutral ground). Kadang kadang pemakaian fungsi nonstandard akan menimbulkan masalah pada saat anda hendak mengkompilasi kode sumber data (source code) (yaitu program berbahasa C++ yang ditulis oleh seorang programer) mempergunakan kompiler yang berbeda. Tutorial ini tidak terlepas dari masalah seperti itu.

Bila anda belum mempunyai sebuah kompiler, disarankan agar anda segera memiliki sebuah kompiler. Sebuah kompiler sederhana sudah cukup untuk dipergunakan oleh anda dalam mengikuti tutorial ini.

Bahasa pemrograman C++ adalah bahasa yang amat berbeda. Untuk kompiler C++ berbasis DOS, akan memerlukan beberapa kata kunci (keywords); keyword sendiri tidak cukup untuk difungsikan sebagai input dan output. Walau hampir semua fungsi dalam file library tampaknya bias diakses oleh header filenya. Coba kita lihat program sesungguhnya :

#include
int main()
{
cout<<”HEY, you, I’m alive! Oh, and Hello World!”;
return 0;
}
Marilah kita lihat elemen dari program diatas. Tanda #include adalah sebuah prosesor pengarah yang mengatakan kepada kompiler untukmeletakan kode dari header file iostream.h kedalam program. Dengan menyertakan header file, anda dapat mengakses banyak fungsi fungsi berbeda. Dalam contoh diatas, fungsi cout memerlukan file iostream.h.

Pada baris berikutnya yang penting adalah int main(). Baris ini mengatakan kepada kompiler bahwa ada sebuah fungsi bernama main, yang mana fungsi itu mengembalikan sebuah integer, sehingga diberi tanda int. Tanda kurung ({ dan }) menandakan awal dan akhir fungsi dalam program diatas dan menghentikan kode lainnya. Jika anda memakai bahasa Pascal, anda akan mempergunakan perintah BEGIN dan END.

Baris berikutnya dari program diatas agak aneh. Jika anda menulis sebuah program mempergunakan bahasa lain, anda akan mengetahui bahwa perintah print akan menampilkan text di layar monitor. Dalam bahasa C++ tidaklah demikian, pemakaian fungsi cout dipakai untuk menampilkan text di layar monitor anda. Itu juga memakai tanda atau symbol <;<; , yang diketahui sebagai operator pemasukan ( insertion operators). Tanda tersebut mengatakan kepada kompiler agar segera menghasilkan output sesuai dengan input anda. Tanda semicolon ditambahkan kedalam bagian akhir dari semua fungsi yang dipanggil dalam bahasa C++; tanda seterusnya memperlihatkan variable yang anda deklarasikan.

Pada baris itu juga ada kode yang memerintahkan fungsi main kembali ke 0. Pada saat satu kali kembali diproses, itu dilakukan melalui system operasi. Sebagai catatan, pendeklarasian fungsi main yang tidak diinginkan memiliki proses kembali, dapa ditambahkan - void main() - dan biasanya itu berfungsi dengan baik; namun cara ini merupakan cara yang kurang baik.

Tanda kurung terakhir berperan sebagai penutup agar fungsi dihentikan. Anda bias mencobamengoperasikan fungsi ini didalam sebuah kompiler. Anda dapat melakukan cut dan paste kode diatas kedalam sebuah file, dan menyimpannya sebagai file.cpp, dan kemudian anda buka file itu dari dalam kompiler anda. Jika anda memakai baris perintah kompiler seperti yang ada dalam Borland C++ 5.5, sebaiknya anda membaca dahulu instruksi kompiler tentang bagaimana cara melakukan kompilasi (how to compile).

Comment atau komentar sering dipakai dalam penulisan program. Ketika anda mengatakan kepada kompiler bahwa sebuah bagian dari program anda adalah tex komentar, kompiler tidak akan memasukan itu sebagai perintah pemrograman. Untuk membua sebuah komentar dipergunakan tanda //, yang mengaakan kepada kompiler bahwa baris berikut adalah komentar, atau memakai tanda /* dan kemudian diakhiri tanda */ untuk menandai bahwa segala yang ada antara kedua tanda ini adalah komentar. Beberapa kompiler akan mengubah warna area komentar, tetapi beberapa kompiler lain tidak. Berhati hatilah dalam menulis program anda agar kode program anda tidak dianggap sebagai komentar oleh kompiler karena dapat mempengaruhi output program yang anda buat.

Selanjutnya anda harus dapa menuliskan program sederhana untuk menampilkan informasi yang anda ketikan kedalamnya. Selain itu, program juga bisa dibuat untuk menerima input. Fungsi yang dipakai adalah cin, dan diikuti dengan tanda >>.

Tentu saja sebelum anda mencoba menerima input, anda harus memiliki tempat penyimpan input. Dalam pemrograman, input dan data disimpan dalam variable. Ada beberapa jenis variable. Pada saat anda ingin mengatakan kepada kompiler sebuah variable yang anda deklarasikan, anda harus menyertakan tipe data dan nama dari variable itu. Beberapa cara dasar adalah dengan menuliskan include char, int, dan float.

Sebuah variabel char menyimpan sebuah karakter tunggal; variabel int akan menyimpan integer (bukan bilangan desimal), dan variables float akan menyimpan bilangan desimal. Setiap variable - char, int, dan float - merupakan sebuah kata kunci (keyword) yang and pergunakan pada saat anda mendeklarasikan sebuah variabel. Untuk mendeklarasikan sebuah variable anda memakai syntax type . Ini diijinkan untuk mendeklarasikan variable multiple dari jenis variable yang sama pada baris yang sama; masing masing variabelnya dipisahkan dengan tanda koma. Deklarasi sebuah variable atau sekelompok variabel dapat diikuti tanda semicolon (Catatan, tanda ini sama dengan yang diterapkan pada prosedur dimana anda akan memanggil sebuah fungsi).

Jika anda tidak memakai sebuah variable yang dideklarasikan sebelumnya. program anda tidak akan dapat dioperasikan (atau di run), dan anda akan menerima pesan error yang memberitahu anda bahwa anda telah melakukan kesalahan.

Berikut adalah beberapa contoh deklarasi variable:

int x;
int a, b, c, d;
char letter;
float the_float;
Walaupun anda boleh memiliki banyak variable dengan jenis yang sama, anda tidak dapat memiliki variable dengan nama yang sama. Begitu pula anda tidak dapat memiliki variable dan fungsi dengan nama yang sama.

#include <>
int
main()
{
int thisisanumber;
cout<<”Please enter a number:”;
cin>>thisisanumber;
cout<<”You entered: “<
Kelebihan Bahasa C++

Dibandingkan dengan bahasa pemrograman lain, C++ mempunyai beberapa kelebihan.
Beberapa kelebihan bahasa C++ antara lain adalah

1. Bahasa C++ tersedia hampir di semua jenis komputer.
2. Kode bahasa C++ dengan portabilitas dan fleksibilitas yang tinggi untuk semua jenis komputer.
3. Bahasa C++ hanya menyediakan sedikit kata-kata kunci (hanya terdapat 48 kata kunci).
4. Proses eksekusi program bahasa C++ lebih cepat. Dengan demikian, aplikasi yang dibuat dengan bahasa C++ akan menjadi aplikasi yang efisien dan kompetitif.
5. Dukungan pustaka fungsi dan kelas yang banyak sehingga memungkinkan pembuatan aplikasi makro.
6. C++ adalah bahasa yang terstruktur, dengan demikian akan lebih mendukung OOP.
7. Bahasa C++ termasuk bahasa tingkat menengah dan lebih dekat dengan bahasa mesin.
8. Kode program bersifat reuseable, sehingga dapat digunakan kembali pada project lain dengan hanya menggunakan library dan file header.
9. C++ dapat membuat aplikasi graphic processor berkualitas tinggi.

Minggu, 07 Oktober 2007

Sejarah Perkembangan Komputer Grafik

•Awal tahun 60-an dimulainya model animasi dengan menampilkan simulasi efek fisik

.•1961: Edward Zajac menyajikan suatu model simulasi satelit dengan menggunakanteknologi Grafik Komputer

•1963 : -ditermukan Sutherland (MIT) -Sketchpad (manipulasi langsung, CAD)-Alat untuk menampilkan Calligraphic (vector)-Mouse oleh Douglas Englebert

•1968 : ditemukan Evans & Sutherland.

•1969 : Journal SIGGRAPH pertama kali diterbitkan

•1970: Pierre B´eezier mengembangkan kurva B´eezier.

•1971: ditemukan Gouraud Shading,

•1972: ditayangkannya filmWestworld, sebagai film pertama yang menggunakan animasi komputer

.•1974: Ed Catmull mengembangkan z-buffer (Utah). Komputer animasi pendek,

Hunger:Keyframe animation and morphing

•1976: Jim Blinn mengembangkan texture dan bump mapping.

•1977: Film terkenal Star Wars menggunakan grafik komputer

•1979: Turner Whitted mengembangkan algoritma ray tracing,untuk pesawat Death Star.

•Pertengahan tahun 70-an hingga 80-an: Pengembangan Quest for realism radiosity sebagai main-stream aplikasi realtime.

•1982: Pengembangan teknologi grafik komputer untuk menampilkan partikel.

•1984: Grafik Komputer digunakan untuk menggantikan model fisik pada film The Last Star Fighter

.•1986: Pertama kalinya Film hasil produksi grafik komputer dijadikan sebagai nominasidalam Academy Award: Luxo Jr. (Pixar).

•1989: Film Tin Toy (Pixar) memenangkan Academy Award.

•1995: Diproduksi fillm Toy Story (Pixar dan Disney) sebagai film3D animasi panjang pertama

•Akhir tahun 90-an, ditemukannya teknologi visualisasi interaktif untuk ilmu pengetahuan dan kedokteran, artistic rendering, image based rendering, path tracing, photon maps, dll

.•Tahun 2000 ditemukannya teknologi perangkat keras untuk real-time photorealistic rendering

Animasi

Animasi, atau lebih akrab disebut dengan film animasi, adalah film yang merupakan hasil dari pengolahan gambar tangan sehingga menjadi gambar yang bergerak. Pada awal penemuannya, film animasi dibuat dari berlembar-lembar kertas gambar yang kemudian di-"putar" sehingga muncul efek gambar bergerak. Dengan bantuan komputer dan grafika komputer, pembuatan film animasi menjadi sangat mudah dan cepat. Bahkan akhir-akhir ini lebih banyak bermunculan film animasi 3 dimensi daripada film animasi 2 dimensi. Wayang kulit merupakan salah satu bentuk animasi tertua di dunia. Bahkan ketika teknologi elektronik dan komputer belum diketemukan, pertunjukan wayang kulit telah memenuhi semua elemen animasi seperti layar, gambar bergerak, dialog dan ilustrasi musik.

Grafika komputer 3D

Grafika komputer 3D (Inggris: 3D Computer graphics) adalah representasi dari data geometrik 3 dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer 2D. Hasil ini kadang kala ditampilkan secara waktu nyata (real time) untuk keperluan simulasi. Secara umum prinsip yang dipakai adalah mirip dengan grafika komputer 2D, dalam hal: penggunaan algoritma, grafika vektor, model frame kawat (wire frame model), dan grafika rasternya.
Grafika komputer 3D sering disebut sebagai model 3D. Namun, model 3D ini lebih menekankan pada representasi matematis untuk objek 3 dimensi. Data matematis ini belum bisa dikatakan sebagai gambar grafis hingga saat ditampilkan secara visual pada layar komputer atau printer. Proses penampilan suatu model matematis ke bentuk citra 2 D biasanya dikenal dengan proses 3D

Visualisasi

Visualisasi (Inggris: visualization) adalah rekayasa dalam pembuatan gambar, diagram atau animasi untuk penampilan suatu informasi. Secara umum, visualisasi dalam bentuk gambar baik yang bersifat abstrak maupun nyata telah dikenal sejak awal dari peradaban manusia. Contoh dari hal ini meliputi lukisan di dinding-dinding gua dari manusia purba, bentuk huruf hiroglip Mesir, sistem geometri Yunani, dan teknik pelukisan dari Leonardo da Vinci untuk tujuan rekayasa dan ilmiah, dll. Pada saat ini visualisasi telah berkembang dan banyak dipakai untuk keperluan ilmu pengetahuan, rekayasa, visualisasi disain produk, pendidikan, multimedia interaktif, kedokteran, dll. Pemakaian dari grafika komputer merupakan perkembangan penting dalam dunia visualisasi, setelah ditemukannya teknik garis perspektif pada zaman Renaissance. Perkembangan bidang animasi juga telah membantu banyak dalam bidang visualisasi yang lebih kompleks dan canggih.

Grafika komputer



Hasil Rendering

Grafika komputer (Inggris: Computer graphics) adalah bagian dari ilmu komputer yang berkaitan dengan pembuatan dan manipulasi gambar (visual) secara digital. Bentuk sederhana dari grafika komputer adalah grafika komputer 2D yang kemudian berkembang menjadi grafika komputer 3D, pemrosesan citra (image processing), dan pengenalan pola (pattern recognition). Grafika komputer sering dikenal juga dengan istilah visualisasi data.

Bagian dari grafika komputer meliputi:

Geometri: mempelajari cara menggambarkan permukaan bidang
Animasi: mempelajari cara menggambarkan dan memanipulasi gerakan
Rendering: mempelajari algoritma untuk menampilkan efek cahaya
Citra (Imaging): mempelajari cara pengambilan dan penyuntingan gambar.