คุณต้องเก่งคณิตศาสตร์หรือไม่เพื่อที่จะเป็นโปรแกรมเมอร์ที่ดี? [ปิด]


78

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

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


1
@ มาร์คไม่จำเป็นต้อง การเรียนวิชาและชอบมันเป็นสองสิ่งที่แตกต่างกันมาก
Maxpm

3
คุณเป็นราชาหรือไม่? หรือแฝดแฝด? ถ้าไม่ฉันขอแนะนำให้คุณใช้คำว่า "ฉัน" เมื่อพูดถึงตัวเอง
drxzcl

1
@jk - คุณถูกต้องเป็นไปได้มากที่สุดphysics.about.com/od/alberteinstein/p/einsteinpro.htmยังคงคิดว่ามีจำนวนศิลปะในการเขียนโปรแกรมที่ดี p
Garet Claborn

3
ฉันคิดว่าฉันไม่เคยชอบคณิตศาสตร์ ต่อมาในชีวิตฉันรู้ว่าฉันไม่ได้มีความสุขกับไวยากรณ์
MrFox

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

คำตอบ:


83

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

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


6
ฉันต้องการเพิ่มว่าฉันเคยเห็นปริญญาเอกในวิชาคณิตศาสตร์และฟิสิกส์เขียนรหัสที่น่ากลัว ทักษะเหล่านี้ซ้อนทับกันในระดับหนึ่ง แต่แยกออกจากกัน
MrFox

133

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

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

  • ความสามารถในการประมาณ / เข้าใจความแตกต่างระหว่างตัวเลข: O (n ^ 2) กับ O (lg (n)), ความรู้สึกที่ใช้งานง่ายของ KB เทียบกับ MB กับ GB, เปรียบเทียบว่าดิสก์ช้ากว่า RAM อย่างไร หากคุณไม่ทราบว่า KB เปรียบเทียบกับ GB เพียงเล็กน้อยคุณจะเสียเวลาในการปรับแต่งสิ่งต่าง ๆ ที่ไม่สำคัญ
  • ฟังก์ชั่น / ฟังก์ชั่นการเขียนโปรแกรม (มันบังเอิญที่สมการ f (x) = x ^ 2 นั้นคล้ายกับวิธีที่คุณเขียนวิธีนั้นหรือไม่คำว่า "อัลกอริทึม" และ "ฟังก์ชั่น" อยู่ในโลกคณิตศาสตร์ก่อน คอมพิวเตอร์เครื่องแรกเกิด :-))
  • พีชคณิตพื้นฐานเพื่อสร้างและจัดลำดับสมการใหม่ของคุณใช้ค่าเฉลี่ยสถิติพื้นฐาน

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


1
คณิตศาสตร์เมเจอร์กับความคิดทางคณิตศาสตร์: มันเหมือนกับความแตกต่างระหว่างการรู้สูตรฟิสิกส์ทั้งหมดและความสามารถในการเด้งลูกบอลยางให้ห่างจากกระดานหลัง 20 หลา!
TehShrike

9
ฉันจะเพิ่มโปรแกรมเมอร์ที่ดีหลายคนรู้วิธีเล่นหมากรุกหรือไป :-)
xanatos

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

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

4
+1 คณิตศาสตร์มีความสำคัญในการทำความเข้าใจภาษาการเขียนโปรแกรมเพราะเป็นพื้นฐานของงานฝีมือของเรา โครงสร้างการเขียนโปรแกรมภาษาส่วนใหญ่ที่เราใช้ในแต่ละวันจะถูกยกออกจากสาขาคณิตศาสตร์เช่นแลมบ์ดาแคลคูลัส
MattDavey

53

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

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

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

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


3
การเงินและการบัญชีไม่ได้ว่าไม่ดีถ้าคุณกำลังทำเลือกการกำหนดราคาหรือสิ่งที่ต้องการ

5
คุณมีประเด็น Chris แต่ถึงแม้จะมีการใช้งานทางการเงินคุณมีแนวโน้มที่จะใช้สูตรมากกว่าการคิด
Dan Diplo

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

3
@ SK-ตรรกะ: อื่น ๆ อย่างเคร่งครัดทุกอย่างที่คอมพิวเตอร์ไม่เป็นตรรกะ การดำเนินการทางตรรกะบางอย่างนั้นถูกตีความว่าเป็นคณิตศาสตร์ (และบางคนอ้างว่าตรรกะเป็นสาขาของคณิตศาสตร์ทำให้เกิดความขุ่นเคืองของนักปรัชญาบางคน)
Donal Fellows

