Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Как выжить в круговороте современного IT, или Зачем изучать основы

Современная IT-отрасль меняется и развивается настолько быстро, что просто физически не успеваешь за ней. Ограниченные в своих возможностях статические web-страницы были вытеснены Rich UI c функционалом сродни операционным системам. JavaScript вместе с CSS стали вездесущими. Все меньше и меньше людей пользуются стационарными компьютерами и предпочитают мобильные решения — приложения и сайты эволюционируют за потребностями пользователей. Если раньше сайты можно было крутить хоть на локальной машине, то сейчас все мигрирует в облако. Базы данных — и те с табличного вида все чаще принимают вид, эффективнее представляющий доменную область. Про waterfall уже ходят легенды, и все ведут Agile-разработку. И так куда не глянь.

Поэтому каждый хоть раз чувствовал себя как белка в колесе.

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

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

Начинаешь детальнее разглядывать весь этот зоопарк, а не отдельную приколяшку и задаешь себе еще больше вопросов.

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

Почему каждый раз, когда что-то идет не так или технология не позволяет решить проблему — вас бросает в холодный пот? Неужели нельзя найти ответ на Stack Overflow (не надо только говорить, что и вы там не ищете ответ в первую очередь), и придется тратить часы, а то и дни, чтобы понять, как это новое колесо, состоящее из десятков старых колес, все-таки едет вперед?

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

Так что там по поводу заземлиться или нащупать фундамент?

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

И не то чтобы я был против изучения новинок, я против того, чтобы тратить на них 100 % времени. Малой части будет достаточно с головой. Главное, постигнуть основы.

Сразу хочу сказать, что основ очень много. Нельзя ограничивать себя только тем, что нужно кровь из носа: ваш серверный язык программирования, OOP, HTTP, SQL, JavaScript, HTML, CSS, ваша система версионирования, ваша IDE и т. д. Нужно учить то, чему учат только в университетах: высшую математику, алгоритмы, автоматы, теорию вероятности, матстатистику, мат. методы исследования операций и т. д.

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

Дак почему же на собеседованиях спрашивают вещи с которыми, за редким исключением, вы никогда не встречаетесь? Зачем нужны логические задачи и вообще задачки, зачем нужны вопросы по математике, структурам данных или о вещах, скрытых от вашего повседневного взора? Почему такие мастодонты, как Google, Amazon и другие, делают на это упор?

Имею смелость предположить, что работодателя да и вас самих беспокоят не ваши умения запоминать ответы на вопросы, что с каждым собеседованием становится намного легче, и даже не знание всех новых API. А все же оценивается ваш ум: насколько он гибок; сможет ли он выучить новую приблуду и желательно быстро; сможет ли он отделять мух от котлет, что очень важно при таком количестве новых и старых технологий.

Что же нам дадут некоторые из основ?

Вот мое краткое видение:

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

Физика расширяет наши общие познания о Вселенной. Большинство нердов слышали о котане Шредингера и о том, что частица может оказаться в любой момент времени в любой части Вселенной, но мало кто понимает, что это значит. Физика учит нас критическому мышлению — отличать достижимое от недостижимого.

Теория вероятности и матстатистика: тяжело представить современные системы без огромного количества ивентов. Big data тут, big data там. А там, где есть куча ивентов, всегда есть и необходимость их анализа. Вид нормального распределения не тот — пора бить тревогу. Но если для вас это просто график, то в следующий раз вам его даже не покажут.

Структуры данных: данные везде, и их надо где-то хранить. Но у нас уже есть стандартные структуры наподобие list и map! Как показывает практика, их возможностей начинает не хватать в самый неподходящий момент, и чтобы это быстро устранить, нужно знать альтернативы, знать, где они уже используются, — все это может помочь в самый неожиданный момент.

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

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

Компьютерные сети: нас уже не удивляет тот факт, что даже самая простая программа требует подключения к интернету, и вообще большая часть нашей жизни протекает там. Но в большинстве случаев мы не сможем объяснить, как наш браузер находит конкретный сайт, как компьютер подключается к другому и почему нам нужны другие протоколы помимо http/https.

