คณิตศาสตร์เกี่ยวข้องกับการเขียนโปรแกรมอย่างไร [ปิด]


89

ฉันเพิ่งเริ่มต้นอนุปริญญาด้านการพัฒนาซอฟต์แวร์ ตอนนี้เรากำลังเริ่มต้นด้วย Java พื้นฐานและเช่นนั้น (จากด้านล่างคุณอาจจะพูด) ซึ่งก็ดีฉันไม่มีประสบการณ์การเขียนโปรแกรมนอกเหนือจากการรู้วิธีทำ "Hello World" ใน Java

ฉันได้ยินอยู่เสมอว่าคณิตศาสตร์เกี่ยวข้องกับการเขียนโค้ด แต่มันเป็นอย่างไร ตัวอย่างทั่วไปอะไรที่จะแสดงให้เห็นว่าคณิตศาสตร์และการเขียนโปรแกรมไปด้วยกันหรือพึ่งพาซึ่งกันและกัน?

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


49
การเขียนโปรแกรมคือคณิตศาสตร์ en.wikipedia.org/wiki/Discrete_mathematics
SK-logic

25
@Dave นั่นเป็นเหตุผลที่ฉันให้ลิงค์ในความคิดเห็นไม่ใช่คำตอบ
SK-logic

7
@FiascoLabs ยิ่งไปกว่านั้น - โครงสร้างภาษาและตรรกะก็เป็นโดเมนย่อยของคณิตศาสตร์ การเขียนโปรแกรมไม่ได้เป็นอะไรนอกจากคณิตศาสตร์ประยุกต์
SK-logic

19
ในบันทึกย่อที่ไม่เกี่ยวข้องเริ่มต้นด้วย Java ไม่ใช่ "ขวาจากด้านล่าง"
Matt H

5
@ CharlesE.Grant นักเรียนคณิตศาสตร์จำนวนมากทำแบบเดียวกัน (และยังคงผ่านการทดสอบ)
SK-logic

คำตอบ:


137