3
@ Donal Fellows ตรรกะที่เป็นทางการคือคณิตศาสตร์ และนักปรัชญาก็ได้รับการยอมรับสำหรับการมีส่วนร่วมในประวัติศาสตร์ของพวกเขากับคณิตศาสตร์เช่นเดียวกับนักคณิตศาสตร์ที่ revenged (เช่นโดยการประดิษฐ์สิ่งแปลก ๆ เช่น 'monadology')
SK-logic

30

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


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

1
คุณแน่ใจหรือว่าคุณเป็นโปรแกรมเมอร์ที่ดี :)
รัสเซล

17

ฉันคิดว่ามันสำคัญที่จะต้องพิจารณาอย่างใกล้ชิดว่าทำไมคุณถึงไม่ชอบคณิตศาสตร์

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

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


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

16

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


11
+1 คุณจะต้องใช้คณิตศาสตร์หากคุณต้องการทำสิ่งต่าง ๆ "ระดับสูง" เช่นการประมวลผลสัญญาณการเรียนรู้ของคอมพิวเตอร์การมองเห็นคอมพิวเตอร์การเรนเดอร์ 3 มิติการจำลองฟิสิกส์ฟิสิกส์แอนิเมชั่นเรขาคณิตการคำนวณการเข้ารหัสและสาขาอื่น ๆ ตอนนี้
nikie

2
@nikie: ใช่ แต่นั่นเป็นคณิตศาสตร์ประยุกต์ ความแตกต่างอย่างมาก ^^
gablin

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

14

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

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

หากคุณเกลียดคณิตศาสตร์คุณจะเกลียดการเขียนโปรแกรม


13

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

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


11

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


11

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

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

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

ผลที่สุดของข้างต้นคือคุณจะต้องสบายใจกับตัวเลข - แน่นอนคุณต้องเข้าใจว่าทำไม "มี 10 ประเภทของผู้คนในโลกผู้ที่เข้าใจเลขฐานสองและผู้ที่ไม่" เป็นเรื่องตลก แต่คุณอาจขออนุญาต "2 + 2 = 5 ... สำหรับค่าขนาดใหญ่มาก 2"


+1 นี่มันน่าหดหู่จริงๆ จริง ๆ แล้วฉันหัวเราะเรื่องตลก
Ben

10

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

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


9

พูดตามตรงฉันเป็นนักเรียนคณิตศาสตร์ที่น่ากลัวในโรงเรียน พีชคณิตนั้นเกินกว่าฉันในเวลานั้นและฉันไม่คิดว่าฉันจะสูงกว่า D ในนั้น

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

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

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


ฉันกลับมาที่โรงเรียนหลังจาก 10 ปีของการพัฒนาซอฟต์แวร์และฉันก็ประสบสิ่งเดียวกัน ฉันพบแคลคูลัสและสถิติได้ง่ายขึ้นเนื่องจากฉันสามารถเชื่อมโยงแนวคิดส่วนใหญ่กับฟังก์ชั่นบางอย่างที่ฉันเขียนในช่วงหลายปีที่ผ่านมา ฉันโกรธเมื่อคิดถึง Venn diagrams ไม่รู้จักเมื่อฉันสอนตัวเองเข้าร่วม SQL มันเหมือนการโกง
Heath Lilley

7

มันค่อนข้างขึ้นอยู่กับสิ่งที่คุณกำลังทำแม้ว่ามันจะไม่สามารถทำร้ายได้

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

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

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


7

คุณสามารถเป็นนักพัฒนาซอฟต์แวร์ที่ดีโดยไม่มีคณิตศาสตร์ได้หรือไม่? อืมฉันก็คิดแบบนั้น. คุณสามารถเป็นโปรแกรมเมอร์ฮีโร่ที่คนพูดถึงตลอดเวลาได้หรือไม่? ผมคิดว่าไม่.

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

ในทำนองเดียวกันความเข้าใจในแคลคูลัสแลมบ์ดานั้นมีค่ายิ่งสำหรับสถาปนิกระบบปฏิบัติการหรือนักออกแบบภาษา


7

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

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

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

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

ฉันทำงานเกี่ยวกับระบบบัญชีและการเรียกเก็บเงิน - และฉันไม่เคยคิดออก Log (x), SIN, COS, ฯลฯ สำหรับการจัดการบัญชีแยกประเภททั่วไปหรือการอนุญาตให้ป้อนข้อมูล Aging Journal ไม่ใช่ "คณิตศาสตร์ขั้นสูง" แต่มีความสำคัญอย่างยิ่งต่อการประเมินปัญหา AP

ลองคิดดูสิฉันไม่เคยพบนักบัญชีด้วยเครื่องคิดเลขวิทยาศาสตร์บนโต๊ะทำงานเลย!


5

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

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

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


5

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

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

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

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

