ประสบการณ์ C # แปลได้ดีในภาษา C ++ หรือไม่ [ปิด]


13

ชั้นเรียนการเขียนโปรแกรมในโรงเรียนของฉันคือ C ++ แต่ฉันลงเอยด้วยการทำงานที่ทำ C # ในช่วงไม่กี่ปีที่ผ่านมา หากมีตำแหน่งที่ต้องการประสบการณ์ 1 หรือ 2 ปีใน C ++ ประสบการณ์ของฉันใน C # จะคุ้มค่าที่จะพิจารณาหรือไม่? ฉันจะมีประสิทธิภาพแค่ไหนในฐานะเช่นนี้? ดังนั้นฉันต้องเริ่มต้นในฐานะโปรแกรมเมอร์ระดับ C ++ เพื่อรับประสบการณ์ที่จำเป็นหรือไม่?


4
ส่วนที่ยากที่สุดคือการเรียนรู้สำนวน C ++ และวิธีการทำสิ่งที่ถูกต้อง ใน C # สิ่งต่าง ๆ เช่นการจัดการหน่วยความจำและการตรวจสอบขอบเขตจะถูกทำให้เป็นภาษาและกรอบงาน ใน C ++ มีหลายวิธีในการยิงตัวคุณเองด้วยการเดินเท้า
Robert Harvey

1
@RobertHarvey: เฉพาะในกรณีที่คุณไม่เคยได้ยินพอยน์เตอร์อัจฉริยะ หรือภาชนะบรรจุ
DeadMG

11
@DeadMG: ฉันไม่รู้ว่าคุณหมายถึงอะไร แม้ว่าคุณเคยได้ยินพวกคุณก็ยังต้องเรียนรู้
Robert Harvey

2
ซีรี่ย์ C ++ ที่มีประสิทธิภาพนั้นให้ความสำคัญมากกว่าซีรีย์ C # ที่มีประสิทธิภาพ
งาน

@ Robert: ถ้าคุณทำตู้คอนเทนเนอร์และพอยน์เตอร์พอยน์เตอร์คุณไม่ต้องจัดการกับความจำ และเรียนรู้พวกเขาคือ C ++ 101
DeadMG

คำตอบ:


13

ปัญหานี่คือ C ++ และ C # เป็นภาษาพื้นฐานที่แตกต่างกันอย่างมากกับแนวทางที่แตกต่างในการแก้ไขปัญหามากมาย เป็นเรื่องง่ายที่จะปั้นพวกเขาเป็น "ภาษา OO" แต่ความจริงง่ายๆคือสำนวน C # จำนวนมากถือว่าเป็นรหัสที่ไม่ดีมากใน C ++ (และในทางกลับกัน)

หากคุณทราบถึงความแตกต่างและสำนวนภาษา C ++ เป็นอย่างไรฉันก็ไม่เห็นเหตุผลว่าทำไมมันถึงไม่ดี


5

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

ตัวอย่างเช่นไปจากรูปแบบการเข้าถึงข้อมูล ADO.NET ที่ดีไปจนถึงการใช้ cppcon สำหรับการเข้าถึง mysql, System.Collections.Generic ไปจนถึงการใช้ stl, การสืบทอดหลายแบบ, การรวบรวมขยะเพื่อทำความสะอาดหน่วยความจำของคุณใน destructors และอื่น ๆ ... เป็นการเปลี่ยนที่ยากลำบาก C ++ ไม่ใช่ปัญหาการเรียนรู้ libs รูปแบบการออกแบบและวิธีใช้งานเป็นความท้าทาย นายหน้าส่วนใหญ่ไม่ตระหนักถึงสิ่งนี้ หากคุณสามารถทำการออกแบบขั้นพื้นฐานและสามารถใช้คุณสมบัติที่ใช้กันทั่วไปของ c ++ คุณควรจะได้รับการสัมภาษณ์

อย่างไรก็ตามการเตรียมพร้อมสำหรับงานเป็นเรื่องที่แตกต่าง มันเป็นความท้าทายที่สนุก แต่ฉันหวังว่าทุกอย่างเป็นไปด้วยดี


งาน C ++ ทั้งหมดที่ฉันเห็นต้องการประสบการณ์ 2-3 ปีใน C ++ แต่ของฉันอยู่ใน C # สิ่งนี้ทำให้ฉันผิดหวังมากฉันต้องการทำ C ++! คุณพูดถูกเกี่ยวกับนายหน้าพวกเขายิงฉันลง ฉันจะได้รับประสบการณ์นี้ได้อย่างไรถ้าไม่มีใครจะให้ฉันลอง? ฉันมั่นใจว่าถ้ามีคนให้ฉันมาที่ประตูฉันสามารถเรียนรู้ได้อย่างรวดเร็วฉันไม่รู้ว่าฉันจะผ่านพวกเขาไปได้อย่างไร
MetaGuru

