Konsep Bahasa Pemograman-BAB 3 – Name,Binding dan Scopes

BAB 3

Name, Bindings, and Scopes

  1. Name

Name atau dapat disebut juga penamaan merupakan sekumpulan string yang digunakan untuk memberi nama pada variable yang kita pakai saat membuat suatu koding.Tidak seperti bahasa pemograman Fortran 95+ yang penamaannya terbatas pada 31 karakter,pada bahasa Java,C#,PHP dan C++ , tidak ada pembatasan dalam jumlah pengunaan nama.Berikut adalah contoh pemberian tata nama variabel dalam bahasa pemograman PHP :

  • Nama dan tipe variabel tidak perlu dideklarasikan terlebih dahulu seperti halnya bahasa Pascal atau C/C++.Sehingga 1 variabel dapat memuat lebih dari 1 tipe data tanpa adanya pendeklarasian sebelumnya.
  • Nama variabel diawali dengan tanda $
  • Penamaan variabel dalam bahasa PHP bersifat case sensitive.Contoh variabel bunga,Bunga BUNGA dan BuNga dianggap sebagai variabel yang berbeda
  • Nama variabel harus diawali dengan huruf atau underscore (_)
  • Nama variabel hanya boleh dituliskan dengan alpha numeric a-z, A-Z, 0-9 dan underscore (_)
  • Nama variabel yang terdiri lebih dari satu kata, dapat dipisahkan dengan underscore (_)
  • Variabel tidak dapat dibat dari predefined variables .Predefined Variables atau

Variabel Sistem PHP, adalah beberapa variabel yang telah didefenisikan secara sistem oleh PHP, dan kita sebaiknya tidak membuat variabel dengan nama yang sama.

Beberapa contoh Predefined Variables dalam PHP adalah:

$GLOBALS , $_SERVER , $_GET , $_POST , $_FILES , $_COOKIE , $_SESSION , $_REQUEST , $_ENV, $php_errormsg, $HTTP_RAW_POST_DATA, $http_response_header, $argc, $argv, $this.

 

  1. Variabel

Variabel Program adalah sebuah abstraksi dari sel memori komputer atau kumpulan sel. Programmer sering memikirkan nama variabel sebagai nama untuk pengalokasian memori, tapi ada banyak lagi dari sekedar nama.Langkah berubah dari bahasa mesin ke bahasa perakitan sebagian besar adalah  menggantikan alamat mutlak memori numerik untuk data dengan nama, membuat program lebih mudah dibaca

Sebuah variabel dapat dicirikan sebagai atribut: (nama, alamat, nilai, jenis, seumur hidup, dan ruang lingkup):

  • Nama

Nama variabel adalah nama yang paling umum digunakan dalam program.Mereka memudahkan programmer untuk memasukkan nilai dalam suatu variabel yang berbeda. Dalam konteks ini hal yang sama dengan penamaan yang telah dibahas di halaman sebelumnya

 

  • Alamat

Alamat dari variabel adalah alamat memori mesin yang dikaitkan. Dalam banyak bahasa, adalah mungkin untuk variabel yang sama dihubungkan dengan alamat yang berbeda pada waktu yang berbeda dalam program. Sebagai contoh, jika subprogram memiliki variabel lokal yang dialokasikan dari tumpukan run-time ketika subprogram dipanggil , panggilan yang berbeda mungkin menghasilkan variabel memiliki alamat yang berbeda. Ini adalah arti inisiasi yang berbeda dari variabel yang sama.

 

Alamat dari variabel kadang-kadang disebut nilai l, karena alamatlah yang diperlukan ketika nama variabel muncul di sisi kiri sebuah tugas.Hal ini dimungkinkan untuk memiliki beberapa variabel yang memiliki alamat yang sama. Saat lebih dari satu nama variabel dapat digunakan untuk mengakses lokasi memori yang sama, variabel disebut alias. Aliasing adalah halangan untuk membaca karena memungkinkan variabel diubah nilainya untuk variabel yang berbeda. Sebagai contoh, jika variabel bernama total dan jumlah adalah alias, setiap perubahan nilai total juga perubahan nilai jumlah dan sebaliknya. Seorang pembaca dari program harus selalu ingat bahwa total dan jumlah adalah nama yang berbeda untuk sel memori yang sama.