Электротехника: мы привыкли принимать новую технику за само собой разумеющееся, но кто-то вообще задумывался, как она работает? Что такого интересного дают нам NPN- и PNP-переходы и что привносят в нашу цивилизацию транзисторы?

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

Проектирование систем: все хоть раз слышали про GRASP-паттерны, о том, что Coupling должен быть low, а Cohesion — high. Но слышать — это одно, а понимать и даже делать — совсем другое.

Паттерны/антипаттерны: как любой дантист должен знать все типичные способы лечения зубов и также ошибки при этом процессе, так и вы должны знать подавляющее большинство паттернов и антипаттернов.

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

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

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn

Схожі статті




Найкращі коментарі пропустити

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

Меня вот до сих пор удивляет этот факт.

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

Что такого интересного дают нам NPN- и PNP-переходы

И что же?

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

Really?

146 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Каждый мастодонт считает своим долгом написать собственный фреймворк, компилятор или UI библиотеку, с которой потом прошедшие 7 интервью гибкие разработчики будут ковыряться до пенсии. А легенды о круглых люках все продолжают путешествовать.
Все, что выше описано, пригодится сотруднику продукта. Желательно програмно-железячного. В Гугле ни одного разработчика и близко не подпустят к базам или сетям (не говоря уже о pnp и прочих лазерах, для чего придумали comic con, где каждый желающий может поупражняться с лазерной указкой в виде меча).

сфигали не подпустят? вы работаете в гугле?

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

То есть когда комьюнити замутило новый язык программирования или фреймворк, то концептуально ничего не поменялось. Может имена методов покороче, может пекедж менеджер более юзер френдли, может няшная интеграция есть с другими вычислительными системами. Остальное как работало изнутри Х-цать лет назад, так и работает.

Вывод: Достаточно выучить один язык программирования чтобы понять как все остальное работает. Это язык программирования «С»!

А еще лучше купить транзисторы на радиорынке и попропускать через них ток .))

Ну для вэб или фул-стек этого может и достаточно ... А в целом у вас очччень поверхностное понимание мира. Например вот здесь:

Вывод: Достаточно выучить один язык программирования чтобы понять как все остальное работает. Это язык программирования «С»!

Да С, достаточен чтобы понять Java и Питон, но есть много чего не имеющего ничего общего с этой компанией.

Что такое frontend? Это JS который компилится в реалтайме и кешируется LLVM, который написан на C/C++. Это урезаный XML который парсится в DOM или SAX парсерами котове писаны на C/C++.

Python/Ruby/PHP/... обертки поверх все того же LLVM котопый писан на C/C++.

Java/Skala/Kotlin — виртуальная вычислительная среда которая имитирует железо. Виртуалка писана на C/C++....

C++ — абстракция C писанная на C/C++...

Мое понимание мира позволяет кодить независимо от синтаксиса, практически на любом языке программирования:
C, C++, Java, PHP, JS, Swift, Ruby, Python, VBS!, Макросы Excell ,)))

Лозунг хороший есть для программиста на всех языках «Копрокод в каждый дом»

Мое понимание мира позволяет кодить независимо от синтаксиса, практически на любом языке программирования:
C, C++, Java, PHP, JS, Swift, Ruby, Python, VBS!, Макросы Excell ,)))

Давайте начнем с классических Пролога и Лиспа чтобы не сильно резко рушить вашу картину мира. Владение С в контексте этих языков заметной роли не играет. И подчеркиваю что это только начало мира за пределами вашей картины мира.

Главное Pascal и Delphi пропустить,)

Кажется вам еще рано покидать ваш уютный мирок ... А я тут пытался на высокие материи намекать ...

JS
Python/Ruby/PHP/... обертки поверх все того же LLVM котопый писан на C/C++.

А ничего, что эти языки появились раньше, чем LLVM машина?

До LLVM были GNU тулзы так само писаные на C/С++)