ก่อนอื่น: ฉันเป็นนักคณิตศาสตร์ - เป็นมืออาชีพ (ที่ฉันได้รับเงินสำหรับการทำคณิตศาสตร์) ฉันไม่ใช่โปรแกรมเมอร์ ฉันจะเขียนโปรแกรมบางอย่าง แต่แน่นอนมากเกี่ยวกับความหลากหลายของลัทธิ Cargo (ดูความคิดเห็นแรกไปที่https://tex.stackexchange.com/q/451/86และการตอบสนองของฉัน) และไม่มีการเรียงลำดับใดที่จะนำฉันมาที่นี่ ไซต์ (จริง ๆ แล้วฉันลงทะเบียนที่นี่เพื่อโพสต์คำตอบนี้หลังจากเห็นลิงก์ในห้องสนทนา TeX)

สรุปคำตอบของฉันคือคณิตศาสตร์คือการเขียนโปรแกรม

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

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

ที่ฉันต้องการเริ่มต้นด้วยความคิดเห็นในคำถามหลัก:

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

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

นี่คือสิ่งที่คณิตศาสตร์ช่วยฉันเมื่อฉันเขียนโปรแกรม:

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

  2. มุมมองถ้าฉันสามารถเลือกสิ่งเดียวที่นักเรียนของฉันทุกคนต้องเรียนรู้สิ่งนี้ก็คือ: ความสามารถในการเปลี่ยนมุมมองของคนเพื่อให้เหมาะกับปัญหา เรามักจะปฏิบัติต่อสิ่งนี้ในพีชคณิตเชิงเส้นด้วยสูตรการเปลี่ยนแปลงพื้นฐาน (ซึ่งนำไปสู่เมทริกซ์ที่น่ากลัวและภาวะแทรกซ้อนที่น่ากลัว) แต่มันก็มีประโยชน์มากกว่านั้น ที่ใจมันเป็นความคิดที่ว่าเพราะมีบางสิ่งที่มอบให้คุณในแบบที่ไม่ต้องเป็นแบบที่คุณทำงานด้วย สิ่งนี้แยกมุมมองของสิ่งต่าง ๆ ออกจากวิธีการนำเสนอ สิ่งนี้สามารถนำไปใช้ได้จริงอย่างยิ่งยวด: มันคือทั้งหมดที่เกี่ยวกับการทำสิ่งที่มีประโยชน์หรือมีประสิทธิภาพ. ถ้าฉันมีรายชื่อของเวกเตอร์และมันมีประสิทธิภาพมากขึ้นเพื่อเก็บไว้เป็นรายการของ x พิกัดและรายชื่อของ Y-พิกัดที่ดังนั้นไม่ว่าจะเป็น

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

ฉันสามารถไปต่อได้ แต่สิ่งเหล่านี้คือสิ่งที่เกิดขึ้นในใจ

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

จริงๆแล้วฉันใช้ "คณิตศาสตร์จริง" บางอย่างในโปรแกรมของฉัน เมื่อเร็ว ๆ นี้ฉันได้เขียนโปรแกรมสำรวจรูปร่างสามมิติที่สนุกซึ่งเกี่ยวข้องกับการใช้คณิตศาสตร์เพื่อคำนวณการคาดการณ์และการเปลี่ยนแปลงอื่น ๆ ที่ฉันต้องใช้กับข้อมูลของฉัน ฉันถูกขบขันอย่างอ่อนโยนเพื่อค้นหาตัวเองเขียนรหัส quaternions! แต่แน่นอนว่าคณิตศาสตร์ที่เกี่ยวข้องนั้นเล็กน้อยเมื่อเทียบกับคณิตศาสตร์ที่ฉันทำเมื่อฉันทำงาน มันเป็นสิ่งที่ "หลังซอง" คณิตศาสตร์ประเภทนั้นฉันเห็นด้วยกับความรู้สึกที่คุณหยิบมันขึ้นมาเมื่อคุณต้องการมันและถ้าคุณต้องการบางสิ่งที่ซับซ้อนกว่าที่คุณสามารถหาได้บน Wikipedia คุณก็จะพบว่านักคณิตศาสตร์ตัวจริงทำเพื่อคุณ อย่างไรก็ตามเพื่อให้คุณสามารถหยิบมันเมื่อคุณต้องการมันแล้วคุณต้องเรียนรู้บางสิ่งบางอย่าง. สิ่งนั้นอาจไม่ใช่สิ่งที่คุณเคยใช้จริง ๆ แต่เมื่อได้เรียนรู้ว่ามีบางสิ่งที่ทำให้คุณสามารถเลือกสิ่งที่คุณใช้จริงในภายหลังได้ง่ายขึ้น ดังนั้นนี่คือที่ฉันไม่เห็นด้วยกับ Coder: คุณจำเป็นต้องเรียนรู้คณิตศาสตร์บางอย่างถ้าคุณจะใช้คณิตศาสตร์ใด ๆและคุณต้องเรียนรู้จากด้านคณิตศาสตร์ (ซึ่งไม่ได้หมายถึงการพิสูจน์ทฤษฎีบทโดยวิธี)

และในที่สุดก็ถึง "คณิตศาสตร์คือการเขียนโปรแกรม" คุณสามารถเรียนรู้สิ่งเหล่านี้ทั้งหมดจากการเป็นโปรแกรมเมอร์ที่ดี และถ้าคุณได้เรียนรู้สิ่งเหล่านี้คุณจะได้พบกับคณิตศาสตร์ง่ายมากเพราะคุณจะเข้าใจว่าเมื่อเราพูดคุยเกี่ยวกับเวกเตอร์ในปริภูมิเวกเตอร์แล้วมันเป็นเพียงตัวอย่างของการเรียนด้วยVectorซึ่งหมายความว่าเราสามารถทำทุกสิ่งที่Vectorไม่ให้ อินสแตนซ์นั้น: เพิ่มลบสเกลและอื่น ๆ นั่นเป็นเหตุผลที่ฉันชอบสอนคณิตศาสตร์ให้โปรแกรมเมอร์ แต่การพูดเป็นนักคณิตศาสตร์ฉันจะบอกว่าก่อนของเหล่านี้ "นามธรรม" ง่ายต่อการเรียนรู้ในวิชาคณิตศาสตร์มากกว่าในการเขียนโปรแกรมเพราะคณิตศาสตร์คือการแสวงหาความเป็นนามธรรม เมื่อใดก็ตามที่เราเห็นพฤติกรรมบางอย่างการฝึกอบรมของเรามักจะถามว่า "มันเกี่ยวกับสิ่งนั้นที่ทำให้มันทำงานอย่างไรถ้าฉันทำสิ่งอื่นที่คล้ายกันมันจะทำงานในลักษณะเดียวกันหรือไม่ ฉันจะต้องยอมแพ้เพื่อหยุดทำแบบนั้นเหรอ? " (การทำเช่นนี้กับสิ่งที่นำไปสู่สุดขีดใน "คณิตศาสตร์ตะขาบ" - ค้นหาคำศัพท์) แต่เราไม่ทำสิ่งนี้กับวัตถุ "โลกแห่งความจริง" (ไม่ว่าพวกเขาจะเป็นอะไร) เราทำสิ่งนี้กับสิ่งที่เป็นนามธรรมแล้ว

สิ่งนี้ยาวพอแล้วดังนั้นขอให้ฉันสนิทกับมุขตลกนักคณิตศาสตร์คลาสสิกคนหนึ่ง:

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


เพิ่ม 2012-03-2

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

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

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

  1. คณิตศาสตร์เป็นเรื่องของสมการและสูตร ดังนั้นจึงไม่จำเป็นต้องศึกษาเพราะวิกิพีเดียมีอยู่ (นี่เป็นสิ่งที่ตรงกันข้ามกับความท้าทายที่ไม่มีหลักฐานของออยเลอร์ต่อ Diderot )

  2. คณิตศาสตร์เป็นเรื่องเกี่ยวกับทฤษฎีบทและคำจำกัดความ ดังนั้นจึงไม่จำเป็นที่จะต้องศึกษาเพราะโปรแกรมไม่เคยพิสูจน์อะไรเลย (ซึ่งเป็นเรื่องเกี่ยวกับการเข้าใจผิดอย่างสมบูรณ์เหมือนกับ ...

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

ข้างต้นฉันอธิบายตัวเองในฐานะโปรแกรมเมอร์ลัทธิขนส่งสินค้า ฉันพนันว่าพวกคุณส่วนใหญ่มักจะหัวเราะคิกคักกับตัวเองและคิดว่า "อ๋อใช่ฉันก็เลยรู้ว่ารายการของคุณเป็นอย่างไร คุณอาจรู้สึกพอใจในตัวเองและเหนือกว่า (แม้ว่าฉันแน่ใจว่าคุณรู้สึกไม่ดีเกี่ยวกับความรู้สึกสบายใจและเหนือกว่า)

สิ่งที่ฉันได้อธิบายไปแล้วข้างต้นคือ Cargo Cult Mathematics

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

อย่างไรก็ตามสิ่งที่สำคัญที่สุดคือคุณควรเรียนรู้จากนักคณิตศาสตร์ ทำไมเป็นเช่นนั้น นี่เป็นการเปรียบเทียบ ภาษาที่ฉันเก่งที่สุดคือ TeX (พูดได้ทั้งหมดจริงๆ!) ทีนี้สมมติว่าฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ TeX เล็กน้อยและมันเกิดขึ้นเมื่อ Don Knuth อยู่ในเมืองและเสนอที่จะให้บทเรียนบางอย่างเกี่ยวกับ TeX หรือฉันสามารถอ่านเกี่ยวกับมันใน Wikipedia หรืออาจจะเป็น Perl และ Larry Wall หรือ C # (นั่นคือสิ่งที่ใช่หรือไม่) และ Jon Skeet อาจเป็นไปได้ว่าคนเหล่านี้ไม่ใช่ครูที่ดีที่สุดแต่พวกเขาก็ควรทำในสิ่งที่พวกเขารู้!

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

มีจุดกึ่งกลางระหว่างการค้นหาสมการบนวิกิพีเดียและการพิสูจน์การคาดคะเนของPoincaréเช่นเดียวกับ - เพื่ออ้างถึงความโศกเศร้าของล็อคฮาร์ท - มีพื้นกลางระหว่าง "ฉันไม่ค่อยรู้เรื่องศิลปะมากนัก แต่ฉันรู้ว่าฉันชอบอะไร" และเป็นโมเนท์และระหว่าง "คีย์" ใดก็ได้ "อยู่ที่ไหน และการเป็น Don Knuth หากคุณยังอยู่ในมหาวิทยาลัยคุณมีโอกาสที่จะเรียนรู้จากคนที่เป็นผู้เชี่ยวชาญในสาขาของตนเองและใคร - ด้วยเหตุผลบางอย่าง - เต็มใจที่จะใช้เวลาอธิบายให้คุณ


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

  1. ทำความเข้าใจกับตัวแปร ผู้คนมากมายสับสนด้วยคำพูดง่ายๆเช่น "ให้ n เป็นจำนวนธรรมชาติ ... " หรือ "ให้ epsilon> 0" มีสถานที่ในวิชาคณิตศาสตร์ที่สำคัญในการจำขอบเขตของตัวแปร สิ่งเหล่านี้เป็นเรื่องธรรมดาในการเขียนโปรแกรม เรียนรู้การแปลคำสั่งทางคณิตศาสตร์เป็นโปรแกรมแล้วคุณจะพบว่ามันง่ายกว่ามากในการติดตามว่ามีอะไรเกิดขึ้น

  2. ลักษณะของการพิสูจน์ หากคุณเคยเขียนบททดสอบหรือเขียนโปรแกรมเพื่อให้คนอื่นใช้งานคุณจะเข้าใจถึงหลักสำคัญของการพิสูจน์ เมื่อคุณทำเช่นนั้นคุณจะต้องรู้ว่าสิ่งที่ผู้ใช้ใส่คุณสามารถจัดการกับมันได้ (ใส่การอ้างอิง xkcd ที่จำเป็น) นั่นคือหลักฐานทั้งหมด! การสาธิตว่าสิ่งที่ "ผู้ใช้ / จักรวาล" ใส่ไว้คำสั่งจะถือ นักทดลองจะเอนตัวไปที่ "ถ้ามันทำงานภายใต้สถานการณ์ปกติมันเป็นเรื่องจริง" แต่โปรแกรมเมอร์รู้ว่ามีเด็กคนนั้นที่จะลอง Alt + G + Shift + ÅØÆเพียงเพื่อดูว่าเกิดอะไรขึ้น

  3. แห้ง. ขออภัยที่จะทำลายสิ่งนี้ให้คุณ แต่เราคิดค้นมันไม่ใช่คุณ เราได้รับ "ไม่ทำซ้ำตัวเอง" มาเป็นพันปี นั่นเป็นเหตุผลที่ผมมีสำเนาขององค์ประกอบของ Euclid บนชั้นวางของฉันและมันยังมีประโยชน์

และยังมีอีกมากมาย ถ้าฉันรู้เพิ่มเติมเกี่ยวกับการเขียนโปรแกรมฉันจะเขียนหนังสือชื่อ "Mathematics for Programmers" โดยมีจุดประสงค์ที่จะไม่สอน "คณิตศาสตร์ที่โปรแกรมเมอร์ควรรู้" แต่ "คณิตศาสตร์ที่ทุกคนควรรู้ แต่เหมาะสำหรับโปรแกรมเมอร์" . แต่ฉันอาจไม่เคยรู้เกี่ยวกับการเขียนโปรแกรมมาเขียนเลยเว้นแต่ว่ามีบางคนเสนอที่จะร่วมมือกับฉัน!


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


19
นี่เป็นหนึ่งในคำตอบที่ดีที่สุดที่ฉันเคยอ่านใน SE BTW มีเป็นหนังสือที่ยิ่งใหญ่ของ "คณิตศาสตร์สำหรับโปรแกรมเมอร์"; มันเรียกว่าConcrete Mathematicsและร่วมเขียนโดยผู้เขียนของ TeX, Donald Knuth ฉันเพิ่งได้รับสำเนาและมันวิเศษมาก ฉันรู้สึกเหมือนผกผันของคุณ ฉันจริงจังกับการเขียนโปรแกรมเมื่อฉันตระหนักว่าวิธีที่ดีที่สุด (สำหรับฉัน) ที่จะเข้าใจแนวคิดในวิชาคณิตศาสตร์คือการเขียนโปรแกรมเพื่อทำสิ่งนั้นให้ฉัน แน่นอนแล้วฉันต้องการใช้โปรแกรมแทนการคำนวณการท่องจำด้วยมือและครูคณิตศาสตร์ของฉันไม่ชอบ
Jason Lewis

เพื่อน +100 สำหรับสิ่งนั้น
Barry Brown

2
ลงทะเบียนเพียงเพื่อโหวตสิ่งนี้
leo

เผง คุณไม่สามารถโปรแกรมได้ดีหากปราศจากความคิดเชิงวิเคราะห์ที่คณิตศาสตร์สอนคุณ
Fiasco Labs

1
มีหนังสือที่ดีเกี่ยวกับคณิตศาสตร์ของการเขียนโปรแกรม (ดูที่การเขียนโปรแกรมทางคณิตศาสตร์)?
qed

27

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

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


6
1) ไม่มีอะไรผิดปกติกับ singletons per se, 2) ทฤษฎีข้อมูลอัลกอริทึมภาษาทางการและซีแมนติคเกี่ยวกับ denotational นั้นเกี่ยวข้องโดยตรงกับสิ่งง่าย ๆ เหล่านั้นที่คุณให้ความสนใจด้วยเหตุผลบางประการ โดยทั่วไป)
SK-logic