Alias ​​dapat dibuat dalam program dalam beberapa cara berbeda.Salah satu cara umum di C dan C ++ adalah dengan jenis gabungan (union)mereka.

 

Dua variabel pointer adalah alias ketika mereka menunjuk ke lokasi memori yang sama. Hal yang sama berlaku untuk variabel referensi. Semacam ini aliasing hanyalah efek samping dari sifat pointer dan referensi. Ketika C ++ pointer diatur ke titik di bernama variabel, pointer, ketika di referensi ulang, dan nama variabel yang alias.

 

  • Jenis/Tipe

Jenis variabel menentukan rentang nilai variabel dapat menyimpan dan set operasi yang didefinisikan untuk nilai-nilai dari jenis. Sebagai contoh, tipe int di Java menentukan berbagai nilai dari negative –2147483648 sampai positif 2147483647 dan operasi aritmatika untuk penambahan, pengurangan, perkalian, pembagian, dan modulus.

  • Nilai

Nilai variabel adalah isi dari sel memori atau sel diasosiasikan dengan variabel.Lebih mudah untuk memikirkan memori komputer dalam hal sel abstrak, daripada sel fisik. Sel-sel fisik, atau individu unit dialamatkan, dari yang memori komputer kontemporer adalah ukuran byte, dengan byte biasanya adalah delapan bit panjangnya. Ukuran ini terlalu kecil untuk sebagian besar variabel program.Sebuah sel memori abstrak memiliki ukuran yang dibutuhkan oleh variabel yang terkait.Sebagai contoh, meskipun nilai-nilai floating-point dapat menempati empat byte fisik dalam implementasi tertentu dari bahasa tertentu, nilai floating-point dianggap menempati sel memori abstrak tunggal.Nilai dari masing-masing jenis nonstructured sederhana dianggap menempati sel abstrak tunggal.Sejak saat itu, sel memori jangka berarti sel memori abstrak.

Sebuah nilai variabel kadang-kadang disebut-nilai r nya karena itulah yang dibutuhkan ketika nama variabel muncul di sisi kanan pernyataan penugasan. Untuk mengakses nilai r, nilai-l harus ditentukan terlebih dahulu.Klasifikasi tersebut tidak selalu sederhana.

  1. Bindings

3.1 Konsep Bindings dan Bindingsnya

Binding dalam suatu program merupakan suatu kumpulan/gabungan diantara  atribut dengan komponen suatu program, contohnya diantara tipe data suatu nilai variable dengan suatu variable nama, nama dan lokasi memori, nama dan fungsi, suatu variable dan nilainya, atau diantara suatu operasi dan suatu symbol. Tetapi secara khusus, bindings merupakan kesatuan diantara suatu nama dengan objek yang dimaksudkan.

3.2 Binding Time

Binding time merupakan suatu momen didalam lingkaran proses suatu program dimana binding terjadi, singkatya, binding time adalah waktu ketika dilaksanakannya suatu binding.

Penggunaan binding time yang paling banyak digunakan

  • Languange design time, menggabungkan symbol operator menjadi suatu operasi
  • Language implementation, menggabungkan tipe floating point menjadi suatu

representasi

  • Program translation/compile time, menggabungkan suatu variable ke suatu tipe
  • Load time, menggabungkan variable static bahasa pemograman ke suatu sel memori
  • Program execution/run time, menggabungkan variable local nonstatic menjadi sel memori

Contoh dalam bahasa PHP :

$count = $count + 5;

Beberapa binding dan waktu yang mengikat mereka untuk bagian-bagian dari tugas ini Pernyataan adalah sebagai berikut:

  • Jenis count terikat pada compile time .
  • Himpunan kemungkinan count dari jumlah terikat pada compiler design time.
  • Arti dari simbol operator + terikat pada compile time ketika jenis operan yang telah ditentukan.
  • Representasi internal dari literal 5 terikat pada desain compiler design time.
  • Nilai hitung terikat pada waktu eksekusi(run time) dengan pernyataan ini.

Ada 2 tipe storage binding yaitu :

-Allocation : mengambil cell dari kolam memori cell yang tersedia

-Deallocation : sel memori yang telah tidak terikat dari variabel dikembali ke kolom memori yang tersedia.

 

  • Tipe Binding secara umum :
  • Binding Static

