Perl: Perbedaan antara revisi
Tidak ada ringkasan suntingan |
perbaikan kesalahan tik |
||
(103 revisi perantara oleh 45 pengguna tidak ditampilkan) | |||
Baris 1: | Baris 1: | ||
{{rapikan|topik=teknologi informasi}} |
|||
{{Software_Infobox| |
|||
{{Infobox bahasa pemrograman |
|||
name = Perl |
|||
| name = Perl |
|||
|screenshot = [[Image:Programming-republic-of-perl.gif]] |
|||
| logo = [[Berkas:Programming-republic-of-perl.png]] |
|||
|caption = Logo Perl |
|||
| logo size = |
|||
|developer = [[Larry Wall]] |
|||
| logo alt = Logo Perl |
|||
|latest_release_version = 5.8.8 |
|||
| caption = Logo Perl |
|||
|latest_release_date = [[2 Februari]], [[2006]] |
|||
| screenshot = |
|||
|operating_system = [[antar-platform]] |
|||
| paradigm = [[Multi-paradigm]]: [[Functional programming|functional]], [[Imperative programming|imperative]], [[Object-oriented programming|object-oriented]] ([[Class-based programming|class-based]]), [[Reflective programming|reflective]], [[Procedural programming|procedural]], [[Event-driven programming|event-driven]], [[Generic programming|generic]] |
|||
|genre = [[Bahasa pemrograman]] |
|||
| family = |
|||
|license = Lisensi ganda ([[GPL]] dan [[Artistic License]]) |
|||
| designer = [[Larry Wall]] |
|||
|website = [http://www.perl.org www.perl.org] |
|||
| developer = Perl Foundation |
|||
| typing = Dinamis |
|||
| operating_system = [[Lintas platform]] |
|||
| file_ext = .pl .pm .t .pod |
|||
| genre = [[Bahasa pemrograman]] |
|||
| license = Lisensi ganda <br />([[Artistic License]] 1.0<ref name="artistic-1.0">[http://dev.perl.org/licenses/artistic.html Lisensi Artistic - dev.perl.org]</ref><ref name="artistic-1.0-git">[http://perl5.git.perl.org/perl.git/blob/HEAD:/Artistic Artistic] - File pada repositori Git Perl5</ref> <br />dan [[GPL|Lisensi GPL]]<ref name="licensing">{{cite web |url = http://dev.perl.org/licenses |title = Perl Licensing |accessdate= 2018-05-26 |publisher= dev.perl.org }}</ref>) |
|||
| website = [http://www.perl.org www.perl.org] |
|||
| year = {{Start date and age|1987|12|18}}<ref>{{cite web |url=https://perldoc.perl.org/perlhist.html#THE-RECORDS |title=Rekaman Rilis Bahasa Pemrograman Perl |accessdate=2018-05-27}}</ref> |
|||
| latest_release_version = {{Unbulleted list |
|||
|5.34.0<ref>{{cite web |url = https://www.nntp.perl.org/group/perl.perl5.porters/2021/05/msg260110.html |title = Perl 5.34.0 is now available! |access-date = 2021-05-21 |publisher = www.nntp.perl.org |archive-date = May 20, 2021 }}</ref> / {{Start date and age|mf=yes|2021|05|20|df=yes}} |
|||
|5.32.1<ref>{{cite web |url = https://www.nntp.perl.org/group/perl.perl5.porters/2021/01/msg258868.html |title = Perl 5.32.1 is now available! |access-date = 2021-01-24 |publisher = www.nntp.perl.org |archive-date = January 24, 2021 |archive-url = https://web.archive.org/web/20210124130938/https://www.nntp.perl.org/group/perl.perl5.porters/2021/01/msg258868.html |url-status = live }}</ref> / {{Start date and age|mf=yes|2021|01|23|df=yes}} |
|||
}} |
}} |
||
| latest_release_date = |
|||
=== Introduksi === |
|||
---- |
|||
Perl adalah bahasa pemrograman untuk segala keperluan, dikembangkan pertama kali oleh [[Larry Wall]] di mesin [[Unix]]. [[Kode sumber]] Perl tidak perlu dikompilasi, melainkan dijalankan oleh sebuah program ''interpreter'' bernama '''''perl'''''. |
|||
Perl dirilis pertama kali pada tanggal 18 Desember 1987 ditandai dengan keluarnya Perl 1. Pada versi-versi selanjutnya, Perl tersedia pula untuk berbagai sistem operasi varian Unix ([[SunOS]], [[Linux]], [[BSD]], [[HP-UX]]), juga tersedia untuk sistem operasi seperti [[DOS]], [[Windows]], [[PowerPC]], [[BeOS]], [[VMS]], [[EBCDIC]], dan [[PocketPC]]. Dukungan terhadap pemrograman berbasis obyek (''object oriented programming''/''[[OOP]]'') ditambahkan pada Perl 5, yang pertama kali dirilis pada tanggal 31 Juli 1993. Proyek pengembangan [[Perl 6]] dimulai pada tahun 2000, dan masih berlangsung hingga kini tanpa tanggal yang jelas kapan mau dirilis. Ini dikatakan sendiri oleh Larry Wall dalam satu pidatonya yang dikenal dengan seri ''[[The State of the Onion]]''. |
|||
| latest_preview_version = |
|||
Dua di antara karakteristik utama Perl adalah penanganan teks dan berbagai jalan pintas untuk menyelesaiakn persoalan-persoalan umum. Tidak heran jika Perl sangat populer digunakan dalam program-program CGI (''[[Common Gateway Interface]]'') dan berbagai [[protokol Internet]] lainnya. Seperti diketahui, [[TCP/IP]] sebagai basis bagi semua protokol Internet yang dikenal sekarang ini menggunakan format teks dalam komunikasi data. Seperti juga bahasa populer lainnya, Perl menerima banyak kritikan. Meski banyak di antaranya hanya berupa mitos, atau berlebih-lebihan, tapi terdapat juga sejumlah kritikan yang valid. Salah satunya adalah, sintaksnya susah dibaca, karena banyak menggunakan simbol-simbol yang bukan huruf dan angka. |
|||
5.35.0<ref>{{cite web|url = https://www.nntp.perl.org/group/perl.perl5.porters/2021/05/msg260116.html | title = Perl 5.35.0 is now available! | access-date = 2021-05-21 | publisher = www.nntp.perl.org}}</ref> |
|||
=== Nama === |
|||
---- |
|||
| latest_preview_date = {{Start date and age|mf=yes|2021|05|21}} |
|||
=== Karakteristik === |
|||
---- |
|||
| influenced = [[CoffeeScript]], [[ECMAScript]], [[Falcon (programming language)|Falcon]], [[Groovy (programming language)|Groovy]], [[JavaScript]], [[Julia (programming language)|Julia]], [[LPC (programming language)|LPC]], [[Perl 6]], [[PHP]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Windows PowerShell]] |
|||
=== Penggunaan === |
|||
| influenced_by = [[AWK (programming language)|AWK]], [[C (programming language)|C]], [[C++]], [[Lisp (programming language)|Lisp]], [[Pascal (programming language)|Pascal]], [[sed]], [[Smalltalk 80]], [[Unix shell]] |
|||
---- |
|||
| programming_language = [[C (bahasa pemrograman)|C]] |
|||
| wikibooks = Pemrograman Perl |
|||
}} |
|||
'''Perl''' adalah [[bahasa pemrograman]] untuk segala keperluan, dikembangkan pertama kali oleh [[Larry Wall]] di mesin berbasis [[Unix]]. Perl dirilis pertama kali pada tanggal 18 Desember 1987 ditandai dengan keluarnya Perl 1. Pada versi-versi selanjutnya, Perl tersedia pula untuk berbagai sistem operasi varian Unix ([[SunOS]], [[Linux]], [[BSD]], [[HP-UX]]), juga tersedia untuk sistem operasi seperti [[DOS]], [[Microsoft Windows]], [[PowerPC]], [[BeOS]], [[VMS]], [[EBCDIC]], dan [[PocketPC]]. Dukungan terhadap pemrograman berbasis objek (''object oriented programming''/''[[OOP]]'') ditambahkan pada Perl 5, yang pertama kali dirilis pada tanggal 31 Juli 1993. Proyek pengembangan [[Perl 6]] dimulai pada tahun 2000, dan masih berlangsung hingga kini tanpa tanggal yang jelas kapan mau dirilis. Ini dikatakan sendiri oleh Larry Wall<ref>[http://www.perl.com/pub/a/2003/07/16/soto2003.html State of the Onion 2003]</ref> dalam satu pidatonya yang dikenal dengan seri ''[[The State of the Onion]]''. |
|||
=== Pemrograman Perl === |
|||
---- |
|||
Dua di antara [[#Karakteristik|karakteristik]] utama Perl adalah penanganan teks dan berbagai jalan pintas untuk menyelesaikan persoalan-persoalan umum. Tidak heran jika Perl sangat populer digunakan dalam program-program [[CGI]] (''[[Common Gateway Interface]]'') dan berbagai [[protokol Internet]] lainnya. Seperti diketahui, [[TCP/IP]] sebagai basis bagi semua protokol Internet yang dikenal sekarang ini menggunakan format teks dalam komunikasi data. Seperti juga bahasa populer lainnya, Perl menerima banyak kritikan. Meski banyak di antaranya hanya berupa mitos, atau dilebih-lebihkan, tetapi terdapat juga sejumlah kritikan yang valid. Salah satunya adalah, sintaksnya susah dibaca, karena banyak menggunakan simbol-simbol yang bukan huruf dan angka. |
|||
=== CPAN === |
|||
---- |
|||
== Fitur == |
|||
* Pengolahan [[string]] yang kuat. |
|||
---- |
|||
* Mendukung [[ekspresi regular]] - dalam bahasa inggris [[:en:Regular expression|Regular expression]] |
|||
* Dapat Memproses bahasa di seluruh dunia, termasuk bahasa Jepang, Cina, India, dsb |
|||
* Struktur data multidimensi tersedia |
|||
* Keleluasaan dalam penataan sintaks. Anda dapat menulis program secara singkat |
|||
* Memiliki [[kompatibilitas mundur]] yang tinggi - dalam bahasa inggris [[:en:Backward compatibility|Backward compatibility]] |
|||
* Tersedia di banyak [[sistem operasi]] |
|||
* Precompile tidak diperlukan untuk eksekusi program |
|||
* [[Bahasa skrip]] yang memiliki kecepatan pemrosesan yang tinggi |
|||
* Dukungan [[Unicode]] |
|||
* Pengembangan Modul yang tersedia sangat dimungkinkan |
|||
* Ketersediaan Modul yang tinggi dan dikembangkan oleh sukarelawan (Lihat [[CPAN]]) |
|||
* Dukungan terhadap pemrograman berorientasi objek |
|||
* Mendukung penanganan [[Penanganan Eksepsi]] - dalam bahasa inggris [[:en:Exception handling|Exception handling]] |
|||
* Dukungan [[:en:Closure (computer programming)|Closure]] |
|||
* Dukungan [[Reflection (Pemrograman Komputer)|Refleksi]] - dalam bahasa inggris [[Reflection (computer programming)|Reflection]] |
|||
== Nama dan singkatan == |
|||
---- |
|||
Larry Wall menegaskan bahwa bahasa pemrograman yang diciptakannya diberi nama '''Perl''' (dengan P besar), sedangkan '''perl''' (dengan p kecil) adalah nama untuk program ''[[interpreter]]'' yang menjalankan [[kode sumber]] yang ditulis dengan bahasa Perl. Korelasi kedua nama ini ditegaskan oleh [[Tom Christiansen]] dalam ungkapan ''only perl can parse Perl'', atau ''Nothing but perl can parse Perl''. Nama ''perl'' sebagai sebuah program, mengikuti konsensus penamaan program di sistem [[Unix]], yaitu pendek dan semua ditulis huruf kecil (kalau di [[Windows]] nama program ini adalah '''perl.exe'''). Baik Perl maupun perl bukanlah sebuah singkatan atau [[akronim]]. Jadi, penulisan '''PERL''' (semua huruf besar) dianggap salah, tidak berdasar, dan sama sekali tidak akurat jika dihubungkan dengan Perl sebagai bahasa pemrograman.<ref>[http://perldoc.perl.org/perlfaq1.html#What's-the-difference-between-%22perl%22-and-%22Perl%22%3f ''What's the difference between "perl" and "Perl"?]</ref> |
|||
=== Mitos === |
|||
---- |
|||
Baru belakangan Larry Wall memberikan kepanjangan ''Practical Extraction and Reporting Language''. Mungkin karena terkesan serius dan sangat relevan, kepanjangan ini secara salah sering dirujuk sebagai kepanjangan resmi dari Perl. Barangkali untuk mencegah kesalahpahaman, atau karena Larry Wall memang suka bercanda, dia mengumumkan kepanjangan lain, yaitu ''Pathologically Eclectic Rubbish Lister''. Dan, yang terbaru adalah ''People Excel at Relational Labor'', untuk menggambarkan bahwa perkembangan Perl tidak terlepas dari keterlibatan dan komitmen komunitas.<ref>[http://www.perl.com/pub/a/2006/09/21/onion.html The State of the Onion 10]</ref> |
|||
=== Perl di Indonesia === |
|||
---- |
|||
Di luar itu, berkembang kreasi-kreasi lain untuk membuat kepanjangan Perl, baik yang bermaksud serius maupun bercanda, bahkan ada juga yang sifatnya merendahkan atau melecehkan. |
|||
Berbicara mengenai Perl di Indonesia tidak akan terlepas dari nama [[Steven Haryanto]]. Steven Haryanto mempelopori terbentuknya [[Bandung.pm]], komunitas Perl di [[Bandung]]. Selain Steven Haryanto, nama lainnya di komunitas Perl adalah [[Edwin Pratomo]], yang mempelopori [[Semarang.pm]], dan juga [[Priyadi Iman Nurcahyo]]. Satu komunitas lagi adalah [[Jakarta.pm]] yang sempat dipimpin oleh [[Christian Maxnamara]]. Seiring dengan perkembangannya, geliat Perl di Indonesia seperti mengalami masa surut, meski ini tidak berarti mati atau hilang sama seklai. |
|||
== Lambang Unta == |
|||
Atas konsensus beberapa anggota dari ketiga komunitas berbasis kota di atas, maka dibentuklah komunitas diskusi dengan cakupan yang lebih luas. Komunitas ini tidak lagi berbasis kota, melainkan berbasis [[Indonesia]]. Media yang dipilih adalah grup diskusi di [[Yahoo! Groups]] dengan nama ''[[mailing list]]'' id-perl@yahoogroups.com. |
|||
Buku "Programming Perl" yang diterbitkan oleh O'Reilly Media memiliki sampul depan yang bergambar unta. Setelah itu buku ini dikenal sebagai ''Buku Unta''. Gambar unta ini kemudian digunakan secara luas sebagai lambang dari Perl. |
|||
=== Pranata Luar === |
|||
---- |
|||
O'Reilly memiliki hak cipta atas gambar ini tetapi menyatakan bahwa mereka hanya akan menggunakan jalur hukum untuk melindungi ketepatan dan kesamaan lambang unta ini. O'Reilly memperbolehkan penggunaan non-komersial atas lambang ini dan menyediakan logo "Programming Republic of Perl" dan gambar tombol "Powered by Perl" |
|||
== Pemrograman Perl == |
|||
* [http://www.perl.org www.perl.org] |
|||
* [http://www.perl.com www.perl.com] |
|||
* [http://www.perl.com/pub/a/language/misc/Artistic.html Artistic License] |
|||
* [http://www.gnu.org/licenses/gpl.html GLP] |
|||
* [http://www.perl.com/pub/a/2003/07/16/soto2003.html The State of the Onion 7] |
|||
* [http://tech.groups.yahoo.com/group/id-perl/ Grup diskusi id-perl] |
|||
Lihat [[Pemrograman Perl]] untuk pembahasan yang lebih komprehensif dan bersifat teknis. |
|||
[[Kategori:Bahasa pemrograman]] |
|||
[[Kode sumber]] Perl tidak perlu dikompilasi, melainkan bisa langsung dijalankan oleh sebuah program ''[[interpreter]]'' bernama '''''perl'''''. Misalnya, |
|||
<syntaxhighlight lang="perl"> |
|||
#!/usr/bin/perl |
|||
print "Hello, world!\n"; |
|||
</syntaxhighlight> |
|||
Jika program di atas ditulis dalam sebuah berkas bernama <code>hello.pl</code>, lalu dijalankan dengan perintah (contoh di Linux): |
|||
<syntaxhighlight lang="bash"> |
|||
$ perl hello.pl |
|||
</syntaxhighlight> |
|||
Maka di layar akan tercetak: |
|||
Hello, World! |
|||
$ |
|||
Bahkan, sebuah program yang mengerjakan proses rumit bisa ditulis dengan jumlah karakter yang lebih pendek daripada jumlah kolom layar standar, misalnya: |
|||
<syntaxhighlight lang="bash"> |
|||
perl -lane '$h{$_}++ for @F; END { print "$_: $h{$_} " for keys %h}' <nama_berkas> |
|||
</syntaxhighlight> |
|||
Program ini membaca sebuah berkas teks dan mencetak setiap kata unik dan jumlahnya di dalam berkas. Contoh hasil cetakan dengan sebuah berkas berisi kode [[SQL]]: |
|||
password: 2 |
|||
category: 2 |
|||
DROP: 20 |
|||
TABLE: 40 |
|||
varchar(12): 9 |
|||
dst. |
|||
Tentu saja, yang dimaksud dengan "kata" di sini adalah rentetan karakter tanpa spasi. Jika dituangkan dalam sebuah berkas, program di atas bisa menjadi lima hingga sepuluh baris, tergantung gaya pemrograman. Program semacam ini disebut juga ''oneliner'', dan sering digunakan untuk keperluan sederhana dan cepat. Contoh lain penggunaan ''oneliner'' adalah mengubah nama berkas di suatu direktori menjadi huruf kecil semua, seperti: |
|||
<syntaxhighlight lang="bash"> |
|||
perl -e 'rename $_, lc for <*>' |
|||
</syntaxhighlight> |
|||
Beberapa programer Perl tertantang untuk membuat solusi ''oneliner'' untuk problem yang sama dengan jumlah karakter yang lebih pendek dan berkembanglah sebuah kompetisi yang disebut [[Perl Golf]] (lihat juga [[#Komunitas dan Budaya|Komunitas dan Budaya]]). Hal seperti ini bisa membuat sebagian orang kagum, namun bagi sebagian orang, semakin membuktikan bahwa Perl hanyalah bahasa untuk main-main, atau kalaupun untuk serius, tidak mudah diphami oleh orang lain, bahkan oleh programernya sendiri setelah beberapa waktu kemudian. Lelucon yang diberikan kepada Perl tentang ini adalah ''write only'', artinya program hanya bisa ditulis, tetapi tidak bisa dibaca. |
|||
Sebenarnya tidak demikian. Perl menyediakan berbagai fasilitas bagi penggunanya untuk menulis program dalam berbagai gaya dan bentuk sesuai dengan keperluannya. Dalam hal ini Perl memperkenalkan motto '''TMTOWDI''', dalam bahasa Inggris ini adalah singkatan dari ''There's More Than One Way To Do It'', atau terjemahan bebasnya, terdapat lebih dari satu cara untuk menyelesaikan suatu persoalan. Tanpa bisa dihindari, motto ini juga menjadi sumber kritikan. Artinya, Perl tidak memiliki standar penyelesaian masalah. Padahal tidak demikian. Hanya karena terdapat lima atau selusin cara untuk menyelesaikan masalah bukan berarti semua cara tersebut setara dalam berbagai aspek kualitas. Dan, dokumentasi Perl penuh dengan berbagai contoh penggunaan yang direkomendasikan, dan juga contoh penggunaan yang tidak direkomendasikan dengan berbagai alasan. |
|||
Seperti juga bahasa lainnya, Perl menyediakan fasilitas pemrograman standar seperti penggunaan variabel, fungsi (''built-in function''), kontrol logika (''if-else''), dan iterasi (<code>while, for, foreach</code>). Kontrol ''switch'' baru akan disediakan di [[Perl 6]], namun di Perl 5 dapat diemulasikan dengan mudah. Perl membolehkan programer untuk membuat fungsi sendiri (''subroutine''), mengenalkan pembatasan cakupan variabel secara hirarkis, penggunaan komentar, serta pembuatan dokumentasi terstruktur bersandingan dengan kode program. Sejak Perl 5 dikeluarkan, Perl mendukung pemrograman berbasis objek ([[OOP]]), disusul kemudian dengan ''[[thread programming]]'', serta memperbaharui penggunaan ''namespace''. Fasilitas yang paling digemari pengguna Perl, ''[[regular expression]]'' (atau ''regex''), telah ada sejak Perl 2. Dari versi ke versi regex makin dikembangkan sehingga diakui sebagai implementasi regex paling lengkap.<!-- butuh referensi, lupa pernah baca dimana --> Tidak heran kemudian muncul implementasi regex yang dikenal sebagai [[PCRE]], atau ''Perl-compatible regular expression''. |
|||
Perl menyediakan sejumlah fasilitas untuk memastikan bahwa programer dapat membuat program yang aman dari serangan ''[[cracker]]''. Jika programer menginginkan, Perl menyediakan lingkungan pemrogaman yang lebih ketat yang akan menangkap kesalahan atau potensi kesalahan sekecil apa pun sebelum program bisa dijalankan. Fasilitas pemrograman berorientasi jaringan sudah terintegrasi, juga penanganan dan pemrosesan berkas (''file handling'') dan setara berkas (seperti diketahui, di sistem [[Unix]] dan variannya, segala sesuatu dianggap berkas dan bisa diperlakukan sebagai berkas). Sebelum ''threading'' diperkenalkan, Perl sudah menyediakan fasilitas untuk menjalankan lebih dari satu proses secara paralel. |
|||
Sebagai bahasa yang diciptakan dalam tradisi [[Unix]], Perl sedari awal mendukung pembuatan program yang bisa berinteraksi dengan program lain yang ada di sistem, sehingga bisa dijalankan seperti diilustrasikan di bawah ini: |
|||
<syntaxhighlight lang="bash"> |
|||
cat <berkas> | sort | program_perl | perl -p -e 's/ganti ini/dengan ini/g' | vim - | tar cf - . |
|||
</syntaxhighlight> |
|||
== Komunitas dan budaya == |
|||
Pada awalnya komunitas pengguna Perl hanya di sekitar tim pengembangan Perl itu sendiri, beberapa grup diskusi di ''[[newsgroup]]'', dan sejumlah ''[[mailing list]]''. Komunitas pengguna yang lebih spesifik dimulai dengan munculnya ''New York Perl Mongers'' (disingkat NY.pm) yang dibentuk oleh [[brian d foy]] (bdf). Dari namanya bisa diketahui bahwa anggota NY.pm berasal dari [[kota New York]], [[Amerika Serikat]]. Terinspirasi oleh [[Randal L. Schwartz]], bdf melangkah lebih jauh dengan membentuk Perl Mongers sebagai wadah internasional yang mengkoordinasikan komunitas pengguna Perl di seluruh dunia.<ref>[http://www.perl.com/pub/a/1999/01/foy.html Wawancara dengan brian d foy]</ref> |
|||
Satu-persatu komunitas Perl bebasis kota berdiri. Mengambil model dari NY.pm, hampir semua nama komunitas Perl Mongers di suatu kota diambil dari nama kota tersebut dan ditambahkan .pm di belakangnya. Ini tentu mengingatkan pada penamaan modul ekstensi .pm untuk Perl Modules. Di Indonesia sempat berdiri tiga komunitas berbasis kota, yaitu Bandung.pm, Jakarta.pm, dan Semarang.pm. Di luar grup-grup berbasis kota tersebut, terdapat juga grup diskusi berbasis web, yaitu [http://www.perlmonks.org PerlMonks]. |
|||
[[Budaya Perl]] dikenal cukup unik, antara lain: |
|||
* [[Puisi Perl]] |
|||
* [[Perl Golf]] |
|||
* [[Obsfucated Code]] |
|||
* [[JAPH]] |
|||
== Pranala luar == |
|||
* {{Situs web resmi|https://www.perl.org}} |
|||
* [https://perldoc.perl.org Dokumentasi {{PAGENAME}}] |
|||
* {{GitHub|Perl/perl5}} |
|||
* [https://www.perl.com/ Berita {{PAGENAME}}] |
|||
* [https://id-perl.blogspot.com Blog {{PAGENAME}} Indonesia] |
|||
== Referensi == |
|||
{{reflist}} |
|||
{{Daftar bahasa pemrograman}} |
|||
{{Authority control}} |
|||
[[Kategori:Bahasa pemrograman]] |
|||
[[Kategori:Bahasa pemrograman Perl]] |
|||
[[Kategori:Bahasa pemrograman prosedural]] |
|||
[[Kategori:Bahasa pemrograman berorientasi objek]] |
|||
{{computer-stub}} |
|||
{{bahasa-komputer-stub}} |
|||
[[als:Perl]] |
|||
[[bg:Perl]] |
|||
[[bs:Perl]] |
|||
[[ca:Perl]] |
|||
[[cs:Perl]] |
|||
[[cy:Perl]] |
|||
[[da:Perl]] |
|||
[[de:Perl]] |
|||
[[en:Perl]] |
|||
[[eo:Perl (programlingvo)]] |
|||
[[es:Perl]] |
|||
[[et:Perl]] |
|||
[[fa:پرل]] |
|||
[[fi:Perl]] |
|||
[[fr:Perl (langage)]] |
|||
[[gl:Perl]] |
|||
[[he:Perl]] |
|||
[[hr:Perl]] |
|||
[[hu:Perl programozási nyelv]] |
|||
[[it:Perl]] |
|||
[[ja:Perl]] |
|||
[[ka:პერლი]] |
|||
[[ko:펄 프로그래밍 언어]] |
|||
[[ku:Perl]] |
|||
[[la:Perl]] |
|||
[[lb:Perl (Programméiersprooch)]] |
|||
[[lt:Perl]] |
|||
[[ms:Perl]] |
|||
[[nl:Perl (programmeertaal)]] |
|||
[[nn:Perl]] |
|||
[[no:Perl]] |
|||
[[pdc:Perl]] |
|||
[[pl:Perl]] |
|||
[[pt:Perl]] |
|||
[[ro:Perl]] |
|||
[[ru:Perl]] |
|||
[[simple:Perl]] |
|||
[[sk:Perl]] |
|||
[[sl:Perl]] |
|||
[[sr:Програмски језик Перл]] |
|||
[[sv:Perl]] |
|||
[[th:ภาษาเพิร์ล]] |
|||
[[tr:Perl]] |
|||
[[uk:Perl (мова програмування)]] |
|||
[[vi:Perl]] |
|||
[[zh:Perl]] |
|||
[[zh-min-nan:Perl]] |
Revisi terkini sejak 16 Februari 2024 12.33
artikel ini perlu dirapikan agar memenuhi standar Wikipedia. |
Perl | |
---|---|
Paradigma | Multi-paradigm: functional, imperative, object-oriented (class-based), reflective, procedural, event-driven, generic |
Dirancang oleh | Larry Wall |
Pengembang | Perl Foundation |
Rilis perdana | 18 Desember 1987[1] |
Rilis stabil | |
Rilis pratayang | 5.35.0[4]
/ 21 Mei 2021 |
Tipe sistem | Dinamis |
Implementasi dari | C |
Sistem operasi | Lintas platform |
Lisensi | Lisensi ganda (Artistic License 1.0[5][6] dan Lisensi GPL[7]) |
Ekstensi nama berkas | .pl .pm .t .pod |
Situs web | www.perl.org |
Repositori | www |
Terpengaruh oleh | |
AWK, C, C++, Lisp, Pascal, sed, Smalltalk 80, Unix shell | |
Mempengaruhi | |
CoffeeScript, ECMAScript, Falcon, Groovy, JavaScript, Julia, LPC, Perl 6, PHP, Python, Ruby, Windows PowerShell | |
Sunting kotak info • L • B |
Perl adalah bahasa pemrograman untuk segala keperluan, dikembangkan pertama kali oleh Larry Wall di mesin berbasis Unix. Perl dirilis pertama kali pada tanggal 18 Desember 1987 ditandai dengan keluarnya Perl 1. Pada versi-versi selanjutnya, Perl tersedia pula untuk berbagai sistem operasi varian Unix (SunOS, Linux, BSD, HP-UX), juga tersedia untuk sistem operasi seperti DOS, Microsoft Windows, PowerPC, BeOS, VMS, EBCDIC, dan PocketPC. Dukungan terhadap pemrograman berbasis objek (object oriented programming/OOP) ditambahkan pada Perl 5, yang pertama kali dirilis pada tanggal 31 Juli 1993. Proyek pengembangan Perl 6 dimulai pada tahun 2000, dan masih berlangsung hingga kini tanpa tanggal yang jelas kapan mau dirilis. Ini dikatakan sendiri oleh Larry Wall[8] dalam satu pidatonya yang dikenal dengan seri The State of the Onion.
Dua di antara karakteristik utama Perl adalah penanganan teks dan berbagai jalan pintas untuk menyelesaikan persoalan-persoalan umum. Tidak heran jika Perl sangat populer digunakan dalam program-program CGI (Common Gateway Interface) dan berbagai protokol Internet lainnya. Seperti diketahui, TCP/IP sebagai basis bagi semua protokol Internet yang dikenal sekarang ini menggunakan format teks dalam komunikasi data. Seperti juga bahasa populer lainnya, Perl menerima banyak kritikan. Meski banyak di antaranya hanya berupa mitos, atau dilebih-lebihkan, tetapi terdapat juga sejumlah kritikan yang valid. Salah satunya adalah, sintaksnya susah dibaca, karena banyak menggunakan simbol-simbol yang bukan huruf dan angka.
Fitur
[sunting | sunting sumber]- Pengolahan string yang kuat.
- Mendukung ekspresi regular - dalam bahasa inggris Regular expression
- Dapat Memproses bahasa di seluruh dunia, termasuk bahasa Jepang, Cina, India, dsb
- Struktur data multidimensi tersedia
- Keleluasaan dalam penataan sintaks. Anda dapat menulis program secara singkat
- Memiliki kompatibilitas mundur yang tinggi - dalam bahasa inggris Backward compatibility
- Tersedia di banyak sistem operasi
- Precompile tidak diperlukan untuk eksekusi program
- Bahasa skrip yang memiliki kecepatan pemrosesan yang tinggi
- Dukungan Unicode
- Pengembangan Modul yang tersedia sangat dimungkinkan
- Ketersediaan Modul yang tinggi dan dikembangkan oleh sukarelawan (Lihat CPAN)
- Dukungan terhadap pemrograman berorientasi objek
- Mendukung penanganan Penanganan Eksepsi - dalam bahasa inggris Exception handling
- Dukungan Closure
- Dukungan Refleksi - dalam bahasa inggris Reflection
Nama dan singkatan
[sunting | sunting sumber]Larry Wall menegaskan bahwa bahasa pemrograman yang diciptakannya diberi nama Perl (dengan P besar), sedangkan perl (dengan p kecil) adalah nama untuk program interpreter yang menjalankan kode sumber yang ditulis dengan bahasa Perl. Korelasi kedua nama ini ditegaskan oleh Tom Christiansen dalam ungkapan only perl can parse Perl, atau Nothing but perl can parse Perl. Nama perl sebagai sebuah program, mengikuti konsensus penamaan program di sistem Unix, yaitu pendek dan semua ditulis huruf kecil (kalau di Windows nama program ini adalah perl.exe). Baik Perl maupun perl bukanlah sebuah singkatan atau akronim. Jadi, penulisan PERL (semua huruf besar) dianggap salah, tidak berdasar, dan sama sekali tidak akurat jika dihubungkan dengan Perl sebagai bahasa pemrograman.[9]
Baru belakangan Larry Wall memberikan kepanjangan Practical Extraction and Reporting Language. Mungkin karena terkesan serius dan sangat relevan, kepanjangan ini secara salah sering dirujuk sebagai kepanjangan resmi dari Perl. Barangkali untuk mencegah kesalahpahaman, atau karena Larry Wall memang suka bercanda, dia mengumumkan kepanjangan lain, yaitu Pathologically Eclectic Rubbish Lister. Dan, yang terbaru adalah People Excel at Relational Labor, untuk menggambarkan bahwa perkembangan Perl tidak terlepas dari keterlibatan dan komitmen komunitas.[10]
Di luar itu, berkembang kreasi-kreasi lain untuk membuat kepanjangan Perl, baik yang bermaksud serius maupun bercanda, bahkan ada juga yang sifatnya merendahkan atau melecehkan.
Lambang Unta
[sunting | sunting sumber]Buku "Programming Perl" yang diterbitkan oleh O'Reilly Media memiliki sampul depan yang bergambar unta. Setelah itu buku ini dikenal sebagai Buku Unta. Gambar unta ini kemudian digunakan secara luas sebagai lambang dari Perl.
O'Reilly memiliki hak cipta atas gambar ini tetapi menyatakan bahwa mereka hanya akan menggunakan jalur hukum untuk melindungi ketepatan dan kesamaan lambang unta ini. O'Reilly memperbolehkan penggunaan non-komersial atas lambang ini dan menyediakan logo "Programming Republic of Perl" dan gambar tombol "Powered by Perl"
Pemrograman Perl
[sunting | sunting sumber]Lihat Pemrograman Perl untuk pembahasan yang lebih komprehensif dan bersifat teknis.
Kode sumber Perl tidak perlu dikompilasi, melainkan bisa langsung dijalankan oleh sebuah program interpreter bernama perl. Misalnya,
#!/usr/bin/perl
print "Hello, world!\n";
Jika program di atas ditulis dalam sebuah berkas bernama hello.pl
, lalu dijalankan dengan perintah (contoh di Linux):
$ perl hello.pl
Maka di layar akan tercetak:
Hello, World! $
Bahkan, sebuah program yang mengerjakan proses rumit bisa ditulis dengan jumlah karakter yang lebih pendek daripada jumlah kolom layar standar, misalnya:
perl -lane '$h{$_}++ for @F; END { print "$_: $h{$_} " for keys %h}' <nama_berkas>
Program ini membaca sebuah berkas teks dan mencetak setiap kata unik dan jumlahnya di dalam berkas. Contoh hasil cetakan dengan sebuah berkas berisi kode SQL:
password: 2 category: 2 DROP: 20 TABLE: 40 varchar(12): 9 dst.
Tentu saja, yang dimaksud dengan "kata" di sini adalah rentetan karakter tanpa spasi. Jika dituangkan dalam sebuah berkas, program di atas bisa menjadi lima hingga sepuluh baris, tergantung gaya pemrograman. Program semacam ini disebut juga oneliner, dan sering digunakan untuk keperluan sederhana dan cepat. Contoh lain penggunaan oneliner adalah mengubah nama berkas di suatu direktori menjadi huruf kecil semua, seperti:
perl -e 'rename $_, lc for <*>'
Beberapa programer Perl tertantang untuk membuat solusi oneliner untuk problem yang sama dengan jumlah karakter yang lebih pendek dan berkembanglah sebuah kompetisi yang disebut Perl Golf (lihat juga Komunitas dan Budaya). Hal seperti ini bisa membuat sebagian orang kagum, namun bagi sebagian orang, semakin membuktikan bahwa Perl hanyalah bahasa untuk main-main, atau kalaupun untuk serius, tidak mudah diphami oleh orang lain, bahkan oleh programernya sendiri setelah beberapa waktu kemudian. Lelucon yang diberikan kepada Perl tentang ini adalah write only, artinya program hanya bisa ditulis, tetapi tidak bisa dibaca.
Sebenarnya tidak demikian. Perl menyediakan berbagai fasilitas bagi penggunanya untuk menulis program dalam berbagai gaya dan bentuk sesuai dengan keperluannya. Dalam hal ini Perl memperkenalkan motto TMTOWDI, dalam bahasa Inggris ini adalah singkatan dari There's More Than One Way To Do It, atau terjemahan bebasnya, terdapat lebih dari satu cara untuk menyelesaikan suatu persoalan. Tanpa bisa dihindari, motto ini juga menjadi sumber kritikan. Artinya, Perl tidak memiliki standar penyelesaian masalah. Padahal tidak demikian. Hanya karena terdapat lima atau selusin cara untuk menyelesaikan masalah bukan berarti semua cara tersebut setara dalam berbagai aspek kualitas. Dan, dokumentasi Perl penuh dengan berbagai contoh penggunaan yang direkomendasikan, dan juga contoh penggunaan yang tidak direkomendasikan dengan berbagai alasan.
Seperti juga bahasa lainnya, Perl menyediakan fasilitas pemrograman standar seperti penggunaan variabel, fungsi (built-in function), kontrol logika (if-else), dan iterasi (while, for, foreach
). Kontrol switch baru akan disediakan di Perl 6, namun di Perl 5 dapat diemulasikan dengan mudah. Perl membolehkan programer untuk membuat fungsi sendiri (subroutine), mengenalkan pembatasan cakupan variabel secara hirarkis, penggunaan komentar, serta pembuatan dokumentasi terstruktur bersandingan dengan kode program. Sejak Perl 5 dikeluarkan, Perl mendukung pemrograman berbasis objek (OOP), disusul kemudian dengan thread programming, serta memperbaharui penggunaan namespace. Fasilitas yang paling digemari pengguna Perl, regular expression (atau regex), telah ada sejak Perl 2. Dari versi ke versi regex makin dikembangkan sehingga diakui sebagai implementasi regex paling lengkap. Tidak heran kemudian muncul implementasi regex yang dikenal sebagai PCRE, atau Perl-compatible regular expression.
Perl menyediakan sejumlah fasilitas untuk memastikan bahwa programer dapat membuat program yang aman dari serangan cracker. Jika programer menginginkan, Perl menyediakan lingkungan pemrogaman yang lebih ketat yang akan menangkap kesalahan atau potensi kesalahan sekecil apa pun sebelum program bisa dijalankan. Fasilitas pemrograman berorientasi jaringan sudah terintegrasi, juga penanganan dan pemrosesan berkas (file handling) dan setara berkas (seperti diketahui, di sistem Unix dan variannya, segala sesuatu dianggap berkas dan bisa diperlakukan sebagai berkas). Sebelum threading diperkenalkan, Perl sudah menyediakan fasilitas untuk menjalankan lebih dari satu proses secara paralel. Sebagai bahasa yang diciptakan dalam tradisi Unix, Perl sedari awal mendukung pembuatan program yang bisa berinteraksi dengan program lain yang ada di sistem, sehingga bisa dijalankan seperti diilustrasikan di bawah ini:
cat <berkas> | sort | program_perl | perl -p -e 's/ganti ini/dengan ini/g' | vim - | tar cf - .
Komunitas dan budaya
[sunting | sunting sumber]Pada awalnya komunitas pengguna Perl hanya di sekitar tim pengembangan Perl itu sendiri, beberapa grup diskusi di newsgroup, dan sejumlah mailing list. Komunitas pengguna yang lebih spesifik dimulai dengan munculnya New York Perl Mongers (disingkat NY.pm) yang dibentuk oleh brian d foy (bdf). Dari namanya bisa diketahui bahwa anggota NY.pm berasal dari kota New York, Amerika Serikat. Terinspirasi oleh Randal L. Schwartz, bdf melangkah lebih jauh dengan membentuk Perl Mongers sebagai wadah internasional yang mengkoordinasikan komunitas pengguna Perl di seluruh dunia.[11]
Satu-persatu komunitas Perl bebasis kota berdiri. Mengambil model dari NY.pm, hampir semua nama komunitas Perl Mongers di suatu kota diambil dari nama kota tersebut dan ditambahkan .pm di belakangnya. Ini tentu mengingatkan pada penamaan modul ekstensi .pm untuk Perl Modules. Di Indonesia sempat berdiri tiga komunitas berbasis kota, yaitu Bandung.pm, Jakarta.pm, dan Semarang.pm. Di luar grup-grup berbasis kota tersebut, terdapat juga grup diskusi berbasis web, yaitu PerlMonks.
Budaya Perl dikenal cukup unik, antara lain:
Pranala luar
[sunting | sunting sumber]- Situs web resmi
- Dokumentasi Perl
- Repositori Perl di GitHub
- Berita Perl
- Blog Perl Indonesia
Referensi
[sunting | sunting sumber]- ^ "Rekaman Rilis Bahasa Pemrograman Perl". Diakses tanggal 2018-05-27.
- ^ "Perl 5.34.0 is now available!". www.nntp.perl.org. Diakses tanggal 2021-05-21.
- ^ "Perl 5.32.1 is now available!". www.nntp.perl.org. Diarsipkan dari versi asli tanggal January 24, 2021. Diakses tanggal 2021-01-24.
- ^ "Perl 5.35.0 is now available!". www.nntp.perl.org. Diakses tanggal 2021-05-21.
- ^ Lisensi Artistic - dev.perl.org
- ^ Artistic - File pada repositori Git Perl5
- ^ "Perl Licensing". dev.perl.org. Diakses tanggal 2018-05-26.
- ^ State of the Onion 2003
- ^ What's the difference between "perl" and "Perl"?
- ^ The State of the Onion 10
- ^ Wawancara dengan brian d foy