PHP:
Язык и его интерпретатор (Zend Engine) разрабатываются группой энтузиастов в рамках проекта с открытым кодом/ Проект распространяется под собственной лицензией, несовместимой с GNU GPL
Аналогично, и для многих других языков.
И вообще, дружище, все эти LLVM и Web assembly придумываются не для того, чтобы ты в одном стиле писал на всех языках)
А наборот, чтобы программист мог писать на любимом языке, в любимом стиле кода, в разных средах. Например, на Руби в джава среде, или на Rust под браузер..
Но в своем стиле данного конкретного языка, где у разработчика есть опыт , в своей архитектуре.
Понятно ,что можно писать в стиле С/С++ на почти любом языке, так а скорость разработки? А удобство? А расширяемость? А читаемость и тестирование?

Логично что писать надо на том языке фреймворки которого хорошо знаешь. И в зависимости от требований проекта.

Просто если вдруг кому «библию захочется познать» то я рекомендую выучить язык C и стандартные библиотеки. Именно не C++, a C.

Язык С на самом деле небольшой. И стандартная библиотека не обширная. Но мозг сразу «профорсируется».)

Просто если вдруг кому «библию захочется познать» то я рекомендую выучить язык C и стандартные библиотеки. Именно не C++, a C.

Стоп — это понятно. С- база для многих языков, и помогает разобраться, как работает память..
Людям не понравилось, что ты написал:

мое понимание мира позволяет кодить независимо от синтаксиса, практически на любом языке программирования:
C, C++, Java, PHP, JS, Swift, Ruby, Python, VBS!, Макросы Excell ,))

Тему «мира» развивал другой контрибьютор, просто подхватил ее. Без прелагательных идея такова — что зная как работаеют базовые средства легко разобраться в высокоуровневых делах.

По сути надо почитать синтаксис языка и доки. А далее stackoverflow.com и «еже с ними» (так как в любых фреймворках есть и фичи и грабли).

O.S. Глядя на исходники популяррых фреймворков хочется застрелится. Их видимо писали те кто не почитал в свое время язык С и сразу начал с лучшего языка программирования в мире — JavaScript,)))

И чем вам С поможет разобраться как работает память в процессорах 8086, x86 и x64? Утверждение что С — это альма-матер, альфа и амега — грубый троллинг.

Вывод: Достаточно выучить один язык программирования чтобы понять как все остальное работает. Это язык программирования «С»!

— как насчет таких языков как Haskell, Erlang?

Сам Haskell написан на С,)

stackoverflow.com/...​age-is-haskell-written-in

На Asm/С/С++ пишутся все остальные языки. Более того практически все языки у которых нет виртуальной машины на раньайме используют LLVM.

Писать самому на Asm что то бессмысленно на фоне LLVM.

Это не делает его понятнее по сравнению с C или питоном

Erlang тоже без С никуда: stackoverflow.com/...​what-is-erlang-written-in

Мне одному кажется использование слова «приблуда» пошлым?

Не знаю, сколько ни разгребаю чужой код — очень не хватает знания ПСИХИАТРИИ.
Скажите ещё что программирование — точная наука. И логичная, ага.

Мне не хватает Taurus Model 85 и пару экспансивных пуль .)

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

В чём разница между шимпанзе Хэм и Аланом Шепардом? Теоретически, ни в чём. Оба удачно слетали в космос.

А ще важливо знати фундаментальну філософію, біологію та соціологію. І взагалі, «вуз має випускати громадянина, а своїй практиці на роботі навчитеся» ©. Ще за пару років після вузу, в якому все перераховане вивчите за 5 років, і вийшовши на ринок почнете вчитися з нуля.

Третина маст хев, решта опшинал. І я б радив краще звернути увагу на софт скіли, а не на електротехніку.

Согласен по поводу софт скилов и даже писал на эту тему статью dou.ua/...​lenta/articles/hum-skills но это уже выходит за рамки этой статьи