Suatu binding dinyatakan static ketika binding terjadi sebelum run time dan tetap tidak berubah selama ekseukis program berlangsung. Deklarasi eksplisit adalah pernyataan dalam program yang berisi daftar nama-nama variabel dan menetapkan bahwa mereka adalah jenis tertentu. Deklarasi implisit merupakan perkumpulan variabel dengan jenis melalui konvensi umum, bukan pernyataan deklarasi. Dalam hal ini, penampilan pertama dari nama variabel dalam Program merupakan deklarasi implisit. Kedua deklarasi eksplisit dan implisit membuat binding statis untuk jenis.

Bahasa pemrograman yang paling banyak digunakan yang menggunakan jenis statis mengikat eksklusif dan dirancang sejak pertengahan 1960-an membutuhkan deklarasi eksplisit dari semua variabel (Perl, JavaScript, Ruby, dan ML beberapa pengecualian).

Implisit variabel jenis binding dilakukan oleh prosesor bahasa, baik kompilator atau penerjemah.Ada beberapa dasar yang berbeda untuk implisit variabel jenis binding.Yang paling sederhana ini adalah penamaan konvensi.di hal ini, compiler atau interpreter mengikat variabel untuk tipe berdasarkan bentuk sintaksis nama variabel. Sebagai contoh, dalam Fortran, sebuah identifier yang muncul dalam sebuah program yang tidak secara eksplisit dinyatakan secara implisit menyatakan menurut konvensi berikut: Jika identifier dimulai dengan salah satu surat saya, J, K, L, M, N atau, atau versi huruf kecil mereka, itu adalah implisit dinyatakan jenis Integer; jika tidak, secara implisit dinyatakan menjadi tipe Real.

Meskipun memberikan kenyamanan kecil untuk programmer, deklarasi implisit dapat merugikan kehandalan karena mereka mencegah kompilasi Proses dari mendeteksi beberapa kesalahan ketik dan programmer.di Fortran, variabel yang sengaja dibiarkan dideklarasikan oleh programmer yang diberikan jenis standar dan mungkin atribut yang tak terduga, yang bisa menyebabkan haluskesalahan yang sulit untuk mendiagnosa. Banyak programmer Fortran sekarang termasuk deklarasi tidak Implisit dalam program mereka.Deklarasi ini menginstruksikan compiler untuk tidak secara implisit mendeklarasikan variabel apapun, sehingga menghindari potensi masalah variabel sengaja dideklarasikan.

Beberapa masalah dengan deklarasi implisit dapat dihindari dengan mewajibkan nama untuk jenis tertentu untuk memulai dengan karakter khusus tertentu. untuk Misalnya, di Perl setiap nama yang diawali dengan $ adalah skalar, yang dapat menyimpan baik string atau nilai numerik. Jika nama dimulai dengan @, itu adalah sebuah array; jika mulai dengan%, itu adalah structure.4 hash ini menciptakan ruang nama yang berbeda untuk berbeda ketik variabel. Dalam skenario ini, nama-namaapple dan% apel yang tidak terkait, karena masing-masing dari namespace yang berbeda.Selain itu, program pembaca selalu tahu jenis variabel ketika membaca namanya.Perhatikan bahwa desain ini berbeda dari Fortran, karena Fortran memiliki kedua deklarasi implisit dan eksplisit, sehingga jenis variabel dapat belum tentu ditentukan dari ejaan namanya.

Jenis lain dari deklarasi tipe implisit menggunakan konteks. Ini kadang-kadang disebut inferensi tipe.Dalam kasus sederhana, konteksnya adalah jenis nilai ditugaskan untuk variabel dalam sebuah pernyataan deklarasi.Misalnya, di C # var deklarasi variabel harus menyertakan nilai awal, yang tipe dibuat dengan jenis variabel. Pertimbangkan deklarasi berikut:

var sum = 0;

var total = 0.0;

Nama var = “Fred”;

Jenis-jenis sum, total, dan nama yang int, float, dan tali, masing-masing. Perlu diingat bahwa ini statis diketik variabel-mereka jenis yang tetap untuk masa unit di mana mereka dinyatakan.

 

  • Binding Dinamis