19
ประสบการณ์ของคุณจะต้อง จำกัด อยู่บ้าง Singletons เป็นสิ่งที่จำเป็นและหลีกเลี่ยงไม่ได้ตราบใดที่พวกมันเป็นส่วนหนึ่งของแบบจำลองโดเมน และวิธีการสร้างแบบจำลองโดเมนเป็นปัญหาทางคณิตศาสตร์ไม่มีอะไรเพิ่มเติม และใช่ผู้ที่ไม่รู้ในทฤษฎีภาษาทางการกำลังสร้างแบบจำลองที่น่ากลัวและภาษาที่น่ากลัว
SK-logic

10
@dave: อันตรายในวิธีการนั้นคือทุกคนสามารถเบี่ยงคุณออกจากตำแหน่งที่เหมาะสมและมีเหตุผลได้ดีโดยการระบุสิ่งที่แตกต่างอย่างดุเดือดไม่ว่าโง่เพียงใด การหาค่าเฉลี่ยไม่ใช่สิ่งทดแทนที่มีประโยชน์สำหรับการประเมินข้อโต้แย้ง
Michael Borgwardt

4
@ SK-logic: เป็นไปได้ไหมที่คุณสองคนกำลังพูดถึงแนวคิดที่แตกต่างกันว่า "Singleton" คืออะไร? สำหรับฉันแล้วดูเหมือนว่า SK-logic กำลังพูดถึงแนวคิดที่เป็นนามธรรมของการมีเพียงอินสแตนซ์เดียวของเอนทิตีบางอย่างในระบบซึ่งบางครั้งก็เป็นสิ่งที่ต้องการ น่าเสียดายที่แนวคิดเชิงนามธรรมนี้มีการเชื่อมโยงอย่างใกล้ชิดกับรายละเอียดการปฏิบัติที่ไม่ดีอย่างน่ากลัวของการมีวิธีการผลิตสแตติกสาธารณะเนื่องจากหนังสือ GoF ให้ตัวอย่างว่าการเข้าถึงซิงเกิลดังกล่าวได้อย่างไร
Michael Borgwardt

5
โปรดอย่าอภิปรายนอกหัวข้อมากไปกว่าSingtons
mattnz

20

คณิตศาสตร์และการเขียนโปรแกรมมีความเกี่ยวข้องในสองวิธี

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

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


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

6
@DeadMG มันเป็นไปไม่ได้สำหรับโปรแกรมที่กำหนดเอง โปรแกรมที่ได้รับสามารถพิสูจน์ได้อย่างดีว่าจะยุติหรือไม่ยุติในบางกรณี
Luc Danton

6
@DeadMG นั่นเป็นความเข้าใจผิดที่พบบ่อยของปัญหาการหยุดงาน ปัญหาการหยุดชะงักไม่ได้บอกว่าคุณไม่สามารถพิสูจน์ได้ว่าโปรแกรมใดโปรแกรมหนึ่งหยุดทำงานหรือไม่มันบอกว่าไม่มีอัลกอริทึมหรือข้อพิสูจน์เดียวที่สามารถนำไปใช้กับโปรแกรมทั้งหมดเพื่อตัดสินใจว่าจะหยุดหรือไม่ ดูตัวอย่างen.wikipedia.org/wiki/Halting_problemและprogrammers.stackexchange.com/questions/125882/
Charles E. Grant

Aaaah ความผิดพลาดของฉันนั้น การล็อคการลงคะแนนโง่ ... หากคุณสามารถแก้ไขโพสต์ของคุณเพื่อให้ฉันสามารถยกเลิกการลงคะแนนได้?
DeadMG

4
@DeadMG คุณรู้หรือไม่ว่างานเขียนโปรแกรมทั่วไปส่วนใหญ่ไม่จำเป็นต้องใช้ภาษาทัวริงที่สมบูรณ์เลย ? และสำหรับส่วนที่เหลือของคดีมักจะมีหลักฐานการพักการโดยเฉพาะ
SK-logic

12

ตัวอย่างเฉพาะสองตัวอย่างที่การศึกษาคณิตศาสตร์มีความสำคัญต่อวิทยาศาสตร์คอมพิวเตอร์คือ:

1) ฐานข้อมูลเชิงสัมพันธ์ที่แคลคูลัสเชิงสัมพันธ์จะใช้

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

พีชคณิตเชิงสัมพันธ์อาจแนะนำขั้นตอนเหล่านี้เพื่อดึงหมายเลขโทรศัพท์และชื่อของร้านหนังสือที่มีหนังสือตัวอย่างบางเล่ม:

