คำถามติดแท็ก weak-typing

7
พิมพ์ตัวแปรการหล่อใน PHP, อะไรคือเหตุผลเชิงปฏิบัติสำหรับการทำเช่นนี้?
PHP เป็นส่วนใหญ่ของเราทราบว่ามีการพิมพ์ที่อ่อนแอ สำหรับคนที่ไม่ทำ PHP.net พูดว่า: PHP ไม่ต้องการคำนิยามประเภทที่ชัดเจน (หรือสนับสนุน) ในการประกาศตัวแปร ชนิดของตัวแปรถูกกำหนดโดยบริบทที่ใช้ตัวแปรนั้น ไม่ว่าจะชอบหรือเกลียด PHP ก็สร้างตัวแปรใหม่ขึ้นมาทันที ดังนั้นรหัสต่อไปนี้ถูกต้อง: $var = "10"; $value = 10 + $var; var_dump($value); // int(20) PHP ยังอนุญาตให้คุณสร้างตัวแปรอย่างชัดเจนเช่น: $var = "10"; $value = 10 + $var; $value = (string)$value; var_dump($value); // string(2) "20" ทั้งหมดนี้ยอดเยี่ยม ... แต่สำหรับชีวิตของฉันฉันไม่สามารถเข้าใจถึงเหตุผลที่ปฏิบัติได้สำหรับการทำเช่นนี้ ฉันไม่มีปัญหากับการพิมพ์ที่แข็งแกร่งในภาษาที่รองรับเช่น Java ไม่เป็นไรและฉันเข้าใจอย่างถ่องแท้ นอกจากนี้ฉันรู้และเข้าใจถึงประโยชน์ของการบอกกล่าวชนิดในพารามิเตอร์ฟังก์ชัน ปัญหาที่ฉันมีกับการคัดเลือกนักแสดงอธิบายโดยข้อความข้างต้น …

4
มีข้อโต้แย้งอะไรในความโปรดปรานของการพิมพ์ที่อ่อนแอ?
สิ่งนี้เกิดขึ้นในการพูดคุยกับเพื่อนและฉันพบว่าตัวเองถูกกดขี่เพื่อคิดข้อโต้แย้งที่ดี การพิมพ์ที่ได้รับประโยชน์มีประโยชน์อะไรบ้าง

4
ทำไมภาษาที่พิมพ์อย่างอ่อนยังถูกพัฒนาอย่างแข็งขัน?
ฉันสงสัยว่าทำไมภาษาที่พิมพ์อย่างอ่อนยังคงได้รับการพัฒนาอย่างแข็งขัน ตัวอย่างเช่นผลประโยชน์อย่างใดอย่างหนึ่งสามารถดึงออกมาจากความสามารถในการเขียน $someVar = 1; (...) // Some piece of code $someVar = 'SomeText'; แทนที่จะใช้เวอร์ชั่นที่แตกต่างและพิมพ์ได้อย่างหนักแน่น int someInt = 1; (...) string SomeString = 'SomeText'; เป็นความจริงที่คุณต้องประกาศตัวแปร aditional ในตัวอย่างที่สอง แต่มันเจ็บจริงหรือ ภาษาทุกภาษาไม่ควรพยายามพิมพ์ดีดอย่างแรงเพราะบังคับให้พิมพ์ปลอดภัยในเวลารวบรวมจึงหลีกเลี่ยงข้อผิดพลาดบางประการในการคัดเลือกพิมพ์?

4
การคิดเกี่ยวกับรูปแบบการออกแบบและการปฏิบัติของ OOP เปลี่ยนไปอย่างไรในภาษาที่มีการเปลี่ยนแปลงและมีการพิมพ์น้อย
มีคำถามที่เป็นประโยชน์อยู่แล้วในบรรทัดเหล่านี้ (" รูปแบบการออกแบบที่ไม่ใช่ OOP? ") แต่ฉันอยากรู้มากขึ้นเกี่ยวกับมุมมองการเปลี่ยนผ่านสำหรับใครบางคนที่เพิ่งเริ่มต้นด้วยภาษาแบบไดนามิกและพิมพ์อ่อนแอ นั่นคือ: สมมติว่าฉันได้รับการเขียนโปรแกรมใน C ++, C # หรือ Java เป็นเวลาหลายปีและดูดซึมจำนวนมากของภูมิปัญญาตามสายของรูปแบบการออกแบบ GoF ฟาวเลอร์ของรูปแบบของ Enterprise Application สถาปัตยกรรม , หลักการมูลฝอยฯลฯ ตอนนี้ฉัน' การเล่นน้ำใน Ruby, Python, JavaScript และอื่น ๆ และสงสัยว่าความรู้ของฉันใช้อย่างไร สันนิษฐานว่าฉันสามารถทำการแปลโดยตรงในหลายกรณี แต่เกือบจะแน่นอนว่าจะไม่ได้รับประโยชน์เต็มที่จากการตั้งค่าใหม่ของฉัน การพิมพ์แบบเป็ดเพียงอย่างเดียวทำให้ความคิดแบบอินเทอร์เฟซบนหัวของฉันเยอะ อะไรที่ยังคงเหมือนเดิม? การเปลี่ยนแปลงอะไร มีหลักการชี้แนะเช่น SOLID หรือรูปแบบที่เป็นที่ยอมรับ (อาจเป็นเรื่องใหม่ทั้งหมด) ที่มือใหม่ควรรู้หรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.