ภาษาการเขียนโปรแกรมสำหรับวิศวกรอิเล็กทรอนิกส์


22

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

ฉันรู้ว่า VB .Net, C # และ C ++ ฉันมีเวลาเหลือเฟือในวันหยุดของฉันดังนั้นฉันจึงต้องการที่จะเจาะลึกลงไปในเชิงโปรแกรมใน "สนามอิเล็กทรอนิกส์" ดังนั้นสิ่งที่คุณจะแนะนำให้เรียนรู้หรือมุ่งเน้น

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


3
"Solder" หรือที่จริงจังกว่านั้นคือ C ธรรมดาเป็นธรรมสำหรับเครื่องมือสนับสนุนแม้ว่าในปัจจุบันไพ ธ อนจะค่อนข้างทันสมัย
Chris Stratton

คำตอบ:


29

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

ไมโครคอนโทรลเลอร์ส่วนใหญ่ต่ำกว่าขนาดที่กำหนด (เช่น PIC, AVR, MSP430 และอื่น ๆ ) ใช้ C (หรือแอสเซมเบลอร์) เนื่องจากมีคุณภาพสูงจำนวนมาก (เวอร์ชั่นฟรีและรุ่น $$ - เช่นคอมไพเลอร์เชิงพาณิชย์จำนวนมากใช้คอมไพเลอร์ GCC ฟรี) .
คุณจะได้รับภาษาอื่น ๆ เช่น JAL ที่ยอดเยี่ยมสำหรับ PIC (ผู้เขียนดั้งเดิม Wouter Van Ooijen ซึ่งเป็นสมาชิกที่นี่), PICBASIC, Ada รุ่นต่างๆ แต่เนื่องจากความนิยมและจำนวนคอมไพเลอร์ที่มีอยู่ฉันว่า C เป็นภาษาที่เลือก สำหรับส่วนใหญ่ ในขณะที่สิ่งนี้ไม่ได้หมายความว่ามันเป็นภาษาที่ดีที่สุดการใช้ภาษาที่ได้รับความนิยมมากที่สุดนั้นมาพร้อมกับข้อได้เปรียบที่ชัดเจน (เอกสารการสนับสนุนการพกพาการทำงานร่วมกันเป็นต้น)
สำหรับไมโคร 32 บิตที่ซับซ้อนและมีขนาดใหญ่ขึ้น มี c ++ และคอมไพเลอร์อื่น ๆ

ฉันจะกระโดดเข้าไปหาบอร์ดพัฒนาบางส่วนแล้วเขียนโค้ด คุณสามารถเลือก micro 8 บิตแบบโลว์เอนด์แบบต่ำเช่น PIC16F (ชุดเริ่มต้นจำนวนมากบน Microchip Direct)
ช่วงกลางของไมโคร 16 บิตเช่น PIC24 และลินุกซ์ C / C ++ / ฝังตัว ARM ของการเรียงลำดับบางอย่าง - STM32F4 ARM Cortex M4 Discovery เป็นกระดาน dev ที่ราคาถูกมากซึ่งอาจคุ้มค่าที่จะคว้า
ในตรรกะที่ตั้งโปรแกรมได้และภาษาคำอธิบายฮาร์ดแวร์ (HDL - สองตัวใหญ่คือ Verilog และ VHDL) ก็อาจคุ้มค่าที่จะได้รับการถือครองบอร์ด FPGA หรือ CPLD dev จาก Diglent หรือคล้ายกัน

หากคุณไม่ต้องการรอบอร์ด dev คุณสามารถดาวน์โหลด MPLAB หรือ MPLABX และใช้เครื่องมือจำลองที่ยอดเยี่ยมเพื่อลองใช้งานกับการพัฒนา PIC เช่นเดียวกันกับเครื่องมืออื่น ๆ เช่นคุณสามารถดาวน์โหลด Xilinx ISE Webpack ได้ฟรีและลองใช้ HDL และการออกแบบตรรกะที่ตั้งโปรแกรมได้


9
PIC อาจมีราคาถูก แต่ด้วยความเสี่ยงที่จะเกิดสงครามไฟฉันจะยืนยันว่าการใช้ PIC เป็นเครื่องมือการเรียนรู้สอนให้คุณเขียนโปรแกรม PIC แทนการสอนให้คุณเขียนโปรแกรมไมโครคอนโทรลเลอร์ที่ใช้งานทั่วไป สำหรับเรื่องนี้ MSP, AVR (Arduino), ARM ARM ต่ำสุดหรือแม้กระทั่งโปรเซสเซอร์ 8051 ที่น่าเคารพจะช่วยให้สามารถถ่ายโอนทักษะได้ง่ายขึ้น
คุณ

ขอบคุณมาก ... นี่เป็นประโยชน์อย่างมาก แต่เพื่อสรุปคำตอบของคุณ: สิ่งที่ฉันต้องการในตอนนี้คือการทำงานกับ C ++ และการเรียนรู้ C ต่อไปเรียนรู้ Verilog หรือ VHDL หรือทั้งสองอย่างและจับกระดาน dev ไม่กี่ตัวเพื่อฝึกฝนหรือเพียงแค่ใช้อุปกรณ์จำลองเป็นจุดเริ่มต้น
Siraj Muhammad

1
@SirajMuhammad - ใช่แล้วเกี่ยวกับเรื่องนี้นอกเหนือจากการเรียนรู้ทั้ง Verilog และ VHDL อาจไม่จำเป็นเนื่องจากพวกเขามักจะสามารถใช้ร่วมกันในการออกแบบ การออกแบบ Verilog ของคุณและมันจะทำงานได้ดี) เพียงแค่เลือกหนึ่งอัน
Oli Glaser

4
@Ian - ฉันไม่ได้บอกว่ามันมีจะเป็น PIC ว่าเป็นเพียงตัวอย่าง (เพราะฉะนั้น "เหมือน PIC") ในกรณีใด ๆ หากคุณเขียนโปรแกรมใน C ผมไม่คิดว่าจะมีมากโดยรวม ความแตกต่างระหว่างไมโครขนาดเล็ก ๆ แน่นอนที่จะได้รู้ว่ามีไมโครภายในหนึ่งตัว (ประกอบและทั้งหมด) มีประโยชน์ แต่สำหรับการเริ่มต้นในระดับที่สูงขึ้นสิ่งต่าง ๆ ควรมีลักษณะเหมือนกันมากแค่เครื่องมือต่าง ๆ ฉันคิดว่ามันควรค่าแก่การลองสักเล็กน้อยก่อนที่จะตัดสินใจทำอะไรเลย
Oli Glaser

2
"ไม่ควรยากเกินไปถ้าคุณรู้จัก C ++ อยู่แล้ว" ฉันจะไม่เห็นด้วยกับใครบางคนที่รู้ว่า "VB .Net, C♯และ C ++" อาจใช้หลังในรูปแบบ RAII ที่เน้นวัตถุในระดับสูงและอาจต้องใช้เวลาสักครู่เพื่อให้เข้าใจคู่มือได้อย่างเหมาะสม การจัดการหน่วยความจำ
leftaroundabout

23

เรียนรู้ C และรับบอร์ดพัฒนาไมโครคอนโทรลเลอร์ราคาถูกเช่น MSP430 หรือ ARM Cortex และอย่างน้อยก็เขียนและโหลดโปรแกรม C บางโปรแกรม

ฉันมีปริญญาวิทยาศาสตร์คอมพิวเตอร์และพื้นหลังการพัฒนาซอฟต์แวร์ซึ่งส่วนใหญ่การเขียนโปรแกรม C ++ สำหรับเกมและตอนนี้เกมและแอพ iOS แต่งานสุดท้ายของฉันคือเซกเตอร์ EE กึ่งอาชีพที่เริ่มต้นด้วยการเขียนโปรแกรมเฟิร์มแวร์สำหรับระบบ ARM Cortex M3 และต่อมาฉันก็เรียนรู้วิธีการออกแบบวงจรพื้นฐานและเค้าโครงบอร์ดและออกแบบบอร์ดง่ายๆสองสามแผ่น ดังนั้นโดยทั่วไปฉันต้องเผชิญหน้ากับปัญหาในการใช้ภาษาการเขียนโปรแกรมที่ดีที่สุดในการเชื่อมโยงการออกแบบฮาร์ดแวร์ / ซอฟต์แวร์เป็นคนที่รับผิดชอบทั้งสองด้านของมัน

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

