Знание окон Windows? - PullRequest
       9

Знание окон Windows?

9 голосов
/ 05 января 2010

Интересно, знает ли кто-нибудь из вас о внутренней работе Windows (ядро, прерывания и т. Д.), И обнаружили ли вы, что в результате вы стали лучшим разработчиком?

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

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

Ответы [ 7 ]

8 голосов
/ 05 января 2010

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

Внутренние компоненты Windows - это стандартное обозначение.

6 голосов
/ 05 января 2010

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

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

4 голосов
/ 14 апреля 2010

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

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

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

4 голосов
/ 05 января 2010

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

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

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

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

3 голосов
/ 05 января 2010

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

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

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

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

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

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

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

2 голосов
/ 05 января 2010

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

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

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

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

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

1 голос
/ 22 апреля 2017

Отец языка C сказал, что «вам не нужно изучать все возможности языка, чтобы писать хорошие коды. Чем лучше вы понимаете проблему, тем лучше вы пишете код». Знание всегда лучше.

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