Преодоление технической пропасти

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

Все мы знаем, что такое iPhone. Мы примерно знаем, кто его придумал и за счёт чего он стал таким популярным. Мы знаем, что пятая версия длиннее, чем 4S, и что у неё выше разрешение экрана. Мы знаем, что в iPhone 4S два ядра вместо одного в iPhone 4 и кучу других деталей. Наконец мы знаем, что проект коммерчески невероятно успешен, и вывел Apple из производителя железа для гиков и профессионалов в мейнстрим, сделав её из самых богатых компаний мира.

Внимание, ключевой вопрос: можем ли мы воспроизвести iPhone? Повторить его. Ничего не выдумывая, взять и сделать точно такой же или хотя бы нечто, отдалённо его напоминающее? Пусть даже самую простую, старую и слабую его модель? Своими руками отлить из металла спаять, собрать, свинтить, скрепить, вырезать, вырастить…

Не можем. Существует колоссальная, огромная, и, судя по всему, уже никогда не преодолимая пропасть между тем, что я могу cмастерить сам и той невероятно навороченной хреновиной, которая лежит у меня в кармане. Почему? Ну например, по историческим причинам.

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

Но человечество не стояло на месте. За десятилетия непрерывной гонки мощностей средний уровень железок вырос на несколько порядков. Это касается мощности, миниатюрности и, самое главное, сложности. И юзабельности. Компьютеры стали проще и понятнее. И поэтому средний уровень пользователя компов и других железок сильно поглупел. Разница между имеемым и понимаемым стала колоссальной и продолжает расти с каждым годом. Мы всё дальше и дальше от осознания того, как работает та штука, через которую мы звоним своей бабушке.

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

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

Таким образом, единственный способ держать ситуацию хоть под каким-то контролем — это понимать весь технологический стек, знать в лицо кажду матрёшку и каждый фрагмент в этом раздвижном телескопе. У этого факта есть очень просто следствие, которое, на мой взгляд, является важнейшей проблемой всего современного IT-мира и, прежде всего, мира программистов. Не будучи экспертом по своей технологии и по всем уровням абстракции, которые лежат под ней, Вы не сможете понять, как именно работает написанная Вами программа. Понять, по каким маршрутам ходят байтики и битики, почему эти маршруты именно таковы, и как их изменить. Как только у нас на каком-то из нижних уровней абстракции пропадает понимание происходящего — пиши пропало. Мы вынуждены тыркаться как слепой котёнок, двигаясь наугад и пытаясь предугадать результаты тех или иных изменений.

Как же исправить ситуацию? На мой взгляд, начать надо с изучения того, как технология, на который Вы работаете, устроена внутри. В общем-то это и есть главная мысль поста: изучайте внутреннее устройство Вашей технологии. Если Вы программист — изучайте, как устроена платформа, на которой Вы пишите программы, а так же все уровни под ней. Если Вы менеджер — постарайтесь понять, как работают те или иные инструменты управления, предсказания, а так же, как работают механизмы взаимодействия между людьми.

Один из способов изучения — чтение книг. Другой — посещение тематических лекций и семинаров. Например, если Вы — джавист, то стоит обратить внимание на JUG-движение, существующее в Питере, Киеве, Риге, Воронеже, а скоро — и в Москве. Если Вы дотнетчик — посмотрите на питерский AltNet. Если же Вас интересует, что вообще творится вокруг — то посмотрите на таллинский Devclub(видео, анонс ближайшей встречи), на его рижский вариант (видео) и на питерский CodeFreeze (видео), ближайшая встреча которого состоится уже в эту субботу и будет посвящена внутренностям MySQL.

Ну и конечно, не стоит забывать о третьем способе изучения деталей — чтении Хабра, $username$!
Поделиться публикацией

