FAQ Umum Python
***************


Informasi Umum
==============


Apa itu Python?
---------------

Python adalah bahasa pemrograman yang diinterpretasi, interaktif, dan
berorientasi objek. Itu menggabungkan modul-modul, exception,
pengetikan yang dinamis, tipe data dinamis yang bersifat tingkat
tinggi, dan kelas-kelas. Python menggabungkan kekuatan yang luar biasa
dengan sintaks yang sangat jelas. Memiliki antar muka ke banyak
pemanggilan sistem dan pustaka, serta sejumlah sistem di windows,
serta dapat diperluas ke dalam bahasa C atau C++. Juga dapat digunakan
sebagai bahasa tambahan untuk aplikasi yang membutuhkan antar muka
yang dapat diprogram. Terakhir, Python bersifat portabel: berjalan di
banyak varian Unix, di Mac, dan pada Windows 2000 dan yang lebih baru

Untuk mengetahui lebih lanjut, mulai dengan Tutorial Python.  Panduan
Pemula Python tautan ke tutorial pengantar dan sumber lain untuk
belajar Python.


Apa itu Python Software Foundation?
-----------------------------------

The Python Software Foundation adalah organisasi nirlaba independen
yang memegang hak cipta pada Python versi 2.1 dan yang lebih baru.
Misi PSF adalah untuk memajukan teknologi *open source* yang terkait
dengan bahasa pemrograman Python dan untuk mempublikasikan penggunaan
Python. Halaman utama PSF ada di https://www.python.org/psf/.

Sumbangan untuk PSF bebas pajak di AS. Jika Anda menggunakan Python
dan merasa terbantu, silakan berkontribusi melalui halaman donasi PSF.


Apakah ada batasan hak cipta atas penggunaan Python?
----------------------------------------------------

Anda dapat melakukan apa pun yang Anda inginkan dengan sumbernya,
selama Anda meninggalkan hak cipta dan menampilkan hak cipta itu dalam
dokumentasi apa pun tentang Python yang Anda hasilkan. Jika Anda
menghormati aturan hak cipta, boleh saja menggunakan Python untuk
penggunaan komersial, menjual salinan Python dalam bentuk sumber atau
biner (dimodifikasi atau tidak dimodifikasi), atau untuk menjual
produk yang memasukkan Python dalam beberapa bentuk. Kami masih ingin
tahu tentang semua penggunaan komersial Python, tentu saja.

Lihat halaman lisensi PSF untuk tahu lebih lanjut penjelasan dan
tautan ke teks lisensi seluruhnya.

Logo Python terdaftar merek dagang, dan dalam kasus tertentu
diperlukan izin untuk menggunakannya. Lihat Kebijakan Penggunaan Merek
Dagang untuk info lebih lanjut.


Pada mulanya kenapa Python dibuat?
----------------------------------

Berikut adalah ringkasan *singkat* dari sejak awal dimulai, ditulis
oleh Guido van Rossum:

   Saya memiliki pengalaman luas dalam mengimplementasikan bahasa yang
   ditafsirkan *interpreted* dalam kelompok ABC di CWI, dan dari
   bekerja dengan kelompok ini saya telah belajar banyak tentang
   desain bahasa. Ini adalah asal dari banyak fitur Python, termasuk
   penggunaan indentasi untuk pengelompokan pernyataan dan penyertaan
   tipe data tingkat-sangat-tinggi (walaupun detailnya semua berbeda
   dalam Python).

   Saya memiliki sejumlah keluhan tentang bahasa ABC, tetapi juga
   menyukai banyak fitur-fiturnya. Tidak mungkin untuk memperluas
   bahasa ABC (atau implementasinya) untuk memperbaiki keluhan saya --
   pada kenyataannya kurangnya ekstensibilitas adalah salah satu
   masalah terbesarnya. Saya punya pengalaman menggunakan Modula-2+
   dan berbicara dengan desainer Modula-3 dan membaca laporan
   Modula-3. Modula-3 adalah asal dari sintaks dan semantik yang
   digunakan untuk pengecualian, dan beberapa fitur Python lainnya.

   Saya bekerja di grup sistem operasi terdistribusi Amoeba di CWI.
   Kami membutuhkan cara yang lebih baik untuk melakukan administrasi
   sistem daripada dengan menulis baik program C atau skrip Bourne
   *shell*, karena Amuba memiliki antarmuka sistem panggilan sendiri
   yang tidak mudah diakses dari Bourne *shell*. Pengalaman saya
   dengan penanganan kesalahan di Amuba membuat saya sangat sadar akan
   pentingnya pengecualian sebagai fitur bahasa pemrograman.

   Terpikir oleh saya bahwa bahasa *scripting* dengan sintaksis
   seperti ABC tetapi dengan akses ke panggilan sistem Amuba akan
   memenuhi kebutuhan. Saya menyadari bahwa bodoh untuk menulis bahasa
   khusus Amuba, jadi saya memutuskan bahwa saya membutuhkan bahasa
   yang pada umumnya dapat diperluas.

   Selama liburan Natal 1989, saya punya banyak waktu, jadi saya
   memutuskan untuk mencobanya. Selama tahun berikutnya, sementara
   sebagian besar masih mengerjakannya di waktu saya sendiri, Python
   digunakan dalam proyek Amoeba dengan keberhasilan yang semakin
   meningkat, dan umpan balik dari kolega membuat saya menambahkan
   banyak perbaikan awal.

   Pada Februari 1991, setelah setahun pengembangan, saya memutuskan
   untuk mengirim ke USENET.  Sisanya ada di berkas``Misc/HISTORY``.