Suatu binding dinyatakan dinamis apabila binding terjadi ketika eksekusi dilakukan atau dapat kita ganti ketika eksekusi suatu program dilaksanakan. Dengan tipe binding dinamis, jenis variabel tidak ditentukan oleh deklarasi pernyataan, juga tidak bisa ditentukan oleh ejaan namanya.Sebagai gantinya, variabel terikat ketika ditugaskan nilai dalam sebuah pernyataan penugasan.Ketika pernyataan penugasan dijalankan, variabel yang ditugaskan terikat dengan jenis nilai ekspresi pada sisi kanan tugas.Seperti tugas juga dapat mengikat variabel ke alamat dan sel memori, karena nilai-nilai berbagai jenis mungkin memerlukan jumlah yang berbeda dari penyimpanan.Setiap variabel dapat ditugaskan setiap nilai tipe.Selain itu, variabel Jenis dapat mengubah beberapa kali selama eksekusi program.Itu penting untuk menyadari bahwa jenis variabel yang jenis dinamis terikat mungkin sementara.

Keuntungan utama dari binding dinamis variabel terikat  untuk jenis adalah bahwa ia menyediakan lebih pemrograman fleksibilitas. Sebagai contoh, sebuah program untuk memproses data numerik dalam bahasa yang menggunakan tipe dinamis mengikat dapat ditulis sebagai program generik, yang berarti bahwa ia mampu menangani data jenis numerik. Apapun tipe data adalah masukan akan diterima, karena variabel di mana data yang akan disimpan dapat terikat untuk jenis yang tepat saat data ditugaskan untuk variabel setelah memasukkan. Sebaliknya, karena mengikat statis dari jenis, satu tidak bisa menulis C program untuk memproses data tanpa mengetahui jenis data yang.

Sebelum pertengahan 1990-an, bahasa pemrograman yang paling umum digunakan digunakan tipe statis mengikat, pengecualian utama adalah beberapa fungsional bahasa seperti LISP. Namun, sejak saat itu telah terjadi pergeseran yang signifikan untuk bahasa yang menggunakan tipe dinamis mengikat.Python, Ruby, JavaScript, dan PHP, jenis mengikat dinamis. Misalnya, script JavaScript mungkin berisi pernyataan berikut:

list = [10.2, 3.5];

Terlepas dari jenis sebelumnya variabel bernama daftar, tugas ini menyebabkan ia menjadi nama array tunggal dimensi panjang 2. Jika pernyataan

list = 47;

mengikuti contoh tugas sebelumnya, daftar akan menjadi nama variabel skalar.

Ada dua kerugian untuk tipe dinamis mengikat. Pertama, hal itu menyebabkan program menjadi kurang dapat diandalkan, karena kemampuan error-deteksi compiler berkurang relatif terhadap compiler untuk bahasa dengan jenis statis binding. Jenis dinamis mengikat memungkinkan variabel apapun yang akan ditugaskan nilai dari jenis apa pun. Jenis yang salah dari sisi kanan tugas tidak terdeteksi sebagai kesalahan; bukan, jenis sisi kiri hanya berubah ke salah ketik. Sebagai contoh, misalkan dalam program JavaScript tertentu, saya dan x saat ini nama-nama variabel numerik skalar dan y adalah saat ini nama dari array. Selanjutnya, anggaplah bahwa program perlu penugasan pernyataan

i = x;

tetapi karena kesalahan kata kunci, ia memiliki pernyataan penugasan

i = y;

Dalam JavaScript (atau bahasa lain yang menggunakan tipe dinamis mengikat), tidak ada kesalahan terdeteksi dalam pernyataan ini oleh interpreter-jenis variabel bernama i hanya berubah ke array. Tapi penggunaan kemudian saya akan berharap untuk menjadi skalar, dan hasil yang benar akan menjadi mustahil. Dalam bahasa dengan jenis statis mengikat, seperti Java, kompiler akan mendeteksi kesalahan dalam tugas saya = y, dan program tidak akan bisa eksekusi.

Kelemahan terbesar dari tipe dinamis mengikat adalah biaya.Biaya pelaksanaan atribut dinamis mengikat cukup besar, terutama di waktu eksekusi.Memeriksa jenis harus dilakukan pada waktu berjalan. Selain itu, setiap variabel harus memiliki deskriptor run-time yang terkait dengan itu untuk menjaga arus ketik. Penyimpanan digunakan untuk nilai variabel harus dari berbagai ukuran, karena nilai-nilai jenis yang berbeda membutuhkan jumlah yang berbeda dari penyimpanan.

