Подтвердить что ты не робот

Знает ли C и/или С++ сделать меня лучшим разработчиком?

Я часто думал о том, чтобы попытаться выучить язык С++, чтобы лучше понять компьютеры. Мне известно, что C/С++ похож на черный пояс программирования. Но тогда вы смотрите вокруг на некоторых отличных разработчиков, и я не думаю, что они когда-либо изучали С++.

Это хорошая идея для какого-то дождливого дня (больше похоже на дождливый год), или я должен просто продолжать толкать границы на языках, которые я уже знаю.

EDIT: Чтобы ответить на некоторые вопросы. У меня много лет опыта работы на Java. Поработали довольно много с Delphi, и примерно полтора года назад я начал использовать С# для некоторых веб-приложений, которые мне пришлось создавать.

4b9b3361

Ответ 1

Я предлагаю вам прочитать эту книгу: http://csapp.cs.cmu.edu/.

Это очень хорошее чтение для любого программиста. Это действительно научит вас, как ваши программы работают на низком уровне.

В этой книге используются сборки и C, но я не знаю, читается ли это без знаний C. В любом случае, я предлагаю не тратить много времени на изучение C. Вам, вероятно, понадобится как минимум год, прежде чем вы начнете понимать, как писать хорошие программы на С (мне нужно было два года, лично).

C и С++ не много рассказывают о материалах низкого уровня (да, я знаю, что многие люди утверждают обратное). Вы учитесь самостоятельно выделять/освобождать память, но я думаю, что все об этом. С другой стороны, приведенная выше книга научит вас писать собственный распределитель памяти, как оптимизировать программы и многое другое.

Ответ 2

Каждый язык и инструмент, которые вы изучаете, делают вас лучшим программистом. Да.

Ответ 3

Конечно, это действительно зависит от того, где вы хотите улучшить. Если вы хотите, например, выполнить некоторые системные программы, то вам следует. Однако, если вы хотите разрабатывать приложения на веб-приложениях, не беспокойтесь. Подробнее об этом см.: В каком секторе индустрии программного обеспечения используется С++

Первое, что нужно помнить, когда начинаешь учиться: Нет такого языка, как C/С++.

Ответ 4

Расширение базы знаний всегда поощряется. И как часто говорит Джоэл Спольский.

Его аргумент заключается в том, что он похож на вождение с палкой и знает о механике, кодирование на C (или простой в использовании сборке) помогает вам понять, что происходит под капотом

Ответ 5

Я бы изучил шаблоны С++ в качестве мозговых упражнений. Это, как и любой другой метод программирования, заставит вас задуматься над задачей в более широкой основе.

Ответ 6

Знание языка не делает вас лучшим разработчиком. Правильное применение языка (большую часть времени избегайте злоупотребления языковыми понятиями).

используя Power of the language, делает лучшего разработчика

Ответ 7

Нет ничего особенного в C и С++, кроме:

  • C - замечательно небрежный язык. Его целью было/было более или менее создание портативного языка ассемблера. Все, что более продвинуто, не имеет места на этом языке. Таким образом, по языку нет ничего, чтобы учиться на C. Это никоим образом не сложный язык, но для этого требуется большая работа для достижения даже самых простых вещей. И это, конечно, очень подвержено ошибкам и небезопасно по сравнению с языками более высокого уровня.
  • С++ - чрезвычайно сложный язык. За эти годы у него было много разных влияний, и он украл идеи из широкого спектра языков и парадигм программирования. И затем в последнее десятилетие или около того, это было завершено сообществом С++, в значительной степени изобретающим собственную парадигму (generic programming). Таким образом, С++ придумал некоторые довольно умные решения для многих распространенных (на всех языках) проблем. Как люди любят смотреть на С++, я часто пропускаю его при работе на С#. Существует ряд высокоуровневых технологий и абстракций, которые проще, чище и элегантнее на С++. Поэтому с чистой точки зрения я считаю, что С++ стоит изучать. (И я бы хотел, чтобы дизайнеры Javas или С# потрудились сделать это, вместо того, чтобы основывать свои языки на том, что более точно можно назвать "C с классами".

Но я думаю, что вы получаете то, что изучение этих языков даст вам лучшее понимание того, что происходит под капотом.