Фундаментальной философии не существует. Что касается биологии и социологии, то очевидно что большинству людей с головой достаточно знаний полученных в школе (курс биологии), и небольшого курса вузовской социологии. Можно конечно поспорить насчет связи социологии и управления, но все-таки де Марко или Адизес в ИТ в миллион раз полезнее того же Конта. Насчет двух третей — опшионал — это перебор. Треть там опшионал, а остальное маст хев если не формочки клепать.

І взагалі, «вуз має випускати громадянина, а своїй практиці на роботі навчитеся» ©

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

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

А так получается порочный круг — я сам пытался в Украину аутсорсить кое-какие задачи, так вот — сделать adjusted price time series (поправить цены на дивиденды и сплиты) или нарисовать график фунции — задача, похоже, для украинских девелоперов неподъемная. (Конечно, у меня опыт лишь с парой джунов, что формально нерепрезентативно, но мне кажется, это неслучайно, причем чисто по программерской части джуны были вполне).
Таким образом, я (и думаю, что не только я) такие задачи больше никогда не буду пытаться аутсорсить в Украину, а раз так — то и умение их решать будет невостребовано.

Это вас в «знаменитой» физ-мат школе научили, что пара джунов полностью отражают уровень людей во всей стране? Хорошо хоть Перельмана учили иначе.

Вас судя по всему не научили даже читать, ибо я указал, что

Конечно, у меня опыт лишь с парой джунов, что формально нерепрезентативно

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

Заявления у вас одно лучше другого. Хорошо хоть Перельман и Смирнов не упали так ниже плинтуса.

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

а что не фундаментальный, что ли? Процессоры на сегодня и состоят из миллионов ключей на транзисторах..

И почти все из них не имеют PNP перехода

Все не имеют. Потому что PNP (и NPN) переходов не бывает.

А ты об этом :-) Ну это философский вопрос.

Нет тут никакой философии. Разве что считать философию синонимом технической безграмотности. А так — p-n переходы в процессорах были, как минимум до Пентиум 3, P2 насколько я помню еще был на BiCMOS технологии

Вы еще скажите что диссертацию по полупроводникам защитили :-) Небыло никаких p-n переходов ни в P2, ни в P3. Точнее почти небыло. И сейчас почти нет.

Окей, тоді як працює сучасний CPU? За яким саме принципом. Та розшифруйте «n» та «p».

Окей, тоді як працює сучасний CPU?

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

«на других физических принцыпах»

На яких саме? o_O

Я не думаю что смогу хоть чтото обьяснить человеку у которого понимание полупроводников ограничено парой параграфов учебника по физике. Ваш мозг слишком не готов.

Та буде вам, пане! Давайте відкриємо документ, який пояснює принципи роботи FinFET транзисторів, які активно використовуються у всіх сучасних процесорах.
people.eecs.berkeley.edu/...​Liu_2012VLSI-Tshortcourse
Що ми тут бачимо? Ой, стандартні «p», «n», «holes», «electrons», «gates», «drains», «sources». Чекайте, так про які інші фізичні принципи йде мова?

Там используются полевые транзисторы, у них немного другой принцип работы. смотрите КМОП схему.

Принцип роботи там простий — створення напруження електричного поля в певній точці простору для запобігання проходження електричного струму. Хоча так, це не дифузійний p-n перехід.

Принцип роботи там простий — створення напруження електричного поля в певній точці простору для запобігання проходження електричного струму. Хоча так, це не дифузійний p-n перехід.

Звучит круто, однозначно круче чем «adjusted price time series».
Вопрос: как это знание помогает при разработке софта?

Напряму — ніяк. Але опосередковано ще й як допомагає. Зачіпившися за технологію виготовлення процесорів, можна покопати в сторону їх архітектури, а там недалеко до низькорівневого програмування. А це вже інший рівень розвитку :D
У програміста не буває неважливих знань. Буває невміння знаходити аналогії та абстракції.

У програміста не буває неважливих знань. Буває невміння знаходити аналогії та абстракції.

Ок. Еще 2 вопроса:
1) Сколько яиц за жизнь производит самка дракона комодо?
2) Как эти знания вам помогают в разработке?

