Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - valexey_u

Страницы: 1 2 [3] 4 5 ... 7
31
Общий раздел / [Oberon-07/11] Импорт типов.
« : Октябрь 23, 2013, 11:37:49 pm »
Только что напоролся на один нюанс, который раньше замечен не был. Вот такой код, с точки зрения грамматики Oberon'a не валиден оказывается:

MODULE B;
IMPORT A;
TYPE
 Boo = A.Foo;
END B.

Конкретно не валидно вот это:
Boo = A.Foo
Справа тут может быть только StructType:
StrucType = ArrayType | RecordType | PointerType | ProcedureType.
ArrayType = ARRAY length {"," length} OF type.
RecordType = RECORD ["(" BaseType ")"] [FieldListSequence] END.
PointerType = POINTER TO type.
ProcedureType = PROCEDURE [FormalParameters].

Ибо:
TypeDeclaration = identdef "=" StrucType.

DeclarationSequence = [CONST {ConstDeclaration ";"}]
[TYPE {TypeDeclaration ";"}]
[VAR {VariableDeclaration ";"}]
{ProcedureDeclaration ";"}.

И никак не может быть qualident:
qualident = [ident "."] ident

Вот такие пироги.

32
Общий раздел / [Oberon-07/11] Export non-scalar variable.
« : Сентябрь 12, 2013, 12:29:10 pm »
Вирт в Oberon-07/11 (а возможно и раньше) запретил экспорт из модуля (даже в режиме read only) переменные не скалярный типов.

Отсюда возникает минимум два вопроса:

1) Зачем он это сделал? Чем переменные не скалярных типов хуже при read-only экспорте чем переменные скалярных типов? (мы тут всю голову сломали, но придумать вескую причину не смогли)
2) Что такое скалярный тип? В репорте про это нет ни слова. Есть предположение что это Basic Types + Pointer types (в противовес Structured types = Record types + Array types).

33
Общий раздел / [Oberon-07/11, js] Demos
« : Сентябрь 05, 2013, 12:21:58 am »
Поскольку теперь у нас компилятор уже вполне сносно воспринимает семантику Оберона, я пробую сделать что-то более-менее приближенное к действительности. Так что сюда буду складывать то что получилось.