Apa gunanya Python?
-------------------

Python adalah bahasa pemrograman umum tingkat atas yang dapat
diterapkan untuk berbagai jenis permasalahan.

The language comes with a large standard library that covers areas
such as string processing (regular expressions, Unicode, calculating
differences between files), internet protocols (HTTP, FTP, SMTP, XML-
RPC, POP, IMAP, CGI programming), software engineering (unit testing,
logging, profiling, parsing Python code), and operating system
interfaces (system calls, filesystems, TCP/IP sockets).  Look at the
table of contents for Pustaka Standar Python to get an idea of what's
available.  A wide variety of third-party extensions are also
available.  Consult the Python Package Index to find packages of
interest to you.


Bagaimana cara kerja skema penomoran versi Python?
--------------------------------------------------

Python versions are numbered "A.B.C" or "A.B":

* *A* is the major version number -- it is only incremented for really
  major changes in the language.

* *B* is the minor version number -- it is incremented for less earth-
  shattering changes.

* *C* is the micro version number -- it is incremented for each bugfix
  release.

See **PEP 6** for more information about bugfix releases.

Tidak semua rilis adalah rilis perbaikan bug. Menjelang rilis besar
baru, serangkaian rilis pengembangan dibuat, dilambangkan sebagai
alpha, beta, atau kandidat rilis. Alpha adalah rilis awal di mana
antarmuka belum difinalisasi; itu tidak terduga untuk melihat
perubahan antarmuka antara dua rilis alpha. Beta lebih stabil, menjaga
antarmuka yang ada tetapi mungkin menambahkan modul baru, dan rilis
kandidat yang dibekukan, tidak membuat perubahan kecuali jika
diperlukan untuk memperbaiki bug kritis.

Alpha, beta and release candidate versions have an additional suffix:

* The suffix for an alpha version is "aN" for some small number *N*.

* The suffix for a beta version is "bN" for some small number *N*.

* The suffix for a release candidate version is "rcN" for some small
  number *N*.

In other words, all versions labeled *2.0aN* precede the versions
labeled *2.0bN*, which precede versions labeled *2.0rcN*, and *those*
precede 2.0.

Anda juga dapat menemukan nomor versi dengan akhiran "+", mis. "2.2+".
Ini adalah versi yang belum dirilis, dibangun langsung dari repositori
pengembangan CPython. Dalam praktiknya, setelah rilis minor final
dibuat, versi tersebut bertambah menjadi versi minor berikutnya, yang
menjadi versi "a0", mis. "2.4a0".

Lihat juga dokumentasi untuk "sys.version", "sys.hexversion", dan
"sys.version_info".


Bagaimana saya mendapatkan salinan kode sumber Python?
------------------------------------------------------

Distribusi kode sumber Python terbaru selalu bisa didapatkan dari
python.org, di https://www.python.org/downloads/.  Kode sumber
pengembangan terbaru bisa didapatkan di
https://github.com/python/cpython/.