1) Не знаю
2) Ніяк
Давайте зайдемо з іншої сторони. А чи допомагають в розробці знання взагалі? Навіть знання з CS? Не поспішайте казати «ти що, упоротий, як ти взагалі можеш вести розробку не маючі знань з CS»

Не поспішайте казати «ти що, упоротий, як ти взагалі можеш вести розробку не маючі знань з CS»

Я и не планировал такого говорить :)

А чи допомагають в розробці знання взагалі?

Помогают, некоторые. Некоторые помогают и в реальной жизне, например не писать фраз типа «У програміста не буває неважливих знань.»

Значить ви погано вмієте конвертувати знання в код :)

Значить ви погано вмієте конвертувати знання в код :)

1) Слово «значит» подразумивает логический вывод. Какие именно я знания не могу сконвертировать в код?
2) Это говорит человек который признал что есть знания, которые он сам не может сконвертировать в код. Похоже мы даже не дойдем до «аналогий и абстракций», вам бы основы дискретки повторить :)

1) Всі ваші додаткові знання, не пов’язані напряму із комп’ютерними науками
2) Я не можу сконвертувати в код ваші знання та своє незнання. Не бачу тут ніякої логічної нестиковки. Так що продовжуйте далі вивчати основи дискретки ;)

Может, вы тогда подскажете, что означают буквы Bi в сокращении BiCMOS?

Биполярный полевик? А как он работает?

Как конкретно устроена логическая ячейка в pentium 2 я не знаю, но обычный bicmos логический элемент устроен просто — кмоп пара на входе, и биполярники на выходе. data.epo.org/...​me=imgaf001&docId=5676203

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

А вы уверены что именно в драйверах, а не в каждой логической ячейке? В любом случае, как минимум в P2 p-n переходы есть и используются

А вы уверены что именно в драйверах, а не в каждой логической ячейке?

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

Видишь ли каждый p-n переход это утечка тока в несколько микроампер, даже при отсутствии тактовых импульсов. Умножь эту пару микроампер на количество транзисторов в P2 и сравни с реальным потреблением. Поэтому собственно от них и отказались.

Нет, конечно. при чем тут статика, если биполярники стоят на выходах? БиКМОП городили чтобы избавится от больших токов в момент переключения выхода из 0 в 1, тем самым повысив частоту и помехоустойчивость.
Серии логики 74ABT и 74BCT посмотрите.

Не готов спорить, но нам в университете рассказывали сильно другое.

при чем тут статика, если биполярники стоят на выходах?

Не всегда умели делать КМОП не чуствительную к статике. Хотя да — википедия говорит что твоя точка зрения тоже обоснована.

Ну вот, например, вполне свежее. Видим те же самые p-n. Да, есть особенности в устройстве затвора, но основной переход на месте.
А Вы говорите, что ещё в P2 от них отказались. Как-то не сходится.

А тему утечек тока, видимо, решили адекватным легированием.

FET (field-effect transistor) працює не за принципом p-n переходу (junction), а шляхом створення напруження поля, яке або блокує, або пропускає електричний струм в певній ділянці простору (перетин source-drain/gate). Хоча, все одне необхідно два матеріали — «p» та «n», без них нічого не вийде.

В этом смысле — согласен.
Тогда интересно, Vitaly Chernooky имел в виду это же, или что-то другое...

Мені теж цікаво... Про які такі «інші фізичні принципи» йшлося

Открываем статью FET в Википедии, листаем вниз до раздела «типы», и обнаруживаем табличку с разными типами FET-транзисторами. Два правых типа транзисторов не содержат p-n переходы вообще.

Ми все ще про процесори розповідаємо?

Во первых 2011 год это никак не свежее. Во вторых покажите где вы там нашли хоть один p-n переход? Да можете сделать скриншот и обвести красным кружочком в фотошопе. Нету их там.

Во первых 2011 год это никак не свежее.

Достаточно того, что оно явно свежее P2 (вышел в 1996).

Во вторых покажите где вы там нашли хоть один p-n переход?

