คำตอบสั้น ๆ :
องค์ประกอบหนึ่งที่ทำให้คนพูดว่ารหัสการทำงานของโปรแกรมนั้นยากต่อการอ่านคือมันให้การตั้งค่ากับไวยากรณ์ที่กระชับยิ่งขึ้น
คำตอบยาว:
ฟังก์ชั่นการเขียนโปรแกรมเองไม่สามารถอ่านหรืออ่านไม่ได้เนื่องจากเป็นกระบวนทัศน์ไม่ใช่รูปแบบการเขียนโค้ด ตัวอย่างเช่นใน C # การเขียนโปรแกรมที่ใช้งานได้ดูเหมือนว่า:
return this.Data.Products
.Where(c => c.IsEnabled)
.GroupBy(c => c.Category)
.Select(c => new PricesPerCategory(category: c.Key, minimum: c.Min(d => d.Price), maximum: c.Max(d => d.Price)));
และบุคคลนั้นจะสามารถอ่านได้ซึ่งมีประสบการณ์เพียงพอใน Java, C # หรือภาษาที่คล้ายกัน
ในทางตรงกันข้ามไวยากรณ์ภาษานั้นมีขนาดเล็กกว่าสำหรับภาษาที่ใช้งานได้หลายภาษา (รวมถึง Haskell และ F #) เมื่อเทียบกับภาษา OOP ที่เป็นที่นิยม
สิ่งนี้ใช้กับภาษานอก FP ด้วยเช่นกัน หากคุณเปรียบเทียบภาษา OOP ที่เป็นที่นิยมกับภาษาที่ได้รับความนิยมน้อยกว่าซึ่งมักใช้คำภาษาอังกฤษมากกว่าคนสุดท้ายจะเข้าใจง่ายขึ้นสำหรับผู้ที่ไม่มีประสบการณ์การเขียนโปรแกรม
เปรียบเทียบ:
public void IsWithinRanges<T>(T number, param Range<T>[] ranges) where T : INumeric
{
foreach (var range in ranges)
{
if (number >= range.Left && number <= range.Right)
{
return true;
}
}
return false;
}
ถึง:
public function void IsWithinRanges
with parameters T number, param array of (Range of T) ranges
using generic type T
given that T implements INumeric
{
for each (var range in ranges)
{
if (number is from range.Left to range.Right)
{
return true;
}
}
return false;
}
ในทางเดียวกัน:
var a = ((b - c) in 1..n) ? d : 0;
อาจแสดงเป็นภาษาจินตนาการได้ใน:
define variable a being equal to d if (b minus c) is between 1 and n or 0 otherwise;
เมื่อไวยากรณ์สั้นกว่าดีกว่า
ในขณะที่ไวยากรณ์ที่ละเอียดมากขึ้นนั้นง่ายต่อการเข้าใจสำหรับผู้เริ่มต้น รหัสตัวย่อหมายถึงตัวอักษรที่ต้องการพิมพ์น้อยลง
โดยเฉพาะอย่างยิ่งมันไม่สมเหตุสมผลเลยที่จะบังคับให้คนพิมพ์คำสำคัญเพื่อระบุสิ่งที่อาจอนุมานได้จากไวยากรณ์
ตัวอย่าง:
ใน PHP คุณต้องพิมพ์function
ก่อนทุกฟังก์ชั่นหรือวิธีการโดยไม่มีเหตุผลเฉพาะที่จะทำ
Ada ทำให้ฉันตกใจเสมอที่บังคับให้ผู้พัฒนาพิมพ์คำภาษาอังกฤษจำนวนมากโดยเฉพาะอย่างยิ่งเนื่องจากไม่มี IDE ที่ถูกต้องพร้อมการเติมคำอัตโนมัติ ฉันไม่ได้ใช้ Ada เมื่อเร็ว ๆ นี้และบทแนะนำอย่างเป็นทางการของพวกเขาไม่ทำงานดังนั้นฉันจึงไม่สามารถยกตัวอย่างได้ หากใครมีตัวอย่างอย่าลังเลที่จะแก้ไขคำตอบของฉัน
ไวยากรณ์1..n
ที่ใช้ในหลาย FP (และ Matlab) จะถูกแทนที่ด้วยbetween 1, n
หรือหรือbetween 1 and n
คำหลักที่ทำให้มันง่ายมากที่จะเข้าใจสำหรับผู้ที่ไม่คุ้นเคยกับไวยากรณ์ภาษา แต่ยังคงจุดสองจุดจะเร็วชนิดbetween (1, n)
between