ยังคงเป็นไปได้ที่จะเป็นโปรแกรมเมอร์ที่ดีโดยไม่ต้องใช้คณิตศาสตร์อย่างไรก็ตามเป็นเรื่องยาก


1
การนึกถึงคุณค่าทั้งหมดเนื่องจากสีเกือบจะสมเหตุสมผลแล้ว เมื่อคุณออกไปไกลเกินไปจากปลายด้านหนึ่งของสเปคต
รัม

องศา (เช่นเดียวกับใน 0 - 360 ยกเว้น 0 - 256) บางครั้งก็ช่วยได้เช่นกัน =) คุณไม่จำเป็นต้องคิดในแง่ตัวเลขสำหรับสีหรือองศามากเท่ากับค่า 'เต็ม'
Garet Claborn

5

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

กล่าวโดยย่อ: บางทีคุณอาจไม่ต้องเรียนรู้คณิตศาสตร์อย่างชัดเจนแต่เพียงแค่เป็นโปรแกรมเมอร์คุณอาจได้เรียนรู้คณิตศาสตร์บางอย่างโดยที่ไม่รู้ตัว นั่นคือการเป็น "โปรแกรมเมอร์ที่ดี" คุณก็เป็นนักคณิตศาสตร์ด้วยเช่นกัน

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

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


4

นี่เป็นคำถามที่ยากมากที่จะตอบและมีแนวโน้มที่จะกระตุ้นการอภิปรายจำนวนมาก

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

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

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


4

ได้แน่นอน.

แม้แต่การดำเนินการโปรแกรมธุรกิจในโรงสีก็ยังต้องการทักษะทางคณิตศาสตร์

การรันโปรแกรมมิลล์ธุรกิจต้องใช้ทักษะฐานข้อมูล การเป็นโปรแกรมเมอร์ฐานข้อมูลที่ดีต้องมีความเข้าใจในการทำงานของฐานข้อมูลและขั้นตอนวิธีใดที่ตัวประมวลผลแบบสอบถามใช้เมื่อแปลแบบสอบถามของคุณ หากไม่มีความเข้าใจเกี่ยวกับขีด จำกัด และอนุพันธ์ (หรือแม้แต่ความเข้าใจพื้นฐานที่เส้น y = x ตัดกับเส้น y = x ^ 2 สองครั้ง) มันเป็นไปไม่ได้ที่จะเปรียบเทียบแผนแบบสอบถามการเข้าร่วมด้านในแบบแฮช - จับคู่เปรียบเทียบกับวงซ้อนซ้อน แผนแบบสอบถาม

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

ฉันจะบอกว่าควรมีประสบการณ์ในบางจุดในเวลาต่อไปนี้:

  1. Calc 3 เทอม
  2. ค่าต่าง
  3. พีชคณิตเชิงเส้น
  4. พีชคณิตสมัยใหม่
  5. ความน่าจะเป็นพื้นฐานการนับและสถิติ

4

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

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


4

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

มันดูไม่เหมือนพีชคณิตมัธยม


4

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

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

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

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


4

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

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

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

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


การเขียนโปรแกรมเป็นพื้นฐานตรรกะเพียงแค่ใช้และในความเป็นจริงคณิตศาสตร์ก็เป็นเพียงตรรกะที่ใช้
RibaldEddie

3

เลขที่

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

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


3

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

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


3

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

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


3

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

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

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

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


3

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


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

@ ไบรอันฉันสามารถเกี่ยวข้องกับที่
jasonco

3

เป็นไปได้ไหมที่คนที่ไม่ชอบคณิตศาสตร์จะเป็นโปรแกรมเมอร์ที่ดี?

ไม่ไม่ไม่ไม่ใช่และไม่ใช่!

ไม่เพราะคุณต้องการมันบ่อยๆ

(! (a | (! (b && c) || d) && (! e)))

ทำไมมันไม่ทำงาน

foo ('a', 'b', 19, g(h))
bar ('c', 'd', 44) 

สามารถเขียนใหม่ในลักษณะที่เป็นนามธรรมได้หรือไม่

968 ms มากกว่าหรือน้อยกว่า 0.7 วินาที? คุณต้องการเมกะไบต์กี่เครื่อง Ghz จะมีกี่ไบต์จะเพียงพอ - คณิตศาสตร์เป็นส่วนหนึ่งของงานทุกวัน บางครั้งคณิตศาสตร์อย่างชัดเจนและสูงกว่า

คณิตศาสตร์ที่ต่ำกว่าเสมอ

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

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

อย่างไรก็ตาม - เนื่องจากฉันไม่สามารถแก้ปัญหาได้มาก (ตอนนี้ประมาณ 2/3) หมายความว่าฉันไม่ชอบคณิตศาสตร์หรือไม่

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

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

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