Итак, пробный шар - графика. Черновой набросок биндинга к processing.js. Код скопипастить в наш онлайн-компилер (http://oberspace.dyndns.org/oberonjs.html), ткнуть Compule&Run и наслаждаться :-)

MODULE PageInit;
  IMPORT JS;

  PROCEDURE CreateCanvas*;
  BEGIN
   JS.do("var canvas = document.createElement('canvas');
          canvas.id = 'processingCanvas'
          document.body.insertBefore(canvas,document.body.childNodes[0]);
    ");
  END CreateCanvas;
   
END PageInit.


MODULE Processing;
  IMPORT JS;
   
  TYPE
    ProcessingType* = POINTER TO RECORD END; (* dummy type *)
    CallbackType*   = PROCEDURE;
  VAR
    MouseX*   : REAL;
    MouseY*   : REAL;
    Width*    : INTEGER;
    Height*   : INTEGER;

    DrawProc  : CallbackType;
    SetupProc : CallbackType;
    Instance  : ProcessingType;
    Started   : BOOLEAN;

  (* callbacks *)

  PROCEDURE SetSetupProc*(s : CallbackType);
  BEGIN
    SetupProc := s
  END SetSetupProc;
   
  PROCEDURE SetDrawProc*(d : CallbackType);
  BEGIN
     DrawProc := d
  END SetDrawProc;

  (* global *)
  PROCEDURE SetFrameRate* (fps : INTEGER);
  BEGIN
    JS.do("Instance.frameRate(fps);")
  END SetFrameRate;

  PROCEDURE SetBackground*(argb : INTEGER);
  BEGIN
    JS.do("Instance.background(argb)")
  END SetBackground;

  PROCEDURE SetSize*(w, h : INTEGER);
  BEGIN
    JS.do("Instance.size(w,h);")
  END SetSize;
   
  PROCEDURE Stroke*(argb : INTEGER);
  BEGIN
    JS.do("Instance.stroke(argb)")
  END Stroke;

  (* drawing *)

  PROCEDURE Line*(x0,y0,x1,y1 : REAL);
  BEGIN
    JS.do("Instance.line(x0,y0,x1,y1);");
  END Line;

  (* math *)
  PROCEDURE Radians*(angle : REAL) : REAL;
  VAR
    ret : REAL;
  BEGIN
    JS.do("ret = Instance.radians(angle)");
    RETURN ret
  END Radians;

  (* transform *)
  PROCEDURE Translate*(x,y : REAL);
  BEGIN
    JS.do("Instance.translate(x,y);")
  END Translate;

  PROCEDURE PushMatrix*;
  BEGIN
    JS.do("Instance.pushMatrix();")
  END PushMatrix;

  PROCEDURE PopMatrix*;
  BEGIN
    JS.do("Instance.popMatrix();")
  END PopMatrix;

  PROCEDURE Rotate*(angle : REAL);
  BEGIN
    JS.do("Instance.rotate(angle);")
  END Rotate;
   
  (* internal engine *)

  PROCEDURE InnerDraw;
  BEGIN
    IF DrawProc # NIL THEN
      JS.do("MouseX = Instance.mouseX; MouseY = Instance.mouseY;");
      JS.do("Width = Instance.width; Height = Instance.height;");
      DrawProc
    END
  END InnerDraw;

  PROCEDURE InnerSetup;
  BEGIN
    IF SetupProc # NIL THEN
      SetupProc
    END
  END InnerSetup;
 
  (* start routine *)
  PROCEDURE Start*;
  BEGIN
     ASSERT(~Started);
     JS.do("function sketchProc(p){p.draw=InnerDraw; p.setup=InnerSetup; Instance=p;}");
     JS.do("var canvas = document.getElementById('processingCanvas');");
     JS.do("var processingInstance = new JS.Processing(canvas, sketchProc)");
     Started := TRUE
  END Start;
   
END Processing.

MODULE Tree;
  IMPORT PageInit, P := Processing;

  VAR
    theta : REAL;

  PROCEDURE Branch(h : REAL);
  BEGIN
    h := 0.66*h;

    IF h > 2.0 THEN
      P.PushMatrix;
      P.Rotate(theta);
      P.Line(0.0, 0.0, 0.0, -h);
      P.Translate(0.0, -h);
      Branch(h);
      P.PopMatrix;

      P.PushMatrix;
      P.Rotate(-theta);
      P.Line(0.0, 0.0, 0.0, -h);
      P.Translate(0.0, -h);
      Branch(h);
      P.PopMatrix;     
    END
  END Branch;

  PROCEDURE Setup;
  BEGIN
    P.SetSize(640,360);
    P.SetBackground(0H)
  END Setup;
 
  PROCEDURE Draw;
  VAR
    a : REAL;
  BEGIN
    P.SetBackground(0H);
    P.SetFrameRate(30);
    P.Stroke(0FF00FF00H);

    a     := P.MouseX/FLT(P.Width)*90.0;
    theta := P.Radians(a);
 
    P.Translate(FLT(P.Width)/2.0, FLT(P.Height));
    P.Line(0.0, 0.0, 0.0, -120.0);
    P.Translate(0.0, -120.0);
   
    Branch(120.0)
  END Draw;

BEGIN
  PageInit.CreateCanvas;
  P.SetSetupProc(Setup);
  P.SetDrawProc(Draw);
  P.Start
END Tree.

34
Общий раздел / [Oberon-07/11] RECORD&POINTER export.
« : Сентябрь 04, 2013, 11:21:23 am »
В Oberon-report'e этот момент не уточнен (и вообще никак не описан), поэтому предлагаю обсудить, уточнить и договориться.

Итак, ситуация следующая - модуль A экспортирует указатель на структурный тип A.R, но сам A.R не экспортирует. Может ли модуль B импортирующий A.R создать в куче переменную типа A.R?

Код:
MODULE A;
TYPE
 R = RECORD END;
 P* = POINTER TO R;
END A.

MODULE B;
IMPORT A;
VAR
 p : A.P;
BEGIN
 NEW(p)
END B.
Технически мы это можем без проблем. Но в некоторых реализациях такое вот может быть не возможно, кроме того, если такое разрешить, то по сути мы лишаемся возможности создавать opaque-типы простым способом. Кроме того возникает логическое противоречие - почему то локальную переменную мы завести не можем, а переменную через NEW уже можем.

Поэтому предлагаю следующее:
1) Если импортирован только указательный тип, то с указателем можно делать все что обычно, но нельзя NEW. То есть новых экземпляров типа R пользователь заводить не может нигде.

2) Если импортирован еще и сам структурный тип (record or array), то создавать экземпляры (через NEW или иначе) можно, а доступ есть к тем полям которые экспортированны (помечены звездочкой), можно КОПИРОВАТЬ экземпляры (statement ":="). При этом конечно возможна ситуация когда тип экспортирован, но ни одного поля не экпортированно. Увы :-)

