Чи досвід C # добре перекладається на C ++? [зачинено]


13

Мої уроки програмування в школі були C ++, але я закінчив роботу над роботою C # за останні кілька років. Якби була позиція, яка вимагає, наприклад, досвіду роботи на C ++ за 1 або 2 роки, чи був би мій досвід роботи в C # гідний розгляду? Наскільки ефективно я міг би бути на такій посаді? Тож мені потрібно починати як програміст C ++ початкового рівня, щоб отримати необхідний досвід?


4
Найважче буде вивчення фразеологізмів С ++ та "правильного" способу ведення справ. У C # такі речі, як управління пам'яттю та перевірка меж, вкладаються в мову та рамки. У С ++ є набагато більше способів застрелити себе в ногу.
Роберт Харві

1
@RobertHarvey: Тільки якщо ви ніколи не чули про розумні покажчики. Або контейнери.
DeadMG

11
@DeadMG: Я не знаю, що ти маєш на увазі під цим. Навіть якщо ви чули про них, вам все одно доведеться їх вивчати.
Роберт Харві

2
Ефективна серія C ++ набагато більше згинає розум, ніж ефективна серія C #.
робота

@Robert: Ну, якщо ти робиш контейнери та розумні покажчики, то не потрібно керувати лизами пам’яті. І вивчити їх - C ++ 101.
DeadMG

Відповіді:


13

Проблема тут полягає в тому, що C ++ і C # - це принципово надзвичайно різні мови з різними підходами до багатьох проблем. Їх легко зібрати як "мову OO", але простий факт полягає в тому, що багато ідіом C # вважаються дуже поганим кодом у C ++ (і навпаки).

Якщо ви насправді знаєте відмінності та як виглядають ідіоми C ++, то я не бачу причин, щоб це не було добре.


5

Я був у тому ж човні близько 2 років тому. Ваш досвід c #, ймовірно, не вартує стільки для роботи з C ++, скільки c ++ для роботи з зміною #. Це означає, що якщо ви знаєте, як насправді працює c # (насправді це дуже мало c # програмістів), і добре засвоїли свій c ++, тоді проблема c ++ не буде проблемою. Проблема полягає в тому, що ви звикли до певних моделей дизайну, які будуть занадто високими для c ++.

Наприклад, переходячи від приємної моделі доступу до даних ADO.NET до використання cppcon для доступу до mysql, System.Collections.Generic до використання stl, множинного успадкування, збирання сміття до очищення пам'яті в деструкторах тощо ... бути жорсткими переходами. C ++ не є проблемою, вивчити вкладки, шаблони дизайну та способи їх використання - це завдання. Більшість рекрутерів цього не усвідомлюють. Якщо ви можете виконати базовий дизайн і можете використовувати фактично поширені функції c ++, то вам слід добре опитатись на співбесіді.

Однак готові до роботи - інша історія. Це цікавий виклик, хоча, я сподіваюся, що все йде добре.


Усі робочі місця на C ++, які я бачу, хочу отримати 2-3-річний досвід роботи в C ++, але моя робота в C #. Це мене дуже засмучує, я хочу зробити C ++! Ти маєш рацію щодо рекрутера, вони мене збили. Як я можу коли-небудь отримати цей досвід, якщо ніхто не дозволить мені спробувати? Я впевнений, що якщо хтось пустить мене у двері, я міг би швидко навчитися, я просто не знаю, як я можу до них дістатися.
MetaGuru

Я стрибнув на проекті c ++ на своїй нинішній роботі. Це, мабуть, найкраща ставка. Або ви завжди можете потрапити на проект з відкритим кодом, який знаходиться в c ++.
Джонатан Хенсон

@Ryan Як сказав Джонатан, існує багато способів отримати досвід роботи на C ++. Принаймні, звідки я родом, ви повинні довести, що маєте досвід (замість популярного твердження; маючи 1 рік досвіду п’ять разів). Це працює обома способами - хтось без особливого «паперового» досвіду може отримати шанс довести себе. Просто переконайтесь, що ви справді знаєте C ++, перш ніж спробувати!
Макс

3

Я не можу говорити за кожного роботодавця, але особисто я розглядаю програму як навичку та особливості мови, як приємно мати. Все ще цілком можливо прийняти на роботу в іншій програмі, яка не є вашою основною майстерністю.

