FazBrowse Wikipedia Viewer | Main Page |
Search Wikipedia:
|
Viewing: https://id.wikipedia.org/wiki/Program_komputer

Program komputer

Contents
        Fortran
        COBOL
        Algol
        Basic
        C
    Pemrograman berorientasi objek
    Sintaks dan semantik
Rekayasa perangkat lunak dan pemrograman komputer
    Tujuan kinerja
    Tujuan biaya
    Model air terjun
    Pemrogram komputer
    Modul program
    Kohesi
    Kopling
    Analisis aliran data
Kategori fungsional
    Perangkat lunak aplikasi
Catatan

Kode sumber untuk program komputer yang ditulis dalam bahasa JavaScript. Program ini mendemonstrasikan metode appendChild(). Metode tersebut menambahkan simpul anak baru ke simpul induk yang sudah ada. Metode ini umum digunakan untuk memodifikasi struktur dokumen HTML secara dinamis.

Program komputer adalah urutan atau sekumpulan instruksi dalam suatu bahasa pemrograman yang harus dijalankan oleh komputer. Program komputer merupakan salah satu komponen perangkat lunak, yang juga mencakup dokumentasi dan komponen tak berwujud lainnya.

Program komputer dalam bentuk yang dapat dibaca manusia disebut kode sumber. Kode sumber memerlukan program komputer lain untuk menjalankannya karena komputer hanya dapat menjalankan instruksi mesin aslinya. Oleh karena itu, kode sumber dapat diterjemahkan menjadi instruksi mesin menggunakan kompilator yang ditulis untuk bahasa tersebut. (Program dalam bahasa rakitan diterjemahkan menggunakan assembler.) Berkas yang dihasilkan disebut berkas dapat dieksekusi. Sebagai alternatif, kode sumber dapat dijalankan di dalam interpreter yang ditulis untuk bahasa tersebut.

Jika berkas dapat dieksekusi diminta untuk dijalankan, sistem operasi memuatnya ke dalam memori dan memulai sebuah proses. Unit pemrosesan pusat kemudian akan segera beralih ke proses tersebut sehingga dapat mengambil, mendekode, lalu menjalankan setiap instruksi mesin.

Jika kode sumber diminta untuk dijalankan, sistem operasi memuat interpreter yang sesuai ke dalam memori dan memulai sebuah proses. Interpreter kemudian memuat kode sumber ke dalam memori untuk menerjemahkan dan menjalankan setiap pernyataan. Menjalankan kode sumber lebih lambat daripada menjalankan berkas dapat dieksekusi. Selain itu, interpreter harus terpasang pada komputer.

Program komputer yang ditulis dalam bahasa imperatif

Bahasa imperatif menentukan algoritma berurutan menggunakan deklarasi, ekspresi, dan pernyataan:

Fortran

suntingsunting sumber

FORTRAN (1958) diperkenalkan sebagai "The IBM Mathematical FORmula TRANslating system". Bahasa ini dirancang untuk perhitungan ilmiah, tanpa fasilitas penanganan string. Selain deklarasi, ekspresi, dan pernyataan, bahasa ini mendukung:

Bahasa ini berhasil karena:

Namun, vendor non-IBM juga menulis kompilator Fortran, tetapi dengan sintaks yang kemungkinan gagal dikompilasi oleh kompilator IBM. American National Standards Institute (ANSI) mengembangkan standar Fortran pertama pada 1966. Pada 1978, Fortran 77 menjadi standar hingga 1991. Fortran 90 mendukung:

COBOL

suntingsunting sumber

COBOL (1959) merupakan singkatan dari "COmmon Business Oriented Language". Fortran memanipulasi simbol. Segera disadari bahwa simbol tidak harus berupa angka, sehingga string diperkenalkan. Departemen Pertahanan Amerika Serikat memengaruhi pengembangan COBOL, dengan Grace Hopper sebagai salah satu kontributor utama. Pernyataannya menyerupai bahasa Inggris dan bersifat panjang. Tujuannya adalah merancang bahasa agar manajer dapat membaca program. Namun, kurangnya pernyataan terstruktur menghambat tujuan tersebut.

Pengembangan COBOL dikendalikan secara ketat, sehingga tidak muncul dialek-dialek yang memerlukan standar ANSI. Akibatnya, COBOL tidak mengalami perubahan selama 15 tahun hingga 1974. Versi tahun 1990-an memang membuat perubahan penting, seperti pemrograman berorientasi objek.

Algol

suntingsunting sumber

ALGOL (1960) merupakan singkatan dari "ALGOrithmic Language". Bahasa ini memiliki pengaruh besar terhadap desain bahasa pemrograman. Dikembangkan oleh komite ahli bahasa pemrograman dari Eropa dan Amerika, bahasa ini menggunakan notasi matematika standar serta memiliki desain yang mudah dibaca dan terstruktur. Algol merupakan bahasa pertama yang mendefinisikan sintaksnya menggunakan bentuk Backus–Naur. Hal ini menghasilkan kompilator terarah sintaks. Bahasa ini menambahkan fitur seperti:

