การแนะนำการเขียนโปรแกรมให้นักคณิตศาสตร์ [ปิด]


30

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

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

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

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


17
ทำไมคุณต้องการผลักเพื่อนของคุณไปในทิศทางที่เขาไม่สนใจ?
HLGEM

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

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

4
เพื่อให้เข้าใจถึงสิ่งต่าง ๆ - คุณอายุ 16 คุณไม่ใช่โปรแกรมเมอร์คุณเป็นนักเรียนที่เคยเขียนโปรแกรมมาแล้ว เพื่อนของคุณไม่ใช่นักคณิตศาสตร์เขาเป็นนักเรียนที่ชอบ (และเรียนรู้บางอย่าง) คณิตศาสตร์ ในขณะที่ฉันชอบคำตอบจาก @ perl.j ฉันคิดว่าคุณอาจจะเข้าใจมากกว่านี้
Joel Etherton

2
@ perl.j: จนกว่าจะมีคนที่มีระดับที่จำเป็นในการแสดง "พื้นที่หลักของการศึกษา" ที่จำเป็นเพื่อเป็นหลักฐานว่าเขาไม่ใช่นักคณิตศาสตร์ แม้แต่คนในมหาวิทยาลัยที่มีวิชาเอกคณิตศาสตร์ก็ยังไม่เป็นนักคณิตศาสตร์
Joel Etherton

คำตอบ:


60

โลโก้คณิตศาสตร์

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

มาติกา

Mathematica ของ Wolfram เป็นสิ่งที่เขาสนใจอีกอย่างหนึ่ง

Mathematica is a computational software program used in scientific, engineering, and mathematical fields and other areas of technical computing. It was conceived by Stephen Wolfram and is developed by Wolfram Research of Champaign, Illinois.

แม้ว่าจะมีราคาแพง แต่ก็คุ้มค่า นี่คือลิงค์บางส่วน:

อัลกอริทึม

อัลกอริทึมมีความสำคัญสำหรับโปรแกรมใด ๆ แต่เพื่อนของคุณควรเริ่มต้นด้วยสิ่งเหล่านี้เมื่อเขาคุ้นเคยกับภาษา นี่คือลิงค์เพิ่มเติม:

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


6
นอกจากนี้Eleven เหตุผลในการใช้ Haskell เป็นนักคณิตศาสตร์
hammar

2
ฉันเป็นวิชาคณิตศาสตร์และฉันสามารถแนะนำ Haskell ได้อย่างยอดเยี่ยมจากมุมมองทางคณิตศาสตร์ ฉันชอบอ่านบางสิ่งทางทฤษฎีที่สอดคล้องกับมันมากกว่าภาษาส่วนใหญ่
Theo Belaire

2
หากเขาเรียนรู้ Haskell เขาสามารถย้ายไปยังAgdaได้ในภายหลังซึ่งเป็นภาษาที่เหมาะสำหรับทำข้อพิสูจน์
Peter C

4
@ SK-logic คุณจะพูดอย่างนั้นได้อย่างไร? คณิตศาสตร์คือการเรียนรู้ระบบตรรกะใหม่และการใช้เหตุผลเกี่ยวกับพวกเขา (อย่าลืมว่านักคณิตศาสตร์คิดค้นเครื่องทัวริง) คุณคิดอย่างสุจริตว่าคนที่สามารถจัดการกับคณิตศาสตร์ไม่สามารถจัดการกับความคิดของการกลายพันธุ์ที่แปรผันได้? และประเด็นของฉันคือการทำอะไรง่ายๆอย่างการกลายพันธุ์ของตัวแปรใน Haskell จำเป็นต้องมีร้านค้า Monad! การพูดว่าง่ายกว่าx = x + 1นั้นก็น่าหัวเราะ
JeremyKun

