Sebuah deskripsi lengkap suatu bahasa pemrograman termasuk model komputasi, sintaks dan
semantik dari program, dan pertimbangan pragmatis yang membentuk bahasa.
Kata kunci dan frase: Komputasi model, perhitungan, program, bahasa pemrograman, sintaks, semantik, pragmatik, terikat, bebas, ruang lingkup, lingkungan, blok.
Misalkan kita memiliki nilai 3,14 dan 5, operasi perkalian (×) dan kami melakukan
perhitungan ditentukan oleh ekspresi aritmatika berikut:
2 × 3.14 × 5
yang hasilnya adalah nilai:
31.4
Jika 3,14 adalah sebuah pendekatan untuk pi, kita dapat mengganti 3,14 dengan ekspresi pi mengabstraksi untuk: 2 × pi × 5 di mana pi = 3.14.
Kami mengatakan bahwa pi adalah terikat untuk 3,14 dan konstan. Di mana memperkenalkan lingkungan lokal atau blok untuk definisi lokal. Ruang lingkup definisi hanya ekspresi. Jika 5 adalah dimaksudkan untuk menjadi nilai jari-jari, maka ekspresi dapat digeneralisasi dengan memperkenalkan variabel untuk radius: 2 × × pi pi = jari-jari mana 3,14.
Tentu saja nilai ekspresi adalah keliling lingkaran sehingga kita bisa lebih abstrak dengan
menetapkan nama untuk ekspresi:
Lingkar = 2 × × pi pi = jari-jari mana 3,14
Persamaan terakhir ini mengikat Lingkar nama untuk ekspresi 2 × × radius pi mana
pi = 3,14. Jari-jari variabel dikatakan bebas di sisi kanan dari persamaan. Ini adalah variabel
karena nilai yang tidak ditentukan. pi bukan sebuah variabel, itu adalah sebuah konstanta, nama nilai tertentu.Setiap konteks (ruang lingkup), di mana persamaan dan jari-jari dan jari-jari variabel muncul ditetapkan. untuk nilai, menentukan nilai untuk Lingkar. Sebuah generalisasi lebih lanjut mungkin dengan lingkar parameterizing dengan radius variabel. Lingkar (radius) = 2 × × pi pi = jari-jari mana 3,14 Variabel radius muncul di sisi kanan tidak lagi bebas. Hal ini terikat untuk parameter
jari-jari. Lingkar memiliki nilai (selain sisi kanan) hanya ketika parameter tersebut
diganti dengan ekspresi.
Misalnya, dalam Lingkar (5): = 3.14
Jari-jari parameter terikat pada nilai 5 dan, sebagai hasilnya, Lingkar (5) terikat untuk
3.14. Dalam bentuk ini, definisi adalah resep atau program untuk menghitung keliling lingkaran dari jari-jari lingkaran. Notasi matematika (sintaks) menyediakan bahasa pemrograman dan aritmatika menyediakan model komputasi untuk perhitungan. Pemetaan dari sintaks untuk model komputasi memberikan makna (semantik) untuk program tersebut. Notasi yang digunakan dalam contoh ini didasarkan pada pertimbangan yang sangat pragmatis kemudahan penggunaan dan pemahaman. Hal ini sangat mirip dengan notasi matematika biasa yang kebanyakan orang mengalami kesulitan dalam membedakan antara sintaks dan model komputasi.
Contoh ini berfungsi untuk menggambarkan ide-ide beberapa kunci dalam studi bahasa pemrograman yang diringkas dalam definisi 1.1.
Definisi 1.1
1.Sebuah model komputasi adalah kumpulan nilai dan operasi.
2. Sebuah perhitungan adalah aplikasi dari urutan operasi untuk nilai untuk menghasilkan
nilai lain.
3. Sebuah program adalah spesifikasi dari sebuah perhitungan.
4. Sebuah bahasa pemrograman adalah notasi untuk menulis program.
5. Sintaks dari bahasa pemrograman mengacu pada struktur atau bentuk program.
6. Semantik dari bahasa pemrograman menggambarkan hubungan antara
program dan model perhitungan.
7. Para pragmatik bahasa pemrograman menggambarkan tingkat keberhasilan dengan
bahasa pemrograman yang memenuhi tujuan, baik dalam kesetiaan kepada
mendasari model perhitungan dan utilitas untuk programmer manusia
DATA
Suatu program dapat dilihat sebagai fungsi, output data nilai adalah fungsi dari nilai-nilai input data.
Output = Program (Input)
Pandangan lain dari sebuah program adalah bahwa model domain masalah dan pelaksanaan program ini adalah
simulasi dari domain masalah.
Program = Model domain masalah
Pelaksanaan simulasi = Program dari domain masalah
Dalam kasus apapun, objek data adalah pusat untuk program.
Nilai-nilai dapat dipisahkan menjadi dua kelompok, primitif dan majemuk. Nilai-nilai primitif biasanya angka, nilai boolean, dan karakter. Nilai-nilai komposit biasanya array, catatan, dan didefinisikan secara rekursif nilai. String dapat terjadi sebagai nilai-nilai baik primitif atau komposit. Daftar, tumpukan,pohon, dan antrian adalah contoh dari nilai-nilai yang didefinisikan secara rekursif.Terkait dengan nilai-nilai primitif adalah operasi biasa (misalnya, aritmatika operasi untuk angka). Terkait dengan tiap nilai komposit adalah operasi untuk membangun nilai-nilai dan jenis yang operasi untuk mengakses elemen komponen dari jenis. Sebuah koleksi nilai yang berbagi seperangkat operasi ini disebut tipe data.
Jenis primitif yang diimplementasikan menggunakan hardware dan, kadang-kadang, tujuan khusus perangkat lunak. Sehingga operasi yang sesuai hanya diterapkan untuk nilai-nilai, ketik nilai yang harus diketahui. Dalam program bahasa assembly itu terserah kepada programmer untuk melacak tipe datum itu. Jenis informasi yang terkandung dalam sebuah deskriptor.
DESKRIPSI NILAI
Ketika jenis nilai yang diketahui pada waktu kompilasi jenis descriptor adalah bagian dari simbol compiler meja dan deskriptor tidak diperlukan pada saat run-time dan karena itu, deskripsi tersebut akan dibuang setelah kompilasi. Ketika jenis nilai yang tidak diketahui sampai run-time, deskripsi tipe harus terkait dengan nilai untuk mengizinkan memeriksa jenis.
Nilai Boolean diimplementasikan menggunakan satu bit penyimpanan. Karena bit tunggal biasanya tidak dialamatkan, pelaksanaan diperpanjang menjadi unit yang dialamatkan tunggal memori. Dalam hal ini baik satu bit dalam unit dialamatkan digunakan untuk nilai atau nilai nol di unit penyimpanan menunjuk palsu saat setiap nilai bukan nol menunjuk benar. Operasi pada bit dan nilai boolean yang termasuk dalam set instruksi prosesor.
Nilai integer yang paling sering diimplementasikan menggunakan hardware penyimpanan representasi didefinisikan bilangan bulat 32-bit sering atau empat byte dengan satu bit untuk tanda.
tanda
bit7-bit byte byte byte
Aritmatika integer dan operasi relasional diimplementasikan menggunakan set operasi perangkat keras.
Unit penyimpanan dibagi menjadi tanda dan bilangan biner. Karena bilangan bulat membentuk sebuah himpunan terbatas, hanya suatu subrange dari bilangan bulat disediakan. Beberapa bahasa (misalnya Lisp dan Scheme) menyediakan untuk sangat memperluas jangkauan dengan menerapkan bilangan bulat dalam daftar dan menyediakan operasi integer dalam perangkat lunak. Ini menyediakan untuk ``''aritmatika presisi terbatas.
Jumlah nilai alami yang paling sering diimplementasikan menggunakan unit penyimpanan perangkat keras didefinisikan. Para keuntungan dari menyediakan jenis nomor alami adalah bahwa sebuah bit tambahan penyimpanan tersedia sehingga memberikan nilai-nilai positif yang lebih besar daripada yang disediakan untuk nilai-nilai integer.
Nilai bilangan rasional dapat diimplementasikan sebagai pasangan bilangan bulat. Rationals disediakan bila diinginkan untuk menghindari masalah off bulat dan pemotongan yang terjadi saat mengambang nomor titik yang digunakan untuk mewakili bilangan rasional.
Nilai bilangan real yang paling sering diimplementasikan menggunakan perangkat keras didefinisikan representasi floating point.
Salah satu perwakilan tersebut terdiri dari 32-bit atau empat byte di mana bit pertama adalah tanda, tujuh berikutnya
bit eksponen dan tiga sisanya byte mantissa.
tanda
bit
Aritmatika floating point dan operasi relasional diimplementasikan menggunakan set perangkat kerasoperasi. Beberapa operasi floating point seperti eksponensiasi disediakan dalam perangkat lunak. Penyimpanan Unit dibagi menjadi mantissa dan eksponen. Kadang-kadang lebih dari satu unit penyimpanan yang digunakan untuk menyediakan
presisi yang lebih besar.
Nilai-nilai karakter yang hampir selalu didukung oleh hardware dan sistem operasi,
biasanya satu byte per karakter.
Karakter dikodekan menggunakan skema pengkodean ASCII atau EBCDIC 8-bit atau 16-bit muncul Encoding unicode skema. Nilai-nilai pencacahan biasanya diwakili oleh subsequence dari bilangan bulat dan dengan demikian mewarisi sesuai subset dari operasi integer. Dimana string diperlakukan sebagai tipe primitif, mereka biasanya panjang tetap dan operasi mereka diimplementasikan dalam perangkat keras. Senyawa (atau terstruktur) tipe data termasuk array, record, dan file.
Tipe data abstrak yang terbaik diimplementasikan dengan pointer. Program pengguna memegang pointer ke nilai
jenis abstrak. Ini penggunaan pointer ini cukup aman karena manipulasi pointer terbatas pada
implementasi modul dan pointer adalah notationally tersembunyi. Model Perhitungan
Ada tiga model komputasi dasar - fungsional, logika, dan imperatif. Selain set
nilai-nilai dan operasi yang terkait, masing-masing model komputasi memiliki seperangkat operasi yang digunakan untuk mendefinisikan perhitungan. Model fungsional menggunakan aplikasi fungsi, model logika menggunakan logika inferensi dan model imperatif menggunakan urutan perubahan negara.
Model Fungsional
Model fungsional perhitungan terdiri dari satu set nilai-nilai, fungsi, dan operasi dari
fungsi aplikasi dan komposisi fungsi. Selain nilai-nilai yang biasa, fungsi dapat mengambil lain fungsi sebagai argumen dan fungsi kembali sebagai hasil (fungsi orde yang lebih tinggi). Suatu program merupakan koleksi definisi fungsi dan perhitungan adalah fungsi aplikasi (evaluasi ekspresi).
Contoh awal dari perhitungan keliling lingkaran adalah contoh fungsional
pemrograman. Sebuah contoh yang lebih menarik adalah sebuah program untuk menghitung standar deviasi dari daftar skor. Rumus untuk deviasi standar adalah
sigma = sqrt ((Sigmai = 1N xi2) / N - [(Sigmai = 1N xi) / N] 2)
di mana xi adalah skor individu dan N adalah jumlah skor. Rumus membutuhkan komputasi baik jumlah skor dan jumlah kuadrat dari nilai. Peta fungsi tingkat tinggi menerapkan
fungsi untuk setiap elemen dari daftar dan fungsi orde yang lebih tinggi kali lipat mengurangi daftar dengan menerapkan fungsi untuk elemen pertama dari daftar dan hasil lipat sisa daftar. Gambar 1 menggambarkan apa yang implementasi dalam bahasa pemrograman fungsional mungkin terlihat seperti.
Gambar 1.1: Standar deviasi menggunakan fungsi tingkat tinggi
sd (xs) = sqrt (v)
mana
n = panjang (xs)
v = lipat (ditambah, peta (sqr, xs)) / n
- Sqr (kali lipat (ditambah, xs) / n)
Model fungsional ini penting karena sudah dalam pengembangan selama ratusan tahun dan yang notasi dan metode membentuk dasar di mana sebagian besar dari masalah kita metodologi pemecahan istirahat. Perhatian utama dalam pemrograman fungsional adalah mendefinisikan hubungan fungsional.
Gambar 1.2: Pemrograman Fungsional
nilai-nilai
fungsi
definisi fungsi = Prog ram set fungsidefinisi
Perhitungan = fungsi aplikasi
fungsi aplikasi fungsi komposisi
Model Logika
Model logika perhitungan terdiri dari satu set nilai-nilai, definisi hubungan dan inferensi logis.
Program terdiri dari definisi hubungan dan perhitungan adalah bukti (urutan kesimpulan). Untuk contoh perhitungan lingkar sebelumnya dapat direpresentasikan sebagai:
lingkaran (R, C) jika Pi = 3,14 dan C = 2 * pi * R.
Fungsi ini digambarkan sebagai hubungan antara R dan C.Sebuah ilustrasi logika pemrograman yang lebih baik adalah sebuah program untuk menentukan kematian Socrates dan Penelope. Kita mulai dengan fakta bahwa Socrates dan Penelope adalah manusia dan aturan bahwa semua manusia fana atau ekuivalen untuk semua X, jika X adalah manusia maka X adalah fana.
Suatu bentuk setara fakta dan aturan adalah:
manusia (Socrates)
manusia (Penelope)
fana (X) jika manusia (X)
Untuk menentukan kematian Sokrates atau Penelope kita membuat asumsi bahwa tidak ada manusia i.e.
¬ fana (Y)
Gambar 2 berisi perhitungan (bukti) bahwa Socrates dan Penelope yang fana.
Gambar 1.3: Sokrates adalah fana
1a. manusia (Socrates) Fakta
1b. manusia (Penelope) Fakta
2. fana (X) jika manusia (X) Peraturan
3. ¬ fana (Y) Asumsi
4a. X = Y dari 2 & 3 oleh penyatuan
4b. ¬ manusia (Y) dan modus tollens
5a. Y = Socrates dari 1 dan 4 dengan unifikasi
5b. Y = Penelope
6. Kontradiksi 5a, 4b, dan 1a, 5b, 4b dan 1b
Langkah pertama dalam perhitungan adalah pemotongan baris 4 dari baris 2 dan 3. Hal ini dibenarkan oleh Aturan inferensi modus tollens yang menyatakan bahwa jika kesimpulan dari aturan diketahui palsu, kemudian jadi adalah hipotesis. Variabel X dan Y dapat bersatu karena mereka mungkin memiliki nilai apapun. Dengan unifikasi,Garis 5a, 4b, dan 1a; kontradiksi 5b, 4b dan 1b memproduksi dan mengidentifikasi baik Socrates dan Penelope r
Program = set aksioma - formalisasi perhitungan pengetahuan bukti = konstruktif tujuan
pernyataan dari program ini.
Gambar 1.4: Pemrograman Logika
nilai-nilai = Program set definisi relasi
Perhitungan bukti = konstruktif (kesimpulan dari definisi)hubungan inferensi logis
kesimpulan
Program = set aksioma - formalisasi perhitungan pengetahuan bukti = konstruktif tujuan
pernyataan dari program ini.
Model Imperatif
Model imperatif perhitungan terdiri dari satu set nilai-nilai termasuk negara dan operasi
tugas untuk mengubah negara. Negara adalah himpunan pasangan nama-nilai dari konstanta dan variabel.Program terdiri dari urutan tugas dan perhitungan adalah urutan negara. Setiap langkah dalam perhitungan adalah hasil dari tugas operasi (Lihat Gambar 3).
Gambar 1.5: Urutan Negara
S0-O0-> S1 - ... -> Sn-1-On-1-> Sn
Sebagai contoh, sebuah implementasi penting dari perhitungan lingkar sebelumnya dapat ditulis sebagai:konstanta pi = 3,14
masukan (Radius) Lingkar: = 2 * pi * Radius Output (Lingkar)
Perhitungan ini memerlukan implementasi untuk menentukan nilai Radius dan pi di negara dankemudian mengubah negara dengan pasangan Lingkar dengan nilai baru.
Hal ini lebih mudah untuk melacak negara ketika informasi negara disertakan dengan kode.
konstanta pi = 3,14
Radius _ | _, Lingkar = _ | _, pi = 3,14
masukan (Radius)
X Radius, Lingkar = _ | _, pi = 3,14
Lingkar: = 2 * pi * Radius
Radius x, Lingkar = 2 × x × pi, pi = 3,14
Output (Lingkar)
Radius x, Lingkar = 2 × x × pi, pi = 3,14
mana _ | _ menunjuk nilai terdefinisi.
Model penting ini sering disebut model prosedural karena kelompok operasi diabstraksikan
ke dalam prosedur.Model imperatif-prosedural adalah penting karena model-model perubahan dan perubahan merupakan bagian integral lingkungan kita. Ini adalah model komputasi yang terdekat dengan hardware pada program mana yang dieksekusi. Kedekatannya dengan perangkat keras membuat program-program termudah untuk menerapkan dan imperatif cenderung membuat tuntutan setidaknya untuk sumber daya sistem (waktu dan ruang). Perhatian utama di imperatif
pemrograman mendefinisikan urutan perubahan negara.
Gambar 1.6: Pemrograman Imperatif
memori
sel
nilai-nilai
perintah
Program = urutan perintah
Perhitungan = urutan perubahan keadaan
komputabilitas
Logika, dan model imperatif fungsional perhitungan yang setara dalam arti bahwa masalah
yang memiliki solusi dalam satu model dipecahkan (pada prinsipnya) masing-masing model lain. Model-model lain dari perhitungan telah diusulkan. Model lainnya telah terbukti setara dengan tigamodel. Ini dikatakan model universal perhitungan.Metode perhitungan yang disediakan dalam bahasa pemrograman tergantung pada model perhitungan diimplementasikan oleh bahasa pemrograman. Bahasa pemrograman yang paling memanfaatkan lebih dari satu model perhitungan namun satu model biasanya mendominasi. Lisp, Scheme, dan ML didasarkan pada model fungsional dari perhitungan tetapi menyediakan beberapa konstruksi imperatif sementara, Miranda dan Haskell menyediakan implementasi hampir murni dari model fungsional perhitungan. Prolog menyediakan parsial pelaksanaan model logika komputasi tetapi, untuk alasan efisiensi dan kepraktisan,gagal di beberapa daerah dan berisi konstruksi imperatif. Para Gödel bahasa lebih dekat ke ideal.Model penting memerlukan beberapa elemen fungsional dan logis dan bahasa seperti Pascal, C / C ++, Ada dan Jawa menekankan tugas, metode perhitungan mendefinisikan urutan berbagaimenyediakan implementasi minimal model fungsional dan logika perhitungan.
Sintaks dan Semantik
Sintaks menjelaskan struktur program dan semantik mendefinisikan hubungan antara sintaks
dan model komputasi. Untuk menyederhanakan tugas penalaran tentang program, sintaks dari suatu bahasa pemrograman harus terkait erat dengan model komputasi. Prinsip utama adalah
prinsip kejelasan.
Prinsip Kejelasan
Struktur bahasa pemrograman harus didefinisikan dengan baik, dan hasil dari
bagian tertentu dari kode mudah diprediksi.Notasi yang digunakan dalam model fungsional dan logika matematika menunjukkan praktik umum dan pameran kesederhanaan notasi dan keteraturan ditemukan dalam disiplin itu. Karena notasi yang digunakan untuk model imperatif harus mampu menentukan baik berbagai urutan negara dan ekspresi, ia cenderung tidak teratur dan kompleksitas yang lebih besar daripada notasi untuk model fungsional dan logika. Karena kompleksitas dan penggunaan tersebar luas bahasa pemrograman imperatif, sebagian besar pekerjaan dilakukan di bidang semantik bahasa pemrograman berhubungan dengan bahasa pemrograman imperatif.
Pragmatik
Pragmatik prihatin tentang kegunaan dari bahasa, area aplikasi, kemudahan
pelaksanaan dan penggunaan, dan kesuksesan bahasa dalam memenuhi tujuan desain. Pasukan yang membentuk suatu bahasa pemrograman meliputi arsitektur komputer, praktek-praktek rekayasa perangkat lunak (khususnya siklus hidup perangkat lunak), model komputasi, dan domain aplikasi (misalnya antarmuka pengguna, sistem pemrograman, dan sistem pakar).Untuk bahasa untuk memiliki luas diterapkan harus membuat ketentuan untuk abstraksi, generalisasi dan modularitas. Abstraksi (mengasosiasikan nama dengan obyek dan menggunakan nama untuk setiap kali objek) diperlukan izin penindasan detail dan memberikan konstruksi yang memungkinkan perpanjangan dari suatu bahasa pemrograman. Ekstensi ini diperlukan untuk mengurangi kompleksitas program.Generalisasi (mengganti konstanta dengan variabel) memungkinkan aplikasi konstruksi untuk lebih objek dan mungkin untuk kelas-kelas lain objek. Modularitas adalah partisi dari sebuah program menjadi bagian-bagian biasanya untuk kompilasi terpisah dan ke perpustakaan kode dapat digunakan kembali. Abstraksi, generalisasi dan modularitas meringankan beban pada programmer dengan memungkinkan programmer untuk memperkenalkan tingkat detail dan logis partisi dari sebuah program. Pelaksanaan dari bahasa pemrograman harus
setia dengan model komputasi yang mendasari dan menjadi implementasi yang efisien.
Pemrograman konkuren melibatkan notasi untuk mengekspresikan potensi eksekusi paralel porsi dari program dan teknik untuk memecahkan sinkronisasi yang dihasilkan dan masalah komunikasi.Pemrograman konkuren dapat diimplementasikan dalam setiap model komputasi.
Concurrency dalam model fungsional dan logika sangat menarik karena, subexpression
evaluasi dan kesimpulan dapat dilakukan secara bersamaan dan tidak memerlukan sintaks tambahan.Concurrency dalam model imperatif memerlukan unsur sintaksis tambahan.
Berorientasi objek pemrograman OOP melibatkan notasi untuk penataan program menjadi koleksi benda yang menghitung dengan bertukar pesan. Setiap objek terikat dengan nilai dan satu set operasi yang menentukan pesan yang dapat merespon. Objek yang diatur Berorientasi objek pemrograman dapat diimplementasikan dalam setiap model komputasi lainnya.
hierarkis dan mewarisi operasi dari obyek yang lebih tinggi dalam hirarki. Program ditulis dan dibaca oleh manusia tetapi dieksekusi oleh komputer. Karena baik manusia dan
komputer harus dapat memahami program, perlu untuk memahami persyaratan dari kedua
kelas pengguna.Bahasa pemrograman komputer asli yang kecil sekali bahasa alami. mesin
bahasa terstruktur dan mengandung sedikit, jika ada, konstruksi menyerupai tingkat di mana manusia berpikir. Instruksi biasanya mencakup operasi aritmatika dan logika, modifikasi memori petunjuk dan instruksi percabangan. Sebagai contoh, perhitungan keliling mungkin ditulis dalam bahasa assembly sebagai:
Radius beban R1
Mult R1 2 R1
Beban Pi R2
R1 R2 R1 mult
Toko R1 Lingkar
karena model penting lebih dekat dengan perangkat keras yang sebenarnya, program-program penting cenderung lebih efisien dalam penggunaan waktu dan ruang dari program fungsional dan logika setara.Bahasa alam tidak cocok untuk bahasa pemrograman karena manusia sendiri tidak menggunakan alami bahasa ketika mereka membangun formulasi yang tepat dari konsep-konsep dan prinsip-prinsip tertentu pengetahuan domain. Sebaliknya, mereka menggunakan campuran bahasa alam, notasi simbolik formal matematika dan logika dan diagram. Yang paling sukses dari notasi simbolis mengandung beberapa dasar objek yang dapat dikombinasikan melalui beberapa aturan sederhana untuk menghasilkan objek tingkat sewenang-wenang kompleksitas. Dalam sistem ini, manusia mengurangi kompleksitas dengan menggunakan definisi, abstraksi,generalisasi dan analogi. Bahasa pemrograman yang sukses melakukan hal yang sama dengan katering ke alam
pemecahan masalah pendekatan yang digunakan oleh manusia. Idealnya, bahasa pemrograman harus mendekati tingkat di mana manusia akal dan harus mencerminkan pendekatan notasi yang digunakan manusia dalam pemecahan masalah dan harus mencakup cara-cara program penataan untuk memudahkan tugas-tugas pemahaman program, debugging dan pemeliharaan
Bahasa Prinsip Desain
Bahasa pemrograman sebagian besar ditentukan oleh para desainer pentingnya bahasa melekat padamodel komputasi, pembacaan aplikasi domain dimaksudkan, menulis-kemampuan dan efisieneksekusi. Beberapa bahasa yang sangat ditentukan oleh kebutuhan untuk implementasi yang efisien dan eksekusi. Yang lain dirancang untuk setia ke model komputasi.
Penelitian di arsitektur komputer adalah memproduksi Penelitian dalam implementasi bahasa pemrograman adalah memproduksi lebih efisien implementasi bahasa pemrograman untuk semua model perhitungan. Penelitian di rekayasa perangkat lunak adalah menghasilkan pemahaman yang lebih baik penataan program yang teknik yang mengarah ke program yang lebih mudah untuk menulis, membaca (mengerti), dan memelihara.Semua bahasa pemrograman tujuan umum mematuhi desain bahasa pemrograman berikut prinsip.
Prinsip Kesederhanaan
Bahasa harus didasarkan pada sedikitnya
Prinsip Ortogonalitas
Fungsi independen harus dikontrol oleh mekanisme independen.
Prinsip Keteraturan
Satu set objek dikatakan teratur sehubungan dengan beberapa kondisi jika, dan hanya jika, kondisi
ini berlaku untuk setiap elemen dari himpunan.
Prinsip Extensibility
Objek baru dari masing-masing kelas sintaksis dapat dibangun (didefinisikan) dari dasar dan didefinisikan konstruksi dalam suatu cara sistematis.
Prinsip keteraturan dan dan diperpanjang mengharuskan konsep dasar bahasa harus
diterapkan secara konsisten dan universal.
Pada halaman berikut kita akan mempelajari bahasa pemrograman sebagai realisasi dari model komputasi,semantik sebagai hubungan antara model komputasi dan sintaks, dan terkait pragmatis
keprihatinan.
Perspektif historis dan Bacaan Lebih Lanjut
Untuk teks bahasa pemrograman yang menyajikan bahasa pemrograman dari mesin virtual
sudut pandang melihat Pratt, dari sudut pandang semantik denotational melihat Tennent, dan dari metodologi pemrograman sudut pandang melihat Hehner.
l Hehner, E. C. R. (1984)
Logika Pemrograman Prentice-Hall International.
l Pratt, T. W. dan Zelkowitz, M. V. (1996)
Bahasa pemrograman: Desain dan Implementasi 3rd ed. Prentice-Hall.
l Tennent, R. D. (1981)
Prinsip-prinsip Bahasa Pemrograman Prentice-Hall International.
Latihan
1. Mengidentifikasi lingkup aturan yang berlaku pada Gambar 2.
2. Buatlah sebuah jejak pelaksanaan program berikut (yaitu melengkapi bukti berikut).
1. parentOf (john, mary).
2. parentOf (kay, john).
3. parentOf (tagihan, kay).
4. ancestorOf (X, Y) jika parentOf (X, Y).
5. ancestorOf (X, Z) jika parentOf (X, Y) dan ancestorOf (Y, Z).
6. tidak ancestorOf (tagihan, mary).
3. Buatlah sebuah jejak pelaksanaan faktor (4) diberikan definisi fungsi
fac (N) = jika N = 0 maka 1
faktor lain N * (N-1)
4. Buatlah sebuah jejak pelaksanaan program berikut
N: = 4;
F: = 1;
Sementara N> 0 lakukan
F: = N * M;
N: = N-1;
akhir;
5. Menggunakan definisi berikut daftar,
daftar ([]) - daftar kosong
daftar ([X | L]) jika daftar (L) - elemen pertama adalah X sisa
http://cs.wwc.edu/ ~ aabyan / PLBook / HTML / Intro.html (13 dari 14) 2006/08/10 20:25:39
Pengantar
daftar adalah L
[X0, ... Xn] adalah singkatan untuk [X0 |[...[ Xn | []]...]
menyelesaikan perhitungan berikut (bukti) dan menentukan hasil dari concatenating dua
daftar.
1. concat ([], L, L) Fakta
2. concat ([X | L0], L1, [X | L2]) jika concat (L0, L1, L2) Peraturan
3. ¬ concat ([0,1], [a, b], L) Asumsi
6. Mengklasifikasikan bahasa-bahasa berikut dalam hal model komputasi: Ada, APL, BASIC, C,COBOL, FORTRAN, Haskell, Icon, LISP, Pascal, Prolog, SNOBOL.
7. Untuk aplikasi berikut, menentukan model komputasi yang tepat yang bisa berfungsi
untuk memberikan solusi: teller mesin otomatis, sistem kontrol penerbangan, layanan nasihat hukum,tenaga nuklir stasiun pemantauan sistem, dan robot industri.
8. Bandingkan bentuk sintaksis if-command/expression seperti yang ditemukan di Ada, APL, BASIC, C,COBOL, FORTRAN, Haskell, Icon, LISP, Pascal, Prolog, SNOBOL.
9. Bahasa extensible adalah bahasa yang dapat diperpanjang setelah waktu bahasa desain.
Bandingkan fitur diperpanjang dari C atau Pascal dengan orang-orang dari LISP atau Skema.
10. Apa konstruksi bahasa pemrograman C tergantung pada lingkungan lokal?
11. Bahasa apa yang menyediakan untuk mengikat tipe variabel pada run-time?
12. Diskusikan keuntungan dan kerugian dari mengikat awal dan akhir untuk bahasa berikut
fitur. Jenis variabel, ukuran dari sebuah array, bentuk-bentuk ekspresi dan perintah.
13. Membandingkan dua bahasa pemrograman dari paradigma komputasi yang sama sehubungan denganprinsip-prinsip pemrograman bahasa desain.
14. Buatlah program dalam bahasa favorit Anda untuk melakukan salah satu dari berikut:
a. Melakukan integrasi numerik mana fungsi dilewatkan sebagai parameter.
b. Lakukan pemilahan mana fungsi kurang dari dilewatkan sebagai parameter.
Izin untuk membuat salinan digital / hard sebagian atau seluruh pekerjaan ini untuk penggunaan pribadi atau ruang kelas diberikan tanpa biaya dengan ketentuan bahwa salinan tidak dibuat atau didistribusikan untuk keuntungan profit atau komersial, pemberitahuan hak cipta,judul publikasi, dan tanggal muncul, dan pemberitahuan yang diberikan bahwa penyalinan adalah dengan izin dari Anthony A.Aaby. Untuk menyalin sebaliknya, untuk menerbitkan, untuk posting di server, atau untuk mendistribusikan ulang pada daftar, mengharuskan sebelum spesifikizin dan / atau biaya.
© 1998 Anthony A. Aaby. Terakhir Modifikasi -. Kirim komentar untuk aabyan@wwc.edu