Keturunan langsung Algol mencakup Pascal, Modula-2, Ada, Delphi dan Oberon pada satu cabang. Pada cabang lainnya, keturunannya mencakup C, C++ dan Java.

Basic

suntingsunting sumber

BASIC (1964) merupakan singkatan dari "Beginner's All-Purpose Symbolic Instruction Code". Bahasa ini dikembangkan di Dartmouth College agar semua mahasiswanya dapat mempelajarinya. Jika seorang mahasiswa tidak melanjutkan ke bahasa yang lebih kuat, ia tetap akan mengingat Basic. Sebuah interpreter Basic dipasang pada komputer mikro yang diproduksi pada akhir 1970-an. Seiring pertumbuhan industri komputer mikro, bahasa tersebut juga berkembang.

Basic memelopori sesi interaktif. Bahasa ini menyediakan perintah sistem operasi di dalam lingkungannya:

Namun, sintaks Basic terlalu sederhana untuk program berukuran besar. Dialek-dialek terbaru menambahkan struktur dan ekstensi berorientasi objek. Microsoft Visual Basic masih banyak digunakan dan menghasilkan antarmuka pengguna grafis.

C

suntingsunting sumber

Bahasa pemrograman C (1973) mendapatkan namanya karena bahasa BCPL digantikan oleh B, dan AT&T Bell Labs menyebut versi berikutnya "C". Tujuannya adalah menulis UNIX sistem operasi. C merupakan bahasa yang relatif kecil sehingga memudahkan penulisan kompilator. Pertumbuhannya mengikuti perkembangan perangkat keras pada 1980-an. Pertumbuhannya juga disebabkan oleh fasilitas yang dimilikinya dari bahasa rakitan, tetapi menggunakan sintaks tingkat tinggi. Bahasa ini menambahkan fitur-fitur tingkat lanjut seperti:

Peta memori komputer

C memungkinkan pemrogram mengendalikan wilayah memori tempat data disimpan. Variabel global dan variabel statis memerlukan jumlah siklus clock paling sedikit untuk disimpan. Stack digunakan secara otomatis untuk deklarasi variabel standar. Memori heap dikembalikan ke variabel pointer dari fungsi malloc().

  • Wilayah data global dan statis secara teknis terdiri atas dua wilayah. Salah satunya disebut segmen data terinisialisasi, tempat variabel yang dideklarasikan dengan nilai bawaan disimpan. Wilayah lainnya disebut segmen block started by, tempat variabel yang dideklarasikan tanpa nilai bawaan disimpan.
  • Variabel yang disimpan di wilayah data global dan statis memiliki alamat yang ditetapkan pada waktu kompilasi. Nilainya dipertahankan sepanjang masa hidup proses.
  • Wilayah global dan statis menyimpan variabel global yang dideklarasikan di atas (di luar) fungsi main(). Variabel global terlihat oleh main() dan setiap fungsi lain dalam kode sumber.
Sebaliknya, deklarasi variabel di dalam main(), fungsi lain, atau di dalam pembatas blok { } merupakan variabel lokal. Variabel lokal juga mencakup variabel parameter formal. Variabel parameter diapit tanda kurung dari definisi fungsi. Parameter menyediakan antarmuka ke fungsi.
  • Variabel lokal yang dideklarasikan menggunakan awalan static juga disimpan di wilayah data global dan statis. Berbeda dengan variabel global, variabel statis hanya terlihat di dalam fungsi atau blok. Variabel statis selalu mempertahankan nilainya. Salah satu contoh penggunaannya adalah fungsi berikut:

Dalam terminologi berorientasi objek, tipe data abstrak disebut kelas. Namun, kelas hanyalah definisi; tidak ada memori yang dialokasikan. Ketika memori dialokasikan untuk suatu kelas dan diikat ke sebuah pengenal, kelas tersebut disebut objek.

C++ (1985) awalnya disebut "C with Classes". Bahasa ini dirancang untuk memperluas kemampuan C dengan menambahkan fasilitas berorientasi objek dari bahasa Simula. Sebuah kelas C++ mengenkapsulasi item data yang berkaitan bersama fungsi-fungsi yang memanipulasinya.

Bahasa imperatif berorientasi objek berkembang dengan menggabungkan kebutuhan akan kelas dan kebutuhan akan pemrograman fungsional yang aman. Sebuah fungsi dalam bahasa berorientasi objek ditetapkan ke suatu kelas. Fungsi yang ditetapkan tersebut kemudian disebut metode, fungsi anggota, atau operasi. Pemrograman berorientasi objek adalah pelaksanaan operasi terhadap objek.

Pewarisan
suntingsunting sumber

C++ mendukung sintaks untuk memodelkan hubungan subset/superset. Dalam teori himpunan, sebuah elemen dari subset mewarisi semua atribut yang terdapat dalam superset. Sebagai contoh, seorang siswa adalah seseorang. Oleh karena itu, himpunan siswa merupakan subset dari himpunan orang. Akibatnya, siswa mewarisi semua atribut yang umum bagi semua orang. Selain itu, siswa memiliki atribut unik yang tidak dimiliki orang lain. C++ memodelkan hubungan subset/superset menggunakan pewarisan.

