цель обучения-c лучше для понимания компьютерной архитектуры - PullRequest
4 голосов
/ 24 июня 2010

чем языки более высокого уровня, такие как Java C # ... этот аргумент действителен? Я новичок в разработке для iPhone, и некоторые люди сказали мне это.

Ответы [ 4 ]

5 голосов
/ 24 июня 2010

Вы спрашиваете, получите ли вы лучшее представление о механике автомобиля, если будете водить не механическую, а механическую коробку передач - вы немного больше почувствуете, что делает двигатель, и вы получите ужасный беспорядок, если вы сделаете это неправильно, но вы также не получите глубокого понимания того, что находится «под капотом».

Семантика языка C, для которого target-C является надмножеством, повторяет архитектуру машины, для которой он был создан - PDP-11.

Если вы посмотрите на современные компьютерные архитектуры - общая память команд и данных, виртуальная память, кэш L1 и L2, ограничения скорости шины, мосты «север» и «юг», многоядерный или многоядерный процессор, твердотельный диск графический процессор, ускорители ПЛИС - тогда нет ни одного языка с семантикой, повторяющей все варианты, и язык С не имеет к ним никакого отношения. Лучшее место для изучения компьютерной архитектуры - учебник или лекция по компьютерной архитектуре или чтение о том, как современная архитектура влияет на программы на всех языках .

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

3 голосов
/ 24 июня 2010

Всегда есть архитектура выше и ниже, где вы программируете. C # / Java позволяет программировать (и, следовательно, изучать) виртуальные машины CLR / JVM, в то время как языки более низкого уровня позволяют изучать более низкие уровни, а языки более высокого уровня (например, SQL) позволяют программировать на более высокую архитектуру. Зависит от того, что вы хотите узнать.

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

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

3 голосов
/ 24 июня 2010

Если вы хотите заняться разработкой для Iphone, это единственный выбор, вы не можете использовать Java или C # в качестве одного из новых правил Apple

Если вы не хотите заниматься Iphone dev, изучение C / Assembly также хорошо, если вы работаете в тесном контакте с аппаратными средствами

1 голос
/ 24 июня 2010

Мой преподаватель по коллажам однажды сказал в рамках лекции по оптимизации производительности:

  • Для написания ОС - знайте свою машину.
  • Использование дыр в безопасности?Знай свою машину.
  • Оптимизация производительности?Знай свою машину.и т.д. ...

Чтобы узнать свою машину: изучите сборку.

Тем не менее, я считаю, что цель-c может быть лучшим способом изучения некоторых основ программирования, вам нужноподумайте об управлении памятью, о котором вам не нужно много думать в Java.Хотя я должен согласиться с более ранними ораторами, Си может быть лучшим подходом.

Примечание.В конце лекции тот же учитель сказал: «Изучить сборку: знай свою машину».Должен любить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...