ที่กล่าวว่าเนื่องจากเครื่องมือ MCU ส่วนใหญ่นั้นใช้ GCC เป็นคอมไพเลอร์ของพวกเขาคุณจะต้องมีคอมไพเลอร์ C ++ แน่นอนถ้าคุณใช้ตระกูล MCU ที่เหมาะสม แต่คุณต้องระวังอย่างมากเกี่ยวกับคุณสมบัติที่คุณใช้โดยเฉพาะอย่างยิ่งจากไลบรารีมาตรฐานเพราะมันง่ายที่จะจบลงด้วยเลขฐานสองที่ใหญ่เกินไปที่จะใส่ลงในอุปกรณ์ของคุณ ฉันคิดว่ามีกรณีที่ดีสำหรับการใช้ C ++ บนอุปกรณ์ฝังตัว C ++ มีคุณสมบัติที่ดีไม่กี่อย่างที่มีเศษซากพืชหรือไม่มีขนาดหรือการลงโทษด้วยความเร็วคุณเพียงแค่ต้องรู้ว่าคุณกำลังทำอะไรและเขียนโค้ดอย่างถูกวิธี เพิ่มเติมเกี่ยวกับปลาย C-style ของสเปกตรัมกว่า STL สิ้นสุดของสเปกตรัมในแง่ของการใช้คุณสมบัติที่ชาญฉลาด

อย่าให้ความสนใจมากเกินไปกับคนที่พูดว่าคุณสามารถใช้ Lua หรือ Python บน MCU ด้วย blah interpreter blah, blah นั่นเป็นความจริงฉันได้ทำแล้วและมันก็สนุก แต่ในขณะนี้มันมีมากกว่าสำหรับโครงการของเล่นและสิ่งต่าง ๆ ที่ปรากฏใน Hack a Day ฉันคิดว่าเราจะเห็นสิ่งต่าง ๆ มากขึ้นเนื่องจากกฎของมัวร์ใช้กับโปรเซสเซอร์ขนาดเล็กอย่างไม่หยุดยั้งนี่เป็นสิ่งที่เกิดขึ้นกับเกมที่เคยมีการชุมนุมจำนวนมากจากนั้นพวกเขาก็จัดการกับ C และ C ++ ได้นานขึ้น มากกว่าทุกคนและตอนนี้ทุกอย่างรวดเร็วและประสิทธิภาพของนักพัฒนาเป็นสิ่งสำคัญที่การพัฒนาจำนวนมากกระทำโดยใช้ภาษาระดับสูงที่ฝังอยู่หรือในภาษาระดับสูงทันที ถึงกระนั้นมันจะเป็นไม่กี่ปีก่อนที่คุณจะเห็น บริษัท ที่จ้างโปรแกรมเมอร์เฟิร์มแวร์ที่มีภูมิหลังของ Python และ Lua

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


1
เป็นมูลค่าที่บอกว่าไม่กี่บรรทัดของการชุมนุมของคุณจะอยู่ในงบประกอบแบบอินไลน์ ( asm()) ซึ่งฝังอยู่อย่างในรหัส C ของคุณ นี่คือการรวมกันที่ชนะในทุก ๆ ทาง ระดับสูง แต่กระทัดรัดโดยมีการลดลงของแอสเซมบลีเป็นครั้งคราวตัวอย่างเช่นเวลาจะต้องเหมาะสม avr-gcctoolchain แล้วไม่นี้จำนวนมากที่มีแมโคร C เพื่อให้คุณไม่เคยแจ้งให้ทราบล่วงหน้า
Alexios

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

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

3
@Ian - ความสามารถในการอ่านแอสเซมเบลอร์ไม่มีประโยชน์หากคุณไม่รู้วิธีเขียน คุณต้องอ่านมันและเปรียบเทียบกับสิ่งที่คุณจะทำถ้าคุณเขียนมัน
Rocketmagnet

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

