Обновить
64
0.9

Programmer

Отправить сообщение
Не совсем — там указатель не на «суперкласс» (базовый класс в терминах С++), а на «метакласс», то есть сам класс (тип данных) в ObjC является объектом, доступным в рантайме, на него и указывает isa. Это скорее рефлексия.
Но зато рантайм ObjC позволяет реализовать структурный полиморфизм, похожий на то, что я привел здесь.
Там прекрасный полиморфизм времени исполнения, основанный на структурной типизации.
Вот рабочий пример, основанный на примере из книги Ivo Balbaert — The way to Go.
package main

import (
	"fmt"
)
// квадрат
type Square struct {
	side float32
}

func (sq *Square) Area() float32 {
	return sq.side * sq.side
}

// круг
type Circle struct {
	radius float32
}

func (c Circle) Area() float32 {
	return 3.14159 * c.radius * c.radius
}

func main() {
	var areaIntf Shaper  // объект интерфейса

	// создаем объект Квадрат
	sq1 := new(Square)
	sq1.side = 5
	// присваиваем объект интерфейсу и вызываем полиморфно функцию через интерфейс
	areaIntf = sq1
	fmt.Printf("The square has area: %f\n", areaIntf.Area())

	// создаем объект Круг
	cr1 := new(Circle)
	cr1.radius = 5
	// присваиваем объект интерфейсу и вызываем полиморфно функцию через интерфейс
	areaIntf = cr1
	fmt.Printf("The circle has area: %f\n", areaIntf.Area())
}

Даже догадываюсь как это может быть устроено на низком уровне, если доберусь — надо будет Идой посмотреть ассемблерный код, проверить предположение:)
(Оффтоп) все языки как языки, а «русский язык» в менюшке каким-то совершенно другим шрифтом, более тонким и непохожим на шрифты других языков. И зачем слово «язык» непонятно, для других-то нету…
Да я в курсе:) Это таблица символов unicode, а речь идет об отдельном описании пиктограмм как таковых, отдельном стандарте, на котором основывался бы и Unicode, и прочие стандарты, в которых используются пиктограммы.
На самом деле пиктограммы — это своеобразные иероглифы, только в современном варианте. Если отвлечься от иконок приложений, то пиктограммы — это и дорожные знаки, и различные математические/технические символы, и всевозможные коммерческие логотипы, и много чего еще. Мы их постоянно видим и используем в жизни, порой даже не замечая.
Может быть, имеет смысл постепенно «стандартизировать» наиболее универсальные некоммерческие пиктограммы, на международном уровне конечно же… дизайн оставить дизайнерам, но обобщенные образы пиктограмм заносить в какую-то базу, со временем создавать для них черно-белые unicode символы и «обобщенные» цветные образы, ну и поощрять их повсеместное использование.
Так то оно конечно так, но… сама эта практика всяких аппсторов вызывает большие сомнения. Если уж та или иная платформа предполагает возможность запуска программ, то любой пользователь должен иметь право установить любую программу, написанную собственноручно или скачанную откуда угодно без всякой цензуры со стороны разработчиков платформы. Пока, насколько я знаю, это право не закреплено ни в одном законе, а крупные корпорации уже почуяли возможность наживы и быстренько придумывают всякие аппсторы, цифровые подписи к софту, которые можно получить только у них и т.д.
По уму, тут надо Опере в антимонопольные органы подавать на Apple, а не на вебкит переходить. Помнится, еврокомиссия обязала Майкрософт предлагать пользователю выбор браузера, и Эппл обяжут.
Насколько я понимаю, устройства для считывания сигналов с мозга и их интерпертации уже давно существуют, и даже есть коммерческие варианты (и тут на Хабре было несколько обзоров таких устройств).
Да, до сих пор испытываю ностальгию по текстовому режиму. Помнится, для своих программ рисовал окошки псевдографикой, а на столе всегда была распечатка с таблицей кодов символов. Ну и шрифты конечно тоже пробовал менять, даже редактор писал какой-то.
По случаю вспоминаются следующие приколы, которые мы в институте делали с текстовым режимом под DOS
1. Резидентная программа вешается на таймер, Программа сканирует текстовую видеопамять и заменяет все английские буквы на соответствующие русские. Забавный такой русификатор.
2.Такая же резидентная программа, аналогичным образом все выводимые на экран слова из трех букв заменяет на одно вполне определенное слово:)