2
@ ถั่วนั่นเป็นปฏิกิริยาแรกของฉันที่มีต่อคำสั่งมอบหมาย (และฉันไม่รู้อะไรเลยนอกจากสมการเชิงเส้นแบบดั้งเดิมจากคณิตศาสตร์ในตอนนั้น) ตั้งแต่นั้นมาฉันก็เห็นปฏิกิริยาเดียวกันซ้ำแล้วซ้ำอีก ฉันพยายามแนะนำแนวคิดการเขียนโปรแกรมใช้งานได้สำหรับผู้ที่ไม่เคยมีประสบการณ์การเขียนโปรแกรมมาก่อนและค่อย ๆ เคลื่อนไปสู่สิ่งที่จำเป็น มันง่ายเสมอก่อนและทั้งหมดนั้น "WTF?!?" ลักษณะเริ่มต้นเสมอกับการแนะนำแนวคิดที่จำเป็นและ OOP เท่านั้น
SK-logic

18

การเขียนโปรแกรมเชิงฟังก์ชั่นและภาษาในตระกูล ML หรือ Haskell มีแนวโน้มที่จะเหมาะสมกับความคิดของนักคณิตศาสตร์


จริงแท้แน่นอน! รายการที่ไม่มีที่สิ้นสุดและสิ่งที่ดีสำหรับจิตใจคณิตศาสตร์

14

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

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


1
คุณสามารถลอง Python เข้าไปในใจของเขาด้วย Sage ( sagemath.org )
Anton Barkovsky

นี่เป็นอีกภาษาหนึ่งในระดับที่สูงกว่าเฉพาะคณิตศาสตร์: math.uiuc.edu/Macaulay2
RyanTM

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

12

สอนเขา Haskell เป็นภาษาที่คุณสามารถคิดได้เหมือนในคณิตศาสตร์:

  • ฟังก์ชั่นเป็นสิ่งที่แมปอินพุตกับเอาต์พุต
  • ประเมินสิ่งต่าง ๆ ตามความจำเป็น
  • การอนุมานประเภทและระบบการพิมพ์แบบบ้า
  • ไวยากรณ์ที่สะดวก
  • ชุมชนที่ยอดเยี่ยม (ตัวอย่างเช่นในStackOverflow )
  • monads

ฉันขอแนะนำให้คุณแสดงให้เขาเห็นhttp://learnyouahaskell.comซึ่งเป็นหนึ่งในบทเรียนที่ดีที่สุดสำหรับ Haskell


11

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

คุณทั้งสองควรตรวจสอบโครงการออยเลอร์ มันคืออะไร?

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

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

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


+2 สำหรับ Project Euler กำลังจะเพิ่มเป็นความคิดเห็นในคำถามหลักจนกว่าฉันจะเห็นคำตอบของคุณ OP และเพื่อนของเขาควรเข้าด้วยกันอย่างแน่นอน
cobaltduck

10
  • สำหรับนักคณิตศาสตร์ที่ยอดเยี่ยมที่สุดคืออัลกอริธึม - เพื่อนของคุณต้องเริ่มนำไปใช้ใน Python (เป็นมิตร)

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


10

ขึ้นอยู่กับสาขาวิชาคณิตศาสตร์ที่เขาสนใจ

ถ้าเขาเข้าสู่ Abstract Algebra หรือ Combinatorics มากขึ้นเขาอาจจะชอบ Haskell เนื่องจากระบบประเภทที่ซับซ้อนช่วยให้สามารถเขียนโปรแกรมคณิตศาสตร์ได้โดยตรง ATSอาจเป็นตัวเลือก

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

ถ้าเขาเป็นคนมากยิ่งขึ้นในการวิเคราะห์เมทริกซ์สมการเชิงอนุพันธ์หรือพลังระบบผมอยากแนะนำให้Matlab , NumPyหรือคู่ APL ผ่านDyalogก็อาจเป็นที่สนใจเช่นกัน แม้ว่าฉันจะไม่เริ่มเขา สูตรตัวเลขในขณะที่ใน C ++ สามารถปรับให้ใช้เป็นแนวทางที่ดีสำหรับอัลกอริทึม

หากเขาต้องการที่จะทำสถิติแล้วRเป็นตัวเลือกที่เป็นธรรมชาติ


5

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

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