Смотрите внимательнее. Или назовите, какие видите стыки и благодаря каким эффектам работает тот транзистор :)

Нету их там.

Ихтамнет (tm)

Чта? Процессоры как были на полупроводниковых транзисторах, так и остались.
без n и p типов — не получается пока транзистор сделать)
В процессорах -сейчас в основном полевые транзисторы, но там тоже- n подложка и -p затвор, или наоборот. P и N присутствует)

Еще один микроэлектронщик нашелся. Если мне не изменяет память то эти проблемы смог преодолеть ещё СССР.

Вам изменяет память) Процессоры все еще только на полупроводниках выпускаются.
Квантовые и прочие эксперименты мы не берем.
И кто сказал слово проблема? Нет, это просто полупроводник)

Хорошо. Скажу другими словами. Полупроводник это такое вещество в котором возможна масса различных и разнообразных физических явлений. P-N переход был одним из первых открытых явлений. Но с развитием микроэлектроники было установленно что для микропроцессоров лучше подходят другие эффекты, поэтому от p-n переходов отказались. С некоторыми популярными эффектами можешь познакомится вот здесь: lib.madi.ru/fel/fel1/fel15E247.pdf

И кто сказал слово проблема?

Извиняюсь, это у меня хромает скилл «русский язык».

Ну и ? Как ваша книга опровергает то, что в процессорах используют интегральные схемы на основе полевых транзисторов с каналами p и n типа?
.

Нет, она иллюстрирует что в полупроводниках существует куча других эффектов, сверх тех о которых рассказывали на уроках физики.

Полевые транзисторы с каналами p и n типа

в микропроцессорах это седая древность. Если полистать советские справочники то там можно такие найти.

в микропроцессорах это седая древность.

FinFET транзистор не має каналів? А що називають каналами?

FinFET PMOS и NMOS транзисторы, которые сейчас самые современные- это и есть полевые МОП транизсторы с P и N- каналами.
Просто вы что-то путаете в терминах.
p-n переход это не просто эффект.
Это разделение полупроводников по проводимости.
Они либо дырочные p — типа, либо электронные n — типа.
Их комбинация и дает нам электронные приборы- диоды с одной областью p-n перехода, либо транзисторы- с 2-я и более областями p-n перехода.
Знаете, мне P-N переход попался на экзамене в свое время)
Конспект я не читал, рассказал по учебнику.
А теорий P-N несколько. Ну и мне 4-ку поставили в зачетку, я спросил за что? Препод сказал- ты не так рассказывал все вопросы, как я на лекции говорил. Я говорю -ну так я из книги — какая разница?
Он говорит- давай книгу сюда- я ему дал книгу. Говорит -смотри, тут рецензент- кандидат наук. А я говорит- кто? А он профессор был. Вот так вот...

Да, в полевом транзисторе канал p, но тогда подложка должна быть n типа, а если канал n -типа- то тогда, подложка должна быть p типа.
Получается лавинный P-N переход между подложкой и стоком тоже.

Знаете, мне P-N переход попался на экзамене в свое время)

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

FinFET PMOS и NMOS транзисторы, которые сейчас самые современные- это и есть полевые МОП транизсторы с P и N- каналами.

Эти технологии были «современными» лет 10 лет назад. А потом Интел и АМД сделали еще один технологический скачек и это все стало неактуальным.

А потом Интел и АМД сделали еще один технологический скачек и это все стало неактуальным.

AMD майже не робила, це все IMB, Samsung, GlobalFoundries.
Навіть в сучасних CPU, виготовлених по FinFET технології, в схемах використовуються діоди. А там чистий p-n перехід.

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

Звучит так — как будто вы ничего не знаете в электронике.
Не бывает диодов без p-n переходов. Есть разные способы стимуляции p-n перехода. Но p-n проводимости -это основа всей полупроводниковой электроники.

О, да, конечно :-)

Не бывает диодов без p-n переходов.

А как же лампы: ru.wikipedia.org/...​dia/File:Vacuum_diode.svg ? Ладно — я пошутил :-) А вообще на сегодняшний день основная ниша где от p-n переходов никуда не дется — это только высоковольная электроника.

