GNU Octave: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
k bot Membuang: th:GNU Octave; kosmetik perubahan |
NikolasKHF (bicara | kontrib) kTidak ada ringkasan suntingan |
||
(21 revisi perantara oleh 14 pengguna tidak ditampilkan) | |||
Baris 1:
{{Short description|Bahasa pemrograman untuk analisis numerik}}
{{Infobox software
| name = GNU Octave
| logo = [[Berkas:
| screenshot =
| caption = GNU Octave
| developer = John W. Eaton
| released =
| programming language = [[C++]]
| platform = ''[[Lintas anjungan|Cross-platform]]''
| language = 19 bahasa
| genre = [[
| license = [[GNU General Public License]]
| website =
}}
'''GNU Octave'''
Karena Octave memiliki Lisensi Publik GNU, maka Octave dapat dimodifikasi, disalin, dan digunakan secara bebas.<ref name="about"/> Program ini berjalan di [[Microsoft Windows]] dan kebanyakan [[sistem operasi]] [[Unix]] dan [[mirip Unix]], termasuk [[Linux]], [[Android (sistem operasi)|Android]], dan [[macOS]].<ref>{{cite web|url=http://www.octave.org/wiki/index.php?title=FAQ#On_what_platforms_does_Octave_run.3F|title=FAQ: Getting Octave|access-date= {{date|2009-04-04}}|archive-date= {{date|2011-11-21}} | archive-url= https://web.archive.org/web/20111121043348/http://octave.org/wiki/index.php?title=FAQ#On_what_platforms_does_Octave_run.3F| url-status= dead}}</ref><ref>{{Cite web|url=https://octave.org/doc/v6.3.0/|title=Top (GNU Octave (version 6.3.0))|website=octave.org}}</ref><ref>{{Cite web|title=Octave for Android - Octave|url=https://wiki.octave.org/Octave_for_Android|access-date={{date|2021-08-23}}|website=wiki.octave.org}}</ref>
GNU Octave biasanya digunakan untuk komputasi ilmiah pribadi, akademis, dan industri. Misalnya, GNU Octave digunakan pada [[Komputasi paralel|paralel]] komputer besar di [[Pittsburgh Supercomputing Center]] untuk mencari kerentanan yang berhubungan dengan teknik penebakan [[nomor Jaminan Sosial]]<!--Social Security number, USA-->.<ref>{{cite web
|url=http://www.hpcwire.com/industry/government/Social-Security-Number-Vulnerability-Findings-Relied-on-Supercomputing-50292227.html
|title=Social Security Number Vulnerability Findings Relied on Supercomputing
|date={{date|8 July 2009}}
|archive-url=https://web.archive.org/web/20120229220547/http://www.hpcwire.com/hpcwire/2009-07-08/social_security_number_vulnerability_findings_relied_on_supercomputing.html
|archive-date={{date|29 February 2012}}
}}</ref> Akselerasi dengan [[OpenCL]] atau [[CUDA]] juga dapat dilakukan dengan penggunaan GPU.<ref>{{Cite web|url=https://developer.nvidia.com/blog/drop-in-acceleration-gnu-octave/|title=Drop-in Acceleration of GNU Octave|date={{date|June 5, 2014}}|website=NVIDIA Developer Blog}}</ref>
==Sejarah==
Proyek GNU Octave diawali sekitar tahun 1988.<ref name="Octave_about">{{cite web|title=About GNU Octave|url=https://www.gnu.org/software/octave/about.html|website=www.gnu.org|publisher=GNU|access-date={{date|1 May 2018}} }}</ref> Awalnya, proyek ini dimaksudkan sebagai pendamping mata kuliah desain reaktor kimia. Pengembangan penuh dimulai oleh John W. Eaton pada tahun 1992. [[Daur hidup rilis perangkat lunak#Alfa|Versi alfa]] pertama dirilis pada 4 Januari 1993 dan versi 1.0 dirilis pada tanggal 17 Februari 1994.
Nama program ini diambil dari [[Octave Levenspiel]], mantan profesor dari pengembang utama. Levenspiel dikenal oleh karena kemampuannya melakukan [[perhitungan belakang-surat]] dengan cepat.<ref name="about">{{cite web
| last = Eaton
| first = John W
| title = About Octave
| url = https://www.gnu.org/software/octave/about.html
| access-date = {{date|2009-06-28}} }}</ref>
=== Lini waktu pengembangan ===
{| class="wikitable"
|-
! Waktu !! Keterangan
|-
|style="text-align: right; white-space: nowrap;"| 1988/1989 || Diskusi pertama (buku dan perangkat lunak)
|-
|style="text-align: right; white-space: nowrap;"| Februari 1992 || Pengembangan dimulai
|-
|style="text-align: right; white-space: nowrap;"| Januari 1993 || Berita di web (version 0.60)
|-
|style="text-align: right; white-space: nowrap;"| Februari 1994 || Publikasi pertama (versi 1.0.0 ke 1.1.1)<ref>{{Cite web|url=https://www.gnu.org/software/octave/NEWS-1.html|title=GNU Octave Version 1|website=www.gnu.org}}</ref>
|-
|style="text-align: right; white-space: nowrap;"| Desember 1996 || Publikasi kedua (versi 2.0.x) dengan ''[[porting]]'' ke [[Windows]] ([[Cygwin]])<ref>{{Cite web|url=https://www.gnu.org/software/octave/NEWS-2.html|title=GNU Octave Version 2|website=www.gnu.org}}</ref>
|-
|style="text-align: right; white-space: nowrap;"| Desember 2007 || Publikasi versi 3.0 (''[[Tonggak pencapaian|Milestone]]'')<ref>{{Cite web|url=https://www.gnu.org/software/octave/NEWS-3.html|title=GNU Octave Version 3|website=www.gnu.org}}</ref>
|-
|style="text-align: right; white-space: nowrap;"| 29 Mei 2015 || Versi 4.0.0 ([[Antarmuka pengguna grafis|GUI]] stabil dan sintaks baru untuk [[Pemrograman berorientasi objek|OOP]])<ref name="auto">{{Cite web|url=https://www.gnu.org/software/octave/NEWS-4.0.html|title=GNU Octave Version 4.0|website=www.gnu.org}}</ref><ref>{{Cite web|url=https://www.gnu.org/software/octave/news/release/2015/05/29/octave-4.0.0-released.html|title=GNU Octave 4.0.0 Released|website=www.gnu.org|date={{date|29 May 2015}} }}</ref><ref>{{Cite web|url=https://www.gnu.org/software/octave/news/release/2016/03/23/octave-4.0.1-released.html|title=GNU Octave 4.0.1 Released|website=www.gnu.org|date={{date|23 March 2016}} }}</ref><ref>{{Cite web|url=https://www.gnu.org/software/octave/news/release/2016/07/02/octave-4.0.3-released.html|title=GNU Octave 4.0.3 Released|website=www.gnu.org|date={{date|2 July 2016}} }}</ref>
|-
|style="text-align: right; white-space: nowrap;"| 1 Maret 2019 || Publikasi Octave 5.1.0 (penggunaan minimum Qt 4.8, rekomendasi Qt 5), dukungan hiDpi<ref>{{Cite web|url=https://www.gnu.org/software/octave/NEWS-5.1.html|title=GNU Octave Version 5|website=www.gnu.org}}</ref>
|-
|style="text-align: right; white-space: nowrap;"| 26 November 2020 || Publikasi Octave 6.1.0 (rekomendasi penggunaan QT5, Qt 4.x ditinggalkan dan akan dihapus pada versi 7)<ref>{{Cite web|url=https://www.gnu.org/software/octave/news/release/2020/11/26/octave-6.1.0-released.html|title=GNU Octave 6.1.0 Released|website=www.gnu.org|date={{date|26 November 2020}} }}</ref>
|-
|style="text-align: right; white-space: nowrap;"| 6 April 2022 || Publikasi Octave 7.1.0 (rekomendasi penggunaan QT5), peningkatan ''[[Bagian depan dan bagian belakang (komputasi)#Bagian belakang|backend]]'' grafik dan kompatibilitas MATLAB<ref>{{Cite web|url=https://www.gnu.org/software/octave/news/release/2022/04/06/octave-7.1.0-released.html|title=GNU Octave 7.1.0 Released|website=www.gnu.org|date=6 April 2022 }}</ref>
|-
|style="text-align: right; white-space: nowrap;"| 7 Maret 2023 || Publikasi Octave 8.1.0, peningkatan ''back-end'' grafik dan kompatibilitas MATLAB.<ref>{{Cite web|url=https://octave.org/news/release/2023/03/07/octave-8.1.0-released.html|title=GNU Octave 8.1.0 Released|website=octave.org|date=7 Maret 2023 }}</ref>
|-
|style="text-align: right; white-space: nowrap;"| 14 Maret 2024 || Publikasi Octave 9.1.0, peningkatan umum, kompatibilitas MATLAB, dan grafik.<ref>{{Cite web |title=GNU Octave Version 9 |url=https://octave.org/NEWS-9.html |access-date={{date|2024-03-25}} |website=octave.org |language=en}}</ref>
|-
|style="text-align: right; white-space: nowrap;"| 7 Juni 2024 || Publikasi Octave 9.2.0, perbaikan [[Kutu (komputer)|kutu]] dan GUI.<ref>{{Cite web |title=Octave 9.2.0 released |url=https://octave.org/news/release/2024/06/07/octave-9.2.0-released.html |access-date=2024-11-05 |website=octave.org |date=7 Juni 2024 |language=en}}</ref>
|}
==Detail teknis==
GNU Octave ditulis dari [[C++]] dengan [[pustaka dasar C++]]. GNU Octave menggunakan [[Penerjemah (komputasi)]] untuk menjalankan bahasa skrip Octave. Perangkat lunak ini juga dapat dikembangkan dengan memuat [[#Paket|modul atau paket]] secara dinamis. GNU Octave dapat digunakan untuk membuat grafika atau plot yang berdasarkan pada [[OpenGL]] atau [[gnuplot]]. Perangkat lunak ini juga memiliki [[Antarmuka pengguna grafis|GUI]] selain [[Antarmuka baris perintah|CLI]] yang lebih tradisional; lihat bagian [[#GUI|Antarmuka pengguna grafis]] di bawah.
==={{Anchor|GUI}}Antarmuka pengguna grafis===
GNU Octave memiliki antarmuka pengguna grafis (GUI) dan sebuah [[Lingkungan pengembangan terpadu]] ({{lang-en|integrated development environment}}; IDE) yang ditulis dengan [[Qt]]. GUI ini telah tersedia sejak GNU Octave 3.8,<ref name="auto1">{{Cite web|url=https://www.gnu.org/software/octave/NEWS-3.8.html|title=GNU Octave Version 3.8|website=www.gnu.org}}</ref> dan menjadi antarmuka bawaan (di atas [[antarmuka baris perintah]]) di rilis GNU Octave versi 4.0.<ref name="auto"/>
GUI ini mendapatkan respons positif oleh kontributor EDN yang menulis "(GNU Octave) sekarang memiliki GUI yang dapat digunakan" saat meninjau GUI yang saat itu baru pada tahun 2014.<ref>{{cite web |last=Hageman |first=Steve |date={{date|7 February 2014}} |title=GNU Octave hits a high note |url=http://www.edn.com/electronics-blogs/the-practicing-instrumentation-engineer/4428091/GNU-Octave-hits-a-high-note |website=[[EDN (majalah)|EDN]]}}</ref>
Beberapa grafis bagian depan juga telah dikembangkan, seperti [[Toolbox (perangkat lunak)|ToolboX]] untuk pendidikan koding.
===Bahasa===
Octave adalah [[bahasa pemrograman]] terjemahan. Bahasa ini adalah bahasa [[pemrograman terstruktur]] (mirip dengan [[C (programming language)|C]]), mendukung banyak fungsi umum di [[pustaka dasar C]], dan beberapa pemanggilan sistem dan fungsi [[POSIX|UNIX]].<ref>{{cite web|url= http://www.network-theory.co.uk/docs/octave3/octave_269.html| title= GNU Octave - Controlling subprocesses| access-date= {{date|2009-01-28}}| date= {{date|14 November 2008}}| archive-url= https://web.archive.org/web/20090107005339/http://www.network-theory.co.uk/docs/octave3/octave_269.html| archive-date= {{date|7 January 2009}}| url-status= dead}}</ref> Namun, Octave tidak mendukung mentransfer argumen dengan referensi,<ref>{{cite web| url= http://www.delorie.com/gnu/docs/octave/octave_105.html| title= GNU Octave| access-date = {{date|2009-01-28}}}}</ref> meskipun argumen fungsi bersifat [[salin saat tulis]] <!--[[copy-on-write]]-->untuk menghindari duplikasi yang tidak diinginkan.
Program Octave berisi daftar pemanggilan fungsi atau [[Bahasa skrip|skrip]]. Sintaks yang digunakan berdasarkan [[Pemrograman larik|matriks]]<!--([[:en:Array programming]])--> dan memberikan beberapa fungsi untuk operasi matriks. Bahasa ini mendukung berbagai [[struktur data]] dan memperbolehkan [[pemrograman berorientasi objek]].<ref>{{cite web|url= https://www.gnu.org/software/octave/NEWS-3.2.html| title= Summary of important user-visible changes for version 3.2| access-date = {{date|2012-01-05}} }}</ref> Sintaks yang digunakan Octave sangat mirip dengan [[MATLAB]]. Maka dari itu, banyak fungsi yang ditulis dengan hati-hati dapat berjalan di Octave maupun MATLAB.<ref>{{cite web| url= http://www.octave.org/wiki/index.php?title=FAQ#Porting_programs_from_Matlab_to_Octave|title= FAQ: MATLAB compatibility| access-date= {{date|2009-04-04}} | archive-date= {{date|2011-11-21}} |archive-url= https://web.archive.org/web/20111121043348/http://octave.org/wiki/index.php?title=FAQ#Porting_programs_from_Matlab_to_Octave|url-status= dead}}</ref>
=== {{anchor|Paket}}Paket fungsi ===
GNU Octave memiliki banyak paket yang tersedia untuk menambahkan kemampuan dari Octave. Paket tersebut dapat ditemukan pada ''[https://gnu-octave.github.io/packages/ Github Octave Packages]''. Paket dapat dibuat dan dipelihara oleh siapa pun.
=={{anchor|MATLAB}} Kompatibilitas dengan MATLAB==
GNU Octave dikembangkan dengan mempertimbangkan kompatibilitas dengan MATLAB dan memiliki fitur yang mirip, termasuk:
* [[Matriks (matematika)|Matriks]] adalah [[tipe data]] utama.
* Memiliki dukungan [[bilangan kompleks]] bawaan.
* Fungsi matematika bawaan dan pustaka fungsi yang luas.
* Dapat dikembangkan dalam bentuk fungsi yang dibuat oleh pengguna.
Octave menganggap inkompatibilitas dengan MATLAB sebagai [[Kutu (komputer)|kutu]]. Maka dari itu, Octave dianggap sebagai klon perangkat lunak, yang tidak melanggar hak cipta perangkat lunak.
Skrip MATLAB yang ditemukan pada repository ''FileExchange'' milik [[MathWorks]] secara prinsip kompatibel dengan Octave. Namun, ketika skrip tersebut diunggah atau diberikan oleh pengguna di bawah lisensi yang kompatibel dengan [[lisensi BSD]] atau lisensi sumber terbuka, [[EULA|kebijakan penggunaan]] FileExchange melarang penggunaan skrip tersebut di luar [[Perangkat lunak milik perorangan|perankat lunak milik]] MathWorks, MATLAB.<ref>{{Cite web |title=FAQ - Octave |url=https://wiki.octave.org/FAQ |access-date={{date|2022-12-05}} |website=wiki.octave.org}}</ref><ref>{{Cite web |title=MATLAB Central Terms of Use |url=https://www.mathworks.com/matlabcentral/content/terms-of-use.html |access-date={{date|2022-12-05}} |website=www.mathworks.com |language=en}}</ref><ref>{{Cite web |title=File Exchange Licensing FAQ |url=https://www.mathworks.com/matlabcentral/content/fx/fx-transition-faq.html |access-date={{date|2022-12-05}} |website=www.mathworks.com |language=en}}</ref>
===Kompatibilitas sintaks===
Sintaks dari Octave sebagian besar kompatibel dengan sintaks MATLAB. Namun, terdapat beberapa perbedaan kecil yang dibuat secara sengaja, termasuk:<ref>{{cite web|url=https://wiki.octave.org/Differences_between_Octave_and_Matlab|title=Differences between Octave and MATLAB|access-date={{date|2024-12-08}}|website=Octave Wiki}}</ref>
# Fungsi dapat dibuat melalui antarmuka baris perintah di Octave;
# Baris komentar dapat dibuat dengan karakter <code>#</code> maupun <code>%</code>;
# [[Untaian]] dapat dibuat dengan karakter kutip dua (<code>"</code>) maupun kutip satu (<code>'</code>);
# Pengguna dapat melanjutkan baris kode dengan karakter garis miring terbalik (<code>\</code>) maupun karakter elipsis (<code>...</code>);
# Blok kode dapat ditutup dengan [[kata kunci]] yang lebih spesifik, seperti <code>endif</code>, <code>endfor</code>, <code>endwhile</code>, <code>endfunction</code>, dan lain sebagainya;
# Octave mendukung operator penambahan atau pengurangan seperti [[C (bahasa pemrograman)|C]], termasuk <code>++</code>, <code>--</code>, <code>+=</code>, <code>*=</code>, <code>/=</code>, dan lain sebagainya;
# Octave dapat mengindeks selain variabel, seperti <code>[1:10](3)</code>; dan
# Octave menggunakan operator <code>!</code> sebagai negasi, mirip dengan <code>~</code>.
===Kompatibilitas fungsi===
Banyak fungsi MATLAB yang telah tersedia di GNU Octave. Beberapa di antaranya dapat diakses melalui paket yang dapat diunduh dan dipasang dari ''[[#Paket|Octave Forge]]''. Beberapa fungsi lain yang belum tersedia dapat dilihat pada fungsi [http://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/help/__unimplemented__.m <code>__unimplemented.m__</code>].
Ketika fungsi yang belum diimplementasikan dipanggil, Octave akan menampilkan pesan galat seperti berikut:
<syntaxhighlight lang="octave">
octave:1> guide
warning: the 'guide' function is not yet implemented in Octave
Please read <http://www.octave.org/missing.html> to learn how you can contribute missing functionality.
error: 'guide' undefined near line 1 column 1
</syntaxhighlight>
== Aplikasi antarmuka grafis ==
Pengguna dapat membuat aplikasi dengan antarmuka grafis dengan kode Octave. Hal ini dapat dilakukan dengan menggunakan beberapa fungsi bawaan GNU Octave.<ref>{{cite web|url=https://docs.octave.org/v9.2.0/GUI-Development.html|title=GUI Development (version 9.2.0)|website=GNU Octave Documentation|access-date={{date|2024-12-02}} }}</ref> Di bawah ini beberapa contohnya:
Elemen antarmuka dasar, seperti tombol, ''slider'', label, ''check-box'', ''radio button'', dan lain sebagainya.
[[Berkas:GUI element in GNU Octave 9.2.0 in Windows 10.png|thumb|Elemen [[antarmuka pengguna grafis]] pada GNU Octave 9.2.0 yang dijalankan pada sistem operasi [[Windows 10]]]]
<syntaxhighlight lang="octave">
# membuat figure dan panel di dalamnya
f = figure;
# create a button (default style)
button1 = uicontrol (f, "string", "A Button", "position",[10 10 150 40]);
# membuat kontrol edit
e1 = uicontrol (f, "style", "edit", "string", "editable text", "position",[10 60 300 40]);
# membuat kotak cek
c1 = uicontrol (f, "style", "checkbox", "string", "a checkbox", "position",[10 120 150 40]);
# slider
s1 = uicontrol (f, "style", "slider", "position", [10 230, 300, 20]);
# teks
t1 = uicontrol (f, "style", "text", "string", "label / text", "position", [10 260, 300, 20]);
# tombol sakelar
tb1 = uicontrol (f, "style", "togglebutton", "string", "a togglebutton", "position", [10 290, 300, 20]);
# membuat grup tombol
gp = uibuttongroup (f, "Position", [ 0 0.75 1 1]);
# membuat tombol dalam grup
b1 = uicontrol (gp, "style", "radiobutton", "string", "Choice 1", "Position", [ 10 50 100 50 ]);
b2 = uicontrol (gp, "style", "radiobutton", "string", "Choice 2", "Position", [ 10 10 100 50 ]);
# membuat tombol di luar grup
b3 = uicontrol (f, "style", "radiobutton","string", "Not in the group","Position", [ 10 170 200 50 ]);
</syntaxhighlight>
''Textbox'' dengan kemampuan memasukkan data ke ''Workspace''.
<syntaxhighlight lang="octave">
prompt = {"Width", "Height", "Depth"};
defaults = {"1.10", "2.20", "3.30"};
rowscols = [1,10; 2,20; 3,30];
dims = inputdlg (prompt, "Enter Box Dimensions", rowscols, defaults);
</syntaxhighlight>
''Listbox'' dengan kotak pesan.
<syntaxhighlight lang="octave">
my_options = {"An item", "another", "yet another"};
[sel, ok] = listdlg ("ListString", my_options, "SelectionMode", "Multiple");
if (ok == 1)
msgbox ("You selected:");
for i = 1:numel (sel)
msgbox (sprintf ("\t%s", my_options{sel(i)}));
endfor
else
msgbox ("You cancelled.");
endif
</syntaxhighlight>
==Perangkat lunak yang mirip==
Selain MATLAB, perangkat lunak lain yang mirip dengan GNU Octave adalah [[Scilab]] dan [[FreeMat]].<ref name="Trappenberg2010">{{cite book|last=Trappenberg|first=Thomas|title=Fundamentals of Computational Neuroscience|year=2010|publisher=Oxford University Press|isbn=978-0-19-956841-3|page=361}}</ref><ref name="MuhammadZalizniak2011">{{cite book|last1=Muhammad|first1=A|last2=Zalizniak|first2=V|title=Practical Scientific Computing|url=https://archive.org/details/practicalscienti00muha|url-access=limited|year=2011|publisher=[[Woodhead Publishing]]|isbn=978-0-85709-226-7|page=[https://archive.org/details/practicalscienti00muha/page/n11 3]}}</ref><ref name="MegreyMoksness2008">{{cite book|last1=Megrey|first1=Bernard A.|last2=Moksness|first2=Erlend|title=Computers in Fisheries Research|url=https://archive.org/details/computersfisheri00megr|url-access=limited|year=2008|publisher=Springer Science & Business Media|isbn=978-1-4020-8636-6|page=[https://archive.org/details/computersfisheri00megr/page/n351 345]}}</ref><ref name="Kapuno2008">{{cite book|last=Kapuno|first=Raul Raymond|title=Programming for Chemical Engineers Using C, C++, and MATLAB|year=2008|publisher=Jones & Bartlett Publishers|isbn=978-1-934015-09-4|page=365}}</ref> Kedua perangkat lunak tersebut dirilis di bawah lisensi [[perangkat lunak bebas]]. Namun, GNU Octave memiliki kompatibilitas yang lebih tinggi dengan MATLAB jika dibandingkan dengan Scilab,<ref name="Trappenberg2010"/><ref name="Herman2013">{{cite book|last=Herman|first=Russell L.|title=A Course in Mathematical Methods for Physicists|year=2013|publisher=CRC Press|isbn=978-1-4665-8467-9|page=42}}</ref><ref name="WouwerSaucez2014">{{cite book|last1=Wouwer|first1=Alain Vande|last2=Saucez|first2=Philippe|last3=Vilas|first3=Carlos|title=Simulation of ODE/PDE Models with MATLAB, Octave and Scilab: Scientific and Engineering Applications|year=2014|publisher=Springer|isbn=978-3-319-06790-2|pages=114–115}}</ref> sementara FreeMat belum pernah diperbarui sejak Juni 2013.<ref>{{cite web |title=FreeMat |url=http://freemat.sourceforge.net/ |website=freemat.sourceforge.net |access-date=22 Februari 2020}}</ref> Selain itu, [[Julia (bahasa pemrograman)|bahasa pemrograman Julia]] dan kemampuan membuat grafiknya mirip dengan GNU Octave.
== Referensi ==
{{reflist}}
== Pranala luar ==
{{commonscat|GNU Octave}}
<!--{{Wikibooks|Octave Programming Tutorial}}-->
* {{Situs web resmi}}
* {{URL|https://gnu-octave.github.io/packages/|Paket untuk GNU Octave}}
[[Kategori:Proyek GNU]]
[[Kategori:Perangkat lunak numerik]]
|