Akhirnya, bahasa yang memiliki tipe dinamis mengikat untuk variabel biasanya diimplementasikan menggunakan interpreter murni daripada compiler.Komputer tidak memiliki instruksi yang operan jenis tidak diketahui pada waktu kompilasi.Oleh karena itu, kompilator tidak bisa membangun instruksi mesin untuk ekspresi A + B jika jenis A dan B tidak diketahui pada waktu kompilasi.Interpretasi murni biasanya Dibutuhkan setidaknya 10 kali lebih lama seperti halnya untuk mengeksekusi kode mesin setara.Tentu saja, jika bahasa diimplementasikan dengan juru murni, waktu untuk melakukan Tipe binding dinamis disembunyikan oleh waktu keseluruhan interpretasi, sehingga tampaknya lebih murah di lingkungan itu. Di sisi lain, bahasa dengan jenis statis binding jarang dilaksanakan oleh interpretasi murni, karena program di bahasa ini dapat dengan mudah diterjemahkan ke sangat efisien kode mesin versi.

 

Lifetime variable dimulai ketika cell spesifik terikat, dan berakhir ketika tidak terikat dari cell itu.

Terdapat 4 kategori tipe binding berdasarkan lifetime yaitu :

  1. Static

Static = sel yang terikat pada memory cell sebelum eksekusi dimulai, dan tetap terikat pada memory cell yang sama sampai program eksekusi selesai.

Kelebihan    : semua addressing pada static variable bersifat langsung.

Kekurangan : mengurangi fleksibilitas(tidak support untuk reculsive program)

 

  1. Stack dynamic

Stack dynamic variable = storage binding dibuat ketika deklarasi statement dijelaskan, tapi tipe nya bersifat terikat.

Kelebihan    : support dynamic storage(reculsive)

Kekurangan : waktu akses yang lambat karena addressing tidak langsung

 

  1. Explicit heap dynamic

Explicit heap dynamic = abstrak memory cell yang di alokasi dan dealokasi dengan instruksi eksplicit run-time yang ditulis oleh programmer. Variable nya hanya bisa dialokasikan oleh pointer atau reference variable. Sebagai contoh :

 

int *intnode; // Create a pointer

intnode = new int; // Create the heap-dynamic variable

. . .

delete intnode; // Deallocate the heap-dynamic variable

// to which intnode points

 

Explicit heap dynamic variable pada tipe int dibuat oleh operator new. Variable ini bisa di referensikan melalui pointer , intnode. Nantinya variable di deallocation dengan deleteoperator.

Kelebihan    :  storage manajemen yang dinamis.

Kekurangan :  tidak efisien dan tidak handal.

 

  1. Implicit heap dynamic

Implicit heap dynamic terikat dengan heap storage ketika ada nilai yang ditugaskan.

Sebagai contoh:

 

highs = [74, 84, 86, 90, 71];

 

variable bernama highs sudah di deklarasi di sebelumnya, dan sekarang digunakan pada array 5 data.

Kelebihan :  memiliki fleksibilitas yang memperbolehkan high generic code untuk ditulis ulang.

Kekurangan :   run-time overhead mempertahankan semua atribut dinamis, yang akan mencakup jenisarray subscript dan range.

 

  1. Scope

Scope adalah ruang lingkup suatu variable dimana jangkauan perintah program masih bisa mengakses suatu variable. Jika kita mendefenisikan sebuah variabel, maka variabel tersebut dapat diakses oleh seluruh kode program pada halaman yang sama. Namun jika variabel tersebut di defenisikan di dalam sebuah fungsi, variabel itu belum tentu bisa diakses dari luar fungsi tersebut. Hal inilah yang dimaksud dengan scope.

Variabel yang didefenisikan di dalam sebuah fungsi, secara default tidak dapat diakses oleh kode program di luar fungsi tersebut hal ini yang disebut local variabel. Dan begitu juga sebaliknya, variabel yang didefenisikan di luar fungsi, tidak bisa diakses dari dalam fungsi.Jika kita tetap ingin menggunakan variabel yang didefenisikan di luar fungsi dan sebaliknya, PHP memperbolehkan hal tersebut dengan menambahkan sebuah kata kunci ‘global’ sebelum pendefenisian nama variable variabel ini disebut global variabel. Kata kunci global membuat fungsi dapat mengakses variabel yang didefenisikan diluar fungsi atau dengan kata lain variable global dapat digunakan oleh semua fungsi dari sebuah program.

