OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 19:35

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 87 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Пятница, 17 Апрель, 2020 00:12 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Peter Almazov писал(а):
Любопытно, что я для таких задач также не испытываю сомнений.
Только нормальный язык!
C#, в данном случае..
Согласен, любопытно. Можете показать код и сказать, сколько времени заняло времени до получения результата - выполненного действия?

Цитата:
Полифилы, кмк, к делу не имеют отношения.
Конечно, имеют. Вот - задача, вот - как динамичность помогает её решить напрямую, без дополнительных надстроек.

А вот этот вопрос
Цитата:
Конечно, иметь один файл удобнее, чем два (.exe и исходный код), но это вопрос дисциплины.
к динамичности не имеет отношения. Во-первых, выполнять исходник статичность языка никак не мешает (да хоть в C). Во-вторых, в пределе никакого файла, зачастую, и нет - просто результат некоторых действий. То есть, язык служит интерфейсом. Впрочем, обобщая, любой интерфейс - это язык, вопрос лишь какой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Пятница, 17 Апрель, 2020 01:12 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Я тоже такие задачи (или подобные, например, профильтровку "на коленке" списков подписчиков СМС для рассылок на мероприятия, когда люди по нескольку раз записываются, а новых надо чётко выделять для отдельного текста) - только на "нормальном языке" решаю.

О динамике для таких случаев больно думать даже, т.к. понимаешь, что надо лезть в документацию и смотреть, чего забыл как пишется, а чего это оно издохло на этой строке. А компилятор при любом моём склерозе накостыляет сразу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Пятница, 17 Апрель, 2020 06:27 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Илья Ермаков писал(а):
О динамике для таких случаев больно думать даже, т.к. понимаешь, что надо лезть в документацию и смотреть, чего забыл как пишется, а чего это оно издохло на этой строке. А компилятор при любом моём склерозе накостыляет сразу.
Вот! Илья четко изложил. Что называется, “снял с языка”.

Comdiv писал(а):
Можете показать код и сказать, сколько времени заняло времени до получения результата - выполненного действия?
Да код-то похожий, а время экономится сильно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Пятница, 17 Апрель, 2020 10:06 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Илья Ермаков писал(а):
О динамике для таких случаев больно думать даже, т.к. понимаешь, что надо лезть в документацию и смотреть, чего забыл как пишется
А чего вспоминать и лезть в документацию, если язык - это, фактически, язык интерактивной программы, которой вы ежедневно пользуетесь

Илья Ермаков писал(а):
а чего это оно издохло на этой строке. А компилятор при любом моём склерозе накостыляет сразу.
Динамический язык - не означает отсутствие какого-либо контроля. Наоборот, формализация интерфейса как языка, усвоение, что командный язык - это язык программирования, позволяет увеличить контроль и стандартизацию.

Вам как и мне, могут не нравиться конкретные языки, но сама потребность в динамическом языке как идее - объективна и он существует в любом случае. Вопрос лишь в том, насколько корявый.

Когда я вижу в BlackBox или A2 что-то вроде:
Код:
System.DoCommands
   FoxTest.Compile -l=Test.Log  Oberon.Compilation.Test Oberon.Compilation.AMD64TestDiff ~
   FoxTest.Compile   -l=Test.Log Oberon.Execution.Test Oberon.Execution.AMD64TestDiff ~
   FoxTest.Compile   -l=Test.Log ActiveCells.Execution.Test ActiveCells.Execution.TestDiff ~
   FoxTest.Compile   -l=Test.Log MathArrays.Execution.Test  ~
То это оно, но хотелось бы иметь что-то более удобное и гибкое для использования. Естественно, для этого не обязательно идти по пути powershell, vbs и прочих.

