อะไรคือรากฐานทางคณิตศาสตร์สำหรับค่าระดับชั้นหนึ่ง / สอง / สามในภาษาโปรแกรม?


19

ที่เพิ่ม

เพิ่งพบสองคำถามที่เกี่ยวข้อง

/math//q/1759680/1281

/programming//a/2582804/156458


ในภาษาการเขียนโปรแกรมจาก Pragmatics การเขียนโปรแกรมของ Michael Scott

โดยทั่วไปค่าในภาษาการเขียนโปรแกรมถูกกล่าวว่ามี สถานะfi rst-classหากสามารถส่งผ่านเป็นพารามิเตอร์ส่งคืนจากรูทีนย่อยหรือกำหนดให้เป็นตัวแปร ประเภทอย่างง่ายเช่นจำนวนเต็มและตัวอักษรเป็นค่า fi rst-class ในภาษาการเขียนโปรแกรมส่วนใหญ่ ในทางตรงกันข้ามค่า“ ระดับสอง”สามารถส่งผ่านเป็นพารามิเตอร์ แต่ไม่สามารถส่งคืนจากรูทีนย่อยหรือกำหนดให้กับตัวแปรและค่า“ คลาสที่สาม”ไม่สามารถส่งผ่านเป็นพารามิเตอร์ได้

ฉลากเป็นค่าระดับที่สามในภาษาการเขียนโปรแกรมส่วนใหญ่ แต่ค่าระดับที่สองใน Algol รูทีนย่อยแสดงการเปลี่ยนแปลงมากที่สุด พวกเขาเป็นค่าแรกในทุกภาษาโปรแกรมการทำงานและภาษาสคริปต์ส่วนใหญ่ พวกเขายังเป็นค่า class rst-class ใน C # และด้วยข้อ จำกัด บางอย่างในภาษาที่จำเป็นอื่น ๆ รวมถึง Fortran, Modula-2 และ -3, Ada 95, C และ C ++ 11 เป็นค่าระดับที่สองในภาษาที่จำเป็นอื่น ๆ ส่วนใหญ่และค่าระดับที่สามใน Ada 83

  1. อะไรคือรากฐานทางคณิตศาสตร์สำหรับค่าระดับชั้นหนึ่ง / สอง / สามในภาษาโปรแกรม?

    คำศัพท์ทำให้ฉันนึกถึงตรรกะลำดับแรก / วินาที แต่มันเกี่ยวข้องกันหรือไม่

  2. สำหรับผมแล้วดูเหมือนว่าความแตกต่างระหว่างพวกเขาคือกรณีพิเศษที่สามารถใช้ค่าได้

    • ผ่านเป็นพารามิเตอร์
    • ส่งคืนจากรูทีนย่อยหรือ
    • กำหนดเป็นตัวแปร

    เหตุใดกรณีเฉพาะจึงมีความสำคัญในขณะที่ไม่ใช่กรณีอื่นที่ไม่ได้กล่าวถึง

ขอบคุณ


23
การแบ่งค่าออกเป็นชั้นหนึ่ง / ชั้นสองนั้นไร้ผลเหมือนกับการแบ่งภาษาเป็นกระบวนทัศน์ สิ่งที่คุณจะได้รับคือภาพรวมที่คลุมเครือ นี่ไม่ใช่วิธีการที่เหมาะสมในการทำความเข้าใจภาษาการเขียนโปรแกรม สิ่งที่สำคัญคือการทำความเข้าใจไวยากรณ์ภาษาสถิตยศาสตร์และพลศาสตร์ของภาษา แต่ใหญ่เกินไปที่จะแสดงความคิดเห็น
Gardenhead

3
นอกเหนือจาก: PL / ฉันจะเป็นตัวอย่างของฉลากเป็นชั้นหนึ่ง ใน PL / I คุณสามารถประกาศตัวแปรที่พิมพ์ไปที่ป้ายกำกับกำหนดรหัสสถานที่และข้ามไปได้ คุณยังสามารถส่งต่อเป็นพารามิเตอร์และสร้างอาร์เรย์ได้
Theraot

@Theraot: บางทีฉันจะออกเดทด้วยตัวเอง แต่ฉันเป็นคนเดียวที่เคยจัดการกับ GOTO ที่ได้รับมอบหมายและคำนวณใน FORTRAN หรือไม่ และไม่ฉันไม่ได้เขียน @ $%! รหัสฉันติดอยู่ re-engineering มัน
jamesqf

