По крайней мере в руководстве по Swift я не нашел упоминаний динамических возможностей — все что связано с отправкой сообщений (я подозреваю что отправка сообщений используется неявно — но я ожидал увидеть возможность явно указывать вызов метода или отправку сообщения), также всевозможные добавления методов в классы на лету, доступ к метаинформации и т.д.
У Objective C синтаксис непривычный, хотя концептуально это очень интересный язык — не менее интересный чем Rust и Go (а в чем-то даже и более). А вот у Swift к сожалению, насколько я понял, синтаксис привычный, а многих интересных возможностей ObjC (пока еще?) нет.
Мицгол, давно хочу вас спросить: в стародавние времена вы, помнится, были сторонником «православного самодержавия». Сейчас, когда вы испытываете его на себе в действии, ваше отношение к нему изменилось?
Язык очень интересный, но синтаксис меня местами огорчает. Самый лучший синтаксис из си-подобных языков пожалуй у C#. Rust претендует на низкоуровневость Си (и еще очень интересно что в итоге получится со встроенными «умными указателями»), Go содержит интерейшие концепции эмбеддинга вместо наследования и интерфейсов, в D весьма много мелочей, которые упустили в С++; в общем, идеального языка опять нет.
Есть два нормальных решения: или как в Nemerle — плагины пишутся на том же языке что и основной код; компилятор делает несколько проходов и компилирует сначала плагины («макросы») а затем с их помощью основной код. Преимущества — один язык а не два, повторное использование кода (можно один код использовать как в плагинах так и в основной программе).
Второй вариант — использование для плагинов другого языка (например тот же javascript). Для С++ думаю это подойдет лучше — ибо плагины на небезопасном С++ со всеми его костылями и граблями это будет еще тот номер. Сам по себе JavaScript вполне стандартизирован и общеизвестен, все что остается — разработать и стандартизировать объектную модель для компиляторов (аналог HTML DOM для браузеров).
В том-то и дело, что делать языковые фичи на уровне компилятора НАМНОГО проще. Там это обычные «сишные» структуры данных и функции. А здесь это адские хаки, основанные на случайных свойствах языковых конструкций, изначально предназначавшихся для совершенно других вещей.
А так получается что каждый программист дописывает компилятор практически вслепую (сообщения об ошибках при метапрограммировании на шаблонах это ад). Вот даже автор не уверен что код идеально работает.
Вся проблема в том что эти возможности С++ были случайно открыты, а не спроектированы изначально. По хорошему нужно бы всю часть языка, связанную с метапрограммированием, перепроектировать заново. С новыми ключевыми словами, нормальными синтаксическими макросами, нормальным доступом к AST и т.д. А старую оставить для совмесимости, но строго рекомендовать этим не пользоваться.
Восхищаюсь теми кто может придумывать и реализовывать такие вещи. Супер!
Но с другой стороны грустно… все это — SFINAE, compile-time-последовательности чисел, вычисления на шаблонах, да те же туплы в реализации С++… это мега костыли к компилятору. Даже не костыли, а внутренности компилятора, почему-то существующие снаружи в виде библиотек и пользовательского кода и подключенные к нему многочисленными трубочками.
Почти все это должно быть в самом языке, а не в библиотеках. Все что в boost отмечено как «Language Features Emulation», «Generic Programming», «Template Metaprogramming» и много чего еще.
Конечно большинство как покупало монолитные смартфоны так и будет покупать. Но вот гики, которым хочется чего-то большего, которым хочется из смартфона получить Хакерфон, безусловно будут довольны.
Вот набросал небольшой списочек возможных модулей для такого смартфона. Дополняйте в комментариях:)
Инфракрасная (тепловизионная) камера
Цифровой SDR радиоприемник
Цифровой SDR радиопередатчик (вместе с приемником можно использовать как рацию)
Счеткик Гейгера/дозиметр
Трехмерный сканер (Project Tango)
Различные ТВ и радио тюнеры (цифровые, аналоговые)
Спутниковая телефония и спутниковый интернет
Универсальный химический анализатор
Ультразвуковой сканер
Модуль DECT телефонии
Модуль проводной телефонии/факсмодем (ну мало ли для каких хакерских целей пригодится)
Универсальный цифровой осциллограф/измеритель электрических величин
Многие из этих идей я почерпнул здесь на Хабре, в обсуждениях различных устройств-дополнений к смартфонам, разрабатываемых на кикстартере.
Супер! Такой способ, как я понимаю, подойдет и для добавления драйверов произвольных устройств в Андроид без пересборки ядра?
Купил как-то китайский адаптер ethernet to usb otg, якобы работающий с android устройствами. Китайцы в качестве андроид драйвера приложили исходники на Си:) Устройство на смартфоне не определяется (вполне возможно они имели в виду планшеты а не смартфоны).
А кстати, есть что-нибудь типа boost, но более расширенное? (без ограничений на компиляторы и т.п.)
Или хотя-бы какой-то сайт который собирает ссылки на такие библиотеки (типа общесистемных или language emulation features).
Интересно до чего еще додумались люди в мире С++:)
Кстати, а в России есть где нибудь музей компьютерной техники (желательно работающей)? Не частная коллекция а именно музей.
Второй вариант — использование для плагинов другого языка (например тот же javascript). Для С++ думаю это подойдет лучше — ибо плагины на небезопасном С++ со всеми его костылями и граблями это будет еще тот номер. Сам по себе JavaScript вполне стандартизирован и общеизвестен, все что остается — разработать и стандартизировать объектную модель для компиляторов (аналог HTML DOM для браузеров).
А так получается что каждый программист дописывает компилятор практически вслепую (сообщения об ошибках при метапрограммировании на шаблонах это ад). Вот даже автор не уверен что код идеально работает.
Вся проблема в том что эти возможности С++ были случайно открыты, а не спроектированы изначально. По хорошему нужно бы всю часть языка, связанную с метапрограммированием, перепроектировать заново. С новыми ключевыми словами, нормальными синтаксическими макросами, нормальным доступом к AST и т.д. А старую оставить для совмесимости, но строго рекомендовать этим не пользоваться.
Но с другой стороны грустно… все это — SFINAE, compile-time-последовательности чисел, вычисления на шаблонах, да те же туплы в реализации С++… это мега костыли к компилятору. Даже не костыли, а внутренности компилятора, почему-то существующие снаружи в виде библиотек и пользовательского кода и подключенные к нему многочисленными трубочками.
Почти все это должно быть в самом языке, а не в библиотеках. Все что в boost отмечено как «Language Features Emulation», «Generic Programming», «Template Metaprogramming» и много чего еще.
Вот набросал небольшой списочек возможных модулей для такого смартфона. Дополняйте в комментариях:)
Инфракрасная (тепловизионная) камера
Цифровой SDR радиоприемник
Цифровой SDR радиопередатчик (вместе с приемником можно использовать как рацию)
Счеткик Гейгера/дозиметр
Трехмерный сканер (Project Tango)
Различные ТВ и радио тюнеры (цифровые, аналоговые)
Спутниковая телефония и спутниковый интернет
Универсальный химический анализатор
Ультразвуковой сканер
Модуль DECT телефонии
Модуль проводной телефонии/факсмодем (ну мало ли для каких хакерских целей пригодится)
Универсальный цифровой осциллограф/измеритель электрических величин
Многие из этих идей я почерпнул здесь на Хабре, в обсуждениях различных устройств-дополнений к смартфонам, разрабатываемых на кикстартере.
Купил как-то китайский адаптер ethernet to usb otg, якобы работающий с android устройствами. Китайцы в качестве андроид драйвера приложили исходники на Си:) Устройство на смартфоне не определяется (вполне возможно они имели в виду планшеты а не смартфоны).
Или хотя-бы какой-то сайт который собирает ссылки на такие библиотеки (типа общесистемных или language emulation features).
Интересно до чего еще додумались люди в мире С++:)