Peter Almazov писал(а):
Да код-то похожий, а время экономится сильно.
Так напишите. В пределе задача должна решаться так же быстро, как писаться короткий ответ на сообщение в форуме.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Пятница, 17 Апрель, 2020 11:21 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Чтобы значительно сократить в объёме и "занудности" интеграционные участки программы (да и многие другие), я в докладе https://www.youtube.com/watch?v=v71zsKr ... x=7&t=877s предлагал простейшую конструкцию языка - LET. Объявление переменной по месту с типом, соответствующим типу присваиваемого выражения либо OUT/VAR-параметра.
Никакого "автовывода", только использование однозначно известной информации.

Вот это:
Код:
   PROCEDURE Test2*;
      VAR tv: TextViews.View;
         loc: Files.Locator;
         conv: Converters.Converter;
         name: Files.Name;
         res: INTEGER;
   BEGIN
      loc := Files.dir.This("Repo");
      tv := TextViews.dir.New(TextModels.dir.New());
      name := "AAEhiy3VWO6H3xP_iYwneH";
      Views.Register(tv, Views.dontAsk, loc, name, conv, res);
      HALT(0)
   END Test2;


превращается в:

Код:
   PROCEDURE Test2*;
   BEGIN
      LET loc := Files.dir.This("Repo");
      LET tv := TextViews.dir.New(TextModels.dir.New());
      LET name[256] := "AAEhiy3VWO6H3xP_iYwneH";
      Views.Register(tv, Views.dontAsk, loc, name, LET conv, LET res);
      HALT(0)
   END Test2;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Пятница, 17 Апрель, 2020 12:26 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Comdiv писал(а):
Так напишите. В пределе задача должна решаться так же быстро, как писаться короткий ответ на сообщение в форуме.
На первом месте для меня правильность решения, а быстрота написания вообще не волнует. Сколько времени надо, столько и будет потрачено, никаких пределов.
Вот код:
Код:
using System.IO;