@jamesqf ฉันทราบดีว่ากำหนดให้ป้ายกำกับใน FORTRAN และ COBOL ไม่ฉันไม่ได้ใช้มัน ฉันไม่แน่ใจว่าจะจำแนกป้ายกำกับที่นั่นได้อย่างไร แต่สำหรับสิ่งที่ฉันอ่าน (ฉันมีคู่มือ) PL / ฉันไปไกลกว่านั้นและฉันมั่นใจว่าฉลากมีคุณภาพดี
Theraot

คำตอบ:


45

ไม่มีเลยและมันเป็นเรื่องที่ค่อนข้างง่าย

ความแตกต่างที่มีประโยชน์เพียงอย่างเดียวคือระหว่างชั้นหนึ่งและชั้นอื่น ๆ ทุกกรณีที่อยู่ในวงเล็บ "อื่น ๆ " มีชุดของกฎที่แตกต่างกันในแต่ละกรณีและรวมกันทั้งหมดเข้าด้วยกันโดยไม่เป็นประโยชน์ "เฟิร์สคลาส" หมายถึง "คุณไม่จำเป็นต้องค้นหากฎ" เป็นหลักและ "อื่น ๆ " คือ "คุณต้องเรียนรู้กฎ"

ตัวอย่างเช่นในฟังก์ชัน C ++ แต่ละฟังก์ชั่นเป็นค่าชั้นหนึ่งตราบใดที่พวกเขาไร้สัญชาติ ชุดโอเวอร์โหลดไม่ได้เป็น แต่แลมบ์ดาคือ ในฟังก์ชั่น C # มักจะเป็นค่าที่ดีที่สุด แต่มีบางกรณีที่น่าอึดอัดใจที่เกิดขึ้นเมื่อจัดการกับการอนุมานประเภทที่ป้องกันไม่ให้พวกเขาอยู่ในทุกกรณี


10
+1 แม้ว่าในบริบทของหนังสือเช่นProgramming Language Pragmaticsที่เปรียบเทียบโครงสร้างจำนวนมากในภาษาจำนวนมากและวิเคราะห์ความเหมือนและความแตกต่างและนัยในเชิงลึกฉันคิดว่าชวเลขแบบนี้มีประโยชน์ (อย่าเดินไปรอบ ๆ โดยคาดหวังว่าคนอื่นจะเข้าใจ "มือสอง" และ "มือที่สาม" เป็นสิ่งที่มีความหมายเฉพาะ)
ruakh

(เอ่อที่โดย "มือสอง" และ "มือที่สาม" ฉันแน่นอนหมายถึง "ชั้นสอง" และ "ชั้นสาม". :-P)
ruakh

3
หากคุณต้องการแลกเปลี่ยนกับฟังก์ชั่นมือสองคุณควรทำในภาษาที่ฟังก์ชั่นเป็นพลเมืองชั้นหนึ่ง ^^
5gon12eder

@ 5gon12eder: "ฟังก์ชั่นมือสอง" เป็นสิ่งที่คุณโทรจากห้องสมุดบุคคลที่สามใช่ไหม?
jamesqf

11

ฉันเห็นด้วยกับ DeadMG ความแตกต่างที่สำคัญคือระหว่างชั้นหนึ่งและ "ทุกอย่าง" อย่างไรก็ตามมีวิธีที่คุ้นเคยมากกว่าในการจำแนกความแตกต่าง

ค่าที่ดีที่สุดคือข้อมูลส่วนอื่น ๆ เป็นรหัส (พูดอย่างคร่าว ๆ : ฉันแน่ใจว่ามีข้อยกเว้น แต่นี่เป็นการประมาณที่ดีมากสำหรับภาษาในโลกแห่งความเป็นจริง)

ในบางภาษาคุณสามารถใช้รหัสเป็นข้อมูลได้ ภาษาที่ใช้งานได้มีชื่อเสียงในเรื่องนี้: บางภาษาให้คุณเปลี่ยนรหัสของโปรแกรมในขณะที่กำลังทำงานอยู่ (พื้นฐานของการเขียนโปรแกรมทางพันธุกรรม )