Ну если поддержка старых проектов — то я же предлагаю не переходить на новые компиляторы, «поддержка» — это в лучшем случае исправление ошибок. В крайнем случае, если будут обнаружены ошибки в старом компиляторе, разработчики компиляторов могут выпустить исправленную версию компилятора для старого С++. Но такие случаи крайне редки.
А те, кто активно развивает проекты, добавляет новую функциональность — перейдут. Я бы с удовольствием перешел бы на модули, если бы они были:) И на рефлексию перешел бы, и на нормальные синтаксические макросы вместо адского «метапрограммирования на шаблонах», и на много чего еще.
Вот никогда не понимал этого странного желания «ничего не менять», лишь бы не сломать «обратную совместимость». Кто не хочет — пускай юзает старые компиляторы! А нормальные программисты захотят использовать новые и с удовольствием внесут изменения в свой код. А уж модули-то в первую очередь нужно вводить, дурацкую систему инклудов надо было выкинуть еще лет 20 назад.
Мой вариант: Тема интересна, даже очень, но только читать в текстовом виде, никаких видеокастов!
Фигня все это. Вот если бы появились автоматические системы для хранения и приготовления пищи — это было бы совсем другое. Роботизированный холодильник + контейнеры для хранения того, что не требует охлаждения + система приготовления пищи (плита + микроволновка и т.д — с разными видами термической обработки ) + роботизированная система подготовки (мясорубка/миксер/etc) + различные датчики для определения состояния и качества продуктов, температуры и т.д. + подключение к источникам воды + специальные стандартизированные контейнеры для продуктов + RFID метки на контейнерах…
Это конечно было бы более сложное устройство, чем стиральная машина-автомат, и «уровень ответственности» больше. Но с другой стороны, блюда изготовлялись бы по точному рецепту, с непрерывным контролем температуры, химических свойств и т.д. а не «на глаз» как это делают люди.
Надеюсь что японцы или китайцы подсуетятся и изобретут такое когда-нибудь. Мне почему-то кажется что именно японцы сделают, им это как-то ближе.
Спасибо Вам, что прошли этот путь и рассказали нам. Ничего другого в первые дни и недели кстати ожидать и не следовало…
Меня интересует несколько вопросов, связанных с картой, может кто из хабровчан знает:
На карточке есть электронная подпись? Как ей можно будет воспользоваться?
Она как-то будет завязана с порталом Госуслуг?
Какие технологии поддерживает карта? Там, судя по фотке, есть какая-то контактная площадка, кроме того NFC наверное есть (иначе как транспорт оплачивать).
А я то думал, сейчас будет статья «как сделать самому фотку ауры с помощью web-камеры, arduino и запчастей от микроволновки» :)
ЗЫ. c фотками того что получилось у автора:)
Пиэйчди унесли бы диски с исходниками винды! И выложили бы на торрентах, разумеется :)
int128. Или int256. Его уж точно хватит на время существования Вселенной:)
Идей-то много, и правильных идей, а делать никто не делает. Или — в лучшем случае — сделают экспериментальный web-проект про который через неделю все забудут. Тут на Хабре уже много таких статей, и во всех авторы затрагивают лишь какой-то маленький кусочек того, что по уму нужно сделать. Впрочем, это вполне понятно — одному человеку такой объем работ просто не поднять (а тут даже объем проектирования use cases такой, что мало не покажется, а это ведь еще не работы).

По-хорошему нечто подобное могло бы взлететь, если бы начать с объединения существующих социалок и различного файлообмена (торрентов и прочего) внутри единого клиентского приложения (не браузера, но содержащего браузер как компонент). Торренты — это отличная основа распределенной сети (и отличная приманка для любителей халявы, коих большинство), существующие социалки — отличная и готовая база пользователей, а программный клиент — дополнительные возможности, такие как поиск по параметрам, локальные базы данных, общение в реальном времени, в том числе видео/аудио, всякие пользовательские рейтинги (юзеры ой как любят рейтинги), элементы самоорганизации (группы, теги/интересы, разные уровни доступа внутри групп), можно прикрутить криптовалюту и т.д… Сделать открытую архитектуру, открытые протоколы, и по мере расширения охвата оборачивать существующие решения в новые протоколы, становясь все более назависимыми от существующих социалок. Если все будет ОЧЕНЬ удачно, то у получившейся системы есть все шансы заменить браузер как таковой (то есть браузеры без встроенных средств Пирингового Интернета будут восприниматься примерно как сейчас «текстовые браузеры»), и технология http/html, равно как и клиент-серверная организация Интернета, станет лишь маленькой частичной чего-то большего.

инкрементальный счетчик не подойдет для этого?
Нет, правда, сегодня же не первое апреля… ЗАЧЕМ им случайные числа для UI??? Есть кто нибудь на Хабре, кто может внятно ответить на этот вопрос?

Информация

В рейтинге
1 775-й
Зарегистрирован
Активность