Bahasa pemrograman tujuan umum

jenis bahasa pemrograman yang dirancang untuk digunakan lintas domain

Bahasa pemrograman tujuan umum (general-purpose programming language; GPL) adalah bahasa pemrograman yang digunakan untuk membangun perangkat lunak dalam ragam domain aplikasi. Sebagai kebalikan dari konsep ini, bahasa pemrograman spesifik domain (domain-specific language; DSL) digunakan untuk membangun perangkat lunak dalam domain tertentu. Sebagai contoh, bahasa pemrograman Python termasuk GPL, dapat digunakan untuk membangun perangkat lunak di berbagai domain (mobile, web, dsb.), sementara bahasa SQL adalah berjenis DSL, digunakan secara spesifik untuk melakukan kueri pada basis data relasional.

Sejarah

sunting

Bahasa pemrograman masa awal dirancang secara khusus untuk melakukan proses komputasi ilmiah (kalkulasi numerik) atau pemrosesan data komersial, begitu juga dengan desain perangkat keras komputer saat itu. Bahasa pemrograman ilmiah seperti Fortran dan ALGOL mendukung perhitungan bilangan titik mengambang (floating-point) dan larik multidimensi (multidimensional array), sementara bahasa pemrograman bisnis seperti COBOL mendukung format berkas bidang tetap (fixed-field) dan rekord data. Contoh bahasa khusus lain seperti IPL-V dan LISP yang digunakan untuk pemrosesan senarai simbolik (symbolic list processing); COMIT melakukan manipulasi pada tipe data untai (string); dan APT untuk mesin yang dikendalikan secara numerik. Pemrograman sistem yang memerlukan manipulasi pointer biasanya dilakukan dalam bahasa rakitan (assembly), meskipun JOVIAL digunakan untuk tujuan tersebut dalam aplikasi militer.[1]

Seri komputer mainframe System/360 yang dirilis oleh IBM pada tahun 1964, didesain sebagai arsitektur perangkat keras terpadu untuk aplikasi baik ilmiah dan komersial. Untuk memprogram sistem komputer tersebut, IBM mengembangkan bahasa PL/I sebagai bahasa tujuan umum yang mendukung pemrograman untuk keperluan ilmiah, komersial, dan sistem. Pada perkembangan berikutnya, subhimpunan dari bahasa PL/I digunakan sebagai standar bahasa pemrograman sistem untuk sistem operasi Multics.

Sejak pengembangan bahasa PL/I oleh IBM, pembedaan antara bahasa pemrograman untuk tujuan ilmiah dan komersial telah berkurang, dengan sebagian besar bahasa pemrograman yang didesain kemudian mendukung fitur-fitur dasar yang dibutuhkan oleh kedua tujuan tersebut, dan sebagian besar penanganan format berkas khusus didelegasikan ke sistem manajemen basis data khusus, dan bukan oleh mainframe komputer secara langsung lagi.

Meskipun demikian, tetap banyak bahasa pemrograman khusus tetap dikembangkan mulai tahun 1960an: GPSS dan Simula untuk simulasi kejadian diskrit; MAD, BASIC, Logo, dan Pascal untuk keperluan pengajaran pemrograman; C untuk pemrograman sistem; JOSS dan APL\360 untuk pemrograman interaktif.[1]

GPL versus DSL

sunting

Pembedaan antara bahasa pemrograman tujuan umum dan tujuan khusus domain tidak selalu jelas.[2] Bahasa pemrograman dapat memiliki desain untuk tujuan pengerjaan tugas tertentu, namun pada penggunaannya dapat digunakan di luar domain asli dan dengan demikian dapat dianggap sebagai bahasa pemrograman tujuan umum. Misalnya, pada awalnya COBOL, Fortran, dan Lisp didesain sebagai DSL (untuk pemrosesan bisnis, perhitungan numerik, dan pemrosesan simbolik), namun seiring berjalannya waktu digunakan di domain berbeda sehingga digolongkan menjadi GPL.[3] Sebaliknya, suatu bahasa pemrograman bisa saja dirancang untuk penggunaan umum tetapi pada pada praktiknya hanya diterapkan pada area tertentu.[4] Suatu bahasa pemrograman yang cocok untuk memecahkan suatu permasalahan, baik itu bahasa tujuan umum atau DSL, harus mampu meminimalkan tingkat detail yang diperlukan namun tetap cukup ekspresif untuk bekerja di domain permasalahan. [3] Seperti yang tersirat dalam namanya, bahasa tujuan umum bersifat “umum” karena tidak memiliki dukungan untuk notasi yang dipakai dalam domain yang spesifik sementara DSL dapat dirancang dalam berbagai domain masalah untuk menangani masalah ini.[3] Dalam suatu domain permasalahan yang belum terdefinisi dengan baik, bahasa tujuan umum lebih dipilih ketimbang DSL. Untuk memecahkan masalah dalam domain tersebut, bahasa tujuan umum dengan pustaka tipe data dan fungsi yang sesuai dapat digunakan.[5] Walaupun bahasa DSL biasanya berukuran lebih kecil daripada GPL karena menawarkan rentang notasi abstraksi yang lebih kecil, beberapa DSL sebenarnya memuat keseluruhan pustaka GPL sebagai subbahasa. Dalam kasus ini, DSL mampu menawarkan kekuatan ekspresif untuk mengolah permasalahan domain spesifik bersama dengan kekuatan ekspresif GPL.[6]

