Хочу предложить тыжпрограммистам изначально закладывать возможность подключения из JavaScript, и поэтому чтоб в основе был WebRTC. Но при этом чтоб адреса были ipv6.
Предлагаемая схема: нарезаем в приватном пространстве ipv6 кусок, резервируем часть оставшихся битов под верхний домен. Берём publicsuffixlist, нумеруем tld и прочее его содержимое, а дальше предлагаем желающим получить место в этом пространстве регать домены вида base32.tld и поднимать там сервер WebRTC и/или WebSocket. Для обычных программ делаем движок, который через драйвер tuntap умеет установить подключение.
Я имел в виду: строки, размер которых известен динамически, но не статически, в языке Ада могут быть на стеке. Я имел в виду случай, когда выделяется не максимальный объём, а сколько надо.
package Ada.Real_Time
with Nonblocking is
type Time is private;
Time_First : constant Time;
Time_Last : constant Time;
Time_Unit : constant := implementation-defined-real-number;
type Time_Span is private;
Time_Span_First : constant Time_Span;
Time_Span_Last : constant Time_Span;
Time_Span_Zero : constant Time_Span;
Time_Span_Unit : constant Time_Span;
Tick : constant Time_Span;
function Clock return Time;
function "+" (Left : Time; Right : Time_Span) return Time;
function "+" (Left : Time_Span; Right : Time) return Time;
function "-" (Left : Time; Right : Time_Span) return Time;
function "-" (Left : Time; Right : Time) return Time_Span;
То есть, вот есть Time и Time_Span. Если к Time прибавить Time_Span, получим Time. Time можно получить у функции Clock, а Time_Span можно получить как разность двух Time. Самая суть выражается, читать одно удовольствие. А детали выносятся в «примечания» (private).
Delphi, хоть и не такой мусорный язык, но там уже is private нет. Вынь да положь содержимое всех кишков на всеобщее обозрение вперемешку с действительно интересными методами.
Вот аналог на Delphi.
unit System.Diagnostics;
interface
{$HPPEMIT LEGACYHPP}
uses System.Classes, System.TimeSpan;
type
TStopwatch = record
strict private
class var FFrequency: Int64;
class var FIsHighResolution: Boolean;
class var TickFrequency: Double;
strict private
FElapsed: Int64;
FRunning: Boolean;
FStartTimeStamp: Int64;
function GetElapsed: TTimeSpan;
function GetElapsedDateTimeTicks: Int64;
function GetElapsedMilliseconds: Int64;
function GetElapsedTicks: Int64;
class procedure InitStopwatchType; static;
public
class function Create: TStopwatch; static;
class function GetTimeStamp: Int64; static;
procedure Reset;
procedure Start;
class function StartNew: TStopwatch; static;
procedure Stop;
property Elapsed: TTimeSpan read GetElapsed;
property ElapsedMilliseconds: Int64 read GetElapsedMilliseconds;
property ElapsedTicks: Int64 read GetElapsedTicks;
class property Frequency: Int64 read FFrequency;
class property IsHighResolution: Boolean read FIsHighResolution;
property IsRunning: Boolean read FRunning;
end;
implementation
Ну что, приятно такое читать? А со встроенными телами методов ещё больший кошмар.
В C++ ублюдочная модульность. Пространства имён с исходниками не связаны, кто угодно может подкладывать куда угодно.
Ещё типично, когда на одной операционке #include сделал вроде бы для всего, а эти #include потащили другие #include, а на другой целевой платформе не потащили. И вот, значит, в неподходящий момент мы узнаём об этом. Сильнейшее желание свалить из этого дурдома.
Как минимум Button и CheckBox здесь динамически созданы
писать com библиотеки вместо нормального кода
А с чего вдруг нормальным кодом не считается COM? Какой смысл делать кучу привязок под отдельные языки программирования, когда можно осчастливить всех разом. Я вот для Visual DialogScript сделал мост в OLE и получил возможность качать файлы по SFTP. И всё остальное, что можно делать через OLE библиотеки. 2ГИСом рулить. А так стали бы в 2ГИС делать модуль для VDS? Очень сомневаюсь.
И управление памятью там сразу понятное. В Delphi, если программа вся на интерфейсах, как у нас на работе, тоже всё понятно. А в C++ там я не знаю как надо офигеть, чтоб каждый нюанс типа shared_ptr_from_this корректно учесть. Шаблонами я не видел, чтоб это делалось, зато видел, как напильником работают в SWIG.
+ это к сожалению только для винды
На ущербных операционках вполне пашет PyXPCOM.
Вообще, конечно, это мощный камень в огород государства. Кто как не государство должно строить недостающую инфраструктуру. На примере Jabber мы уже увидели, как коммерсы неспособны договориться.
Ну или как IBM с Apple тянули на своих плечах кроссплатформенный IBM System Object Model (Windows, OS/2, Mac OS, UNIX AIX, мэйнфреймы с OS/390). Компилятор C++ модифицировали, чтоб SOM классы генерил вместо обычных C++ классов. И интеграцию в скрипты REXX всего этого дела. Object COBOL ещё получил SOM как единственный способ делать объекты. Сторонние разработчики запилили DirectToSOM Modula-2, и стало как минимум три языка нативного программирования, между которыми работает наследование классов, есть выход в скрипты, удалённый вызов методов и все остальные прелести Middleware. Но потом пришла Java, и вроде как натив стал не нужен, а когда поняли, что нет, нужен, про былые достижения натива забыли.
Коммерсам это вспомнить будет выгодно, если у раковины будет один слив. То есть, никогда или
только для винды
или если всё запечатать в проприетарный ЯП.
Подходящее место — это университеты, как бы только их отучить смотреть в рот коммерсам, а самим творить историю.
procedure SetMeUp(S: string; I : Integer);
function DescribeMe(): string;
Смотрю как заворачивается:
p := PyDelphiWrapper.Wrap(TTestClass.Create, soOwned);
PythonModule.SetVar( 'DVar', p );
PyEngine.Py_DecRef(p);
И я почитал, с TTestRTTIAccess чуть ниже более прямой пример, только на современный RTTI опирается.
Питон не умеет использовать напрямую ком объекты, для этого их оборачивают при помощи С или С++
Единый для всех win32com этим и занимается. Ну а также oleaut32.dll, в которой движок, читающий библиотеку типов из ресурсов и реализующий IDispatch для бинарных интерфейсов.
Ну вообще-то они оба происходят от языка структурного программирования Алгол, и происходило это годах очень близких, 1970 и 1971. Это Си или BCPL изуродовал Алгол, а в Паскале синтаксис просто унаследован.
Если посмотреть, допустим, на какие ЯП ГОСТы есть, там Си или чего-то с фигурными скобками в принципе нет, не смотря на одинаковый возраст Паскаля и Си. Нафиг не падали эти скобки никому, жили и жили без них.
Предлагаемая схема: нарезаем в приватном пространстве ipv6 кусок, резервируем часть оставшихся битов под верхний домен. Берём publicsuffixlist, нумеруем tld и прочее его содержимое, а дальше предлагаем желающим получить место в этом пространстве регать домены вида base32.tld и поднимать там сервер WebRTC и/или WebSocket. Для обычных программ делаем движок, который через драйвер tuntap умеет установить подключение.
Да, в Расте строки делали по подобию адских
Возможно, вам бы понравился Оберон. А мне не понравился. Мусорка.
Мне нравится вот так:
То есть, вот есть Time и Time_Span. Если к Time прибавить Time_Span, получим Time. Time можно получить у функции Clock, а Time_Span можно получить как разность двух Time. Самая суть выражается, читать одно удовольствие. А детали выносятся в «примечания» (private).
Delphi, хоть и не такой мусорный язык, но там уже is private нет. Вынь да положь содержимое всех кишков на всеобщее обозрение вперемешку с действительно интересными методами.
Вот аналог на Delphi.
Ну что, приятно такое читать? А со встроенными телами методов ещё больший кошмар.
Другое дело, позор тем, кто для nginx выбрал не Аду или хотя бы Паскаль. Фу таким быть
Ещё типично, когда на одной операционке #include сделал вроде бы для всего, а эти #include потащили другие #include, а на другой целевой платформе не потащили. И вот, значит, в неподходящий момент мы узнаём об этом. Сильнейшее желание свалить из этого дурдома.
В dfm я видел, как это делается для органов управления:
Как минимум Button и CheckBox здесь динамически созданы
А с чего вдруг нормальным кодом не считается COM? Какой смысл делать кучу привязок под отдельные языки программирования, когда можно осчастливить всех разом. Я вот для Visual DialogScript сделал мост в OLE и получил возможность качать файлы по SFTP. И всё остальное, что можно делать через OLE библиотеки. 2ГИСом рулить. А так стали бы в 2ГИС делать модуль для VDS? Очень сомневаюсь.
И управление памятью там сразу понятное. В Delphi, если программа вся на интерфейсах, как у нас на работе, тоже всё понятно. А в C++ там я не знаю как надо офигеть, чтоб каждый нюанс типа shared_ptr_from_this корректно учесть. Шаблонами я не видел, чтоб это делалось, зато видел, как напильником работают в SWIG.
На ущербных операционках вполне пашет PyXPCOM.
Вообще, конечно, это мощный камень в огород государства. Кто как не государство должно строить недостающую инфраструктуру. На примере Jabber мы уже увидели, как коммерсы неспособны договориться.
Ну или как IBM с Apple тянули на своих плечах кроссплатформенный IBM System Object Model (Windows, OS/2, Mac OS, UNIX AIX, мэйнфреймы с OS/390). Компилятор C++ модифицировали, чтоб SOM классы генерил вместо обычных C++ классов. И интеграцию в скрипты REXX всего этого дела. Object COBOL ещё получил SOM как единственный способ делать объекты. Сторонние разработчики запилили DirectToSOM Modula-2, и стало как минимум три языка нативного программирования, между которыми работает наследование классов, есть выход в скрипты, удалённый вызов методов и все остальные прелести Middleware. Но потом пришла Java, и вроде как натив стал не нужен, а когда поняли, что нет, нужен, про былые достижения натива забыли.
Коммерсам это вспомнить будет выгодно, если у раковины будет один слив. То есть, никогда или
или если всё запечатать в проприетарный ЯП.
Подходящее место — это университеты, как бы только их отучить смотреть в рот коммерсам, а самим творить историю.
Смотрю как заворачивается:
И я почитал, с TTestRTTIAccess чуть ниже более прямой пример, только на современный RTTI опирается.
Единый для всех win32com этим и занимается. Ну а также oleaut32.dll, в которой движок, читающий библиотеку типов из ресурсов и реализующий IDispatch для бинарных интерфейсов.
github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Demos/Demo31/Unit1.pas#L74
Использование из Python:
github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Demos/Demo31/Unit1.dfm#L112
Не понял
А это через RTTI:
github.com/pyscripter/python4delphi/blob/master/PythonForDelphi/Components/Sources/Core/WrapDelphi.pas
Причём, как я вижу по истории, они там с 2005го года ещё через старенький неудобный RTTI умели работать.
Надо научиться побеждать ограничения WebAssembly. Зелёные потоки, сегментированные стеки, а поверх этого RAII. Вот тогда веб станет интересным местом.
Если посмотреть, допустим, на какие ЯП ГОСТы есть, там Си или чего-то с фигурными скобками в принципе нет, не смотря на одинаковый возраст Паскаля и Си. Нафиг не падали эти скобки никому, жили и жили без них.