อะไรทำให้บางภาษาทำสิ่งนี้และคนอื่น ๆ ไม่ได้? ทำไมไม่เก็บระบบที่เป็นรูปแบบเดียวกันของการเพิ่มเครื่องหมายอัฒภาคไว้ที่ท้าย?
โรเบิร์ตให้คำตอบที่ดีเกี่ยวกับสวิฟต์ฉันจะพยายามเพิ่มอีกเล็กน้อยเกี่ยวกับการแจงทั่วไปและทำไมต้องใช้หรือไม่ใช่อัฒภาค
เมื่อคุณรวบรวมโปรแกรมที่มีหลายขั้นตอนก่อนที่จะแฟ้มแหล่งที่มาของคุณจะกลายเป็นรหัสปฏิบัติการซึ่งเป็นหนึ่งในการอ่านเป็นครั้งแรกและการแยก ในระหว่างการแยกวิเคราะห์รหัสของคุณจะถูกเปลี่ยนจากลำดับของตัวละครเป็นรูปแบบที่มีโครงสร้างตามไวยากรณ์ของภาษา สำหรับสิ่งนี้จำเป็นที่องค์ประกอบที่เขียนรหัสของคุณ (ตัวแปรค่าคงที่การประกาศ ฯลฯ ) จะถูกระบุและแยกออกจากกัน เมื่อคุณประกาศเช่น:
int someNumber = 0;
มันเป็นเพียงลำดับของตัวอักษรที่ใดจะต้องมีการหันกลับมาหาแนวคิด"สร้าง 'สิ่ง' ที่เรียกว่าsomeNumber
ประเภทint
และกำหนด0
ให้กับมัน"
สิ่งนี้ต้องระบุว่าคำสั่งเริ่มต้นและสิ้นสุดตรงไหน ลองนึกภาพถ้าคุณมีสิ่งนี้:
int someNumber = 0;
int otherNumber = 1;
คุณจำเป็นต้องรู้ว่าสิ่งเหล่านั้นเป็นคำประกาศสองแบบที่แตกต่างกัน ;
ใน C-เช่นภาษาที่ใช้สำหรับการที่ดังนั้น parser อ่านตัวอักษรจนกว่าจะพบหนึ่งและพยายามที่จะเข้าใจสิ่งที่อ่านเพียงแค่เป็นคำเดียว สิ่งนี้อนุญาตให้โรเบิร์ตพูดได้หลายข้อความในบรรทัดเดียวกันเช่น:
int someNumber = 0; int otherNumber = 1;
ซึ่งมีผลเหมือนกับการเขียนในสองบรรทัด
ในภาษาอื่นเช่นPythonคุณคาดว่าจะวางแต่ละคำสั่งในบรรทัดที่แตกต่างกัน
x = 3
if x < 10:
print 'x smaller than 10'
else:
print 'x is bigger than 10 or equal'
ดังนั้นไม่จำเป็นต้องเพิ่ม a ;
เนื่องจากภาษานั้นป้องกันคุณจากการเพิ่มคำสั่งในบรรทัดเดียวกัน!
ภาษาอื่น ๆ เช่นLISPหรือSchemeมีวิธีการจัดกลุ่มข้อความที่แตกต่างกันมาก (ตกลงพวกเขาไม่ได้เป็นประโยคจริงๆ แต่ลองเพิกเฉยต่อตอนนี้) ดังนั้นคุณมีวงเล็บสำหรับทุกสิ่ง:
(define (do-stuff x)
(begin
(display (format "value: ~a" x))
x))
อีกครั้งคุณไม่จำเป็นต้อง;
เพียงเพราะคุณใช้สัญลักษณ์เดียวกัน ( )
, (
) สำหรับสิ่งที่ในภาษาอื่น ๆ{
, }
, :
ฯลฯ คนที่รู้เพียงไวยากรณ์ชัดอาจขอให้คุณ: ทำไมคุณต้อง;
ในตอนท้ายของงบของคุณ ?
เพียงเพื่อเพิ่มตัวอย่างคนแปลกหน้า: OCamlไม่เพียง แต่มีเครื่องหมายอัฒภาคในตอนท้ายของคำสั่ง ... มันมีสอง!
let rec fact x =
if x <= 1 then 1 else x * fact (x - 1);;
ทำไม? ฉันไม่รู้ :)
ภาษาที่แตกต่างได้รับการออกแบบโดยมีวัตถุประสงค์ที่แตกต่างและปรัชญาที่แตกต่างกัน หากทุกภาษาใช้ไวยากรณ์และแบบแผนเดียวกันร่วมกันพวกเขาอาจจะอนุญาตให้คุณทำสิ่งเดียวกันในแบบเดียวกันเท่านั้น