Distribusi sumber adalah file tar gzip yang berisi sumber C lengkap,
dokumentasi berformat Sphinx, modul pustaka Python, program contoh,
dan beberapa perangkat lunak berguna yang dapat didistribusikan secara
bebas. Sumber akan mengkompilasi dan langsung dapat digunakan pada
sebagian besar platform UNIX.

Lihat Bagian Memulai dari Panduan Pengembang Python untuk informasi
lebih lanjut tentang mendapatkan kode sumber dan melakukan kompilasi.


Bagaimana saya mendapatkan dokumentasi tentang Python?
------------------------------------------------------

Dokumentasi standar untuk Python versi stabil saat ini tersedia di
https://docs.python.org/3/.  PDF, teks biasa, dan versi HTML yang
dapat diunduh juga tersedia di
https://docs.python.org/3/download.html.

The documentation is written in reStructuredText and processed by the
Sphinx documentation tool.  The reStructuredText source for the
documentation is part of the Python source distribution.


Saya belum pernah memrogram sebelumnya. Apakah ada tutorial tentang Python?
---------------------------------------------------------------------------

Ada sejumlah tutorial dan buku yang tersedia.  Dokumentasi standar
menyertakan Tutorial Python.

Lihat Panduan Memulai untuk menemukan informasi tentang menjadi
pemrogram Python pemula, termasuk daftar tutorial.


Apakah ada newsgroup atau milis yang ditujukan untuk Python?
------------------------------------------------------------

Ada newsgroup, *comp.lang.python*, dan milis, python-list. Newsgroup
dan milis saling berhubungan satu sama lain -- jika Anda dapat membaca
berita, tidak perlu berlangganan ke milis. *comp.lang.python* memiliki
lalu lintas tinggi, menerima ratusan posting setiap hari, dan pembaca
Usenet seringkali lebih mampu mengatasi volume ini.

Pengumuman tentang rilis perangkat lunak dan acara baru dapat
ditemukan di comp.lang.python.announce, daftar yang moderasi dengan
lalu lintas rendah dimana menerima sekitar lima posting per hari. Ini
tersedia sebagai the python-announce mailing list.

Info lebih lanjut tentang milis dan newsgroup lainnya dapat ditemukan
di  https://www.python.org/community/lists/.


Bagaimana saya mendapatkan versi uji beta dari Python?
------------------------------------------------------

Rilis alfa dan beta tersedia dari https://www.python.org/downloads/.
Semua rilis diumumkan melalui newsgroup comp.lang.python dan
comp.lang.python.announce dan di halaman utama Python di
https://www.python.org/; tersedia juga umpan RSS dari berita.

Anda juga dapat mengakses versi pengembangan dari Python melalui Git.
Lihat Panduan Pengembang Python untuk lebih jelasnya.


Bagaimana saya mengirimkan laporan bug dan patch untuk Python?
--------------------------------------------------------------

Untuk melaporkan bug atau mengirimkan patch, silakan gunakan instalasi
Roundup di https://bugs.python.org/.

Anda harus memiliki akun Roundup untuk melaporkan bug; ini
memungkinkan kami untuk menghubungi Anda jika kami memiliki pertanyaan
tindak lanjut. Ini juga akan memungkinkan Roundup untuk mengirimi Anda
pembaruan saat kami bertindak atas bug Anda. Jika sebelumnya Anda
menggunakan SourceForge untuk melaporkan bug ke Python, Anda dapat
memperoleh kata sandi Roundup Anda melalui password reset procedure
dari Roundup.

Untuk informasi lebih lanjut mengenai bagaimana Python dikembangkan,
lihat Panduan Pengembang Python.


Apakah ada publikasi artikel tentang Python yang bisa saya gunakan sebagai referensi?
-------------------------------------------------------------------------------------

Mungkin sebaiknya mengutip buku favorit Anda tentang Python.

The very first article about Python was written in 1991 and is now
quite outdated.

   Guido van Rossum dan Jelke de Boer, "Interactively Testing Remote
   Servers Using the Python Programming Language", CWI Quarterly,
   Volume 4, Issue 4 (December 1991), Amsterdam, pp 283--303.


Apakah ada buku-buku tentang Python?
------------------------------------

Ya, ada banyak, dan banyak juga yang sedang diterbitkan. Untuk
daftarnya lihat wiki python.org di
https://wiki.python.org/moin/PythonBooks .