Ruang nama
suntingsunting sumber

Ruang nama C++ menyediakan konteks ketika terjadi konflik nama. Nama kelas dan nama fungsi dapat digandakan dalam berkas kode sumber lain atau pustaka pihak ketiga. Untuk membungkus nama kelas dan nama fungsi dalam blok ruang nama, gunakan kata kunci namespace. Kata kunci tersebut diikuti oleh sebuah pengenal, dan bloknya diapit tanda kurung.

Untuk membuat instans kelas atau menjalankan fungsi yang berada dalam ruang nama, awali nama kelas atau fungsi dengan nama ruang nama yang diikuti dua titik dua. Sebagai contoh, foo::bar() menunjukkan fungsi bar() yang berada dalam ruang nama foo. Alternatifnya, jalankan direktif using yang diikuti nama ruang nama. Setelah itu, semua nama kelas dan fungsi dapat diakses tanpa awalan dua titik dua.

Modul
suntingsunting sumber
// Grade.cpp // Pernyataan "export module" memungkinkan program lain "mengimpor" modul bernama 'wikipedia.examples.Grade' exportmodulewikipedia.examples.Grade; // Deklarasikan ruang nama 'wikipedia::examples' namespacewikipedia::examples{ // Definisikan kelas "Grade" // Pernyataan "export" memungkinkan modul lain mengakses kelas ini exportclassGrade{ private: // Variabel kelas "letter" bertipe char charletter; public: // Konstruktor explicitGrade(charletter): letter{letter}{} // Operasi anggota chargetLetter()const{ returnletter; } }; }

Sebuah fungsi konstruktor memiliki nama yang sama dengan nama kelas. Fungsi tersebut dijalankan ketika sebuah objek dari suatu kelas dideklarasikan.

Berikut adalah modul untuk kelas Person dalam aplikasi yang memodelkan sebuah sekolah:

// Main.cpp importstd; importwikipedia.examples.Grade; importwikipedia.examples.Student; usingwikipedia::examples::Grade; usingwikipedia::examples::Student; intmain(){ Studentjohn("John Doe",Grade('A')); std::println("Student name: {}, with grade {}",john.getName(),john.getGrade().getLetter()); }

Keluaran:

Bahasa imperatif memiliki satu kritik utama: menetapkan sebuah ekspresi ke variabel non-lokal dapat menghasilkan efek samping yang tidak diinginkan. Bahasa deklaratif umumnya menghilangkan pernyataan penugasan dan alur kontrol. Bahasa tersebut mendeskripsikan apa yang harus dihitung, bukan bagaimana menghitungnya. Dua kategori luas bahasa deklaratif adalah bahasa fungsional dan bahasa logika.

Prinsip di balik bahasa fungsional adalah menggunakan kalkulus lambda sebagai panduan untuk semantik yang terdefinisi dengan baik. Dalam matematika, fungsi adalah aturan yang memetakan elemen dari sebuah ekspresi ke suatu rentang nilai. Perhatikan fungsi berikut:

times_10(x) = 10 * x

Ekspresi 10 * x dipetakan oleh fungsi times_10() ke suatu rentang nilai. Salah satu nilai tersebut adalah 20. Hal ini terjadi ketika x bernilai 2. Jadi, penerapan fungsi tersebut secara matematis ditulis sebagai:

times_10(2) = 20

Kompilator bahasa fungsional tidak akan menyimpan nilai ini dalam variabel. Sebaliknya, kompilator akan mendorong nilai tersebut ke stack komputer sebelum mengatur program counter kembali ke fungsi pemanggil. Fungsi pemanggil kemudian akan mengeluarkan nilai tersebut dari stack.

Bahasa imperatif juga mendukung fungsi. Oleh karena itu, pemrograman fungsional dapat dicapai dalam bahasa imperatif jika pemrogram menggunakan disiplin tertentu. Namun, bahasa fungsional akan memaksakan disiplin tersebut kepada pemrogram melalui sintaksnya. Bahasa fungsional memiliki sintaks yang disesuaikan untuk menekankan apa yang dilakukan.

Sebuah program fungsional dikembangkan dengan sekumpulan fungsi primitif yang diikuti oleh satu fungsi penggerak. Perhatikan cuplikan berikut:

fun times_10(n : int) : int = 10 * n;

ML tidak berorientasi pada penggunaan tanda kurung seperti Lisp. Berikut adalah penerapan times_10():

times_10 2

Fungsi tersebut mengembalikan "billows_fire(X) :- is_a_dragon(X).

2) Suatu makhluk menyemburkan api jika salah satu induknya menyemburkan api:

is_a_creature(X) :- is_a_dragon(X).

5) Norberta adalah seekor naga, dan Puff adalah seekor makhluk. Norberta adalah ibu dari Puff.

X = norberta X = puff

Penerapan praktis Prolog adalah representasi pengetahuan dan pemecahan masalah dalam kecerdasan buatan.