Join book stores and titles over the BookstoreID.
Restrict the result of that join to tuples for the book Some Sample Book.
Project the result of that restriction over StoreName and StorePhone.

แคลคูลัสเชิงสัมพันธ์จะกำหนดวิธีการอธิบายที่เปิดเผย:

Get StoreName and StorePhone for supplies such that there exists a title BK with the same BookstoreID value and with a BookTitle value of

หนังสือตัวอย่างบางส่วน

พีชคณิตเชิงสัมพันธ์และแคลคูลัสเชิงสัมพันธ์นั้นมีความหมายเชิงตรรกะเทียบเท่า: สำหรับการแสดงออกเชิงพีชคณิตใด ๆ จะมีนิพจน์ที่เทียบเท่าในแคลคูลัสและในทางกลับกัน ผลลัพธ์นี้เรียกว่าทฤษฎีบทของ Codd

พื้นที่ต่อไปคือปัญญาประดิษฐ์ (AI) และการเรียนรู้เครื่อง

ยกตัวอย่างเกี่ยวกับวิธีการเหล่านี้จะใช้ดูที่ชั้น Udacity ของ CS 373 A: การเขียนโปรแกรมหุ่นยนต์ CAR

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

สิ่งที่ต้องทำก่อน: ผู้สอนจะสมมติความรู้ที่ดีเกี่ยวกับการเขียนโปรแกรมการเขียนโปรแกรมทั้งหมดจะอยู่ในหลาม ความรู้เกี่ยวกับความน่าจะเป็นและพีชคณิตเชิงเส้นจะเป็นประโยชน์

สัปดาห์ที่ 1:

พื้นฐานของความน่าจะเป็นการแปลในรถยนต์ด้วยตัวกรองอนุภาค

สัปดาห์ที่ 2:

Gaussians และความน่าจะเป็นอย่างต่อเนื่องติดตามรถยนต์คันอื่นด้วยตัวกรองคาลมาน

สัปดาห์ที่ 3:

การประมวลผลภาพและการเรียนรู้ของเครื่องค้นหาวัตถุในข้อมูลเซ็นเซอร์

สัปดาห์ที่ 4:

การวางแผนและค้นหาการกำหนดตำแหน่งที่จะขับด้วย A * search ค้นหาเส้นทางที่ดีที่สุดด้วยการโปรแกรมแบบไดนามิก

สัปดาห์ที่ 5:

ควบคุมการบังคับเลี้ยวและความเร็วด้วย PID

สัปดาห์ที่ 6:

การรวมโปรแกรมทั้งหมดเข้าด้วยกันการเขียนโปรแกรมรถยนต์ที่ขับเคลื่อนด้วยตนเอง

สัปดาห์ที่ 7:

การสอบปลายภาคเป็นการทดสอบความรู้ของคุณ


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

11

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

จากด้านผู้ปฏิบัติงานทางคณิตศาสตร์หัวข้อต่าง ๆ ในวิชาคณิตศาสตร์ (เช่นเดียวกับสาขาวิทยาศาสตร์อื่น ๆ ) จะได้รับประโยชน์อย่างมากจากการเขียนโปรแกรม


ฉันเห็นด้วย. ฉันทำการพัฒนาองค์กรจำนวนมากและไม่พบว่าตัวเองต้องการใช้คณิตศาสตร์ขั้นสูงจำนวนมากถึงแม้ว่ามันจะเป็นการดีที่จะรู้ว่ามันสามารถช่วยได้อย่างแน่นอน ฉันว่าโปรแกรมเมอร์ทุกคนควรทำอย่างน้อยแคลคูลัส 1 โปรแกรมประเภทอื่นอาจใช้สิ่งต่าง ๆ เช่น Fourier Transforms แบบจำลองทางสถิติและการเขียนโปรแกรม 3 มิติใช้เมทริกซ์บ่อยครั้ง
Makotosan

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

ฉันคิดว่าคณิตศาสตร์เป็นเพียงความรู้ในโดเมนที่จำเป็นสำหรับโปรแกรมของคุณในลักษณะเดียวกับที่การทำความเข้าใจด้านการเงินเป็นสิ่งสำคัญสำหรับนักพัฒนา Excel
sixtyfootersdude

9

ฉันคิดว่ายิ่งกว่าสิ่งอื่นใดมันเป็นความคล้ายคลึงของกระบวนการคิดที่ใช้ซึ่งทำให้ทั้งสองดูเหมือนกันมาก

ตัวอย่างเช่นทั้งสองเป็นตรรกะอย่างมาก หากคุณทำตามขั้นตอนชุดเดียวกันหรือสูตรเดียวกันคุณจะได้ผลลัพธ์เดียวกันเสมอ ยกตัวอย่างเช่น1+1จะเท่ากันเสมอไป2และset a = 1วิธีการที่aจะเป็นที่ 1 (จนกว่าคุณจะตั้งค่าให้เป็นอย่างอื่น)

อีกตัวอย่างหนึ่งคือต้องคิดเชิงพื้นที่ ในวิชาคณิตศาสตร์ฉันพบว่าฉันต้องเก็บตัวเลขไว้ในหัวและนึกภาพสิ่งที่ฉันกำลังทำอยู่ เป็นตัวอย่างที่ง่ายมากฉันจะแยกแยะปัญหาทางคณิตศาสตร์เพื่อให้บางอย่างเช่น13x13กลายเป็น13x10 + 13x3ซึ่งเป็นเรื่องง่ายสำหรับสมองของฉันที่จะทำงานด้วยและฉันต้องติดตาม13x10=130 + 13x3=39เรื่อง130+39 = 169นั้น ความสามารถเดียวกันนี้ในการมองเห็นสิ่งที่มองไม่เห็นหรือแยกแยะปัญหาเป็นปัญหาเล็ก ๆ มักใช้กับการเขียนโปรแกรม

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


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

5

ฉันคิดว่าคุณได้รับการสอนองค์ประกอบของแคลคูลัสและตรีโกณมิติแล้ว และคุณเรียกว่าคณิตศาสตร์ นั่นเหมือนกับการเรียกขา“ มนุษย์”

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

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

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

Go Algebra Algebra 101และLogic 101 , ศึกษาประวัติของ Pascal, Leibniz, (ใช่เขาเกือบจะคิดค้นแคลคูลัสได้มันผิดไปครึ่งทางเถียงกับ Newton จนกระทั่งมันเริ่มเข้าใจได้ง่าย - และยังคงเข้าใจสิ่งเข้ารหัสไบนารี) และ Babbage และ หลายข้อสงสัยของคุณจะจางหายไป (นิยามของคณิตศาสตร์ของคุณจะเปลี่ยนไปตลอดกาล)


4

การเขียนโปรแกรมข้ามสาขาวิชาการดั้งเดิมมากมาย

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


4