หากต้องการให้เพื่อนของคุณหลงรักการเขียนโปรแกรมเหมือนกับพวกเราที่เหลือทำเขาน่าสนใจอย่างแท้จริงโครงการ. ด้านการเขียนโปรแกรมจะไม่ติดถ้าเขาทำงานกับผลิตภัณฑ์ที่เขาพบว่าสวยงาม สำหรับภาษาฉันแนะนำ Mathematica, Racket (อนุพันธ์ของ Scheme ที่เป็นมิตร แต่ก็ยังทรงพลัง), Python และ Haskell Mathematica น่าจะดีที่สุดเพราะเขาสามารถเลือกใช้ฟังก์ชันทางคณิตศาสตร์ของตนเองและใช้ Mathematica ที่สร้างขึ้นในห้องสมุดเพื่อทำโครงงานให้เสร็จสิ้น (เช่นเขียนฟังก์ชันที่คำนวณสัมประสิทธิ์ฟูริเยร์จากนั้นใช้ Mathematica ทำการวิเคราะห์ที่เหลือเช่น เช่นการกรองการสร้างภาพ ฯลฯ ) แม้แต่หัวข้อพื้นฐานเช่นการรวมให้โครงการที่น่าสนใจ (กฎการสร้างพื้นที่สี่เหลี่ยมจัตุรัสที่แตกต่างกันบูรณาการ monte carlo, การเปลี่ยนแปลงอย่างอ่อนโยนในการเรียนรู้ของเครื่องด้วยชุดข้อมูลขนาดใหญ่)

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

Python และ Mathematica นั้นมีความเป็นมิตรมากขึ้นและ Mathematica มีช่วงการเรียนรู้ที่ตื้นที่สุดเพราะห้องสมุดทั้งหมดได้รับการบรรจุไว้ในส่วนต่อประสานผู้ใช้ที่ดีพร้อมกับเอกสารที่ยอดเยี่ยม (เพียงแค่กด F1!) บนมืออื่น ๆ ที่มีหนังสือเล่มหนึ่งที่ผมเคยได้ยิน ( แต่ไม่ได้อ่าน) ซึ่งมีทั้งการเปลี่ยนแปลงคณิตศาสตร์ขั้นสูงและการแนะนำให้ Haskell พร้อมกัน ดูเหมือนว่ามีบทวิจารณ์ของ Amazon ในเชิงบวกดังนั้นคุณอาจต้องการตรวจสอบ เขาสามารถเลื่อนไปใช้ภาษาอย่าง C # และ Java ได้หากเขาต้องการทำสิ่งต่างๆในอุตสาหกรรม แต่มีแนวโน้มว่าเขาจะไม่จำเป็นต้องเข้าไปในป่านั้น (และวิชาคณิตศาสตร์อุตสาหกรรมจำนวนมากก็คือ Matlab ล้วนๆ)

แต่อย่างที่ฉันพูดด้วยโครงการที่ถูกต้องการเรียนรู้ภาษากลายเป็นความสุขสิ่งที่โครงการอาจจะ


3

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

ด้วยภาษานี้คุณระบุภาคแสดงของคุณ (สมมติฐานเริ่มต้น "ข้อเท็จจริง") และกฎการอนุมาน ("ความสัมพันธ์") แล้วถามคำถาม

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

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

หรือคุณสามารถขอให้ "รายการสัตว์ทั้งหมดที่คุณรู้" และคุณจะได้รับรายการ "ทอม" เดียว

แน่นอนว่าไวยากรณ์นั้นซับซ้อนกว่านั้นเล็กน้อย แต่คุณจะได้ความคิดทั่วไป


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

คุณสามารถทดสอบการปฏิเสธได้หรือไม่?
Bill Michell

2

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

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

SICP เป็นอิสระที่สามารถดูได้ที่เว็บไซต์ของเอ็มไอที

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


1

ฉันเห็นด้วยกับ Haskell แต่จากมุมมองเชิงปฏิบัติเขาควรเรียนรู้ภาษาในเครื่องนามธรรมที่ใช้กันอย่างแพร่หลาย ฉันหมายถึงภาษา JVM หรือภาษา. NET แน่นอน

มีภาษาบนแพลตฟอร์มเหล่านี้ที่น่าสนใจกว่าภาษาเรือธงเล็กน้อย ใน JVM ดูที่ Clojure และ Scala บนแพลตฟอร์ม. NET ดูที่ F #

