2010-06-04 5 views
8

Я разработчик программного обеспечения с четырехлетним опытом работы в .NET-разработке. Мне всегда нравится постоянно обновлять новейшие технологии (как правило, связанные с сетью) и любить их изучать. Я, однако, не пошел в университет и не узнал все, что знаю, через полезных коллег, курсы .Net, интернет и старые добрые книги. Я чувствую, что я хороший разработчик, но, не изучая нижние уровни компьютера, как и в первый год компьютерного курса Uni, я теряюсь, когда разговариваю с людьми о гораздо более технических вычислениях более низкого уровня. Есть ли книга (ы), которую любой может порекомендовать, который будет охватывать более низкие уровни того, что происходит, когда я нажимаю «Запустить» в Visual Studio? Я чувствую себя глубже, когда мой босс говорит мне: «Thats работает в кэше процессора» или «вы ограничены чтением диска там» и хотели бы чувствовать себя более уверенно, когда разговариваете о том, как аппаратные средства разговаривают друг с другом (CPU для RAM и т. Д.).Обучение нижним уровням вычислений

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

ответ

0

Может быть, вы можете посмотреть в

  1. OS Концепции
  2. законопослушных
  3. структуры данных
  4. языков уровня
  5. Ассамблеи и ее исполнение
  6. Микропроцессоры
0

Даже если вы будете никогда не писал свой собственный код на этом уровне, я нашел полезно ознакомиться с сборкой и машинным языком. Книги Джеффа Дунтемана (http://www.duntemann.com/assembly.html) по этой теме были хорошим началом для меня.

2

Я многому научился здесь: http://www.asmcommunity.net/board/

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

1

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

Может также быть полезно прочитать алгоритмы и сравнить их - возможность понять нотацию «Big O» будет очень полезна.

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

1

Разработка мобильного телефона - Выйдите из своей зоны комфорта (.net) и, возможно, посмотрите на что-то другое, возможно, встроенное программирование на C является немного, но как насчет того, чтобы скрыть развитие мобильного телефона?

Android - отличная платформа, все необходимые вам инструменты бесплатны, вам даже не нужен телефон, так как SDK поставляется с эмулятором. Вы научитесь многому обсуждать вещи, о которых вы бы не подумали дважды на машине с Windows, и скачок от .net не так уж велик.

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

Вы даже можете экспериментировать с разработкой на платформе Android и ARM?

0

+1 с Ram - на моем курсе cs мы сделали операционные системы (посмотрите на конвейерную обработку - интересную концепцию) и компиляторы. начните с основных моделей, и если ваш интерес еще больше заметит, как скоро он станет очень сложным. интересные темы

+0

Ищите значения под фразами типа «fetch & execute», его путь к теме – bergin

2

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

  • Получить некоторое хобби материал, который контролирует устройства (модель поезда, визуальный знак, музыка вещь, роботизированные элементы управления и т.д.) любой линии будет представлять интерес для вас и писать код для управления тех.
  • Проведите вечерние занятия или просто получите .
  • Код исследования от нетривиальных источников таких как ОС с открытым исходным кодом с драйверами устройств , пока вы ДЕЙСТВИТЕЛЬНО не понимаете, что он делает.
  • Все остальные ответы здесь (C код, C++, код сборки, хорошие старые стандартные книги и т.д.)
1

Я бы начать с чтения Computer Systems: A Programmer's Perspective. Это именно то, что вы ищете. Мне нравится эта книга. У меня было первое издание, и я недавно купил второе издание. Он используется в Carnegie Mellon для их курса Introduction to Computer Systems.

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

Вот список глав:

  • Глава 1: Тур компьютерных систем
  • Глава 2: Представление и Манипулирование Информация
  • Глава 3: Машина уровня Представление программ
  • Глава 4: Архитектура процессора
  • Глава 5: Оптимизация производительности программы
  • Глава 6: Память Hie rarchy
  • Глава 7: Связывание
  • Глава 8: Исключительное управление потоком
  • Глава 9: виртуальная память
  • Глава 10: Система уровня I/O
  • Глава 11: Сетевое программирование
  • Глава 12 : Параллельное программирование
3

Вы, безусловно, знакомы с сайтом MIT Open Courseware. Есть намного худшие вещи, которые вы можете сделать, чем бродить по разделу 6 курса «Электротехника и компьютерные науки». Если вы серьезно, и у вас есть время, начинайте с 6.001 (что еще?), Затем 6.004, а затем 6.033.

Я должен предупредить вас. Этот сайт и исследование содержимого в нем могут сильно затягиваться.

Если у вас есть время и деньги, вы даже можете подумать о занятиях в колледже. С четырьмя годами опыта работы под вашим поясом у вас не будет проблем с административным цыпленком ****, который случается в каждом колледже и университете, и воспоминания, которые вы получите от него, останутся с вами на всю жизнь. (Несколько лет назад у меня была возможность вернуться в школу на пару семестров, спустя чуть более двадцати лет после того, как я окончил школу. Я бы не стал торговать этим опытом ни для чего, даже для Особняка И Girls Next Door)

+0

+1 для SICP (если у вас есть время). – Skilldrick

0

Короткие книги:.

"K & R", он же "Язык программирования C" Брайан Керниган и Деннис Ритчи, желательно последней версии (1988), а не 1978 издание.

Длинные книги:

«Кнут», он же «Искусство программирования», Дональдом Кнутом. Удивительно высокий уровень для книги, где все примеры написаны машинным языком.

«Архитектура компьютеров: количественный подход». Хеннесси и Паттерсоном. Возможно, слишком низкоуровневая информация о создании собственного процессора.

«AoE», также известный как «Искусство электроники», автор Paul Horowitz и Winfield Hill. Вероятно, гораздо более низкий уровень, чем вы хотели - цифровая и аналоговая электроника.

Смежные вопросы