ที่นี่ฉันจะบอกคุณสิ่งที่ปฏิบัติได้ที่ฉันได้พบคณิตศาสตร์ในการแก้ปัญหาคอมพิวเตอร์ (โดยเฉพาะในโดเมนอินเทอร์เน็ต):

  1. เครื่องมือค้นหาใช้ Vector แคลคูลัสสำหรับการค้นหาข้อมูล
  2. การแยกตัวประกอบแบบเมทริกซ์สามารถใช้กับสิ่งต่างๆมากมายเช่นการวิเคราะห์ความเชื่อมั่น
  3. คุณจำเป็นต้องรู้แคลคูลัส, การสรุปเพื่อหาความซับซ้อนของโค้ดที่คุณเขียน
  4. ความน่าจะเป็นที่ใช้กันอย่างแพร่หลายในการสืบค้นข้อมูลที่น่าจะเป็น / การค้นหา
  5. ทฤษฎีบท Naive Bayes ใช้ในการวิเคราะห์การพยากรณ์
  6. คุณจำเป็นต้องรู้สิ่งต่าง ๆ เช่นไฮเปอร์เครื่องบิน ฯลฯ สำหรับแนวคิดที่เรียกว่า SVM ซึ่งใช้ในการเรียนรู้ของเครื่องอีกครั้งเพื่อแก้ปัญหาการจัดหมวดหมู่
  7. คุณต้องเข้าใจเอนโทรปีในการดำเนินการประมวลผลภาษาธรรมชาติ
  8. การวิเคราะห์ดัชนีความหมายแฝง / การวิเคราะห์องค์ประกอบหลักที่ใช้โดยเครื่องมือค้นหาอาศัยพีชคณิตเมทริกซ์เป็นอย่างมาก และอื่น ๆ ......

3

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

ในทำนองเดียวกันตอนนี้ฉันเป็นนักพัฒนาโปรแกรมประยุกต์บนเว็บที่ใช้ฐานข้อมูล ถ้าคุณเปรียบเทียบฉันกับคนที่เขียนโปรแกรมภาษาแอสเซมเบลอร์ในตัวคุณอาจคิดว่าเราเป็นผู้เชี่ยวชาญที่มีความสามารถมากสองคน แต่เราจะมีความเชี่ยวชาญที่แตกต่างกันอย่างมากแม้ว่าเราจะเป็น "โปรแกรมเมอร์" ก็ตาม

เมื่อคุณก้าวหน้าในการเรียนวิชาคณิตศาสตร์ขั้นสูง (นอกเหนือจากแคลคูลัสน้องใหม่) คุณจะพบว่าคณิตศาสตร์ได้ฝึกฝนวินัยการใช้เหตุผลเชิงนามธรรมที่จะให้บริการคุณได้ดีเมื่อคุณโปรแกรม ฉันคิดว่าวินัยนี้มีความสำคัญมากเพราะคุณจะจัดการกับข้อกังวลเชิงนามธรรมในขณะที่คุณเขียนโปรแกรม

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

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

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

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


ฉันชอบส่วน "เท่าที่พวกเราส่วนใหญ่รู้จัก" นั่นคือความยากลำบากที่ฉันเห็นในการอ่านคำตอบส่วนใหญ่ที่นี่: "มือซ้าย" ไม่รู้ว่า "มือขวา" กำลังทำอะไร
Loop Space

ฉันเดาว่า "มือซ้ายไม่รู้ว่ามือขวากำลังทำอะไร" สรุป OP กล่าวว่าเขา "เริ่มต้นจากด้านล่าง" กับ Java การเขียนโปรแกรมใน Java นั้นเหมือนกับการสร้างอะไรบางอย่างจากสลักเกลียวและไม้จากร้านฮาร์ดแวร์เมื่อเทียบกับการตัดเฉือนสลักเกลียวเหล่านั้นและทำให้ต้นไม้สดในไม้ (ซึ่งจะเป็นเหมือนการเขียนโปรแกรมใน Assembler)
คุกกี้แป้งข้าว

2

คณิตศาสตร์อธิบาย (พูด) สมการลูกบาศก์

อัลกอริทึมอธิบายวิธีแก้สมการลูกบาศก์นั้น

สร้างนั้น (หรือ) ขั้นตอนวิธีการในทางที่สามารถดำเนินการได้โดยเครื่องคือการเขียนโปรแกรม

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

โปรแกรมเมอร์ที่ดีอาจไม่ใช่นักคณิตศาสตร์ที่ดีและในทางกลับกัน พวกเขาเป็นทักษะที่แยกกันระบุ


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

2

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

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

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

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


2

ตัวอย่างสองตัวอย่างที่นึกขึ้นมาได้ทันทีคือ:

ฟังก์ชั่น - ความคิดของการใช้การแปลงเป็นตัวแปรอินพุตเพื่อสร้างตัวแปรเอาท์พุทเป็นรากฐานที่สำคัญในคณิตศาสตร์ ความคิดในการผ่านฟังก์ชั่นเป็นพารามิเตอร์ไปยังฟังก์ชั่นอื่นมากยิ่งขึ้น โดยทั่วไปความคิดเกี่ยวกับการคิดเชิงนามธรรมที่เกี่ยวข้องกับการวางแนวคณิตศาสตร์ค่อนข้างใกล้ชิด

bitMasks - วิธีการเขียนโปรแกรมทั่วไปนี้เพื่อแก้ปัญหาต้องมีความเข้าใจพื้นฐานของพีชคณิตแบบบูลอย่างน้อยก็จะเข้าใจแนวคิด


1

จากมุมมองของโปรแกรมเมอร์: คณิตศาสตร์เป็นส่วนหนึ่งของการเขียนโปรแกรม

คณิตศาสตร์ที่ใช้ในการเขียนโปรแกรม:

เมื่อทำงานกับคอลเลกชัน (อาร์เรย์, รายการ, แผนที่, ฯลฯ ) ในการเขียนโปรแกรมแล้วคุณจะจัดการกับการใช้งานจริงของนามธรรมทางคณิตศาสตร์

การเขียนโปรแกรมโดยไม่มีคณิตศาสตร์:

ถ้าคุณทำเช่นprintln("Hello World")นั้นความจริงที่ว่าคณิตศาสตร์บางตัวใช้ในการคำนวณตำแหน่งบนหน้าจอความยาวของสตริงและอื่น ๆ นั้นไม่เกี่ยวข้องเลย

ใช้การเขียนโปรแกรมสำหรับคณิตศาสตร์:

การใช้คณิตศาสตร์และฟิสิกส์ในภาษาโปรแกรมทำให้สิ่งต่าง ๆ เช่นคอมพิวเตอร์ช่วยออกแบบได้


มีจุดตัดของสิ่งต่าง ๆ ที่เกี่ยวข้องกับคณิตศาสตร์และการเขียนโปรแกรมที่เกี่ยวข้อง ไม่เป็นเซตย่อยที่เหมาะสมของอีกชุด ถ้าคุณรู้จัก MATH มากกว่านี้คุณก็จะรู้ ลองวาดไดอะแกรมเวนน์และดูว่าเราสามารถหาไอเท็มในแต่ละพื้นที่ได้ไหม พีชคณิตเป็นคณิตศาสตร์ที่เกี่ยวข้องและการเขียนโปรแกรมที่เกี่ยวข้อง หลักการเขียนโปรแกรมเชิงวัตถุนั้นไม่ได้เกี่ยวข้องกับคณิตศาสตร์อย่างเคร่งครัด แต่เป็นรูปแบบนามธรรมเนื่องจากคณิตศาสตร์เป็นสิ่งที่เป็นนามธรรม คณิตศาสตร์ไม่ต่อเนื่องมีประโยชน์อย่างมากต่อโปรแกรมเมอร์เช่นเดียวกับสถิติ แคลคูลัสไม่ค่อยมีนักเขียนโปรแกรมส่วนใหญ่เลย แต่สำหรับฉันในรอบ 30 ปี
Warren P

0

การเขียนโปรแกรมมักจะขึ้นอยู่กับแบบจำลองซึ่งมักจะเป็นแบบจำลองทางคณิตศาสตร์

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

