ฉันจะได้รับประสบการณ์การเขียนโปรแกรมมากขึ้น [ปิด]


9

ฉันจะเป็นนักศึกษาวิทยาศาสตร์คอมพิวเตอร์ปีที่สามและฉันได้อ่าน Head first Java, Head First C และตอนนี้ฉันกำลังอ่าน C ++ ซึ่งเป็นภาษาที่ฉันชอบมากที่สุดเนื่องจากมีรูปแบบการสอนที่ดีสำหรับผู้ที่มีประสบการณ์ ฉันวางแผนที่จะเรียนรู้การทำซอฟต์แวร์ด้วย QT เรียนรู้เกี่ยวกับวัตถุประสงค์ -C (สำหรับ iphone) หรืออ่าน C ++ ที่มีประสิทธิภาพ

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


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

คุณจะไปที่ Carnegie Hall ได้อย่างไร
jfrankcarr

1
ฉันจะฟังเหมือนไอ้ชั่ววินาที แต่ ... ประสบการณ์ - การมีส่วนร่วมในกิจกรรมหรือกิจกรรมที่นำไปสู่การสะสมความรู้หรือทักษะ ดังนั้นเริ่มมีส่วนร่วมในการเขียนโปรแกรม
Steven Evers

1
BTW ความแตกต่างระหว่าง StackOverflow และโปรแกรมเมอร์คืออะไร? รูปแบบของคำถามที่ปิดหมายถึงการทำให้โปรแกรมเมอร์เป็นเพียง StackOverflow อื่นหรือไม่ จุดคืออะไร - เพียงแค่ผสานทั้งสอง เราเคยสามารถถามคำถามที่ลึกลับเกี่ยวกับโปรแกรมเมอร์ซึ่งเราไม่สามารถอยู่ใน StackOverflow ได้
שינתיאאבישגנת

คำตอบ:


11

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

บางโครงการที่ได้ผลดีสำหรับฉันในอดีต: ล่ามภาษาย่อยบางภาษา, ray tracer, PEG parser generator, parser HTTP ส่วนหัว, parser ส่วนหัว HTTP, echo client / เซิร์ฟเวอร์ง่าย ๆ , bot twitter สำหรับโพสต์ทวีตโดยอัตโนมัติจากคิว, ผลิตภัณฑ์ Amazon มีดโกนเพื่อค้นหาข้อเสนอ


+1 คุณพูดถึงโครงการที่น่าสนใจจริงๆขอบคุณ
แอนโธนี

8

อย่างที่อธิบายไว้ในการสอนการเขียนโปรแกรมด้วยตัวเองในสิบปีคุณควรทำตามขั้นตอนต่อไป:

  • รับความสนใจในการเขียนโปรแกรมและทำบางอย่างเพราะมันสนุก ตรวจสอบให้แน่ใจว่ามันสนุกพอที่จะทำให้คุณพร้อมที่จะใส่ในสิบปีหรือ 10,000 ชั่วโมง

  • โครงการ การเรียนรู้ที่ดีที่สุดคือการเรียนรู้ด้วยการทำ เพื่อเพิ่มความสามารถทางเทคนิค "ระดับสูงสุดของประสิทธิภาพสำหรับบุคคลในโดเมนที่กำหนดไม่ได้รับโดยอัตโนมัติในฐานะที่เป็นฟังก์ชั่นของประสบการณ์เพิ่มเติม แต่ระดับของประสิทธิภาพสามารถเพิ่มขึ้นแม้โดยบุคคลที่มีประสบการณ์สูงซึ่งเป็นผลมาจากความพยายาม ." (หน้า 366) และ "การเรียนรู้ที่มีประสิทธิภาพมากที่สุดต้องมีงานที่กำหนดไว้อย่างดีพร้อมระดับความยากที่เหมาะสมสำหรับบุคคลเฉพาะข้อเสนอแนะข้อมูลและโอกาสในการทำซ้ำและแก้ไขข้อผิดพลาด" (หน้า 20-21) หนังสือความรู้ความเข้าใจในการปฏิบัติ: จิตใจคณิตศาสตร์และวัฒนธรรมในชีวิตประจำวันเป็นข้อมูลอ้างอิงที่น่าสนใจสำหรับมุมมองนี้

  • พูดคุยกับโปรแกรมเมอร์คนอื่น ๆ อ่านโปรแกรมอื่นสิ่งนี้สำคัญกว่าหนังสือหรือหลักสูตรฝึกอบรมใด ๆ

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

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

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

  • เรียนรู้ภาษาการเขียนโปรแกรมอย่างน้อยครึ่งโหล รวมหนึ่งภาษาที่สนับสนุน abstractions คลาส (เช่น Java หรือ C ++), หนึ่งที่รองรับ abstraction ที่ใช้งานได้ (เช่น Lisp หรือ ML), หนึ่งที่รองรับนามธรรม abtraction (เช่น Lisp), หนึ่งที่รองรับข้อกำหนดที่ประกาศ (เช่น Prolog หรือ C ++ template) ที่สนับสนุน coroutines (เช่น Icon หรือ Scheme) และอีกอันที่รองรับการขนาน (เช่น Sisal)

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

  • มีส่วนร่วมในความพยายามในการสร้างมาตรฐานภาษา อาจเป็นคณะกรรมการ ANSI C ++ หรืออาจตัดสินใจได้ว่ารูปแบบการเข้ารหัสในเครื่องของคุณจะมีการเว้นวรรค 2 หรือ 4 ระดับ ไม่ว่าจะด้วยวิธีใดคุณจะได้เรียนรู้เกี่ยวกับสิ่งที่คนอื่นชอบในภาษาพวกเขารู้สึกลึกซึ้งมากเพียงใดและบางทีแม้แต่เล็กน้อยเกี่ยวกับสาเหตุที่พวกเขารู้สึกเช่นนั้น

  • มีความรู้สึกที่ดีที่จะเลิกใช้ความพยายามด้านมาตรฐานภาษาโดยเร็วที่สุด