class Program
{
  static void Main(string[] args) {
    DirectoryInfo root = new DirectoryInfo(@"c:\qq");
    foreach (var os in new string[] { "linux", "android", "windows", "tizen", "ios" }) {
      root.CreateSubdirectory(os);
      foreach (FileInfo fi in root.GetFiles($"*_{os}*.sh")) {
        string newName = fi.Name.Replace($"_{os}", "");
        fi.MoveTo($"{root.FullName}/{os}/{newName}");
      }
    }
  }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Пятница, 17 Апрель, 2020 13:37 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Илья Ермаков писал(а):
Чтобы значительно сократить в объёме и "занудности" интеграционные участки программы (да и многие другие), я в докладе https://www.youtube.com/watch?v=v71zsKr ... x=7&t=877s предлагал простейшую конструкцию языка - LET.
Полезно не смешивать скриптовые языки и языки, рассчитанные на длительное сопровождение с желательной ошибкоустойчивостью. Явное указание типа переменной помогает отлавливать часть ошибок и повышает наглядность. Для скриптовых сиюминутных решений - это, наоборот, лишнее препятствие.

Илья Ермаков писал(а):
Никакого "автовывода", только использование однозначно известной информации.
Это и есть широкоприменяемый автовывод без изысков функциональных языков.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Пятница, 17 Апрель, 2020 13:49 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Peter Almazov писал(а):
Да код-то похожий, а время экономится сильно.
Peter Almazov писал(а):
На первом месте для меня правильность решения, а быстрота написания вообще не волнует. Сколько времени надо, столько и будет потрачено, никаких пределов.

Эта задача должна решаться за 2-5 минут с проверкой корректности.

Peter Almazov писал(а):
Вот код:...

1. Что такое @"c:\qq"?
2. По программе видно, что "нормальный язык" разбабахан типичными возможностями динамических языков. Например, $"{root.FullName}/{os}/{newName}".
3. Как мне это запустить? Желательно, в GNU/Linux. Какая инструментальная поддержка для этого нужна? Желательно сравнение с динамическими языками.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Пятница, 17 Апрель, 2020 14:51 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Comdiv писал(а):
Эта задача должна решаться за 2-5 минут с проверкой корректности.
Кому она что-то должна? Уж не мне, во всяком случае.
Comdiv писал(а):
1. Что такое @"c:\qq"?
2. По программе видно, что "нормальный язык" разбабахан типичными возможностями динамических языков. Например, $"{root.FullName}/{os}/{newName}".
3. Как мне это запустить? Желательно, в GNU/Linux. Какая инструментальная поддержка для этого нужна? Желательно сравнение с динамическими языками.
1. Как я понимаю, файлы могут находиться на любом уровне, как в корне диска (здесь c:), так и в глубине дерева. Я от балды задал начало в c:\qq.

2. $"{root.FullName}/{os}/{newName}" = root.FullName + "/" + os + "/" + newName
Т.е. просто конкатенация строк. Ничего там динамического нет. Это более удобный (и более поздний для C#) синтаксический сахарок. Я хотел, чтобы было похоже на ваш код.

3. Как запустить - ну, я захожу в Visual Studio и запускаю :). Под виндами можете скачать Visual Studio Community Edition (бесплатно), если не жалко времени и гигабайтов. Под линукс - скачать .Net Core, тоже бесплатно, но я тут не специалист, это отдельная песня.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Пятница, 17 Апрель, 2020 17:25 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Я такие задачи иногда на Факторе делаю, он динамический. 26 минут заняло вместе с подглядываниями в справку:
Код:
USING: formatting globs io.directories kernel locals sequences
splitting ;
IN: move-os-subdirs

:: new-name ( folder old-name -- new-name )
    folder
    old-name folder "_%s" sprintf "" replace
    "%s\\%s" sprintf ;

:: move-one-file ( file folder -- )
    file
    folder file new-name
    move-file ;

:: move-to-folder ( os -- )
    os "*_%s*.sh" sprintf glob
    [ os move-one-file ] each ;

: main ( -- )
    { "linux" "android" "windows" "tizen" "ios" }
    [ dup make-directory move-to-folder ] each ;

MAIN: main

Запуск: factor -run=move-os-subdirs
Работает с файлами в текущей директории, откуда был запущен.
Кроссплатформенность есть. Насчёт shebang не знаю, никогда не интересовался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Суббота, 18 Апрель, 2020 16:36 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Александр Ильин писал(а):
Я такие задачи иногда на Факторе делаю, он динамический.
Ещё и ориентированность на стек тоже повышает скриптовость, хотя, на мой взгляд, сильно снижая наглядность.

Цитата:
Запуск: factor -run=move-os-subdirs
Пришлось изрядно повозиться, чтобы запустить скрипт. Без подсказок не получилось.
Куда проще было бы способом, пригодным для использования и с she-bang
Код:
factor -script move-os-subdirs.factor

Цитата:
26 минут заняло вместе с подглядываниями в справку
Много, конечно, но предположу, что если бы этим озаботились разработчики, создав специальные библиотеки, factor можно было бы эффективно использовать как замену bash, решая такие задачи за те же 2-5 мин.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Суббота, 18 Апрель, 2020 16:59 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Peter Almazov писал(а):
Кому она что-то должна? Уж не мне, во всяком случае.
Ну Вы же не риторический вопрос задавали? А это один из ответов. "Динамические" языки превосходят "статические" по времени, нужном для решения сиюминутных, не слишком критичных к корректности задач.
Цитата:
Т.е. просто конкатенация строк. Ничего там динамического нет
Вполне динамическая вещь хоть так, хоть эдак, тем более, что так можно объединять значения разного типа. В любом случае, динамичность - это не только о типизации. И надо отметить, что между "динамическими" и "статическими" языками нет разделяющей стены. Игнорирование этого, на мой взгляд, и может приводить к вопросам, какие преимущества дают динамические языки, при использовании довольно-таки динамических языков.

Цитата:
Под виндами можете скачать Visual Studio Community Edition (бесплатно), если не жалко времени и гигабайтов.
Ну вот динамические языки позволяют использовать преимущества программирования там, где жалко времени и гигабайтов. Одно дело скриптовать приложение с небольшой встраиваемой библиотекой, другое дело требовать для этого грандиозного SDK.

Кстати, Оберон как язык и среда тоже довольно динамический, просто этого не всегда достаточно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Суббота, 18 Апрель, 2020 18:42 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Comdiv писал(а):
не слишком критичных к корректности задач.
Это гениально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Суббота, 18 Апрель, 2020 18:58 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Что Вас смущает? Или это желание покрасоваться? :D "Нормальный язык", вроде C# тоже не подходит для слишком критичных к корректности программ. И Вы ведь спрашивали о месте превосходства, а не о недостатках, которые, внезапно, тоже есть?
Comdiv писал(а):
с динамикой можно круто срезать на поворотах. С последствиями для контроля, естественно

Ну и смотрите. Если Вы считаете, что все задачи абсолютно одинаковы критичны к корректности, то обязаны и программу написать не так, а использовать все нужные проверки до того, как приступить к изменениям системы, и сделать формальное доказательство как для особо критичных к корректности программ. И если Вы допускаете создание программ на языке вроде C#, без дополнительных предварительных проверок, без доказательств или хотя бы тестов, значит знаете, что задачи сильно отличаются друг от друга, как и их требования к корректности.

Естественно, там где цена ошибки максимально велика, статичность крайне желательна во всём.
Но какое это имеет отношение к сиюминутным задачам на ограниченных данных?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Вторник, 21 Апрель, 2020 02:52 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Comdiv писал(а):
Александр Ильин писал(а):
Я такие задачи иногда на Факторе делаю, он динамический.
Ещё и ориентированность на стек тоже повышает скриптовость, хотя, на мой взгляд, сильно снижая наглядность.
Да, всё, что делается пайпами и прочими перенаправлениями потоков данных, довольно органично описывается на Факторе. Конкатенация есть композиция. Но иной раз за понятность кода приходится дополнительно бороться, разделяя на небольшие смысловые куски, как я попытался сделать в примере. Можно было бы всё в одну функцию написать, но это не красиво.

Comdiv писал(а):
Цитата:
Запуск: factor -run=move-os-subdirs
Пришлось изрядно повозиться, чтобы запустить скрипт. Без подсказок не получилось.
Куда проще было бы способом, пригодным для использования и с she-bang
Код:
factor -script move-os-subdirs.factor
В Виндовс я просто настроил на расширение *.factor вот такую команду:
Код:
<path-to-factor>\factor.com "%1"
Всё просто работает. (factor.com - это консольный вариант пускача из стандартной поставки.)
Может быть, в Линуксе тоже прокатит.

А вот, пока писал этот пост, в рассылке уже ответили:
John Benediktsson писал(а):
Yes, if you put a she-bang at the top you can just run it.

$ cat hello
#!/path/to/factor
USE: io
"HELLO WORLD" print

$ ./hello
HELLO WORLD

А вообще, респект, что вы попробовали! Я думал, никто даже вчитываться не будет.

Comdiv писал(а):
Цитата:
26 минут заняло вместе с подглядываниями в справку
Много, конечно, но предположу, что если бы этим озаботились разработчики, создав специальные библиотеки, factor можно было бы эффективно использовать как замену bash, решая такие задачи за те же 2-5 мин.
Я в справку глядел, так как редко пользуюсь всякими файловыми командами, коих довольно много. Пока понял, что нету нужного варианта, пока сам написал из имеющихся функций...
Ну, вон тот же glob есть, например, а "переместить все подходящие по маске файлы в такой-то каталог с переименованием каждого файла" - не нашёл. Можно переместить список файлов в один каталог, но потом каждый надо было бы отдельно переименовывать внутри того каталога. Два переименования я решил не делать, а до хорошей абстракции не успел додуматься за это время.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Вторник, 21 Апрель, 2020 03:05 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Вот такой вариант даже проще:
Код:
#!/path/to/factor ; ))
USING: formatting globs io.directories kernel locals sequences splitting ;

:: move-to-folder ( os -- )
    os "*_%s*.sh" sprintf glob
    dup [ os "_%s" sprintf "" replace ] map
    [ move-file ] 2each ;

: main ( -- )
    { "linux" "android" "windows" "tizen" "ios" }
    [ dup make-directory move-to-folder ] each ;

MAIN: main


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Воскресенье, 17 Май, 2020 23:29 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Илья Ермаков писал(а):
Comdiv писал(а):
Также, достаточно гиблое дело пытаться соревноваться с гибкостью динамического подхода с помощью параметризуемых, но статических типов.
Посмотрите, например, на Dart - всё там у них отлично
Посмотрел подробней. Немного пописал код для учебной задачи. Запнулся на вызове внешней программы - что-то они перемудрили и поломали. Зато смог ознакомиться с системой типов языка - в действительности, она динамическая. Конечно, там где могут, проверяют типы статически, где не могут - во время исполнения. Это то, что я и имел ввиду:
Comdiv писал(а):
Для желаемого контроля над типами и другими характеристиками используемых элементов, можно применять специальные проверщики, которые должны быть предусмотрены в обобщённом хранилище.
Comdiv писал(а):
Динамический язык - не означает отсутствие какого-либо контроля
...
Вам как и мне, могут не нравиться конкретные языки, но сама потребность в динамическом языке как идее - объективна и он существует в любом случае
Не знаю, зачем врут про статическую типизацию. Может, от непонимания, а может, не так сталось, как гадалось.
Код:
handle(List<num> a, num val) {
  print('$a: ${a.runtimeType} <- $val: ${val.runtimeType}');
  try {
    a[1] = val;
  } catch(e) {
    print('$e');
  }
  print('$a\n');
}

void main() {
  var ints = [1, 2];
  handle(ints, 3);
  handle([1, 2], 3.1);
  double d = 0.5;
  handle(ints, d);
  handle(ints, d * 8);
}
dart vm
Код:
[1, 2]: List<int> <- 3: int
[1, 3]

[1, 2]: List<num> <- 3.1: double
[1, 3.1]

[1, 3]: List<int> <- 0.5: double
type 'double' is not a subtype of type 'int' of 'value'
[1, 3]

[1, 3]: List<int> <- 4.0: double
type 'double' is not a subtype of type 'int' of 'value'
[1, 3]
js
Код:
[1, 2]: JSArray<int> <- 3: int
[1, 3]

[1, 2]: JSArray<num> <- 3.1: double
[1, 3.1]

[1, 3]: JSArray<int> <- 0.5: double
TypeError: 0.5: type 'JSDouble' is not a subtype of type 'int'
[1, 3]

[1, 3]: JSArray<int> <- 4: int
[1, 4]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Понедельник, 18 Май, 2020 01:40 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Вы как-то очень усиленно трактуете "статическую типизацию".
Всюду, где есть полиморфизм - то есть существует динамический тип, который может быть уточнением от статического, который имеет переменная доступа, часть проверок можно будет выполнить только в рантайме.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Понедельник, 18 Май, 2020 01:58 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Если нужны проверки в runtime, то есть, в динамике, ну какой же это статический тип? Если переменная может содержать значения разных типов, то что это за статическая типизация? Что, вообще, такое "статический"?
Вот assert - это что, такой static_assert, но проверяемый во время исполнения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не могу найти дженерики
СообщениеДобавлено: Понедельник, 18 Май, 2020 02:44 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Я бы определил статически типизированный язык как язык, в котором присутствует система статической типизации.

Ну а без полиморфизма и существующей в расширение к статике динамической типизации сегодня никому язык не нужен.

Теоретизирование в функциональных языках о возможности обеспечить тотальную статику на основе глобального вывода разбивается о необходимость динамического связывания компонентов.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 87 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB