Backtrack“ การศึกษา” ของฉัน [ปิด]


13

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

ฉันไม่ได้เรียนรู้พื้นฐาน (ถ้าคุณจะเรียกพวกเขาว่าพื้นฐาน)

ฉันไม่ได้เรียนรู้เกี่ยวกับวิทยาการคอมพิวเตอร์

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


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

@JamesDrinkard: มันเป็นเพียงเพื่อการเรียนรู้! ฉันไม่ได้ทำเพื่อหาเลี้ยงชีพ
ไดนามิก

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

@ GuySirton: ฉันเป็นนักเรียนมัธยม ฉันไม่มีเหตุผลที่จะเขียนโปรแกรมฉันทำจริงๆ!
ไดนามิก

คำตอบ:


21

ฉันจะทำสิ่งนี้:

เส้นทาง A: วิธี Semi-Typical

  1. เรียนรู้ภาษาด้วยไวยากรณ์ที่ปรับให้เป็นมาตรฐานมากขึ้นเช่น Java, C # หรือ Python Perl เป็นเครื่องมือที่มีประโยชน์อย่างมาก แต่ก็ยังเป็นอิสระอย่างมากในแง่ของวิธีการที่คุณสามารถทำสิ่งต่างๆ ภาษาอื่น ๆ ที่ฉันระบุไว้นั้นมีน้อยกว่ามาก

  2. รับหนังสือเกี่ยวกับโครงสร้างข้อมูลในภาษาดังกล่าว

  3. รับหนังสือเกี่ยวกับอัลกอริทึมในภาษาดังกล่าว

  4. รับโค้ดที่สมบูรณ์และมีประสิทธิภาพ Java / C # / เวอร์ชันของ Python คืออะไร

เส้นทาง B: เส้นทางแห่งการตรัสรู้ของ Joel Spolsky (หรือความตายให้เลือก)

  1. รับหนังสือ "รหัส"

  2. รับ K & R ของ "ภาษาการเขียนโปรแกรม C"

  3. รับโครงสร้างและการตีความการเขียนโปรแกรมคอมพิวเตอร์

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

วิธีที่ 2 นั้นง่ายกว่ามากมันเป็นแนวทางพื้นฐานมากกว่า "Code" ที่อธิบายพื้นฐาน K&R แนะนำสิ่งที่ระดับเครื่องจักรและ SICP แนะนำแนวคิดระดับสูงขึ้น มันเป็นเส้นทางที่ยากกว่า แต่มีสมาธิมากกว่า

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

ภาคผนวก:

เท่าที่มีของว่าง: Python the Hard ดังที่แสดงไว้ด้านล่างเป็นการเริ่มต้นที่ดีจากที่นั่นวิธีคิดเหมือนนักวิทยาศาสตร์คอมพิวเตอร์คือความต่อเนื่องที่สมเหตุสมผล

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

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

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

นอกจากนี้เรื่องตลก CS / CS แรกของคุณ: คุณต้องการที่จะ "Refactor" การศึกษาของคุณไม่ใช่ Backtrack


ขอขอบคุณ! คุณจะมีหนังสือออนไลน์ให้อ่านฟรีไหม นอกจากนั้นนี่เป็นคำตอบที่น่าทึ่ง!
ไดนามิก

5
+ 1 สำหรับโครงสร้างและการตีความของการเขียนโปรแกรมคอมพิวเตอร์ (SICP) สามารถพบได้ออนไลน์ที่นี่: mitpress.mit.edu/sicp
NWS

การรู้จัก Perl, Python จะทำให้ฉันมีปัญหามากมายในการทำความคุ้นเคย
ไดนามิก

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

1
@kevincline: จริง ๆ แล้วหลังจากทำแบบฝึกหัด Python มันก็ทำให้ฉันมีปัญหามากมาย IMHO สิ่งที่เรียบง่ายที่สุดใน Perl นั้นยากใน Python
ไดนามิก

4

ฉันจะบอกว่ามุ่งไปที่Learn Python the Hard Way ; มันเป็นวิธีการที่ดี ไปจากที่นั่น; จะใช้เวลานานพอที่จะให้เวลาคุณในการค้นหาแหล่งข้อมูลอื่น ๆ

ในความคิดของฉัน "เส้นทาง B" ที่กล่าวถึงในคำตอบอื่นไม่เหมาะสมในขั้นตอนนี้


1

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

ฉันเริ่มต้นด้วยไฟล์ DOS Batch จากนั้น QuickBasic จากนั้น Visual Basic, VBA, MASM ที่มี Access สำหรับการทำงานของฐานข้อมูลก่อนที่จะลงจอดงานแรกของฉัน สำหรับฉันนั่นเป็นเส้นทางที่ดีที่สุดเริ่มต้นง่ายๆจากนั้นสร้างจากที่นั่น

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

ในฐานะที่เป็นภาษาที่ช่วยให้เรียนรู้การพัฒนาเว็บไซต์จาวาสคริปต์อย่างแน่นอน PHP เป็นที่นิยมและ Python แต่นั่นคือ IMHO สมมติว่าคุณจะรู้หรือเรียนรู้ HTML / CSS ฉันประเมินจาวาสคริปต์ต่ำเกินไปจริง ๆ แม้ว่าฉันจะใช้มาตั้งแต่ปี 2544 แต่ฉันก็ทำแบบเดียวกันกับ CSS และไม่คิดว่ามันสำคัญ ฉันเปลี่ยนความเห็นของฉันในเรื่องนั้นเช่นกัน

เมื่อฉันพยายามหาแนวโน้มฉันไปที่ http://www.indeed.comและคลิกที่ลิงก์แนวโน้มในส่วนบนซ้ายของหน้า จากนั้นฉันก็ใส่คำหลักเช่น PHP และ Python และดูว่าตำแหน่งใดถูกวางลงสำหรับตำแหน่งงานจริงที่อยู่บนอินเทอร์เน็ต

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


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

-1

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

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