10

ฉันเห็นด้วยกับคนอื่น ๆ ที่คุณต้องมีความสามารถในซี

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

การทำความเข้าใจกับแอสเซมเบลอร์ที่ C ของคุณสร้างขึ้นจะช่วยให้คุณสามารถเขียน C ที่เหมาะสมที่สุดในแง่ของความเร็วและความกะทัดรัด รหัสที่เร็วขึ้นหมายถึง:

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

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


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


คุณหมายถึงอะไรโดย "ภาษาแอสเซมบลีหนึ่งภาษา" ฉันรู้ว่ามีภาษาที่เรียกว่าแอสเซมบลีมันมีสาขาหรืออะไรแบบนั้น คุณกรุณาตั้งชื่อได้ไหม? และขอบคุณมากสำหรับคำตอบของคุณ
Siraj Muhammad

4
CPU หรือ MCU แต่ละประเภทมีภาษาแอสเซมบลีของตัวเองพร้อมคำแนะนำที่แตกต่างกัน พวกเขาทั้งหมดค่อนข้างคล้ายกัน แต่มีความแตกต่างที่สำคัญ เรียนรู้ภาษาแอสเซมบลีสำหรับ MCU ที่คุณใช้
Rocketmagnet

1
กำลังจะพูดตรงนี้ C และแอสเซมบลีมักใช้ในงานวิศวกรรมอิเล็กทรอนิกส์มากที่สุดเพราะโดยทั่วไปคุณจะต้องจัดการกับสิ่งต่าง ๆ ในระดับต่ำ Object Oriented นั้นใช้ไม่ได้จริง ๆ แล้วการคิดระดับต่ำที่มาจาก C / Assembly จะใช้กับสิ่งอื่นที่คุณทำงานด้วย
Muz

9

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

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

ประโยชน์อีกประการหนึ่งของการรู้ LabVIEW คือคุณเป็นเพียงการทิ้งการเขียนโปรแกรม FPGA โดยใช้โมดูล LabVIEW FPGAซึ่งใช้รหัส LabVIEW ของคุณและแปลงเป็น VHDL ที่อยู่เบื้องหลัง นอกจากนี้คุณยังสามารถใช้ทักษะ LabVIEW เพื่อเปลี่ยนไปใช้การเขียนโปรแกรมรหัสเรียลไทม์ผ่านโมดูล LabVIEW Real-Timeซึ่งใช้ VxWorks หรือ Phar Lap

หมายเหตุ: ฉันเป็นผู้พัฒนา LabVIEW ที่ได้รับการรับรอง

ป้อนคำอธิบายรูปภาพที่นี่


5
LabVIEW การผลิตทั้งหมดที่ฉันได้เห็นมีลักษณะเช่นนี้: thedailywtf.com/Articles/Labview-Spaghetti.aspx ฉันไม่สงสัยเลยว่ามีตลาดงานที่แข็งแกร่งสำหรับผู้ที่เต็มใจรักษารหัสดังกล่าว
เครื่องหมาย

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

@markrages ปัญหาคือสองเท่า หนึ่งการจัดการให้วิศวกรฝึกอบรมเพียงพอที่จะเป็นอันตราย ฉันจะบอกว่าโปรแกรมเมอร์ LabVIEW 9/10 ฉันได้พบกับ บริษัท ของฉันที่มีการฝึกอบรมใช้เวลาเพียงสองหลักสูตรพื้นฐานแรกซึ่งสอนคุณเพียงแค่ไวยากรณ์ ประการที่สอง LabVIEW ได้กลายเป็นภาษาที่มีคุณลักษณะหลากหลายซึ่งเป็นคู่แข่งของภาษาสมัยใหม่ทุกวันนี้เนื่องจากการจัดการแบบกราฟิกคิดว่ามันต้องง่าย Managemnt จะไม่งานวิศวกรซอฟต์แวร์ในการออกแบบปานกลางถึงวงจรที่ซับซ้อนพวกเขาก็ยังมีปัญหาการขว้างปา EE ที่เป็นปัญหาซอฟต์แวร์ที่ซับซ้อนหากพวกเขา "รู้ LabVIEW"
SiegeX