Anda juga dapat mencari "Python" di toko buku online dan menyaring
referensi Monty Python; atau mungkin cari "Python" dan "bahasa".


Dimana di dunia lokasi www.python.org?
--------------------------------------

The Python project's infrastructure is located all over the world and
is managed by the Python Infrastructure Team. Details here.


Kenapa disebut Python?
----------------------

Ketika mulai mengimplementasikan Python, Guido van Rossum juga membaca
skrip yang diterbitkan dari >>`"Sirkus Terbang Monty Python
"<https://en.wikipedia.org/wiki/Monty_Python>`__<<, sebuah serial
komedi BBC dari tahun 1970-an. Van Rossum berpikir dia membutuhkan
nama yang pendek, unik, dan sedikit misterius, jadi dia memutuskan
untuk memanggil bahasa Python.


Apakah saya harus menyukai "Monty Python's Flying Circus"?
----------------------------------------------------------

Tidak, tapi itu membantu. :)


Python di dunia nyata
=====================


Seberapa stabil Python?
-----------------------

Sangat stabil. Rilis baru dan rilisan baru yang stabil telah keluar
sekitar setiap 6 sampai 18 bulan sejak 1991, dan ini sepertinya akan
terus berlanjut. Mulai versi 3.9, Python akan memiliki rilis baru
setiap 12 bulan (**PEP 602**).

Pengembang mengeluarkan rilis "bugfix" dari versi yang lebih lama,
sehingga stabilitas rilis yang ada secara bertahap membaik. Rilis
perbaikan bug, ditunjukkan oleh komponen ketiga dari nomor versi (mis.
3.5.3, 3.6.2), dikelola untuk stabilitas; hanya perbaikan untuk
masalah yang diketahui yang termasuk dalam rilis perbaikan bug, dan
dijamin antarmuka akan tetap sama di sepanjang serangkaian rilis
perbaikan bug.

Rilis stabil terbaru selalu dapat ditemukan di halaman unduh Python.
Ada dua versi Python yang siap produksi: 2.x dan 3.x. Versi yang
disarankan adalah 3.x, yang didukung oleh pustaka yang paling banyak
digunakan. Meskipun 2.x masih banyak digunakan, itu tidak dirawat
lagi.


Berapa banyak orang menggunakan Python?
---------------------------------------

Mungkin ada jutaan pengguna, meskipun sulit untuk mendapatkan jumlah
pastinya.

Python tersedia untuk diunduh gratis, jadi tidak ada angka penjualan,
dan itu tersedia dari banyak situs yang berbeda dan dikemas dengan
banyak distribusi Linux, jadi statistik unduhan juga tidak
menceritakan keseluruhan cerita.

newsgroup comp.lang.python sangat aktif, tetapi tidak semua pengguna
Python mengirim ke grup atau bahkan membacanya.


Apakah ada proyek-proyek penting yang dibuat dengan Python?
-----------------------------------------------------------

Lihat https://www.python.org/about/success untuk daftar proyek yang
menggunakan Python. Konsultasi proses untuk konferensi Python masa
lalu akan mengungkapkan kontribusi dari banyak perusahaan dan
organisasi yang berbeda.

High-profile Python projects include the Mailman mailing list manager
and the Zope application server.  Several Linux distributions, most
notably Red Hat, have written part or all of their installer and
system administration software in Python.  Companies that use Python
internally include Google, Yahoo, and Lucasfilm Ltd.


Apa pengembangan baru yang diharapkan dari Python di masa depan?
----------------------------------------------------------------

Lihat https://www.python.org/dev/peps/ untuk Python Enchancement
Proposal (PEPs). PEP adalah dokumen desain yang menggambarkan fitur
baru yang disarankan untuk Python, memberikan spesifikasi teknis yang
ringkas dan alasannya. Cari PEP berjudul "Jadwal Rilis Python X.Y", di
mana X.Y adalah versi yang belum dirilis secara publik.

Pengembangan baru didiskusikan di milis python-dev.


Apakah beralasan untuk mengusulkan perubahan yang tidak kompatibel terhadap Python?
-----------------------------------------------------------------------------------