Та їх валом різних. Сенс в іншому. Ви на 100% впевнені, що в сучасних CPU взагалі не використовується жодного p-n переходу? Я б не був таким категоричним.

p-n переходы имеют смысл только в сильноточных цепях. Изредка целесообразны в плане быстродействия. Использование p-n перехода в рядовых логических вентилях — это увеличение токов утечек до диких величин.

Процесор, який виділяє 200 ватт тепла при вольтажі 1.2В (i7-7820X), це сильнострумові ланцюги, чи ще ні? :D Ампери самі порахуєте?

Это еще может быть 1000 или больше слаботочных цепей.

Или вы о диодах Шоттки?
Так они все равно, чтобы сделать из него транзистор Шоттки, нужен еще " устаревший" биполярный транзистор с ДВУМЯ p-n переходами.
И это тоже не есть хорошо.

Ну диод Шотки был первым полупровродниковым диодом без p-n перехода. Если мне не изменет память то ни диоды Шотки, ни транзисторы Шотки в микропроцессорах не используются. Хотя тут я не уверен.

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

Никогда не слышал -про такой предмет- «p-n переход»))
У меня, например, был предмет -основы электроники.

Я утрировал :-) Естественно формально предмет назывался по другому. Скорее всего «физические основы микроэлектроники» или чтото в этом духе, но лень искать диплом :-)

кандидат — степень, а профессор — должность на кафедре, общего у них мало

Вы ошибаетесь. Профессор- это еще и ученое звание есть. И даже должность профессора кафедры дают людям со степенью доктора наук.

в микропроцессорах это седая древность. Если полистать советские справочники то там можно такие найти.

Это Вы с прямым углом перепутали — с т.наз. транзисторами с управляющим p-n переходом. Вот они, да, были единственным типом, который освоила классическая советская промышленность. (И все их страшно боялись, потому что они гибли от ничтожного заряда статики.)
А МОП (МДП) всех видов они таки канальные.
Так что — пафос понятен, но неуместен — разберитесь в фактах.

Не просто канальные, а транзисторы по -прежнему.(МОП)
Или я что-то пропустил и уже ключи в процессорах не на транзисторах?
Кстати в совке были полевые транзисторы КП101-КП 103, я в руках держал.
Правда не знаю их историю производства.

Польовиків було «валом» в СРСР
www.155la3.ru/kp103.htm

Не просто канальные, а транзисторы по -прежнему.(МОП)

Совсем не понял эту фразу.

Кстати в совке были полевые транзисторы КП101-КП 103, я в руках держал.

Да, как раз типа «управляемый переход».

Совсем не понял эту фразу.

Спор у нас с Виталием в том, какая элементная база в процессорах и есть ли там p-n переходы.
Я говорю о том, что по прежнему ключи в процессорах на транзисторах. Ничего нового не используют в промышленных масштабах, насколько я знаю.
И о том, что даже в МОП транзисторах, с каналами. Сток- получается c p- проводимостью, а подложка с n- проводимостью. То есть опять p -n переход между стоком и подложкой.
А Виталий, говорит, что уже ключи в процессорах не на транзисторах -на чем он так и не говорит.
И что использовать p и n проводимости -уже устарело ещё при совке.

Там якісь «інші фізичні принципи» фігурували...

квантовая механика небось или ядерная физика)

Уточняю: я утверждаю исключительно отсутствие p-n переходов. Остальное нужно спрашивать ребят с Милексиса — они должны быть в теме.

Или я что-то пропустил и уже ключи в процессорах не на транзисторах?

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

Розглядаються. Авторами спеціалізованого ПЗ

Нет никакого PNP перехода, расслабьтесь. Существует понятие p-n-перехода и два типа биполярных транзисторов на его основе — PNP и NPN, в зависимости от того, донорная база или акцепторная.

Ваще не согласен со статейкой, она сильно противоречит практике)

Статья не убедила. Знания мужичка на правой картинке намного более востребованы на рынке чем у левого.