ภาษาเช่น C และ C ++ ช่วยให้คุณสามารถระบุที่อยู่ของฟังก์ชั่น: ในขณะที่คุณไม่สามารถแก้ไขได้คุณสามารถส่งผ่านฟังก์ชั่นเป็นพารามิเตอร์ไปยังฟังก์ชั่นอื่น ๆ c ++ นอกจากนี้ยังมีน้ำตาลประโยคของfunctors ความคิดที่มีคือการสร้างวัตถุทั้งหมดที่ปรากฏบนพื้นผิวดูเหมือนจะทำงานเหมือนฟังก์ชั่นและสามารถส่งผ่านไปรอบ ๆ ราวกับว่ามันเป็นข้อมูล อะไรคือสิ่งที่ต่ำกว่าระดับของค่าสามารถถือว่าเป็นค่าชั้นหนึ่ง

ศาสตร์ผมคิดว่าวิธีที่ดีที่สุดคือการคิดของโปรแกรมของAST โดยทั่วไปแล้วโทเค็นแต่ละประเภทจะมีประเภทที่เฉพาะเจาะจงซึ่งอาจหรืออาจเข้ากันไม่ได้กับประเภทอื่น ๆ คิดว่าL-ค่า R-value และระเบียบทั้งหมดอื่น ๆ ของประเภทค่าใน C จากนั้นเพิ่มคำหลักสัญลักษณ์ที่เป็นฟังก์ชัน ฯลฯ ค่าเหล่านี้บางค่าอาจเป็นค่าที่หนึ่งสองหรือสามขึ้นอยู่กับภาษา

ฉันไม่แน่ใจว่าการรู้คุณค่า "ชั้นเรียน" เป็นสิ่งสำคัญทั้งหมดยกเว้นในสภาพแวดล้อมทางวิชาการ ในโลกแห่งความจริงสิ่งสำคัญที่ควรรู้คือวิธีที่คุณสามารถส่งรหัสไปรอบ ๆ จัดการกับข้อมูลได้เช่น functors, lambdas / closures, pointers function เป็นต้น


2
ตัวอย่างของค่าที่ไม่ใช่รหัสไม่ใช่ระดับชั้น: Lua มี..."ตัวแปร" พิเศษที่ใช้ในการแสดงถึงพารามิเตอร์ฟังก์ชั่น vararg คุณสามารถใช้มันในหลาย ๆ นิพจน์ราวกับว่ามันเป็นรายการค่า (เช่นprint(...)หรือlocal args = {...}) แต่มีบางสิ่งที่คุณไม่สามารถทำได้เช่นอ้างถึงมันในการปิด ( function(...) return function() return ... end end)
พันเอกสามสิบสอง

8

Denotational Semanticsจัดเตรียมฐานทางคณิตศาสตร์สำหรับการอธิบายวิธีการทำงานของค่าและตัวแปรในภาษาการเขียนโปรแกรม มันได้รับการอธิบายอย่างดีใน Computer Sci Degree ของฉันว่าฉันได้คะแนนสูงสุดในการสอบ Denotational Semantics จากนั้นลืมมันไปส่วนใหญ่และไม่จำเป็นต้องใช้มันในชีวิต 20 ปีในฐานะโปรแกรมเมอร์

คุณสามารถเลือกที่จะใช้พื้นฐานทางคณิตศาสตร์ที่กำหนดไว้อย่างดีหรือคุณสามารถใช้คำศัพท์ที่ไม่เป็นทางการเช่น“ fi rst-class status” ฉันจะได้เรียนรู้มากขึ้นถ้าหลักสูตรเป็นพื้นฐานของการเขียนโปรแกรมภาษาเชิงปฏิบัติของสก็อตต์ แต่ต้องใช้คณิตศาสตร์อย่างเป็นทางการสำหรับคนที่กำลังจะทำปริญญาเอกในการออกแบบภาษาโปรแกรม

หากคุณอ่านข้อกำหนดสำหรับภาษาการเขียนโปรแกรมส่วนใหญ่คุณจะสังเกตเห็นความไม่ชัดเจนของ Denotational Semantics แต่ภาษาที่ได้รับการออกแบบมาอย่างดีที่สุดมีบางคนในทีมที่มีความเชี่ยวชาญในการออกแบบภาษาการเขียนโปรแกรม