Pemrograman berorientasi objek

suntingsunting sumber

Pemrograman berorientasi objek adalah metode pemrograman untuk menjalankan operasi (fungsi) pada objek. Gagasan dasarnya adalah mengelompokkan karakteristik suatu fenomena ke dalam sebuah wadah objek dan memberikan nama kepada wadah tersebut. Operasi pada fenomena tersebut juga dikelompokkan ke dalam wadah. Pemrograman berorientasi objek berkembang dengan menggabungkan kebutuhan akan wadah dan kebutuhan akan pemrograman fungsional yang aman. Metode pemrograman ini tidak harus terbatas pada bahasa berorientasi objek. Dalam bahasa berorientasi objek, wadah objek disebut kelas. Dalam bahasa yang tidak berorientasi objek, sebuah struktur data (yang juga dikenal sebagai rekaman) dapat menjadi wadah objek. Untuk mengubah struktur data menjadi wadah objek, operasi perlu ditulis secara khusus untuk struktur tersebut. Struktur yang dihasilkan disebut tipe data abstrak. Namun, pewarisan tidak tersedia. Meskipun demikian, kekurangan ini dapat diatasi.

Berikut adalah berkas header C untuk tipe data Grade dalam aplikasi yang memodelkan sebuah sekolah:

// Person.h #pragma once typedefstruct{ char*name; }Person; Person*person_new(char*name); voidperson_delete(Person*p);

Berikut adalah berkas sumber C untuk tipe data Person dalam aplikasi yang memodelkan sebuah sekolah:

\n#include \"Person.h\"\n\nPerson *person_new(char *name) {\n Person *person;\n\n // Pemeriksaan kesalahan dihilangkan\n person = calloc(1, sizeof(Person));\n\n person->name = name;\n return person;\n}\n\nvoid person_delete(Person *p) {\n free(p);\n}\n"}}'>// Person.c #include<stdlib.h> #include"Person.h" Person*person_new(char*name){ Person*person; // Pemeriksaan kesalahan dihilangkan person=calloc(1,sizeof(Person)); person->name=name; returnperson; } voidperson_delete(Person*p){ free(p); }

Berikut adalah berkas header C untuk tipe data Student dalam aplikasi yang memodelkan sebuah sekolah:

// Main.c #include<stdio.h> #include"Student.h" intmain(){ Student*john=student_new("John Doe"); john->grade=grade_new('A'); printf( "Student name: %s, with grade %d\n" john->person->name, john->grade->letter ); grade_delete(john->grade); student_delete(john); return0; }

Strategi formal untuk membangun objek berorientasi objek adalah:

Sebagai contoh:

Sintaks dan semantik

suntingsunting sumber
Aturan produksi terdiri atas sekumpulan terminal dan nonterminal.

Sintaks sebuah program komputer adalah daftar aturan produksi yang membentuk tata bahasanya. Tata bahasa sebuah bahasa pemrograman menempatkan deklarasi, ekspresi, dan pernyataan secara benar. Yang melengkapi sintaks suatu bahasa adalah semantiknya. Semantik menjelaskan makna yang melekat pada berbagai konstruksi sintaksis. Suatu konstruksi sintaksis mungkin memerlukan deskripsi semantik karena sebuah aturan produksi dapat memiliki interpretasi yang tidak valid. Selain itu, bahasa yang berbeda mungkin memiliki sintaks yang sama; namun, perilakunya dapat berbeda.

Sintaks sebuah bahasa dijelaskan secara formal dengan mencantumkan aturan produksi. Sementara sintaks bahasa alami sangat rumit, suatu subset bahasa Inggris dapat memiliki daftar aturan produksi berikut:

  1. sebuah kalimat terdiri atas frasa nomina yang diikuti oleh frasa verba;
  2. sebuah frasa nomina terdiri atas artikel yang diikuti oleh adjektiva yang diikuti oleh nomina;
  3. sebuah frasa verba terdiri atas verba yang diikuti oleh frasa nomina;
  4. sebuah artikel adalah 'the';
  5. sebuah adjektiva adalah 'big' atau
  6. sebuah adjektiva adalah 'small';
  7. sebuah nomina adalah 'cat' atau
  8. sebuah nomina adalah 'mouse';
  9. sebuah verba adalah 'eats';

Kata-kata yang dicetak tebal dikenal sebagai nonterminal. Kata-kata dalam 'tanda kutip tunggal' dikenal sebagai terminal.

Dari daftar aturan produksi ini, kalimat lengkap dapat dibentuk menggunakan serangkaian penggantian. Prosesnya adalah mengganti nonterminal dengan nonterminal atau terminal yang valid. Proses penggantian diulangi hingga hanya tersisa terminal. Salah satu kalimat yang valid adalah:

Namun, kombinasi lain menghasilkan kalimat yang tidak valid:

Oleh karena itu, diperlukan semantik untuk menjelaskan makna aktivitas eat dengan benar.

Salah satu metode untuk mencantumkan aturan produksi disebut Backus–Naur form (BNF). BNF menjelaskan sintaks suatu bahasa dan BNF sendiri memiliki sintaks. Definisi rekursif ini merupakan contoh metabahasa. Sintaks BNF mencakup:

Dengan menggunakan BNF, suatu subset bahasa Inggris dapat memiliki daftar aturan produksi berikut:

::= <noun-phrase><verb-phrase>\n<noun-phrase> ::= <article><adjective><noun>\n<verb-phrase> ::= <verb><noun-phrase>\n<article> ::= the\n<adjective> ::= big | small\n<noun> ::= cat | mouse\n<verb> ::= eats\n"}}'><sentence> ::= <noun-phrase><verb-phrase> <noun-phrase> ::= <article><adjective><noun> <verb-phrase> ::= <verb><noun-phrase> <article> ::= the <adjective> ::= big | small <noun> ::= cat | mouse <verb> ::= eats

Dengan menggunakan BNF, sebuah bilangan bulat bertanda memiliki daftar aturan produksi berikut:

::= <sign><integer>\n<sign> ::= + | -\n<integer> ::= <digit> | <digit><integer>\n<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9\n"}}'><signed-integer> ::= <sign><integer> <sign> ::= + | - <integer> ::= <digit> | <digit><integer> <digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Perhatikan aturan produksi rekursif:

::= <digit> | <digit><integer>\n"}}'><integer> ::= <digit> | <digit><integer>

Hal ini memungkinkan jumlah kemungkinan yang tidak terbatas. Oleh karena itu, diperlukan semantik untuk menjelaskan batas jumlah digit.

Perhatikan kemungkinan adanya nol di depan dalam aturan produksi:

::= <digit> | <digit><integer>\n<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9\n"}}'><integer> ::= <digit> | <digit><integer> <digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Oleh karena itu, diperlukan semantik untuk menjelaskan bahwa nol di depan harus diabaikan.

Terdapat dua metode formal untuk menjelaskan semantik, yaitu semantik denotasional dan semantik aksiomatik.

Rekayasa perangkat lunak dan pemrograman komputer

suntingsunting sumber
Sebelum adanya bahasa pemrograman, Betty Jennings dan Fran Bilas memprogram ENIAC dengan memindahkan kabel dan mengatur sakelar.

Rekayasa perangkat lunak adalah berbagai teknik untuk menghasilkan program komputer yang berkualitas. Pemrograman komputer adalah proses menulis atau menyunting kode sumber. Dalam lingkungan formal, seorang analis sistem akan mengumpulkan informasi dari para manajer mengenai seluruh proses organisasi yang akan diotomatisasi. Profesional ini kemudian menyiapkan rencana terperinci untuk sistem baru atau sistem yang dimodifikasi. Rencana tersebut analog dengan cetak biru seorang arsitek.

Tujuan kinerja

suntingsunting sumber

Analis sistem bertujuan menyampaikan informasi yang tepat kepada orang yang tepat pada waktu yang tepat. Faktor-faktor penting untuk mencapai tujuan ini adalah:

  1. Kualitas keluaran. Apakah keluaran berguna untuk pengambilan keputusan?
  2. Keakuratan keluaran. Apakah keluaran mencerminkan situasi yang sebenarnya?
  3. Format keluaran. Apakah keluaran mudah dipahami?
  4. Kecepatan keluaran. Informasi yang peka terhadap waktu penting ketika berkomunikasi dengan pelanggan secara waktu nyata.

Tujuan biaya

suntingsunting sumber

Pencapaian tujuan kinerja harus diseimbangkan dengan seluruh biaya, termasuk:

  1. Biaya pengembangan.
  2. Biaya keunikan. Sistem yang dapat digunakan kembali mungkin mahal. Namun, sistem tersebut mungkin lebih disukai daripada sistem dengan penggunaan terbatas.
  3. Biaya perangkat keras.
  4. Biaya pengoperasian.

Penerapan proses pengembangan sistem akan mengurangi dampak aksioma: semakin terlambat suatu kesalahan terdeteksi dalam proses, semakin mahal biaya untuk memperbaikinya.

Model air terjun

suntingsunting sumber

Model air terjun adalah penerapan suatu proses pengembangan sistem. Sebagaimana tersirat dari nama air terjun, fase-fase dasarnya saling tumpang tindih:

  1. Fase investigasi bertujuan memahami masalah yang mendasarinya.
  2. Fase analisis bertujuan memahami solusi-solusi yang mungkin.
  3. Fase desain bertujuan merencanakan solusi terbaik.
  4. Fase implementasi bertujuan memprogram solusi terbaik.
  5. Fase pemeliharaan berlangsung sepanjang masa hidup sistem. Perubahan pada sistem setelah diterapkan mungkin diperlukan. Kesalahan mungkin ada, termasuk kesalahan spesifikasi, kesalahan desain, atau kesalahan pengodean. Perbaikan mungkin diperlukan. Adaptasi mungkin diperlukan untuk merespons lingkungan yang berubah.

Pemrogram komputer

suntingsunting sumber

