Apa bedanya, benarkah?
Perbedaan nyata dan penting antara bahasa pemrograman dan bahasa-bahasa lain ini adalah ini:
HTML dan CSS menjelaskan presentasi , sedangkan bahasa pemrograman menjelaskan
fungsi
Saya bermaksud mengilustrasikan mengapa perbedaan ini penting, tetapi kesedihan tentang masalah ini kadang-kadang salah tempat.
Kisah nyata :
Saya pernah menghabiskan beberapa bulan mengembangkan sistem manajemen kinerja yang kompleks menggunakan bahasa pemrograman yang "tepat". Itu otomatis proses pengumpulan data dari berbagai sistem lain, melakukan berbagai manipulasi pada data itu dan kemudian disajikan hasilnya dalam tabel sederhana.
Setelah live, seorang manajer senior melihat alat yang ditulis untuk bisnis yang serupa, dan bertanya apakah kami bisa mengganti apa yang saya tulis menggunakan alternatif mereka. Selain itu, dia kesal karena saya menghabiskan waktu berminggu-minggu untuk mengembangkan solusi saya, di mana aplikasi baru ini telah ditulis dalam hitungan hari.
Investigasi lebih lanjut mengungkapkan bahwa opsi yang disukai manajer adalah semua presentasi tanpa substansi: ada banyak warna dan ikon dan grafik, tetapi sama sekali tidak ada logika di belakangnya. Semua data harus dikumpulkan dan dimanipulasi secara manual. Meskipun antarmuka yang cantik, aplikasi ini pada dasarnya tidak berguna.
Saya senang mengatakan bahwa manajer yang dimaksud dibujuk bahwa pendekatan saya adalah yang memenuhi kebutuhan bisnisnya yang sebenarnya.
Pentingnya presentasi :
Seringkali ada implikasi bahwa keterampilan dalam HTML, CSS, dll. Entah bagaimana lebih rendah daripada keterampilan dalam bahasa pemrograman "nyata". Ini adalah kesalahan serius.
Dalam cerita saya, manajer senior merasa bahwa desain sangat penting baginya, sejauh ia pada awalnya siap untuk mengabaikan fungsi yang menguntungkannya. Sekarang, jika ini adalah insiden yang terisolasi, saya mungkin menyarankan bahwa manajer itu hanya konyol. Tapi ternyata tidak. Berkali-kali, saya bertemu dengan pengguna yang terkesan dengan grafik yang mencolok dan widget whizzy, tetapi tidak terkesan dengan fungsi mentah dan pencapaian teknis saya. Saya pikir ada beberapa pelajaran untuk dipelajari di sini:
- Orang mengevaluasi perangkat lunak berdasarkan kriteria yang mereka pahami. Mereka sering memahami perbedaan antara tampan dan jelek, tetapi jarang menghargai nuansa teknis.
- Orang-orang tertipu oleh penampilan. Ini mungkin bukan hal yang baik, tetapi itu adalah kenyataan bahwa kita harus hidup bersama.
- Penampilan memengaruhi perasaan orang tentang perangkat lunak. Cara orang merasa tentang perangkat lunak penting bagi mereka. Memang, orang kadang-kadang lebih suka perangkat lunak yang membuat mereka merasa lebih baik daripada perangkat lunak yang secara fungsional unggul. Memang, mereka mungkin lebih produktif dengan alat perasaan-baik daripada dengan alat yang unggul secara teknis. Sejauh ini, pengguna kami tidak dibodohi. Mereka sebenarnya membuat pilihan yang bijaksana dan bijaksana.
- Sebagai programmer, kita sering mengabaikan peran presentasi karena kita fokus pada fungsi. Dalam batas tertentu, ini benar dan tepat. Namun, penting untuk menyadari bahwa ada dimensi lain dari pekerjaan kami yang penting bagi pelanggan kami.
Jadi, bahasa berorientasi presentasi (HTML, CSS) penting. Nilai tambah oleh mereka yang dapat menggunakan alat-alat ini secara efektif tidak boleh diremehkan.
Pentingnya bahasa pemrograman nyata
Seperti yang ditunjukkan OP, bahasa pemrograman "nyata" adalah Turing Lengkap. Sebagai geek sedih yang tepat, saya menemukan ini sangat menarik. Ini berarti bahwa, untuk setiap program yang ditulis dalam bahasa TC, program yang secara fungsional setara dapat ditulis dalam bahasa TC lainnya . Tentu saja, ini bukan untuk mengatakan bahwa semua bahasa adalah sama. Mereka masing-masing memiliki kekuatan dan kelemahan yang membuat mereka lebih atau kurang cocok untuk tugas-tugas tertentu. Namun, selain I / O, ini berarti bahwa semua program dapat ditulis dalam semua bahasa pemrograman yang sebenarnya.
(Kebetulan, yang penting adalah TC. Deklaratif vs imperatif adalah red-herring di sini. SQL, misalnya, adalah deklaratif tetapi juga merupakan bahasa pemrograman yang tepat karena itu adalah TC.)
Tentu saja, hal yang sama tidak berlaku untuk bahasa markup seperti HTML atau CSS. Faktanya, ada seluruh kelas masalah yang tidak bisa dipecahkan oleh bahasa-bahasa ini . Di mana saya dapat memprogram apa pun yang saya inginkan dalam bahasa pemrograman yang sebenarnya - termasuk mesin tata letak - tidak mungkin mencapai hal yang sama dengan bahasa yang bukan TC.
Seperti yang disorot dalam cerita saya, HTML dan sejenisnya digunakan untuk menghasilkan presentasi. Bahasa pemrograman nyata digunakan untuk menghasilkan fungsionalitas.
Mengapa para programmer sangat teliti tentang itu semua?
- Programer menghabiskan banyak waktu, tenaga dan uang untuk mengembangkan keterampilan mereka. Orang secara alami menghargai hal-hal yang mereka investasikan ("hatimu adalah tempat uangmu").
- Programmer sering merasa perlu untuk membenarkan jumlah waktu yang dibutuhkan untuk menghasilkan hasil dibandingkan dengan hasil cepat yang dicapai oleh desainer UI. Untuk melakukan ini, mereka perlu membuat perbedaan antara apa yang sebenarnya dilakukan kedua kelompok .
- Karena pengusaha perlu menerapkan orang yang tepat ke pekerjaan yang tepat. Kecuali kita mengklarifikasi perbedaan (seringkali teknis), manajer dengan mudah membuat panggilan yang salah.
- Karena ada perbedaan nyata dan mendasar , seperti diuraikan di atas.
Apakah selalu pantas menjadi orang yang bertele-tele?
Mari kita hadapi itu, sebagai programmer kami banyak alami bertele-tele . Ini sesuai dengan wilayahnya. Itu tidak membantu bahwa banyak dari kita yang terbakar ketika non-programer gagal memahami apa yang kita lakukan.
Namun demikian (dan jujur, ini bertentangan dengan naluri alami saya), saya tidak berpikir kita perlu memanggil orang-orang setiap kali mereka menyeleweng setiap perbedaan kecil .
Hal-hal penting di sini adalah konteks
dan perspektif .
Saya diberitahu bahwa, dari sudut pandang seorang ahli biologi, tomat adalah buah. Tetapi ketika saya membelinya di supermarket, saya mencarinya di antara sayuran. Mengapa? Karena perbedaan teknis tidak penting dalam konteks khusus itu. Terlebih lagi, perbedaannya justru akan menghalangi kegunaannya: jika saya cukup bodoh untuk memasukkan tomat ke dalam salad buah, misalnya.
Itu sama dengan bahasa komputer. Ada kalanya perbedaan antara bahasa pemrograman dan bahasa lain benar-benar penting . Namun, cukup sering, kita semua dapat berkomunikasi dengan sangat efektif ketika hanya menyatukan semuanya. Dalam kasus pertanyaan yang ditautkan oleh OP, benar-benar tidak masalah bahasa apa bahasa pemrograman yang benar dan yang tidak. Menunjukkan perbedaan tidak memajukan diskusi dengan cara apa pun. Untungnya, selain menambahkan sedikit kebisingan (dan menjadi rangsangan untuk diskusi yang menarik!) Keederan yang dihubungkan oleh OP adalah konsekuensi kecil. Paling buruk, bagaimanapun, keeduhan dapat membangkitkan perasaan negatif dan merusak hubungan ... setidaknya menurut istri saya.
:-)
Bagaimana cara berurusan dengan keriaan di antara programmer
Seorang teman pengkhotbah saya pernah menyampaikan khotbah yang berjudul:
apakah ini bukit yang pantas ditakuti?
Dia merujuk pada para jenderal yang membuat penilaian strategis tentang pertempuran mana yang layak diperjuangkan: apakah perolehannya sepadan dengan biayanya?
- Apakah benar-benar ada gunanya mengganggu alur diskusi untuk membuat perbedaan ini?
- Apakah keangkuhan saya berasal dari rasa kesombongan atau dari sakit masa lalu?
- Apakah komentar saya menghargai keterampilan orang lain serta saya sendiri?
Tentu saja, ada saat-saat ketika perbedaan perlu dibuat. Tujuan saya adalah, ketika saya memberikan kontribusi, itu akan menambah nilai bagi upaya kolektif kita.
Lagipula, itulah tugas setiap programmer sejati .