ดังนั้น Michearl Scott จึงใช้คำศัพท์ที่ไม่เป็นทางการซึ่งมีความสัมพันธ์กับคณิตศาสตร์อย่างเป็นทางการในขณะที่นำเสนอหัวข้อในลักษณะที่โปรแกรมเมอร์ส่วนใหญ่ได้รับประโยชน์ คำศัพท์ของเขาไม่ได้ถูกใช้โดยคนอื่นดังนั้นจึงไม่มีประโยชน์สำหรับการสื่อสาร แต่มันให้พื้นฐานที่ดีกับคำถามที่คุณควรถามเมื่อเห็นภาษาการเขียนโปรแกรมใหม่เป็นครั้งแรก

โปรดทราบว่า Michael L. Scott เป็นนักวิจัยชั้นนำใน Computer Sci ดังนั้นจะเข้าใจและมีความสุขมากในการใช้คณิตศาสตร์อย่างเป็นทางการ แต่เช่นเดียวกับนักวิจัยที่ดีที่สุดเขามีทักษะในการอธิบายการประยุกต์ใช้การวิจัยกับพวกเราที่เหลือ


ขอบคุณ หนังสือเล่มใดที่ใช้ในชั้นเรียนของคุณ คุณแนะนำหนังสือเล่มไหนตอนนี้ ฉันเป็นผู้เรียนรู้ด้วยตนเอง
ทิม

@Tim ฉันได้เรียนเมื่อ 20 ปีที่แล้ว! ฉันคาดหวังว่าหนังสือของ Michearl Scott เป็นหนังสือที่ดีที่สุดเล่มหนึ่งและจะครอบคลุมมากกว่าที่คุณต้องการเว้นแต่คุณจะทำการวิจัยระดับปริญญาเอก
เอียน

3

ไม่คำว่า "แรก" ใน "ชั้นหนึ่ง" และ "ลำดับที่หนึ่ง" หมายถึงสิ่งต่าง ๆ

แต่ใช่แนวคิดของ "ชั้นหนึ่ง" และ "ลำดับแรก" เกี่ยวข้องกัน พวกเขาทั้งสองเกี่ยวกับการจำแนกแนวคิดที่ว่าภาษาสามารถอธิบายภาษาที่สามารถนามธรรม

แนวคิดคือชั้นหนึ่งหากกลไกการคิดเชิงนามธรรมของภาษาสามารถทำให้เป็นนามธรรมได้มากกว่าแนวคิดนั้น

ตัวอย่างเช่นภาษาการเขียนโปรแกรม Java สามารถอธิบายจำนวนเต็มและกลไกปกติทั้งหมดสำหรับการทำให้เป็นนามธรรมเหนือจำนวนเต็ม (ยอมรับว่าเป็นพารามิเตอร์วิธีการส่งคืนเป็นผลการทำงานเก็บไว้ในโครงสร้างข้อมูล ... ) ทำงานสำหรับจำนวนเต็ม

แนวคิดคือการสั่งซื้อครั้งแรกถ้ามันไม่สามารถใช้ในการนามธรรมเหนือตัวเอง

ตัวอย่างเช่นอีกครั้งใน Java เราสามารถใช้วิธีการนามธรรมเหนือสิ่งบางอย่าง แต่เราไม่สามารถใช้เมธอดเพื่อสรุปผ่านเมธอดได้เนื่องจากชื่อเมธอดไม่สามารถส่งผ่านเป็นพารามิเตอร์เมธอด สิ่งนี้แตกต่างกันใน JavaScript ซึ่งคุณสามารถใช้เครื่องหมายวงเล็บในการเข้าถึงคุณสมบัติของวัตถุด้วยชื่อของมันเป็นสตริงและคุณสามารถสรุปผ่านสตริงได้

แนวคิดคือลำดับที่สองถ้ามันสามารถนำมาใช้เป็นนามธรรมในการใช้งานลำดับแรกของตัวเอง แต่ไม่เกินลำดับที่สองใช้

ตัวอย่างเช่นใน Java คุณสามารถใช้ Generics เพื่อทำให้เป็นนามธรรมมากกว่าชนิด (ในclass Foo<T> { public List<T> content; }) อย่างไรก็ตามคุณไม่สามารถใช้ข้อมูลทั่วไปเพื่อสรุปผ่าน Generics (เหมือนในclass Bar<T> { public T<Int> content; }) นี่คือความแตกต่างใน Scala

แนวคิดคือลำดับที่สามถ้ามันสามารถนำมาใช้เพื่อนามธรรมมากกว่าการสั่งซื้อครั้งแรกและการสั่งซื้อครั้งที่สองของตัวเอง แต่ไม่เกินการใช้งานลำดับที่สอง

และอื่น ๆ