Ну и наконец есть особый случай, который тоже неоднозначен, и про который в репорте нет ничего:
MODULE A;
TYPE
 P* = POINTER TO RECORD foo* : INTEGER END;
END A.

MODULE B;
IMPORT A;
VAR
 p : A.P;
BEGIN
 NEW(p); (* это можно? *)
 p.foo := 42 (* а это? *)
END B.
Экспортирован тип-указатель на анонимную запись, причем у этой записи есть экспортированные поля. Таким образом переменную типа этой самой записи пользователь создать не может. Но, очевидно, он может обратиться к полю. Но может ли он создать через NEW новый экземпляр таковой безымянной записи?

Предлагаю создание экземпляра через NEW, в этом случае, также запретить. Таким образом у нас получается возможность создавать типы переменные которых могут создаваться ТОЛЬКО через фабрики (где они будут гарантированно инициализированны корректно), но при этом остается возможность прямого обращения к некоторым полям. (кроме того, опять таки, это логично, что если я не могу создать локальную переменную, то и через NEW тоже не могу её создать).

Как-то так. Какие будут мнения?

35
Общий раздел / Нокия куплена MS
« : Сентябрь 03, 2013, 05:38:45 am »
Ну, точнее Microsoft купил подразделение Нокии, которое занимается разработкой устройств и сервисов - телефоны, планшеты там и так далее. Причем куплено было за недорого - 5.44 миллиарда евро, скайп в свое время, мелкософту обошелся дороже.

В последние годы MS стремится максимально скопировать Apple, начиная с идеалогии интерфейсов и операционок, а также политики внутри экосистемы, и заканчивая внутренней организацией компании. В частности MS взяла курс на производство собственных устройств (планешеты, телефоны, возможно компьютеры). В этом свете покупка этого подразделения Нокии выглядит вполне логичным. Теперь Microsoft превратится в MicroHardAndSoft. Кстати, этим MS наверняка отпугнет своих партнеров производящих устройства для MS-экосистемы (те же компьютеры например). Встречаем на рынке Apple 2.0 :-) Мир уже никогда не будет прежним.

http://www.theverge.com/2013/9/2/4688530/microsoft-buys-nokias-devices-and-services-unit-unites-windows-phone

http://habrahabr.ru/post/192328/

36
Общий раздел / English
« : Август 28, 2013, 10:46:13 am »
Я тут задался целью подтянуть свой английский до уровня позволяющего спокойно общаться на интересные мне темы, в том числе и устно (c устным особая проблема, и именно это нужно подтягивать в первую очередь - читаю тех. литературу достаточно свободно, пишу - тоже более-менее, а вот с разговором какая-то беда, ибо нуль практики).

Для этого я записался на курсы английского, вчера прошел тестирование (должно было показать мой уровень чтобы стало понятно куда меня определять, в какую группу). Откровенно говоря, мне показалось, что тестируют как-то однобоко и не правильно. То был обычный тест на времена (20 предложений с пропущенным обычно каким-нибудь глаголом, нужно выбрать форму глагола (+ to be в какой-нибудь форме) из трех вариантов). Я не представляю как этот тест покажет мое умение РАЗГОВАРИВАТЬ на английском (это тот навык который мне необходим, но которым я не владею вообще). По уровню вледения этим навыком думаю я хуже 5ти летнего ребенка-носителя языка. При этом тест я скорее всего написал лучше чем даже 7-8 летний.

