RUANG LINGKUP INFORMATIKA
Mei 28, 2021
RUANG LINGKUP INFORMATIKA
1. Program Komputer dan Model Komputasi
A. Program komputer atau sering kali disingkat sebagai program adalah serangkaian instruksi yang ditulis untuk melakukan suatu fungsi spesifik pada komputer.[1] Komputer pada dasarnya membutuhkan keberadaan program agar bisa menjalankan fungsinya sebagai komputer, biasanya hal ini dilakukan dengan cara mengeksekusi serangkaian instruksi program tersebut pada prosesor.[2] Sebuah program biasanya memiliki suatu bentuk model pengeksekusian tertentu agar dapat secara langsung dieksekusi oleh komputer. Program yang sama dalam format kode yang dapat dibaca oleh manusia disebut sebagai kode sumber, bentuk program yang memungkinkan programmer menganalisis serta melakukan penelaahan algoritme yang digunakan pada program tersebut. Kode sumber tersebut pada akhirnya dikompilasi oleh utilitas bahasa pemrograman tertentu sehingga membentuk sebuah program. bentuk alternatif lain model pengeksekusian sebuah program adalah dengan menggunakan bantuan interpreter, kode sumber tersebut langsung dijalankan oleh utilitas interpreter suatu bahasa pemrograman yang digunakan.
Beberapa program komputer dapat dijalankan pada sebuah komputer pada saat bersamaan, kemampuan komputer untuk menjalankan beberapa program pada saat bersamaan disebut sebagai multitasking. Program komputer dapat dikategorikan menurut fungsinya; perangkat lunak sistem atau perangkat lunak aplikasi.
Pemrograman komputer merupakan suatu proses iteratif penulisan dan penyuntingan kode sumber sehingga membentuk sebuah program. Penyuntingan kode sumber meliputi proses pengetesan, analisis, pembetulan kesalahan, pengoptimasian algoritme, normalisasi kode, dan kadang-kadang pengkoordinasian antara satu programmer dengan programmer lainnya jika sebuah program dikerjakan oleh beberapa orang dalam sebuah tim. Seorang praktisi yang memiliki keahlian untuk melakukan penulisan kode dalam bahasa pemrograman disebut sebagai programmer komputer atau programmer, pengembang perangkat lunak, atau koder. Istilah rekayasa perangkat lunak (bahasa Inggris: Software engineering) sering kali digunakan karena proses penulisan program tersebut dipandang sebagai suatu disiplin ilmu perekayasaan.
Paradigma Sunting
Program komputer dapat dikategorikan menurut paradigma bahasa pemrograman yang digunakannya. Dua paradigma utama yang umum digunakan adalah imperatif dan deklaratif.
Program yang ditulis dalam bahasa pemrograman imperatif biasanya memiliki algoritme yang ditulis dalam serangkaian klausal pendeklarasian, ekspresi aritmatis, dan sejumlah perintah.[3] Pendeklarasian meliputi pendeklarasian variabel serta tipe data atas variabel tersebut, contoh: var x: integer; Penggunaan ekpresi operasi aritmatis yang menghasilkan nilai, contoh: 2 + 2 menghasilkan nilai 4. Dan perintah yang melingkupi pendelegasian nilai atas hasil dari operasi aritmatis tersebut ke dalam sebuah variabel, contoh: x:= 2 + 2; if x = 4 then lakukan_sesuatu(); Salah satu bentuk kritik atas implementasi imperatif ini adalah efek samping yang timbul atas pendelegasian perintah terhadap variabel yang berada di luar cakupan dari fungsi tersebut atau lebih dikenal sebagai non-local variable.[4]
Program yang ditulis dengan bahasa deklaratif meliputi sejumlah properti yang harus dipenuhi untuk mendapatkan suatu bentuk hasil tertentu. Properti tersebut tidak mencerminkan suatu gambaran atas proses kerja suatu program namun merupakan suatu bentuk deklarasi relasional matematis atas sejumlah objek melaui properti-propertinya. Dua bagian utama atas pemrograman deklaratif adalah bahasa pemrograman fungsional dan bahasa pemrograman logikal. Prinsip dasar dibalik bahasa pemrograman fungsional (Haskell) adalah mencegah timbulnya efek samping seperti yang terdapat pada model pemrograman imperatif sehingga membuatnya lebih mudah untuk digunakan membuat program yang melakukan sejumlah operasi matematis.[4] Sementara itu, prinsip dari sebuah bahasa pemrograman logikal (Prolog) adalah mendefinisikan permasalahan yang hendak diselesaikan, tujuan yang hendak dicapai, dan membiarkan sistem melakukan analisis atas detail solusi terhadap permasalahan tersebut.[5] Tujuan utama atas sebuah program didefinisikan dengan cara membuat sejumlah tujuan-tujuan yang lebih kecil, kemudian pada tiap-tiap tujuan tersebut secara lebih lanjut didefinisikan tujuan-tujuan lain yang lebih kecil lagi, dan begitu seterusnya. Jika suatu arahan tujuan yang didefinisikan gagal digunakan untuk menemukan solusi atas suatu permasalahan, maka arahan tujuan anakan yang lebih kecil akan di telusuri ulang, dan arahan lainnya akan diujicobakan.
Bentuk dari cara sebuah program dibuat bisa berupa tekstual ataupun visual. Dalam pemrograman visual, elemen-elemen program biasanya dimanipulasi secara grafis, sementara bila dibuat secara tekstual artinya sebuah program ditulis secara manual.
Kompilasi atau interpretasi Sunting
Program komputer dalam bentuk yang dapat dibaca oleh manusia biasanya disebuat sebagai kode sumber. Kode sumber dapat dikonversikan menjadi bentuk berkas yang dapat dieksekusi secara langsung oleh komputer. Proses pengkonversian ini disebut sebagai proses kompilasi dan biasanya dilakukan sebuah program utilitas dari bahasa pemrograman yang digunakan yang disebut sebagai kompiler. Pada beberapa bahasa pemrograman tertentu, kode sumber dapat langsung dieksekusi sebagai sebuah program dengan menggunakan bantuan utilitas yang disebut sebagai interpreter.
Baik melalui proses kompilasi ataupun interpretatif, eksekusi program dapat dilakukan dalam sebuah proses batch tanpa membutuhkan interaksi dengan manusia, namun program interpretatif memungkinkan pengguna untuk menulis perintah dalam suatu sesi interaktif. Pada kasus ini sebuah program dieksekusi sebagai sebuah perintah, yang kemudian dieksekusi baik secara serial ataupun paralel. Bahasa pemrograman yang menyediakan fitur interaktif seperti ini dinamakan sebagai bahasa skrip.
Kompiler digunakan untuk menerjemahkan kode sumber dari suatu bahasa pemrograman menjadi kode objek ataupun kode mesin. Kode objek biasanya membutuhkan proses lebih lanjut sehingga dapat menjadi kode mesin, dan kode mesin merupakan instruksi-instruksi yang dikenali dan dapat secara langsung dieksekusi oleh prosesor. Program komputer yang telah terkompilasi biasanya disebut sebagai berkas eksekutabel, ataupun berkas biner; yang merujuk pada bentuk sistem biner yang digunakan untuk menyimpan kode mesin tersebut.
Program komputer yang diinterpretasikan -baik secara batch ataupun dalam modus interaktif- biasanya akan diterjemahkan terlebih dulu ke dalam sejumlah token baru kemudian dieksekusi, atau bisa juga token-token tersebut dioptimasi lebih lanjut sehingga menjadi sejumlah instruksi yang memiliki tingkat efisiensi yang lebih baik dan disimpan sebagai berkas P-Code terpisah untuk dieksekusi kemudian oleh interpreter. BASIC, Perl, dan Python merupakan beberapa contoh dari bahasa pemrograman yang menyediakan fasilitas penerjemahaan langsung. Alternatif lainnya, program komputer yang ditulis dalam bahasa pemrograman Java merupakan hasil kompilasi kode sumber ke dalam bytcode yang kemudian dieksekusi oleh interpreter yang disebut sebagai mesin virtual java.
Kerugian utama pemanfaatan interpreter adalah unjuk kerja program biasanya lebih lambat dibandingkan dengan program yang dikompilasi terlebih dulu. Namun keuntungannya proses pengembangan perangkat lunak biasanya bisa dilakukan lebih cepat karena proses pengetesan atas berjalannya program dapat dilakukan dalam waktu yang relatif singkat. Tanpa memerlukan tahapan-tahapan kompilasi sebelumnya. Kerugian lainnya adalah, untuk dapat menjalankan program tersebut, utilitas interpreter harus disertakan dalam setiap pendistribusian, berbeda halnya dengan program terkompilasi yang dapat didistribusikan tanpa menyertakan kompiler bahasa yang digunakan karena sifatnya yang sudah dalam bentuk kode mesin.
Umumnya saat ini bahasa-bahasa pemrograman interpretatif telah dilengkapi pula dengan kompiler JIT (Just in Time) yang akan menganalisis serta menerjemahkan instruksi-instruksi yang paling sering digunakan ke dalam bahasa mesin pada saat program dijalankan sehingga tingkat unjuk kerjanya dapat ditingkatkan mengimbangi unjuk kerja program yang terkompilasi.
Eksekusi dan penyimpanan Sunting
Sebuah program komputer biasanya akan disimpan terlebih dahulu dalam memori utama (RAM) komputer sebelum dijalankan yang biasanya dilakukan oleh sistem operasi. Prosesor kemudian akan mengeksekusi program tersebut, instruksi demi instruksi sampai program tersebut diterminasi. Sebuah program yang tengah dieksekusi oleh prosesor dinamakan sebagai proses.[6] Terminasi ataupun penghentian eksekusi sebuah program biasanya terjadi baik karena permintaan dari pengguna, interupsi pengguna, kesalahan atas program itu sendiri, ataupun kesalahan atas perangkat keras yang digunakan.
Eksekusi simultan Sunting
Umumnya sistem operasi yang ada saat ini sudah mendukung pemanfaatan multitasking yang memungkinkan beberapa program komputer dijalankan pada saat yang bersamaan di sebuah komputer. Untuk dapat menjalankan beberapa program tersebut pada saat yang bersamaan, sistem operasi memanfaatkan mekanisme penjadualan proses yang merupakan suatu mekanisme yang akan mengatur pengalihan prosesor dalam melakukan pemrosesan sehingga beberapa program komputer tersebut dapat berinteraksi dengan pengguna saat dijalankan.[10] Di sisi perangkat keras yang digunakan, prosesor modern saat ini umumnya telah mendukung beberapa core prosesor yang dipancangkan sebagai sebuah prosesor yang memungkinkannya menjalankan beberapa program sekaligus.[11]
Sebuah program komputer dapat melakukan kalkulasi secara simultan pada beberapa jenis operasi di saat yang bersamaan dengan memanfaatkan thread atau sebagai proses terpisah. Umumnya prosesor yang ada saat ini sudah mendukung arsitektur multithreading yang teroptimasi untuk menjalankan beberapa thread secara efisien.
B. model komputasi adalah model yang menggambarkan bagaimana keluaran dari fungsi matematika dihitung dengan memberikan masukan. Model menggambarkan bagaimana unit komputasi, memori, dan komunikasi diatur. [1] The kompleksitas komputasi dari sebuah algoritma dapat diukur diberikan model komputasi. Menggunakan model memungkinkan mempelajari kinerja algoritme secara independen dari variasi yang khusus untuk implementasi tertentu dan teknologi tertentu.
Model Sunting
Model komputasi dapat diklasifikasikan menjadi tiga kategori: model sekuensial, model fungsional, dan model konkuren.
Model sekuensial meliputi:
Mesin negara hingga
Automata pushdown
Mesin akses acak
Mesin turing
Model fungsional meliputi:
Kalkulus Lambda
Fungsi rekursif umum
Logika kombinasi
Sistem penulisan ulang abstrak
Model konkuren meliputi:
Otomat seluler
gerbang logika dan sirkuit digital
Jaringan proses Kahn
Jaring petri
Aliran Data Sinkron
Jaring interaksi
Model aktor
Model berbeda dalam kekuatan ekspresifnya; misalnya, setiap fungsi yang dapat dihitung oleh mesin keadaan Hingga juga dapat dihitung oleh mesin Turing , tetapi tidak sebaliknya.
Sebuah model yang non-deterministik perhitungan dikaitkan dengan beberapa model komputasi. Model nondeterministik tidak berguna untuk komputasi praktis; mereka digunakan dalam studi kompleksitas komputasi algoritma.
Kegunaan Sunting
Dalam bidang analisis runtime dari algoritme , adalah umum untuk menentukan model komputasi dalam hal operasi primitif yang diperbolehkan yang memiliki biaya unit, atau hanya operasi biaya unit . Contoh yang umum digunakan adalah mesin akses acak , yang memiliki biaya satuan untuk akses baca dan tulis ke semua sel memorinya. Dalam hal ini, ini berbeda dari model mesin Turing yang disebutkan di atas.
Kategori Sunting
Ada banyak model penghitungan, berbeda dalam rangkaian operasi yang dapat diterima dan biaya penghitungannya. Mereka termasuk dalam kategori luas berikut:
Mesin abstrak dan model yang setara dengannya (misalnya kalkulus lambda setara dengan mesin Turing ) - digunakan dalam bukti komputasi dan batas atas kompleksitas komputasi algoritme.
Model pohon keputusan - digunakan sebagai bukti batas bawah pada kompleksitas komputasi masalah algoritmik.
3. Perbaikan Model Komputasi
Teori komputasi adalah cabang ilmu komputer dan matematika yang membahas apakah dan bagaimanakah suatu masalah dapat dipecahkan pada model komputasi, menggunakan algoritma. Bidang ini dibagi menjadi dua cabang: teori komputabilitas dan teori kompleksitas, namun keduacabang berurusan dengan model formal komputasi. Model komputasi adalah suatu kumpulan dari nilai dan operasi - operasi.
Ada tiga model dasar komputasional-- fungsional, logika, dan imperatif. Sebagai tambahan terhadap satuan nilai-nilai dan operasi yang berhubungan, masing-masing model komputasional mempunyai satu set operasi yang digunakan untuk menggambarkan komputasi
a. Model Fungsional : terdiri dari satu set nilai-nilai, fungsi-fungsi dan operasi aplikasi fungsi dan komposisi fungsi. Fungsi dapat mengambil fungsi lain sebagai argumentasi dan mengembalikan fungsi sebagai hasil (higher-order function). Suatu program adalah koleksi definisi fungsi-fungsi dan suatu komputasi adalah aplikasi fungsi.
b. Model Logika : terdiri dari satu set nilai-nilai, definisi hubungan dan kesimpulan logis. Program terdiri dari definisi hubungan dan suatu komputasi adalah suatu bukti(suatu urutan kesimpulan).
c. Model Imperatif : terdiri dari satu set nilai-nilai yang mencakup suatu keadaan dan operasi tugas untuk memodifikasi pernyataan. Pernyataan adalah set pasangan nilai-nama dari konstanta dan variabel. Program terdiri dari urutan tugas dan suatu komputasi terdiri dari urutan pernyataan.
3. Pengalaman Berpikir Komputasional
Berpikir komputasional dibangun dengan dasar dan batasan proses komputasi, entah proses tersebut dieksekusi oleh manusia atau mesin. Metode dan model komputasional memberikan kemampuan bagi kita untuk memecahkan masalah dan mendesain/ merangkai sistem yang tidak bisa kita tangani sendiri. Berpikir komputasional adalah kemampuan dasar untuk setiap orang, bukan hanya bagi orang-orang yang berkutat dalam studi komputer-sains. Berpikir komputasional mencakup pemecahan masalah, mendesain sistem, dan memahami perilaku manusia, dengan menggambar konsep berdasarkan komputer sains. Berpikir komputasional meliputi batasan kemampuan mental yang merefleksikan betapa luasnya cakupan komputer-sains. Komputer sains adalah studi komputasi-mengenai apa yang dapat dikomputasikan dan bagaimana mengkomputasikan. Berpikir komputasional memiliki karakteristik sebagai berikut:
Berdasarkan konsep, bukan pemrograman. Komputer sains bukan sekedar pemrogaman komputer. Berpikir seperti orang yang ahli dalam computer-sains berarti lebih dari sekedar pemrogaman komputer. Dibutuhkan berpikir pada beberapa tingkat abstraksi.
Mendasar, bukan menghafal. Kemampuan dasar yaitu kemampuan yang harus dimiliki setiap orang dizaman sekarang. Menghafal berarti rutinitas mekanikal.
Cara manusia berpikir, bukan cara komputer berpikir. Berpikir komputasional adalah cara orang untuk memecahkan masalah; berikir komputasional tidak membuat orang mencoba berpikir seperti komputer. Manusia itu cerdas dan imajinatif. Komputer seharusnya dikendalikan oleh manusia, untuk menemukan suatu pemecahan masalah, bukan sebaliknya.
Saling melengkapi dan mengkombinasikan antara pemikiran matematis dan pemikiran teknik. Komputer sains erat kaitannya dengan berpikir matematis, sama seperti ilmu sains lainnya yang didasari oleh matematika.
Merupakan ide, bukan benda. Bukan sekedar software atau hardware yang secara fisik ada dikehidupan kita, namun lebih pada konsep-konsep komputasional yang kita gunakan untuk mendekati dan memecahkan masalah, mengatur kehidupan sehari-hari kita, komunikasi dan interaksi dengan orang lain.
Untuk setiap orang, disetiap tempat. Pemikiran komputasional akan menjadi nyata ketika ia begitu integral dalam usaha manusia, dan berubah menjadi suatu filosofi yang eksplisit.
Secara intelektual menantang dan mengharuskan masalah saintifik dapat dipahami dan diselesaikan. Domain masalah dan domain solusi hanya terbatas pada rasa ingin tahu dan kreativitas kita sendiri.
Orang yang memiliki kemampuan komputasional dapat menguasai komputer sains dan melakukan apa saja. Orang yang memiliki kemampuan komputasional dapat menguasai komputer sains dan meneruskan karirnya dibidang kesehatan, hukum, bisnis, politik, dan semua jenis teknik sains, atau bahkan seni.
Tidak ada komentar:
Posting Komentar