Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
ropox
7 лет назад

Абстракции

Прибрался немного на террасе, вынес мусор, покушал и сижу попиваю вино и просматриваю ленту на голосе. Наткнулся на пост "Немного про IT (50-50)" от @kvg который там клянет IT индустрию. Решил написать письмо Чемберлену.

По существу конечно все так, это все из-за природы человека. Вернее мозга. Я где-то читал, что нетренированный мозг больше семи понятий в голове удержать не может. Что-бы упростить себе жизнь и освободить место в голове для чего нибудь еще, человек объединяет часть вещей в абстракцию, называет ее Та-Штукенция и внутренности ее выносит за пределы сознания. Мозгу сразу становится легче, некоторое время он испытывает облегчение так как освободилось место в памяти и не надо тратить "процессорное" время на удержании лишних сущностей в сознании.

Вот взять автомобиль. В нем куча деталей, колеса, двигатель, бензин, коробка передач, аккумулятор, электроника. Все взаимодействует, крутится, переключается, реагирует по разному на педальки, колеса поворачиваются вслед за бараночкой увлекая за собой эту груду деталей и человека в ней. А кто нибудь думает обо всем, об этом когда едет? Нет. Для человека автомобиль абстракция. Человеку достаточно изучить только интерфейс к автомобилю. Как его включить, как переключить скорость, где газ и тормоз. И все. Он не думает, сколько надо в каждый момент времени впрыснуть топлива в камеру сгорания, сколько воздуха туда же запустить, в какой момент надо пустить искру, что бы поршень пошел вверх. А этих поршней несколько. Мы просто жмем педаль и наслаждаемся поездкой. Пока автомобиль не сломается. Но для этого у нас есть другая абстракция, телефон станции техобслуживания или телефон мужа.

И так со всем. К телевизору пульт, к холодильнику ручка дверцы, к лампочке кнопка на стене. Больше нам знать нету необходимости - мозг готов перерабатывать дополнительную информацию. Другое дело, что вынося вещи в отдельные абстракции мы теряем знания об внутренностях этих абстракций. В надежде, что найдется кто нибудь, кто в этом разберется. Ладно лампочка, специалистов много найдется, да и лампочек полно на любой вкус. А есть вещи и уникальные, специалистов по которым днем с огнем не сыщешь.

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

Так было на заре компьютерной индустрии. Да даже еще в начале 90-х, если посмотреть исходники текстового редактора - там мама не горюй. Функция редактирования текста занимает только 5 процентов кода, остальное управление компьютером.

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

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


staktrace.png

А как известно, сколько людей столько и разных вкусов и предпочтений, так и библиотек на одну и туже тему стало плодиться несчетное множество по числу программистов. Многим просто лень разбираться с интерфейсом, некоторых не устраивает интерфейс да и вообще, взыграет профессиональная гордость и нередко услышишь - "я могу лучше". Даже есть специальный термин для этого синдрома - Not Invented Here (англ. придумано не нами). "На фиг эту библиотеку, я сам напишу круче". Бывает что напишут библиотеку, а приложение для которого это делалось, так и не осилили. Не хватило времени и ресурсов. Вот и начинают продавать "свой, фирменный фреймворк". Который тоже мало кому оказывается нужен. Но это такое.

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

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

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

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

Пока писал, вино кончилось и кажется совсем суть потерял. )) Засим и откланяюсь.

not a pipe.jpg

0
539.464 GOLOS
На Golos с February 2017
Комментарии (12)
Сортировать по:
Сначала старые