ในที่สุดแนวคิดก็จะมีความเป็นระเบียบสูงขึ้นหากสามารถนำมาใช้เพื่อนามธรรมในการใช้ประโยชน์ของมันเองโดยพลการ

สรุป: หากคุณลักษณะที่เป็นนามธรรมเป็นอันดับหนึ่งก็เป็นลำดับที่สูงกว่าเช่นกัน และถ้าคุณสมบัติที่เป็นนามธรรมเป็นลำดับแรกมันจะไม่สามารถเป็นที่หนึ่งได้


1
คุณสามารถทำได้List<List>ใน Java บางทีคุณสามารถอธิบายได้ว่าคุณหมายถึงอะไรกับส่วนนั้น?
Polygnome

1
จุดดี. class Foo<A> { A<Int> ... }ผมหมายถึง: นั่นคือฉันหมายถึงการใช้พารามิเตอร์ประเภททั่วไปเป็นคลาสทั่วไป จากนั้นFoo<List>จะยกตัวอย่างการA<Int> List<Int>ใน Java นั้นเป็นไปไม่ได้ ฉันจะพยายามแก้ไขในคำตอบในภายหลัง
Toxaris

แน่นอนว่าเป็นไปไม่ได้
Polygnome

ตอนนี้ฉันแทนที่List<List>ตัวอย่างที่ทำให้เข้าใจผิด ขอบคุณที่ชี้ปัญหา @Polygnome
Toxaris

@Toxaris ฉันคิดว่านี่เป็นคำศัพท์เฉพาะที่คุณสร้างขึ้นเอง 'แนวคิด' ไม่ใช่ลำดับแรกหรือลำดับที่สองตรรกะเชิงปริมาณคือ
เส้นทาง Miles Rout

2

อะไรคือรากฐานทางคณิตศาสตร์สำหรับค่าระดับชั้นหนึ่ง / สอง / สามในภาษาโปรแกรม?

ไม่มีที่ฉันรู้

คำศัพท์ทำให้ฉันนึกถึงตรรกะลำดับแรก / วินาที แต่มันเกี่ยวข้องกันหรือไม่

ไม่ได้จริงๆ

"คลาส" ขององค์ประกอบภาษาการเขียนโปรแกรมเป็นเพียงวิธีคิดสั้น ๆ เกี่ยวกับคำถามว่าผู้ใช้ภาษาของฉันต้องการจัดการกับทางโปรแกรมอย่างไร ยกตัวอย่างเช่น C # จะช่วยให้คุณชุดสมบูรณ์ของการดำเนินงานในการจัดการค่า , ชุดสมบูรณ์น้อยกว่าวิธีการที่จะจัดการกับประเภทและการดำเนินงานที่ไม่จัดการกับป้าย

อย่างไรก็ตามสัญชาตญาณของคุณว่ามีการเชื่อมต่อที่นี่ไม่ได้หายไปอย่างสิ้นเชิง มีการเปรียบเทียบที่จะทำจากลอจิกลำดับแรกไปยังการเขียนโปรแกรมตามขั้นตอนและจากลอจิกลำดับสูงไปจนถึงการเขียนโปรแกรมเชิงฟังก์ชัน ตรรกะลำดับแรกเป็นเรื่องเกี่ยวกับการจัดการตรรกะของค่า ขั้นตอนการเขียนโปรแกรมเชิงเป็นเรื่องเกี่ยวกับการจัดการค่าทางโปรแกรม ลำดับตรรกะที่สูงขึ้นเป็นเรื่องเกี่ยวกับการจัดการเชิงตรรกะของงบของตรรกะการเขียนโปรแกรมการทำงานเป็นเรื่องเกี่ยวกับการจัดการการเขียนโปรแกรมของฟังก์ชั่น

เหตุใดกรณีเฉพาะจึงมีความสำคัญในขณะที่ไม่ใช่กรณีอื่นที่ไม่ได้กล่าวถึง

คุณต้องขอคำตอบที่ชัดเจนจากผู้เขียน

ฉันจะไม่ได้วางสายเกินไปกับแนวคิดเรื่อง "คลาส" นี้ มันไม่ได้เป็นสิ่งที่กำหนดอย่างเป็นทางการ เป็นการสรุปที่นักออกแบบภาษาใช้เพื่อพูดคุยเกี่ยวกับสิ่งต่าง ๆ ที่สามารถจัดการได้ทางโปรแกรม


2