Я вижу в этом смысл. C/С++ дает вам указатели, которые могут быть почти сопоставлены непосредственно с адресами базовой памяти. Изучение этих языков, безусловно, дает вам некоторую интуицию о том, что происходит под ним. (Но, как всегда, с интуицией, это не всегда правильно. Одна из самых распространенных ошибок на С++ состоит в том, чтобы предположить, что "указатели - это адреса памяти". Это не так. Во многом они ведут себя аналогично, но указатели подчиняются множеству дополнительных ограничения, которые могут или не могут существовать в реальном оборудовании.)

Итак, почему бы не перейти непосредственно к источнику? Изучите сборку, узнайте о самом процессоре, узнайте о компиляторах.

Все вышеизложенное заслуживает изучения и сделает вас лучшим программистом. Но изучите С++ ради языка (это не красиво, но есть уроки, которые нужно извлечь из него), и узнайте обо всех основных механиках (компиляторы, аппаратное обеспечение, на котором вы работаете, в ЦП), изучив их непосредственно.

Но что бы вы ни выбрали, определенно диверсифицируйте. Вы должны изучать языки, на которых вы фактически работаете, очевидно, но не останавливайтесь на достигнутом. Узнайте что-то еще, почти независимо от того, что это такое. Больше языков, или лучшее понимание базовой инфраструктуры, все это сделает вас лучшим разработчиком.

Наконец, не думайте о C/С++ как о "черном поясе". С++, в частности, может быть одним из самых сложных языков для освоения, но это не значит, что те, кто это знает, являются лучшими программистами. Далеко от него.

Ответ 8

Есть большая статья о самосовершенствовании в программировании: "Научитесь программировать 10 лет"

В нем говорится, что всегда полезно учиться новому. С++ трудно усвоить, и еще труднее освоить.

Но он учит вам все виды низкоуровневой обработки, что очень важно для понимания при написании крупномасштабного программного обеспечения.

Ответ 9

Об этом очень много спорили Джоэл и Джефф в начале podcasts, и это неубедительно и очень противоречиво.

Как и большинство старших программистов (не отдавая моего возраста здесь), я склонен полагать, что чем больше вы знаете о базовой системе и ее внутренней работе, тем лучше вы будете использовать более современные и абстрактные способы программирования.

Поэтому знание о (m) alloc (выделение памяти для переменной как строки или структуры) и, таким образом, понимание того, почему некоторые строковые манипуляции медленны на языках высокого уровня, может быть прибыльным. Это всего лишь один пример.

Если вы хотите узнать о концепциях ОО, есть более подходящие места, чем гибридный язык, такой как С++ (можно почувствовать разрыв между OO и не-OO-слоем).

Итак, я бы сказал, что смотреть на C не может повредить.

Ответ 10

Я бы сказал, что каждый новый язык улучшает ваши навыки программирования, поэтому изучение новых - это всегда хорошая идея. Тем не менее, я считаю, что изучение языков, принадлежащих к другим парадигмам, чем тот, к которому я сейчас привык, - это потрясающий способ стать лучшим программистом. Например, обучение прологам заставило меня по-настоящему понять рекурсию в первый раз, smalltalk и ruby ​​помогли мне понять красоту динамического набора текста, lisp просто взорвал мой разум, а C заставило меня понять, что происходит за шторами...

Если вы подумываете о том, чтобы изучать новый язык, я говорю об этом. C поможет вам понять распределение памяти, как ничто другое (если вы не идете даже для более ничтожных вещей, таких как ассемблер), а С++ поможет вам любить любой другой язык, о котором вы можете знать гораздо больше.;)

Удачи!

Ответ 11

Знание C/С++ делает вас более полезным разработчиком. C/С++ довольно распространены, и из них выводится синтаксис многих других языков.

Никогда не бояться изучать C, потому что он действительно ничего не скрывает от разработчика. Вы узнаете о компиляции, компоновке, библиотеках и т.д. В деталях gory. Вы узнаете о необработанных системных вызовах и машинной архитектуре; вещи, которые языки более высокого уровня скрывают от вас своими абстракциями понятий.