Seorang pemrogram komputer adalah spesialis yang bertanggung jawab untuk menulis atau memodifikasi kode sumber guna menerapkan rencana terperinci. Tim pemrograman kemungkinan diperlukan karena sebagian besar sistem terlalu besar untuk diselesaikan oleh satu pemrogram saja. Namun, menambahkan pemrogram ke suatu proyek belum tentu memperpendek waktu penyelesaian. Sebaliknya, hal tersebut dapat menurunkan kualitas sistem. Agar efektif, modul program perlu didefinisikan dan didistribusikan kepada anggota tim. Selain itu, anggota tim harus berinteraksi satu sama lain dengan cara yang bermakna dan efektif.

Pemrogram komputer dapat melakukan pemrograman dalam skala kecil: pemrograman di dalam satu modul. Kemungkinan besar sebuah modul akan menjalankan modul yang terdapat dalam berkas kode sumber lainnya. Oleh karena itu, pemrogram komputer dapat melakukan pemrograman dalam skala besar: memprogram modul agar dapat saling terhubung secara efektif. Pemrograman dalam skala besar mencakup kontribusi terhadap application programming interface (API).

Modul program

suntingsunting sumber

Pemrograman modular adalah teknik untuk menyempurnakan program bahasa imperatif. Program yang disempurnakan dapat mengurangi ukuran perangkat lunak, memisahkan tanggung jawab, dan dengan demikian mengurangi penuaan perangkat lunak. Sebuah modul program adalah rangkaian pernyataan yang dibatasi di dalam sebuah blok dan secara bersama-sama diidentifikasi dengan sebuah nama. Modul memiliki fungsi, konteks, dan logika:

Nama modul harus terlebih dahulu diturunkan dari fungsinya, kemudian dari konteksnya. Logika tidak boleh menjadi bagian dari nama. Sebagai contoh, function compute_square_root( x ) atau function compute_square_root_integer( i : integer ) merupakan nama modul yang sesuai. Namun, function compute_square_root_by_division( x ) tidak sesuai.

Derajat interaksi di dalam sebuah modul adalah tingkat kohesi-nya. Kohesi merupakan penilaian terhadap hubungan antara nama modul dan fungsinya. Derajat interaksi antar modul adalah tingkat kopling. Kopling merupakan penilaian terhadap hubungan antara konteks modul dan elemen-elemen yang dikenai operasi.

Kohesi

suntingsunting sumber

Tingkat kohesi dari yang terburuk hingga yang terbaik adalah:

Kopling

suntingsunting sumber

Tingkat kopling dari yang terburuk hingga yang terbaik adalah:

Analisis aliran data

suntingsunting sumber
Diagram aliran data tingkat fungsi contoh

Analisis aliran data adalah metode desain yang digunakan untuk mencapai modul dengan kohesi fungsional dan kopling data. Masukan untuk metode ini adalah diagram aliran data. Diagram aliran data adalah sekumpulan oval yang mewakili modul. Nama setiap modul ditampilkan di dalam ovalnya. Modul dapat berada pada tingkat yang dapat dieksekusi atau tingkat fungsi.

Diagram tersebut juga memiliki panah yang menghubungkan modul satu sama lain. Panah yang menunjuk ke dalam modul mewakili sekumpulan masukan. Setiap modul seharusnya hanya memiliki satu panah yang keluar darinya untuk mewakili objek keluaran tunggalnya. (Secara opsional, panah pengecualian tambahan dapat keluar.) Sebuah rangkaian oval berbentuk rantai daisy akan menyampaikan keseluruhan algoritma. Modul masukan harus mengawali diagram. Modul masukan harus terhubung ke modul transformasi. Modul transformasi harus terhubung ke modul keluaran.

Kategori fungsional

suntingsunting sumber
Diagram yang menunjukkan bahwa pengguna berinteraksi dengan perangkat lunak aplikasi. Perangkat lunak aplikasi berinteraksi dengan sistem operasi, yang berinteraksi dengan perangkat keras.

Program komputer dapat dikategorikan berdasarkan fungsi. Kategori fungsional utama adalah perangkat lunak aplikasi dan perangkat lunak sistem. Perangkat lunak sistem mencakup sistem operasi, yang menghubungkan perangkat keras komputer dengan perangkat lunak aplikasi. Tujuan sistem operasi adalah menyediakan lingkungan tempat perangkat lunak aplikasi dapat dijalankan secara nyaman dan efisien. Baik perangkat lunak aplikasi maupun perangkat lunak sistem menjalankan program utilitas. Pada tingkat perangkat keras, sebuah program mikrokode mengendalikan rangkaian di seluruh unit pemrosesan pusat.

Perangkat lunak aplikasi

suntingsunting sumber
Gerbang NOT
Gerbang NAND
Gerbang NOR
Gerbang AND
Gerbang OR

Sebuah program mikrokode adalah interpreter tingkat paling bawah yang mengendalikan datapath komputer yang digerakkan oleh perangkat lunak. (Kemajuan dalam perangkat keras telah memindahkan operasi ini ke rangkaian eksekusi perangkat keras.) Instruksi mikrokode memungkinkan pemrogram lebih mudah mengimplementasikan tingkat logika digital—perangkat keras komputer yang sebenarnya. Tingkat logika digital merupakan batas antara ilmu komputer dan teknik komputer.