“ คุณค่าชั้นหนึ่ง” ในบริบทนี้เป็นคำศัพท์มาตรฐานในทฤษฎีภาษาโปรแกรม ค่าชั้นหนึ่งเป็นสิ่งที่สามารถจัดการได้เป็นค่าปกติในภาษาสิ่งที่สามารถคำนวณได้ที่รันไทม์ แน่นอนว่านั่นเป็นคำนิยามซ้ำซากจนกระทั่งคุณได้กำหนดซีแมนทิกส์สำหรับภาษาจากนั้นค่าก็คือสิ่งที่ความหมายกำหนดให้เป็นค่า จุดประสงค์ของแนวคิดคือการระบุสิ่งที่สามารถจัดการได้โดยตรงเมื่อเทียบกับการเข้าถึงทางอ้อมเท่านั้น

ตัวอย่างเช่นในเกือบทุกภาษาการเขียนโปรแกรมจำนวนเต็มเครื่องที่มีขนาด จำกัด (เช่นจำนวนเต็ม 8 บิตหรือจำนวนเต็ม 32 บิตหรือจำนวนเต็ม 64 บิตเป็นต้น) เป็นค่าชั้นหนึ่ง คุณสามารถเก็บพวกมันไว้ในตัวแปรส่งผ่านพวกมันและกลับไปที่ฟังก์ชั่น ฯลฯ ในภาษาส่วนใหญ่ แต่ไม่ใช่ภาษาระดับต่ำเช่นชุดประกอบและ C สตริงเป็นค่าชั้นหนึ่ง - แต่ใน C พวกเขาไม่ใช่คุณเท่านั้น รับพอยน์เตอร์ไปยังสตริง ใน C สตริงและอาร์เรย์ไม่ใช่ค่าของคลาส: ตัวอย่างเช่นคุณไม่สามารถส่งผ่านอาร์เรย์ไปยังฟังก์ชันได้คุณไม่สามารถกำหนดอาร์เรย์ให้กับตัวแปรอาร์เรย์เป็นต้นใน C ฟังก์ชันไม่ใช่ค่าชั้นหนึ่ง อย่างใดอย่างหนึ่ง: คุณไม่สามารถจัดเก็บฟังก์ชันในตัวแปรเพียงตัวชี้ไปยังฟังก์ชัน ในทางตรงกันข้ามสตริงและฟังก์ชั่นเป็นค่าที่ดีที่สุดในภาษาการเขียนโปรแกรมระดับสูงส่วนใหญ่: คุณสามารถเก็บไว้ในสตริง ฯลฯ

ตัวอย่างของแนวคิดที่ไม่ได้เป็นที่หนึ่งในหลายภาษาการเขียนโปรแกรมที่ออกแบบมาเพื่อรวบรวมเป็นประเภท ในภาษาเช่น C หรือ Java ประเภทอาศัยอยู่ในเวลารวบรวมคุณไม่สามารถจัดการพวกเขาโดยใช้การสร้างภาษา (Java ยังมีระบบชนิดไดนามิกตามคลาส; คลาสเป็นค่าของคลาสผ่านการสะท้อน) ในทางกลับกันภาษาเช่น Python มีtypeฟังก์ชันที่ส่งคืนค่าที่แสดงถึงประเภทของอาร์กิวเมนต์

การปฏิเสธของ“ ค่าชั้นหนึ่ง” ในคำศัพท์มาตรฐานคือ“ ไม่ใช่ค่าชั้นหนึ่ง” คำว่า "ค่าระดับสอง" ไม่ได้ใช้กันทั่วไปและ "ค่าระดับสาม" ยิ่งน้อย อย่าคาดหวังว่าจะเห็นพวกเขานอกหนังสือเล่มนี้ ไม่มีพื้นฐานสำหรับการนิยาม“ วินาที” ว่า“ สามารถส่งผ่านเป็นพารามิเตอร์” และ“ สาม” เป็น“ ไม่สามารถส่งผ่านเป็นพารามิเตอร์” ได้ไม่มีระดับของสิ่งต่าง ๆ ที่สามารถระบุหมายเลขได้อย่างมีความหมาย ภาษาน้อยมากที่สร้างความแตกต่างระหว่างค่าที่สามารถส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชั่นและค่าที่สามารถกำหนดให้กับตัวแปรดังนั้นจึงไม่มีประโยชน์ในการกำหนดชื่อสำหรับแนวคิดนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.