Изучение другого языка, достаточно подходящего для решения практической проблемы, сделает вас лучшим разработчиком просто потому, что теперь у вас есть новый инструмент, который можно применять для решения некоторых проблем лучше, чем другие инструменты. Больше инструментов всегда полезно. Изучение новых способов решения проблем на другом языке еще больше укрепит ваши знания концепций, шаблонов проектирования, структур данных и т.д. Это может быть только хорошо!

Ответ 12

Изучение другого языка сделает вас лучшим кодовым. Особенно, когда языковая парадигма значительно отличается от любого другого языка, который вы уже знаете!

Обучение C даст вам гораздо лучшее представление о том, что вы на самом деле делаете. Это будет похоже на то, что вы привыкли к полнофункциональному графическому калькулятору, а затем научитесь выполнять всю арифметику, алгебру, исчисление и рисовать себя с помощью только доски и мела. Это будет большая работа, но если вы преуспеете, ваша ментальная модель кода будет намного ближе к тому, что на самом деле происходит в машине.

Это не обязательно, чтобы быть хорошим кодером. На самом деле, я считаю, что одной из характеристик хорошего кодера является способность понимать код на более высоком уровне абстракции и видеть систему в целом. Знание низкого уровня не помогает вам с большой картиной. Однако, если вы хотите быть здоровым, вы должны выйти за пределы просто хорошего. Вы должны уметь понимать систему на разных уровнях абстракции от верхнего уровня концептуальной диаграммы до уровня голого машинного кода. Знание C поможет вам понять низкие уровни. Возможность отладки C поможет вам устранить неполадки на всех уровнях!

С++ позволяет выполнять операции низкого уровня C, но добавляет кучу механизмов абстракции и средств повторного использования кода, поэтому вы можете быть немного более продуктивными. Если вы уже знаете язык более высокого уровня, такой как Python, Ruby, Perl, VB, Java и т.д., Я бы рекомендовал вам приложить некоторые усилия, чтобы стать квалифицированным специалистом на C и не пытаться решить С++. Цель изучения другого языка должна заключаться в расширении ваших горизонтов. Таким образом, даже если вы не используете его в качестве профессионала или любителя, вы все равно улучшите свои навыки кодирования и анализа для языков, которые вы используете.

Ответ 13

С++ - Я не уверен.

C - конечно:

  • Он информирует вас об управлении памятью - например, никто, кто не "думает", может понять или подумать о Apache pool

  • Это позволит вам узнать о проблемах с производительностью, таких как вычисление с помощью векторного/битового набора и разворачивание цикла (потому что иногда вы будете делать это вручную)

  • Вы будете чувствовать себя более комфортно с Unix

  • C по-прежнему является отраслью lingua franca

Ответ 14

Никогда не плохо знать язык! Если вы изучите C и Assembler, вы увидите, как все это началось. Это действительно полезно для переговоров на собраниях;)

Больше о вас, чем о ваших навыках программирования.

Ответ 15

Да. (вид)

Каждый раз, когда вы программируете на языке, управляемом памятью, вы позволяете компилятору выполнять работу за вас, и с течением времени вы полагаетесь на то, что у вас мало или вообще нет знаний о внутренней работе.

В управляемом без памяти языке, таком как C или С++, вы должны тратить время на размышления о том, где указатель укажет на конец метода, передать ли он ссылку или вернуть переменную и другие вещи, которые делают вас подумайте о коде, который вы пишете, гораздо более объективным способом.

Дело в том, что возможность узнать, как использовать вектор или аррайалист в java - это правильный путь, никогда не узнаешь, пока не поймете фундаментальные концепции многих структур данных, которые вы используете на дневной основе, на сегодняшний день.

Итак, научиться использовать C или С++ сделает вас лучшим программистом, но решите ли вы использовать эти знания и использовать его, чтобы сделать вас лучшим разработчиком, - это ваш выбор.

Ответ 16

Одна из самых важных вещей при разработке приложений - количество пользовательского кода/библиотек вокруг языка, фрагменты кода, учебники и все остальное.

Тем не менее, C, altho старый язык, то, что должен был быть эсперанто на человеческих языках - язык, который должны знать все:)

Почему? Это не важно. Важно то, что вы встретите C повсюду.

Ответ 17

Кодирование на C дает вам более близкую перспективу тому, что делает реальная система. Это действительно "кодирование металла" машины.

Это также дает вам более глубокую оценку того, какие языки, такие как Java/С#/Python/Ruby, делают для вас.

И, наконец, подавляющее большинство (хотя и не все) кода * nix/* BSD написано на C, а также многие современные системы, поэтому, зная, что это открывает вам двери, вы должны рассматривать патч или пытаться присоединиться к команде в определенной компании.

Ответ 18

Вы говорите о C или С++?

Вы не говорите, что знаете в настоящее время. Если вы еще не сделали C, я бы, конечно, рекомендовал его. Это поможет вам понять, что происходит на низком уровне, рядом с металлом. Его дизайн и стиль влияют на реализацию существующих языков / script.

Если вы хотите изучить язык OO, я бы предложил более простое введение в OO - возможно, Java или С# изначально. С++ может быть пугающим введением в эту тему.

Ответ 19

Да, если вы имеете в виду глубокое знание, а не только некоторые базовые знания. С++ сочетает близость с внутренними компонентами компьютера с высокой гибкостью, поэтому глубокое знание С++ подразумевает, что вы понимаете, как компьютер работает очень хорошо. И последнее, безусловно, дает вам преимущество.

Ответ 20

Есть поговорка:

Вы стоите столько же людей, сколько количества языков, которые вы знаете.

Это единственная реальная причина, чтобы изучить их;)

Ответ 21

Это может быть. Есть несколько очень важных понятий, которые выталкиваются в вашем лице, особенно в C, с которыми вам приходится иметь дело.

Я бы сказал, сделайте еще один шаг и изучите сборку. Я никогда не программировал профессионально ни на каком ассемблере, но время, проведенное через каждую главу и упражнение в Assembly Langauge для ПК, самые дивиденды любого из моих исследований, школы или независимых. Вы узнаете, что такое указатель и смещение, у вас будет более глубокое понимание того, почему кодировка символов важна, вы узнаете о стеке, куче, управлении памятью и т.д. Вы никогда не сможете использовать это прямо, но это сделает yo ua лучшим программистом.

Ответ 22

Язык программирования - это всего лишь инструмент. Чтобы быть лучше, вы должны лучше знать свои инструменты, будь то ваш инструмент C/С++, кисть или что-то еще.

Ответ 23

Вам следует попробовать научиться C, и вы должны попробовать изучить С++. Когда вы это сделаете, вы скоро поймете, почему я разделил их.

Это сделает вас лучшим программистом, потому что вы узнаете больше о машине, на которой работает код, по сравнению с языками, которые вы знаете до сих пор. Это само по себе было бы уже достаточным вознаграждением. Изучение С++ также может заставить вас изучить множественное наследование, что является еще одной полезной концепцией программирования, которая не так широко распространена вокруг других языков. Если вы научитесь хорошо использовать препроцессор, вы наверняка пропустите его и на других языках.

Тем не менее, нужно иметь в виду: действительно изучать эти два языка занимает много времени, потому что их недостаточно читать. Вам нужно работать с ними и решать реальные проблемы. Это самая полезная часть при изучении этих языков, но это также самая неприятная и трудоемкая часть. Я учусь уже 10 лет, и я не могу сказать, что теперь я знаю оба языка. Я чувствую себя вполне комфортно, но я знаю, что я далек от совершенства.

Ответ 24

Я предлагаю вам изучить язык C. Это поможет вам узнать все о программировании. Для меня есть хорошая книга, доступная программистам для изучения программирования на C от программирования до управления памятью, концепций ОС и других продуктов.

http://www.cs.cf.ac.uk/Dave/C/

взгляните на эту веб-книгу, вы сможете узнать, насколько мощный язык...

Ответ 25

Если бы я должен был ответить на ваш вопрос одним словом "ДА". Хорошо владеть хотя бы одним языком, но всегда лучше учиться больше, чем одному... кто знает, что будет завтра.

Насколько понимает компьютер, С++, возможно, не очень полезен, но С++ предоставляет вам много вариантов во время программирования.

И да, учит ли он вас лучшим программистом? Оно делает. Каждый язык уникален в определенных аспектах. Изучение большего количества языков поможет вам изучить возможность реализации уникальности одного языка в другом.