Jawaban lain terfokus pada apa yang client-side dan pemrograman server-side: bahasa apa sebagian besar digunakan, tugas apa yang harus dicapai, dll
Ini benar sekali, tetapi saya kehilangan sedikit fokus pada apa perbedaan antara kedua jenis pemrograman, dalam konteks pemrograman web. Biarkan saya mencoba mengatasinya.
Keamanan dan izin
Dalam pemrograman sisi klien, Anda tidak memiliki akses ke sistem lengkap, karena masalah keamanan. Pengguna tidak perlu memercayai setiap bagian dari kode yang diunduh dari web dan dieksekusi di mesinnya, dan ini adalah tujuan desain utama dari lingkungan sisi klien (browser dan mesin JavaScript): untuk menyediakan lingkungan yang terisolasi di mana kode klien dapat dijalankan tetapi tidak dapat mengakses apa pun di luar lingkup yang diizinkan.
Dalam pemrograman sisi server, adalah praktik yang baik untuk juga membatasi akses setiap aplikasi ke sistem yang mendasarinya, tetapi ini jauh lebih sedikit diberlakukan pada Anda, karena pada akhirnya, Anda atau perusahaan Anda mengendalikan sistem itu. Desain 'kandang terisolasi' ini tidak terintegrasi ke dalam alat dan bahasa pemrograman sisi server, tetapi diselesaikan melalui pengaturan instalasi (menggunakan pengguna khusus dengan izin terbatas, memilih port yang memerlukan atau tidak memerlukan izin root, dll).
Penyebaran dan platform
Dalam pemrograman sisi server, penyebaran harus terjadi dari luar kode Anda, menggunakan beberapa jenis alat (bahkan jika itu make install
atau a git clone
), dan penyebaran ini biasanya manual - atau setidaknya, diharapkan terjadi dalam semi-diawasi cara. Sistem (artinya OS) di mana Anda menyebarkan biasanya seragam di sejumlah mesin, tetapi dapat sangat disesuaikan dengan kebutuhan Anda.
Dalam pemrograman sisi klien, penyebaran terjadi dari kode sisi server Anda, yang melayani klien secara otomatis dan tanpa pengawasan. Sistem yang mendasarinya (terutama browser) bisa sangat berbeda di banyak mesin. Agar penyebaran bisa dilakukan, standar harus dijaga, dan ada kecenderungan yang lebih kuat untuk satu bahasa dan lingkungan.
Inilah sebabnya mengapa menyalin kode sisi server dari satu mesin ke komputer lain dapat memakan waktu berminggu-minggu, sementara kode sisi klien biasanya sepele untuk dieksekusi di mesin yang berbeda.
Efek negara dan sekunder
(Penafian: sejauh ini ini adalah titik paling subyektif dari semua. Mungkin ada banyak aspek yang salah dalam argumentasi saya. Ini hanya hipotesis yang menarik, dalam pandangan saya.)
Dalam pemrograman sisi server, keadaan adalah masalah yang jauh lebih besar, artinya bagaimana mengambil dan memperbarui data atas permintaan pengguna dengan kemungkinan konflik karena konkurensi. Bahkan jika sebagian besar kompleksitas ini diturunkan ke server database, itu adalah tanggung jawab kode sisi-server untuk memungkinkan database menjaga jaminannya pada integritas data dengan menggunakan antarmuka dengan benar (mis. Tidak menggunakan cache untuk pembaruan yang tidak pernah dilihat oleh DB), sementara itu juga merupakan tujuan dari kode sisi server untuk tidak membebani database dengan pekerjaan dan membuat pengguna menunggu tanggapan.
Dalam pemrograman sisi klien, menyajikan hasil kepada pengguna adalah masalah yang jauh lebih besar, dan ini menyiratkan efek sekunder (sebagian besar mencetak ke layar). Ini bukan untuk mengatakan bahwa tidak ada keadaan yang terlibat (misalnya cookie), hanya bahwa tujuan utama dari kode ini adalah untuk benar-benar berinteraksi dengan pengguna, dan ini tidak dapat terjadi tanpa efek sekunder.
Inilah sebabnya mengapa pemrograman sisi klien biasanya memerlukan (pada titik tertentu) melihat layar dengan demo, untuk memeriksa bahwa semua warna dan tata letak sudah benar, sementara pemrograman sisi server dapat terjadi hampir secara eksklusif di lingkungan berorientasi teks, di mana otomatis tes memeriksa bahwa logika masih melakukan apa yang seharusnya dilakukan.