Apa arti pemrograman Unix, tepatnya? [Tutup]


10

Saya pikir saya mengerti apa arti istilah pemrograman Unix , tetapi sekarang, setelah membaca tentang hal itu dalam konteks pemrograman kernel / C, saya merasa saya perlu mengklarifikasi arti dari istilah ini.

Tidak jelas bagi saya jika itu berarti:

  1. Pemrograman shell,
  2. Alat pemrograman Unix,
  3. cara / pola tertentu dari pemrograman Unix command-line tools (misalnya, untuk menyetujui cara pipa "Unix shell programming"), atau
  4. sesuatu yang lain.

2
Anda harus memberikan sedikit konteks. Di mana Anda membaca ungkapan ini? Di luar konteks, saya akan mengatakan itu berarti pemrograman untuk OS Unix.
lgeorget

6
Pertanyaan ini tampaknya di luar topik karena ini tentang bahasa Inggris dasar.
Gilles 'SO- stop being evil'

1
@Gilles Oh jadi pembatas sekarang: P
goldilocks

@ Igeorget, Taoup.
Pacerier

@goldilocks, Artinya?
Pacerier

Jawaban:


14

"Pemrograman Unix" mengacu pada pemrograman secara eksplisit untuk lingkungan unix. Ini akan mencakup pemrograman untuk shell yang sesuai dengan standar yang relevan (seperti POSIX ). Namun, itu juga akan mencakup pemrograman dalam bahasa apa pun sementara secara eksplisit menggunakan antarmuka sistem dan sumber daya yang memiliki standar yang sama, dengan anggapan bahwa ini khusus untuk dunia * nix.

Misalnya, pemrograman jaringan tanpa pustaka pihak ketiga di C atau C ++ tidak portabel, karena tidak ada standar yang mengatakan apa-apa tentang itu. Jaringan di C / C ++ diimplementasikan menggunakan antarmuka yang ditentukan oleh sistem operasi, dan ketika pada sistem * nix-ish ini lebih atau kurang universal, Anda tidak dapat mem-port kode yang tidak berubah ke (misalnya) Windows, dan sebaliknya. Oleh karena itu, melakukan hal-hal jaringan dalam C atau C ++ berarti menggunakan perpustakaan portabel, atau menargetkan platform, dan Unix adalah salah satu kemungkinan dalam kasus selanjutnya, oleh karena itu, itu "pemrograman unix" (dan pemrograman C atau C ++, dan pemrograman jaringan). 1

Namun, pemrograman jaringan dalam banyak bahasa tingkat tinggi seperti perl atau python atau java adalah portabel; bahasa-bahasa ini umumnya diimplementasikan dalam C, tetapi sementara detail implementasi berbeda dari platform ke platform, antarmuka tidak. Oleh karena itu Anda dapat menulis kode jaringan dalam perl yang harus dijalankan pada sistem apa pun di mana perl berjalan; pada sistem Unix, ini diterjemahkan oleh implementasi interpreter ke panggilan asli yang sesuai, dan pada sistem windows, ini akan diterjemahkan secara berbeda. Karena kode perl Anda yang sebenarnya tidak spesifik untuk apa pun kecuali perl, itu bukan pemrograman unix. Ini pemrograman jaringan, dan pemrograman perl, tetapi tidak pemrograman unix.


1. Karena hubungan historis yang intim antara C dan Unix, fakta bahwa C telah menjadi bahasa yang paling banyak digunakan untuk menulis sistem operasi secara umum, dan sifat dari apa "sistem operasi" itu, ada banyak hal dalam kategori " Pemrograman C khusus OS "- contoh sehari-hari lain selain jaringan adalah hal-hal yang berorientasi pada sistem file, seperti meng-statting file dan membaca direktori. Oleh karena itu, ada berbagai jenis buku "Unix Programming in C", karena pemrograman dasar dalam C pasti melibatkan banyak elemen spesifik OS. Ini tidak terjadi dengan lebih banyak bahasa portabel seperti perl atau java; dalam hal ini, subjek buku ini kemungkinan akan " Pemrograman sistem dalam Perl", atau lebih mungkin, sekadar "Pemrograman dengan Perl".


1
goldilocks prof menyerang lagi!
mikeserv

@goldilocks, Karena linux telah membunuh Unix, maksud Anda hampir tidak ada orang yang "Unix programming" sekarang?
Pacerier

1
Solaris dan BSD sedang digunakan secara luas (bahkan jika konsumen PC rata-rata tidak tahu apa itu), dan secara teknis OSX secara resmi dikenai sanksi sesuai UNIX (sepertinya namanya telah beralih kembali ke "macOS", jadi saya harus tidak setuju dengan premis Anda
goldilocks
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.