Sebuah gerbang logika adalah transistor kecil yang dapat menghasilkan salah satu dari dua sinyal: hidup atau mati.

Kelima gerbang ini membentuk blok pembangun aljabar biner—fungsi logika digital komputer.

Instruksi mikrokode adalah mnemonik yang dapat digunakan pemrogram untuk menjalankan fungsi logika digital alih-alih membentuknya dalam aljabar biner. Instruksi tersebut disimpan dalam penyimpanan kontrol CPU. Instruksi tingkat perangkat keras ini memindahkan data di seluruh jalur data.

Siklus instruksi mikro dimulai ketika microsequencer menggunakan penghitung program mikronya untuk mengambil instruksi mesin berikutnya dari memori akses acak. Langkah berikutnya adalah mendekode instruksi mesin dengan memilih jalur keluaran yang tepat menuju modul perangkat keras. Langkah terakhir adalah mengeksekusi instruksi menggunakan kumpulan gerbang pada modul perangkat keras.

Representasi simbolis sebuah ALU

Instruksi untuk melakukan aritmetika diteruskan melalui unit logika aritmetika (ALU). ALU memiliki rangkaian untuk melakukan operasi dasar guna menjumlahkan, menggeser, dan membandingkan bilangan bulat. Dengan menggabungkan dan mengulang operasi dasar melalui ALU, CPU menjalankan operasi aritmetika yang kompleks.

Instruksi mikrokode memindahkan data antara CPU dan pengendali memori. Instruksi mikrokode pengendali memori memanipulasi dua register. Register alamat memori digunakan untuk mengakses alamat setiap sel memori. Register data memori digunakan untuk menetapkan dan membaca isi setiap sel.

Catatan