มีแนวคิดง่ายๆในวิชาคณิตศาสตร์ที่ใช้กันอย่างแพร่หลายในการเขียนโปรแกรม ตัวอย่างเช่นการแสดงออกสมการตัวแปรพวกเขาจะใช้ในการเขียนโปรแกรมอย่างลึกซึ้ง หากคุณไม่ได้รับมันในคณิตศาสตร์คุณอาจไม่ใช่โปรแกรมเมอร์ที่ดีที่สุด

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

ในอาชีพการสอนสั้น ๆ ของฉันฉันพบว่าหากนักเรียนไม่มีภูมิหลังทางคณิตศาสตร์พวกเขาเกือบจะสูญเสียเมื่อทำปัญหาด้านการเงิน หากพวกเขาหลงทางเกี่ยวกับตัวแบบการเรียนรู้ภาษานั้นยากขึ้นและน่าผิดหวังอย่างมาก


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

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

จากมุมมองการเรียนรู้มันเป็นสิ่งจำเป็นที่จะต้องมีพื้นฐานทางคณิตศาสตร์มิฉะนั้นจะไม่มีการเรียนรู้
Noname

นักแก้ปัญหาเป็นปัญหาทางคณิตศาสตร์เป็นอย่างมากซึ่งจะทำให้มีเหตุผลที่ต้องมีความเข้าใจเกี่ยวกับคณิตศาสตร์ที่เกี่ยวข้องกับสิ่งเหล่านี้ ฉันไม่ได้บอกว่าไม่มีแนวคิดทางคณิตศาสตร์ที่เกี่ยวข้องกับการเขียนโปรแกรม แต่เป็น @DeadMG ชี้ให้เห็นในคำตอบของเขามีแง่มุมที่เป็นประโยชน์มากมายของกระบวนการที่คณิตศาสตร์ไม่ได้ช่วยอะไรเลย
Blrfl

1
@ Birfl, DeadMG ก็ดีไม่รู้เล็กน้อย (และเกือบจะผิดเสมอไป) คณิตศาสตร์มักจะช่วยในเรื่อง "อ่อน" ทุกเรื่อง จิตวิทยาอยู่บนพื้นฐานของคณิตศาสตร์อย่างหนัก สังคมวิทยาเป็นคณิตศาสตร์มากยิ่งขึ้น และในกรณีของการออกแบบระบบคุณไม่ควรแตะต้องมันหากไม่มีพื้นฐานที่ดีมากในความหมาย (ซึ่งมาจากคณิตศาสตร์ไม่ต่อเนื่อง) ไม่มีแง่มุมในการเขียนโปรแกรมที่ไม่ใช่เชิงคณิตศาสตร์ มีการออกแบบ GUI และการเข้ารหัส CRUD
SK-logic

0

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

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


0

มันสุจริตขึ้นอยู่กับประเภทของการเขียนโปรแกรมที่คุณทำ

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

สถานที่อื่นที่คุณต้องการคณิตศาสตร์คือถ้าคุณต้องการเขียนเกม ครั้งที่สองที่คุณต้องการเคลื่อนที่ในแนวทแยงมุมคุณจะต้องเริ่มทำการคำนวณอย่างระมัดระวังเพื่อที่คุณจะได้ไม่ต้องจบด้วยตัวละครที่เร่งความเร็วหากการย้ายไปยังบล็อกไปยัง NE

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


คุณจะต้องรู้คณิตศาสตร์ตรีโกณมิติและเวกเตอร์สำหรับเกมของคุณอย่างแน่นอน
อลัน B

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

0

ฉันไม่เคยเป็นผู้เชี่ยวชาญด้านคณิตศาสตร์มาก่อน! ฉันทำได้ดีใน HS Geometry ซึ่งเป็นเหตุผลทั้งหมดสำหรับฉัน ฉันพบว่าการเขียนโปรแกรมและรูปทรงเรขาคณิตมีความคล้ายคลึงกันมาก ตรรกะบูลีนเชื่อมโยงกันเป็นอย่างดีในความคิดของฉันต่อการพิสูจน์เชิงเรขาคณิต

จากนั้นมีสิ่งเล็ก ๆ น้อย ๆ เช่นรู้ว่าคุณสามารถควบคุมจำนวนคอลัมน์ในแถวโดยใช้ตัวดำเนินการโมดูลัส

ฉันชอบความคิดของการเป็นโปรแกรมเมอร์ที่ดีที่มีเพื่อน (หรือเพื่อนร่วมงาน / ที่ปรึกษา) ซึ่งเป็นนักคณิตศาสตร์ที่ดี

เห็นได้ชัดว่าถ้าคุณได้รับพรที่มีทั้งชุดทักษะวิ่งไปพร้อมกับมัน!


0

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

คำถามของคุณเป็นเหมือนนักดนตรีร็อคที่ถามว่าทำไมพวกเขาถึงต้องการฝึกอบรมดนตรีอย่างเป็นทางการ เป็นไปได้ไหมที่จะประสบความสำเร็จหากปราศจากมัน? แน่ใจ มันทำให้คุณเป็นคนเลวถ้าคุณไปด้วยหรือเปล่า? อย่างแน่นอน

คำตอบที่ซับซ้อนมากขึ้นเล็กน้อย - เมื่อนักคณิตศาสตร์และโปรแกรมเมอร์ใช้คำว่า "การแก้ปัญหา" (สำหรับปัญหานั่นคือไม่ใช่สมการ - นั่นคือไม่ใช่ "ราก") - พวกเขามีความหมายเหมือนกันมาก การเรียนรู้ที่จะแก้ปัญหาคณิตศาสตร์ช่วยให้คุณเรียนรู้ที่จะแก้ปัญหาการเขียนโปรแกรม

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


0

การกระทำของการทำคณิตศาสตร์และการเขียนโปรแกรม 99% มีเหมือนกันน้อยมาก คณิตศาสตร์ไม่จำเป็นต้องเป็นโปรแกรมเมอร์ที่ยอดเยี่ยม ฉันได้เรียนหลักสูตรระดับวิทยาลัยหลายวิชาในวิชาคณิตศาสตร์ซึ่งรวมถึง แต่ไม่ จำกัด เฉพาะแคลคูลัส I, II, III องค์ประกอบของพีชคณิตเชิงเส้นและอีกหลายหลักสูตร

ฉันเป็นวิศวกรซอฟต์แวร์มานานกว่า 10 ปีและแทบจะไม่ต้องการใช้อะไรมากกว่าคณิตศาสตร์พื้นฐาน มีข้อยกเว้นบางประการที่จำเป็นต้องใช้คณิตศาสตร์เช่นกราฟิกและด้านอื่น ๆ แต่ 99% ของการเขียนโปรแกรมและวิศวกรรมซอฟต์แวร์ไม่จำเป็นต้องใช้คณิตศาสตร์ มันต้องใช้การคิดเชิงตรรกะอัลกอริทึม OOP ฟังก์ชั่นการสลายตัวปัญหา ฯลฯ


0

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

2) จากการประยุกต์ใช้วิทยาการคอมพิวเตอร์เราจะต้องมีความคิดเกี่ยวกับคณิตศาสตร์แบบแยกและคณิตศาสตร์ต่อเนื่องเพื่อเขียนวิธีแก้ปัญหาที่มีความหมาย หนึ่งสามารถเข้าใจเพิ่มเติมเกี่ยวกับเรื่องนี้โดยจะผ่านหลักสูตรเช่น -