Bahasa pemrograman tujuan umum seluruhnya bersistem Turing lengkap, yang berarti secara teoritis mereka dapat digunakan memecahkan masalah komputasi apa pun. Bahasa-bahasa domain spesifik sering kali bersistem Turing lengkap namun tidak secara eksklusif demikian.

Kelebihan dan kekurangan

sunting

Bahasa pemrograman tujuan umum lebih sering digunakan oleh para pemrogram. Menurut sebuah penelitian, bahasa C, Python, dan Java adalah bahasa pemrograman yang paling sering digunakan pada tahun 2021.[7] Salah satu argumen yang mendukung penggunaan GPL dibanding DSL adalah bahwa lebih banyak orang terbiasa menggunakan bahasa GPL yang bisa dipakai di ragam domain, sehingga mengurangi kebutuhan untuk mempelajari bahasa baru untuk memecahkan masalah di ragam domain.

Selain itu, untuk banyak tugas (seperti analisis statistik, pemelajaran mesin, dll.) ada ragam pustaka dalam bahasa GPL yang diuji dan dioptimalkan secara ekstensif. Secara teori, keberadaan pustaka-pustaka ini menjembatani kesenjangan antara GPL dan DSL.[3]

Suatu studi empiris pada tahun 2010 berupaya membandingkan tingkatan kemampuan pemecahan masalah dan produktivitas yang dilakukan baik antara GPL atau DSL. Studi ini dilakukan dengan memberikan masalah pemrograman kepada pengguna yang familiar dengan GPL (C#) dan tidak familiar dengan DSL (XAML). Hasilnya, pengguna bahasa DSL ini memperoleh kinerja yang lebih baik sebesar 15%, meskipun mereka lebih familiar dengan GPL, sehingga memerlukan penelitian lebih lanjut. [3]

Contoh bahasa pemrograman tujuan umum

sunting

Bahasa Pemrograman C

sunting

Pendahulu bahasa C, yaitu bahasa B, dikembangkan dengan tujuan khusus untuk pemrograman sistem.[8] Sebaliknya, bahasa C telah digunakan dalam berbagai domain komputasi, seperti sistem operasi, pemacu peranti (device drivers), perangkat lunak aplikasi, dan sistem terbenam (embedded systems).

Bahasa pemrograman C cocok digunakan di ragam domain permasalahan karena bersifat umum. Bahasa tersebut menyediakan ekspresi, kontrol aliran, struktur data yang ekonomis, dan sekumpulan besar operator, namun tidak membatasi pengguna C dalam mendesain program untuk satu konteks saja.[9] Alhasil, meskipun pertama kali digunakan oleh perancangnya untuk menulis ulang kernel pada sistem operasi Unix,[10] bahasa C dapat kemudian diadaptasi untuk pengembangan aplikasi, pengembangan sistem terbenam (misalnya, dalam pemrograman mikroprosesor), atau pengembangan permainan video (misalnya, digunakan dalam pengembangan seri permainan Doom), dan seterusnya. Saat ini, C tetap menjadi salah satu bahasa pemrograman yang paling populer dan banyak digunakan.[11]

Bahasa Pemrograman C++

sunting

Dirancang sebagai ekstensi dari bahasa C, bahasa pemrograman C++ memperkenalkan fitur dengan paradigma berorientasi objek, dan fitur lain seperti referensi, pelebihan muatan operator (operator overloading), dan argumen-argumen bawaan (default arguments). Seperti bahasa C, sifat umum bahasa C++ membuatnya dapat digunakan di ragam domain. Meskipun penerapan utama bahasa C++ adalah di domain pemrograman sistem (bahasa C++ memiliki kemampuan mengakses ke arsitektur komputer tingkat rendah),[12] bahasa C++ secara luas digunakan untuk merancang antara lain: aplikasi desktop, permainan video, basis data, dan sistem keuangan.[13] Perusahaan perangkat lunak dan perusahaan keuangan besar, seperti Microsoft, Apple, Bloomberg, serta Morgan Stanley, menggunakan bahasa C++ secara luas dalam aplikasi internal dan eksternal mereka.[13]

Bahasa Pemrograman Python

sunting

Bahasa Python dirancang sebagai bahasa yang mementingkan keterbacaan dan ekstensibilitas kode.[14][15] Keterbacaan memungkinkan para pengguna yang tidak berpengalaman untuk mempelajari dan menulis program komputer dengan mudah, sedangkan ekstensibilitas kode memungkinkan para spesialis domain untuk merancang pustaka untuk domain mereka dengan mudah. Karena dua hal ini, bahasa Python telah digunakan secara luas di berbagai domain.

Berikut ini adalah beberapa domain tempat aplikasi bahasa Python: [16]

  • Pengembangan Web: Kerangka kerja web seperti Django dan Flask memungkinkan pengembang web untuk membuat peladen (server) web yang bersifat tangguh (robust). Peladen tersebut kemudian dapat memanfaatkan ekosistem dalam bahasa Python yang lebih luas.
  • Sains dan Akademisi: Bahasa Python menyediakan pustaka spesifik kebutuhan ilmiah dan pengolahan data, seperti SciPy dan Pandas. [17]
  • Pemelajaran Mesin: Pustaka bahasa Python seperti Scikit-learn dan Tensorflow meningkatkan aksesibilitas pengembangan pemelajaran mesin.[18]
  • Pengembangan Perangkat Lunak Umum: Bahasa Python menjadi media pengembangan aplikasi pengguna, program pengikisan konten web (web scraping), permainan digital, dan perangkat lunak umum lainnya.

Lihat juga

sunting

Referensi

sunting
  1. ^ a b Jean E. Sammet, "Programming Languages: History and Future", Communications of the ACM 15:7:601-610 (July 1972) DOI:10.1145/361454.361485
  2. ^ van Deursen, Arie; Klint, Paul; Visser, Joost (2000). "Domain-Specific Languages: An Annotated Bibliography". ACM SIGPLAN Notices. 35 (6): 26–36. doi:10.1145/352029.352035. 
  3. ^ a b c d e Kosar, Tomaz (May 2010). "Comparing General-Purpose and Domain-Specific Languages: An Empirical Study" (PDF). Computer Science and Information Systems. 7 (2): 247–264. doi:10.2298/CSIS1002247K.  Kesalahan pengutipan: Tanda <ref> tidak sah; nama ":0" didefinisikan berulang dengan isi berbeda
  4. ^ Berry, Gerard (May 2006). "Real time programming: special purpose or general purpose languages". HAL Open Science. 
  5. ^ van Deursen, Arie (December 1998). "Little languages: little maintenance?". Journal of Software Maintenance: Research and Practice. 10 (2): 75–92. doi:10.1002/(SICI)1096-908X(199803/04)10:2<75::AID-SMR168>3.0.CO;2-5. 
  6. ^ van Deursen, Arie; Klint, Paul; Visser, Joost (June 2000). "Domain-specific languages: an annotated bibliography". ACM SIGPLAN Notices (dalam bahasa Inggris). 35 (6): 26–36. doi:10.1145/352029.352035. ISSN 0362-1340. 
  7. ^ "The Most Popular Programming Languages - 1965/2021 - New Update - Statistics and Data". statisticsanddata.org. Diakses tanggal 2022-06-03. 
  8. ^ Thompson, K. (1972-01-07). "Cover sheet for technical memorandum" (PDF). Bell Telephone Laboratories. Diarsipkan dari versi asli (PDF) tanggal 2015-06-11. Diakses tanggal 2022-06-03. 
  9. ^ W., Kernighan, Brian (2016). The C programming language. Prentice Hall. ISBN 978-0-13-110370-2. OCLC 1004153413. 
  10. ^ Ritchie, Dennis (April 1993). "The development of the C language" (PDF). ACM SIGPLAN Notices. 28 (3): 201–208. doi:10.1145/155360.155580. 
  11. ^ "TIOBE Index". TIOBE (dalam bahasa Inggris). Diakses tanggal 2022-06-03. 
  12. ^ Stroustrup, Bjarne (1995). The C++ Programming Language. Addison-Wesley. 
  13. ^ a b "C++ Applications". www.stroustrup.com. Diakses tanggal 2022-06-03. 
  14. ^ "artima - The Making of Python". www.artima.com. Diakses tanggal 2022-06-03. 
  15. ^ "General Python FAQ — Python 3.10.4 documentation". docs.python.org. Diakses tanggal 2022-06-03. 
  16. ^ "Applications for Python". Python.org (dalam bahasa Inggris). Diakses tanggal 2022-06-03. 
  17. ^ "Programming Languages Popularity in 12,086 Research Papers – Quantifying Health" (dalam bahasa Inggris). Diakses tanggal 2022-06-03. 
  18. ^ Pedregosa, Fabian (2011). "Scikit-learn: Machine learning in Python" (PDF). The Journal of Machine Learning Research. 12: 2825–2830. arXiv:1201.0490 . Bibcode:2011JMLR...12.2825P.