По существу конечно все так, это все из-за природы человека. Вернее мозга. Я где-то читал, что нетренированный мозг больше семи понятий в голове удержать не может. Что-бы упростить себе жизнь и освободить место в голове для чего нибудь еще, человек объединяет часть вещей в абстракцию, называет ее Та-Штукенция и внутренности ее выносит за пределы сознания. Мозгу сразу становится легче, некоторое время он испытывает облегчение так как освободилось место в памяти и не надо тратить "процессорное" время на удержании лишних сущностей в сознании.
Вот взять автомобиль. В нем куча деталей, колеса, двигатель, бензин, коробка передач, аккумулятор, электроника. Все взаимодействует, крутится, переключается, реагирует по разному на педальки, колеса поворачиваются вслед за бараночкой увлекая за собой эту груду деталей и человека в ней. А кто нибудь думает обо всем, об этом когда едет? Нет. Для человека автомобиль абстракция. Человеку достаточно изучить только интерфейс к автомобилю. Как его включить, как переключить скорость, где газ и тормоз. И все. Он не думает, сколько надо в каждый момент времени впрыснуть топлива в камеру сгорания, сколько воздуха туда же запустить, в какой момент надо пустить искру, что бы поршень пошел вверх. А этих поршней несколько. Мы просто жмем педаль и наслаждаемся поездкой. Пока автомобиль не сломается. Но для этого у нас есть другая абстракция, телефон станции техобслуживания или телефон мужа.
И так со всем. К телевизору пульт, к холодильнику ручка дверцы, к лампочке кнопка на стене. Больше нам знать нету необходимости - мозг готов перерабатывать дополнительную информацию. Другое дело, что вынося вещи в отдельные абстракции мы теряем знания об внутренностях этих абстракций. В надежде, что найдется кто нибудь, кто в этом разберется. Ладно лампочка, специалистов много найдется, да и лампочек полно на любой вкус. А есть вещи и уникальные, специалистов по которым днем с огнем не сыщешь.
Так же все и в IT. Допустим хочу написать я программу - текстовый редактор. Можно конечно изучив устройство компьютера от и до, узнать какие в нем микросхемы распаяны, что в микросхемах внутри, сколько транзисторов, какие входы и выходы. Сколько оперативной памяти. А потом изучить ассемблер данного конкретного процессора. Да и взять и написать программу, которая управляет компьютером, инициализирует память, процессор, мигает лампочками, принимает ввод от клавиатуры, мышки, выводит текст на экран и между дел выполняет функции текстового редактора.
Так было на заре компьютерной индустрии. Да даже еще в начале 90-х, если посмотреть исходники текстового редактора - там мама не горюй. Функция редактирования текста занимает только 5 процентов кода, остальное управление компьютером.
Вот тогда и стали вспоминать золотое правило "разделяй и властвуй". Вынесли сначала все методы по работе с мышкой и клавиатурой в отдельную библиотеку, затем написали библиотеку по работе с окнами, еще одну для инициализации компьютера и записали это в BIOS. Функции по работе с файлами так же вынесли в отдельную библиотеку. И увидел программист, что это хорошо. Теперь он мог сконцентрироваться непосредственно на программировании текстового редактора, а не тратить время на написание программы по управлению компьютером. Обрадовавшись такой очевидно классной идее, он начал плодить библиотеки. Для проверки синтаксиса в тексте, для автоматического переноса строк, для управления шрифтами и так далее. Причем библиотеки стали использовать другие абстракции-библиотеки. Ведь что бы загрузить шрифт, нам надо как минимум получить доступ к диску, найти на нем нужный файл, выделить место в памяти, загрузить туда шрифт и так далее. Для этого есть специализированные библиотеки. Абстракция на абстракции и абстракцией погоняет.
На картинке желтым выделена та часть, что непосредственно занимается "редактированием текста", логика нашего приложения, а остальное библиотеки.
А как известно, сколько людей столько и разных вкусов и предпочтений, так и библиотек на одну и туже тему стало плодиться несчетное множество по числу программистов. Многим просто лень разбираться с интерфейсом, некоторых не устраивает интерфейс да и вообще, взыграет профессиональная гордость и нередко услышишь - "я могу лучше". Даже есть специальный термин для этого синдрома - Not Invented Here (англ. придумано не нами). "На фиг эту библиотеку, я сам напишу круче". Бывает что напишут библиотеку, а приложение для которого это делалось, так и не осилили. Не хватило времени и ресурсов. Вот и начинают продавать "свой, фирменный фреймворк". Который тоже мало кому оказывается нужен. Но это такое.
Может показаться, что все плохо, но на самом деле нет. Нет-нет, да появляются удачные "библиотеки", приложения, которые действительно упрощают жизнь программистам. Ускоряют написание приложений. Суть конечно во всем этом не меняется, меняется только мода.
Но тут вот как раз и приходит на помощь удешевление производства. Удешевление техники, железа помогает поддерживать всю эту хрупкую иерархию библиотек. Память дешева, процессор быстр. Добавилось десять процентов быстродействия - тут же эту нишу занимают новые абстракции.
Абстракции полезны, людям проще концентрироваться на предметной области. Рождаются новые классные идеи. Новые поколения программистов не задумываются об устройстве компьютера, они абстрагируются от всего этого, у них мозг не занят ненужной ерундой. Они сидят за рулем и наслаждаются ездой.
И это приносит больше, чем забота о потреблении памяти и процессорного времени. Важнее прогресс, новый кухонный комбайн, а не шлифовка старого кухонного ножа. Мало кто руками моет теперь посуду в среднестатистической семье. Скорее посуду засунут в посудомойку. Хоть и расход воды возможно не так эффективен, но наше время дороже.
Пока писал, вино кончилось и кажется совсем суть потерял. )) Засим и откланяюсь.
Согласен, что благодаря абстракциям у нас освобождается время, а это важнейший ресурс, который можно использовать намного эффективнее, чем писать велосипеды на функционал, который уже 100500 раз использовался и на него есть очень много библиотек.
Тут нужно только выбрать более-менее адекватную, под свои задачи, а дальше концентрироваться на "текстовом редакторе", чтобы он удобный и продуманный был, а не тратить 70% времени на задачи нижнего уровня.
Кстати, у Вас ошибка, я подозреваю: "меняется только мода", наверное там слово "морда" должно было быть )
)) Да нет, "мода" просто обрывок какой то другой мысли. Я только не стал развивать. Но и морда тоже подходит, да.
😊
Интересно. Согласна, Думаю это не плохо и не хорошо - это такое развитие. Сама являюсь простым пользователем, который по вашему определению, просто нажимает на кнопки снаружи стиральной машины.))) Не спорю, не комплексую и признаю, что так и есть.
Зато я понимаю суть других вещей, которую не понимает человек, понимающий как работает стиральная машина в моем доме, и который ее регулярно чистит. Он приходит ко мне и спрашивает: какую таблетку ему выпить, чем ему намазать это место на лице, на руке, на пятке и так далее))
@ropox, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующей категории:
привет извини если что не так, а как добробота пополнить?
Если что у добробота в блоге есть ссылки на подробные инструкции. По сути вы правильно все сделали. Добробот ответил уже. Еще можно установить настройки вроде д/г, Для этого при переводе доброботу укажите в заметке сумму, сколько добробот будет переводить авторам за каждый ваш апвоут. По умолчанию, если не указано, переводит 0.01.
просто перевести ему монет
ну в смысле
ник
количество
комент надо?
сделал посмотрите по кошельку верно?
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
yefet, everythink, ianboil, ukrainian, niiu, eduard, dimarss, vik, forbon21, brovaryleaks, vadbars, vasilisapor2, nefer, vict0r, semasping, ladyzarulem, romapush, gromozeka, tnam0rken, exan, yuriks2000, kvg, vika-teplo, sva-lana, borisss, vpervye1, sareon, kertar, novy, rezonator, lokkie, igrinov, ieshua, all91, wedge, chupaaa, dobrogop
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас на странице https://golos.io/~witnesses, вот так:
Поправь ссылки, плз. Пост теперь в топе, некрасиво так оставлять )
! Поправил ссылки, перечитал, пришлось местами еще и обороты речи поправить. ))