Contoh global dan local scope

Static variable adalah jenis variabel yang mempertahankan nilainya pada setiap pemanggilan fungsi. Untuk variabel normal, nilai dari variabel tersebut akan secara otomatis dihapus pada saat fungsi selesai dijalankan, dan akan dibuat ulang pada saat fungsi dipanggil. Namun jika sebuah variabel dinyatakan sebagai static variabel, maka nilai variabel tersebut akan tetap dipertahankan walaupun fungsi telah selesai dijalankan.

Dynamic variable adalah didasarkan pada urutan pemanggilan subprogram, bukan pada hubungan spasial mereka satu sama lain. Tapi ruang lingkup dapat ditentukan hanya pada run time.Beberapa masalah datang dari scoping dinamis:

Pertama, selama rentang waktu awal ketika subprogram dimulai pelaksanaannya dan berakhir ketika eksekusi yang berakhir, variabel lokal dari subprogram semua terlihat setiap subprogram mengeksekusi lain, terlepas dari kedekatan tekstual. Tidak ada cara untuk melindungi variabel lokal dari aksesibilitas ini. Subprogram selalu dilaksanakan di lingkungan terdekat dari si pemanggil; Oleh karena itu hasil scoping dinamis dalam program kurang dapat diandalkan dibandingkan scoping statis.

 

Juga, scoping dinamis membuat program menentukan makna referensi untuk variabel non-lokal. Ini bisa menjadi mungkin bagi pembaca manusia.lebih sulit untuk dibaca, karena urutan pemanggilan subprogram harus diketahui untuk

Oleh Kelompok 12

Referensi :

 

 

 

 

 

Konsep Bahasa Pemograman- BAB 1 – Pengenalan Bahasa Pemograman

                                                       BAB 1

                              Pengenalan Bahasa Pemograman

1.Alasan Mengapa Ki ta Harus Belajar Konsep Pemrograman

Di masa yang lalu secara luas banyak yang percaya bahwa untuk memasuki zaman komputer hampir semua orang harus belajar bagaimana cara memprogram. Tetapi anggapan tersebut tidak dapat dibenarkan, karena dimasa sekarang komputer sudah memiliki perangkat lunak yang mudah digunakan dan tidak memerlukan keahlian dalam pemrograman.

Alasan lain untuk belajar pemrograman mungkin untuk berkarir sebagai ilmuwan komputer. Bagaimanapun juga, walaupun pemrograman adalah satu perlengkapan utamanya (primary tools), ilmu komputer adalah disiplin ilmu yang luas dan bermacam-macam, dimana meliputi dari persoalan engineering, seperti desain processor, persoalan yang berhubungan dengan matematik, dan performance analysis. Banyak ilmuwan komputer yang mengerjakan sedikit atau tidak sama sekali sebagai bagian dari hari kerja mereka. Jika Anda merencanakan untuk mengambil ilmu komputer sebagai yang utama ataupun tambahan, tentu saja Anda akan belajar pemrograman, tetapi untuk berkarir dibidang komputasi tersedia bagi programmer maupun nonprogrammer.

Dengan mempelajari bahasa pemograman juga dapat menambah pengetahuan anda dalam mempelajari bahasa pemograman yang tentunya akan mempermudah anda untuk mengerti makna essensial dari implementasi suatu program dan membantu bagi orang yang sudah mengenal suatu bahasa pemograman sebelumnya untuk lebih memahami sehingga lebih baik dan cepat dalam menggunakan bahasa pemograman yang diketahui.Semakin baik konsep bahasa pemograman seseorang,semakin mudah seseorang untuk mempelajari bahasa pemograman yang baru yang akan menjadi referensi bagi seseorang untuk memilih bahasa pemograman yang cocok untuk dirinya.

Terakhir alasan terbaik kenapa untuk belajar pemrograman adalah kreativitasnya dan kegiatan pemecahan masalah yang menyenangkan. Salah satu pikiran terbaik tentang pemrograman adalah Anda melihat dengan sebenarnya dan merasakan pengalaman dalam menjalankan program dari solusi yang Anda buat. Mendesain dan membangun program yang dibuat dengan baik akan menyediakan pengertian yang kuat dalam penyelesaian dan kepuasan.Jadi bagi Anda yang tertarik dengan dunia pemrograman, mulailah dari sekarang untuk belajar pemrograman, dan cobalah untuk menyelesaikan suatu permasalahan lalu diimplementasikan ke dalam program.

