Ну и муть написана. Читаю и ахриневаю. Думаю капец моему серверу - надо опять всё переделывать. В голове сразу мысли - что и как они там собираются сохранять что бы потом расшифровывать.
И только из комментов узнаю что он про алгоритмы на элептических кривых.
Перевожу с журналистко-изнасиловского на человеческий.
Походу тупо убрали из поддерживаемых криптошрифтов для обмена ключей RSA алгоритм. А что есть ещё те кто его использует? И потом присматриваюсь к модно-зумерскому названию алгоритма X25519Kyber768. Ба да это же старый добрый Curve25519 И да там этих "курвав" туча и маленькая тележка. Конкретно эта - быстрая. Кстати из-за этого имеет чуть меньше криптостойкости по брутфорсу.
Поясняю - в RSA есть закрытый ключ. По идеи если сохранить сессию. Прийти в датацентр, ломиком достать сервер. Выковырять закрытый ключ. То можно будет восстановить сессию.
В элиптики для каждой сессии генерируется отдельный закрытый ключ. После сессии удаляется. И да - уже 100 лет все используют элиптику.
И при чём тут вообще квантовые компьютеры? Если исходить из того что они имеют бесконечные ресурсы по расчётам (а в реальности там всё намного хуже, реально можно только пару алгоритмов на них сделать да и всё) То можно брутфорсом взломать вообще всё и элиптику и что угодно.
И я тут сижу и думаю, блин походу что то против брутфорса придумали. Или каой гений-математик придумал как элиптику сломать. Придётся всё выкидывать и кодить новые алгоритмы.
Чем дальше читаю тем больше смеху. Kyber-768 — квантово-устойчивый метод инкапсуляции ключей. Да это уже 100 лет используемый пресловутый ECDH
Честно говоря не вижу предмета спора. Я не противоречу вам. А вы собственно мне. По крайней мере я так вижу.
Достаточно взрослые языки имеют полный комплект инструментов для удобства. И примерно равны друг другу.
На brainfak конечно писать можно всё.... Но это вопрос скорее в плоскости психиатрии.
Вы привели пример с типами данных. Вот я сейчас в основном мейню С#. Так вообще нету с этим проблем. Написание структуры либо класса - пара минут. А дальше используй этот тип точно также как и любой другой нативный. Честно говоря с точки зрения С# там вообще нету как таковых нативных типов. Всё либо классы либо структуры.
Даже далеко ходить не надо. У меня в текущем проекте есть кастомные типы. Так я написал структуру - что бы данные в стеке хранились(как у настоящей "тру" неуправляемой переменной), плюс переопределил нужные мне операции.
Теперь я с переменной этой структуры в любом математическом выражении просто участвую. Складываю, умножаю, сравниваю. Да вообще всё. Также инициализация переменной. Написал нативное присваивание всех нужные мне типов . Теперь переменная инициализируется от массива, поинтера, набора int, long. Да вообще всё что мне надо то и будет жрать. Собственно что мне прописные истины описывать. Повторяю - современные развитые языки это умеют. Ну или должны уметь. Если они развиваются то такой функционал точно подъедит.
Ах да забыл. Про неопределённое поведение. Скажем так - это вообще не то ради чего надо выбирать язык. Разумеется в разумных пределах конечно же. Тот же С++ косячно относятся в некоторых моментах. Да - это написано в документации. Но есть одно но!
Пример - есть такие дороги где происходят постоянно аварии, хоть все знаки и есть в наличии. И дорожники изменяют такие дороги. Или есть мост глупости. Там стоит знак. но люди попадали в аварию и будут попадать. Хоть ты тресни. Несмотря ни на какие знаки.
Короче такие вещи просто надо запомнить для каждого языка. Их на самом деле единицы. И в основном связаны с адресной арифметикой.
Если язык полон по Тьюрингу то на нём можно написать что угодно в пределах булевой алгебры. Вопрос удобства.
А что такого особенного в фортране? Приведите пример. Язык просто принципиально не может предложить возможности выше чем предлагает процессор на котором выполняется программа написанная на этом языке.
Уже много лет в беседах говорю что мне пофиг какой язык использовать. Собственно на почти всех кодил. От разных ассемблеров до weba, мобильных платформ, PC софт от бейсика с дельфой, до C# и всякого новомодного, SQL и прочего. Да собственно и схемотехника тоже, хотя это не по теме.
Так вот - все языки одинаковые в основе своей. Потому как все работают на одних процессорах которые работают по законам булевой алгебры. Грубо говоря все языки состоят из if,for,var.
Различия же не в языках - а в библиотеках и абстракциях которые приходится строить.
Нету однозначного ответа. Иначе бы все просто выбирали правильный путь.
Очень много "бизнесов" прогорали выпустив сырой, баганутый продукт. Много бизнесов не взлетело - не выпустив ничего, т.к. старт бюджет закончился.
Легко скатываться в крайности. И как бы банально не звучало - истина в середине. Это как шар на верхушке параболы - трудно удержать и не скатится на край.
Я как представитель партии "Инженеров" скажу что самое важно для меня это проект. Он должен быть интересен для меня. А деньги... Это второстепенно. Чем меньше про них думаю - тем лучше себя чувствую. От этого и страдаю.
Когда я писал что бизнесу не важны баги в проекте - это просто литературный приём гипертрафации сути бизнеса. Как впрочем и фраза про то что код нужен вчера.
Просто если на одной чаше весов лежат баги, а на второй продать продукт сегодня. Понятно что выберет бизнес.
Я бизнес не выделяю в какой то отдельно живущий объект. Бизнес это те же самые люди. Просто у этих людей мировоззрение противоположно тому кто собственно и пишет код. Даже задачи разные. Бизнесу не важно что подорвать. Инженеру как раз очень даже важно что он созидает.
Что бы написанное не выглядело бессмысленным надо привести какой то умный вывод )))
Пусть вывод будет такой - если вам кажется что ваши босы идиоты, не переживайте. Вы своим босам тоже кажетесь дармоедами ))) Вселенское равновесие "Ра" востановленно )))
Почти каждый раз, когда мне приходилось переписывать готовый код, я ругаюсь на себя из-за того, что поленился нашарашить класссов и вообще поработать с архитектурой.
Смотрите в чём фундаментальная проблема. На старте вы не знаете какая архитектура будет в конце. Если вы знаете это - то вам выгоднее в казино ходить. Но будем исходить из того что не знаете.
Отсюда вывод на старте вы закладываете неправильную архитектуру. И в конце вы будите героически бороться с этой неправильной архитектурой.
Если на старте вы закладываете минимальную архитектуру. Либо наращиваете архитектуру по мере разработки, конечно придётся постоянно рефакторить, то ситуация в конце будет выглядеть скажем так "по приятнее".
Ваша же конкретная проблема архитектуры которая пила из вас соки, конечно если бы вы заложились на старте её решение - то и проблемы бы не было. Но где вероятность того что вы бы угадали на старте про именно эту проблему?
Кстати я тут ничего от себя не придумываю. Краеугольный камень всей современной разработки - аджайл, как раз исходит из того что ничего не известно. Через неделю всё может поменяться на противоположное. Поэтому всё делим на спритны, и каждый спринт всё перосмысливаем.
А история которую вы описали про программу - это "база" ))) У каждого программера есть такая программа написанная на коленки чисто на сегодня поюзать и выкинуть. Но что то пошло не так... )))
Я думаю путаница возникла в термине "простой". Под простым я имел в виду понятный, отрефакторенный код. Вы же имеете ввиду: лапшакод накиданный максимально быстро.
Такой код не будет простым. Для дальнейшей разработки он будет максимально сложным. Что бы его понять новому разработчику нужно будет тратить уйму времени. Такой код будет сотостоять из 100500 очень сложных сторонних библиотек. А сами библиотеки будут при этом использоваться на 0.001% Типа 1 функция из сотен тысяч. В коде будут куча не очевидных багов - которые хрен найдёшь в этой лапше зависимостей.
Короче простой он только в момент создания. Сразу после - становится максимально сложным для разработки.
Главный перевешивающий плюс такого кода для бизнеса - его можно написать быстро и выкатить показать потребителям быстро. А всё остальное уже не важно. И потребление памяти. процессора. И баги.
И да я вообще не говорю какой подход более правильный. Тут всё зависит от вашего мировоззрения. Если вы бизнесмен - то один. Если инженер - то противоположный.
Просто у бизнеса есть деньги. А вот у инженеров нет. Вот и вся реальность.
Мне кажется что немного наоборот. Безнесу вообще пофиг что у вас там за код. Пусть будет хоть самый страшный и ужасный и вызывающий ктулухту в эксепшенах.
Бизнесу важно главное. Код должен быть написан вчера. Код должен не падать в эксепшен сразу после старта (а дальше похер). И желательно код должен быть бесплатен.
И поэтому "эксперименты" в программировании бизнесу очень не нравятся - потому как противоречат пункту 1. Т.е. вам не дадут времени на эти эксперименты.
Кстати добавлю как у меня получается писать "просто".
Многие наверно подумаю что это же "просто"! А вот нифига. Написать "просто" - сложнее чем просто написать ))) Извините за каламбур.
Короче я это делаю в 2 или в 3 подхода. Сначала пишешь как есть. Когда код работает - даёшь ему отлежатся. Плюс со временем в него добавляются новые фичи.
Потом когда код перестаёт интенсивно расти - возвращаешься к нему и выкидываешь, склеиваешь функции по максимуму, упрощаешь логику.
И да я описал банальный рефакторинг. Который в современном бизнесе совсем не ценится.
3 итерация это возвращение к коду спустя продолжительное время - когда поменялась архитектура. И причёсываешь код под новую архитектуру. при этом не забывая выкидывать и упрощать.
Может показаться что это бесконечный процесс - но как показала практика, такое выкидывание и упрощение всегда приближается к какому то максимуму и останавливается. Это похоже на ёмкость заполненную разными фигурами. Сначала все они лежат в разнобок. Но со временем все фигуры укладываются упорядоченно одна за другой. Что то типа тетриса. В результате все фигуры претёрты друг к другу.
Положительный момент - отлавливаются много упущенных багов.
Отрицательный - бизнесу такое нафиг не нужно.
P.S. И забыл добавить. Итерация 2 и 3 не привязаны ко времени. Они привязаны к ситуации. Т.е. происходят тогда когда они нужны. Тогда при рефакторинге ты находишься максимально в мейнстриме. И рефакторинг происходит максимально безболезненно. Имеется виду безболезненно для психики программиста. Никто же не хочет разгребать этот поганый легаси )))
Гениально! Я смотрю тут многие не поняли про что написано и давай хейт разводить. А смысл прост - писать просто настолько насколько можно. Выкинуть всё ненужное настолько - что бы программа выполняла только то что от неё требуют.
До этой мысли приходишь только спустя годы или даже десятилетия программирования.
А всё от того что написав свой код, спустя месяц ты на него смотришь, и что бы понять что там происходит тратишь день, а не 10 минут. Я не говорю про чужой код.
В 99% случаях сложная иерархия классов на старте никому в последствии ненужна. А только будет доставлять неимоверный гимор в разработке. Опять же если проект растёт - то гораздо проще переписать уже устоявшуюся архитектуру с нуля, чем писать очередной костыль который будет бороться с изначально неправильной архитектурой.
И такой подход имеет свою особенность. Код становится выглядеть "примитивным". Отсутствуют наследования, инъекции, полиморфизм - да вообще всё. Любой новичок посмотрев на такой код сразу понимает как он работает.
Но как написали в статье: в "Гуглах" будут воротить нос.
Очень некорректно сравнивать флопсы процессоров и мозги. Если к задаче подойти в лоб и предложить человеку совершить хотя бы одну операция с плавающей точкой над 64 битном числе, то может оказаться что некоторым и часа не хватит. И наверно никто на земле не сможет держать скорость 1 флопс в секунду.
Феноменальная энерго эффективность мозгов кроется в низкой частоте "тактового генератора". Не помню точно но всякие альфаритмы это герцы.
Если взять чип с количеством транзисторов равным количеству нейронов и запустить на той же частоте что и мясные мозги - то получим такое же энергопотребление.
Вся красота мозгов - это колоссальный граф, т.е. огромное количество соединений (белое вещество мозга) которые соединяют прослойку нейронов (от 1 до 5 мм). Именно эта архитектура и показывает кажущуюся "колоссальную" вычислительную мощность мозгов. Но на самом деле - никаких вычислений там вообще нет. Архитектура эволюцией заточена под конкретные задачи. Абстрактная эмуляция внешнего мира. И работа с этой абстрактной моделью для предсказания "будущего". Например хищник поранившись об ежа - предсказывает на будущее увидев такого же ежа, что жрать его нельзя.
Современные процессоры же это эмуляция этого колоссального параллельного графа - последовательно. Имеется ввиду в программах текстовых моделей. Отсюда и киловатты потребляемой мощности.
Всё изменится когда появятся параллельные чипы. Где не будет АЛУ и всё что с ним связано.
Делали сервис linkin.link для внутренних нужд и есть пост пор это на хабре. На сайте был сокращатель ссылок. Домен красивый под него взяли. Ну что бы не на основном сайте висел. Плюс ещё куча функционала. Как показало время - этот сокращатель нафиг никому не нужен. Ну кроме мошенников. По этому просто тупо всё выпилили.
Посмотрите как работают ВСЕ процессоры. Там есть указатель команд. Регистр указывающий на текущую выполняемую команду процессора. И каждый такт этого регистр просто инкриминируется. Т.е. указывает на следующую команду. Т.е. программа выполняется последовательно.
Так устроены процессоры. А то что там Пролог или куча других языков программирования предлагают — это всего лишь абстракция. Которая всегда компилируется в последовательно выполняемые машинные команды. И это всегда надо иметь ввиду оперируя такими абстракциями.
И да есть всякие параллельные архитектуры. Но в каждой такой параллели всегда один закон — последовательное выполнение команд. Сразу напишу — есть команды которые оперируют адресом этого регистра. Команды ветвления.
В противовес этому существуют ПЛИС. Конечно сложная логика в ПЛИС подразумевает тактовый генератор и последовательное выполнение функций. Однако схемотехника ПЛИС подразумевает работу без генератора. Подали сигнал на вход — получили сразу на выходе. Разумеется с поправкой на скорость света.
По-моему ответ очевиден. И его используют 1000чи лет.
Сиди с утра до вечера и изучай науки. И будешь умнее (задействовать больше нейронов) чем неуч.
Или пей пиво с утра до вечера. Неиспользуемые нейроны организмом удалятся из мозга.
Пример. Люди которые не пользовались речевым аппаратом с детства (маугли) в возрасте теряли навсегда возможность говорить. Только язык жестов. Участок мозга отвечающий за речь попросту удалялся.
С зрением та же история. Слепой с рождения но прооперировав глаза в в взрослом состоянии то же не могут видеть как обычный человек.
количество нейронов у младенцев и взрослого человека
То сразу выдаст это:
В мозгу новорожденного 150-200 миллиардов (!!!) нейронов, в мозгу взрослого человека – в 2 раза меньше. Нейроны либо соединяются, формируя нейронные связи и укрепляя их, либо отмирают. В ваших руках и в руках людей, влияющих на развитие малыша – судьба большинства нервных клеток малыша
Если вы имеете ввиду что 95% нейронов находится в резерве и не участвуют в работе нейросети, т.е. никуда не подключены и никогда не активируются, то множественные исследования анализ энцефалограмма говорит об обратном.
Весь массив головного мозга активируется в то или иное время.
И вообще все нейроны в мозге в момент когда мозг только появляется и растёт имеют одну особенность. Каждый нейрон как дерево. И его дендриты как корневая система. Растёт хаотично. Нейрон может иметь десятки тысяч дендритов. И далее вся эта каша дендритов и аксонов соединяется хаотично. Что до куда доросло и соединилось в случайном порядке.
Поэтому младенцы такие… может даже и сознания не имеют. Чисто первобытные инстинкты. Т.е. участки головного мозга где формирование нейронов отвечает уже жёсткая структура заложенная в ДНК. А не неокортекс — с его каше- структурой.
Ну а далее в процессе жизни уже идёт настройка нейросети. Миллиарды аксонов отсыхают, миллиарды вновь прорастают.
И вот тут уже можно говорить о развитии мозга. Потому ка архитектура нейросети будет разная. Как её настроишь так и будет работать.
Поэтому о 95% работы мозга говорит не корректно.Можно говорить только об качестве настройки архитектуры нейросети.
Хотя в некотором виде вы правы. Замечено что у людей интеллектуалов бороздок в головном мозге после смерти больше чем у маргиналов. Однако это вроде связанно как раз с отмиранием нейронов в процессе жизни за ненадобностью. На старте у всех примерно одинаковое количество.
Ну и да большее количество нейронов не всегда преимущество. Его может обыграть более специализированная архитектура. У Эйнштейна был вполне обычный мозг.
Ну так мы же всего 5% мыслительных способностей используем
Это такая же информация, как и теория расщепления вселенных и прочего бреда.
Ваш мозг состоит из нейронов. Работа нейрона это его активация. Поверьте — вам не понравится если все ваши нейроны активируются в 1 момент. Хотя те кто переносил приступы эпилепсии — говорят что для них это было как полное отключение сознания.
Что бы ваше сознание работало "правильно" каждый нейрон должен активироваться тогда когда нужно. Согласно построенной карте нейросети.
Ну и муть написана. Читаю и ахриневаю. Думаю капец моему серверу - надо опять всё переделывать. В голове сразу мысли - что и как они там собираются сохранять что бы потом расшифровывать.
И только из комментов узнаю что он про алгоритмы на элептических кривых.
Перевожу с журналистко-изнасиловского на человеческий.
Походу тупо убрали из поддерживаемых криптошрифтов для обмена ключей RSA алгоритм. А что есть ещё те кто его использует? И потом присматриваюсь к модно-зумерскому названию алгоритма X25519Kyber768. Ба да это же старый добрый Curve25519 И да там этих "курвав" туча и маленькая тележка. Конкретно эта - быстрая. Кстати из-за этого имеет чуть меньше криптостойкости по брутфорсу.
Поясняю - в RSA есть закрытый ключ. По идеи если сохранить сессию. Прийти в датацентр, ломиком достать сервер. Выковырять закрытый ключ. То можно будет восстановить сессию.
В элиптики для каждой сессии генерируется отдельный закрытый ключ. После сессии удаляется. И да - уже 100 лет все используют элиптику.
И при чём тут вообще квантовые компьютеры? Если исходить из того что они имеют бесконечные ресурсы по расчётам (а в реальности там всё намного хуже, реально можно только пару алгоритмов на них сделать да и всё) То можно брутфорсом взломать вообще всё и элиптику и что угодно.
И я тут сижу и думаю, блин походу что то против брутфорса придумали. Или каой гений-математик придумал как элиптику сломать. Придётся всё выкидывать и кодить новые алгоритмы.
Чем дальше читаю тем больше смеху. Kyber-768 — квантово-устойчивый метод инкапсуляции ключей. Да это уже 100 лет используемый пресловутый ECDH
Честно говоря не вижу предмета спора. Я не противоречу вам. А вы собственно мне. По крайней мере я так вижу.
Достаточно взрослые языки имеют полный комплект инструментов для удобства. И примерно равны друг другу.
На brainfak конечно писать можно всё.... Но это вопрос скорее в плоскости психиатрии.
Вы привели пример с типами данных. Вот я сейчас в основном мейню С#. Так вообще нету с этим проблем. Написание структуры либо класса - пара минут. А дальше используй этот тип точно также как и любой другой нативный. Честно говоря с точки зрения С# там вообще нету как таковых нативных типов. Всё либо классы либо структуры.
Даже далеко ходить не надо. У меня в текущем проекте есть кастомные типы. Так я написал структуру - что бы данные в стеке хранились(как у настоящей "тру" неуправляемой переменной), плюс переопределил нужные мне операции.
Теперь я с переменной этой структуры в любом математическом выражении просто участвую. Складываю, умножаю, сравниваю. Да вообще всё. Также инициализация переменной. Написал нативное присваивание всех нужные мне типов . Теперь переменная инициализируется от массива, поинтера, набора int, long. Да вообще всё что мне надо то и будет жрать. Собственно что мне прописные истины описывать. Повторяю - современные развитые языки это умеют. Ну или должны уметь. Если они развиваются то такой функционал точно подъедит.
Ах да забыл. Про неопределённое поведение. Скажем так - это вообще не то ради чего надо выбирать язык. Разумеется в разумных пределах конечно же. Тот же С++ косячно относятся в некоторых моментах. Да - это написано в документации. Но есть одно но!
Пример - есть такие дороги где происходят постоянно аварии, хоть все знаки и есть в наличии. И дорожники изменяют такие дороги. Или есть мост глупости. Там стоит знак. но люди попадали в аварию и будут попадать. Хоть ты тресни. Несмотря ни на какие знаки.
Короче такие вещи просто надо запомнить для каждого языка. Их на самом деле единицы. И в основном связаны с адресной арифметикой.
Наткнулся на статью про Груга ))) И да, Груг делает всё правильно )))
Если язык полон по Тьюрингу то на нём можно написать что угодно в пределах булевой алгебры. Вопрос удобства.
А что такого особенного в фортране? Приведите пример. Язык просто принципиально не может предложить возможности выше чем предлагает процессор на котором выполняется программа написанная на этом языке.
Уже много лет в беседах говорю что мне пофиг какой язык использовать. Собственно на почти всех кодил. От разных ассемблеров до weba, мобильных платформ, PC софт от бейсика с дельфой, до C# и всякого новомодного, SQL и прочего. Да собственно и схемотехника тоже, хотя это не по теме.
Так вот - все языки одинаковые в основе своей. Потому как все работают на одних процессорах которые работают по законам булевой алгебры. Грубо говоря все языки состоят из if,for,var.
Различия же не в языках - а в библиотеках и абстракциях которые приходится строить.
Нету однозначного ответа. Иначе бы все просто выбирали правильный путь.
Очень много "бизнесов" прогорали выпустив сырой, баганутый продукт. Много бизнесов не взлетело - не выпустив ничего, т.к. старт бюджет закончился.
Легко скатываться в крайности. И как бы банально не звучало - истина в середине. Это как шар на верхушке параболы - трудно удержать и не скатится на край.
"Всё гениальное просто" @
Я как представитель партии "Инженеров" скажу что самое важно для меня это проект. Он должен быть интересен для меня. А деньги... Это второстепенно. Чем меньше про них думаю - тем лучше себя чувствую. От этого и страдаю.
Когда я писал что бизнесу не важны баги в проекте - это просто литературный приём гипертрафации сути бизнеса. Как впрочем и фраза про то что код нужен вчера.
Просто если на одной чаше весов лежат баги, а на второй продать продукт сегодня. Понятно что выберет бизнес.
Я бизнес не выделяю в какой то отдельно живущий объект. Бизнес это те же самые люди. Просто у этих людей мировоззрение противоположно тому кто собственно и пишет код. Даже задачи разные. Бизнесу не важно что подорвать. Инженеру как раз очень даже важно что он созидает.
Что бы написанное не выглядело бессмысленным надо привести какой то умный вывод )))
Пусть вывод будет такой - если вам кажется что ваши босы идиоты, не переживайте. Вы своим босам тоже кажетесь дармоедами ))) Вселенское равновесие "Ра" востановленно )))
Смотрите в чём фундаментальная проблема. На старте вы не знаете какая архитектура будет в конце. Если вы знаете это - то вам выгоднее в казино ходить. Но будем исходить из того что не знаете.
Отсюда вывод на старте вы закладываете неправильную архитектуру. И в конце вы будите героически бороться с этой неправильной архитектурой.
Если на старте вы закладываете минимальную архитектуру. Либо наращиваете архитектуру по мере разработки, конечно придётся постоянно рефакторить, то ситуация в конце будет выглядеть скажем так "по приятнее".
Ваша же конкретная проблема архитектуры которая пила из вас соки, конечно если бы вы заложились на старте её решение - то и проблемы бы не было. Но где вероятность того что вы бы угадали на старте про именно эту проблему?
Кстати я тут ничего от себя не придумываю. Краеугольный камень всей современной разработки - аджайл, как раз исходит из того что ничего не известно. Через неделю всё может поменяться на противоположное. Поэтому всё делим на спритны, и каждый спринт всё перосмысливаем.
А история которую вы описали про программу - это "база" ))) У каждого программера есть такая программа написанная на коленки чисто на сегодня поюзать и выкинуть. Но что то пошло не так... )))
Я думаю путаница возникла в термине "простой". Под простым я имел в виду понятный, отрефакторенный код. Вы же имеете ввиду: лапшакод накиданный максимально быстро.
Такой код не будет простым. Для дальнейшей разработки он будет максимально сложным. Что бы его понять новому разработчику нужно будет тратить уйму времени. Такой код будет сотостоять из 100500 очень сложных сторонних библиотек. А сами библиотеки будут при этом использоваться на 0.001% Типа 1 функция из сотен тысяч. В коде будут куча не очевидных багов - которые хрен найдёшь в этой лапше зависимостей.
Короче простой он только в момент создания. Сразу после - становится максимально сложным для разработки.
Главный перевешивающий плюс такого кода для бизнеса - его можно написать быстро и выкатить показать потребителям быстро. А всё остальное уже не важно. И потребление памяти. процессора. И баги.
И да я вообще не говорю какой подход более правильный. Тут всё зависит от вашего мировоззрения. Если вы бизнесмен - то один. Если инженер - то противоположный.
Просто у бизнеса есть деньги. А вот у инженеров нет. Вот и вся реальность.
Мне кажется что немного наоборот. Безнесу вообще пофиг что у вас там за код. Пусть будет хоть самый страшный и ужасный и вызывающий ктулухту в эксепшенах.
Бизнесу важно главное. Код должен быть написан вчера. Код должен не падать в эксепшен сразу после старта (а дальше похер). И желательно код должен быть бесплатен.
И поэтому "эксперименты" в программировании бизнесу очень не нравятся - потому как противоречат пункту 1. Т.е. вам не дадут времени на эти эксперименты.
Кстати добавлю как у меня получается писать "просто".
Многие наверно подумаю что это же "просто"! А вот нифига. Написать "просто" - сложнее чем просто написать ))) Извините за каламбур.
Короче я это делаю в 2 или в 3 подхода. Сначала пишешь как есть. Когда код работает - даёшь ему отлежатся. Плюс со временем в него добавляются новые фичи.
Потом когда код перестаёт интенсивно расти - возвращаешься к нему и выкидываешь, склеиваешь функции по максимуму, упрощаешь логику.
И да я описал банальный рефакторинг. Который в современном бизнесе совсем не ценится.
3 итерация это возвращение к коду спустя продолжительное время - когда поменялась архитектура. И причёсываешь код под новую архитектуру. при этом не забывая выкидывать и упрощать.
Может показаться что это бесконечный процесс - но как показала практика, такое выкидывание и упрощение всегда приближается к какому то максимуму и останавливается. Это похоже на ёмкость заполненную разными фигурами. Сначала все они лежат в разнобок. Но со временем все фигуры укладываются упорядоченно одна за другой. Что то типа тетриса. В результате все фигуры претёрты друг к другу.
Положительный момент - отлавливаются много упущенных багов.
Отрицательный - бизнесу такое нафиг не нужно.
P.S. И забыл добавить. Итерация 2 и 3 не привязаны ко времени. Они привязаны к ситуации. Т.е. происходят тогда когда они нужны. Тогда при рефакторинге ты находишься максимально в мейнстриме. И рефакторинг происходит максимально безболезненно. Имеется виду безболезненно для психики программиста. Никто же не хочет разгребать этот поганый легаси )))
Гениально! Я смотрю тут многие не поняли про что написано и давай хейт разводить. А смысл прост - писать просто настолько насколько можно. Выкинуть всё ненужное настолько - что бы программа выполняла только то что от неё требуют.
До этой мысли приходишь только спустя годы или даже десятилетия программирования.
А всё от того что написав свой код, спустя месяц ты на него смотришь, и что бы понять что там происходит тратишь день, а не 10 минут. Я не говорю про чужой код.
В 99% случаях сложная иерархия классов на старте никому в последствии ненужна. А только будет доставлять неимоверный гимор в разработке. Опять же если проект растёт - то гораздо проще переписать уже устоявшуюся архитектуру с нуля, чем писать очередной костыль который будет бороться с изначально неправильной архитектурой.
И такой подход имеет свою особенность. Код становится выглядеть "примитивным". Отсутствуют наследования, инъекции, полиморфизм - да вообще всё. Любой новичок посмотрев на такой код сразу понимает как он работает.
Но как написали в статье: в "Гуглах" будут воротить нос.
Очень некорректно сравнивать флопсы процессоров и мозги. Если к задаче подойти в лоб и предложить человеку совершить хотя бы одну операция с плавающей точкой над 64 битном числе, то может оказаться что некоторым и часа не хватит. И наверно никто на земле не сможет держать скорость 1 флопс в секунду.
Феноменальная энерго эффективность мозгов кроется в низкой частоте "тактового генератора". Не помню точно но всякие альфаритмы это герцы.
Если взять чип с количеством транзисторов равным количеству нейронов и запустить на той же частоте что и мясные мозги - то получим такое же энергопотребление.
Вся красота мозгов - это колоссальный граф, т.е. огромное количество соединений (белое вещество мозга) которые соединяют прослойку нейронов (от 1 до 5 мм). Именно эта архитектура и показывает кажущуюся "колоссальную" вычислительную мощность мозгов. Но на самом деле - никаких вычислений там вообще нет. Архитектура эволюцией заточена под конкретные задачи. Абстрактная эмуляция внешнего мира. И работа с этой абстрактной моделью для предсказания "будущего". Например хищник поранившись об ежа - предсказывает на будущее увидев такого же ежа, что жрать его нельзя.
Современные процессоры же это эмуляция этого колоссального параллельного графа - последовательно. Имеется ввиду в программах текстовых моделей. Отсюда и киловатты потребляемой мощности.
Всё изменится когда появятся параллельные чипы. Где не будет АЛУ и всё что с ним связано.
Делали сервис linkin.link для внутренних нужд и есть пост пор это на хабре. На сайте был сокращатель ссылок. Домен красивый под него взяли. Ну что бы не на основном сайте висел. Плюс ещё куча функционала. Как показало время - этот сокращатель нафиг никому не нужен. Ну кроме мошенников. По этому просто тупо всё выпилили.
Посмотрите как работают ВСЕ процессоры. Там есть указатель команд. Регистр указывающий на текущую выполняемую команду процессора. И каждый такт этого регистр просто инкриминируется. Т.е. указывает на следующую команду. Т.е. программа выполняется последовательно.
Так устроены процессоры. А то что там Пролог или куча других языков программирования предлагают — это всего лишь абстракция. Которая всегда компилируется в последовательно выполняемые машинные команды. И это всегда надо иметь ввиду оперируя такими абстракциями.
И да есть всякие параллельные архитектуры. Но в каждой такой параллели всегда один закон — последовательное выполнение команд. Сразу напишу — есть команды которые оперируют адресом этого регистра. Команды ветвления.
В противовес этому существуют ПЛИС. Конечно сложная логика в ПЛИС подразумевает тактовый генератор и последовательное выполнение функций. Однако схемотехника ПЛИС подразумевает работу без генератора. Подали сигнал на вход — получили сразу на выходе. Разумеется с поправкой на скорость света.
По-моему ответ очевиден. И его используют 1000чи лет.
Сиди с утра до вечера и изучай науки. И будешь умнее (задействовать больше нейронов) чем неуч.
Или пей пиво с утра до вечера. Неиспользуемые нейроны организмом удалятся из мозга.
Пример. Люди которые не пользовались речевым аппаратом с детства (маугли) в возрасте теряли навсегда возможность говорить. Только язык жестов. Участок мозга отвечающий за речь попросту удалялся.
С зрением та же история. Слепой с рождения но прооперировав глаза в в взрослом состоянии то же не могут видеть как обычный человек.
Если в гугле вбит фразу:
То сразу выдаст это:
Если вы имеете ввиду что 95% нейронов находится в резерве и не участвуют в работе нейросети, т.е. никуда не подключены и никогда не активируются, то множественные исследования анализ энцефалограмма говорит об обратном.
Весь массив головного мозга активируется в то или иное время.
И вообще все нейроны в мозге в момент когда мозг только появляется и растёт имеют одну особенность. Каждый нейрон как дерево. И его дендриты как корневая система. Растёт хаотично. Нейрон может иметь десятки тысяч дендритов. И далее вся эта каша дендритов и аксонов соединяется хаотично. Что до куда доросло и соединилось в случайном порядке.
Поэтому младенцы такие… может даже и сознания не имеют. Чисто первобытные инстинкты. Т.е. участки головного мозга где формирование нейронов отвечает уже жёсткая структура заложенная в ДНК. А не неокортекс — с его каше- структурой.
Ну а далее в процессе жизни уже идёт настройка нейросети. Миллиарды аксонов отсыхают, миллиарды вновь прорастают.
И вот тут уже можно говорить о развитии мозга. Потому ка архитектура нейросети будет разная. Как её настроишь так и будет работать.
Поэтому о 95% работы мозга говорит не корректно.Можно говорить только об качестве настройки архитектуры нейросети.
Хотя в некотором виде вы правы. Замечено что у людей интеллектуалов бороздок в головном мозге после смерти больше чем у маргиналов. Однако это вроде связанно как раз с отмиранием нейронов в процессе жизни за ненадобностью. На старте у всех примерно одинаковое количество.
Ну и да большее количество нейронов не всегда преимущество. Его может обыграть более специализированная архитектура. У Эйнштейна был вполне обычный мозг.
Это такая же информация, как и теория расщепления вселенных и прочего бреда.
Ваш мозг состоит из нейронов. Работа нейрона это его активация. Поверьте — вам не понравится если все ваши нейроны активируются в 1 момент. Хотя те кто переносил приступы эпилепсии — говорят что для них это было как полное отключение сознания.
Что бы ваше сознание работало "правильно" каждый нейрон должен активироваться тогда когда нужно. Согласно построенной карте нейросети.