Kod sumber

**Kod sumber** atau **kod program** (biasanya hanya dipanggil **sumber** atau **kod**) merujuk kepada sebarang siri pernyataan yang ditulis dalam bahasa pengaturcaraan komputer yang difahami manusia. Dalam bahasa pengaturcaraan moden, kod sumber yang membentuk perisian biasanya terdapat dalam beberapa fail komputer, tetapi kod sumber yang sama boleh dicetak di dalam buku atau dirakamkan di dalam pita (biasanya tanpa fail sistem).

Istilah ini biasanya digunakan dalam konteks bahagian tertentu perisian komputer. "Kod sumber" perisian komputer ialah kumpulan fail yang boleh ditukar daripada bentuk yang boleh dibaca manusia kepada bentuk setara untuk pelaksanaan komputer. Kod sumber ditukarkan kepada kod objek oleh sama ada penghimpun atau pengkompil untuk CPU komputer tertentu, atau dilaksanakan daripada bentuk boleh difahami manusia dengan bantuan pentafsir.

## Tujuan

Oleh itu, kod sumber digunakan sama ada untuk menghasilkan kod objek, atau dijalankan oleh pentafsir. Pengubahsuaian tidak dilakukan kepada kod objek, tetapi pada kod sumber, dan ditukarkan sekali lagi

Tujuan utama lain bagi kod sumber adalah untuk gambaran perisian. Juga, kod sumber mempunyai pelbagai kegunaan. Kod sumber boleh digunakan sebagai perkakasan belajar; penulis perisian baru sering mendapati ia berguna untuk meneliti kod sumber sedia ada untuk mempelajari teknik memprogram dan metodologi. Ia juga digunakan sebagai cara berkomunikasi antara penulis perisian berpengalaman, disebabkan (secara idealnya) ia tepat dan tidak kabur. Perkongsian kod sumber antara penulis perisian sering disebut sebagai faktor yang membawa kepada kematangan kemahiran memprogram. Kod sumber boleh menjadi perantaraan meluahkan artistik; perhatikan, sebagai contoh, kod obfuskated atau PerlMonks.Org.

Kod sumber adalah komponent penting dalam aktiviti memindah perisian kepada pelantar komputer alternatif. Tanpa kod sumber bagi perisian tertentu, pemindahan secara amnya amat sukar untuk dilaksanakan dan juga mustahil. Penulis perisian sering meminjam kod sumber dari sebahagian perisian untuk digunakan dalam projek lain, konsep yang dikenali sebagai kitaran perisian "Software reusability".

## Organisasi

Kod sumber bagi bahagian khusus perisian boleh terkandung dalam satu fail atau banyak fail. Sumber kod perisian tidak semestinya ditulis dalam bahasa pengaturcara yang sama; sebagai contoh, adalah menjadi perkara biasa untuk sesuatu perisian ditulis kebanyakannya dalam bahasa pengaturcaraan C, dengan sebahagiannya ditulis dalam bahasa perhimpunan untuk tujuan menoptima. Sebahagian komponen perisian juga boleh ditulis dan dikompil berasingan, dalam bahasa pengaturcaraan rawak, dan kemudian digabung kepada perisian menggunakan teknik memaut perpustakaan library linking.

Perisian pertengahan rumit biasanya memerlukan pengkompilasi atau gabungan beberapa, kadangkala berdozen atau juga beratus, fail kod sumber. Kerumitan ini dikurangkan dengan meletakkan Makefile dengan kod sumber, yang menggambarkan hubungan antara kod sumber, dan mengandungi maklumat tentang bagaimana hubungan antara fail kod sumber, dan mengandungi maklumat bagaimana cara ia perlu dikompil. Sistem kawalan revisi merupakan perkakasan lain yang sering digunakan oleh pemaju untuk penyelenggaraan kod.

## Perlesenan

Perisian, dan kod sumber yang seiring dengannya, biasanya jatuh kedalam salah satu dari dua sudut pandangan "paradigms": perisian bebas dan perisian hak milik. Generally speaking, software is *free* jika kod sumber bebas didapati, dan *proprietary* jika kod sumber disimpan sebagai rahsia, atau milik persendirian dan dikawal. The provisions of the various undang-undang hakcipta sering digunakan untuk tujuan ini, walaupun rahsia perdagangan juga boleh digunakan. Untuk perbincangan terperinci lebih lanjut antara perbezaan sudut pandangan ini ( *paradigms* ), dan pembahagian antara mereka, lihat lesen perisian.

## Isu perundangan

As of 2003, court systems are in the process of deciding whether source code should be considered a Constitutionally protected form of free speech in the United States. Proponents of the free speech argument claim that because source code conveys information to programmers, is written in a language, and can be used to share humour and other artistic pursuits, it is a protected form of communication. The opposing view is that source code is functional, more than artistic speech, and is thus not protected by First Amendment Rights of the U.S. Constitution.

One of the first court cases regarding the nature of source code as free speech involved University of California mathematics professor Dan Bernstein, who had published on the internet the source code for an encryption program that he created. At the time, encryption algorithms were classified as munitions by the United States government; exporting encryption to other countries was considered an issue of national security, and had to be approved by the State Department. The Electronic Frontier Foundation sued the U.S. government on Bernstein's behalf; the court ruled that source code was free speech, protected by the First Amendment.

In 2000, in a related court case, the issue was again brought under some scrutiny when the Motion Picture Association of America (MPAA) sued the 'hacker' magazine 2600 and a number of other websites for distributing the source code to DeCSS, an algorithm capable of decrypting scrambled DVD discs. The algorithm was developed to allow people to play legally purchased DVDs on the Linux operating system, which had no DVD software at the time. The US District court decision favored the MPAA; 2600 magazine was prohibited from posting or linking to the source code on their website. This ruling was widely considered a victory for the supporters of the Digital Millennium Copyright Act, as it established a legal precedent for the notion that source code is not Constitutionally protected free speech. It was affirmed by the Appeals Court and as of late 2003 is being appealed to the US Supreme Court.

## Lihat juga

*Bahasa pengaturcaraan
*Kod legasi
*Kebebasan bersuara
*Wadah-wadah kod sumber
*Gaya pengaturcaraan

## Pautan luar

* Nupedia article 
* Wikisource:Source Code