3

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

ฉันว่าการอ่านยังมีบทบาทสำคัญด้วยคุณสามารถมองหาทีมนักพัฒนาที่กำลังโฮสต์โครงการโอเพนซอร์ซ (ดูที่ github หรือไซต์อื่นที่คล้ายคลึงกัน) เพราะพวกเขาสามารถมอบประสบการณ์การพัฒนาทีมที่มีค่าให้คุณ


2

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

ในโครงการ GitHub ขนาดเล็กนี้จะสามารถเข้าถึงได้มากขึ้น คุณมีทิศทางและจุดประสงค์ในการพยายามคลานรหัสแทนการเดินลุย ๆ


1

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

ทำงานกับโครงการจริง

แต่ถ้าไม่มีประสบการณ์โครงการจริงคุณมักจะลืมสิ่งที่เรียนรู้

ปัญหาคือโอกาสที่จะแสดงสิ่งที่คุณสามารถทำได้

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


-1

ฉันต้องเรียนรู้ php, mySQL หรือภาษาอื่น ๆ

ใช่แล้วโปรดพิจารณาภาษาของเวิลด์ไวด์เว็บ HTML5, CSS3 และ JavaScript

นี่คือเหตุผล:

  1. พวกเขาเรียนรู้ได้อย่างรวดเร็วและอุดมไปด้วยมากขึ้นในการใช้

  2. พวกเขาไม่เพียงแค่เขียนเว็บ แต่ระบบปฏิบัติการเซิร์ฟเวอร์และฐานข้อมูลอีกต่อไป

  3. สำคัญที่สุด*

    ตอนนี้กำลังถูกใช้เพื่อกำหนดวิทยาการคอมพิวเตอร์อีกครั้ง 101 - โดยผู้สร้าง jQuery, John Resig

อย่ายิง messenger เพียงตรวจสอบลิงค์นี้เพื่อkhan โรงเรียนสถาบันการศึกษา

c / c ++ / c # รูปแบบการออกแบบถ่ายโอนไปยัง JS ที่นั่น

หวังว่าจะช่วย


+1 - ผิดที่มีการลงคะแนน ข้อมูลถูกต้อง ลิงค์นั้นน่าเชื่อถือ แหล่งที่มาคือ jQuery Genius John Resig - เริ่มต้นหลักสูตรการเขียนโปรแกรม 101 ด้วย JavaScript และใช้งานได้ ตรวจสอบ Khan Academy โหวตขึ้นสำหรับศักยภาพในการพัฒนาการศึกษา อย่างน้อย ขอบคุณ.
แจ็คสโตน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.