главное что ангулар везде есть

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

Really?

Полностью согласен с автором!

В том, что ваши ошибки тоже не надо повторять?

В том что важна нацчная база, а фреймворки просто и вторично.

Что такого интересного дают нам NPN- и PNP-переходы

И что же?

понятие о том, что клепать формы проще и дороже)

не ну серьезно?

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

Меня вот до сих пор удивляет этот факт.

это заговор против дауншифтеров

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

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

Алгоритмы программисту не нужны :)
Как и высшая математика.
Основы? Основы нужны, но каждый под ними понимает то, что хочет.

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

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

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

Паттерны нужны, а алгоритмы — нет.

Как вы думаете, какой процент программистов в мире хотя бы раз в год в рамках своей работы написал свое Красно-Черное дерево или алгоритм обхода графа в ширину?

Разбираться в коде — эту суметь найти ответ на вопросы:
а) Что делает этот код
б) Зачем он это делает
в) Почему делает именно так

Чтение чужого кода занимет 90% времени программиста и фактически представляет собой процесс реверс-инжениринга: по коду востанавливается изначальная/сложившаяся бизнес-лока всех процессов протекающих в программе.

Как вы думаете, какой процент программистов в мире хотя бы раз в год в рамках своей работы написал свое Красно-Черное дерево или алгоритм обхода графа в ширину?

А зачем Вы домыслили постоянное написание своих алгоритмов на работе?

в) Почему делает именно так

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

да ладно. Откройте любую страницу с кодом на github. С какой вероятностью это код структуры данных или стандартного алгоритма, который учат в вузах? 0.001?

На городі бузина...

Да никто и не занимается переписыванием стандартных алгоритмов. Изучение алгоритмов подразумевает получение опыта применения алгоритмов и структур данных для эффективного решения задач, так что давайте так — с какой вероятностью код на открытой вами странице github’a использует реализацию стандартного алгоритма или структуры данных?

Ну вот возьмем хотя бы сортировку.
Вот есть стандартный алгоритм сортировки в Collections.sort() в Java. Надо ли программисту знать какой из десятков стандартных алгоритмов сортировки там используется или достаточно знать, что он
а) оптимально написан,
б) проверен на практике тысячами людей
в) имеет сложность порядка N*lnN

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

Например в libc долго жил quicksort, который мог проседать до O(N^2), пока не пофиксили

оптимально написан,

Не существует универсальной оптимальности написания.

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

Можно реализовывать с экономией на сравнениях, а можно — на перестановках. Если где-то, например, сравнение стоит как 100 перестановок, разница может быть разительной.

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

проверен на практике тысячами людей

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

имеет сложность порядка N*lnN

И снова — средняя сложность, амортизированная или гарантированная? Истории с кривым выбором разделяющего элемента для quicksort, наверно, знают все, но были и случаи явных DoS-атак на эту особенность.

У вас дивне розуміння слова «алгоритм»...

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

Какой еще смысл может быть у фразы «программист должен знать алгоритмы»?

А що таке «патерн» у вашому розумінні?

теорию алгоритмов, вот как вы выберете какой из 3-х алгоритмов или библиотек выбрать?

1) С тем что теория важна я согласен. Впервую очередь потому что она формирует мышление.
2) Доводы в статье не убедительны. Их просто нет, есть попытки высказать свою позицию.
3) Какое нах Dojo в 2017 году? Вы что в IBM работаете? :)

Даа, хотел бы я, чтобы такую статью написал Майк Горчак, но скорее всего мотиватор от него выглядел бы попроще, где-то так (да, Татьянович слямзил идею) www.netlore.ru/...​loads/2007/06/bentley.jpg

А де ж теорія категорій?

С теорией категорие основная проблема в том, что те, кто орут про ее важноть, не могут ее объяснить :)

Бартош рассказывает конечно очень увлекательно и доходчиво (хотя я еще просмотрел меньше половины лекций).
Но ответа на вопрос — а нафиг оно надо — я так и не услышал.

Підписатись на коментарі