Ну, а поскольку особой надежды на курсы нет в плане разговорной практики (а разговорный английский можно подтянуть только практикой), я поспрашивал у знакомых и мне присоветовали вот этот сайтик: http://livemocha.com/ там можно общаться в том числе с носителями языка непосредственно. Буду пробовать.

37
http://habrahabr.ru/post/190146/

Цитировать
Tessel — это микроконтроллер прогроммируемый на JavaScript, судя по всему, ориентируемый на работу с интернетом — WiFi модуль в нём идёт по умолчанию.
...
  • Поддержку модулей Node.js
  • Залить свой софт можно будет по USB или же по WiFi
  • Расширяемость за счёт Tessel-модулей (на данный момент планируются следующие: Accelerometer, Micro SD, RFID, Audio, Bluetooth, Servos, Relays, Temperature + Humidity)
    Совместимость с модулями Arduino (при этом будет возможность запускать библтотеки Arduino напрямую)
  • Управление микроконтроллером через смартфон
  • Бета-тестируемость — возможность заказать тестовую партию с вашим предустоновленным софтом, простая библиотека для сбора статистики по использованию ваших устройств на Tessel, обновление софта всех устройств одним кликом

Технические характеристики:

180mhz ARM Cortex-M3 LPC1830
32mb SDRAM
32mb Flash
TI CC3000 Wifi Radio
16-pin GPIO bank for prototyping
Micro USB or battery power

Оффициальный сайт: http://technical.io
Оффициальный Github: http://github.com/technicalmachine

"Микроконтроллер" на js еще более бессмысленный и беспощадный, чем микроконтроллер на .net :-) Куда уж плюсам, спокойно работающим на микроконтроллере с 512 байтами ОЗУ :-)

38
Общий раздел / Почему у нас падают ракеты.
« : Август 01, 2013, 04:24:01 pm »
Цитировать
Аннотация: немного о космических исследованиях, по собственному опыту.

В 2008 году я работал в МИФИ над созданием комплекса научной аппаратуры космического аппарата "КОРОНАС-ФОТОН". В следующем году должен был состояться его запуск, поэтому к июлю вся работа уже была на завершающих стадиях. КДИ образцы приборов заканчивали тестирование в составе комплекса, шли термовакуумные испытания - все приборы, предназначавшиеся для отработки и тестирования, находились в Истре, на территории головного предприятия по спутниковой платформе "Метеор-3М". У нас заканчивалась сборка летных образцов приборов, которые непосредственно предназначались для отправки в космос.

Как говорится, ничто не предвещало беды. Когда вдруг одновременно во многих местах на территории института стали спешно срезать старый, и укладывать новый асфальт...

Дальше тут: http://mymaster.livejournal.com/380805.html

39
Общий раздел / [C99] High level programming in C.
« : Июль 28, 2013, 01:48:39 pm »
Услышал недавно о замечательной библиотеке для С99: http://libcello.org/ . Привносит в Си элементы современных языков с приятным сахарком. Да, это именно либа, это не внешний препроцессор или какая-то еще тулза.

Пример кода:
/* Example libCello Program */

#include "Cello.h"

int main(int argc, char** argv) {

  /* Stack objects are created using "$" */
  var int_item = $(Int, 5);
  var float_item = $(Real, 2.4);
  var string_item = $(String, "Hello");

  /* Heap objects are created using "new" */
  var items = new(Array, 3, int_item, float_item, string_item);

  /* Collections can be looped over */
  foreach (item in items) {
    /* Types are also objects */
    var type = type_of(item);
    print("Object %$ has type %$\n", item, type);
  }

  /* Heap objects destroyed with "delete" */
  delete(items);
}

40
Общий раздел / Ominc советует.
« : Июль 25, 2013, 10:12:58 am »
Сейчас из списка рассылки прилетело два письма. Просьба к Ominc и их ответ. Просьба была на тему того, что 18 апреля 2014 года заканчивается поддержка WinXP, соответственно к этому сроку неплохо бы все проблемы BB связанные с поддержкой Win7 устранить:

Цитировать
    For all of us who must migrate from Windows XP before April 18, 2014
    I strongly request of Oberon Microsystems Inc  that all Windows 7 glitches be fixed and released
    to us before that date.

    Doug Danforth

В ответ Oberon microsystems ответили много интересного. Они рассказали о том, чем они занимаются, на каких языках пишут, ну а также о будущем BB.