ฉันเพิ่มขึ้นในโครงการ c ++ ที่งานปัจจุบันของฉัน นั่นอาจเป็นทางออกที่ดีที่สุดของคุณ หรือคุณสามารถรับโครงการโอเพนซอร์ซที่อยู่ใน c ++ ได้ตลอดเวลา
Jonathan Henson

@Ryan ดังที่ Jonathan กล่าวมีหลายวิธีในการรับประสบการณ์ใน C ++ อย่างน้อยฉันมาจากคุณต้องพิสูจน์ว่าคุณมีประสบการณ์ (แทนที่จะเป็นคำพูดที่เป็นที่นิยม; มีประสบการณ์ 1 ปีห้าครั้ง) วิธีนี้ใช้ได้ทั้งสองวิธี - คนที่ไม่มีประสบการณ์ "กระดาษ" มากนักสามารถมีโอกาสพิสูจน์ตนเองได้เช่นกัน แค่ให้แน่ใจว่าคุณรู้จัก C ++ จริงๆก่อนที่จะลอง!
สูงสุด

3

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

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


3

คุณอยู่ในสถานการณ์เดียวกันกับฉันเมื่อ 4 ปีที่แล้ว

ฉันใช้ภาษา C ++ ระหว่างเรียน แต่ก็ไม่ชอบ ฉันทำเว็บเป็นจำนวนมากเมื่อฉันทำเวลาว่างและทำงานในสาขานั้น

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

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

ดังนั้นโอกาสขึ้นอยู่กับนายจ้างและตำแหน่งที่มี

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


1
เพียงให้แน่ใจว่าคุณรู้ว่า destructor เสมือนจริงคืออะไรเพื่อให้คุณผ่านหน้าจอโทรศัพท์ไป
เควิน

2
ตามที่คนอื่น ๆ บอกไว้คุณต้องจำพื้นฐานการจัดการหน่วยความจำไม่กี่อย่างใน C ++ มันเป็นความแตกต่างพื้นฐาน มิฉะนั้นเกี่ยวกับห้องสมุดและกรอบงาน บริษัท ขนาดใหญ่ส่วนใหญ่มี libs และ wraps ของตัวเองดังนั้นพวกเขาจึงไม่คาดหวังให้คุณรู้ถึงการใช้งานของพวกเขา ตรงกันข้ามกับ C # ซึ่ง libs ระดับสูงส่วนใหญ่ได้รับการสำรองไว้ในกรอบงาน. net และข้อกำหนดจะต้องทราบชุดของ libs ที่เกี่ยวข้องกับตำแหน่ง
โคโยตี้

ดังนั้นคุณได้งานหรือไม่ ฉันอยากจะย้ายไปทำ C ++ จริง ๆ แต่การขาดประสบการณ์เอกสารของฉันคือการปิดประตูไม่แน่ใจว่าจะสร้างมันอย่างไร
MetaGuru

อ๋อ ... ทำงานที่นั่น 3 ปี มันเป็นประสบการณ์ที่ยอดเยี่ยม ... แต่ฉันต้องทำเรื่องเกี่ยวกับ C ++ ในช่วงสองสามเดือนแรก
โคโยตี้

1

มันขึ้นอยู่กับ. หากคุณสามารถตอบคำถามสัมภาษณ์พื้นฐานเกี่ยวกับพอยน์เตอร์ได้คุณควรจะตอบคำถาม

นอกจากนี้ยังเป็นประโยชน์หากคุณสามารถแสดงรายการความแตกต่างระหว่างแม่แบบ C ++ และ. NET generics

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


1

ใช่. อาจไม่เกี่ยวข้องกับประสบการณ์ C ++ แต่มันดี

นายจ้างที่ดีจะสนใจในความคิดของคุณมากกว่าภาษาเฉพาะที่คุณมีเป็นเวลาหลายปี

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


0

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

หากพวกเขาภาคภูมิใจในความเร็ว / การตอบสนองของซอฟต์แวร์คุณจะต้องรู้อัลกอริธึมของคุณเพราะเรื่องนี้สำคัญกว่าการเพิ่มประสิทธิภาพแบบไมโคร - Hash Tables เทียบกับการค้นหาแบบ Linear เป็นต้น C # ยังคงมีความเกี่ยวข้องอยู่ที่นี่ เพื่อแสดงให้เห็นถึงความเข้าใจในคุณสมบัติด้านประสิทธิภาพ - ตัวอย่างเช่นไม่ใช่ทุกคนที่รู้เกี่ยวกับ ngen.exe

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

หากมีการรวมเข้าด้วยกันคุณอาจต้องการความเชี่ยวชาญระดับ C ในแง่ของข้อมูลการจัดเรียงระหว่างภาษา (เช่น P / Invoke) แต่ยังเข้าใจในระดับไบต์ว่าโครงสร้างข้อมูลเหล่านี้อาจนำไปใช้อย่างไรซึ่งไม่ใช่วิธีปฏิบัติทั่วไปใน C # ในประสบการณ์ของฉัน

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