Сказавши, що це дуже малоймовірно, я б найняв когось, хто абсолютно не мав досвіду мови, для якої я їх наймаю. Витратьте кілька вихідних на навчання та отримайте пару проектів для домашніх тварин, щоб покращити своє резюме. Навіть маленькі доказують, що ви здатні вчитися та захоплюватися.


3

Ви точно в тій же ситуації, в якій я був 4 роки тому.

Я робив деякі C ++ під час навчання, але ненавидів. Я робив багато веб-розробників, коли міг у вільний час і влаштувався на роботу в цій галузі.

Коли я переїхав, я подав заявку на роботу на C ++, яка мала 2 роки досвіду C ++. Добре я оновив свої спогади на C ++ перед інтерв'ю, і коли прийшов час тестів, мені вдалося піти з кількома речами, я не був настільки впевнений, що роблю правильно.

Але більша частина інтерв'ю стосувалася вирішення проблем та творчих рішень, і C ++ закінчився лише незначним фактором.

Тож шанси дійсно залежать від роботодавця та посади, яку вони займають.

Якщо ви переходите до кадрового агентства, вам, ймовірно, буде сказано, що ваш профіль не відповідає. Але у справжнього роботодавця ваші шанси набагато кращі, оскільки вони дійсно знають, що їм потрібно.


1
просто переконайтеся, що ви знаєте, що таке віртуальний деструктор, щоб ви пройшли його через екран телефону.
Кевін

2
Як говорили інші, переконайтеся, що ви пам’ятаєте кілька основ управління пам’яттю в C ++. У цьому принципова відмінність. Інакше стосується бібліотек та фреймворків Більшість (великих) компаній мають власні ліфти та обгортки, тому вони не сподіваються, що ви знаєте їх реалізацію. На противагу C #, де більшість ліфтів високого рівня підтримуються в .net-рамці, і вимога полягатиме в тому, щоб знати набір libs, що відповідають позиції.
Койот

То ти влаштувався на роботу? Мені дуже хотілося б зайнятися створенням C ++, але мій брак документально підтвердженого досвіду - це закриття дверей, не впевнений, як скласти це інакше.
MetaGuru

Так ... Працював там 3 роки. Це був чудовий досвід ... але мені довелося зробити кілька підйомів з особливостями C ++ перші кілька місяців.
Койот

1

Це залежить. Якщо ви зможете відповісти на основні запитання щодо інтерв'ю щодо покажчиків і подібних, то вам слід добре.

Це також вигідно, якщо ви можете перерахувати відмінності між шаблонами C ++ та .NET generics.

Крім цього, досить легко наздогнати решту, коли ви йдете разом.


1

Так. Це може бути не таким релевантним, як досвід C ++, але це добре.

Хороших роботодавців цікавить, як ви думаєте , більше, ніж скільки років володієте певною мовою.

Позиція C ++ початкового рівня прекрасна: ви можете швидко вчитися та робити чудову роботу. Хороша компанія дасть вам багато можливостей для зростання. Якщо ні, то ви можете поїхати куди-небудь ще та мати досвід C # та C ++.


0

Це дійсно залежить від характеру бізнесу, в який ви звертаєтесь. Якщо вони шукають когось, хто має хороші навички програмування та архітектури на основі ОО, C #, ймовірно, такий же хороший, як і наступне.

Якщо вони пишаються швидкістю та чутливістю програмного забезпечення, то вам знадобиться знати свої алгоритми, оскільки це має значення більше, ніж мікрооптимізація - Таблиця хеша проти лінійного пошуку тощо. C # все ще актуальна тут, але вам знадобиться щоб продемонструвати розуміння характеристик продуктивності - не всі знають, наприклад, про ngen.exe.

Якщо вони знаходяться у вбудованому / мобільному та / або не зібраному смітті, вам дійсно потрібно знати, як ефективно керувати пам’яттю. Розумні покажчики, як зазначав @DeadMG, тут є ключовими, але так само розуміння профілю розподілу пам'яті. Ігрові програмісти часто заздалегідь виділяють великі масиви об’єктів і переробляють їх, щоб знати вимоги до пам'яті наперед та зменшувати невідомі на основі кадру. Це також техніка, що використовується в прокрутці TableViews в iOS.

Якщо є якась робота з інтеграції, вам, швидше за все, знадобиться експертиза на рівні С щодо збору даних між мовами (наприклад, P / Invoke), а також розуміння рівня байтів, як ці структури даних можуть бути використані, що не є звичайною практикою в C # в моєму досвіді.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.