Apr 21, 2010 - Uncategorized    No Comments

Haskell

I. Haskell

Haskell merupakan bahasa pemrograman yang fungsional, malas dan murni. Ia disebut ‘malas’ karena tidak mengevaluasi ekspresi-ekspresi yang digunakannya yang sebenarnya memang tidak diperlukan untuk menentukan jawaban bagi suatu masalah. Kebalikan dari ‘malas’ adalah ‘teliti’ yang merupakan strategi pengevaluasian bagi kebanyakan bahasa pemrograman (C, C++, Java, bahkan ML). Salah satu ciri dari bahasa yang teliti adalah setiap ekspresi diteliti apakah hasil dari perhitungan tersebut penting atau tidak.(Hal ini mungkin tidak mutlak benar seluruhnya karena adanya pengoptimalan compiler yang sering disebut dengan“eleminasi kode mati”yang akan menghilangkan ekspresi yang tidak digunakan di program yang sering dilakukan oleh bahasa-bahasa tersebut). Haskell disebut ‘murni’ karena bahasa ini tidak memperbolehkan adanya efek samping (Efek samping adalah sesuatu yang mempengaruhi “bagian” di program. Misalnya suatu fungsi yang mencetak sesuatu ke layar yang mempengaruhi nilai dari variabel global. Tentu saja, suatu bahasa pemrograman yang tanpa efek samping akan menjadi sangat tidak berguna; Haskell menggunakan sebuah system monads untuk mengisolasi semua komputasi kotor dari program dan menampilkannya dengan cara yang aman. Haskell disebut bahasa ‘fungsional’ karena evaluasi dari programnya sama dengan mengevaluasi sebuah fungsi dalam bahasa matematika murni. Hal ini juga yang membedakannya dari bahasa standard (seperti C dan Java) yang mengevaluasi sederetan pernyataan secara urut (inilah pola dari bahasa  terstruktur ) Yang termasuk dalam bahasa pemrograman fungsional antara lain Lisp, Scheme, Erlang, Clean, Mercury, ML, OCaml, SQL, XSL dan lain-lain. Di antara bahasa fungsional tersebut, Haskell merupakan bahasa yang ideal dalam banyak hal. Bahasa fungsional seperti juga bahasa logika seperti Prolog adalah deklaratif. Kebalikannya yaitu bahasa procedural dan bahasa yang berorientasi pada obyek adalah terstruktur. Haskell memiliki sintak yang lebih mudah untuk dipahami daripada Lisp–bahasa turunan–(terutama bagi pemrogram yang pernah menggunakan bahasa yang menggunakan tanda baca yang sederhana/ringan seperti Python, TCL and REXX). Kebanyakan operatornya bersifat infix, tapi ada juga yang prefix. Pengaturan indentasi dan modulnya sangatlah familiar dan mungkin sangat menarik, misalnya tanda kurung bersarang yang terlalu dalam (seperti yang terlihat dalam Lisp) dihindari.

II. Sejarah Haskell

Pada bulan September tahun 1987 diadakan pertemuan dalam konferensi Bahasa Pemrograman Fungsional dan Arsitektur Komputer atau Functional Programming Languages and Computer Architecture (FPCA ’87) di Portland, Oregon, untuk membicarakan keadaan yang kurang menguntungkan di komunitas pemrograman fungsional yaitu adanya selusin bahasa pemrograman fungsional yang murni, kesemuanya mirip dalam hal bentuk ekspresi dan sintaknya. Telah dihasilkan suatu konsensus yang kuat dalam pertemuan itu yaitu bahwa penyebarluasan kegunaan dari kelas bahasa fungsional ini telah dihalangi oleh kekurangan dari kebanyakan bahasa. Telah diputuskan juga bahwa harus ada sebuah komite yang dibentuk untuk merancang suatu bahasa yang menyediakan komunikasi gagasan baru yang lebih cepat, suatu dasar yang stabil bagi pengembangan aplikasi nyata dan sebuah cara untuk membuat orang tertarik menggunakan bahasa fungsional. Kemudian diciptakanlah sebuah bahasa pemrograman fungsional yang murni yang dinamai Haskell. Nama tersebut diambil dari nama seorang ahli logika yaitu Haskell B. Curry yang telah menciptakan banyak dasar-dasar logika bagi kita. Tujuan utama dari komite tersebut adalah untuk merancang bahasa yang memenuhi syarat sebagai berikut :

1. Harus cocok untuk pengajaran, penelitian dan aplikasi termasuk untuk membuat sistem yang besar.

2. Harus seluruhnya dijelaskan melalui sintak dan semantik yang formal.

3. Harus tersedia secara bebas. Semua orang boleh mengimplementasikan bahasa tersebut dan menyebarkannya ke siapa saja yang mereka sukai.

4. Harus didasarkan pada gagasan yang sesuai dengan konsensus umum.

5. Harus mengurangi perubahan yang tidak diperlukan dalam bahasa pemrograman fungsional.

Komite tersebut menganggap bahwa Haskell dapat dijadikan sebagai bahan penelitian masa depan dalam bidang rancangan bahasa dan berharap bahwa variasi bahasa akan muncul sesuai dengan hasil percobaan. Haskell kemudian terus berkembang sejak dipublikasikan. Pada pertengahan tahun 1997, telah ada empat rancangan bahasa yang dihasilkan (yang terbaru pada saat itu adalah Haskell 1.4). Pada saat workshop Haskell tahun 1997 di Amsterdam, diputuskan bahwa diperlukan varian yang stabil dari Haskell. Bahasa yang stabil ini disebut  “Haskell 98”. Haskell 98 mirip dengan Haskell 1.4, tapi ia menawarkan beberapa penyederhanaan dan penghilangan lubang-lubang jebakan karena ketidakhati-hatian.

III. Kelebihan & Kekurangan Haskell

Kelebihan dari Haskel antara lain:

1. Meningkatkan produktifitas programmer (Ericsson banyak memanfaatkan hasil percobaan Haskell dalam software telephony)

2. Lebih singkat, lebih jelas dan kode-kodenya mudah dibaca

3. Errornya semakin sedikit dan reabilitynya lebih tinggi

4. Membuat jarak antara programmer dengan bahasa itu lebih pendek

5. Waktu untuk membuat program menjadi lebih singkat

Sebagai contoh:

Kelemahan dari Haskell:

1. kode programnya cenderung agak lambat berkembang dibanding program yang sama yang ditulis dalam bahasa seperti C

2. Haskell cenderung sulit untuk didebug.

IV. NILAI, TIPE, DAN ATRIBUT LAINNYA

* Tipe Polimorfis

Haskell juga menyertakan tipe polimorfis – tipe yang dalam beberapa cara terukur di atas semua tipe. Ekspresi tipe polimorfis menguraikan keluarga dari tipe-tipe. Sebagai contoh, ()[a] adalah keluarga dari tipe di mana untuk setiap tipe a berisi tipe list dari a. List dari integer (seperti [1,2,3]), list dari karakter ([‘a’,’b’,’c’]), sekalipun list dari list integer, dll, adalah anggota dari keluarga ini. (Sebagai catatan [2,’b’] bukan contoh yang valid karena tidak ada tipe tunggal yang berisi 2 dan ‘b’).

List merupakan struktur data yang umum digunakan dalam bahasa fungsional, dan merupakan sarana yang baik untuk menerangkan prinsip-prinsip dari polimorfisme. List [1,2,3] dalam Haskell merupakan kependekan dari list 1:(2:(3:[])), di mana [] merupakan list kosong dan : merupakan operator infix yang meletakkan argumen pertama di depan argumen kedua (dalam hal ini list), atau dapat juga ditulis 1:2:3:[].

Sebagai contoh dari fungsi user-defined yang beroperasi pada list, pertimbangkan masalah menghitung jumlah elemen dalam list berikut:

length           ::  [a] -> Integer

length []       =  0

length (x:xs)   =  1 + length xs

Dari persamaan di atas terbaca: “Panjang dari list kosong adalah 0, dan panjang dari list di mana elemen pertamanya x dan sisanya xs adalah 1 ditambah panjang dari xs.” (sebagai catatan xs merupakan jamak dari x, dan harus dibaca demikian).

Walaupun secara intuitif, contoh di atas menyorot sebuah aspek penting dari Haskell, yaitu pattern matching (pencocokan pola). Ruas kiri persamaan mengandung pola seperti [] dan x:xs. Dalam sebuah fungsi aplikasi, pola-pola seperti ini dibandingkan dengan parameter aktual (nyata) dengan cara intuitif ([]x:xs akan cocok dengan list apa saja dengan minimal satu elemen, x dihubungkan dengan elemen pertama dan xs hanya cocok dengan list kosong, dan dengan sisanya dalam list). Jika pencocokan sukses, ruas kanan dievaluasi dan dikembalikan sebagai hasil dari aplikasi. Jika gagal, persamaan berikutnya akan dicoba, dan jika semua persamaan gagal, maka hasilnya error.

Fungsi length di atas juga merupakan contoh dari sebuah fungsi polimorfis. Fungsi tersebut dapat diterapkan pada list yang berisi elemen bertipe apa saja, sebagai contoh [Integer], [Char], atau [[Integer]].

length [1,2,3] 3

length [‘a’,’b’,’c’] 3

length [[1],[2],[3]] 3

Berikut adalah 2 contoh fungsi polimorfis dalam list. fungsi head mengembalikan elemen pertama dari list, fungsi tail mengembalikan semua elemen kecuali elemen pertama.

head       :: [a] -> a

head (x:xs)     =  x

tail       :: [a] -> [a]

tail (x:xs)     =  xs

Tidak seperti fungsi length, fungsi-fungsi di atas tidak didefinisikan untuk semua nilai yang mungkin dari argumen mereka. Runtime error (kesalahan saat program dijalankan) akan muncul saat fungsi-fungsi tersebut diterapkan pada list kosong.

Dengan tipe polimorfis beberapa tipe lebih umum dibanding lainnya dalam hal himpunan nilai yang didefinisikan lebih besar. Sebagai contoh tipe [a][Char]. Dengan kata lain, tipe terakhir dapat diturunkan dari sebelumnya dengan substitusi yang cocok untuk a. Dibandingkan dengan bahasa bertipe monomorfis seperti C, polimorfisme meningkatkan ke-ekspresif-an, dan tipe inferensi meringankan beban tipe dari pemrogram. adalah lebih umum dari

Tipe prinsipal (utama) dari ekspresi atau fungsi adalah tipe yang paling tidak umum, secara intuitif, “berisi semua instan dari ekspresi”. Sebagai contoh, tipe prinsipal dari fungsi head adalah [a] -> a; [b] -> a, a -> a.

* Tipe User-Defined

Kita dapat menentukan tipe data sendiri dalam Haskell menggunakan deklarasi data.

Tipe penting yang sudah dikenal oleh Haskell adalah nilai kebenaran:

data Bool  =  False | True

Tipe yang didefinisikan di sini adalah Bool yang mempunyai dua nilai, yaitu True dan False. Tipe Bool adalah sebuah contoh dari tipe konstruktor, dan True dan False adalah data konstruktor (atau konstruktor saja).

Dengan cara yang sama kita dapat mendefinisikan tipe warna:

data Color =  Red | Green | Blue | Indigo | Violet

Bool dan Color dalam contoh di atas merupakan tipe enumerasi.

Berikut contoh dari tipe dengan hanya satu data konstruktor:

data Point a  =  Pt a a

Karena merupakan konstruktor tunggal, tipe seperti Point sering disebut tipe tuple, karena merupakan produk kartesian (dalam hal ini biner) dari tipe lain. Berlawanan dengan itu, tipe multi-konstruktor seperti Bool dan Colorunion dari tipe sum. disebut

Point merupakan contoh dari tipe polimorfis: untuk semua tipe t, ia mendefinisikan tipe dari titik-titik kartesian yang menggunakan t sebagai tipe koordinat. Dalam contoh sebelumnya [] juga merupakan tipe konstruktor. Pada tipe t (bertipe apa saja) dapat diterapkan [] untuk menghasilkan tipe baru [t]. sintaks Haskell mengizinkan  [] t ditulis sebagai [t]. -> juga merupakan tipe konstruktor; diberikan 2 tipe t dan u, t -> u merupakan tipe dari fungsi pemetaan elemen dari tipe t ke elemen dari tipe u.

Catatlah bahwa tipe dari konstruktor data biner Pt adalah a -> a -> Point a, sehingga yang berikut adalah valid:

Pt 2.0 3.0      ::  Point Float

Pt ‘a’ ‘b’      ::  Point Char

Pt True False   ::  Point Bool

Pada sisi lain, ekspresi seperti Pt ‘a’ 1 tidak valid karena ‘a’ dan 1 berbeda tipe.

Penting untuk membedakan antara menerapkan data konstruktor untuk menghasilkan nilai, dan menerapkan tipe konstruktor untuk menghasilkan tipe; yang pertama terjadi saat run-time dan bagaimana kita menghitung dalam Haskell, di mana yang terakhir terjadi saat compile-time.

Tipe konstruktor seperti Point dan data konstruktor seperti Pt adalah dalam namespaces terpisah. Ini memungkinkan nama yang sama untuk digunakan oleh tipe konstruktor dan data konstruktor, seperti berikut:

data Point a = Point a a

* Tipe Rekursif

Tipe dapat juga rekursif, seperti tipe dalam pohon biner:

data Tree a = Leaf a | Branch (Tree a) (Tree a)

Di sini didefinisikan tipe polimorfis pohon biner yang mana elemen-elemennya adalah node Leaf berisi nilai dari tipe a, atau node internal (“branch”) berisi dua sub-tree (rekursif).

Saat membaca deklarasi data seperti ini, ingat bahwa Tree adalah tipe konstruktor, di mana Branch dan Leaf adalah data konstruktor. Di samping menciptakan koneksi antara konstruktor-konstruktor ini, deklarasi di atas mendefinisikan tipe berikut untuk Branch dan Leaf:

Branch     ::  Tree a -> Tree a -> Tree a

Leaf       ::  a -> Tree a

Dengan contoh di atas telah didefinisikan suatu tipe yang cukup kaya untuk mendefinisikan beberapa fungsi (rekursif) yang menggunakannya. Sebagai contoh akan didefinisikan sebuah fungsi fringe yang mengembalikan sebuah list dari semua elemen dalam daun dari sebuah pohon dari kiri ke kanan. Biasanya akan sangat membantu jika dituliskan terlebih dulu tipe dari fungsi baru; dalam kasus ini tipe seharusnya Tree a -> [a]. fringe merupakan fungsi polimorfis di mana untuk semua tipe a, memetakan pohon dari a ke list dari a. Definisi yang tepat sebagai berikut:

fringe                     :: Tree a -> [a]

fringe (Leaf x)            = [x]

fringe (Branch left right) = fringe left ++ fringe right

Di sini ++ merupakan operator infix yang menggabungkan dua list.

* Tipe Sinonim

Untuk kenyamanan, Haskell menyediakan cara untuk mendefinisikan tipe sinonim, yaitu nama untuk tipe yang sering dipakai. Tipe sinonim dibuat menggunakan deklarasi type. Berikut beberapa contoh:

type String          =  [Char]

type Person          =  (Name,Address)

type Name       =  String

data Address    =  None | Addr String

Tipe sinonim tidak mendefinisikan tipe baru, tetapi memberi nama baru kepada tipe-tipe yang sudah ada. Sebagai contoh tipe Person -> Name(String,Address) -> String. Nama yang baru seringkali lebih pendek dari tipe sinonimnya, tetapi itu bukan satu-satunya tujuan dari tipe sinonim: tipe sinonim meningkatkan kemudahan membaca sebuah program dengan menjadi lebih mnemonik. Bahkan tipe polimorfis sekalipun dapat diberi nama baru: setara dengan

type AssocList a b      =  [(a,b)]

Ini merupakan “tipe asosiasi” yang mengasosiasikan nilai dari tipe a dengan nilai dari tipe b.

* Operator

Untuk tipe data angka, terdapat operator aritmatika untuk penjumlahan, pengurangan, perkalian, dan pembagian.  Dengan operator-operator tersebut, kita bisa menggunakan interpreter Haskell sebagaimana menggunakan kalkulator.  Inilah beberapa contohnya:

? 1 + 1

> 2

?  5 – 3

> 2

? 7 * 7

> 49

? 4 / 2

> 2.0

? (2 * 2) – (4 * 1 * 3)

> -8

? 3.14 * 2.1 * 2.1

> 13.8474

Dalam contoh-contoh di atas, tanda tanya (?) mengawali input yang kita tuliskan dan tanda lebih besar (>) mengawali outputnya.  Salah satu hal yang menarik adalah bahwa pembagian Integer dengan Integer menghasilkan bilangan floating point.  Hal ini seperti di Pascal, dan berbeda dengan LISP (nenek moyang Haskell) dan C/C++/C#/Java.

Di Haskell, list merupakan tipe data yang fundamental.  Seperti yang telah disebutkan, list hanya bisa berisi satu tipe data (misalnya integer).  Membuat list sangatlah mudah, yaitu dengan syntax berikut:

? [1, 2, 3, 4]

> [1,2,3,4]

? [‘a’, ‘b’, ‘c’]

> [1,2,3,4]

? [3.14, 2.72]

> [3.14,2.72]

? []

> []

Kita bisa membuat deret aritmatika dengan mudah, misalnya:

? [1..10]

> [1,2,3,4,5,6,7,8,9,10]

? [2,4..20]

> [2,4,6,8,10,12,14,16,18,20]

Kita juga dapat membuat deret tak hingga misalnya [1,3,..], tetapi kalau itu kita lakukan maka interpreter tidak akan pernah selesesai menuliskan anggota deret tersebut (kecuali kalau kita hentikan).

Salah satu operasi list yang sederhana adalah penjumlahan list, contohnya:

? [1..10] ++ [21..30]

Ø [1,2,3,4,5,6,7,8,9,10,21,22,23,24,25,26,27,28,29,30]

V. Kesimpulan

Bahasa pemrograman Haskell merupakan bahasa pemrograman yang sangat sederhana dan mudah dipelajari. Hal ini tidak lain disebabkan karena Haskell merupakan bahasa pemrograman fungsional murni. Oleh karena itu Haskell dapat:

1. Meningkatkan produktifitas programmer (Ericsson banyak memanfaatkan hasil percobaan Haskell dalam software telephony)

2. Lebih singkat, lebih jelas dan kode-kodenya mudah dibaca

3. Errornya semakin sedikit dan reabilitynya lebih tinggi

4. Membuat jarak antara programmer dengan bahasa itu lebih pendek

5. Waktu untuk membuat program menjadi lebih singkat

Selain itu, dalam Haskell tidak ada varibel yang berubah, tidak ada efek samping dari penggunaan sebuah fungsi, tidak ada perulangan, dan tidak ada program order.

Akan tetapi, Haskell sendiri kurang dikenal dibandingkan bahasa-bahasa pemrograman terstruktur. Hal ini disebabkan karena gaya berfikir seorang programmer, terutama programmer yang terbiasa menggunakan bahasa pemrograman terstruktur, harus sedikit diubah ketika ia ingin membuat program dengan menggunakan Haskell. Selain itu, Haskell punya beberapa kelemahan, antara lain:

1. kode programnya cenderung agak lambat berkembang dibanding program yang sama yang ditulis dalam bahasa seperti C

2. Haskell cenderung sulit untuk didebug.

Apr 21, 2010 - Uncategorized    33 Comments

JARINGAN KOMPUTER TUGAS PENDAMPING UTS

Problems

1. An upper-layer packet is split into 10 frames, each of which has an 80 percent chance of arriving undamaged. If no error control is done by the data link protocol, how many times must the message be sent on average to get the entire thing through?

ANSWER:

Because there are no error found, so the data will be sent just once. Cause no need to transmit data anymore when receiver recieve the data correctly. After receive data, receiver will send message that data has beed received correctly. Since each frame has a chance of 0.8 of getting through, the chance of the 1 whole message getting through is 0.8 ^10, which is about.1/0.107 = 9.3

2. The following character encoding is used in a data link protocol: A: 01000111; B: 11100011; FLAG: 01111110; ESC: 11100000 Show the bit sequence transmitted (in binary) for the four-character frame: A B ESC FLAG when each of the following framing methods are used:

ANSWER:

a. (a) Character count.

00000101 01000111 11100011 11100000 01111110

b. (b) Flag bytes with byte stuffing.

A B ESC FLAG è FLAG A B ESC ESC ESC FLAG FLAG

c. (c) Starting and ending flag bytes, with bit stuffing.

01111110 01000111 11100011 11100000 11100000 11100000 01111110 01111110

FLAG A B ESC FLAG FLAG

3. The following data fragment occurs in the middle of a data stream for which the byte-stuffing algorithm described in the text is used: A B ESC C ESC FLAG FLAG D. What is the output after stuffing?

ANSWER:

A B ESC C ESC FLAG FLAG D è A B ESC ESC C ESC ESC ESC FLAG ESC FLAG D

4. One of your classmates, Scrooge, has pointed out that it is wasteful to end each frame with a flag byte and then begin the next one with a second flag byte. One flag byte could do the job as well, and a byte saved is a byte earned. Do you agree?

ANSWER:

No. In a perfect situation when the data stream is continuous and there’s no error, having           only the starting flag byte is OK. However, if there is a long interval between the first                frame and the 2nd frame, the receiver wouldn’t be able to determine if the first frame has                 finished transmitting or not. Having both flags is also more stable.

5. A bit string, 0111101111101111110, needs to be transmitted at the data link layer. What is the string actually transmitted after bit stuffing?

ANSWER:

Original : 0111101111101111110

Stuffed bits : 011110111110011111010

after destuffing : 0111101111101111110

6. When bit stuffing is used, is it possible for the loss, insertion, or modification of a single bit to cause an error not detected by the checksum? If not, why not? If so, how? Does the checksum length play a role here?

ANSWER:

No, this stuffed bit is added even if the following data bit is 0, which could not be mistaken for a sync sequence, so that the receiver can unambiguously distinguish stuffed bits from normal bits.

7. Can you think of any circumstances under which an open-loop protocol, (e.g., a Hamming code) might be preferable to the feedback-type protocols discussed throughout this chapter?

ANSWER:

If the propagation delay is very long, as in the case of a space probe on or near Mars or                 Venus, forward error correction is indicated. It is also appropriate, in a military situation in    which the receiver does not want to disclose his location by transmitting. If the error rate               is low enough that an errorcorrecting code is good enough, it may also be simpler.            Finally, real-time systems cannot tolerate waiting for retransmissions.

8. To provide more reliability than a single parity bit can give, an error-detecting coding scheme uses one parity bit for checking all the odd-numbered bits and a second parity bit for all the even-numbered bits. What is the Hamming distance of this code?

ANSWER:

Although the first parity bit can detect even-numbered bits and the second parity bit can             detect odd-numbered bits, this coding scheme can only detect ALL single error for sure,       that is, d=1. Therefore, the Hamming distance is d+1=2. Although it can sometimes detect       2 errors (one even-numbered, one odd-numbered), it cannot detect all the 2 errors.

9. Sixteen-bit messages are transmitted using a Hamming code. How many check bits are needed to ensure that the receiver can detect and correct single bit errors? Show the bit pattern transmitted for the message 1101001100110101. Assume that even parity is used in the Hamming code.

ANSWER:

using the formula (m+r+1)<=2r we can determine that we will need 5 parity bits.The bit pattern transmitted with hamming code will be 011110110011001110101

10. An 8-bit byte with binary value 10101111 is to be encoded using an even-parity Hamming code. What is the binary value after encoding?

ANSWER:

101001001111

11. A 12-bit Hamming code whose hexadecimal value is 0xE4F arrives at a receiver. What was the original value in hexadecimal? Assume that not more than 1 bit is in error.

ANSWER:

0XE4F = 111001001111

original value is : 101001001111, i.e. 0XA4F

: 10101111, i.e.  0XAF

12. One way of detecting errors is to transmit data as a block of n rows of k bits per row and adding parity bits to each row and each column. The lower-right corner is a parity bit that checks its row and its column. Will this scheme detect all single errors? Double errors? Triple errors?

ANSWER:

Yes, it will detect all single errors, double errors, but not triple errors, as there is one case that three errors occur but none of the parity bits can detect. That is, when one message bit is flipped, and the corresponding row and column parity bits are flipped as well.

13. A block of bits with n rows and k columns uses horizontal and vertical parity bits for error detection. Suppose that exactly 4 bits are inverted due to transmission errors. Derive an expression for the probability that the error will be undetected.

ANSWER:

For the error to be undetected, the inverted bits must form a squre pattern. There is a total of  (nk/4) possibilities for where 4 bit errors occur, co the change of being undetected is : (n/2)(k/2)/(nk/4)

14. What is the remainder obtained by dividing x7 + x5 + 1 by the generator polynomial x3 + 1?

ANSWER:

M (x) = x7 + x5 + 1

G (x) =  x3 + 1

since degree of G (x) is r=3, append 3 zero bits to the lower end of M(x)

frame: 10100001

generator: 1001

message after 3 zero bits are appended: 10100001000

the remainder obtained by deviding x7 + x5 + 1 by the generator polynomial x3 + 1 is 111

15. A bit stream 10011101 is transmitted using the standard CRC method described in the text. The generator polynomial is x3 + 1. Show the actual bit string transmitted. Suppose the third bit from the left is inverted during transmission. Show that this error is detected at the receiver’s end.

ANSWER:

This frame is 10011101. the generator is 1001. the message after apening three zeros is 10011101000. the remainder on dividing 10011101000 by 1001 is 100. so, the actual bit string transmitted is 10011101100. the received bit stream with an error in the third bit from the left is 10111101100. dividing this by 1001 produces as remainder 100, which is different from zero. Thus, the receiver detects the error and can ask for a retransmission.

16. Data link protocols almost always put the CRC in a trailer rather than in a header. Why?

ANSWER:

The CRC is computed during transmission and appended to the output stream as soon as the last bit goes out onto the wire. If the CRC were in the header, it would be necessary to make a pass over the frame to the compute the CRC before transmitting. This would require each byte to be handled twice once for checksumming and once for transmitting. Using the trailer cuts the work in half.

17. A channel has a bit rate of 4 kbps and a propagation delay of 20 msec. For what range of frame sizes does stop-and-wait give an efficiency of at least 50 percent?

ANSWER:

Efficiency will be 50% when the time to transmit the frame equals the roundtrip propagation delay. At a transmission rate 4 bits/ms, 160 bits taken 40ms. For frame sizes above 160 bits, stop-and-wait is reasonably efficient.

18. Imagine a sliding window protocol using so many bits for sequence numbers that wraparound never occurs. What relations must hold among the four window edges and the window size, which is constant and the same for both the sender and the receiver.

ANSWER:

S1 : sender’s lower edge

S2 : sender’s upper edge

R1 : receiver’s lower edge

S1 : receiver’s upper edge

W : window size

there are three main condition must hold among the four window edges and the window size:

- the sender must keep track of 0 to w frames that have currently been sent but have acknoeledgement i.e outstanding

0 <= S2-S1+1 <= W

- the receiver will expect up to w frames

R2-R1+1=W

- the receiver sequence number must be within the sender’s window

S1 <= R1 <= S2 + 1

19. Frames of 1000 bits are sent over a 1-Mbps channel using a geostationary satellite whose propagation time from the earth is 270 msec. Acknowledgements are always piggybacked onto data frames. The headers are very short. Three-bit sequence numbers are used. What is the maximum achievable channel utilization for

a. (a) Stop-and-wait.

b. (b) Protocol 5.

c. (c) Protocol 6.

ANSWER:

left t=0 denote the star if transmission. At t=1 msec, the first frame has been fully           transmitted. At t= 271 msec, the first frame fully arrived. At t = 272msec, the frame   acknowledging the first one has been fully sent. At t =542msec, the acknowledgement          bearing frame has fully arrived. Thus, the cycle is 542msec. A total of k frames are sent in             542 msec, for an efficienct of k/542.

(a) k =1, efficiency =1/542=0.18%

(b) k =7, efficiency =7/542=1.29%

(c) k =4, efficiency =4/542=0.74%

20.
Compute the fraction of the bandwidth that is wasted on overhead (headers and retransmissions) for protocol 6 on a heavily-loaded 50-kbps satellite channel with data frames consisting of 40 header and 3960 data bits. Assume that the signal propagation time from the earth to the satellite is 270 msec. ACK frames never occur. NAK frames are 40 bits. The error rate for data frames is 1 percent, and the error rate for NAK frames is negligible. The sequence numbers are 8 bits.

ANSWER:

(40+40+0.4)/4000=0.0199

Nov 7, 2009 - Uncategorized    10 Comments

ie-kHa-DhEe…

Ilmu Kealaman Dasar

Kelahiran Ilmu Pengetahuan Modern

I. PENDAHULUAN
Rasa ingin tahu manusia yang terus berkembang sebagai hasil perkembangan pola pikir manusia yang terakumulasi dari hasil pengamatan dan pengalaman telah mendorong manusia untuk melahirkan pendekatan kebenaran yang tidak hanya mengandalkan kemampuan rasio belaka, dorongan tersebut setidaknya terdiri dari dua sisi; yakni dorongan pertama adalah dorongan untuk memuaskan diri sendiri yang sifatnya non praktis atau teoritis guna memenuhi kuriositas dan memahami tentang hakikat alam semesta dan segala isinya, yang selanjutnya melahirkan pure science (Ilmu pengetahuan murni). Sementara dorongan yang ke-dua adalah dorongan yang sifatnya praktis, dimana ilmu pengetahuan dimanfaatkan untuk meningkatkan tarap hidup yang lebih tinggi, dan selanjutnya disebut dengan Applied science (Ilmu pengetahuan terapan/teknologi).
Kedua dorongan inilah yang memicu manusia untuk menemukan pengetahuan-pengetahuan baru yang menjadi titik awal lahirnya pengetahuan alamiah modern yang semakin berkembang dari zaman ke zaman.
Makalah ini secara tidak langsung akan membahas tentang bagaimana proses kelahiran pengetahuan alamiah modern yang menjadi suatu hal yang sangat menarik untuk dipelajari lebih lanjut.

II. TEORI – TEORI


1. ILMU PENGETAHUAN

Menurut Prof DR. M. J. Langerveld, Guru besar pada Rijk University di Utrecht (Belanda) Ilmu Pengetahuan adalah kumpulan pengetahuan mengenai suatu hal tertentu, yang merupakan kesatuan sistematis dan memberikan penjelasan yang sistematis yang dapat dipertanggungjawabkan dengan sebab-sebab suatu kejadian. Ilmu adalah pengetahuan yang mempunyai ciri-ciri tertentu yang dapat membedakannya dengan pengetahuan lainnya, diantara ciri khas ilmu atau ilmu pengetahuan yaitu obyektif, metodik, sistematik, dan berlaku umum. Dengan sifat-sifat tersebut, maka orang yang berkecimpung atau selalu berhubungan dengan pengetahuan akan terbimbing sedemikian hingga padanya terkembangkan suatu sikap yang disebut sikap ilmiah.
Objek penelaah ilmu adalah seluruh segi kehidupan yang dapat di uji oleh panca indra manusia. Ilmu membatasi diri pada kejadian-kejadian yang besifat empiris, yang terjangkau oleh fitrah pengalaman manusia dengan menggunakan panca indranya. Objek dibedakan atas dua hal yaitu, objek material adalah objek yang dilihat secara keseluruhan, dan objek formal yang dilihat dari suatu aspek tertentu saja.

2. METODE KEILMUAN
Untuk mendapatkan pengetahuan yang disebut ilmu memerlukan pencarian pengetahuan yang dapat dilakukan secara nonilmiah dan ilmiah dengan mengacu pada kerangka filsafat. Pencarian ilmu pengetahuan ilmiah (metode ilmiah) dilakukan berdasarkan pemikiran rasional, pengalaman empiris (fakta), maupun referensi pengalaman sebelumnya. Cara untuk mendapatkannya harus memenuhi persyaratan-persyaratan sebagai berikut:
1. Objektif, pengetahuan itu harus sesuai objeknya.
2. Metodik, pengetahuan itu diperoleh dengan menggunakan cara-cara tertentu yang teratur dan terkontrol.
3. Sistimatis, pengetahuan ilmiah yang tersusun dalam suatu sistem, tidak berdiri sendiri, satu dengan yang lainnya saling berkaitan, saling menjelaskan sehingga keseluruhannya merupakan satu kesatuan yang utuh.
4. Berlaku Umum, pengetahuan itu tidak hanya berlaku atau dapat diamati oleh seseoramg atau sekelompok orang, tetapi dengan pengalaman itu diperoleh hasil yang sama atau konsisten.
Keseluruhan langkah ini harus ditempuh agar suatu penelaahan dapat disebut ilmiah, lewat metode inilah nantinya akan melahirkan ilmu-ilmu baru yang menjadi cikal bakal lahirnya ilmu alamiah modern terutama Ilmu Pengetahuan Alam (IPA).

3. KELAHIRAN IPA
Pada mulanya manusia percaya mitos yang sekarang dinilai sebagai pengetahuan semu (pseduo knowledge). Mengapa? Karena mitos tidak pernah memuaskan maka dicarilah pengetahuan sesungguhnya (pure science). Objek utama yang dipikirkan manusia adalah alam sehingga lahirlah pengetahuan alam (natural science).
Untuk menemukan ilmu pengetahuan, harus digunakan perpaduan antara rasionalisme dan empirisme, yang dikenal sebagai metode keilmuan atau pendekatan ilmiah.
Pengetahuan yang disusun dengan cara pendekatan ilmiah atau metode keilmuan, diperoleh melalui kegiatan penelitian ilmiah. Penelitian ilmiah ini dilaksanakan secara sistematik dan terkontrol berdasarkan atas data-data empiris. Kesimpulan dari penelitian ini dapat menghasilkan suatu teori. Teori ini masih dapat menghasilkan suatu teori dan masih dapat diuji konsistensi serta kemantapannya. Metode keilmuan itu bersifat objektif, bebas dari keyakinan perasaan dan prasangka pribadi serta bersifat terbuka.
Jadi, suatu ilmu pengetahuan dapat digolongkan sebagai ilmu pengetahuan bilamana cara memperolehnya menggunakan metode keilmuan, yaitu gabungan rasionalisme dan emperisme.
Secara lengkap dapat dikatakan bahwa suatu himpunan pengetahuan dapat disebut IPA bilamana persyaratan berikut: objeknya pengalaman manusia yang berupa gejala-gejala alam, yang dikumpulkan melalui metode keilmuan serta mempunyai manfaat untuk kesejahteraan manusia.
Kapan ilmu pengetahuan (sains) lahir ? secara waktu mungkin sulit untuk ditetapkan tetapi yang jelas sesuatu dinyatakan pengetahuan sains adalah apabila pendekatan kebenaran tertumpu pada rational approach and empiric approach yakni kebenaran yang secara rasional dapat dimengerti dan difahami serta dibuktikan secara fakta dan menggunakan peralatan ilmiah.

4. PERKEMBANGAN PENGETAHUAN DARI MASA KE MASA
1. Zaman Purba
Pada zaman purba, manusia selain mewariskan alat-alat purba, juga mewariskan cara bercocok tanam dan cara berternak. Peninggalan-peninggalan alat-alat, tanaman, ternak tersebut menunjukkan bahwa manusia purba telah mempunyai pengetahuan untuk memperolehnya. Penemuan-penemuan itu terjadi baik secara kebetulan ataupun disengaja semuanya berdasarkan pengamatan primitif, dan mungkin dilanjutkan dengan percobaan-percobaan yang dilakukan dengan tanpa dasar dan tanpa pengaturan, tetapi dengan mengikuti proses”Trial and error”. Dengan demikian tersusunlah ”know how” meskipun tidak diketahui sebabnya, tidak diketahui ”mengapanya”. Dengan demikian maka zaman batu ini ditandai oleh pengetahuan ”know how” yang diperoleh berdasarkan Kemampuan mengamati, membeda-bedakan, memilih, melakukan percobaan tanpa disengaja, yang berlandaskan dengan proses ”Trial and error”.
Setelah zaman ini masa 15000 sampai kurang lebih 600 tahun SM. Masih merupakan kelanjutan dari zaman batu. Mereka masih mewarisi pengetahuan dari zaman batu, tetapi diantara mereka ada yang mampu mengolah logam. Dalam hal pembuatan logam, alat-alat mereka tidak lagi terbuat dari batu, melainkan dari perunggu atau besi. Pada zaman purba tersebut manusia menggantungkan diri pada kepercayaan agama yang politistik. Mereka percaya bahwa dewa-dewa berada di bulan, matahari, bintang, karena itu, benda-benda angkasa itu terus-menerus diamati. Dan mereka mulai menyusun kalender sebagai pedoman waktu untuk mengatur kehidupan ritual, pekerjaan sehari-hari dan kehidupan biasa pada umumnya.
Penemuan-penemuan tersebut di atas merupakan proses alamiah yang hanya mungkin pada zaman itu mencari dan akhirnya menemukan dan mampu menggunakan angka-angka dan abjad untuk melakukan perhitungan-perhitungan. Di samping kemampuan-kemampuan dan penemuan-penemuan tersebut, mereka bisa membentuk kemampuan mengukur, kemampuan ini digunakan untuk mengukur bidang tanah dan perladangan juga mengukur hasil panennya. Untuk keperluan pengukuran-pengukuran tersebut juga telah ditemukan bentuk segitiga, segitiga siku-siku, dan sudut siku-siku. Kemudian ilmu berkembang dan menjelma menadi ilmu hitung (arithmetic) dan ilmu ukur (geometry).
2. Zaman Yunani
Masa 600 tahun sebelum masehi sampai kurang lebih 200 tahun sebelum masehi biasanya disebut zaman Yunani. Dalam zaman ini proses-proses perkembangan know how tetap mendasari kehidupan sehari-hari, tapi lebih maju daripada zaman sebelumnya. Dalam bidang pengetahuan sikap dan pemikiran yang sekedar menerima apa adanya, terjadi perubahan besar, dan perubahan ini dianggap sebagai dasar ilmu pengetahuan modern. Hal ini berdasarkan pada sikap bangsa Yunani yang tidak dapat menerima pengalaman-pengalaman secara pasif receptif. Mereka memiliki ”inquiry atitude” dan ”inquiry mind” orang pertama yang mempertanyakan dasar dari alam dan isi alam ini adalah Thales (624-548 SM). Pemikiran Thales dalam rangka membahas perkembangan ilmu pengetahuan ”Yang penting bukan jawaban yang diberikan, tetapi diajukannya pertanyaan tersebut”. Karena dari pertanyaan akan menimbulkan atau menyebabkan pemeriksaan dan penelitian yang terus menerus. Jadi, pertanyaan merupakan suatu motor yang tetap mendorong pemikiran dan penyelidikan.
Disamping Thales terdapat banyak tokoh filsafat Yunani yang besar sekali sumbangannya pada perkembangan ilmu pengetahuan diantaranya adalah Al-Fargani, Jabir bin Hayyam, Phytagoras, Aristoteles dan Archimedes.
3. Zaman Modern
Pada permulaan abad ke-14, di Eropa di mulai perkembangan ilmu pengetahuan. Sejak zaman itu sampai sekarang Eropa menjadi pusat kemajuan ilmu pengetahuan dan umat manusia pada umumnya. Permulaan perkembangannya dicetuskan oleh Roger Bacon (1214-1294) yang menganjurkan agar pengalaman manusia sendiri dijadikan sumber pengetahuan dan penelitian. Copernicus, Tycho Broche, Keppler dan Galileo merupakan pelopor dalam mengembangkan pengetahuan yang didasarkan pada pengalaman tersebut.
Perkembangan ilmu pengetahuan menjadi sangat mantap dan pesat setelah ditulisnya buku yang berjudul Novum Organum oleh Francis Bacon (1560-1626) yang mengutarakan tentang landasan empiris dalam mengembangkan pengetahuan dan penegasan ilmu pengetahuan dengan metodenya.
Bila dilihat dari segi metodologi dan psikologi maka seluruh ilmu pengetahuan tersebut didasarkan pada:
1. Pengamatan dan pengalaman manusia yang terus menerus
2. Pengumpulan data yang terus menerus dan dilakuakan secara sistematis
3. Analisis data yang ditempuh dengan berbagai cara.
4. Penyusunan model-model atau teori-teori, serta penyusunan ramalan-ramalan sehubungan dengan model itu.
5. Percobaan untuk menguji ramalan tersebut.
Percobaan ini akan menghasilkan beberapa kemungkinan, diantaranya: benar atau salah. Jika terbukti salah, terbuka kemungkinan untuk mencari kesalahan berfikir, sehingga terbuka juga kemungkinan untuk memperbaikinya. Dengan demikian ilmu pengetahuan modern memiliki suatu sistem yang didalamnya terkandung mengoreksi diri, yang memungkinkan ditiadakannya kesalahan demi kesalahan secara bertahap menuju kebenaran.


III. KESIMPULAN

1. Teknologi berarti ilmu yang mempelajari tentang “techne” manusia.

2. Dalam memahami teknologi di Indonesia memerlukan beberapa pendekatan.

3. Sains merupakan cara kerja yang sistematis dan komprehensif dengan menggunakan metode ilmiah.

4. Sains dan teknologi bersifat komplementer yang saling melengkapi sebagai bejana berhubungan.

5. Syarat aplikasi sains yang layak sebagai teknologi adalah harus rasional dan efisien

6. Materi dapat menentukan ide tetapi ide mempengaruhi perkembangan materi.

7. Bunyi hukum Kekekalan Energi: “Energi tidak dapat diciptakan dan tidak dapat dimusnahkan.

8. Perkembangan sains dan teknologi saat ini harus berbanding lurus dengan kualitas Sumber Daya Manusia.

9. Teknologi banyak memberikan dampak positif bagi manusia, tetapi juga mempunyai dampak negatif.

10. Teknologi Informasi adalah suatu teknologi yang digunakan untuk mengolah data, termasuk memproses, mendapatkan, menyusun, menyimpan, memanipulasi data.

11. Teknologi Informasi berperan di bidang pendidikan, pemerintahan, keuangan dan perbankan.

Perkembangan pengetahuan sudah dimulai sejak zaman purba, hal tersebut disebabkan karena manusia memiliki rasa ingin tahu yang terus berkembang, sehingga pada zaman Yunani manusia sudah mulai menggunakan metode ilmiah yang tidak hanya mengandalkan rasio semata tetapi juga haru dengan pengalaman empirik sehingga apa yang mereka dapatkan dapat dibuktikan dan diterima oleh umum.
Kelahiran ilmu alamiah modern mungkin saja terjadi pada zaman Yunani, karena pada zaman inilah pendekatan kebenaran tertumpu pada rational approach and empiric approach, yang selanjutnya menjadi cikal bakal perkembangan Ilmu Pengetahuan yang

Dosen pembimbing: Bpk.Jupri