---> คณิตศาสตร์สำหรับวิทยาการคอมพิวเตอร์

---> Coding เมทริกซ์: พีชคณิตเชิงเส้นผ่านการใช้งานวิทยาการคอมพิวเตอร์

สำหรับผู้เริ่มต้นฉันรู้สึกว่าภาษาที่พิมพ์แบบไดนามิกเช่นpython/ schemeเป็นภาษาแรกที่ดีที่สุดสำหรับการเขียนโปรแกรม ภาษาที่พิมพ์แบบคงที่เช่นJava/ C++ไม่ใช่สิ่งที่ดีที่สุดในการเริ่มต้น Opencourseware ที่ตีพิมพ์จาก "MIT / UOC-Berkeley / Stanford" สามารถแนะนำคุณได้ดีกว่าหลักสูตรวิทยาลัยทั่วไป ฉันเดิมพันคุณ!!!


-1

ส่วนตัวผมจะบอกว่ามันขึ้นอยู่กับระดับของการเขียนโปรแกรมที่เกี่ยวข้อง รูปแบบข้อมูลและความสัมพันธ์ระหว่างสิ่งเหล่านี้อัลกอริทึมการเขียนโปรแกรมที่เกี่ยวข้อง ตัวอย่างเช่น: ในการเขียนโปรแกรมที่ส่งผล "Hello World" ฉันไม่ต้องการข้อกำหนดสำหรับการทำความคุ้นเคยกับคณิตศาสตร์ระดับสูง ระดับการมีส่วนร่วมทางคณิตศาสตร์จะขึ้นอยู่กับระดับของความซับซ้อนของปัญหาที่ต้องได้รับการแก้ไขเชิงโปรแกรม


-2

แค่ประสบการณ์ของฉันไม่มาก:
ฉันไม่ใช่นักคณิตศาสตร์ ฉันไม่ใช่อัจฉริยะแค่ autodidact
... และหลังจากผ่านไปหลายปีฉันก็ตระหนักได้ว่าฉันทำงานด้วยสัญชาตญาณ

ก่อนอื่นฉันเรียนรู้ Pick (ระบบที่ตายแล้ว) ตั้งแต่เริ่มต้น (คนเดียวพร้อมเอกสารและตัวอย่างกระดาษ),
... หลังจาก C, C ++ เพื่อความสนุกและJavaสำหรับการทำงาน

ในขณะที่คุณบอกเกี่ยวกับเรื่องนี้ผมสามารถพูดได้ว่าการเรียนรู้ภาษานี้ไม่ได้เป็นปัญหาทางคณิตศาสตร์ (แม้ว่าพื้นฐาน / เรียบง่ายพีชคณิตช่วยให้คุณ) แต่ตรรกะหนึ่ง

ตอนนี้เครื่องมือมากมาย (เช่น Eclipse) ช่วยและแก้ไขคุณ: คุณต้องมุ่งเน้นไปที่สิ่งที่คุณต้องการด้วย 52 คำที่สงวนไว้เท่านั้น ... และห้องสมุดมากมายที่ทำงานให้คุณไม่ได้

ดังนั้นหากคุณชอบภาษาให้เลือกโครงการ Java ศึกษาการออกแบบรูปแบบ UML เข้าใจ JVM และใช้กับ Bigloo และ Scala ได้อย่างไรทำความเข้าใจซ้ำแล้วซ้ำอีกในช่วง 10,000 ชั่วโมง

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

หากการเข้าใจภาษา (คำ, ความหมาย, แนวคิดและวิทยาศาสตร์เชิงตรรกะอื่น ๆ เช่นความหมาย, ภววิทยา, .. ) เป็นเป้าหมายที่ดีสำหรับคนมนุษย์ของคุณสำหรับชีวิตของคุณคุณสามารถเริ่มต้นได้ทันที

มิฉะนั้นทดลองวิธีอื่น

ขอแสดงความนับถือ
Claude


ดูโพสต์ด้านล่างอีกครั้ง คุณกำลังทำคณิตศาสตร์คุณเพียงเลือกที่จะไม่ยอมรับมัน
jamesson

1
ฉันเห็น แต่ฉันพบโพสต์อื่น ๆ ที่ตอบคำถามแรกเกี่ยวกับความสนใจทางคณิตศาสตร์สำหรับนักเรียน (ผู้รู้พื้นฐานไม่ใช่ความเชี่ยวชาญพิเศษ) ด้วย -1 ^ n เมื่อพวกเขาบอกเกี่ยวกับตรรกะในภาษาละตินปรัชญาภาษา ... จริง ชีวิต. คณิตศาสตร์ให้ความคิดอย่าง จำกัด ว่าทุกอย่างไม่ได้อยู่ในสมการถูกปฏิเสธโดยไม่เข้าใจชีวิตรอบตัวและลืมว่านิวตันเริ่มต้นด้วยสัญชาตญาณของแอปเปิ้ล บางทีผู้ควบคุมอาจเปิดใจให้กับโลกอื่นเมื่อเป็นไปได้สิ่งนี้จะทำให้การสนทนาทั้งสองด้านดีขึ้น ไม่ต้องห่วงฉันจะเขียนอย่างระมัดระวัง
cl-r

-2

มีคนเกือบโดนเล็บที่หัวด้านบน การเขียนโปรแกรมคือคณิตศาสตร์ โดยเฉพาะอย่างยิ่งการเขียนโปรแกรมเป็นสาขาหนึ่งของตรรกะทางคณิตศาสตร์ที่เรียกว่าทฤษฎีการคำนวณหรือทฤษฎีการเรียกซ้ำ

สาขาคณิตศาสตร์อื่น ๆ มีส่วนเกี่ยวข้องโดยตรงโดยเฉพาะภาษาทางการและทฤษฎีออโตมาตะ ความช่วยเหลือเหล่านี้อธิบายนิพจน์ทั่วไปที่ใช้ในการจับคู่รูปแบบและไวยากรณ์ที่เป็นทางการใช้เพื่ออธิบายและแยกวิเคราะห์ภาษาการเขียนโปรแกรม

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

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

โปรแกรมเป็นหลักฐาน: ตรรกะในศตวรรษที่ 19 และคอมพิวเตอร์ในศตวรรษที่ 21

โปรแกรมเป็นบทพิสูจน์: โมเดลและประเภทในแลมบ์ดาแคลคูลัส

บทความจดหมายโต้ตอบของCurry-Howard

เกี่ยวกับประสิทธิผลที่ผิดปกติของลอจิกในวิทยาศาสตร์คอมพิวเตอร์

ประสิทธิผลที่ไม่สมเหตุสมผลของลอจิก

ใช่พวกมันหนักในส่วนของ "ตรรกะ" ของตรรกะทางคณิตศาสตร์ แต่โดยทั่วไปคณิตศาสตร์นั้นได้รับการยอมรับว่าเป็นสัจพจน์สองสามอัน

เท่าที่พูดเป็นอย่างอื่นและเป็น "max" maximalist หาเงิน:

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


6
-1 สำหรับโฆษณาตอนท้าย
Charles E. Grant

@charles โฆษณากับใคร? โปสเตอร์ต้นฉบับ? ฉันคิดว่าประเด็นเกี่ยวกับสิทธิบัตรนั้นลึกซึ้งมาก (แม้ว่ามันจะเป็นประโยคที่ดีกว่าก็ตาม)
gcbenison

