Так весь смысл инкапсуляции - за указателем скрывается сущность с такими то методами, больше о ней ничего неизвестно. Конкретных реализаций несколько, могут добавляться уже после того, как написан использующий их код - так что закладываться на внутренности в принципе нельзя.
Оно, конечно, запустит чтение из памяти (возможно, с пробегом по таблице страниц) заранее, но текущие инструкции пролетят явно быстрее, чем новые дойдут до декодера.
в том же golden cove сделали memory renaming
Немного погуглил - вроде оно появилось на "атомном" Gracemont, но может чего то не вижу.
довольно часто делается линковка C++ кода с чисто-C либами
При этом надо сразу понимать, что несмотря на общую базу это разные языки с разыми подходами к реализации одних и тех же концепций, так что часто надо писать явный враппер.
Что напряжного в том, чтобы объявить несколько указателей в структуре, заполнить в функции инициализации и дальше вызывать obj->method(obj,...) ? Да, нет неявного this и в реализациях надо руками кастить объект к нужному типу - но всё равно дополнительной писанины не так много.
А еще он не сможет создать этот StringBuilder на стеке
Точно так же как и плюсовый объект, для которого есть только ISomething и фабрика. Автор же не утверждает, что C круче - просто то, что в нём легко реализуется обычная схема инкапсуляции.
Ну да, замена mov на push/pop выглядит вообще дико (только сейчас заметил) - mov из регистра в регистр в большинстве случаев обрабатывается на стадии переименования и до исполнительных устройств не доходит, push/pop - две load/store операции с зависимостью.
Что касается плотности кода
Может иметь значение на тяжёлых enterprise приложениях, когда icache/itlb миссы отъедают значительную часть времени. Но тогда надо на чём то таком и тестировать (и вопрос, каким будет время компиляции с метаоптимизацией для бинарника в сотни мегабайт).
У меня такое ощущение, что смысл всех этих слов интуитивно воспринял по компьютерным сообщениям/хелпам. Программировал на Turbo C в старших классах, словаря под рукой не было, только бумажная книжка собственно по C, школьной базы хватало, чтобы додуматься до смысла непонятных слов.
Лет двадцать назад встречался с подобной штукой на обычной x86 архитектуре - два физических сервера в стойке от того же IBM объединялись специальным кабелем, после чего операционка это видела как одну SMP систему. Понятно, что NUMA эффекты типа большей latency при обращении к "чужой" памяти были, но в принципе оно работало, при разумном разделении по данным код вполне параллелился.
Такие рекламные ролики такие недостатки не показывают
Smalltalk скорее опередил время - требовал достаточно дорогую железяку, причём ещё и в однопользовательском режиме. У Apple сделать более-менее доступную копию компьютера с подобным GUI удалось только со второй попытки, а уж про ООП и IDE Джобс вспомнил только когда его из Apple выгнали ) Форт наоборот - хорош для небольших проектов на маленьких компьютерах, на промышленную разработку большими командами не особо масштабируется.
Уже вспомнили лисп машины и Smalltalk, где эта концепция в те же времена была ещё и полнофункциональной с нормальными редактором/дебаггером и т.д. А так ввести сразу после включения компьютера 10 PRINT 2+2 конечно удобно, но что-то потяжелее набирать по строчкам так себе - Turbo Basic с нормальным редактором кода после этого казался чудом )
Так весь смысл инкапсуляции - за указателем скрывается сущность с такими то методами, больше о ней ничего неизвестно. Конкретных реализаций несколько, могут добавляться уже после того, как написан использующий их код - так что закладываться на внутренности в принципе нельзя.
Оно, конечно, запустит чтение из памяти (возможно, с пробегом по таблице страниц) заранее, но текущие инструкции пролетят явно быстрее, чем новые дойдут до декодера.
Немного погуглил - вроде оно появилось на "атомном" Gracemont, но может чего то не вижу.
При этом надо сразу понимать, что несмотря на общую базу это разные языки с разыми подходами к реализации одних и тех же концепций, так что часто надо писать явный враппер.
Ну так это не альтернатива, а другая функциональность. Так то все, наверное, когда то писали свои списки для произвольного типа на чистом C )
Надо советовать аэрофобам побольше ходить перед полётом.
А можно поконкретнее? Как на них сделать, скажем, объект, который умеет read/write (и при этом иметь несколько реализаций, скрытых от пользователя)?
Какие умные указатели в C?
Что напряжного в том, чтобы объявить несколько указателей в структуре, заполнить в функции инициализации и дальше вызывать obj->method(obj,...) ? Да, нет неявного this и в реализациях надо руками кастить объект к нужному типу - но всё равно дополнительной писанины не так много.
Стоило бы тогда рассказать про стандартную схему реализации полиморфизма (структура с указателями на функции).
Точно так же как и плюсовый объект, для которого есть только ISomething и фабрика. Автор же не утверждает, что C круче - просто то, что в нём легко реализуется обычная схема инкапсуляции.
Ну да, замена mov на push/pop выглядит вообще дико (только сейчас заметил) - mov из регистра в регистр в большинстве случаев обрабатывается на стадии переименования и до исполнительных устройств не доходит, push/pop - две load/store операции с зависимостью.
Может иметь значение на тяжёлых enterprise приложениях, когда icache/itlb миссы отъедают значительную часть времени. Но тогда надо на чём то таком и тестировать (и вопрос, каким будет время компиляции с метаоптимизацией для бинарника в сотни мегабайт).
Golden Cove вроде до шести расширили.
Странно, что компьютерные игрушки не упомянули - по квестам с большим количеством диалогов вполне можно учиться.
У меня такое ощущение, что смысл всех этих слов интуитивно воспринял по компьютерным сообщениям/хелпам. Программировал на Turbo C в старших классах, словаря под рукой не было, только бумажная книжка собственно по C, школьной базы хватало, чтобы додуматься до смысла непонятных слов.
Можете математически описать свой вариант свободы воли?
Лет двадцать назад встречался с подобной штукой на обычной x86 архитектуре - два физических сервера в стойке от того же IBM объединялись специальным кабелем, после чего операционка это видела как одну SMP систему. Понятно, что NUMA эффекты типа большей latency при обращении к "чужой" памяти были, но в принципе оно работало, при разумном разделении по данным код вполне параллелился.
В ed'е всегда можно вставить строчку в любое место (команда a или i). А edlin до 32-битной Windows 10 дожил.
Да, иначе какой смысл ) Но в ранних Бейсиках (и на Фокале в оригинальной БК 0010) такого не было.
Smalltalk скорее опередил время - требовал достаточно дорогую железяку, причём ещё и в однопользовательском режиме. У Apple сделать более-менее доступную копию компьютера с подобным GUI удалось только со второй попытки, а уж про ООП и IDE Джобс вспомнил только когда его из Apple выгнали ) Форт наоборот - хорош для небольших проектов на маленьких компьютерах, на промышленную разработку большими командами не особо масштабируется.
Уже вспомнили лисп машины и Smalltalk, где эта концепция в те же времена была ещё и полнофункциональной с нормальными редактором/дебаггером и т.д. А так ввести сразу после включения компьютера 10 PRINT 2+2 конечно удобно, но что-то потяжелее набирать по строчкам так себе - Turbo Basic с нормальным редактором кода после этого казался чудом )
Бейсик на 8битных компьютерах практически всегда так работал.