Secara umum, tidak. Sudah ada jutaan baris kode Python di seluruh
dunia, sehingga setiap perubahan dalam bahasa yang membatalkan lebih
dari sebagian kecil dari program yang ada harus dihapuskan. Bahkan
jika Anda dapat menyediakan program konversi, masih ada masalah
memperbarui semua dokumentasi; banyak buku telah ditulis tentang
Python, dan kami tidak ingin membatalkan semuanya dengan satu goresan.

Diperlukan jalur peningkatan bertahap jika fitur harus diubah. **PEP
5** menjelaskan prosedur yang diikuti untuk memperkenalkan perubahan
yang tidak kompatibel ke belakang sambil meminimalkan gangguan bagi
pengguna.


Apakah Python bahasa yang baik untuk pemrogram pemula?
------------------------------------------------------

Ya.

Masih umum untuk memulai siswa belajar dengan bahasa prosedural dan
tipe statis seperti Pascal, C, atau subset dari C++ atau Java. Siswa
mungkin lebih baik dididik dengan mempelajari Python sebagai bahasa
pertama mereka. Python memiliki sintaksis yang sangat sederhana dan
konsisten serta pustaka standar yang besar dan, yang paling penting,
menggunakan Python dalam kursus pemrograman awal memungkinkan siswa
berkonsentrasi pada keterampilan penting pemrograman seperti
dekomposisi masalah dan desain tipe data. Dengan Python, siswa dapat
dengan cepat diperkenalkan dengan konsep-konsep dasar seperti loop dan
prosedur. Mereka bahkan dapat bekerja dengan objek yang ditentukan
pengguna dalam kursus pertama mereka.

Untuk siswa yang belum pernah memprogram sebelumnya, menggunakan
bahasa yang memiliki tipe statis tampaknya tidak wajar atau tidak
biasa. Ini menyajikan kompleksitas tambahan bahwa siswa harus
menguasai dan memperlambat laju kursus. Para siswa berusaha belajar
berpikir seperti komputer, menguraikan masalah, mendesain antarmuka
yang konsisten, dan merangkum data. Sementara belajar untuk
menggunakan bahasa yang memiliki tipe statis itu penting dalam jangka
panjang, itu tidak selalu merupakan topik terbaik untuk dibahas dalam
kursus pemrograman pertama siswa.

Banyak aspek lain dari Python menjadikannya bahasa pertama yang baik.
Seperti Java, Python memiliki pustaka standar yang besar sehingga
siswa dapat ditugaskan proyek pemrograman sangat awal dalam kursus
yang *do* sesuatu. Tugas tidak terbatas pada kalkulator empat fungsi
standar dan periksa program keseimbangan. Dengan menggunakan
perpustakaan standar, siswa dapat memperoleh kepuasan bekerja pada
aplikasi dunia nyata saat mereka mempelajari dasar-dasar pemrograman.
Menggunakan perpustakaan standar juga mengajarkan siswa tentang
penggunaan kembali *reuse* kode. Modul pihak ketiga seperti PyGame
juga membantu dalam memperluas jangkauan siswa.

*interpreter* interaktif Python memungkinkan siswa untuk menguji fitur
bahasa saat mereka sedang melakukan pemrograman. Mereka dapat menjaga
jendela dengan *interpreter* berjalan saat mereka memasukkan sumber
program mereka di jendela lain. Jika mereka tidak dapat mengingat
metode untuk *list*, mereka dapat melakukan sesuatu seperti ini:

   >>> L = []
   >>> dir(L) 
   ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
   '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
   '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
   '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
   '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
   '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
   '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
   'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
   'reverse', 'sort']
   >>> [d for d in dir(L) if '__' not in d]
   ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

   >>> help(L.append)
   Help on built-in function append:

   append(...)
       L.append(object) -> None -- append object to end

   >>> L.append(1)
   >>> L
   [1]

Dengan interpreter, dokumentasi tidak pernah jauh dari pelajar saat
mereka melakukan pemrograman.

There are also good IDEs for Python.  IDLE is a cross-platform IDE for
Python that is written in Python using Tkinter. Emacs users will be
happy to know that there is a very good Python mode for Emacs.  All of
these programming environments provide syntax highlighting, auto-
indenting, and access to the interactive interpreter while coding.
Consult the Python wiki for a full list of Python editing
environments.

Jika ingin mendiskusikan penggunaan Python di bidang pendidikan, Anda
mungkin tertarik untuk bergabung di milis edu-sig.
