**Bahasa pengaturcaraan sistem** (juga dikenali sebagai **bahasa atur cara penggunaan**) ialah bahasa pengaturcaraan yang:

* berjenis statik;
* membenarkan struktur data yang sangat kompleks;
* tersusun; dan
* bertujuan untuk dikendalikan sebahagian besarnya secara bebas tanpa bersandarkan sebarang atur cara lain.

Bahasa pengaturacaraan sistem prototaip termasuklah bahasa pengaturcaraan C dan Modula-2. Istilah ini berasal daripada pembahagian bahasa pengaturcaraan peringkat tinggi oleh John Ousterhout menjadi "bahasa pengaturcaraan sistem" dan "bahasa penskripan". Perbezaan ini yang kekadangnya digelar sebagai dikotomi Ousterhout mendasari reka bentuk bahasanya, Tcl.

Sebagai perbandingan, bahasa penskripan (atau "bahasa perekat") berjenis dinamik ataupun tidak berjenis, dengan atur cara (dikenali sebagai skrip) yang ditulis dalam bahasa ini ditafsirkan atau kekadang disusun bait. Skrip perlu berinteraksi, baik dengan atur cara yang lain (sering sebagai perekat) mahupun menerusi satu set fungsi yang disediakan oleh pentafsir, sebagaimana dengan fungsi sistem fail yang disediakan dalam cangkerang Unix dan fungsi GUI Tcl. Bahasa skrip prototaip termasuk AppleScript, Cangkerang C, fail kelompok DOS, dan Tcl.

Banyak pakar mempercayai bahawa dikotomi Ousterhout ialah dikotomi sembarangan lalu merujuk kepadanya sebagai "kepalsuan Ousterhout" atau "dikotomi palsu Ousterhout". Sedangkan:

* penjenisan statik lawan penjenisan dinamik;
* kekompleksan struktur data;
* tak bersandar lawan tersendiri;

boleh dikatakan ciri yang tidak berkait, kritik biasa terhadap dikotomi Ousterhout adalah tentang perbezaannya antara penyusunan dan pentafsiran kerana kedua-dua semantik dan sintaks sangat bergantung kepada persoalan adakah kod sumber:

* disusun menjadi bahasa mesin;
* ditafsirkan;
* ditokenkan; atau
* disusun bait;

sewaktu permulaan setiap jalanan, atau mana-mana campuran yang tersebut. Banyak bahasa boleh ditafsir atau juga disusun, bergantung kepada dialek dan perlaksanaannya (misalnya Lisp, Forth, Pascal UCSD, dan Java). Hal ini mengakibatkan penyusunan lawan pentafsiran merupakan sesuatu parameter yang ragu-ragu dalam taksonomi bahasa pengaturcaraan.

Istilah "bahasa pengaturcaraan sistem" juga digunakan (malahan secara lebih meluas) untuk bererti "sesuatu bahasa untuk pengaturcaraan sistem", iaitu sebuah bahasa yang direka untuk menulis perisian sistem yang berbeza dengan perisian penggunaan. Berbeza dengan bahasa atur cara penggunaan, bahasa pengaturcaraan sistem sebegini biasanya memberikan lebih banyak capaian yang langsung kepada perkakasan komputer. Salah satu bahasa pengaturcaraan sistem arketip daripada segi makna ini ialah BCPL. Perbezaan antara bahasa untuk pengaturcaraan sistem dan bahasa pengaturcaraan penggunaan menjadi semakin kabur dengan kepopularan bahasa pengaturcaraan C yang meluas.

"Bahasa Pengaturcaraan Sistem" atau "SPL" juga merupakan nama untuk sebuah bahasa yang tertentu yang digunakan dalam siri minikomputer HP 3000 bagi HP Multi-Programming Executive, sistem pengendaliannya, serta juga untuk perisian sistem yang lain.

Lihat juga
----------

* PreScheme
* BLISS

  

*Rencana ini pada asalnya berdasarkan bahan daripada Free On-line Dictionary of Computing yang dilesenkan di bawah GFDL.*