suntingsunting sumber
Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 7. ISBN 0-201-71012-9. An alternative to compiling a source program is to use an interpreter. An interpreter can directly execute a source program[.]
  • ↑ Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. hlm. 32. ISBN 978-0-13-854662-5.
  • ↑ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 31. ISBN 0-201-71012-9.
  • 1 2 3 4 5 6 McCartney, Scott (1999). ENIAC – The Triumphs and Tragedies of the World's First Computer. Walker and Company. hlm. 16. ISBN 978-0-8027-1348-3.
  • ↑ Rosen, Kenneth H. (1991). Discrete Mathematics and Its Applications. McGraw-Hill, Inc. hlm. 654. ISBN 978-0-07-053744-6. Turing machines can model all the computations that can be performed on a computing machine.
  • ↑ McCartney, Scott (1999). ENIAC – The Triumphs and Tragedies of the World's First Computer. Walker and Company. hlm. 102. ISBN 978-0-8027-1348-3.
  • ↑ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 27. ISBN 0-201-71012-9.
  • ↑ To the Digital Age: Research Labs, Start-up Companies, and the Rise of MOS. Johns Hopkins University Press. 2002. ISBN 9780801886393. Diarsipkan dari versi aslinya tanggal Februari 2, 2023. Diakses tanggal Februari 3, 2022.{{cite book}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  • ↑ "1959: Practical Monolithic Integrated Circuit Concept Patented". Computer History Museum. Diakses tanggal 13 Agustus 2019.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  • ↑ "360 Revolution" (PDF). Father, Son & Co. 1990. Diarsipkan (PDF) dari versi aslinya tanggal 2022-10-10. Diakses tanggal Februari 5, 2022.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  • ↑ Stroustrup, Bjarne (2013). The C++ Programming Language, Fourth Edition. Addison-Wesley. hlm. 11. ISBN 978-0-321-56384-2.
  • 1 2 Weiss, Mark Allen (1994). Data Structures and Algorithm Analysis in C++. Benjamin/Cummings Publishing Company, Inc. hlm. 29. ISBN 0-8053-5443-3.
  • ↑ Stair, Ralph M. (2003). Principles of Information Systems, Sixth Edition. Thomson. hlm. 160. ISBN 0-619-06489-7. The first generation of programming languages is machine language, which requires the use of binary symbols (0s and 1s).
  • ↑ Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. hlm. 399. ISBN 978-0-13-854662-5.
  • ↑ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 26. ISBN 0-201-71012-9.
  • 1 2 3 4 Wilson, Leslie B. (1993). Comparative Programming Languages, Second Edition. Addison-Wesley. hlm. 75. ISBN 978-0-201-56885-1.
  • ↑ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 24. ISBN 0-201-71012-9.
  • 1 2 "Memory Layout of C Programs". 12 September 2011. Diarsipkan dari versi aslinya tanggal 6 November 2021. Diakses tanggal 6 November 2021.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  • 1 2 Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. hlm. 121. ISBN 978-1-59327-220-3.
  • ↑ Kernighan, Brian W.; Ritchie, Dennis M. (1988). The C Programming Language Second Edition. Prentice Hall. hlm. 187. ISBN 0-13-110362-8.
  • 1 2 Stroustrup, Bjarne (2013). The C++ Programming Language, Fourth Edition. Addison-Wesley. hlm. 22. ISBN 978-0-321-56384-2.
  • ↑ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 39. ISBN 0-201-71012-9.
  • ↑ Gregoire, Marc (2024). Professional C++ (Edisi 6th). John Wiley and Sons, Inc. hlm. 9. ISBN 9781394193172. Namespaces address the problem of naming conflicts between different pieces of code.
  • ↑ Gregoire, Marc (2024). Professional C++ (Edisi 6th). John Wiley and Sons, Inc. hlm. 5. ISBN 9781394193172. If the program did not import that module, it would be unable to perform its only task of printing text.
  • ↑ Hunter, David (1999). The Essentials of C++. Research & Education Association. hlm. 46. ISBN 0-87891-748-9.
  • ↑ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 217. ISBN 0-201-71012-9.
  • ↑ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 240. ISBN 0-201-71012-9.
  • 1 2 3 Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 220. ISBN 0-201-71012-9.
  • ↑ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 227. ISBN 0-201-71012-9.
  • 1 2 Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 235. ISBN 0-201-71012-9.
  • ↑ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 35. ISBN 0-201-71012-9. Simula was based on Algol 60 with one very important addition — the class concept. ... The basic idea was that the data (or data structure) and the operations performed on it belong together[.]
  • ↑ Weiss, Mark Allen (1994). Data Structures and Algorithm Analysis in C++. Benjamin/Cummings Publishing Company, Inc. hlm. 57. ISBN 0-8053-5443-3.
  • ↑ Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition. Addison-Wesley. hlm. 78. ISBN 0-201-71012-9. The main components of an imperative language are declarations, expressions, and statements.
  • 1 2 Rosen, Kenneth H. (1991). Discrete Mathematics and Its Applications. McGraw-Hill, Inc. hlm. 615. ISBN 978-0-07-053744-6.
  • ↑ Rosen, Kenneth H. (1991). Discrete Mathematics and Its Applications. McGraw-Hill, Inc. hlm. 623. ISBN 978-0-07-053744-6.
  • ↑ Schach, Stephen R. (1990). Software Engineering. Aksen Associates Incorporated Publishers. hlm. Preface. ISBN 0-256-08515-3.
  • 1 2 3 Stair, Ralph M. (2003). Principles of Information Systems, Sixth Edition. Thomson. hlm. 514. ISBN 0-619-06489-7.
  • ↑ Stair, Ralph M. (2003). Principles of Information Systems, Sixth Edition. Thomson. hlm. 517. ISBN 0-619-06489-7.
  • ↑ Schach, Stephen R. (1990). Software Engineering. Aksen Associates Incorporated Publishers. hlm. 331. ISBN 0-256-08515-3.
  • ↑ Schach, Stephen R. (1990). Software Engineering. Aksen Associates Incorporated Publishers. hlm. 226. ISBN 0-256-08515-3.
  • 1 2 Schach, Stephen R. (1990). Software Engineering. Aksen Associates Incorporated Publishers. hlm. 259. ISBN 0-256-08515-3.
  • 1 2 3 Stair, Ralph M. (2003). Principles of Information Systems, Sixth Edition. Thomson. hlm. 147. ISBN 0-619-06489-7.
  • ↑ Stair, Ralph M. (2003). Principles of Information Systems, Sixth Edition. Thomson. hlm. 148. ISBN 0-619-06489-7. Heading: Proprietary Software; Subheading: Advantages; Quote: Being involved in the development offers a further level of control over the results.
  • ↑ Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. hlm. 11. ISBN 978-0-13-854662-5.
  • 1 2 Bach, Maurice J. (1986). The Design of the UNIX Operating System. Prentice-Hall, Inc. hlm. 152. ISBN 0-13-201799-7.
  • ↑ Kernighan, Brian W.; Ritchie, Dennis M. (1988). The C Programming Language Second Edition. Prentice Hall. hlm. 185. ISBN 0-13-110362-8. malloc calls upon the operating system to obtain more memory as needed.
  • ↑ Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. hlm. 23. ISBN 978-1-59327-220-3.
  • ↑ Haviland, Keith (1987). Unix System Programming. Addison-Wesley Publishing Company. hlm. 121. ISBN 0-201-12919-1.
  • 1 2 Tanenbaum, Andrew S. (2013). Structured Computer Organization, Sixth Edition. Pearson. hlm. 5. ISBN 978-0-13-291652-3.
  • 1 2 Tanenbaum, Andrew S. (2013). Structured Computer Organization, Sixth Edition. Pearson. hlm. 147. ISBN 978-0-13-291652-3.
  • ↑ Tanenbaum, Andrew S. (2013). Structured Computer Organization, Sixth Edition. Pearson. hlm. 255. ISBN 978-0-13-291652-3.
  • ↑ Tanenbaum, Andrew S. (2013). Structured Computer Organization, Sixth Edition. Pearson. hlm. 249. ISBN 978-0-13-291652-3.

  • View original on Wikipedia | Back | FazBrowse Home