Если кратко: в 2004 году они закончили официальную поддержку BB, так что нет, они не будут официально пилить поддержку Win7 в BB. Поэтому они советуют тем, кто еще использует BB как основную платформу для разработки, посмотреть на альтернативы (We are really sorry about this but we have to encourage users still relying on BlackBox as their main development platform to start looking for alternatives.). Ну и в качестве примера приводят те языки и инструменты которыми сами пользуются:

Они используют C# и .NET, в том числе mono:
        http://www.mountaineer.org/mountaineer-group/
        http://xamarin.com/
Также они используют java для Андроида и серверных приложений. И еще они пишут на Objective-C под iOS.

А по духу ближе всего к Оберону им кажется Google Go. И они советуют тем, кому важена именно близость по духу, переходить на него: http://golang.org/

Оригинал:
Цитировать
Thanks for the reminder of Windows XP's end of support deadline, Doug.

With its release as open source software, BlackBox has reached the final stage of commercial development at Oberon microsystems back in December 2004. Consequently there will be no officially supported versions of BlackBox for Windows 7 from us.

We are really sorry about this but we have to encourage users still relying on BlackBox as their main development platform to start looking for alternatives.

At Oberon microsystems we are currently using C# and .NET for many of our mobile and embedded software projects:

        http://www.mountaineer.org/mountaineer-group/

        http://xamarin.com/

We also write lots of Java for Android and for our server-based software. Finally, we even have some Objective-C targeting iOS.

For a language very much in the spirit of Oberon, we suggest trying out Google's Go:

        http://golang.org/

With kind regards,
Marc

41
Общий раздел / Про Оберон-холиворы.
« : Июнь 18, 2013, 04:45:04 pm »
Попалась сегодня цитата, которая, по моему, очень хорошо указывает причину оберон-холиворов и срачиков:

Цитировать
посади в комнате десяток великих учителей, и они будут пребывать в полном согласии. а посади туда их учеников - передерутся.

42
Общий раздел / [CP][GPCP] java.lang.VerifyError
« : Май 18, 2013, 01:35:37 pm »
Пока нет ответа от Ominc по поводу бага компилятора, я решил попробовать этот же модуль на GPCP for jvm, благо сама java показала очень приличные результаты по производительности. Изменил импорты, пока убрал замер времени, остальное оставил всё как есть:

MODULE Blur;
   IMPORT CPmain;
   
   CONST
      width = 640;
      height = 480;
      N = 13;
      frames = 1000;
     
      red = 0;
      green = 1;
      blue = 2;
     
   TYPE
      Frame = ARRAY width*height*(blue+1) OF SHORTCHAR;
         
   PROCEDURE Index(x,y,color : INTEGER) : INTEGER;
   BEGIN
      RETURN ((x+y*width)*3+color)
   END Index;
   
   PROCEDURE Blur(IN in : Frame; OUT out : Frame);
   VAR
      x,y,c : INTEGER;
   BEGIN
      FOR y:=1 TO height-2 DO
         FOR x:=1 TO width-2 DO
            FOR c:=red TO blue DO
               out[Index(x,y,c)] := SHORT(CHR( ( ORD(in[Index(x,y-1,c)]) + ORD(in[Index(x,y+1,c)]) +
                                             ORD(in[Index(x-1,y,c)]) + ORD(in[Index(x+1,y,c)]) ) DIV 4  ));
            END;
         END;
      END;
   END Blur;
   
   PROCEDURE Do*;
   VAR
      time : LONGINT;
      f, n : INTEGER;
      a1, a2 : POINTER TO Frame;
   BEGIN
      NEW(a1);
      NEW(a2);
     
      FOR f:=1 TO frames DO
         FOR n:=1 TO N DO           
            Blur(a1,a2);
            Blur(a2,a1)
         END
      END;
   END Do;   
BEGIN
    Do;
END Blur.

Компилируется все на ура. Но при запуска вылетает - ругается верификатор жабы:
>cprun Blur
Exception in thread "main" java.lang.VerifyError: (class: CP/Blur/Blur, method: Do signature: ()V) Incompatible argument to function
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

Кто-нибудь знает что ему не нравится и почему компилятор молчит?