@markrages: ทันทีที่ฉันได้รับการเตือนว่าทำไมฉันถึงชอบ LabVIEW ฉันเห็นความคิดเห็นของคุณและจำได้ว่าทำไมฉันถึงเกลียด โอ้ชั่วโมงแห่งความยุ่งยากทั้งหมดกลับมาพร้อมกัน
Jonny B ดี

6

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

สำหรับงานวิศวกรรมทั่วไปภาษาเชิงคณิตศาสตร์เช่น Matlab (เช่น Scilab และ GNU Octave) จะถูกใช้สำหรับการสร้างแบบจำลองและการสร้างต้นแบบโดยทั่วไป

นอกจากนี้ IDEs จำนวนมากสำหรับซอฟต์แวร์และฮาร์ดแวร์สามารถใช้สคริปต์ได้โดยทั่วไปจะใช้ TCL หรือ LUA ดังนั้นความคุ้นเคยกับภาษาสคริปต์ทั่วไป (เช่น Perl, Python, PHP, Javascript และอื่น ๆ ) ก็มีประโยชน์เช่นกัน

สำหรับการออกแบบฮาร์ดแวร์คุณจะต้องมีทักษะ Verilog และ / หรือ VHDL


6

C ++ เพียงพอหรือไม่ อาจจะ.

โปรดจำไว้ว่ามีการใช้ C ในบางสิ่งบางอย่างเช่น 90-99% ของ mcu: s ทั้งหมดดังนั้น C จึงเป็นสิ่งที่จำเป็นสำหรับประวัติย่อของคุณ

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


3

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

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


2

คุณสามารถเรียนรู้ C และชนิดของรหัสแอสเซมเบลอร์ที่สร้างขึ้นโดยคำสั่ง C หากคุณทำงานกับโปรเซสเซอร์ แต่คุณควรสอนตัวเองถึงวิธีการใช้เชลล์บรรทัดคำสั่ง Unix เช่นทุบตีและเครื่องมือที่ไปด้วยเช่น sed ed, awk, vim / vi, ค้นหา, tar, gzip, ... เช่นเดียวกับ Python ที่คุณสามารถใช้บนแพลตฟอร์มจำนวนมากและเป็นวิธีที่ดีในการ "ทำสิ่งต่าง ๆ ให้สำเร็จ"


2

คุณต้องเรียนรู้ C หากคุณต้องการเป็นผู้พัฒนาที่ฝังตัวอย่างจริงจัง คุณควรรู้จักแอสเซมเบลอร์แม้ว่าคุณจะไม่ค่อยได้ใช้มัน


0

ฉันจะกำหนดวิศวกรอิเล็กทรอนิกส์ก่อนเพื่อหมายถึงคนที่เกี่ยวข้องในการออกแบบฮาร์ดแวร์ตั้งแต่เฟิร์มแวร์ไปจนถึงการออกแบบบอร์ดและการออกแบบชิป ในบางกรณีคุณจะทำเฟิร์มแวร์ตามที่ระบุไว้ข้างต้นคุณจะต้องมี "C" ซอฟต์แวร์ที่ลึกล้ำกลายเป็นเพียงเครื่องมือเข้าใจแนวคิด comp sci บางส่วนในภาษาเสริมจาก C / C ++ ถึง Lisp เช่นภาษาจะมีความสำคัญมากกว่าเฉพาะ คุณจะต้องใช้ซอฟต์แวร์เพื่อสนับสนุนความพยายามในการออกแบบของคุณ แต่ไม่จำเป็นที่จะต้องเข้าใจถึงข้อ จำกัด พื้นฐานของสิ่งที่สามารถทำได้ในการปรับใช้ทางกายภาพ การออกแบบดิจิทัลไม่ใช่ Verilog / VHDL แม้ว่าการออกแบบจะแสดงในภาษาเหล่านั้น เป็นการออกแบบที่กำหนดเองและเต็มรูปแบบในซิลิโคนคุณจะเห็นเสียงกระเพื่อมเหมือนภาษาและ C - ภาษาที่ใช้งานได้

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