User Tag List

Страница 28 из 91 ПерваяПервая ... 242526272829303132 ... ПоследняяПоследняя
Показано с 271 по 280 из 907

Тема: Мощная среда ZXDev для разработки НА ПЯТИ ЯЗЫКАХ для ZX готова к тестированию

  1. #271

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Значит это может быть достигнуто путём использования встроенного интерпретатора, но написанного библиотечным способом. Я начинаю думать, что лямбда-исчисление доступно для Оберона. Вот смотрите, возьмём для примера BlackBox Component Builder. В нём есть подсистема Dev, содержащая компилятор Компонентного Паскаля. Он вызывается с помощью команды активации компиляции из меню. Не составит никакой проблемы вызывать компилятор из своего собственного модуля. Не составит и никакой проблемы переориентировать компилятор брать входной текст (на Компонентном Паскале) не из текстового окна, а прямо из вызывающего кода. Это может выглядеть так (код условный):

    Код:
    MODULE Lambda;
    
    IMPORT Dev, Kernel;
    
    CONST
      MyCode = "MODULE MyCode; IMPORT Out; BEGIN Out.String('Hello, integrated World!') END MyCode;";
    
      BEGIN
        Dev.CompileText(MyCode);
        Kernel.LoadModule("MyCode");
        Kernel.RunModule("MyCode");
    END Lambda.
    Данный подход конечно пользуется компилятором и ядром, но зато - никакой интерпретации.

    ---------- Post added at 23:42 ---------- Previous post was at 22:10 ----------

    Так можно сделать лямбды если они понадобятся оберонщику. Мне пока не понадобились. Наверное я не очень продвинутый.

    Просто Дельфи- или Си-программист воспринимает компилятор как нечто совершенно отчуждённое от его личного кода. В Оберон-системе компилятор - такой же компонент, как и любой другой. И точно также ему можно посылать сообщения и получать ответы. Точно так же обстоят дела и с IDE, документами, окнами и любыми другими контролами.

    Именно поэтому в Оберон-системе как правило не нужен внутренний скриптинг на другом, отличном от Оберона языке. Т.е. это конечно возможно, но зачем, если Оберона во многом достаточно. И всё это - без использования виртуальной машины. Или с ней, если понадобится.
    Последний раз редактировалось Oleg N. Cher; 17.10.2014 в 15:40.

  2. #271
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #272

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,082
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    173
    Спасибо Благодарностей получено 
    493
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Это может выглядеть так (код условный):
    А указатели на функции в Обероне есть? Скомпилировать в рантайме кусок кода - это одно дело, но его же надо ещё и передать в функцию, выполняющую сортировку или поиск.
    В любом случае, когда код записан строкой - он не типобезопасен. Он вообще не безопасен, там и опечатки могут быть, и что угодно ещё. В C# и C++11 очень круто то, что все эти конструкции проверяются ещё на этапе компиляции.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI YTINK 9 Channel

  4. #273

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Так можно сделать лямбды если они понадобятся оберонщику.
    Так в них теряется смысл. Потому что выражение i => i.Id == 58 лаконично и понятно. Ты же не напишешь код запуска компилятора в качестве фактического параметра? Тогда зачем оно вообще нужно? Кстати сказать, лямбда-выражения в основном применяются к generic-коллекциям, без них я тоже от лямбд смысла не вижу.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Мне пока не понадобились. Наверное я не очень продвинутый.
    А мне пока ЯВУ (кроме Бэйсика) для Спектрума не понадобились. Представляю себе свой уровень в сравнении... Тебе не понадобились потому что не пробовал.
    Последний раз редактировалось Alex Rider; 07.10.2014 в 18:01.

  5. #274

    Регистрация
    27.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    974
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    164 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Общий вопрос:
    Как обстоят дела с INTEGER 64bit в языке ОБЕРОН ?
    Коим образом можно "перенести" работу с битовыми полями с С на Оберон ?
    Как обстоят дела с объединениями ?
    union {
    u16_t var1;
    struct {
    u8_t aaa;
    u8_t bbb;
    }
    }

    var1 = 0x1122;
    tmp = aaa + bbb;

  6. #275

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eltaron Посмотреть сообщение
    А указатели на функции в Обероне есть?
    Конечно есть:
    Код:
    PROCEDURE Fn(): INTEGER; BEGIN RETURN 0 END Fn;
    ...
    VAR fn: PROCEDURE (): INTEGER;
    BEGIN
      fn := Fn; ...
    ...
    END ...
    Цитата Сообщение от Eltaron Посмотреть сообщение
    В любом случае, когда код записан строкой - он не типобезопасен. Он вообще не безопасен, там и опечатки могут быть, и что угодно ещё. В C# и C++11 очень круто то, что все эти конструкции проверяются ещё на этапе компиляции.
    Ну собсно обработку ошибок я опустил для упрощения. А так - почему бы не проверить вывод компилятора и не отреагировать соответствующим образом.

    Я опасаюсь, что ново-программисты будут использовать такое средство как лямбды, для которого конечно можно придумать хорошее применение, втуне. Т.е. не понимая чётко всего механизма. А оно как - компилируется? А потом? Куда-то загружается и запускается? Т.е. вся эта тянучка из компилятора и рантайма присутствует в конечном продукте. И накладные расходы соответствующие. Для сортировки списка или поиска элемента - это уже слишком.

    Цитата Сообщение от AlexG Посмотреть сообщение
    Как обстоят дела с INTEGER 64bit в языке ОБЕРОН ?
    В зависимости от реализации. В стандарте Оберона/Оберона-2 размеры типов не зафиксированы. Традиционно (ETH Oberon, A2/AOS, XDS) INTEGER = 16 бит; LONGINT = 32 бита. Для 64 битов в некоторых реализациях есть тип HUGEINT.

    В Component Pascal, XDev/WinDev INTEGER = 32 бита; LONGINT = 64 бита. Есть ли возможность использовать именно 64-битный INTEGER? В XDev/WinDev - да. Размер всех типов задаётся в специальном файле-конфигураторе Ofront.par, выглядящем примерно так:

    Код:
    CHAR 1 1
    BOOLEAN 1 1
    SHORTINT 2 2
    INTEGER 4 4
    LONGINT 8 8
    SET 4 4
    REAL 4 4
    LONGREAL 8 8
    PTR 4 4
    PROC 4 4
    RECORD 1 1
    ENDIAN 1 0
    Цитата Сообщение от AlexG Посмотреть сообщение
    Коим образом можно "перенести" работу с битовыми полями с С на Оберон ?
    Для работы с битовыми полями предлагается тип SET, что во многом снижает потребность в логических операциях AND, OR, XOR. Несмотря на некоторую громоздкость записи, логические операции для целых в Обероне всё-таки можно использовать.

    Вирт Н. SET: Недооцениваемый тип данных и его компиляция для ARM

    Цитата Сообщение от AlexG Посмотреть сообщение
    Как обстоят дела с объединениями ?
    union {
    u16_t var1;
    struct {
    u8_t aaa;
    u8_t bbb;
    }
    }

    var1 = 0x1122;
    tmp = aaa + bbb;
    Объединения в Оберон-парадигме считаются опасным низкоуровневым средством. В некоторых реализациях есть возможность использовать объединения в биндингах (например, в BlackBox).

    Какая альтернатива предлагается для замены объединений? Расширяемые записи.

    Код:
    TYPE
      Father = (*EXTENSIBLE*) RECORD
        a, b, c: INTEGER; (* Это общие для всех потомков поля *)
      END;
      Son = RECORD (Father)
        d, e: CHAR; (* Это только данные сына *)
      END;
      Daughter = RECORD (Father)
        d, e: SET; (* Это только данные дочери *)
      END;
    Оберон строг в проверке типов и на этапе компиляции, и в рантайме. Он спроектирован так чтобы по максимуму обезопасить работу с указателями. Соответственно нет смысла кастить объект типа Son в объект типа Daughter и пытаться работать с полями сына как с полями дочки. Вместо этого применяется охрана типа:

    Код:
    obj: POINTER TO Father; (* Это указатель на отца и др.членов семьи *)
    BEGIN
      IF obj IS Son THEN ... END; (* Проверка того, что это сын *)
      WITH obj: Daughter DO (* Гарант того, что объект - дочь *)
        (* Если объект не дочь - ловится ошибка исполнения или исключение *)
      END
    Я думаю, понятно по аналогии как именно предлагается безопасно работать с расширяемыми записями вместо объединений.

    В принципе, мне объединения ещё ни разу не понадобились, кроме как в биндингах к SDL 1.3 (там есть их два штуки).

    Хочу подчеркнуть, что Оберон - маленький язык. Если хочется увидеть в нём прямые аналоги всех сишных возможностей, то этого нет. Но зато, например, компилятор ARM Oberon-07 занимает ~ 3 000 строк исходника. OP2 (Oberon Portable Compiler) ~ 10 000 строк.

    Так что присуща некоторая аскетичность. Но, в принципе, возможностей хватает, просто нужно слегка перестроить мышление.
    Последний раз редактировалось Oleg N. Cher; 17.10.2014 в 15:40.

  7. #276

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Я опасаюсь, что ново-программисты будут использовать такое средство как лямбды, для которого конечно можно придумать хорошее применение, втуне. Т.е. не понимая чётко всего механизма. А оно как - компилируется? А потом? Куда-то загружается и запускается? Т.е. вся эта тянучка из компилятора и рантайма присутствует в конечном продукте.
    Плохой программист будет одинаково плохо использовать возможности любого языка/библиотеки. Бояться тут нечего. Многократно убеждался, что на более простых языках *****кодить можно с большим успехом.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    И накладные расходы соответствующие. Для сортировки списка или поиска элемента - это уже слишком.
    Не, слишком - это написание 20 отдельных процедур (методов) для сортировки массива записей из 20 полей по каждому полю. Про сортировку по нескольким полям и фильтрацию по сложным условиям я молчу. Да, вариант из 20 ветвлений в одном методе для сортировки тоже выглядит нехорошо.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Но зато, например, компилятор ARM Oberon-07 занимает ~ 3 000 строк исходника. OP2 (Oberon Portable Compiler) ~ 10 000 строк.
    Это, вероятно, есть плюс для маломощных компьютеров.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Но, в принципе, возможностей хватает, просто нужно слегка перестроить мышление.
    Опять же, в специфических условиях. На рынке коммерческой разработки это - большой минус. Во-прервых, из-за самого по себе перестроения мышления, во-вторых, из-за большей трудоемкости разработки и поддержки кода, и, как следствие, его удорожания.

  8. #277

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Многократно убеждался, что на более простых языках *****кодить можно с большим успехом.
    Здесь нужно уточнить - смотря какие возможности предоставляет язык. На простом Форте можно написать такое, что убицагалавойапстенку. Оберон строг и надёжен. Он даёт хорошие абстракции, которыми оперирует программист. Массив это точно массив. А не адрес, к которому можно по ссылке обращаться. И т.д.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Не, слишком - это написание 20 отдельных процедур (методов) для сортировки массива записей из 20 полей по каждому полю. Про сортировку по нескольким полям и фильтрацию по сложным условиям я молчу. Да, вариант из 20 ветвлений в одном методе для сортировки тоже выглядит нехорошо.
    Зато внутренне выглядеть это будет статически скомпилированным. А не тянущим за собой бог весть какой рантайм. Недостаток этого подхода в том, что программист часто даже не представляет себе сколько слоёв будет задействовано и насколько эффективным будет код. Это просто бич больших систем. Программист не представляет что в них происходит. Нас это конечно устраивает, но только до тех пор пока не появляется ошибка, которую можно искать месяцами. А некоторые ошибки вообще никогда не будут исправлены, просто будут проявляться очень редко у кого.

    Я бы сказал, что Оберон - это наиболее простая из современных прослоек между машинными кодами и человеческим мышлением. Притом в сторону человека. Спорить об этом можно, но мы исходим из разных позиций. Тебе надо абы быстро домой, а я занимаюсь свободным творчеством. Вообще очень сложно сравнивать Оберон и C#. Потому что я беру Оберон как нотацию для записи алгоритмов. А ты берёшь C# как готовое и очень проработанное средство для коммерческого программирования. Мы говорим абсолютно на разных языках. И исходя из абсолютно различных потребностей.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Это, вероятно, есть плюс для маломощных компьютеров.
    Ceres, на котором была запущена первая Оберон-система (ETH Oberon), если я не запамятовал, имел 1 Мб ОЗУ. JVM или .NET в таком объёме вообще не выстрелят. Но плюс не только в экономности. Плюс в простоте и скорости переориентировки. Я упомянул 3 000 строк кода. Допустим, замысел .NET как многоязыковой платформы не вполне удался, а микрософту это и не было особенно нужно. Это действительно так - все используют преимущественно C#. Да, можно писать для .NET и на Компонентном Паскале, но кто это делает? Фактически .NET моноязычен. И C# - язык одной платформы - .NET. Допустим, платформа провалилась. Все в массовом порядке ломанулись переписывать свой код, если он, разумеется, ещё актуален. На язык, который пропихивает какая-то новая фирма, например, гугле. Вместе с тем, появилась новая архитектура, допустим, мобильная, со своим другим языком. Оберонщик со своим кодом просто перепишет свой компилятор Оберона на другую архитектуру. И его код будет актуален. Возможно, это достоинство не покажется тебе таким уж существенным. Но это повышает ценность нашей работы. Она не нивелируется с провалом того слоя, на котором целиком она была выстроена. А слой, на который мы сделали ставку, весьма мал и подъёмен. И даже относительно независим от нижележащей архитектуры.

    Я бы подчеркнул, что средства в духе XDev, Haxe и Monkey-X, о которых я упоминал, - это реакция программистов на множество языков, платформ и архитектур. И на их бурную, но недолгую жизнь. Это реакция не огромных фирм, которым надо запустить свою машину, чтобы все потом пришли к ним и работали на их средствах. А они просто определяли дальнейшую стратегию их развития. И пожинали плоды (кто девушку гуляет - тот её и танцует; также и юзверей имеет).

    Философия Оберона - ничего лишнего. Если тебе это по вкусу, то это для тебя. Мне это не совсем по вкусу, я не такой большой минималист и очень болезненно воспринимаю урезанность такого диалекта как Оберон-07. Мне он кажется очень сильно минималистичным. Поэтому я взял Оберон-2 и Компонентный Паскаль за основу своего диалекта. И наращиваю его возможностями, которые мне кажутся необходимыми.

    Alex'у G, если он хочет слезть с Си, вероятно, лучше подойдёт Modula-2, в которой есть тип BITSET и объединения. Хотя я забыл упомянуть о низкоуровневых возможностях Оберон-реализаций, которые даже не стандартизированы. Всё перечисленное может быть реализовано с их помощью. В первую очередь это конечно возможности низкоуровневого псевдомодуля SYSTEM - SYSTEM.PUT(adr, value), позволяющая заслать по любому адресу простую переменную любого типа. Так что, получив адрес записи с помощью SYSTEM.ADR(rec), мы можем спокойно записывать по любому смещению от него любое значение. Но Оберон не очень поощряет такой стиль. Мне особенно нравится, что низкоуровневые моменты в Обероне обычно очень изолированы от остального кода. И проще отслеживать ошибки в них. А вспомним, основные претензии сишников к Оберону "а тут низя по этому адресу поместить вот этот массив байтов". Конечно низя! Но если очень надо, то мона. Зато когда будешь переписывать это - увидишь что все низкоуровневые приблуды у тебя в одном модуле как-то сами сконцентрировались. И не очень этот модуль и большой. Переписал его - и порядок. А высокоуровневый слой настолько хорошо проработан, что его мало колышет даже разрядность ОС.

    Для вкуривания в философию Оберона предлагаю пробежать глазками статьи на сайте compact-programming.narod.ru. Если вставляет - значит тема, иначе не стоит Оберон юзать.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Опять же, в специфических условиях. На рынке коммерческой разработки это - большой минус. Во-прервых, из-за самого по себе перестроения мышления, во-вторых, из-за большей трудоемкости разработки и поддержки кода, и, как следствие, его удорожания.
    Я, слава богу, не занимаюсь сейчас коммерческим программированием. Так что могу позволить себе делать то, что мне нравится. В отличие от большинства коммерческих программистов-невольников.

  9. #278

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    На простом Форте можно написать такое, что убицагалавойапстенку.
    Во-первых, форт не так прост и имеет другую парадигму разработки. Во-вторых, хреновй программист и на минималистичном Обероне-07 напишет такое, что дргой программист сломает голову при попытке понять.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Массив это точно массив. А не адрес, к которому можно по ссылке обращаться.
    А что значит "массив - не адрес"? То, что он всегда в стеке живет, а не в динамической памяти? Ну так это ограничение жесткое, а не благо. Разработчику в 99% должно быть пофиг как организован массив внутри, зато не пофиг на максимально возможный размер этого массива.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Зато внутренне выглядеть это будет статически скомпилированным. А не тянущим за собой бог весть какой рантайм.
    Рантайм тянут не лямбда-выражения, это - неотъемлемая часть .NET и Java, дающая много полезных плюшек для коммерческой и любительской разработки. Про скорость разработки этого я уже писал. Про сложность понимания такого кода, думаю, писать не имеет смысла. И да, лямбда-выражения тоже статически компилируются.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Программист не представляет что в них происходит.
    Хороший программист представляет.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Нас это конечно устраивает, но только до тех пор пока не появляется ошибка, которую можно искать месяцами. А некоторые ошибки вообще никогда не будут исправлены, просто будут проявляться очень редко у кого.
    Не очень понимаю как заворачивание кода в метод компилятором дает дополнительные поводы для ошибок. Зато представляю себе что такое дебажить "рыхлый" и многословный код и насколько это сложнее отладки лаконичного кода.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Я бы сказал, что Оберон - это наиболее простая из современных прослоек между машинными кодами и человеческим мышлением.
    Простая технически - слоглашусь. Простая для эффективной разработки - вряд ли.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Потому что я беру Оберон как нотацию для записи алгоритмов. А ты берёшь C# как готовое и очень проработанное средство для коммерческого программирования.
    Оно и то, и то есть нотация для записи алгоритмов. Но да, я соглашусь, что C# удобнее для быстрой и дешевой коммерческой разработки. А для души можно и на Brainfuck писать, это не принципиально.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Ceres, на котором была запущена первая Оберон-система (ETH Oberon), если я не запамятовал, имел 1 Мб ОЗУ. JVM или .NET в таком объёме вообще не выстрелят. Но плюс не только в экономности.
    Я согласен, что языки с виртуальными машинами для "больших" систем.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Допустим, замысел .NET как многоязыковой платформы не вполне удался, а микрософту это и не было особенно нужно.
    Наличие дестяков .NET-языков (в том числе, и детищ Borland с о.NETчиванеим VCL) как бы опровергает этот факт. Micfosort'у надо, чтобы покупали Visual Studio.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Да, можно писать для .NET и на Компонентном Паскале, но кто это делает? Фактически .NET моноязычен. И C# - язык одной платформы - .NET. Допустим, платформа провалилась.
    Ну как минимум VB.NET- и Object Pascal-проекты достаточно популярны.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Допустим, платформа провалилась. Все в массовом порядке ломанулись переписывать свой код, если он, разумеется, ещё актуален. На язык, который пропихивает какая-то новая фирма, например, гугле. Вместе с тем, появилась новая архитектура, допустим, мобильная, со своим другим языком. Оберонщик со своим кодом просто перепишет свой компилятор Оберона на другую архитектуру. И его код будет актуален.
    Да, подобная штука случилась с Delphi и создала проблему разработчикам. Но у Delphi не было пригодных для использования аналогов. Гарантировать, что Windows + .NET + C# не загнется, конечно, не могу, но C#, как удачный язык, имеет не одну IDE (в том числе, бесплатные) и работает не для одной платформы, так что шансы напороться на фокус, аналогичный Borland'овскому, существенно ниже.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Оберонщик со своим кодом просто перепишет свой компилятор Оберона на другую архитектуру.
    На данный момент, напомню, ZXDev не компилит из Оберона в машкод. Так что "просто" не переписывается. А компиляция-через-С доступна для любого языка.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Я бы подчеркнул, что средства в духе XDev, Haxe и Monkey-X, о которых я упоминал, - это реакция программистов на множество языков, платформ и архитектур. И на их бурную, но недолгую жизнь.
    C и UNIX как бы опровергают тезис про "бурную, но недолгую жизнь" всех без исключения платформ и языков.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Философия Оберона - ничего лишнего. Если тебе это по вкусу, то это для тебя. Мне это не совсем по вкусу, я не такой большой минималист и очень болезненно воспринимаю урезанность такого диалекта как Оберон-07. Мне он кажется очень сильно минималистичным. Поэтому я взял Оберон-2 и Компонентный Паскаль за основу своего диалекта. И наращиваю его возможностями, которые мне кажутся необходимыми.
    Означает ли это, что семейство Оберон-подобных языков древовидно, при этом код на языках с "соседних" уровней несовместим?
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    В отличие от большинства коммерческих программистов-невольников.
    Ну, если ты не живешь на наследство богатого дяди, то тебе приходится зарабатывать чем-то деньги и тоже быть невольником. Меня лично разует тот факт, что мое хобби и работа находятся в одной плоскости. Может быть, я бы с радостью писал по работе на ассемблере Z80, но увы, не могу. При этом и я, и работодатель, и заказчики как правило выбирают для разработки наиболее подходящий для задачи язык, а не тот, который знает некий Вася Пупкин, принимающий решения
    Последний раз редактировалось Alex Rider; 18.10.2014 в 15:53.

  10. #279

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мне немного непонятно ради чего ты тратишь время на наш диалог. Либо "хочу лучше узнать Оберон", тогда почему бы чего-нить про него не прочитать? Либо "навожу порядок в мозгах Oleg'а N. Cher'а, которые мне кажутся вывихнутыми, но зато публика меня читает". Но да ладно, продолжаем.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Во-первых, форт не так прост и имеет другую парадигму разработки.
    Прост он, прост. Относительно. Впрочем, про Форт можешь не рассказывать, я на нём довольно много программировал в своё время. Но посыл тот же - императив и поверх уже - чего угодно другое. При ацком (и в смысле простоты тоже) синтаксисе.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Во-вторых, хреновй программист и на минималистичном Обероне-07 напишет такое, что дргой программист сломает голову при попытке понять.
    Это всё верно, но на простом Обероне-07 ему будет сделать это трудновато. Я скажу страшные для половины читающих пост вещи. Там возвращение из процедуры возможно только в конце. Из цикла выйти нельзя. То есть иначе как выполнив условие контракта - пост- или предусловие. И т.п. Но философии и подоплёки всего этого касаться, пожалуй, не будем.

    Позволь простой пример. Сишник пишет:

    Код:
    void fn() {
    int *a; a = 1234; *a = 1234; // я выстрелил себе в ногу - ура!
    }
    Это парадигма Си. И половина читающих этот пост сишников будет с умилением радоваться возможностям такого кодинга - потому что это свобода. Как на асме. На Обероне без импорта псевдомодуля SYSTEM нельзя так сделать. Недостаток? С точки зрения сишника - огромный.

    А почему Си не взлетел для веб-программирования? Наверное потому что строки в нём не так удобно обрабатывать? Да нет, ничего подобного. Потому что стиль такого кодинга, каковой показан выше, прочно вгрызся в эту парадигму. Менять ничего нельзя, исправлять-дополнять - тоже. Совместимость важна. Комом растут возможности. Есть, правда, повод откреститься от части устаревших средств с выходом нового стандарта, но и здесь есть проблемы. Мне в связи с этим нравится подход Оберон-парадигмы. Подмножество Оберон-1 - общее для Компонентного Паскаля, Активного Оберона, Oberon-X и ещё пары меньше известных диалектов. Соответственно, модуль на первом Обероне - кандидат на переносимость между диалектами. Нужны возможности - позиционируем новый диалект с полной или частичной поддержкой какого-то из существующих. Всё делается чётко под задачи. Ненужные, опасные устаревшие, возможности исчезают из языка. Про переписывание программ я знаю, но язык остаётся живым, а не покрывается плесенью, а как же.

    Так вот для веб-программирования важна безопасность. Чтобы ошибка кодера веб-сайта не завешивала намертво комп посетителя сайта. И чтобы злонамеренно не тырили его данные. Нужны ограниченные языки. Привносится виртуализация, это более или менее понятно. Как бы можно было сделать на Обероне? Очень просто - запретить приходящим из инета модулям импортировать SYSTEM, а в качестве обвязки - разрешить только безопасные средства, препятствующие вредоносной деятельности. Если нужно ограничить память под работу этого модуля - опять же, нет проблем - в ядре прописывается квота.

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

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    А что значит "массив - не адрес"? То, что он всегда в стеке живет, а не в динамической памяти?
    Неверно.

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

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

    LEN(mas)

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

    Про brainf*ck не будем, мы про языки для разработки, а не для выноса мозга.

  11. #280

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Хороший программист представляет.
    Да распрекраснейший в мире программист не представляет в какой именно момент поступит прерывание. Тебя никогда не удивляла логика работы твоего кода по мере его отладки? О, тогда ладно.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Простая технически - слоглашусь. Простая для эффективной разработки - вряд ли.
    Твоя "эффективная" разработка - она в первую очередь в той среде, в которой ты умеешь работать. Ручаюсь, я освою IDE сишарпов куда быстрее, чем ты интерфейс ETH Oberon. Оберон меня положительно удивлял, а иногда даже очень сильно. Просто я до этого на Си и Дельфи много работал. Удивлял не тем, что автодополнял в текстовый редактор окончание метода, а тем, что избавлял от таких ошибок, которые я раньше ловил, бывало, целую неделю. При всей своей непритязательности - разрыв между средствами огромный - я понимаю что Оберон - это ядро, для насаживания на него дальнейших возможностей. Ядро моего идеального императивного языка. Оно минимально конечно, но в этом и минусы, и плюсы. Я сейчас имел ввиду, скорее, не Оберон, а Компонентный Паскаль.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Но да, я соглашусь, что C# удобнее для быстрой и дешевой коммерческой разработки.
    Ну конечно. На Обероне нет такого огромного количества компонентов и исходников, такого большого сообщества и поддержки фирм. Но это не так важно для хобби. Можно кое-что сделать самому и получить эстетическое удовольствие.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Наличие дестяков .NET-языков (в том числе, и детищ Borland с о.NETчиванеим VCL) как бы опровергает этот факт.
    Да знаю я про эти языки. Однако кого ни спрошу - на C# строгает. Ничего другого не приемлют. Даже в связке с C#. А кто-то из шарпачей сказал, что C# идеально использует возможности рантайма .NET, другим языкам это вроде как не очень удаётся.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    шансы напороться на фокус, аналогичный Borland'овскому, существенно ниже.
    По моему скромному мнению Дельфи это замечательная среда разработки. При этом я имею ввиду где-то Дельфи 6-7. Туча недостатков, некроссплатформенный. Потом правда это маленько поправили в FreePascal. Но этот Титаник всё-таки слишком огромен. Я делал на нём софт для клиентов и остался удовлетворён. Быстро работается, удобно, много информации. Но переориентировать его не так было просто. Оберон (опять Компонентный Паскаль) - сильно проще. Поэтому моя ставка - на него. Но с Дельфи - масса общего, очень. Просто сильно уменьшенный язык.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    На данный момент, напомню, ZXDev не компилит из Оберона в машкод.
    Можно интимный вопрос? Тебе не всё равно каким образом получается там машкод? "Раз не натив, значит смотреть не буду" - позиция понятна, даже с сочувствием. Но я по правде говоря сильно надеялся на поддержку. А так - приходится всё делать самому. Направление ZXDev я сейчас почти и не трогаю. Может ковырну, если будет настроение. Не нужно никому. Скукота.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Так что "просто" не переписывается.
    А кто-то пробовал? И поясни, пожалуйста, смысл заниматься такой работой для получения компилятора, который делает то, что умеет SDCC, только намного хуже. К коду придирок будет столько - все в какашках утонут. Зато прямо в натив, та божежмой какое щастье!

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    А компиляция-через-С доступна для любого языка.
    Ну это как сказать.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    C и UNIX как бы опровергают тезис про "бурную, но недолгую жизнь" всех без исключения платформ и языков.
    Как бы UNIX менялся. И Си менялся. Это просто название осталось. Сам предмет же - менялся много раз. И на него делали и продолжают делать ставку, делают надмножества - Титаники. C++, Objective C. Нормально получается, многим ничего лучше и не нужно. Но я читал хорошие статьи, разговаривал с людьми, писал код и думал. Я хорошо понимаю недостатки Си. И говорю об этом не затем, чтобы сказали что я голословно обсираю Си. Нет. Си неплох. Просто на своём месте.

    UNIX просто был раньше других портабельной ОС. Впрочем, взять Linux. Что было бы если бы Торвальдса заинтересовал, например, ETH Oberon? Ничего не было бы. Торвальдс сделал ставку на юзеров в первую очередь. А даже не на программеров. ZXDev сделал ставку на ностальгирующих кодеров, 90% из которых ничего кроме асма не признаёт, а другие просто уже не кодят. Да и первые тоже. Короче говоря, делай всё сам и нам показывай. Да без короны. Иначе не так поймём. Господа, я не хочу ничего делать, делайте сами, если вам нужно.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Означает ли это, что семейство Оберон-подобных языков древовидно, при этом код на языках с "соседних" уровней несовместим?
    Да их не так и много, диалектов. Да и про совместимость мало кто думает. Ну вот зачем тебе совместимость твоего проекта с AOS если ты делаешь проект под ядро BlackBox? Она возможна, но зачем трудиться понапрасну. Есть веб-сервер O3, совместимый с GPCP и BlackBox, собирается под Windows, .NET и JVM (если бы мне пришлось разрабатывать подобный проект - я бы выбрал только Компонентный Паскаль - не знаю ничего аналогичного).

    Но вот зато ковырялся в исходниках на Амига-Обероне, парочку скомпилил в XDev без проблем. Правда, пришлось кое-что по мелочёвке поменять - & вместо AND, например. Хотя размер типов разный. Вобщем, о формальной совместимости между диалектами речи нет. Они и создавались обычно под разные нужды. И средства для биндингов в них реализованы разные. GPCP, к примеру, нужно биндить под JVM .class-ы, а XDS - под WinAPI.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Ну, если ты не живешь на наследство богатого дяди, то тебе приходится зарабатывать чем-то деньги и тоже быть невольником.
    Богатого дяди нет, не завидуй. Работаю тоже по компьютерной части, но без программинга. Можно сказать "что-то типа админ". Думаю, если бы работал программистом - не было бы духу на хобби, все мозговые ресурсы забирали бы рабочие проекты. Свойство профессии - трудно переключаться между разными проектами.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    При этом и я, и работодатель, и заказчики как правило выбирают для разработки наиболее подходящий для задачи язык, а не тот, который знает некий Вася Пупкин, принимающий решения
    Хорошо если хоть программисты выбирают, а не дядя манагер, который краем уха слышал, что M$ - это круто.

Страница 28 из 91 ПерваяПервая ... 242526272829303132 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. мощная игрушка
    от ZEman в разделе Игры
    Ответов: 128
    Последнее: 23.03.2024, 17:05
  2. Ответов: 5
    Последнее: 20.06.2011, 03:18
  3. Видеоконтроллер из пяти микросхем
    от zx-kit в разделе Изображение
    Ответов: 20
    Последнее: 31.03.2011, 14:48

Метки этой темы

Ваши права

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