@ gcbenison "ใครก็ตามที่บอกว่าการเขียนโปรแกรมไม่ใช่คณิตศาสตร์ ... หรือมีแรงจูงใจซ่อนเร้น" เป็นการโจมตีโฆษณาแบบคลาสสิก: ฉันไม่ต้องตอบโต้การโต้เถียงของคุณเพราะคุณเป็นคนไม่ดี ฉันพบว่ามันน่ารำคาญเพราะฉันไม่คิดว่าการเขียนโปรแกรมเป็นคณิตศาสตร์และฉันคิดว่าสิทธิบัตรซอฟต์แวร์เป็นสิ่งที่น่ารังเกียจ ฉันมี MS ในคณิตศาสตร์ประยุกต์ แต่ไม่ว่าฉันจะรู้ว่าสิ่งที่ฉันกำลังพูดถึงนั้นเปิดกว้างสำหรับการอภิปรายหรือไม่
Charles E. Grant

@ ผู้แนะนำ: ขอบคุณ ฉันใช้เพื่อเพิกเฉยพฤติกรรมเหล่านั้นเพราะพวกเขาเป็นความทุกข์ยากที่คาดการณ์ด้วยตนเองที่ใส่ร้ายผู้อื่น --- ไปที่ Bruce Ediger: สงสัยการสะท้อนสัญญาณกำลังดำเนินการอยู่
cl-r

@ cl-r: ฉันคิดถึงตัวอย่างที่เฉพาะเจาะจงมากเช่นแคมเปญ SCO anti-Linux และnature.com/news/ ถ้าเราในฐานะโปรแกรมเมอร์ให้ทนายความกำหนดคณิตศาสตร์เพื่อผลประโยชน์ของทนายความเราจะทำลายอารยธรรมที่ยิ่งใหญ่ทั้งหมด .
Bruce Ediger

-2

คณิตศาสตร์เป็นทุกสิ่งที่เกี่ยวข้องกับการเขียนโปรแกรม ตัวอย่างเช่นในการเขียนโปรแกรมเกมคุณต้องใช้ matyhs สำหรับฟิสิกส์และทำทุกอย่างให้น้อยลง หากต้องการย้ายตำแหน่ง x ของผู้เล่นใน Java คุณต้องทำint x = x + speed * deltaTimeหรือint x = x - speed * deltaTimeแต่คุณอาจบอกว่านั่นเป็นคณิตศาสตร์พื้นฐานดังนั้นให้เลื่อนไปยังสิ่งที่ก้าวหน้ากว่า มีอัลกอริทึมสำหรับผู้เล่นหมากรุกเรตติ้งที่เรียกว่าอัลกอริทึม Elo

นี่คืออัลกอริทึม Elo อธิบาย

หากคุณยังคิดว่านี่เป็นพื้นฐานลองใช้ดู คุณคำนวณอายุของคนได้อย่างไรเมื่อคุณได้รับวันเดือนปีเกิด ลบปีเกิดจากปีนี้จากนั้นตรวจสอบว่าเดือนน้อยกว่าเดือนนี้หรือไม่และไม่ลบ 1

มันไม่ใช่เวทมนต์มันทำงานหนักและคณิตศาสตร์ดี


-4

ตกลงฉันอาจจะได้รับการลงคะแนนมากมายสำหรับเรื่องนี้ แต่การเขียนโปรแกรมและคณิตศาสตร์เป็นสองสิ่งที่ไม่เกี่ยวข้องอย่างสมบูรณ์ บางคนอาจเป็นนักพัฒนาที่ยอดเยี่ยมที่รู้พื้นฐานเช่นการเพิ่มการคูณและการดำเนินการทางตรรกะขั้นพื้นฐานเท่านั้น

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

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

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

ตอนนี้ฉันรู้เรื่องทางคณิตศาสตร์แล้วเพื่อที่ฉันจะได้พูดคุยกับโปรแกรมเมอร์พื้นหลังคณิตศาสตร์กับความแตกต่างและเนื้อหาของบันทึก แต่สำหรับเหตุผลเท่านั้นเพื่อที่พวกเขาจะไม่อ่อนเปลี้ย เนื่องจากสิ่งนั้นไม่มีประโยชน์ 99.9% ของเวลาและเมื่อเป็นเช่นนั้นจะสามารถเรียนรู้ได้อย่างมีประสิทธิภาพ 1000x จากมุมมองโปรแกรมเมอร์

Heck โปรแกรมเมอร์ต้องใช้เวลาอย่างน้อย 5 ปีในการพัฒนาภาษาโปรแกรม + กรอบการทำงาน + แนวปฏิบัติที่ดีที่สุด ทำไมบนโลกนี้พวกเขาควรเรียนรู้วิธีพิสูจน์ทฤษฎีบท นักเรียนคณิตศาสตร์ทำเรื่องทางคณิตศาสตร์โปรแกรมเมอร์ทำให้สิ่งต่าง ๆ ทำงานได้นั่นคือวิธีการทำงาน


8
เด็กคนหนึ่งบอกแม่ของเขาว่าเขาไม่ต้องการคณิตศาสตร์เพราะเขาจะโตขึ้นและเป็นผู้เล่นเบสบอลเศรษฐี แม่ของเขาบอกเขาว่า "คุณจะต้องมีคณิตศาสตร์เพื่อนับจำนวนของคุณ"
Nav

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

2
@ jmort253: การเรียนคณิตศาสตร์ไม่ได้ทำให้คุณเป็นคนที่คิดอย่างมีเหตุผล มันเป็นบางสิ่งที่เชื่อมโยงกับความคิดของคุณหรือไม่ ฉันเกลียดคณิตศาสตร์มาตั้งแต่โรงเรียน แต่ฉันเป็นคนที่มีเหตุผลมาก การเขียนโปรแกรมไม่ใช่คณิตศาสตร์ฉันเข้าสู่การเขียนโปรแกรมระบบมานานกว่า 10 ปีและฉันสามารถบอกได้อย่างมั่นใจ 100% และคุณสามารถคาดหวังคณิตศาสตร์ได้น้อยลงเมื่อคุณเข้าสู่การพัฒนาเว็บหรือการบริหาร SQL งานของคุณไม่ได้พัฒนาทฤษฎีทางคณิตศาสตร์ใหม่ ๆ งานของคุณคือการทำให้สิ่งต่าง ๆ ทำงานโดยใช้ทรัพยากรที่ จำกัด ในลักษณะที่บำรุงรักษาได้โดยใช้อัลกอริทึมและคอนเทนเนอร์ที่มีประสิทธิภาพที่สุด
Coder

2
@Nav: มันสมเหตุสมผลสำหรับทุกคนสำหรับคณิตศาสตร์พื้นฐานสมกับ x และ y แต่การนับล้านของคุณมักเป็นสิ่งที่นักบัญชีและนักกฎหมายทำเพราะมิฉะนั้นคุณจะพลาดกฎหมายของรัฐที่ต้องทำอะไรบางอย่างด้วยการประกาศและปล่อยทุกอย่างออกไป คุณควรฉลาดพอที่จะเข้าใจว่าเกิดอะไรขึ้น แต่เมื่อคุณเก่งในเรื่องบางอย่างมันจะคุ้มค่ากว่าที่จะใช้บริการพิเศษที่จะทำสิ่งต่าง ๆ ให้คุณอย่างถูกต้องรวดเร็วและตรงเวลาในขณะที่คุณรักษารูปร่างในโรงยิม เพื่อรักษาจุดแข็งที่ได้รับ 5 อันดับแรก
Coder

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