Знание внутренностей окон?

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

Вы находите это, чем больше знания, тем лучше хороший девиз, чтобы иметь как разработчик?

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

9
задан 5 revs, 4 users 62% 19 July 2012 в 16:10
поделиться

6 ответов

[

] Это не умнее - абсолютно (если предположить, что вы разработчик в основном на платформе Windows, конечно). Рабочее знание того, как работает двигатель автомобиля, значительно облегчит многие распространенные задачи программирования (отладка, работа с производительностью и т.д.)[

] [

][]Windows Internals[] - стандартная справка.[

].
8
ответ дан 4 December 2019 в 07:47
поделиться

Я считаю ценным понять, как все работает внизу. CLR/.NET до C++, родной для архитектуры ASM, ASM до CPU, построение регистров и оп от логических затворов, логических затворов от MOSFET, транзисторов от квантовой физики и последних от соответствующего математического аппарата (теория групп и т.д.).

Понимание низкого уровня заставляет вас не только думать по-другому, но и чувствовать себя по-другому - как будто вы контролируете вещи, стоя на плечах гигантов

.
6
ответ дан 4 December 2019 в 07:47
поделиться

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

В качестве альтернативы я настоятельно рекомендую изучать внутреннюю часть ОС X или Linux. Это займет меньше времени, приобретет больше смысла и будет более продуктивным.

Читайте код. Читайте много кода. Читайте много хорошего кода. jQuery, Django, исходный код фреймворка AIR, ядро Linux, компиляторы.

Попробуйте выучить языки программирования, которые знакомят вас с новыми подходами, такими как Lisp, Ruby, Python или Javascript. ООП - это хорошо, но .net и Java, похоже, берут на вооружение подход промывания мозгов и поднимают его на какой-то религиозный уровень, вместо того, чтобы быть просто хорошим инструментом в вашем инструментарии.

Если вы не понимаете код, который вы читаете, это, скорее всего, означает, что вы на правильном пути, и вы изучаете новые техники.

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

Я бы также рекомендовал книгу "Coders at Work".

.
3
ответ дан 4 December 2019 в 07:47
поделиться

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

1.). Другим без этих знаний сложнее расширить или поддержать код.

2.). Внутреннее устройство системы может изменяться без уведомления, в то время как интерфейсы обычно версируются и изменения обсуждаются публично.

3.). Интерфейсы, как правило, совместимы между ревизиями платформ и аппаратного обеспечения, во внутреннем устройстве нет такой согласованности

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

.
2
ответ дан 4 December 2019 в 07:47
поделиться
[

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

] [

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

]. [

] Я согласен с вашим указом, но не согласен с тем, что опыт/практика/знания являются взаимоисключающими. Эта сеть опыта состоит в том, что у вас есть знания, полученные из этого опыта. Есть также компонент мудрости в опыте и практике, но это обычно нематериальные ситуационные элементы, которые вы применяете в будущем, чтобы избежать ошибок. Совокупность знаний - это осадок опыта[

]. [

] Подумайте об этом так, сколько людей вы знаете с более чем 30-летним опытом работы в ИТ, подумайте о них и возьмите двух лучших. Теперь зайдите в этот банк памяти и подумайте о людях, которых вы знаете в этой отрасли, которые очень умны, которые так много знают о многих вещах, и выберите двух лучших из них. Теперь у вас есть последняя четверка - если бы вам пришлось выбрать одну, чтобы начать проект с того, кто бы это был? Мы всегда выбираем супер-умного парня. [

]
4
ответ дан 4 December 2019 в 07:47
поделиться

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

Хорошее практическое правило состоит в том, что вы должны хорошо знать слой под слоем, на котором вы работаете. Так, например, если вы пишете много кода .NET, вы должны знать, как работает CLR. Если вы пишете много веб-приложений, вы должны понимать HTTP. Если вы пишете код, который напрямую использует HTTP, вы должны понимать TCP / IP. Если вы реализуете стек TCP / IP, вам необходимо понимать, как работает Ethernet.

Знание внутреннего устройства Windows действительно полезно, если вы пишете собственный код Win32 или если проблемы с производительностью ОС имеют решающее значение для того, что вы делаете. На более высоких уровнях абстракции это может быть менее полезным, но никогда не повредит.

4
ответ дан 4 December 2019 в 07:47
поделиться
Другие вопросы по тегам:

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