Rabu, 18 Maret 2009

Review AWK's ( 2nd Week Syntax Directed Tools )

Review AWK

AWK adalah bahasa pemrograman untuk memanipulasi data secara bersama hanya dengan program yang singkat. Hal ini dikarenakan pada bahasa AWK, kita tidak memerlukan suatu deklarasi untuk variable. AWK akan melakukan handles input, field splitting, initialization, dan memory management secara otomatis. Seiring berjalannya waktu bahasa AWK semakin kuat dengan munculnya GAWK dan NAWK. Bebera fitur tambahan pada NAWK sbb :

• Dynamic regular expression
• Additional built-in functions and variable.
• New operator and statement
• Input more than 1 files
• Access to command line arguments
• Improve error message


Structure dari program AWK adalah :


• BEGIN segment ( optional )
• Pattern-action pairs ( inputing data )
• END segment ( optional )

Pattern-action structure :

• Pattern terdaftar secara singkat, sedangkan actions diawali dan diakhiri oleh {}.

Penyimpan Output dari AWK :
• Lining Up Fields ( printf=untuk menghasilkan output terformat )
Simple output dari AWK :
• Dapat menampilkan number of field ( NF )
• Dapat melakukan perhitungan pada nilai field dan menampilkannya sebagai output.
• Dapat menampilkan line numbers yang kita inginkan ( NR )
• Dapat menambahkan text pada output.
• Dapat menampilkan output seluruh line apabila tidak terdapat pattern.
• Dapat menampilkan multiple items dengan 1 print statement.

Generation Of Programming Languages

Perkembangan Bahasa Pemrograman

1. Bahasa Mesin ( Mnemonic Code )
Bahasa mesin merupakan bahasa yang terdiri dari kode-kode mesin dan hanya dapat diinterpretasikan langsung oleh mesin komputer. Bahasa ini merupakan level terendah dari bahasa pemrograman komputer dan hanya berupa 0 dan 1. Sekumpulan instruksi dalam bahasa ini dapat membentuk microcode. Keunggulan : bahasa ini memiliki kecepatan yang paling tinggi diantara bahasa pemrograman level yang lain.Kerugian : agak sulit mempelajari bahasa tingkat ini, karena sangat tidak user friendly.
2. Bahasa Assembly
Bahasa assembly merupakan pengembangan lebih lanjut dari bahasa mesin. Pada bahasa assembly ini sudah tidak mengenal hanya 0 dan 1 lagi, namun ada beberapa symbol yang digunakan antara lain
MOV,
ADD untuk penjumlahan,
SUB untuk pengurangan,
MUL untuk perkalian,
dan lain-lain.
Pada bahasa assembly mempunyai program untuk debugging yaitu untuk mencari kesalahan pada sebuah program yang dibuat. Pada bahasa mesin tidak mempunya debugger. Bahasa ini lebih agak mudah dipelajari dari pada bahasa mesin.
3. High Level Languages
Bahasa pemrograman yang dapat dimengerti manusia, karena menggunakan frase-frase atau istilah dapat pula dinamakan syntax yang dapat dimengerti manusia.
Contohnya adalah Visual C++
4. Specific Problem Oriented Languages
Bahasa yang berkenaan dengan penyelesaian masalah tertentu. Misalnya SQL untuk masalah database, Regex untuk hal-hal yang berhubungan dengan pencocokan pola string tertentu, biasanya pada checking error pada penulisan email dan lainnya. Bahasa ini disebut sebagai bahasa generasi ke-4

Generasi bahasa Pemrograman

1. Compiler A-0

Pada tahun 1951, sebuah kompiler (compiler) generasi pertama diciptakan. Kompiler tersebut bernama A-0. Penciptanya adalah Grace
2. COBOL
Untuk memenuhi bisnis pada saat itu, The Remington Rand Corporation memproduksi bahasa pemrogramman bernama COBOL (Common Business-Oriented Language). Sudah tentu bahasa tersebut hasil sumbangsih Grace juga.
3. FORTRAN
COBOL merupakan bahasa pemrogramman yang didedikasikan untuk keperluan bisnis. Untuk keperluan Sains, bahasa pemrogramman yang diciptakan adalah FORTRAN (Formula Translator) yang dikembangkan oleh IBM. Bahasa pemrogramman FORTRAN telah mengandung IF, DO, dan GOTO yang merupakan loncatan besar dalam perkembangan bahasa pemrogramman. Setelah itu secara berturut-turut lahirlah FORTRAN II dan FORTRAN III, meskipun yang terakhir ini tidak pernah sampai ke tahap rilis. Yang dirilis berikutnya langsung meloncat ke FORTRAN IV.
4. LISP
Pada tahun 1958 seorang ilmuwan bernama John Mc Carthy dari MIT menciptakkan sebuah bahasa pemrogramman bernama LISP (List Processing). Bahasa LISP didesain untuk keperluan riser AI (Artificial Intelligence) dan karena itu memiliki sintaks (kode program) yang sangat khas dan belum pernah ada sebelumnya. Salah satu pembeda LISP dengan bahasa pemrogramman lain, termasuk yang bakal berkembang hingga sekarang, adalah tipe datanya. Pada LISP, satu-satunya tipe data yang dikenal adalah list (daftar), ditandai oleh serangkaian item yang diapit oleh tanda kurung (parenthesis). LISP sendiri ditulis dengan serangkaian list, jadi LISP memiliki kemampuan unik uantuk dapat berkembang dari dirinya sendiri. Sintaks LISP dikenal sebagai Cambridge Polish dan sangat berbeda dengan logika Boolean Standar.
5. APL
Pada tahun 1960, seorang matematikawan bernama Keneth Iverson mengembangkan bahasa pemrogramman APL (A Programming Language). APL merupakan interpreter yang spedifik untuk masalah matematis serta memiliki sintaks dan karakter-karakter yang aneh (bahkan menggunakan karakter non-ASCII). APL termasuk bahasa pemrogramman yang “tidak banyak bicara”.
6. ALGOL
Pada tahun yang sama dirilis pula bahasa pemrogramman ALGOL oleh sebuah komite sains. ALGOL merupakan bahasa pemrogramman pertama yang menggunakan struktur blok. ALGOL bahkan disebut-sebut sebagai nenek moyang dari bahasa Pascal, C, C++, dan Java. Nama-nama dari ALGOL sesuai dengan tahun rilisnya seperti : ALGOL 58, ALGOL 60, dan ALGOL 68. Akan tetapi, karena makin lama sintaks penggunaan ALGOL makin sulit, maka bahasa ALGOL akhirnya ditinggalkan dan nantinya kepopuleran bahasa ALGOL digantikan oleh Pascal dan C
7. SNOBOL
Bahasa SNOBOL diciptakan oleh tiga orang yang bekerja di laboratorium Bell. Mereka adalah D.J. Farber, R.E. Griswold, dan F.P. Polensky. SNOBOL merupakan akronim dari String-Oriented Symbolic Language. Dari namanya diketahui bahwa SNOBOL lebih digunakan untuk pemrogramman yang berhubungan dengan String (teks). Salah satu aplikasi pertama yang dibuat dengan SNOBOL adalah Editor Teks. Produk yang mengekor SNOBOL adalah FASBOL (Compiler SNOBOL) dan SPITBOL (Speedy Implementation of Snobol).
8. PL/I
Pada tahun 1963, IBM mengembangkan PL/I (Programming Language 1). IBM bermaksud mengombinasikan kelebihan-kelebihan ALGOL, FORTRAN, dan COBOL ke dalam satu bahasa. Akibatnya bahasa PL/I menjadi bahasa yang sangat kompleks. Kelebihannya, PL/I sangat berkompeten dalam membangun berbagai aplikasi. Namun, disisi lain kompiler yang dibutuhkan menjadi sangat kompleks dan untuk melakukan debugging pada PL/I bisa membuat kepala pusing tujuh belas keliling.
9. BASIC
BASIC (Beginners All-purpose Symbolic Instruction Code) diciptakan oleh John Kennedy dan Thomas Kurtz pada tahun 1964. Tidak seperti pencipta bahasa pemrogramman lain yang umumnya merupakan ahli matematika atau ilmuwan dibidang lain, John Kennedy dan Thomas Kurtz adalah mahasiswa yang baru lulus kuliah. Oleh karena itu, tidaklah mengherankan jika bahasa ciptaan mereka merupakan bahasa yang sangat simpel. Oleh kedua orang tersebut BASIC sengaja ditujukan bagi mereka yang bukan ahli dibidang komputer. Jadi tidak heran jika bahasa BASIC sangat populer hingga saat ini. BASIC saat ini memiliki varian seperti : Visual Basic, VBScript, dan VBA (Visual Basic for Application). Pada saat pertama basic bersifat kompiler, namun sekarang BASIC banyak terdapat yang bersifat interpreter.
10. FORTRAN 66 dan LOGO
Pada tahun 1966 ada dua bahasa pemrogramman yang diciptakan, yaitu FORTRAN 66 yang merupakan pengembangan dari FORTRAN IV (1961) serta LOGO. LOGO diciptakan untuk mengajarkan prinsip-prinsip pemrogramman dan pemecahan masalah (problem solving) bagi anak-anak. Karena ditujukan untuk anak-anak, LOGO menggunakan bentuk visual, yaitu sosok seekor kura-kura. Pada prinsipnya, pemrogramman LOGO adalah memerintahkan kura-kura tersebut untuk bergerak ke arah tertentu sehingga menghasilkan suatu pola atau gambar..
11. BCPL
Setahun kemudian, pada tahun 1967, Marin Richards dari Cambridge University mengembangkan bahasa pemrogramman BCPL (Basic Combined Programming Language). Dikemudian hari, BCPL merupakan dasar bagi pengembangan bahasa B dan C yang dilakukan di laboratorium Bell.
12. Forth, Smalltalk, dan Icon
Ketiga bahasa tersebut dirilis pada tahun yang sama, yaitu tahun 1970. Forth yang diciptakan oleh Charles Moore didesain sebagai bahasa yang sangat simpel dan efisien. Snalltalk dikembangkan oleh Xerox PARC dan proyek pengembangannya dipimpin oleh Alan Kay. Smalltalk boleh dikatakan sebagai bahasa pertama yang murni OOP (Object Oriented Programming) atau pemrogramman berorientasi object. Seluruh data yang diproses selalu dienkapsulasikan ke dalam objek. Beberapa versi Smalltalk adalah Smalltalk-72, Smalltalk-74, Smalltalk-76, Smalltalk-80 dan yang paling unik adalah GNU Smalltalk. Icon adalah salah satu turunan SNOBOL. Icon aslinya didesain untuk sistem operasi UNIX, namu kemudian dapat di-port ke VMS, MS-DOS, Windows(32-bit), OS/2, dan Macintosh.
13. Pascal
Pascal mulai dikembangkan tahun 1968 oleh Niklaus Wirth namun baru dirilis tahun 1971. Niklaus Wirth tidak pernah menyangka bahwa bahasa pemrogramman ciptaannya akan menjadi begitu populer, bahkan menjadi basis pengembangan beberapa bahasa lain yang lahir setelahnya. Pada era 70-an dan 80-an, Pascal digunakan secara luas, terutama dengan hadirnya IBM PC dan Macintosh. Kompiler Pascal tersedia baik dalam versi proprietary maupun freeware. Salah satu kompiler Pascal yang terkenal adalah Turbo Pascal yang dikembangkan oleh Borland. Pascal harus digunakan secara disiplin oleh programmernya. Semua data, variabel, dan subroutine harus dideklarasikan terlebih dahulu sebelum dapat digunakan.
14. B
Pada tahun yang sama dengan dirilisnya Pascal, dirilis pula bahasa B. Bahasa B dikembangkan berdasarkan bahasa BCPL. Pengembangannya dilakukan oleh Dennis M. Ritchie dan K. L. Thompson di Murray Hill, New Jersey. Bahasa B cocok untuk komputasi non-numeric, seperti keputusan logika yang rumit, pengolahan karakter dan bit string. Bahasa B hanya berumur pendek, dalam waktu 1 tahun digantikan oleh bahasa C.
15. sh
Pada awal pengembangan UNIX, berbagai macam shell diciptakan, di antaranya adalah C Shell, Tenex C Shell, Korn Shell, dan Bourne-Again Shell (bash). Untuk keperluan pemrogramman dilingkungan shell tersebut (terutama bash), diciptakanlah bahasa skript sh. Shell bash bersama dengan skrip sh dikembangkan oleh Steve Bourne pada tahun 1971.
16. Prolog
Prolog dirilis pada tahun 1972 dan dikembangkan oleh Alain Colmerauer dan Phillip Roussel. Prolog dapat melakukan hal-hal “hebat” hanya dengan jumlah baris yang sedikit.
17. C
Pada tahun 1972 pula dirilis bahasa C. Seperti yang telah disebutkan sebelumnya, bahasa C adalah pengganti bahasa B. Pengembangnya adalah Dennis M. Richie pada saat bekerja di Laboratorium Bell, Murray Hill, New Jersey.
18. TinyBASIC, Scheme, dan RatFOR
Pada tahun 1975, dirilis tiga bahasa pemrogramman yang sama sekali tidak populer, yaitu TinyBASIC, Scheme, dan RatFOR. TinyBASIC dirilis oleh Bob Albrecht dan Dennis Allison namun diimplementasikan oleh Dick Whipple dan John Arnold. Dari namanya jelas terlihat bahwa TinyBASIC menggunakan dasar bahasa BASIC. Kata Tiny ditambahkan karena bahasa tersebut digunakan untuk mikrokomputer yang RAM nya hanya 2 KB. Scheme dikembangkan di MIT dan merupakan “dialek” dari LISP. Berbeda dengan LISP, Scheme memiliki banyak tipe data, di antaranya adalah simbol, beberapa tipe data numeris, karakter, string, list, vector, bit string, record, association lists, dan tabel hash, serta beberapa tipe fungsional/ lambda. RatFOR merupakan singkatan dari Rational FORTRAN yang dikembangkan oleh B.W. Kerninghan. RatFOR pada dasarnya adalah FORTRAN namun mengizinkan penggunaan kontrol struktur seperti bahasa C. Pada tahun itu juga, yaitu tahun 1975, Bill Gates Paul dan Allen merilis bahasa BASIC versi mereka sendiri dan memulai sebuah usaha dalam bidang perangkat lunak yang kemudian sampai sekarang perusahaan mereka dikenal sebagai Microsoft.
19. Awk
Awk merupakan bahasa pemroses string yang dikembangkan di Laboratorium Bell. Banyak digunakan di lingkungan UNIX untuk transformasi data dan program parsing. Salah satu varian Awk yang paling “bertenaga” adalah Gawk (GNU Awk).