2.Domain Program

Pemograman telah menyentuh hampir seluruh titik kehidupan manusia.Namun,terdapat lima yang sangat menonjolkan eksitensi program pada suatu bidang sebagai berikut:

  • Scientific applications

Komputer digital pertama kali muncul pada akhir tahun 1940 dan awal tahun 1950 diciptakan untuk kepentingan scientific .Komputer itu digunakan untuk stuktur data yang sederhana dengan data struktur berupa array dan matriks serta control struktur yang dipakai ialah counting loops dan seleksi.Bahasa pemograman yang dipakai ialah Fortran.Selanjutnya akan dipakai bahasa pemograman Algol 60 .

  • Business applications

Komputer untuk aplikasi bisnis pertama kali dimulai pada tahun 1950 dengan bahasa pemograman tingkat tinggi pertama  yaitu COBOL.Komputer digunakan untuk fasilitas menelaborasi laporan , menentukan cara tepat untuk data decimal,data karakter dan mengspesifikasikan operasi aritmatik desimal.

  • Artificial intelligence

AI adalah aplikasi computer yang lebih banyak memakai simbol daripada komputasi numerik.Komputasi simbolik lebih nyaman dipakai dengan linked list daripada array .Bahasa pemograman yang dipakai pertama kali ialah LISP  pada tahun 1959 dan pada awal tahun 1970 ,munculnya bahasa pemograman Prolog

  • Systems programming

Sistem operasi dan alat yang mendukung program dari system computer disebut system software. Bahasa pemograman yang dibuat untuk system programming oleh IBM ialah PL/S yang nantinya akan berubah menjadi PL/I.Namun,sekarang bahasa pemograman yang dipakai ialah bahasa pemograman C dan C++.Contohnya,pada sistem operasi UNIX sendiri ditulis kebanyakan dalam bahasa C.

  • Web Software

The World Wide Web didukung oleh sebuah kumpulan bahasa pemograman yang diambil dari markup language ,seperti HTML .Biasanya untuk pembuatan konten web yang dinamik dan fungsi ini didapatkan dari bahasa pemograman HTML,Java Script dan PHP.

3.Language Evaluation Criteria ( Kriteria Evaluasi Bahasa Pemograman )

Kriteria yang dibutuhkan untuk melakukan evaluasi pada bahasa pemograman adalah:

  • Readability: kemudahan yang program dapat dibaca dan dipahami

Faktor-faktor dari readability:

  • Simplicity
  • Orthogonality

Orthogonality adalah sekumpulan pembentukan data dasar yang dapat dikombinasikan dengan berbagai cara untuk membangun control dan struktur data dari suatu bahasa .

  • Tipe data dan Struktur data
  • Desain Syntax

 

  • Writability: kemudahan yang bahasa dapat digunakan untuk membuat program.

Faktor-faktor dari writability :

  • Orthogonality
  • Expresif
  • Mendukung abstraksi.

Abstraksi adalah kemampuan untuk mendefinisikan dan kemudian menggunakan struktur atau operasi yang kompleks  yang mengizinkan pengabaian detail sebanyak-banyaknya.

  • Tipe data dan Struktur data
  • Desain Syntax

 

  • Reliability: sesuai dengan spesifikasi (yaitu, melakukan dengan spesifikasinya).

Faktor-faktor dari realiability :

  • Type checking.
  • Exception handling.
  • Readability dan writability

 

  • Cost : Biaya akhir dari sebuah bahasa pemrograman adalah fungsi dari banyak

characteristicsa nya:

  1. Biaya programmer pelatihan
  2. Biaya penulisan program
  3. Biaya kompilasi program
  4. Biaya mengeksekusi program

 

3.Pengaruh terhadap Desain Bahasa Pemograman

  • Arsitektur komputer

Bahasa dikembangkan sekitar arsitektur komputer umum, yang dikenal sebagai

arsitektur von Neumann. Desain bahasa pemrograman telah menerima efek mendalam dari arsitektur dasar komputer. Sebagian besar bahasa pemrograman yang populer dari 50 tahun terakhir telah dirancang pada masa arsitektur komputer umum, yang disebut arsitektur von Neumann, pencetusnya John von Neumann .Bahasa pemrograman yang dipakai ialah bahasa-bahasa imperatif.

