Bahasa pemrograman tujuan umum: Perbedaan antara revisi
Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 28473608; atribusi sumber disertakan. |
Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi |
||
| Baris 2: | Baris 2: | ||
== Sejarah == | == Sejarah == | ||
Bahasa pemrograman masa awal dirancang secara khusus untuk melakukan proses komputasi ilmiah (kalkulasi numerik) atau pemrosesan data komersial, begitu juga dengan desain [[Perangkat keras|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|rekord data]]. Contoh bahasa khusus lain seperti [[Bahasa pemroses informasi|IPL-V]] dan [[Lisp (bahasa pemrograman)|LISP]] yang digunakan untuk [[Senarai (komputasi)|pemrosesan senarai simbolik]] (''symbolic list processing''); [[KOMITMEN|COMIT]] melakukan manipulasi pada tipe data untai (''string''); dan [[APT (bahasa pemrograman)|APT]] untuk [[CNC|mesin yang dikendalikan secara numerik]]. [[Pemrograman sistem]] yang memerlukan [[Pointer (pemrograman komputer)|manipulasi pointer]] biasanya dilakukan dalam [[bahasa rakitan]] (''assembly''), meskipun [[PERIANG|JOVIAL]] digunakan untuk tujuan tersebut dalam aplikasi militer. | Bahasa pemrograman masa awal dirancang secara khusus untuk melakukan proses komputasi ilmiah (kalkulasi numerik) atau pemrosesan data komersial, begitu juga dengan desain [[Perangkat keras|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|rekord data]]. Contoh bahasa khusus lain seperti [[Bahasa pemroses informasi|IPL-V]] dan [[Lisp (bahasa pemrograman)|LISP]] yang digunakan untuk [[Senarai (komputasi)|pemrosesan senarai simbolik]] (''symbolic list processing''); [[KOMITMEN|COMIT]] melakukan manipulasi pada tipe data untai (''string''); dan [[APT (bahasa pemrograman)|APT]] untuk [[CNC|mesin yang dikendalikan secara numerik]]. [[Pemrograman sistem]] yang memerlukan [[Pointer (pemrograman komputer)|manipulasi pointer]] biasanya dilakukan dalam [[bahasa rakitan]] (''assembly''), meskipun [[PERIANG|JOVIAL]] digunakan untuk tujuan tersebut dalam aplikasi militer.<ref>Jean E. Sammet, "Programming Languages: History and Future", ''Communications of the ACM'' '''15''':7:601-610 (July 1972)</ref> | ||
Seri komputer ''mainframe'' [[Sistem IBM/360|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/Saya|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 [[Multik|Multics]]. | Seri komputer ''mainframe'' [[Sistem IBM/360|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/Saya|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 [[Multik|Multics]]. | ||
| Baris 8: | Baris 8: | ||
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 [[Pangkalan data|sistem manajemen basis data]] khusus, dan bukan oleh ''mainframe'' komputer secara langsung lagi. | 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 [[Pangkalan data|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 [[Simulasi|Simula]] untuk simulasi kejadian diskrit; [[MAD (bahasa pemrograman)|MAD]], [[BASIC]], [[Logo (bahasa pemrograman)|Logo]], dan [[Pascal (bahasa pemrograman)|Pascal]] untuk keperluan pengajaran pemrograman; [[C (bahasa pemrograman)|C]] untuk pemrograman sistem; [[JOS|JOSS]] dan [[APL/360|APL\360]] untuk pemrograman interaktif. | Meskipun demikian, tetap banyak bahasa pemrograman khusus tetap dikembangkan mulai tahun 1960an: [[GPSS]] dan [[Simulasi|Simula]] untuk simulasi kejadian diskrit; [[MAD (bahasa pemrograman)|MAD]], [[BASIC]], [[Logo (bahasa pemrograman)|Logo]], dan [[Pascal (bahasa pemrograman)|Pascal]] untuk keperluan pengajaran pemrograman; [[C (bahasa pemrograman)|C]] untuk pemrograman sistem; [[JOS|JOSS]] dan [[APL/360|APL\360]] untuk pemrograman interaktif.<ref>Jean E. Sammet, "Programming Languages: History and Future", ''Communications of the ACM'' '''15''':7:601-610 (July 1972)</ref> | ||
== GPL versus DSL == | == GPL versus DSL == | ||
Pembedaan antara bahasa pemrograman tujuan umum dan tujuan khusus domain tidak selalu jelas. Bahasa pemrograman dapat memiliki desain untuk tujuan pengerjaan tugas tertentu, tetapi 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 (bahasa pemrograman)|Lisp]] didesain sebagai DSL (untuk pemrosesan bisnis, perhitungan numerik, dan pemrosesan simbolik), tetapi seiring berjalannya waktu digunakan di domain berbeda sehingga digolongkan menjadi GPL. Sebaliknya, suatu bahasa pemrograman bisa saja dirancang untuk penggunaan umum tetapi pada pada praktiknya hanya diterapkan pada area tertentu. Suatu bahasa pemrograman yang cocok untuk memecahkan suatu masalah, baik itu bahasa tujuan umum atau DSL, harus mampu meminimalkan tingkat detail yang diperlukan tetapi tetap cukup ekspresif untuk bekerja di domain masalah. | Pembedaan antara bahasa pemrograman tujuan umum dan tujuan khusus domain tidak selalu jelas.<ref>Arie van Deursen. ''Domain-Specific Languages: An Annotated Bibliography''. ''ACM SIGPLAN Notices''. 2000. Vol. 35 (6). hlm. 26-36. doi:10.1145/352029.352035.</ref> Bahasa pemrograman dapat memiliki desain untuk tujuan pengerjaan tugas tertentu, tetapi 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 (bahasa pemrograman)|Lisp]] didesain sebagai DSL (untuk pemrosesan bisnis, perhitungan numerik, dan pemrosesan simbolik), tetapi seiring berjalannya waktu digunakan di domain berbeda sehingga digolongkan menjadi GPL.<ref>Tomaz Kosar. [http://www.doiserbia.nb.rs/img/doi/1820-0214/2010/1820-02141002247K.pdf Comparing General-Purpose and Domain-Specific Languages: An Empirical Study]. ''Computer Science and Information Systems''. May 2010. Vol. 7 (2). hlm. 247–264. doi:10.2298/CSIS1002247K.</ref> Sebaliknya, suatu bahasa pemrograman bisa saja dirancang untuk penggunaan umum tetapi pada pada praktiknya hanya diterapkan pada area tertentu.<ref>Gerard Berry. [https://hal.inria.fr/inria-00075494/document Real time programming: special purpose or general purpose languages]. ''HAL Open Science''. May 2006.</ref> Suatu bahasa pemrograman yang cocok untuk memecahkan suatu masalah, baik itu bahasa tujuan umum atau DSL, harus mampu meminimalkan tingkat detail yang diperlukan tetapi tetap cukup ekspresif untuk bekerja di domain masalah. <ref>Tomaz Kosar. [http://www.doiserbia.nb.rs/img/doi/1820-0214/2010/1820-02141002247K.pdf Comparing General-Purpose and Domain-Specific Languages: An Empirical Study]. ''Computer Science and Information Systems''. May 2010. Vol. 7 (2). hlm. 247–264. doi:10.2298/CSIS1002247K.</ref> 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.<ref>Tomaz Kosar. [http://www.doiserbia.nb.rs/img/doi/1820-0214/2010/1820-02141002247K.pdf Comparing General-Purpose and Domain-Specific Languages: An Empirical Study]. ''Computer Science and Information Systems''. May 2010. Vol. 7 (2). hlm. 247–264. doi:10.2298/CSIS1002247K.</ref> 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.<ref>Arie van Deursen. [https://onlinelibrary.wiley.com/doi/pdf/10.1002/%28SICI%291096-908X%28199803/04%2910%3A2%3C75%3A%3AAID-SMR168%3E3.0.CO%3B2-5 Little languages: little maintenance?]. ''Journal of Software Maintenance: Research and Practice''. December 1998. Vol. 10 (2). hlm. 75–92. doi:10.1002/(SICI)1096-908X(199803/04)10:2 3.0.CO;2-5.</ref> 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 masalah domain spesifik bersama dengan kekuatan ekspresif GPL.<ref>Arie van Deursen. [https://dl.acm.org/doi/10.1145/352029.352035 Domain-specific languages: an annotated bibliography]. ''ACM SIGPLAN Notices''. June 2000. Vol. 35 (6). hlm. 26–36. doi:10.1145/352029.352035.</ref> | ||
Bahasa pemrograman tujuan umum seluruhnya bersistem [[Kelengkapan Turing|Turing lengkap]], yang berarti secara teoretis mereka dapat digunakan memecahkan masalah komputasi apa pun. Bahasa-bahasa domain spesifik sering kali bersistem Turing lengkap tetapi tidak secara eksklusif demikian. | Bahasa pemrograman tujuan umum seluruhnya bersistem [[Kelengkapan Turing|Turing lengkap]], yang berarti secara teoretis mereka dapat digunakan memecahkan masalah komputasi apa pun. Bahasa-bahasa domain spesifik sering kali bersistem Turing lengkap tetapi tidak secara eksklusif demikian. | ||
=== Kelebihan dan kekurangan === | === Kelebihan dan kekurangan === | ||
Bahasa pemrograman tujuan umum lebih sering digunakan oleh para pemrogram. Menurut sebuah penelitian, bahasa [[C (bahasa pemrograman)|C]], [[Python (bahasa pemrograman)|Python]], dan [[Java]] adalah bahasa pemrograman yang paling sering digunakan pada tahun 2021. 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. | Bahasa pemrograman tujuan umum lebih sering digunakan oleh para pemrogram. Menurut sebuah penelitian, bahasa [[C (bahasa pemrograman)|C]], [[Python (bahasa pemrograman)|Python]], dan [[Java]] adalah bahasa pemrograman yang paling sering digunakan pada tahun 2021.<ref>[https://statisticsanddata.org/data/the-most-popular-programming-languages-1965-2021/#:~:text=The%20most%20popular%20programming%20languages%20in%202021%20(TIOBE%20Index)&text=The%20most%20popular%20programming%20language,third%20place%20with%20a%2010.31%25 The Most Popular Programming Languages - 1965/2021 - New Update - Statistics and Data]. ''statisticsanddata.org''.</ref> 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. | 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.<ref>Tomaz Kosar. [http://www.doiserbia.nb.rs/img/doi/1820-0214/2010/1820-02141002247K.pdf Comparing General-Purpose and Domain-Specific Languages: An Empirical Study]. ''Computer Science and Information Systems''. May 2010. Vol. 7 (2). hlm. 247–264. doi:10.2298/CSIS1002247K. Kosar, Tomaz (May 2010). [http://www.doiserbia.nb.rs/img/doi/1820-0214/2010/1820-02141002247K.pdf "Comparing General-Purpose and Domain-Specific Languages: An Empirical Study"] (PDF) . ''Computer Science and Information Systems''. '''7''' (2): 247–264. doi:10.2298/CSIS1002247K.</ref> | ||
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 Sharp (bahasa pemrograman)|C#]]) dan tidak familiar dengan DSL ([[Extensible Application Markup Language|XAML]]). Hasilnya, pengguna bahasa DSL ini memperoleh kinerja yang lebih baik sebesar 15%, meskipun mereka lebih familiar dengan GPL, sehingga memerlukan penelitian lebih lanjut. | 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 Sharp (bahasa pemrograman)|C#]]) dan tidak familiar dengan DSL ([[Extensible Application Markup Language|XAML]]). Hasilnya, pengguna bahasa DSL ini memperoleh kinerja yang lebih baik sebesar 15%, meskipun mereka lebih familiar dengan GPL, sehingga memerlukan penelitian lebih lanjut. <ref>Tomaz Kosar. [http://www.doiserbia.nb.rs/img/doi/1820-0214/2010/1820-02141002247K.pdf Comparing General-Purpose and Domain-Specific Languages: An Empirical Study]. ''Computer Science and Information Systems''. May 2010. Vol. 7 (2). hlm. 247–264. doi:10.2298/CSIS1002247K. Kosar, Tomaz (May 2010). [http://www.doiserbia.nb.rs/img/doi/1820-0214/2010/1820-02141002247K.pdf "Comparing General-Purpose and Domain-Specific Languages: An Empirical Study"] (PDF) . ''Computer Science and Information Systems''. '''7''' (2): 247–264. doi:10.2298/CSIS1002247K.</ref> | ||
== Contoh bahasa pemrograman tujuan umum == | == Contoh bahasa pemrograman tujuan umum == | ||
=== Bahasa Pemrograman C === | === Bahasa Pemrograman C === | ||
Pendahulu bahasa [[C (bahasa pemrograman)|C]], yaitu bahasa [[B (bahasa pemrograman)|B]], dikembangkan dengan tujuan khusus untuk [[pemrograman sistem]]. Sebaliknya, bahasa C telah digunakan dalam berbagai domain komputasi, seperti [[sistem operasi]], [[pemacu peranti]] (''device drivers''), [[Aplikasi|perangkat lunak aplikasi]], dan [[sistem terbenam]] (''embedded systems''). | Pendahulu bahasa [[C (bahasa pemrograman)|C]], yaitu bahasa [[B (bahasa pemrograman)|B]], dikembangkan dengan tujuan khusus untuk [[pemrograman sistem]].<ref>K. Thompson. [https://www.bell-labs.com/usr/dmr/www/kbman.pdf Cover sheet for technical memorandum]. Bell Telephone Laboratories. 1972-01-07.</ref> Sebaliknya, bahasa C telah digunakan dalam berbagai domain komputasi, seperti [[sistem operasi]], [[pemacu peranti]] (''device drivers''), [[Aplikasi|perangkat lunak aplikasi]], dan [[sistem terbenam]] (''embedded systems''). | ||
Bahasa pemrograman C cocok digunakan di ragam domain masalah karena bersifat umum. Bahasa tersebut menyediakan ekspresi, kontrol aliran, struktur data yang ekonomis, dan sekumpulan besar operator, tetapi tidak membatasi pengguna C dalam mendesain program untuk satu konteks saja. Alhasil, meskipun pertama kali digunakan oleh [[Dennis Ritchie|perancangnya]] untuk menulis ulang kernel pada sistem operasi [[Unix]], 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 (waralaba)|Doom]]), dan seterusnya. Saat ini, C tetap menjadi salah satu bahasa pemrograman yang paling populer dan banyak digunakan. | Bahasa pemrograman C cocok digunakan di ragam domain masalah karena bersifat umum. Bahasa tersebut menyediakan ekspresi, kontrol aliran, struktur data yang ekonomis, dan sekumpulan besar operator, tetapi tidak membatasi pengguna C dalam mendesain program untuk satu konteks saja.<ref>Kernighan, Brian W. [http://worldcat.org/oclc/1004153413 The C programming language]. Prentice Hall. 2016. ISBN 978-0-13-110370-2.</ref> Alhasil, meskipun pertama kali digunakan oleh [[Dennis Ritchie|perancangnya]] untuk menulis ulang kernel pada sistem operasi [[Unix]],<ref>Dennis Ritchie. [https://www.bell-labs.com/usr/dmr/www/chist.pdf The development of the C language]. ''ACM SIGPLAN Notices''. April 1993. Vol. 28 (3). hlm. 201–208. doi:10.1145/155360.155580.</ref> 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 (waralaba)|Doom]]), dan seterusnya. Saat ini, C tetap menjadi salah satu bahasa pemrograman yang paling populer dan banyak digunakan.<ref>[https://www.tiobe.com/tiobe-index/ TIOBE Index]. ''TIOBE''.</ref> | ||
=== Bahasa Pemrograman C++ === | === Bahasa Pemrograman C++ === | ||
Dirancang sebagai ekstensi dari bahasa C, bahasa pemrograman [[C++]] memperkenalkan fitur dengan paradigma [[Pemrograman berorientasi objek|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), bahasa C++ secara luas digunakan untuk merancang antara lain: aplikasi ''desktop'', permainan video, basis data, dan sistem keuangan. Perusahaan perangkat lunak dan perusahaan keuangan besar, seperti [[Microsoft]], [[Apple Inc.|Apple]], [[Bloomberg L.P.|Bloomberg]], serta [[Morgan Stanley]], menggunakan bahasa C++ secara luas dalam aplikasi internal dan eksternal mereka. | Dirancang sebagai ekstensi dari bahasa C, bahasa pemrograman [[C++]] memperkenalkan fitur dengan paradigma [[Pemrograman berorientasi objek|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),<ref>Bjarne Stroustrup. ''The C++ Programming Language''. Addison-Wesley. 1995.</ref> bahasa C++ secara luas digunakan untuk merancang antara lain: aplikasi ''desktop'', permainan video, basis data, dan sistem keuangan.<ref>[https://www.stroustrup.com/applications.html C++ Applications]. ''www.stroustrup.com''.</ref> Perusahaan perangkat lunak dan perusahaan keuangan besar, seperti [[Microsoft]], [[Apple Inc.|Apple]], [[Bloomberg L.P.|Bloomberg]], serta [[Morgan Stanley]], menggunakan bahasa C++ secara luas dalam aplikasi internal dan eksternal mereka.<ref>[https://www.stroustrup.com/applications.html C++ Applications]. ''www.stroustrup.com''.</ref> | ||
=== Bahasa Pemrograman Python === | === Bahasa Pemrograman Python === | ||
Bahasa [[Python (bahasa pemrograman)|Python]] dirancang sebagai bahasa yang mementingkan keterbacaan dan ekstensibilitas kode. 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. | Bahasa [[Python (bahasa pemrograman)|Python]] dirancang sebagai bahasa yang mementingkan keterbacaan dan ekstensibilitas kode.<ref>[https://www.artima.com/articles/the-making-of-python artima - The Making of Python]. ''www.artima.com''.</ref><ref>[https://docs.python.org/3/faq/general.html#why-was-python-created-in-the-first-place General Python FAQ — Python 3.10.4 documentation]. ''docs.python.org''.</ref> 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: | Berikut ini adalah beberapa domain tempat aplikasi bahasa Python: <ref>[https://www.python.org/about/apps/ Applications for Python]. ''Python.org''.</ref> | ||
* '''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. | * '''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 [[Panda (perangkat lunak)|Pandas]]. | * '''Sains dan Akademisi:''' Bahasa Python menyediakan pustaka spesifik kebutuhan ilmiah dan pengolahan data, seperti [[SciPy]] dan [[Panda (perangkat lunak)|Pandas]]. <ref>[https://quantifyinghealth.com/programming-languages-popularity-in-research/ Programming Languages Popularity in 12,086 Research Papers – Quantifying Health].</ref> | ||
* '''Pemelajaran Mesin:''' Pustaka bahasa Python seperti [[Scikit-pelajari|Scikit-learn]] dan [[TensorFlow|Tensorflow]] meningkatkan aksesibilitas pengembangan pemelajaran mesin. | * '''Pemelajaran Mesin:''' Pustaka bahasa Python seperti [[Scikit-pelajari|Scikit-learn]] dan [[TensorFlow|Tensorflow]] meningkatkan aksesibilitas pengembangan pemelajaran mesin.<ref>Fabian Pedregosa. [https://www.jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf?ref=https://githubhelp.com Scikit-learn: Machine learning in Python]. ''The Journal of Machine Learning Research''. 2011. Vol. 12. hlm. 2825–2830.</ref> | ||
* '''Pengembangan Perangkat Lunak Umum:''' Bahasa Python menjadi media pengembangan aplikasi pengguna, program pengikisan konten web (''web scraping''), permainan digital, dan perangkat lunak umum lainnya. | * '''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 == | == Lihat juga == | ||
* [[Bahasa markup tujuan umum|Bahasa markah tujuan umum]] | * [[Bahasa markup tujuan umum|Bahasa markah tujuan umum]] | ||
* [[Bahasa pemodelan tujuan umum]] | * [[Bahasa pemodelan tujuan umum]] | ||
== Referensi == | == Referensi == | ||
<references /> | |||
== Sumber dan atribusi == | == Sumber dan atribusi == | ||
Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Bahasa+pemrograman+tujuan+umum&oldid=28473608 Wikipedia bahasa Indonesia], revisi 28473608 (2025-11-14T03:53:57Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku. | |||
[https://id.wikipedia.org/w/index.php?title= | |||
revisi 28473608 (2025-11-14T03:53:57Z) | <!-- WIKI_UNISSULA_PRESENTATION_V4 --> | ||
Atribusi-BerbagiSerupa (CC BY-SA) | |||
Revisi terkini sejak 23 Agustus 2026 03.14
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
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.[2]
GPL versus DSL
Pembedaan antara bahasa pemrograman tujuan umum dan tujuan khusus domain tidak selalu jelas.[3] Bahasa pemrograman dapat memiliki desain untuk tujuan pengerjaan tugas tertentu, tetapi 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), tetapi seiring berjalannya waktu digunakan di domain berbeda sehingga digolongkan menjadi GPL.[4] Sebaliknya, suatu bahasa pemrograman bisa saja dirancang untuk penggunaan umum tetapi pada pada praktiknya hanya diterapkan pada area tertentu.[5] Suatu bahasa pemrograman yang cocok untuk memecahkan suatu masalah, baik itu bahasa tujuan umum atau DSL, harus mampu meminimalkan tingkat detail yang diperlukan tetapi tetap cukup ekspresif untuk bekerja di domain masalah. [6] 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.[7] 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.[8] 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 masalah domain spesifik bersama dengan kekuatan ekspresif GPL.[9]
Bahasa pemrograman tujuan umum seluruhnya bersistem Turing lengkap, yang berarti secara teoretis mereka dapat digunakan memecahkan masalah komputasi apa pun. Bahasa-bahasa domain spesifik sering kali bersistem Turing lengkap tetapi tidak secara eksklusif demikian.
Kelebihan dan kekurangan
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.[10] 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.[11]
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. [12]
Contoh bahasa pemrograman tujuan umum
Bahasa Pemrograman C
Pendahulu bahasa C, yaitu bahasa B, dikembangkan dengan tujuan khusus untuk pemrograman sistem.[13] 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 masalah karena bersifat umum. Bahasa tersebut menyediakan ekspresi, kontrol aliran, struktur data yang ekonomis, dan sekumpulan besar operator, tetapi tidak membatasi pengguna C dalam mendesain program untuk satu konteks saja.[14] Alhasil, meskipun pertama kali digunakan oleh perancangnya untuk menulis ulang kernel pada sistem operasi Unix,[15] 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.[16]
Bahasa Pemrograman C++
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),[17] bahasa C++ secara luas digunakan untuk merancang antara lain: aplikasi desktop, permainan video, basis data, dan sistem keuangan.[18] 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.[19]
Bahasa Pemrograman Python
Bahasa Python dirancang sebagai bahasa yang mementingkan keterbacaan dan ekstensibilitas kode.[20][21] 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: [22]
- 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. [23]
- Pemelajaran Mesin: Pustaka bahasa Python seperti Scikit-learn dan Tensorflow meningkatkan aksesibilitas pengembangan pemelajaran mesin.[24]
- 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
Referensi
- ↑ Jean E. Sammet, "Programming Languages: History and Future", Communications of the ACM 15:7:601-610 (July 1972)
- ↑ Jean E. Sammet, "Programming Languages: History and Future", Communications of the ACM 15:7:601-610 (July 1972)
- ↑ Arie van Deursen. Domain-Specific Languages: An Annotated Bibliography. ACM SIGPLAN Notices. 2000. Vol. 35 (6). hlm. 26-36. doi:10.1145/352029.352035.
- ↑ Tomaz Kosar. Comparing General-Purpose and Domain-Specific Languages: An Empirical Study. Computer Science and Information Systems. May 2010. Vol. 7 (2). hlm. 247–264. doi:10.2298/CSIS1002247K.
- ↑ Gerard Berry. Real time programming: special purpose or general purpose languages. HAL Open Science. May 2006.
- ↑ Tomaz Kosar. Comparing General-Purpose and Domain-Specific Languages: An Empirical Study. Computer Science and Information Systems. May 2010. Vol. 7 (2). hlm. 247–264. doi:10.2298/CSIS1002247K.
- ↑ Tomaz Kosar. Comparing General-Purpose and Domain-Specific Languages: An Empirical Study. Computer Science and Information Systems. May 2010. Vol. 7 (2). hlm. 247–264. doi:10.2298/CSIS1002247K.
- ↑ Arie van Deursen. Little languages: little maintenance?. Journal of Software Maintenance: Research and Practice. December 1998. Vol. 10 (2). hlm. 75–92. doi:10.1002/(SICI)1096-908X(199803/04)10:2 3.0.CO;2-5.
- ↑ Arie van Deursen. Domain-specific languages: an annotated bibliography. ACM SIGPLAN Notices. June 2000. Vol. 35 (6). hlm. 26–36. doi:10.1145/352029.352035.
- ↑ The Most Popular Programming Languages - 1965/2021 - New Update - Statistics and Data. statisticsanddata.org.
- ↑ Tomaz Kosar. Comparing General-Purpose and Domain-Specific Languages: An Empirical Study. Computer Science and Information Systems. May 2010. Vol. 7 (2). hlm. 247–264. doi:10.2298/CSIS1002247K. 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.
- ↑ Tomaz Kosar. Comparing General-Purpose and Domain-Specific Languages: An Empirical Study. Computer Science and Information Systems. May 2010. Vol. 7 (2). hlm. 247–264. doi:10.2298/CSIS1002247K. 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.
- ↑ K. Thompson. Cover sheet for technical memorandum. Bell Telephone Laboratories. 1972-01-07.
- ↑ Kernighan, Brian W. The C programming language. Prentice Hall. 2016. ISBN 978-0-13-110370-2.
- ↑ Dennis Ritchie. The development of the C language. ACM SIGPLAN Notices. April 1993. Vol. 28 (3). hlm. 201–208. doi:10.1145/155360.155580.
- ↑ TIOBE Index. TIOBE.
- ↑ Bjarne Stroustrup. The C++ Programming Language. Addison-Wesley. 1995.
- ↑ C++ Applications. www.stroustrup.com.
- ↑ C++ Applications. www.stroustrup.com.
- ↑ artima - The Making of Python. www.artima.com.
- ↑ General Python FAQ — Python 3.10.4 documentation. docs.python.org.
- ↑ Applications for Python. Python.org.
- ↑ Programming Languages Popularity in 12,086 Research Papers – Quantifying Health.
- ↑ Fabian Pedregosa. Scikit-learn: Machine learning in Python. The Journal of Machine Learning Research. 2011. Vol. 12. hlm. 2825–2830.
Sumber dan atribusi
Konten artikel ini diadaptasi dari Wikipedia bahasa Indonesia, revisi 28473608 (2025-11-14T03:53:57Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.