เพื่อนเขียนโปรแกรมของฉันมักจะบอกฉันเสมอว่า HTML เป็นภาษามาร์กอัปและ C ++ เป็นภาษาการเขียนโปรแกรม เมื่อฉันถามพวกเขาว่าอะไรคือความแตกต่างพวกเขาไม่เคยให้คำตอบที่สมเหตุสมผลเลย
สิ่งใดที่ทำให้ C ++ มีภาษาโปรแกรมหนึ่งและ HTML ไม่ได้
เพื่อนเขียนโปรแกรมของฉันมักจะบอกฉันเสมอว่า HTML เป็นภาษามาร์กอัปและ C ++ เป็นภาษาการเขียนโปรแกรม เมื่อฉันถามพวกเขาว่าอะไรคือความแตกต่างพวกเขาไม่เคยให้คำตอบที่สมเหตุสมผลเลย
สิ่งใดที่ทำให้ C ++ มีภาษาโปรแกรมหนึ่งและ HTML ไม่ได้
คำตอบ:
ภาษาการเขียนโปรแกรมเป็นสัญลักษณ์ที่ออกแบบมาเพื่อส่งคำแนะนำไปยังเครื่อง ตามคำนิยามว่าทั้ง C ++ และ HTML มีการเขียนโปรแกรมภาษาที่เป็นสัญกรณ์โจเซฟ Marie Jacquard ใช้ใน 1801 การเขียนโปรแกรม looms
อย่างไรก็ตามด้วยการเพิ่มจำนวนของภาษาที่ใช้ในโครงสร้างและ / หรืออธิบายข้อมูลคำจำกัดความของภาษาการเขียนโปรแกรมจะเลื่อนไปรวมเฉพาะภาษาที่สามารถแสดงอัลกอริทึม นี่เป็นคำจำกัดความที่พบได้ทั่วไปมากขึ้นในวันนี้และไม่รวมภาษาเช่น HTML หรือ XML
ที่เป็นหัวใจของความหมายปัจจุบันคือแนวคิดของทัวริงสมบูรณ์ ภาษาโปรแกรมส่วนใหญ่นั้นทัวริงสมบูรณ์และทัวริงสมบูรณ์มักจะอ้างว่าเป็นหนึ่งในลักษณะที่สำคัญที่แยกภาษาโปรแกรมจากภาษาคอมพิวเตอร์อื่น ๆ สิ่งนี้ดีพอเหมือนกฎทั่วไป แต่ไม่ถูกต้องทั้งหมด:
คุณสามารถเลือกคำจำกัดความที่คุณต้องการได้ทั้งนี้ขึ้นอยู่กับบริบท
แก้ไข:
ปล่อยให้มันเป็นที่รู้จักต่อไปการใช้ภาษาไม่ได้ทำให้เกิดลักษณะเฉพาะกับภาษานั้นตัวอย่างเช่น: ข้อมูลจำเพาะของภาษาอาจกำหนดภาษาที่สมบูรณ์แบบทัวริงบางคนสามารถนำมาใช้อย่างสมบูรณ์แบบ การใช้งานนี้ไม่สมบูรณ์ทัวริงไม่ได้หมายความว่าภาษานั้นไม่ได้ทำให้สมบูรณ์ (ค่อนข้างเป็นไปได้ว่าการติดตั้งใช้งานไม่สอดคล้อง) รายละเอียดของภาษาและรายละเอียดของการใช้งานภาษานั้น ๆ จะต้องได้รับการยอมรับว่าเป็นสิ่งที่แยกจากกันนี่คือเหตุผลว่าทำไมจึงไม่ถูกต้องในการเรียกภาษาที่แปลหรือเรียบเรียง ฯลฯ
วลี"ฉันรู้ว่าเมื่อฉันเห็นมัน"คือการแสดงออกทางภาษาซึ่งผู้พูดพยายามจัดหมวดหมู่ความเป็นจริงหรือเหตุการณ์ที่สังเกตได้แม้ว่าหมวดหมู่จะเป็นอัตนัยหรือขาดพารามิเตอร์ที่กำหนดไว้อย่างชัดเจน วลีดังกล่าวถูกใช้อย่างมีชื่อเสียงโดยผู้พิพากษาศาลฎีกาแห่งสหรัฐอเมริกาพอตเตอร์สจ๊วตเพื่ออธิบายการทดสอบขีด จำกัด ของเขาสำหรับความลามกในJacobellis v. Ohio (1964)
- "ฉันรู้เมื่อฉันเห็นมัน" บทความ Wikipedia
ฉันคิดว่าเราทุกคนรู้ภาษาการเขียนโปรแกรมเมื่อเราเห็น เห็นได้ชัดว่า OP ทำเพราะคุณได้ตัดสิน C ++ ให้เป็นภาษาการเขียนโปรแกรมแล้วและ HTML นั้นไม่ใช่ภาษานั้น
ดังนั้นเป้าหมายของการใฝ่หาคำจำกัดความที่เป็นทางการคืออะไร? Yannis ได้ให้บทสรุปที่ยอดเยี่ยมว่าทำไมคำจำกัดความที่ได้รับความนิยมมากที่สุดของ Turing ครบถ้วนเป็นข้อบกพร่อง: มันนำไปสู่การจัดหมวดหมู่ซึ่งท้าทายการทดสอบ "ฉันรู้ว่าเมื่อฉันเห็น"
ฉันบอกคุณแล้วว่าคำจำกัดความใด ๆ ที่คุณสามารถนำมาใช้ได้นั้นจะนำไปสู่บางภาษาซึ่งเราทุกคนรู้สึกว่าไม่ใช่ "การเขียนโปรแกรม" ภาษาจะถูกจัดหมวดหมู่เป็นอย่างนั้น หรือบางภาษาที่เราทุกคนรู้สึกว่าเป็น "การเขียนโปรแกรม" ภาษาจะถูกจัดหมวดหมู่ว่าไม่เป็นเช่นนั้น
ทำไมไม่ไปกับอุทรของคุณล่ะ? ฉันใช้ฮิวริสติกแบบง่าย: ภาษาการเขียนโปรแกรมเป็นภาษาที่มีจุดประสงค์หลักตามความเห็นของฉันและจากการสังเกตของฉันคือการเขียนโปรแกรม ไม่ต้องทำเครื่องหมายเนื้อหา ไม่แปลง XML เพื่อเขียนโปรแกรมวัตถุประสงค์ทั่วไป ฉันแค่อยากรู้ว่าเมื่อฉันเห็นมันมากกว่าพยายามที่จะจำกัดความหมายอย่างเป็นทางการและฉันไม่เห็นคุณค่าของแท้ใด ๆ ที่มาจากการพยายามนิยามเช่นนั้น
ภาษามาร์กอัปส่วนใหญ่จัดการกับวิธีการแสดงข้อมูลและโดยทั่วไปแล้วพวกเขาขาดโครงสร้างพื้นฐานการเขียนโปรแกรมของตัวแปรคณิตศาสตร์การเปรียบเทียบการตัดสินใจ (ถ้า ... จากนั้น) ลูป (สำหรับในขณะที่) ฯลฯ
HTML ด้วยตัวเองเป็นแบบคงที่; นั่นคือเหมือนกับตัวประมวลผลคำมันมีไว้เพื่อนำเสนอข้อมูลตามที่เป็นอยู่ เฉพาะเมื่อมีการเพิ่มภาษาโปรแกรมบางประเภท (โดยปกติแล้วภาษาสคริปต์เช่น JavaScript, PHP และอื่น ๆ ) จะทำให้หน้าเว็บ HTML สามารถมีเนื้อหา "ที่เปลี่ยนแปลง" ได้ ภาษาสคริปต์ให้ความเป็นไปได้ "การเขียนโปรแกรม" กับตัวแปรคณิตศาสตร์การเปรียบเทียบการตัดสินใจลูป ฯลฯ
HTML เป็นภาษาที่ประกาศ มันไม่ได้ทำอะไรมากเพียงแค่อธิบายเอกสารและเนื้อหา (ใช้แท็กที่มีความหมายแบบ semantic)
C ++ ในอีกแง่หนึ่งก็ทำอะไรบางอย่าง มันกำหนดฟังก์ชั่นและคลาส แต่มันยังอธิบายถึงวิธีการที่ฟังก์ชั่นเหล่านี้ควรทำงานร่วมกันว่าอินพุตและเอาท์พุทของมันถูกเชื่อมโยงเข้าด้วยกันด้วยวิธีที่มีความหมายและวิธีที่แอพพลิเคชันควรทำงานโดยรวม