Pemrograman kompetitif: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
Edit links on picture description |
k Perbaikan ejaan, kata, dan tautan |
||
Baris 1:
[[Berkas:ЯндексАлгоритм.jpg|jmpl| [[Petr Mitrichev]] (kiri) dan [[Gennady Korotkevich]] (kanan), dua programmer kompetitif terkemuka dalam sebuah kontes.]]
'''Pemrograman kompetitif''' adalah [[olahraga pikiran]] yang diadakan menggunakan [[internet]] atau [[Jaringan area lokal|jaringan lokal]], di mana para
Sebuah kompetisi pemrograman biasanya melibatkan tuan rumah yang memberikan sejumlah [[masalah
== Sejarah ==
Baris 13:
== Gambaran umum ==
Tujuan dari pemrograman kompetitif adalah menulis [[kode sumber]] dari program komputer yang dapat menyelesaikan masalah-masalah yang diberikan. Sebagian besar masalah yang diberikan pada kompetisi pemrograman bertemakan matematika dan logika. Masalah-masalah tersebut termasuk salah satu dari kategori berikut: [[Kombinatorika|kombinatorik]], [[teori bilangan]], [[teori graf]], [[teori permainan algoritme]], [[geometri komputasi]], [[String|analisis ''string'']]'','' dan [[struktur data]]. Masalah-masalah terkait ''[[constraint programming]]'' dan [[kecerdasan buatan]] juga populer di beberapa kompetisi.
Terlepas dari kategori masalah di atas, proses menyelesaikan masalah dapat dibagi menjadi 2 langkah utama: membangun [[
Pada sebagian besar kontes, penilaian dilakukan otomatis oleh komputer, biasanya dikenal sebagai ''judge.'' Setiap solusi yang dikirimkan oleh kontestan akan diuji oleh ''judge'' melewati serangkaian kasus uji (biasanya rahasia). Secara normal, soal-soal dari kontes memiliki sistem penilaian ''all-or-none'', yang berarti kontestan akan mendapat skor jika dan hanya jika solusi yang mereka berikan berhasil melewati seluruh kasus uji yang diberikan oleh ''judge'', dan tidak akan mendapat apa-apa jika ada paling tidak satu kasus uji yang gagal dilewati. Namun, ada beberapa soal yang memiliki sistem penilaian parsial, yang berarti kontestan akan mendapat skor tergantung dari jumlah kasus uji yang berhasil dilewati, kualitas dari hasil, atau kriteria lainnya. Pada beberapa kontes, kontestan hanya perlu mengirimkan output dari input yang diberikan, lalu ''judge'' cukup menganalisa output yang dikirimkan.
Baris 36:
* [[Google Code Jam]] - kompetisi yang diadakan dari tahun 2003, disediakan dan disponsori oleh [[Google]]
* [[IEEEXtreme Programming Competition]] <ref name="oi_vol8">{{Cite journal|last=Combéfis|first=Sébastien|last2=Wautelet|first2=Jérémy|year=2014|title=Programming Trainings and Informatics Teaching Through Online Contests|url=https://ioinformatics.org/journal/v8_2014_21_34.pdf|journal=Olympiads in Informatics|volume=8|pages=21–34}}</ref> - kompetisi tahunan untuk Anggota Mahasiswa IEEE yang diadakan sejak tahun 2006 oleh [[Institute of Electrical and Electronics Engineers|IEEE]] .
* [[Topcoder Open]] (TCO) - Kompetisi
Untuk sebagian besar kompetisi-kompetisi di atas, karena jumlah kontestan yang mengikutinya cukup banyak, maka biasanya kompetisi-kompetisi tersebut dibagi menjadi beberapa babak. Babak tersebut biasa diadakan secara online terkecuali babak terakhir, yang diadakan di tempat. Sebuah pengecualian khusus untuk ini adalah IEEEXtreme yang merupakan kompetisi pemrograman virtual tahunan yang berdurasi selama 24 jam. Para kontestan terbaik IOI dan ICPC mendapatkan medali emas, perak, dan perunggu, sedangkan di kontes-kontes lainnya para pemenang diberi hadiah uang tunai. Selain itu, mendapatkan peringkat atas pada papan skor dalam kompetisi-kompetisi semacam ini juga dapat menarik minat para perekrut dari perusahaan perangkat lunak dan Internet.
Baris 172:
== Manfaat dan kritik ==
Partisipasi dalam kontes pemrograman dapat meningkatkan antusiasme siswa terhadap bidang studi [[ilmu komputer]]. Kemampuan yang didapatkan dari kontes pemrograman seperti ICPC juga meningkatkan prospek karir kedepannya, karena kemampuan tersebut dapat berguna untuk mengerjakan soal-soal interview kerja, yang seringkali kandidat diminta untuk menyelesaikan masalah pemrograman kompleks dan
Namun ada juga kritik terhadap pemrograman kompetitif yang secara spesifik disampaikan oleh pengembang perangkat lunak profesional.<ref name="rg15">{{cite web|last=Smith|first=Duncan|date=December 2, 2015|title=The Competitive Programming Debate|url=https://www.redgreencode.com/the-competitive-programming-debate/}}</ref> Salah satu poin penting yang disampaikan adalah banyak kompetisi pemrograman serba cepat yang mengajarkan kompetitornya kebiasaan pemrograman dan gaya kode yang buruk. Contohnya seperti penggunaan [[makro]] yang tidak perlu, kurangnya abstraksi [[pemrograman berorientasi objek]], kode komentar yang menjelaskan isi dari kode tersebut, penamaan variable yang pendek, dan lain-lain.<ref>{{cite web|last=Halim|first=Steven|title=CS3233 - Competitive Programming|url=https://www.comp.nus.edu.sg/~stevenha/cs3233.html|website=NUS School of Computing}}</ref><ref name="rg15"/> Selain itu, dengan hanya menawarkan permasalahan algoritmik yang kecil dengan solusi yang relatif singkat, kompetisi pemrograman seperti ICPC dan IOI tidak serta merta mengajarkan keterampilan dan praktik rekayasa perangkat lunak yang baik, sedangkan proyek perangkat lunak pada dunia kerja biasanya memiliki ribuan [[baris kode]] dan dikembangkan oleh tim besar dalam jangka waktu yang lama.<ref name="rg15"/> [[Peter Norvig]] menyatakan bahwa berdasarkan data yang tersedia, menjadi pemenang dari kontes pemrograman berkorelasi negatif dengan kinerja ''programmer'' pada pekerjaannya di Google. Meski demikian, pemenang kontes memiliki peluang lebih tinggi untuk mendapatkan pekerjaan.<ref>{{cite web|date=April 5, 2015|title=Winning at programming competitions is a negative factor for being good on the job|url=https://www.youtube.com/watch?v=DdmyUZCl75s}}</ref>
|