Contoh di sini:
Bahasa apa yang harus saya ketahui jika saya tertarik membangun aplikasi web?
Ya, saya mengerti bahwa HTML dan CSS tidak lengkap Turing. Ya, saya mengerti bahwa mereka adalah bahasa deklaratif, bukan bahasa imperatif. Tetapi mengapa orang selalu dipukuli di atas kepala dengan fakta pedantic (dan bisa dibilang jelas) ini ketika mereka mengajukan pertanyaan tentang bahasa-bahasa ini?
terminology
Robert Harvey
sumber
sumber
Jawaban:
Apa bedanya, benarkah?
Perbedaan nyata dan penting antara bahasa pemrograman dan bahasa-bahasa lain ini adalah ini:
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:
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?
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 .
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:
Dia merujuk pada para jenderal yang membuat penilaian strategis tentang pertempuran mana yang layak diperjuangkan: apakah perolehannya sepadan dengan biayanya?
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 .
sumber
Katakan pada Insinyur Sipil atau Mekanik bahwa Anda mempelajari "Rekayasa Perangkat Lunak" dan mereka akan memberi tahu Anda bahwa "Rekayasa Perangkat Lunak" bukanlah rekayasa nyata .
Katakan pada pilot F-16 bahwa Anda menerbangkan Cessnas untuk bersenang-senang dan dia akan memberi tahu Anda bahwa Anda bukan pilot sungguhan .
Katakan kepada dokter bahwa Anda adalah chiropractor dan dia akan memberi tahu Anda ... yah, jangan pergi ke sana :-)
Saya pikir sebagian besar orang tidak menyukai gagasan bahwa profesi mereka disusupi oleh orang-orang yang berpura-pura atau orang-orang yang tidak benar-benar "layak".
Sekarang, agar adil, cukup jelas bahwa HTML dan CSS bukan bahasa pemrograman . Mereka bukan lagi bahasa pemrograman yang format .docx adalah bahasa pemrograman, dan untuk mengklaim bahwa Anda seorang programmer jika semua yang Anda tahu adalah HTML dan CSS tentu tidak akurat. Tapi saya pikir beberapa kegigihan dalam menjawab dapat dikaitkan dengan apa yang saya katakan di atas.
Juga, dalam pertanyaan yang Anda tautkan, si penanya menyebut HTML dan CSS sebagai "bahasa", bukan "bahasa pemrograman". HTML adalah bahasa markup dan CSS adalah bahasa juga (saya tidak tahu apa jenis bahasa yang Anda sebut CSS?), Jadi saya pikir itu agak tidak adil untuk memanggilnya keluar karena memanggil mereka "bahasa "...
sumber
Bagi saya tidak terlalu penting.
Tetapi saya berasumsi bahwa bagi mereka yang melakukannya, perbedaan antara HTML, CSS, XML, dll. Dan Real Programming Languages ™ adalah seperti perbedaan antara kayu dan cat sebagai bahan bangunan. Anda tidak dapat membuat hal-hal dengan cat seperti Anda bisa dengan kayu, dan juga Anda tidak dapat memprogram dengan HTML seperti Anda bisa dengan RPL.
Namun saya beri Anda, untuk beberapa percakapan, membuat perbedaan seperti itu bisa tidak relevan, dan karena itu bertele-tele dan menjengkelkan.
sumber
Ini mungkin bukan perbedaan "penting", karena bisa dibilang banyak pekerjaan di bagian html / css dari beberapa situs web seperti di bagian pemrograman.
Tetapi ini adalah perbedaan yang signifikan, karena siapa pun yang tidak tahu apa artinya tidak memiliki tempat dalam tim yang melakukan pengembangan web.
Jika seorang desainer percaya HTML adalah pemrograman, biarkan ia tetap mendesain dengan alat Adobe dan melakukan desain yang berhubungan dengan cetak; tapi jangan percaya apa pun yang mungkin dia katakan tentang aplikasi web.
Jika pengembang berpikir dia di atas desainer karena bahasa 'nya' Turing-lengkap, jangan berharap dia bekerja dengan baik dengan desainer, atau bahwa kode-nya dapat 'cantik' setelah selesai.
sumber
if ... then
konstruksi run-time dan beberapa cara untuk mengulangi hal-hal yang sebelumnya tidak diketahui beberapa kali, saya cenderung mengatakan bahwa itu bukan bahasa pemrograman. Tentu saja, ada beberapa bahasa pinggiran yang memperumit definisi; tetapi HTML / CSS jauh dari itu.Anda memukulnya di kepala ketika Anda mengatakan "deklaratif, bukan imperatif". Markup (baik itu HTML, CSS, atau apa pun) menjelaskan hal-hal. Inti dari pemrograman adalah melakukan sesuatu.
Skill yang diperlukan untuk menggunakan markup benar-benar berbeda dari skill yang diperlukan untuk diprogram.
Jenis masalah yang dipecahkan dengan menulis markup sangat berbeda dari jenis masalah yang dipecahkan oleh pemrograman.
sumber
Ini penting bagi orang-orang tertentu karena tidak ada ilmu roket di permukaan tetapi ada banyak arcana di sekitar mereka karena fakta bahwa mereka menerapkan secara berbeda dalam 5 hingga puluhan lingkungan yang berbeda yang Anda benar-benar pedulikan. Ketidakpastian dan perhatian terhadap kerajinan semacam itu menakut-nakuti berbagai profesional teknologi tertentu yang ngeri dengan risiko yang tidak dapat dikenali dan bahkan lebih ngeri dengan mempelajari apa pun lebih dari yang harus mereka lakukan setelah mendapatkan gelar.
Jika seseorang bertanya kepada saya bahasa apa yang saya tahu dan saya melempar CSS ke luar sana dan mereka berkata "tapi itu bukan bahasa NYATA" Saya akan bertanya kepada mereka bagaimana mereka akan menangani div centering secara vertikal di IE 5, IEs 6-8 dan IE9 +. Lalu kita bisa beralih ke sudut-sudut bulat, masalah transparansi alfa, penyebab NYATA di balik semua argumen tabel-as-layout konyol yang baru saja mulai menjadi benar-benar tidak relevan dan puluhan topik lagi untuk kata uber-coder yang mungkin tahu satu Bahasa dan mengklaim satu atau dua bahwa dia hampir tidak bisa melek secara fungsional karena kelas yang terpaksa dia ambil di perguruan tinggi 10 tahun yang lalu.
Mereka pasti adalah 'bahasa.' Saya tidak akan menyebut mereka 'bahasa pemrograman.' Saya akan merasa nyaman menggambarkan proses penulisan dalam bahasa-bahasa ini 'coding'.
Sejauh yang saya ketahui, siapa pun yang telah berhasil menguasai grand CSS memiliki chutzpa dan etos kerja untuk menjadi programmer yang hebat, sudah memiliki latar belakang dalam pemikiran berorientasi objek, dan tidak diragukan lagi telah belajar untuk berpikir tentang bagaimana apa yang ia lakukan. menulis sekarang dapat mempengaruhi 25 karyanya proyek ke masa depan
sumber
HTML dan CSS bukan bahasa pemrograman. Lupakan saja.
Namun: JavaScript adalah bahasa pemrograman. Mesinnya adalah browser. PHP adalah bahasa pemrograman. Mesin adalah mesin virtual di server.
Jadi, jika Anda hanya menggunakan HTML dan CSS, Anda tidak melakukan pemrograman apa pun (meskipun Anda mungkin melakukan beberapa rekayasa).
Tetapi jika Anda menggunakan JavaScript, PHP, atau bahasa skrip lain. Anda sedang melakukan pemrograman.
Adapun bahasa pemrograman NYATA. Jika Anda beroperasi pada mesin (yang asli, atau virtual). Dan menggunakan algoritma ANDA SENDIRI untuk memberitahu mesin untuk melakukan sesuatu. Kemudian Anda menggunakan bahasa pemrograman NYATA.
sumber
Bahasa pemrograman adalah sedikit istilah yang tidak tepat karena merupakan istilah umum yang digunakan oleh para praktisi dan orang awam juga. Praktisi memiliki makna berbeda dari istilah itu di mana orang awam biasanya tidak. Biasanya definisi mereka adalah jika memiliki kata-kata / sintaks lucu yang saya tidak segera mengerti dan programmer menggunakannya maka itu harus menjadi bahasa pemrograman. Tidak sepenuhnya melenceng, tapi kita bisa setuju itu tidak tepat.
Kata-kata seperti deklaratif, imperatif, dan turing lengkap adalah istilah yang lebih tepat dengan makna yang sangat spesifik. Ketika Anda mengajukan pertanyaan seperti mengapa HTML / CSS bukan bahasa pemrograman, Anda meminta definisi yang lebih tepat tentang apa sebenarnya bahasa pemrograman itu. Kami tidak bertele-tele, tetapi mencoba menjawab pertanyaan Anda. Apakah mereka istilah terbaik untuk digunakan ketika bahkan jika Anda google mereka sulit untuk memahami apa artinya? Tergantung. Apakah Anda menginginkan jawaban pendek atau panjang. :-)
Bahasa pemrograman biasanya dianggap Turning-complete oleh programmer, tetapi apa artinya itu? Ini berarti bahasa dapat menggambarkan perilaku atau cara melakukan sesuatu. Kami secara resmi menyebutnya logika. HTML / CSS dapat menggambarkan ada tombol yang terletak di sudut kanan atas, atau ada tabel dengan 4 kolom 5 baris, dua baris pertama berwarna kuning, dan baris bawah memiliki teks hijau, dan setiap sel dalam tabel memiliki 5 piksel ruang kosong di sekitar konten.
Apa yang tidak bisa dilakukan oleh HTML / CSS adalah mengekspresikan perilaku atau logika dari apa yang terjadi ketika Anda mengklik tombol. Tidak dapat mengatakan kapan saya mengklik tombol itu untuk mendapatkan nilai dari tabel itu dan menambahkannya, dan menulis nilai itu ke baris baru di bagian bawah tabel. Menggambarkan perilaku kira-kira sama dengan Turning-complete tanpa menjadi terlalu berlebihan.
Lebih tepatnya, Turing-complete berarti Anda dapat mengimplementasikan bahasa itu sendiri. Itu berarti saya bisa menulis program javascript yang mengambil string javascript dan bisa menjalankannya (dan tidak menggunakan fungsi eval ()). Bahkan, saya bisa menulis program javascript yang bisa mengambil program yang ditulis dalam bahasa lengkap Turing dan mengevaluasinya. Itulah artinya menjadi Turing lengkap. Semua bahasa yang Turning complete sama dengan program apa yang bisa diekspresikan. Wahyu yang luar biasa jika Anda memikirkannya.
sumber
Ini dua sen saya. HTML dan CSS jelas bukan bahasa pemrograman. Untuk alasan itu, ketika saya melihat HTML atau CSS pada resume seseorang di bawah "Bahasa Pemrograman", itu hanya memberitahu saya bahwa orang ini tidak tahu apa yang dia bicarakan.
Selain itu, tidak, tidak masalah.
Ngomong-ngomong, programmer umumnya cenderung jagoan. Itu hanya datang dengan pekerjaan.
sumber
Itu tidak masalah. Dan itu juga masalah definisi. Apa itu bahasa pemrograman? Beberapa berarti bahwa itu harus Turing-lengkap. Yang lain memiliki definisi lain, yang menjadikan HTML sebagai bahasa pemrograman. (Dan dalam contoh Anda, mereka bahkan tidak disebut bahasa pemrograman, hanya bahasa, yang jelas mereka).
Rekomendasi saya: Cobalah untuk mengabaikan orang-orang yang menunjukkan klaim-klaim yang tidak berguna dan bahkan dalam banyak hal bahkan salah. Itu hanya variasi tata bahasa nazi-isme. Memanggil HTML sebagai bahasa pemrograman tidak salah dalam arti yang berarti.
sumber
Saya pikir ini sampai ke sini - HTML & CSS, sementara cukup rumit untuk memerlukan beberapa pengetahuan, adalah bahasa presentasi, paling cocok sebagai format untuk laporan yang dihasilkan. Oleh karena itu, orang yang hanya dapat melakukan ini tidak dianggap sebagai pembuat kode. Ingatlah bahwa beberapa coders telah berkomputasi cukup lama untuk mengingat ketika pengolah kata rata-rata mengambil sintaks perintah lebih banyak untuk gaya teks daripada HTML.
Apa yang oleh sebagian orang disebut bahasa 'nyata' adalah yang akan memproses data dengan cara tertentu untuk menghasilkan laporan. Atau sesuatu yang bisa digunakan untuk menulis game. Mengetahui HTML & CSS dalam dan luar adalah keterampilan yang berharga, tetapi lebih dari itu dikombinasikan dengan pengetahuan JS untuk front end, dan Java, PHP, Perl, Ruby, Python, C / C ++ atau C # di bagian belakang.
Sebaliknya, seseorang yang hanya tahu salah satu dari bahasa 'nyata' itu tanpa teknologi ujung depan web, sangat membatasi fleksibilitas mereka sendiri sebagai pembuat kode.
sumber
Pigeonhole / stereotip logis "otak kiri" atau "otak kanan" kreatif secara akurat menggambarkan serangkaian keterampilan banyak orang. Dalam pengalaman saya, "adalah HTML / CSS bahasa pemrograman" lebih tentang apakah orang yang pandai HTML / CSS juga bisa pandai dalam tugas pemrograman lain.
Sebagian besar perancang web yang bekerja dengan saya dalam 13 tahun terakhir. Saya telah melakukan pengembangan web telah mampu membuat HTML dan CSS yang berfungsi, tetapi tidak mampu menangani tantangan pemrograman yang lebih menuntut (apa pun selain dari cut-and- termudah) disisipkan JavaScript). Sebagian besar programmer dan perancang basis data hot-shot tidak cukup peduli dengan presentasi visual untuk melakukan pekerjaan yang baik dengan HTML / CSS atau presentasi secara umum. Sebagian besar sebenarnya menolak untuk mencoba.
HTML dan CSS memerlukan beberapa keterampilan pemrograman: eksperimen, pemecahan masalah, pengujian yang cermat, pemahaman tentang warisan ... Tetapi mereka membutuhkan setidaknya jumlah keterampilan desain yang sama: kepekaan terhadap warna, garis, jarak, keseimbangan - hampir sama macam keterampilan komposisi visual yang menghasilkan foto yang bagus.
Karena HTML / CSS adalah bahasa tata letak atau presentasi, ia berada di akhir diagram alir data. Tidak ada kode lain di hilirnya. Keterampilan desain tingkat yang lebih besar yang dibutuhkan seseorang untuk merancang API, layanan, atau skema basis data yang baik tidak digunakan dalam HTML dan CSS. Pada umumnya tidak perlu memodulasi apa pun yang terkait dengan HTML atau CSS, atau jika ada, tidak tergantung pada desainer grafis untuk melakukannya. Jarang fungsionalitas dibuat dengan HTML / CSS . Menu drop-down mungkin pengecualian yang paling umum, tetapi mereka dapat dibuat dengan memotong dan menempelkan resep dari web daripada dengan mendesain kode.
Ini tidak biasa, tetapi bukan tidak mungkin bagi seorang programmer untuk memiliki beberapa desain visual atau keterampilan tata letak atau bagi seorang desainer untuk memiliki beberapa keterampilan pemrograman. Orang-orang ini sangat berharga di tim web karena mereka membantu menjembatani kesenjangan yang sebagian besar dari kita miliki. Tetapi mereka sering tunduk pada stereotip, bahwa mampu melakukan HTML / CSS tidak mungkin untuk "programmer nyata," atau sebaliknya. Tetapi kombinasi keterampilan ini tidak lebih mustahil daripada bagi programmer yang sama untuk menjadi pelaut, pelukis, koki yang baik, atau untuk memiliki keterampilan lain yang mereka praktikkan di waktu luang mereka.
Seperti yang dikatakan orang lain, perbedaan ini menjadi fokus paling saat mempekerjakan. Karena orang-orang dengan bakat crossover jarang terjadi, sebagian besar lowongan pekerjaan harus menargetkan satu keahlian atau lainnya. Jika seorang programmer mencantumkan HTML / CSS di bawah "Bahasa Pemrograman" itu menimbulkan tanda merah bahwa mereka tidak dapat menyelesaikan tugas pemrograman umum, atau bahwa mungkin definisi pemrograman mereka sangat sempit. Mungkin mereka bisa, itu hanya menimbulkan pertanyaan. Jika seorang desainer mencantumkan HTML / CSS Anda pasti ingin melihat portofolio mereka untuk melihat bahwa mereka memiliki kemampuan artistik untuk menciptakan efek visual yang diinginkan.
HTML / CSS mungkin berulang kali dibuang sebagai bukan bahasa pemrograman nyata karena lebih aman dan lebih dapat diterima secara sosial daripada mencemari orang-orang yang tidak dapat melintasi belahan bumi yang mereka wakili. Tentu saja, beberapa orang mungkin tidak memiliki penghambatan itu. Saya sebenarnya bekerja dengan satu manajer yang sering berkata, "Dia menulis [menyisipkan fungsi backbone departemen di sini]? Saya pikir dia baru saja membuat HTML?"
Pertanyaan bagus!
sumber