Karena arsitektur von Neumann, fitur utama dari bahasa-bahasa imperatif adalah variabel, model sel memori; assignment statement, yang didasarkan pada operasi pipa (piping) dan bentuk berulang dari pengulangan, yang merupakan cara paling efisien untuk melaksanakan pengulangan pada ini arsitektur komputer ini.

Arsitektur Von Neuman

  • Shared program technique :
    -Perangkat keras sederhana yang tidak perlu tertanam untuk setiap program.

-Memori terpisah dari CPU

-Data dan Instruksi disalurkan dari memori ke CPU
-Instruksi kompleks untuk digunakan untuk mengontrol perangkat keras, yang

memungkinkan untuk “memprogram ulang”(“reprogrammed”) jauh lebih cepat.

  • Conditional control transfer (Transfer kontrol kondisional) :

-subroutines atau blok kecil kode yang dapat melompat ke dalam urutan apapun bukan berurutan memerintahkan langkah-langkah.

                      Von Nuemann computer architecture

  • Metode-Metode Desain Program

Metode-Metode Desain Program mengarahkan kepada paradigma bahasa pemograman yang baru dengan perbaharuan dan bahasa pemograman baru.Berikut perkembangan Metodologi Pemrograman
-Tahun 1950-an dan awal 1960-an: aplikasi sederhana; khawatir tentang efisiensi mesin.
-masa akhir 1960an: efisiensi orang menjadi penting, mudah dibaca, struktur kontrol yang lebih baik.

-Masa akhir 1970an : data abstraksi.
-masa pertengahan 1980an: domain dan data kompleksitas ; pemrograman berorientasi obyek.

-Masa saat ini : web dan lingkungan jaringan; komputasi terdistribusi.

4.Kategori Bahasa Pemograman

Ada 4 kategori bahasa pemrograman :

  1. Imperative, bahasa yang berbasiskan von Neumann Archittecture, diamana memori yang sama digunakan untuk data dan memberikan instruksi kepada program. Mayoritas computer modern menggunakan von Neumann Archittecture sebagai basis nya.
  2. Functional, bahasa yang berbasiskan fungsi matematika yang merupakan struktur anggota dari suatu set yang disebut domain set sampai ke set yang lain yang disebut range set.
  3. Logic, bahasa yang berbasiskan logika yang formal yang mengekspresikan fakta dan aturan – aturan yang berkaitan dengan suatu masalah pada sebuah domain.
  4. Markup/programming hybrid, bahasa yang berbasiskan teks dan tags yang berhubungan dengan dokumen elektronik, operating system, aplikasi dan program.

  5.Metode Implementasi

Ada 3 metode untuk mengimplementasikan bahasa pemrograman :

  1. Compilation, dengan metode ini compiler akan menerjemahkan suatu program menjadi machine language, yang bisa menjadi suatu input untuk interpreter ato compiler yang lain.

Compilation juga terbagi atas beberapa fase :

  • Lexical analysis, perubahan karakter di dalam program sumber menjadi unit lexical.
  • Syntax analysis, merubah unti lexical menjadi parse trees, yang merepresentasikan struktur syntax dari suatu program.
  • Semantics analysis, menghasilkan intermediate code.
  • code generation, merubah intermediate code menjadi kode yang dapat dimengerti oleh mesin sehingga siap digunakan.

Compilation biasa digunakan untuk aplikasi komersial.

                                  Gambar Proses Compilation

 

  1. Pure Interpretation, dengan metode ini suatu program akan ditafsirkan oleh interpreter. Metode ini tidak membutuhkan translasi dan lebih mudah untuk digunakan karena error bisa ditemukan dengan cepat, akan tetapi memiliki waktu eksekusi yang lebih lama dan memakan lebih banyak memori.
    Pure Interpretation biasa digunakan pada program – program kecil.

Gambar Proses Pure Interpretation

  1. Hybrid Implementation Systems, merupakan gabungan dari Compilation dan Pure Interpretation. Dalam metode ini bahasa yang berlevel tinggi dari suatu program akan diterjemahkan menjadi bahasa level menengah agar dapat di interpretasi dengan mudah.
    Hybrid Implementation Systems biasa digunakan untuk program kecil dan sedang.

Gambar Proses Hybrid Implementation System

 

 

Oleh Kelompok 12.

Referensi :