Комментарии 121

  • НЛО прилетело и опубликовало эту надпись здесь
      +6
      Я просто оставлю это здесь: A Complete Understanding is No Longer Possible
        +2
        Интересная ссылка, спасибо! Но посыл у автора категорически неправильный. Вместо призыва к тому, чтобы разбираться с проблемами, чувак призывает расслабиться и получать удовольствие. Не по-пацански это!
          +4
          Нет там такого призыва.

          И да, вы уже выучили все уровни свой платформы (по ссылке подсчитано — 11 тысяч страниц)?
            +4
            За что минус-то, автор?

            изучайте внутреннее устройство Вашей технологии. Если Вы программист — изучайте, как устроена платформа, на которой Вы пишите программы, а так же все уровни под ней.


            Вы уже выучили, как минимум, ntel 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture (550 страниц) и два тома, описывающих набор инструкций (684 страниц и 704 страниц, соответсвенно)?

            Или ваша задача — громко причитать и призывать к чему-то, что вы сами не собираетесь делать?
              0
              Выучить — это работает только в школе, но или в какой нибудь примитивной работёнке, вроде была девочка не рецепшн, стала офис менеджером, выучилась…

              Путь программиста, осознание существующих абстракций и создание ещё более абстрактных абстракций :-)
              Годы такого опыта, стирают рамки концепций, языков, платформ\фреймвоков, и дают специфическое целостное восприятие, поглощающие любые новые абстракции, без особого труда…
                +2
                дают специфическое целостное восприятие, поглощающие любые новые абстракции, без особого труда…

                И без особой пользы.
                  0
                  Польза, кроме «вечной актуальности практических навыков» ещё и в возможности переноса «абстрактного» опыта в «реальный мир», где человеку владеющему своим разумом всегда найдутся место и ресурсы, ведь обычно люди находятся во власти своего разума.

                +2
                > За что минус-то, автор?

                У автора недостаточно кармы, чтобы ставить плюсы или минусы! Не я это, «среди своих ищите» ;)
                  –1
                  Ну ладно :) Благо там уже плюсик :)
          +6
          Не будучи экспертом по своей технологии и по всем уровням абстракции, которые лежат под ней, Вы не сможете понять, как именно работает написанная Вами программа.

          То есть вы начисто отвергаете сам смысл понятия «абстракция»?
            +1
            Абстракции текут: russian.joelonsoftware.com/Articles/LeakyAbstractions.html

            Оригинал на английском: www.joelonsoftware.com/articles/LeakyAbstractions.html
              0
              Абстракции текут, но это не повод их отвергать.

              Если вы не можете работать с абстракциями — вы не можете управлять сложностью. Если вы не можете управлять сложностью — вы провалите любой осмысленный проект.
                +1
                А их никто и не отвергает. Просто ты их пишешь, пишешь — а потом бац! И они внезапно «дают тебе по кумполу обратно», как говорит один товарищ.
                  0
                  Это повод в этот момент разобраться в абстракции уровнем ниже или обратиться к компетентному специалисту (в зависимости от того, что эффективнее).
                    0
                    а до этого — писать говно?
                      0
                      А до этого надо писать качественный код, который исходит из предложенных абстракций. Что характерно, именно в этом состоит ремесло программиста.
                        0
                        а что такое «качественный код, который исходит из предложенных абстракций»? Какова метрика качества?
                          0
                          Для прикладных решений — соответствие заявленным требованиям.
                            0
                            Отличная метрика!

                            Давайте уточним: она бинарная?
                              0
                              При адекватных требованиях — да.
            +13
            Если Вы программист — изучайте, как устроена платформа, на которой Вы пишите программы, а так же все уровни под ней. Если Вы менеджер — постарайтесь понять, как работают те или иные инструменты управления, предсказания, а так же, как работают механизмы взаимодействия между людьми.
            Если вы пилот — тренируйтесь не только летатъ, но и изучайте все уровни — изучайте устройство мотора/турбин самолёта, устройство микропроцессора управляющего турбинами, выучите язык программирования, на котором написан код выполняющийся на этом микропроцессоре, изучите, как устроены игровые компьютеры в салоне и научитесь разрабатывать игры для пассажиров, выучите сопромат, чтобы знать, почему крылья не отваливаются, и закончите мединститут, чтобы знать анатомию бортпроводниц наконец. Так? :)
              +3
              Именно! Язык программирования и анатомия, конечно, ни при чём, но вот про мотор/турбины — Вы недалеки от истины. Посмотрите, например, минаевскую программу с авиадиспетчерами. Там чуваки в какой-то момент ровно об этом и говорят — что пилот должен знать немного больше, чем «куда крутить ручку».
                +1
                Немного больше != все уровни досконально
                  +1
                  ну хотя бы вниз пару уровней. Цель поста — попытаться мотивировать народ ковырять вглубь, а не только сидеть на поверхности!
                    –1
                    Сколько уровней? Вниз пару уровней от С++ — это как раз уровень 11 000 страниц спецификаций.

                    Вы на чем программируете?
                      +1
                      > Вы на чем программируете?
                      на Java, в основном.

                      Везде, и это очевидно, необходим некоторый баланс. Зачем впадать в крайности? Я не вижу смысла в чтении многих тысяч страниц спецификаций. Потому что спецификации — это справочная литература.

                      В то же время существует масса другой технической литературы, которая написана во-первых, менее формальным языком, чем спека, а во-вторых, уже концентрирует некоторый человеческий опыт, описывает распростраённые ошибки и собирает в себе best practices.
                        0
                        > на Java, в основном.

                        Java -> JVM -> OS

                        Вы разбираетесь как в JVM так и в ОСи, для которой работаете? То есть, когда вы делаете запрос по сети, вы точно себе представляете, как этот запрос происходит? Вы знаете все особенности размещения объектов в памяти? Каким образом NIO взаимодействует с системой? Ну и т.п.

                        Ах, вы еще наверняка с базами данных работаете.

                        Java -> JVM -> DB

                        Знаете внутренне устройство базы? Как устроены анализатор и оптимизатор запросов? Как устроены индексы на диске? Формат файлов, используемый для записи данных? Ну и т.п.

                        > В то же время существует масса другой технической литературы, которая написана во-первых, менее формальным языком, чем спека,

                        Это значит, что эта техническая литература не покрывает все аспекты

                        > во-вторых, уже концентрирует некоторый человеческий опыт

                        То есть вы предлагаете использовать абстракции в обучении, но не хотите делать то же в программировании. Почему?

                        > собирает в себе best practices

                        Это следующий шаг после разбирания в «уровне». Потому что best practices редко досконально описывают, почему надо делать именно так, а не иначе.
                          +1
                          Я нигде не утвержал, что я разбираюсь во всём подряд. Я пытаюсь разбираться хотя бы в чём-то и призываю к этому остальных!
                            0
                            В общем-то это и есть главная мысль поста: изучайте внутреннее устройство Вашей технологии. Если Вы программист — изучайте, как устроена платформа, на которой Вы пишите программы, а так же все уровни под ней.

                            Повторю вопрос: вы уже изучили все уровни? Судя по всему, нет. Почему же вы призываете к чему-то, а сами этого не делаете?

                            Можно так же заметить, что все уровни стали

                            ну хотя бы вниз пару уровней.

                              +1
                              Я изучаю. Я в процессе. И к этому же призываю остальных.
                  0
                  Невозможно охватить все сферы деятельности, все уровни абстракции. Пилот не должен знать как починить двигатель самолета, так как он не имеет к нему доступа во время полета. Не выбираться же на крыло на скорости в 900Км/ч и на высоте 10Км. Так что если двигатель накрылся, то скорее всего кроме как «покрутить какие ручки» он и сделать ничего не сможет особо. Так что уровень абстрации «двигатель» он должен знать только на уровне интерфейса. Реализацию уже знать доскональна не обязательно, так как в следующей модели самолета эта самая реализация может измениться.
                    0
                    В самолете как минимум 3 специалиста, даже если один спит, а второй непосредственно пилотирует, третий может разбираться. Например, самолеты с неисправными измерителями скорости. Гражданские европейцы садили их прямиком в океан методом «утюг ушел на дно», а военные американцы вполне себе долетали. Формальный интерфейс испорченного измерителя скорости, который заледенел и ведет себя странно, отличается от ожидаемого. Человек который знает, как ведет себя неисправный датчик, может за оставшуюся минуту что-то сделать. Или вот тот чел из Lockheed, который посадил гражданский самолет на одном движке. А остальные отправятся рыбам.
                  0
                  Ждал подобной метафоры :)
                  +6
                  Если мне надо куда-то поехать — я сажусь в автомобиль и еду.
                  Жму газ — он разгоняется, томоз — тормозит, кручу руль — он поворачивает.
                  Пока все это происходит — мне все равно, что у него там внутри. Вот честно.
                  Дизель там или бензин, инжектор или карбюратор — зачем мне это знать?
                  Ну что-то я знаю, конечно. Омывайку там залить, колеса подкачать :)
                  Но это необходимый мне минимум.
                  Начинаются проблемы посерьезнее — я не лезу под капот, а везу его на сервис.
                  Где знающие люди его починят. А я пока буду заниматься тем, что мне интересно. И ездить при этом на метро, да.

                  Просто перечислить весь стек технологий, с которым я работаю каждый день, займет полэкрана.
                  В тонкости каждого фреймворка не вникнешь, жизни не хватит.
                    +4
                    В интерфейсе почти всех автомибилей есть серьёзная недоработка, имхо — чтобы залить омывайку, нужно лезть под капот. Примерно как если бы для того, чтобы скинуть фоточки с флешки на комп приходилось каждый раз вскрывать системник и втыкать флешку напрямую в мат.плату.
                      0
                      Если бы компьютеры стояли бы большую часть времени на улице, то наверное тоже были бы оснащены каким-то «капотом» прикрывающим все порты/органы управления от постороних и погодных неприятностей.
                        0
                        По вашей логике горловину бензобака тоже нужно упрятать под капот?
                          0
                          Горловина бензобака прекрыта своим собственным лючком. Стоит признать, что омывайку нужно заправлять достаточно редко, так что надобности в отдельном лючке, который несколько испортит внешний вид машины, а также в более сложной системе подачи жидкости просто нет.

                          А логика спрятать все редко-нужные интерфейсы в одном месте — весьма понятна. Как раз — залез под капот глянуть уровень масла, заодно бросил взгляд на уровень других жидкостей. Согласитесь — это удобнее, чем дёргать кучу лючков, да и датчик пришлось бы на всё цеплять.
                            0
                            да и датчик пришлось бы на всё цеплять
                            Именно так. И поэтому действие:
                            залез под капот глянуть уровень масла
                            становится совершенно не нужным.

                            В современном автомобиле, если это не продукция Автоваза, только два расходных материала регулярно и часто пополняемых водителем — топливо и омывайка. Всё остальное менять/пополнять нужно очень редко.
                              0
                              Менять и проверять наличие — разные вещи. Любой автовладелец/механик вам скажет, что иногда все таки стоит заглянуть под капот. В любой машине. И в иснтрукции по эксплуатации Вашего авто, скорее всего написано тоже самое
                                0
                                И что я как водитель там под капотом должен увидеть? Ну, кроме омывайки.
                                  0
                                  Ну как минимум — уровень масла, уровень охлаждающей жидкости, уровень тормозной жидкости, износ ремня/цепи ГРМ.
                                    0
                                    Вытащить щупы и посмотреть где на них масло.
                                    А если просто под капотом, то там не должно быть никаких лишних подтеков чего-нибудь, как и явно лишних деталей или отсутствующих деталей.

                                    Все это есть в инструкциях по эксплуатации даже в иномарках.
                                      0
                                      Убедиться в отсутствии гнёзд и другой живности :)
                                        +1
                                        Вот действительно полезный ответ, спасибо :)
                                        У меня как-то звери погрызли оплётку кабелей — хорошо, что страховка покрывает это.

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

                                        Автомобиль — это абстракция, у которой есть интерфейс для водителя — окна, двери, руль, педали, регулятор громкости радио, док-коннектор для айфона, горловины топливного бака и омывайки. Не спорю, что у него есть интерфейс и для автомеханика, но класс водителя не требует наличия интерфейса автомеханика.
                          +1
                          Когда я в очередной раз жму на кнопку поиска в гугле, меня действительно мало волнует, что там «под капотом». Но вот если я пишу гугл, то наверное мне имеет смысл знать, что там внутри и как оно работает.
                            +5
                            Эээ… не совсем понял… если я «пишу гугл», то я и так буду знать, что там внутри, я же сам это написал :)

                            Имхо прогресс в том и состоит, чтобы человечество в основной массе пользовалось плодами предыдущих поколений, а не изобретало колесо каждые 20 лет.
                              0
                              кажется, твой сосед/начальник/подчиненный написал, а ты сидишь и несколько месяцев читаешь последние коммиты, тренируешься на примерах, прежде чем написать какой-то код, который пойдет в продакшн
                            +1
                            Плохая аналогия, мне кажется…
                            Из-за такого подхода в управлении автомобилем куча людей попадает в аварии перепутав педали. Мысль «кручу руль — он поворачивает» приводит к неумению выполнить параллельную парковку, так как люди не понимают, что автомобиль протяженный и не хотят понять вокруг каких осей он поворачивает.
                            Вылеты с дороги по весне и осени, когда появляются первые заморозки все оттуда-же. От непонимания того, как ведет себя автомобиль в зависимости от типа привода, например, на скользком покрытии.
                            Тип двигателя и особенности его поведения лучше знать для выполнения безопасных обгонов, например…

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

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

                              Давайте забудем о том, что на дороге вокруг нас много идиотов машин. Я ведь не пишу свою программу с оглядкой на то, как кто-то другой пишет свою :) Упростим систему до «я и мой автомобиль».

                              Интерфейс здесь является постоянным — педали, руль (опционально — ручка КПП). В конечном итоге грамотное владение интерфейсом позволяет мне доехать из пункта А в пункт Б, а вовсе не знание устройства автомобиля. Какие именно стоят тормозные колодки, когда я торможу (в штатной ситуации!), не играет роли. Лишь бы они вообще были :) Но и это уже лишние подробности реализации. «Жму педаль — торможу», это главное. А колодки там или парашют — не важно.

                                0
                                Тоже не соглашусь. Интерфейс то постоянный, но вот отклик на его использования всегда разный. Особенно это хорошо заметно, когда надо ездить на нескольких машинах практически одновременно. В общем то одно и тоже, но есть важные нюансы.

                                "«Жму педаль — торможу», это главное."
                                Продолжу аналогию: пережали тормоз, колеса заблокировались и машина стала неуправляемой даже на ровном сухом асфальте.
                                Может все таки мало доехать из пункта А в пункт Б, нужно еще доехать безопасно? А для последнего лучше понимать не только интерфейс, но и то, как он может отреагировать.
                                  0
                                  Вы всерьёз задумываетесь каждый раз о устройстве автомобиля, когда жмёте на тормоз?

                                  Очень многие вещи мы привыкли понимать на уровне «работает таким образом, потому что работает таким образом». Заблокировались колёса? «Качай» тормоз (потом, на досуге почитаешь, зачем, а сейчас — просто «качай»!). надо повернуть — поверни руль. А как работает твой усилитель рулевого управления тебе знать для этого не нужно.

                                  А если уж пошло про погружение в глубины «как оно работает» то даже сейчас ученые не знают, как же всё таки устроена наша вселенная. И какие ДЕЙСТВИТЕЛЬНО законы в ней существуют (те что известны, часто оказываются приближением, которое работает только в некой определённой области), и главное — почему именно такие законы.
                                    0
                                    согласна в какой-то мере с предыдущим оратором. Я как минимум думаю какой привод, а это уже несколько больше чем 3(2) педали, руль и ручка кпп.

                                    «Качай» тормоз (потом, на досуге почитаешь, зачем, а сейчас — просто «качай»!).


                                    хорошо если кто-то сказал тебе заранее что нужно «качать» тормоз в случае блокировки колес… а если нет? Понимание того как что устроенно помогает «доходить» до этого самому.
                                      0
                                      Покуда вы будете думать какой привод — будете уже в кювете. Вот — www.youtube.com/watch?v=o_Tzn0MOOis — для оценки того, сколько у Вас есть времени на «подумать».

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

                                      Так что — практика, практика и ещё раз практика. Хотяб картинг, на худой случай. Хоть какое-то представление о машине в упраляемом заносе даёт (только не забывайте, что у него задний привод).

                                      так вот, я к чему — избыточные знания помогают в учёбе (уберают лишние вопросы) или иследованиях, но в посведневной практике куда важнее просто уметь использовать некую технологию, чем понимать как оно на самом деле работает.
                                        0
                                        Я не говорю что я «начинаю» об этом думать в момент заноса… я просто садясь в машину примерно представляю что буду делать в момент заноса и что ждать от этой машины в поворотах и тд. Если садиться с единственной мыслью «жму педальку и она едет» то явно не на моей машине:D
                                          0
                                          Врёте, не думаете Вы об этом. Вы думаете куда и как Вам ехать. О том, как себя машина поведёт — думаешь разве что на новой машине. А дальше — руки/ноги сами всё делают. Ведь даже когда в поворот входишь, то не думаешь «Так, сейчас я вхожу в поворот, надо смотреть на спидометр чтобы скорость была не выше 15км/ч, т.к. сейчас идёт дождь, поварачиваем вправо, поэтому рычажок поворотников поднимаем вверх… так, проехал достаточно, растояние до бордюра приемлимое, велосипедистов пролезающих справа нет, слева никто не подрезает — поварачиваем руль» ну и так далее. Ну нету такой мыслительной деятельности. Всё происходит на автомате. И именно автоматизм спасает в экстренных ситуациях, когда нужно за доли секунды принять решение.
                                            0
                                            Ну почему же вру… конечно вероятно я об этом не в каждом повороте думаю, но вот не так давно была ситуация… еду с какой-то скоростью по полосе, тут из соседнего стоящего ряда начинает высовываться машина, у меня два варианта: начать оттормаживаться или взяться близко к бордюру и «прощемиться», дорога мокрая, понимаю что если начну оттормаживаться велик шанс что унесет «жопу» (бывало) и хз что будет, поэтому сигналю чтоб дальше не рыпался и протискиваюсь.

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

                                              Это как когда идёшь по тратуару — а там лужа. И понимаешь, что не перепрыгнешь. Просто, потому что эмпирически знаешь свои возможности.

                                              А по нашей теме — Вы ведь не задумывались в этот момент о том как протекторы шин отбрасывают влагу с дороги, или как повышается давление в тормозной системе. Вы просто анализировали потребительские возможности Вашей машины, а не технологический стек, на котором она построена.
                                                0
                                                Тут я не спорю, я выше писала что досканально знать не обязательно. Мои комменты скорее ответ на то, что чтоб управлять машиной надо знать больше, чем просто «жму педаль — еду, кручу руль — поворачиваю». Вероятно изначально стоило ответить на коммент monzdrpower, а не ваш =)
                                          0
                                          Просто имея несколько больше информации и представления о влиянии каких то факторов на поведение машины дают возможность либо избежать тех же заносов, либо быть к ним готовыми либо «держать руку» на чем то еще. (когда мне нужен мизерный тормозной путь в экстренной ситуации я затягиваю ручник (вероятно особенность моей машины и моих тормозов) но все ж выезжая куда то я имею это ввиду)

                                          Я не говорю что надо знать досканально устройство всех внутренностей авто, а лишь о том, что как по мне надо знать больше, чем «жму педальку она едет»
                                            0
                                            На такой дороге гнать 150 несколько многовато ИМХО…

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

                                            Умея только использовать Вы навсегда останетесь в рамках этой технологии. Понимание позволит ее развивать и адаптировать под себя и новые условия.
                                              +1
                                              На такой дороге гнать 150 несколько многовато ИМХО…
                                              Я на скользкой дороге как то на 20 км/ч пошёл в занос на встречку… Честно говоря на раздумья времени тоже небыло — руль крутил на автомате, даже не думая о том, как правильно в теории. А задумлся б — была бы авария.

                                              Умея только использовать Вы навсегда останетесь в рамках этой технологии. Понимание позволит ее развивать и адаптировать под себя и новые условия.


                                              Я вот каждый день использую холодильник — Вы всерьёз считаете что мне нужно углублятся в теорию построения рефрежираторов? :) На самом деле, конечно же я углублялся в вопрос, «что у них внутри». Когда стоял вопрос выбора нового холодильника и транспортировки его с места на место.

                                              Тоесть, всегда нужно понимать, что есть технологии, которыми ты пользуешься — и ладно. Тебе комфортно в рамках этой технологии. А вот когда появится желание/необходимость выбирать, оптимизировать, нестандартно использовать — тогда обычно человек и узнаёт больше.

                                              А вот пустые призывы «старайтесь узнать как можно больше, о том, что Вы используете» — по моему глупы. Потому что, как Вы правильно заметили, невозможно знать всё
                                          0
                                          Вы всерьёз задумываетесь каждый раз о устройстве автомобиля, когда жмёте на тормоз?

                                          Сейчас нет. Но устройство автомобиля мне объяснили и рассказали почему и зачем задолго до того момента, как я до педалей стал нормально доставать.

                                          А если уж пошло про погружение в глубины «как оно работает» то даже сейчас ученые не знают, как же всё таки устроена наша вселенная

                                          А это уже демагогия.
                                          Все знать невозможно, но Вы же используя компьютер сами подтверждаете, что ученые все-таки что-то то знают…
                                            0
                                            Верно. И это подтверждает, что необязательно погружатся на «всю глубину» чтобы что-то сделать.
                                      0
                                      но все что я говорил — касается «штатного поведения»

                                      правило «тормозной путь со скорости Х км/ч составит У м, на скользкой дороге — У*1.3 м» — подходит в большинстве случаев.
                                      но если мне нужно во чтобы то ни стало уметь со скорости 100 км/ч остановиться через 25 метров, тогда я полезу под капот и буду очень тщательно изучать тормозную систему, подбирать колодки, тормозные диски и проч.

                                        +1
                                        Мысль «кручу руль — он поворачивает» приводит к неумению выполнить параллельную парковку
                                        Мой автомобиль умеет парковаться самостоятельно :) Правда, я пользовался этой фичей всего несколько раз — чтобы впечатлить девушек или просто по приколу смотреть, до чего техника дошла.

                                        понять вокруг каких осей он поворачивает
                                        Но всё же это относится к разделу «кручу руль, и он поворачивает» — знание устройства мотора, гидравлики и бортового компьютера при этом не нужно. Нужно лишь примерно представлять, куда поедет автомобиль при соответствующем положении руля.

                                        Вылеты с дороги по весне и осени, когда появляются первые заморозки все оттуда-же. От непонимания того, как ведет себя автомобиль в зависимости от типа привода, например, на скользком покрытии.
                                        Правило-то простое: если лёд на дороге или просто холодно — езжай медленней, и тебе не пригодятся техники выхода из заноса на льду.

                                        Имхо, подавляющее большинство аварий — из-за несоблюдения ПДД, а не незнания устройства двигателя.
                                        Скорей бы уже запретили вождение автомобилей людьми.
                                          0
                                          Мой автомобиль умеет парковаться самостоятельно :)

                                          Интересная технология, но правда в живую видеть ее применение мне не доводилось.

                                          Правило-то простое: если лёд на дороге или просто холодно — езжай медленней, и тебе не пригодятся техники выхода из заноса на льду.

                                          Простое, но в общем случае бесполезное. Да, лететь как летом нельзя, но для заноса на льду достаточно и 5 км/ч. При этом даже всякая электроника может не успеть помочь. По этому иметь хотя-бы базовые представления о том куда и что крутить и нажимать/отпускать в случае заносов/сносов нужно обязательно. При этом еще и соотносить эти знания с приводом автомобиля, так как поведения переднего/заднего и полного приводов отличаются значительно.
                                            0
                                            Как правило, если есть электронная система стабилизации, то она сама начнёт вытягивать автомобиль из заноса. И от ваших знаний «что нажимать» толку будет не много. Точно также, как на машине с АБС нет смысла «качать» тормоз — только хуже сделаете.
                                              0
                                              … а очень много. В моей машине есть система стабилизации и я прекрасно знаю в каких случаях она бесполезна.

                                              Точно также, как на машине с АБС нет смысла «качать» тормоз — только хуже сделаете.

                                              Вот Вы и сами подтвердили, что надо знать минимум есть АБС в машине или ее нет, а это уже устройство тормозов пошло, что не согласуется с подходом «А колодки там или парашют — не важно.», который был высказан чуть выше господином monzdrpower.
                                                0
                                                Это не устройство тормозов, это правила эксплуатации конкретной машины. Мне не нужно знать КАК работает АБС, мне важно знать что оно просто есть и включено. Точно также, как Вам не нужно знать конструктивные отличия дизеля и бензинового двигателя — достаточно просто знать какое топливо нужно заливать и прочие условия эксплуатации.

                                                Так что товарищ monzdrpower прав — Вам не нужно знать КАК работают тормоза, Вам нужно всего лишь знать как с ними нужно обращатся.
                                          0
                                          Мысль «кручу руль — он поворачивает» приводит к неумению выполнить параллельную парковку, так как люди не понимают, что автомобиль протяженный и не хотят понять вокруг каких осей он поворачивает.
                                          Понимание принципа действия усилителя руля или рулевой рейки поможет? И да, я прекрасно понимал, что машина вращается вокруг заднего колеса — но это понимание мало помогало. Лишь после пары неудачных парковок (на полигоне, конечно же) пришло понимание, как это сделать, чтоб получилось. На уровне каких то рефлексов.

                                          От непонимания того, как ведет себя автомобиль в зависимости от типа привода, например, на скользком покрытии.
                                          Но в случае заноса понимание Вас не спасёт. Спасёт только практика и рефлексы. Как говорил один мой знакомый — спортсмен должен быть тупым. Потому что умный начинает задумываться, и теряет время/пропускает удар. Шутка, конечно, но доля правды есть.

                                          Насчёт «умности» машины — многие машины не только разгонятся умеют, но и тормозить (автоматически, в некоторых ситуациях). А также сохранять траекторию. Так что не путайте дурака, взявшего папину машину без спросу, и мнящего себя супер гонщиком и просто малоопытного водителя.
                                            0
                                            Понимание принципа действия усилителя руля или рулевой рейки поможет?

                                            В «кручу руль — он поворачивает» ошибка не в незнании принципа работы рулевого управления, а в том, что почему-то считается, что поворачивает машина, а на колеса. Машина никуда не поворачивает. Поворачиваются колеса, а представляя куда повернуты колеса гораздо проще понять куда поедет машина.

                                            Но в случае заноса понимание Вас не спасёт. Спасёт только практика и рефлексы.

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

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

                                            Я по себе сужу. Если бы я не начал учиться ездить на тупой до ужаса машине по таким дорогам, куда после дождя только полноприводники суются я бы сейчас водил хуже.
                                            Кстати тонкий слой мокрой глины — просто идеальный вариант для отработки поведения при заносах на малых скоростях ИМХО и нажать тормоз, остановиться и подумать время есть.
                                              0
                                              В «кручу руль — он поворачивает» ошибка не в незнании принципа работы рулевого управления, а в том, что почему-то считается, что поворачивает машина, а на колеса. Машина никуда не поворачивает. Поворачиваются колеса, а представляя куда повернуты колеса гораздо проще понять куда поедет машина.

                                              Ну разве что полный дурак будет считать что машина сама собой повернёт. А вот о таких «мелочах», как например, что задние колёса идут по меньшему радиусу — забывают очень многие (особенно если посмотреть на зажатых на перекрёстках фурами). Да, это теоритический минимум. Который парой наездов на бордюр усваивается намного лучше.

                                              Практику и рефлексы неважно как отрабатывать — зная «глубокое» устройство или нет. Знание теории просто избавляет от вопроса «почему так, а не иначе».

                                              Накатавшись по ямам «приходится» научится чуствовать габариты и поведение машины лучше. А вот умение правильно переключать передачи — Вам на машине с автоматической коробкой передач не пригодится. Как и навык торможения, на машине с АБС. Так что — новое, не значит плохое :)
                                                0
                                                Ну разве что полный дурак будет считать что машина сама собой повернёт.

                                                Не сама собой конечно, но вот где находится ось вокруг которой машина поворачивает — это вопрос, на который не все интуитивно могут найти ответ сидя за рулем автомобиля. А из этого и вытекает меньший радиус и факт, что эта ось находится вне пределов автомобиля.

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

                                                Так что — новое, не значит плохое :)

                                                Не смею спорить с очень правильным высказыванием!
                                            0
                                            > а когда поймут то в лучшем случае может пострадало только железо

                                            представь ситуацию, ты — военный водитель, ведешь группу через африканские болота. Но по какой-то причине ты забыл, в каком режиме нужно через них ехать, какие тормозить для меньшего износа, сколько винтиков разболталось. В результате железо сломалось. Но по какой-то причине ты не знаешь, как восстановить свой автомобиль подручными средствами и подручными инструментами. В результате путешествие продолжается пешком и все умирают в страшных муках.
                                              0
                                              Если в результате поломки автомобиля группа может погибнуть, и при этом в группе нет механика — это ошибка того, кто планировал поездку.
                                                0
                                                Почему бы водителю не быть механиком, специализация-то одна.
                                                  0
                                                  Это вы из чего делаете вывод о том, что специализация одна?
                                                    0
                                                    Задача — перевезти людей из точки А в точку Бэ. Каким сопособом — никого не волнует, лишь бы это было сделано. Точно так же, как никого из хозяев бизнеса обычно не волнует, каким образом менеджер проекта доведет его до конца, лишь бы довел. Возможно ему придется 24х7 писать почту и читать документацию, или убить и отправить по реке трупы конкурентов, но ко вторнику релиз должен быть. Так же как менеджера не волнует, какой ассемблер и тонкости платформы нужно изучить программисту, чтобы сортировка, указанная в графике релизов, занимала не два часа, а две минуты. Есть задача — дотянуть группу до точки Бэ, и если для этого надо стать механиком — иди и становись механиком.
                                                      0
                                                      Весь ваш текст никак не подтверждает ваш тезис о единстве специализации.

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

                                                      Вам не приходит в голову, что найти механика может быть существенно проще?
                                                        0
                                                        Брукс в «человекомесяце» рисовал графики, которые показывают накладные расходы на интеграцию систем. Видели? Что думаете? :)

                                                        В автономных командах разведчиков-диверсантов совсем немного человек. Три, пять, семь, не больше. Что думаете? :)
                                                          0
                                                          Брукс в «человекомесяце» рисовал графики, которые показывают накладные расходы на интеграцию систем. Видели? Что думаете? :)

                                                          Не видел.

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

                                                          Думаю, что не всякая работа устроена так же, как ремесло разведчика-диверсанта.
                                                            0
                                                            flibusta.net/b/146089
                                                            www.ozon.ru/context/detail/id/83760/

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

                                                            (для меня, как линуксоида, это наблюение означает следующее: unix-way на самом деле не решает проблем, а осложняет жизнь пользователю, т.к. самая дорогая операция, интеграция миллионов кусочков в единое целое, перекладывается на пользователя. Отдельные кусочки, типа Apache HTTP Server, могут быть сколько угодно идеальными, или даже неидеальными, но на конечный результат — готовый дистрибутив, гораздо сильнее повлияют трудозатраты пользователей (включая разработчиков дистрибутива) по интеграции этих кусочков. А так как, обычно, у пользователя очень-очень мало ресурсов, результат — дистрибутивы линуксов — работают кошмарно. )
                                                              0
                                                              Тем не менее, тезиса из поста это никак не доказывает.
                                            0
                                            Вот в этом и есть разница между автолюбителем и автопрофессионалом. Найдите какого-нибудь гонщика, и спросите, что он знает о своем автомобиле.

                                            > В тонкости каждого фреймворка не вникнешь, жизни не хватит.

                                            зачем каждого-то? Выбрал самолет — на нем и летай
                                            0
                                            Спасибо, Капитан.
                                              –1
                                              Скорее mr.Freeman… И как всегда он говорит о правильных вещах, языком поверхностным и не далёким.
                                              Тут, вот уже программисты, электронщики и даже менеджеры сейчас популярно перемоют топикастеру все кости, по поводу того как он неправ, но это не умаляет затронутой им проблемы.

                                              И я предлагаю посмотреть на неё, несколько с другой стороны.
                                              ИМХО не так важно знание чего-либо или обладание каким-либо специфическим навыком. Как развитое мышление, гарантирующие быстрое освоение, синтез и создание любых знаний и навыков!
                                              Это как школьная физика и алгебра с геометрией, которые можно учить, а можно просто сочинять по мере необходимости.
                                              +2
                                              > Если Вы программист — изучайте, как устроена платформа, на которой Вы пишите программы, а так же все уровни под ней.

                                              Зачем? В чем состоит практическая выгода?

                                              Например, документация по архитектуре процессоров Интеля могут легко занимать сотни страниц (и еще отдельно — пару сотен страниц по оптимизации). При том, что современный компилятор того же С/С++ генерирует код, в разы более эффективный, чем код, который сможет написать обыкновенный программист. При том, что Интел — далеко не единственная архитектура.
                                                0
                                                И это при том, что бекенды для компиляторов пишут в том числе инженеры из компаний, разрабатывающих процессоры, пользуясь не публичной информацией о внутреннем устройстве процессоров.
                                                +4
                                                Ну и добавлю.

                                                Автор топика способен сам сделать… ну например простейшую железную лопату? Найти и выкопать руду, очистить ее, расплавить и выковать железо?

                                                Что-то мне подсказывает, что нет. Так к чему нытье?
                                                  +4
                                                  Автор под предлогом борьбы за прогресс почему-то берется отрицать разделение труда. Для того чтобы в России появился свой условный айфон нет необходимости в том, чтобы каждый программист разбирался в архитектуре микропроцессоров. Нужно чтобы было достаточно много специалистов на каждый уровень абстракции и эффективная система коммуникации между ними.
                                                    +1
                                                    Мне очевидно, что инженер, имеющий целостную картину и обладающей бОльшим кругозором, может сделать свой кусок лучше того, кто не видит дальше собственного носа. Айти авось — не конвеер, где каждый свою зайку к автомобилю прикручивает.

                                                    Ну а пост во многом о том, что кругозор надо расширять.
                                                    +5
                                                    В экономике это называется разделением труда.
                                                    Без него невозможно повышение производительности труда, и, соответственно, интенсивный рост экономики и уровня жизни.
                                                    Так что правильный вопрос — «а зачем всё это знать»?
                                                    В армии считается, что солдат должен знать задачу своего подразделения и двух более крупных (например, взвода, роты, батальона). Офицер дополнительно должен уметь поставить задачу своим прямым подчиненным и в редких случаях — подчинным своих подчиненных. Аналогично, в инженерном деле необходимо и достаточно знать свой уровень абстракции и понимать, что происходит на двух уровнях ниже и выше.
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                        +1
                                                        Пост по мотивам выступления Мэтта Ридли?
                                                        www.ted.com/talks/matt_ridley_when_ideas_have_sex.html
                                                        Никто не знает как сделать комьютерную мышь.

                                                          0
                                                          Не удивительно — в каждом таком девайсе миллионы человекочасов работы инженеров и программистов, попытки осознать все до конца провальны, а главное мало кому нужны (кроме как для повышения ЧСВ)
                                                          Лучше быть супер в чем-то одном, чем посредственно знать все. Чтобы супер в разных сферах сложились, и получился супер-девайс.
                                                            +1
                                                            Процессор на дискретных элементах собрать можно, было бы желание.
                                                            Скрытый текст
                                                              0
                                                              Можем ли мы воспроизвести велосипед?… Нет, не можем.
                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                  0
                                                                  Кажется, статья о людях, которые добиваются несколько другого класса профессионализма. Например, когда компилятор косячит, им проще написать новый компилятор, а если язык или фреймворк неудобные — написать новый язык или фреймворк, и так далее. Очень узкая область, очень глубокая глубина. Мне посчастливилось быть знакомым с такими людьми — они работают разработчиками ядер популярных языков программирования, операционных систем, браузеров.

                                                                  Сам я так не могу, потому что тупой как утюг. Это не значит, что никто не может. Толпы похапэ-вебдевелоперов, заминусовавших эту статью в -20, просто не обладают достаточным воображением, чтобы оценить такой подход. А вот разработчики Doctrine Annotations, столь известные в среде PHP, когда им захотелось аннотаций в самом языке-платформе PHP, не ломались, а расчехлили Си, взяли и написали патч к движку PHP, который еще не приняли в апстрим, но скоро примут. Так что когда в следующий раз ваша рука потянется ставить минус, вначале подумайте, может у вас есть какое-то более полезное применение усилий — там, реализовать в любимом языке удобную синтаксическую конструкцию.
                                                                    0
                                                                    Кажется, статья о людях, которые добиваются несколько другого класса профессионализма.

                                                                    А направлена она зачем-то всем, и утверждается, что описанный способ — единственный.

                                                                    А вот разработчики Doctrine Annotations, столь известные в среде PHP, когда им захотелось аннотаций в самом языке-платформе PHP, не ломались, а расчехлили Си, взяли и написали патч к движку PHP, который еще не приняли в апстрим, но скоро примут.

                                                                    Знать C — не смешно. А ассемблер они знали? А внутреннее устройство процессора, на котором это работало — знали?

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

                                                                    Не говоря уже о том, что написать патч к PHP — это даже не один уровень абстракции, а немножко поменьше.
                                                                      +1
                                                                      Ага, идите выдолбите зубилом в кремнии дополнительный блок, когда в процессоре его не будет хватать.

                                                                      Заминусовали статью за очень наивный взгляд на вещи (ну либо автор просто не смог правильно выразить свои мысли) — объем информации постоянно растет и пропасть будет всегда, что бы вы ни делали. Все что можно — несколько расширить кругозор, понимая общие принципы функционирования (уже упомянутое погружение на один-два слоя абстракции ниже), но вы в одиночку не сможете догнать технологии, разработкой и поддержкой которых занимаются тысячи людей в течение многих лет. И айфон, даже при полном понимании работы, совсем с нуля, с кремния, не соберете. А без практики эти знания пустой звук, они распадутся без постоянного использования.
                                                                        0
                                                                        я автора немножко знаю лично, он великолепный узкий специалист, который прикладывает максимум усилий для изучения своей платформы. Возможно, у него очень узкий кругозор, но в том, в чем он считает что разбирается, он разбирается как бог. Я, например, никогда не горел желанием читать исходники java virtual machine чтобы понять детали реализации всяких микрофишек, а для автора это как прочитать хабр перед сном.
                                                                          0
                                                                          (а) максимум усилий для изучения своей платформы — не то же самое, что знать, как работают все уровни под ней
                                                                          (б) узкий кругозор как раз противоречит умению разобраться в том, что находится за пределами твоей платформы

                                                                          О чем и речь.
                                                                            0
                                                                            Напоминает что-то вроде, «поиск в глубину противоречит поиску в ширину». Например, знаешь ты как прогать сортировки на си плюс плюс и всё, но знаешь зато знаешь великолепно. Или как Декстер из сериала — эксперт-криминалист по анализу брызг крови. Таких людей осталось совсем мало, разве это не проблема? Допустим, кривой API веб-фреймворка — на обеде 50 человек широкого профиля соберутся на кухне и обсудят, насколько круче эрланговский Nitrogen, и что туда можно было бы вставить из Rails, если добавить в эрланг немножко Хаскеля. Но внезапно, у меня медленно работает сортировка, и никто вокруг не сможет развернуть цепочку от фреймворка до байткода, и сказать, что вот тут компилятор ошибается, и чтобы этой ошибки не было, нужно применить вот такой костыль, или вот так-то запатчить GCC. Может поэтому весь окружающий софт такой тормозной и глючный? Разве это не проблема?

                                                                            Джоель, кстати, когда-то высказывал точно такую же мысль: russian.joelonsoftware.com/Articles/BacktoBasics.html
                                                                              0
                                                                              Таких людей осталось совсем мало, разве это не проблема?

                                                                              Нет, не проблема. И никогда не было.

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

                                                                              А вот это как раз ваше собственное допущение, и оно никак не связано ни с реальностью, ни с (сюрприз!) посылом поста. Чтобы разобраться, почему тормозит сортировка (обычно) достаточно посмотреть либо на исходный код, либо на промежуточный код.

                                                                              Может поэтому весь окружающий софт такой тормозной и глючный?

                                                                              Нет, окружающий софт такой тормозной и глючный, потому что никому не приходит в голову посмотреть, из-за чего он тормозит, и вычистить это место; все предпочитают чинить то, в чем разбираются — например, алгоритмы сортировки.
                                                                                0
                                                                                > ни с (сюрприз!) посылом поста

                                                                                и в чем посыл поста, по вашему?

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

                                                                                а толку-то смотреть в исходники GCC, если ты не знаешь ни сей, ни компиляторов, ни сортировок. Мне недавно очень-очень захотелось строгой типизации в PHP. Скачал исходники, открыл, почитал пару часов, закрыл. Там какая-то жесть. Надо будет через пару недель получить психологическую помощь, нажраться коньяка и снова открыть…
                                                                                  0
                                                                                  и в чем посыл поста, по вашему?

                                                                                  А в нем же все написано:

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


                                                                                  Выделение мое.

                                                                                  а толку-то смотреть в исходники GCC, если ты не знаешь ни сей, ни компиляторов, ни сортировок.

                                                                                  Обычно софт тормозной и кривой не из-за компилятора.

                                                                                  Мне недавно очень-очень захотелось строгой типизации в PHP. Скачал исходники, открыл, почитал пару часов, закрыл. Там какая-то жесть. Надо будет через пару недель получить психологическую помощь, нажраться коньяка и снова открыть…

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

                                                                                    … и выбросить все десять мегабайт сложного legacy-кода, уже написанного на похапэ, после чего product owner меня убьет…
                                                                                      +1
                                                                                      А переписать его на строгую типизацию, конечно, дешевле будет.

                                                                                      Ну вы косты сначала посчитай, покажите ему, потом станет понятно.
                                                                                        0
                                                                                        Какая великолепная наивная вера в то, что после ваших модификаций ПХП останется тем же языком, и легаси-код сам собой под них преобразится…

                                                                                        Вам придется после этого переписать все десять мегабайт сложного legacy-кода, плюс еще и объяснить овнеру, почему он не может теперь юзать официальный интерпретатор, а должен везде и всюду таскать ваш. А мейнтейнерам этого кода (не вечно ж вы с ним сидеть будете) — что им теперь срочно надо учить особенности левой модификации ПХП и соответствующие изменения кода.

                                                                                        Что касается вашего первого ответа, того, что на мой коммент — вам уже за меня ответили, вы сами себе противоречите. То говорите «надо во всем разбираться», то «очень узкий специалист, с узким кругозором».
                                                                                        Узких специалистов, знающих далеко в глубину — море, это их работа. Но они не охватывают другие области.
                                                                                  0
                                                                                  Джоель, кстати, когда-то высказывал точно такую же мысль: russian.joelonsoftware.com/Articles/BacktoBasics.html

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

                                                                                  Ну и во-вторых, он ошибается, когда пишет о БД. Но для статьи одиннадцатилетней давности это понятно.
                                                                          +1
                                                                          >Это как сборка компьютера из компонентов, купленных в каком-нибудь крупном сетевом дискаунтере — процессор не станет проще от того, что мы узнаем, как засунуть его в сокет на материнской плате.

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

                                                                          А еще упускаете один замечательный факт — да, я знаю как собрать логику из дискретных элементов, а из логики — вычислительное устройство, но пропасть между процессором, который в состоянии спроектировать один человек и тем, что имеется в современных архитектурах непреодолима.
                                                                          В современном мире нельзя знать все, смиритесь с этим. Все что можно — знать в общем принципы построения таких систем — если вы не один из инженеров Интела или хотя бы МЦСТ, вы к таким технологиям никогда не притронетесь — соответственно, не сможете получить практический опыт, без которого не сможете стать специалистом. Поэтому для расширения кругозора можно почитать о том, как работает процессор и о том, как спроектировать его, даже сделать это на ПЛИС — но пропасть при этом все равно останется.

                                                                          К тому же, я сильно сомневаюсь, что человек, который все время пишет на яве или шарпе получит что-то еще кроме просто «расширения кругозора» от информации о проектировании схемотехники или процессоров — поэтому ему все таки большую часть своего времени лучше тратить на технологии, которые ближе к его сфере деятельности, если, конечно, он не решил переквалифицироваться.
                                                                            0
                                                                            > Автор, вы осознаете разницу между сборкой и проектированием устройства? Вы, мягко говоря, не понимаете разницы между необходимыми знаниями для того, чтобы собрать компьютер из комплектующих и для того, чтобы спроектировать и собрать электронно-вычислительное устройство, пусть даже не на х86 архитектуре, а какой-нибудь одноплатный компьютер, с нуля.

                                                                            почему Вы так думаете?

                                                                            > А еще упускаете один замечательный факт — да, я знаю как собрать логику из дискретных элементов, а из логики — вычислительное устройство, но пропасть между процессором, который в состоянии спроектировать один человек и тем, что имеется в современных архитектурах непреодолима.

                                                                            это, безусловно верное замечание, только подтверждает мою мысль.

                                                                            > В современном мире нельзя знать все, смиритесь с этим. Все что можно — знать в общем принципы построения таких систем — если вы не один из инженеров Интела или хотя бы МЦСТ, вы к таким технологиям никогда не притронетесь — соответственно, не сможете получить практический опыт, без которого не сможете стать специалистом. Поэтому для расширения кругозора можно почитать о том, как работает процессор и о том, как спроектировать его, даже сделать это на ПЛИС — но пропасть при этом все равно останется.

                                                                            по-вашему нет других железных вендоров мирового масштаба кроме Intel?

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

                                                                            этот человек без Вас как-нибудь разберётся))
                                                                              0
                                                                              Потому что вы бы иначе не делали таких пустых заявлений.
                                                                              Замечание не подтверждает вашу мысль, замечание указывает на то, что вы можете хоть что сделать, но повторить даже STM32 дома не сможете при любом уровне погружения. Другие вендоры есть, но там работают тысячи людей и ни один не ведет весь процесс. Кроме того, там работают специалисты, которые занимаются непосредственно производством процессоров и разработкой топологий, а не программисты на яве, прочитавшие дома книжку про проектирование процессоров.
                                                                              К тому же, вспомните про разделение труда — топологию проектируют не те же люди, которые проектируют логику.
                                                                              В итоге приходим к тому, что я и сказал — ваши призывы в основном пусты, т.к. есть вещи, которые один человек не охватит на уровне, достаточном, для повторения с нуля. А прочитать книжечку о том, как это в общем работает — это пожалуйста, это полезно, никто не спорит.
                                                                              Но вы всегда будете отделены пропастью от фирм производителей. Хотя бы потому, что у вас ресурсы не сопоставимы с их ресурсами по порядку. Производство одной микросхемы по вашей топологии обойдется в сотни тысяч, а то и миллионы долларов — тут даже была статья где-то от человека, который этим занимается.
                                                                              Удачи вам в практике на этом поприще дома.

                                                                              «Этот человек» это какой? Вы решили что это про вас, или ваших знакомых?
                                                                              Я говорю про абстрактного человека, специалиста, допустим, в энтерпрайз. У меня очень много друзей и знакомых в этой области, так что могу приводить много примеров.
                                                                                0
                                                                                Вы как-то странно читали пост и приписываете мне призывы, которых я, как мне кажется, не делал. Какие призывы Вы имеете в виду и считаете пустыми?
                                                                                  +1
                                                                                  Ну вот по порядку прямо:

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

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

                                                                                  2) Таким образом, единственный способ держать ситуацию хоть под каким-то контролем — это понимать весь технологический стек, знать в лицо кажду матрёшку и каждый фрагмент в этом раздвижном телескопе.
                                                                                  Неправда. Я вам про это уже сказал. В современных реалиях это невыполнимо, вы можете поверхностно знать эти уровни — это здорово и полезно. Но вы не сможете их знать настолько, чтобы повторить это все с самого начала, начиная с выращивания монокристалла. А может быть, углубиться в матрешку и начинать с добычи сырья? Или производства инструментов для его добычи? Углубляться можно бесконечно, но с каждым уровнем широта охвата будет сужаться.

                                                                                  3) Не будучи экспертом по своей технологии и по всем уровням абстракции, которые лежат под ней, Вы не сможете понять, как именно работает написанная Вами программа. Понять, по каким маршрутам ходят байтики и битики, почему эти маршруты именно таковы, и как их изменить. Как только у нас на каком-то из нижних уровней абстракции пропадает понимание происходящего — пиши пропало. Мы вынуждены тыркаться как слепой котёнок, двигаясь наугад и пытаясь предугадать результаты тех или иных изменений.

                                                                                  Опять неправда. Вы не можете быть экспертом по всем уровням, я вам это уже продемонстрировал. Уровней можно наплодить до бесконечности, к тому же. И влияние каждого уровня на следующие нелинейно, нельзя сказать, что не зная топологии микросхемы вы не сможете писать на вашей любимой яве эффективные программы. Вы хотите все предельно упростить красивыми лозунгами — это неправильно.

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

                                                                                  Вот это верно. Если этот абзац воспринимать в отрыве от предыдущих, фанатичных и неправильных.
                                                                                    0
                                                                                    Вот это верно. Если этот абзац воспринимать в отрыве от предыдущих, фанатичных и неправильных.

                                                                                    … и буквально следующего же предложения, а именно: «Если Вы программист — изучайте, как устроена платформа, на которой Вы пишите программы, а так же все уровни под ней» (выделение мое).
                                                                                      0
                                                                                      1. там про одинаковость не сказано. Это сравнение нормальное: в обоих случаях речь идёт о том, что можно сделать самому и тем, что сделать руками нельзя.

                                                                                      2. «Знать наизусть» и «разбираться в» — это разные вещи

                                                                                      3. В чём неправда? По-вашему, можно понимать, как ходят битики, не знаю внутренности системы?

                                                                                      В чём фанатичность и неправильность-то? У меня ощущение, что Вы приписываете мне не мои мысли!
                                                                                        0
                                                                                        1) Это ненормальное сравнение. Самому можно сделать стул. Самому можно сделать печатную плату. Самому нельзя построить небоскреб. Это вещи из разных категорий, их нельзя сравнивать, а тем более, говорить что «происходит подмена понятий».

                                                                                        2) Ну так выражайтесь тогда четче. Что вы подразумеваете под своим «знать наизусть» тогда?) Названия знать?)

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

                                                                                        Уровни абстракции для того и делают, чтобы вы могли писать эффективный код, не зная топологии процессора. Она вам ничем не поможет сейчас. И даже мне, как системному программисту, не поможет. Вряд ли даже в интеле найдутся инженеры, которые полностью знают эту топологию — только блоки из нее.
                                                                                        Так что, уже ваши призывы и правила не работают? Где грань тогда?

                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                            Самое читаемое