изучение Более низких уровней [закрытых] вычислений

8
задан Grant Thomas 18 January 2013 в 20:08
поделиться

11 ответов

Получите себе копию Уильяма Столлингса - Организация и архитектура компьютеров . Это стандартный учебник, охватывающий большинство вопросов, которые вы подняли (и работали на меня!).

0
ответ дан 5 December 2019 в 17:34
поделиться

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

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

2
ответ дан 5 December 2019 в 17:34
поделиться

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

0
ответ дан 5 December 2019 в 17:34
поделиться

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

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

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

.
1
ответ дан 5 December 2019 в 17:34
поделиться

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

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

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

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

1
ответ дан 5 December 2019 в 17:34
поделиться

Я бы начал с чтения Компьютерные системы: взгляд программиста . Это именно то, что вы ищете. Я люблю эту книгу У меня было первое издание, и я недавно купил второе. Он используется в Карнеги-Меллон в их курсе Введение в компьютерные системы .

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

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

  • Глава 1: Обзор компьютерных систем
  • Глава 2: Представление и управление информацией
  • Глава 3: Представление программ на уровне машины
  • Глава 4: Архитектура процессора
  • Глава 5: Оптимизация производительности программы
  • Глава 6: Иерархия памяти
  • Глава 7: Связывание
  • Глава 8: Исключительный поток управления
  • Глава 9: Виртуальная память
  • Глава 10: Система- Уровень ввода-вывода
  • Глава 11: Сетевое программирование
  • Глава 12: Параллельное программирование
1
ответ дан 5 December 2019 в 17:34
поделиться

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

  • Найдите хобби, которое контролирует устройства (модели поездов, визуальный знак, музыкальная штука, роботизированное управление и т. д.) любая строка будет интересна вы и напишите код для управления ими.
  • Берите вечерние уроки или просто получайте началось там.
  • Изучение кода из нетривиальных источников. например, ОС с открытым исходным кодом с драйверы устройств, пока вы ДЕЙСТВИТЕЛЬНО понять, что он делает.
  • Все остальные ответы здесь (код C, C ++, код сборки, старые добрые стандартные книги и т. Д.)
2
ответ дан 5 December 2019 в 17:34
поделиться

Возможно, вы можете посмотреть

  1. Концепции ОС
  2. Компиляторы
  3. Структуры данных
  4. Языки уровня ассемблера и их выполнение
  5. Микропроцессоры
0
ответ дан 5 December 2019 в 17:34
поделиться

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

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

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

3
ответ дан 5 December 2019 в 17:34
поделиться

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

0
ответ дан 5 December 2019 в 17:34
поделиться

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

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

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

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

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

"AoE", она же "Искусство электроники", авторы Пол Хоровиц и Уинфилд Хилл. Скорее всего, гораздо более низкий уровень, чем вы хотели - цифровая и аналоговая электроника.

0
ответ дан 5 December 2019 в 17:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: