ในฐานะโปรแกรมเมอร์ฉันควรรู้ภาษาการเขียนโปรแกรมระดับต่ำและระดับสูงหรือไม่ [ปิด]


18

ฉันได้รับการติดต่อให้ทำงาน LED ควบคุมการทำงานระยะไกลแสดงผ่าน TCP / IP แต่ประสบการณ์และการเตรียมการของฉันส่วนใหญ่เกี่ยวกับภาษาการเขียนโปรแกรมระดับสูง ฉันบอกกับคนที่ติดต่อฉันเกี่ยวกับงานและเขาบอกฉันว่า:

"ถ้าคุณเรียกตัวเองว่าโปรแกรมเมอร์คุณควรรู้ทุกสิ่งเหล่านี้"

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


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

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

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

3
อีกกรณีหนึ่งของ "ว้าวดีใจที่ฉันพลาดกระสุนนัดนั้น!" คุณไม่ต้องการที่จะทำงานให้กับหรือมีคนเห่อคนเช่นนี้หรือไม่?
Edward Strange

2
@Schedler - และหากพวกเขาไม่ได้เผากระดานของตัวเองพวกเขากำลัง newbs ทั้งหมด
Edward Strange

คำตอบ:


37

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

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

ฉันจะไม่ทำงานให้คนที่มีทัศนคติต่อการติดต่อของคุณ


4
+1: ความคิดเห็นไม่สมเหตุสมผลในตอนแรก
S.Lott

แม้ว่าฉันจะพนันได้เลยว่ามีผู้ประกอบการจำนวนมากเท่านั้นที่ยินดีที่จะเรียกเก็บเงินจากเขาเป็นรายชั่วโมง
Erik Reppen

22

"ถ้าคุณเรียกตัวเองว่าโปรแกรมเมอร์คุณควรรู้ทุกสิ่งเหล่านี้"

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

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


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

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

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

8

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

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

ฉันเดาว่าช่างไม้ทุกคนควรรู้วิธีการแกะสลักเฟอร์นิเจอร์ที่หรูหรา หากนักบินสามารถบินได้หนึ่งลำเธอก็สามารถบินได้ทั้งหมด


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

6

โปรแกรม CS ส่วนใหญ่ในโรงเรียนจะให้ความรู้ในการเขียนโปรแกรมระดับต่ำ ตัวอย่างเช่นฉันมีคลาสแอสเซมเบลอร์โดยใช้ตัวประมวลผล 8088 (ตกลง ... ดังนั้นวันที่ฉันเล็กน้อย) อย่างไรก็ตามผมคิดว่าโรงเรียนการค้าจำนวนมากในทุกวันนี้หลีกเลี่ยงความรู้ - ส่งต่อความคิดเห็นหากไม่เป็นความจริง

บรรทัดล่างคือมันดีเสมอที่จะรู้ว่าเกิดอะไรขึ้นกับระดับชิป - นอกจากนี้ภาษาระดับสูงของคุณก็จะจบลงเมื่อมันทำงาน

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

ฉันจะต้องพิจารณาอย่างจริงจังว่าจะไม่ทำโครงการนั้นหากลูกค้ากำลังพูดกับคุณอยู่แล้ว - คุณไม่มีทางรู้ว่าจะไปไหน


6

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

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


3

ฉันขอแนะนำให้คุณอ่าน:

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

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

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


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

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

2

การโต้เถียงของเขาเป็นตัวอย่างที่ดีของการเข้าใจผิดตรรกะไม่จริงสกอต

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

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


1

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

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

อาจเป็นคนที่บอกคุณว่า "วลี" ผิดหวังบางทีคุณอาจไม่ใช่คนที่เขาติดต่อด้วยเท่านั้น

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

เสียงเชียร์

WARDY


1

การมีความรู้เชิงทฤษฎีเป็นสิ่งที่ดี ความสามารถในการเรียนรู้ภาษาระดับต่ำเมื่อจำเป็นมีความสำคัญมาก

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


-2

ฉันจะวลีอีกครั้ง

"ถ้าคุณเรียกตัวเองว่าโปรแกรมเมอร์คุณควรรู้ทุกสิ่งเหล่านี้"

ถึง

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

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