นอกจากนี้ยังมีภาษา. NET จาก Microsoft Research เรียกว่า c-omega ซึ่งน่าสนใจมาก แต่เป็นเพียงโครงการวิจัย


1

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

วิศวกรรมซอฟต์แวร์และวิศวกรรมไฟฟ้าสามารถรวมเข้ากับวิศวกรรมคอมพิวเตอร์


0

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

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

หากเขาแสดงความสนใจใด ๆ ในซอร์สโค้ดให้เขาแสดงวิธีการเขียนข้อมูลของเขาเอง โดยส่วนตัวแล้วฉันคิดว่าภาษานั้นไม่สำคัญตราบใดที่ง่ายต่อการเรียนรู้และมีเอกสารมากมาย


0

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


0

ฉันคิดว่าคุณควรแสดงให้เพื่อนของคุณเห็นสายพันธุ์ที่แตกต่างกันเช่น:

  • C
  • เสียงกระเพื่อม / โครงการ
  • ขั้นพื้นฐาน
  • บอร์นเปลือก
  • อารัมภบท

ฉันคิดว่า C และ LISP เป็นจุดเริ่มต้นที่ดีซึ่งแสดงให้เห็นว่าภาษาที่แตกต่างกันนั้นเหมาะสมกว่าสำหรับงานที่แตกต่างกัน ฉันไม่เชื่อในการใช้ Haskell หรือ Erlang สำหรับทุกสิ่ง

รหัสเครื่อง (หรือแอสเซมเบลอร์) สำหรับโปรเซสเซอร์ที่เรียบง่ายอาจน่าสนใจเช่นกัน ฉันได้รับเสมอฉันมีความสุขเริ่มต้นด้วยรหัสเครื่องในครั้งแรกของฉันC64 ( MOS 6510 ) ประสบการณ์ภาคปฏิบัติที่ผู้ใหญ่ยากที่จะ "เสีย" ในเวลา จำกัด


ฉันไม่เห็นด้วย ทำไมเด็กตัวเล็กที่น่าสนใจในวิชาคณิตศาสตร์ถึงได้รับความสนใจในรหัสเครื่อง? และทำไม C แอสเซมบลีสันนิษฐานความรู้เกี่ยวกับโปรเซสเซอร์มากเกินไป C เช่นเดียวกันทำให้มีข้อกำหนดมากมายที่เหลือไว้สำหรับคนที่ต้องการเรียนรู้การเขียนโปรแกรมอย่างจริงจังเช่นพอยน์เตอร์, รีจิสเตอร์, การกำหนดขอบเขต, ประเภท สำหรับการแนะนำครั้งแรกในการเขียนโปรแกรมสำหรับบุคคลเช่นนั้นสิ่งที่มุ่งเน้นไปที่อัลกอริทึมหรือการประยุกต์ใช้ความคิดทางคณิตศาสตร์ (ความน่าจะเป็นแบบสุ่มการจำลอง) จะดีกว่ามาก Python, Lisp / Forth, Basic สม่ำเสมอ บอร์นเปลือก ?? ทำไม? ...
อัสซาด Ebrahim

0

สำหรับฉันการเขียนโปรแกรมเริ่มต้นจากความต้องการที่จะ "ทำอะไรบางอย่าง" เป็น "จะเกิดอะไรขึ้น?" คำถาม:

  • "ฉันต้องการสร้างเว็บไซต์ของตัวเอง" ดังนั้นเรียนรู้เกี่ยวกับ HTML และอื่น ๆ

  • "ฉันเกลียดที่ฉันต้องคลิก X หรือว่าฉันเห็น Y ในเว็บไซต์นี้ทุกครั้งที่ฉันเข้าชมไม่มีวิธีที่จะทำให้มันเป็นไปโดยอัตโนมัติหรือไม่" ดังนั้นคุณเรียนรู้เกี่ยวกับ bookmarklets หรือเขียนส่วนขยายของเบราว์เซอร์

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

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

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


-2

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

โมดูลนี้พร้อมใช้งานเสมอ มันให้การเข้าถึงฟังก์ชั่นทางคณิตศาสตร์ที่กำหนดโดยมาตรฐาน C

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

ฟังก์ชั่นต่อไปนี้มีให้โดยโมดูลนี้ ...

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