43
Общий раздел / [BlackBox] Compiler trap.
« : Май 18, 2013, 02:19:34 am »
Так, народ, что-то мне с BlackBox "везет" на всякие его особенности.

Вот поймал trap компилятора при попытке собрать простой модуль.

Воспроизводится везде, и в школьной сборке информатики-21 (BB 1.5), и в стоковом BB 1.6, и в красноярской сборке BB.

Исходник модуля и сам трап прикладываю. Также, на всякий случай, вот в интернеточитабельном виде исходник модуля:
MODULE Blur;
   IMPORT Kernel, Out:=StdLog;
   
   CONST
      width = 640;
      height = 480;
      N = 13;
      frames = 1000;
     
      red = 0;
      green = 1;
      blue = 2;
     
   TYPE
      Frame = ARRAY width*height*(blue+1) OF SHORTCHAR;
         
   PROCEDURE Index(x,y,color : INTEGER) : INTEGER;
   BEGIN
      RETURN ((x+y*width)*3+color)
   END Index;
   
   PROCEDURE Blur(IN in : Frame; OUT out : Frame);
   VAR
      x,y,c : INTEGER;
   BEGIN
      FOR y:=1 TO height-2 DO
         FOR x:=1 TO width-2 DO
            FOR c:=red TO blue DO
               out[Index(x,y,c)] := SHORT(CHR( ( ORD(in[Index(x,y-1,c)]) + ORD(in[Index(x,y+1,c)]) +
                                             ORD(in[Index(x-1,y,c)]) + ORD(in[Index(x+1,y,c)]) ) DIV 4  ));
            END;
         END;
      END;
   END Blur;
   
   PROCEDURE Do*;
   VAR
      time : LONGINT;
      f, n : INTEGER;
      a1, a2 : POINTER TO Frame;
   BEGIN
      NEW(a1);
      NEW(a2);
      time := Kernel.Time();
     
      FOR f:=1 TO frames DO
         FOR n:=1 TO N DO           
            Blur(a1,a2);
            Blur(a2,a1)
         END
      END;
     
      Out.Real((Kernel.Time() - time)/1000)
   END Do;   
BEGIN
END Blur.

PS. Это я приводил к единому виду исходники той blur-задачки для всех языков программирования. Это, собственно наиваная читабельная реализация алгоритма. Очень важно чтобы оно заработало на ББ, иначе в статье ББ придется заменить другой реализацией Оберона, а этого сильно хочется избежать по ряду причин.

44
Задача - хотя бы 60 (а лучше 100) раз в секунду что-то там делать. Services.DoLater как оказалось очень слоупочна - максимум получается 16 раз в секунду.

Тестировал так:
MODULE BackgroundAction;

IMPORT StdLog, Services, Kernel;

TYPE
   Action = POINTER TO RECORD (Services.Action) END;
VAR
   count : INTEGER;
   begin : LONGINT;
   action : Action;
   
   PROCEDURE (a: Action) Do;
   BEGIN
      INC(count);
      IF count  = 1000 THEN
         StdLog.Real((Kernel.Time() - begin)/1000);
         StdLog.Ln;
         StdLog.Real(1000/((Kernel.Time() - begin)/1000));
         StdLog.Ln;
      ELSE
         Services.DoLater(a,Services.now);
      END
   END Do;
   
   PROCEDURE Start*;
   BEGIN
      count := 0;
      NEW(action);
      begin := Kernel.Time();
      Services.DoLater(action,Services.now);
   END Start;

BEGIN
   
END BackgroundAction.

45
Задача следующая: вот допустим у меня есть стандартный пример Cubes (Obx/Docu/Cubes.odc), который соответственно умеет размещать свой Action и свой View, причем этот самый View уже допустим внедрен в какой-то составной документ и там благополучно вращается.

Я хочу иметь возможность модифицировать код этого модуля ObxCubes (например менять его поведение, чтобы например он не вращался а перемещался, логику менять, возможно отрисовку) на лету. То есть чтобы во внедренном в составной документ View сразу отображались изменения (скажем куб перестал вращаться, или вообще в шар превратился).

То есть такой вот hot code swapping.

Это возможно?

PS. В erlang'e я это делал неоднократно - там это элементарно делается.

Страницы: 1 2 [3] 4 5 ... 7