Автор Тема: Модифицированный синтаксис Оберона  (Прочитано 177428 раз)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #240 : Ноябрь 28, 2012, 04:58:36 pm »
Сделайте уже питоноподобный синтаксис и не парьтесь всякими /while и end if
Тогда уж сразу хаскелеподобный :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #241 : Ноябрь 28, 2012, 05:04:05 pm »
module ProgramPattern:
    import Texts, Oberon

    var w: Texts.Writer

    def copy(r: Texts.Reader):
        var ch: char
        Texts.Read(r, ch)
        while ~r.eot:
            Texts.Write(w, ch)
            Texts.Read(r, ch)

    def SomeCommand*:
        var r: Texts.Reader
        Texts.OpenReader(r, Oberon.This.text, Oberon.Par.pos)
        copy(r, w)
        Texts.Append(Oberon.Log, w.buf)

    Texts.OpenWriter(w)
о! Красота!
« Последнее редактирование: Ноябрь 28, 2012, 05:05:57 pm от Geniepro »
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #242 : Ноябрь 28, 2012, 05:23:51 pm »
о! Красота!

Угу. Самый человечный синтаксис. Не устаю повторять :)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #243 : Ноябрь 28, 2012, 05:26:44 pm »
о! Красота!

Угу. Самый человечный синтаксис. Не устаю повторять :)

А нифига. У хаскелля лучше. По крайней мере там нет этих мусорных def'ов и var'ов.

Это ж надо додуматься вместо "int a" писать "var a:int"
Y = λf.(λx.f (x x)) (λx.f (x x))

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #244 : Ноябрь 28, 2012, 05:36:50 pm »
Ну, косая черта вообще зло - зело не читабельно, да и как бы деление тоже косая черта.
Тогда уж END WHILE писать и там END ЧТО-ТО-ТАМ. Как это в той же Аде бывает.
Косая черта взята из xml'я. Впринципе, наподобии ады и получается, только вместо END - /

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #245 : Ноябрь 28, 2012, 05:38:34 pm »
о! Красота!
Только убираем var и def.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #246 : Ноябрь 28, 2012, 05:44:37 pm »
о! Красота!
Только убираем var и def.

Угу. И неплохо бы еще функции показать а не только голимые процедуры (и, боюсь, после этого окажется, что объявления в стиле Си будут более экономичны и лаконичны).
Y = λf.(λx.f (x x)) (λx.f (x x))

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #247 : Ноябрь 28, 2012, 06:59:14 pm »
Конструкцию с end можно оставить там, где сейчас: end name.

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #248 : Ноябрь 29, 2012, 12:17:32 am »
Сделайте уже питоноподобный синтаксис и не парьтесь всякими /while и end if
Тогда уж сразу хаскелеподобный :-)
давайте тогда уж Лисп подобный- такое же г. но хоть парится не надо с запоминанием г. на.. только считай себе скобки..

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #249 : Ноябрь 29, 2012, 07:22:33 am »
Сделайте уже питоноподобный синтаксис и не парьтесь всякими /while и end if
Тогда уж сразу хаскелеподобный :-)
давайте тогда уж Лисп подобный- такое же г. но хоть парится не надо с запоминанием г. на.. только считай себе скобки..
Вопрос - в каком месте СИНТАКСИСА хаскелля нужно что-то запоминать?
Y = λf.(λx.f (x x)) (λx.f (x x))

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #250 : Ноябрь 29, 2012, 07:46:35 am »
Мне синтаксис питона, кажется незаконченным. При if then end код более строгий. Глаз цепляется за end. Мне удобнее воспринимать блочно.

После синтаксиса паскаля, синтаксис оберуна прекрасен.

Вопрос намного глубже. Удобнее или полезнее. К примеру сесть в кресло и положить ноги на стол, и клавиатуру на живот, удобнее, но не полезно.

Или всё дело в привычке, в си, с++, паскаль, джава и т.д строгий блок кода.

Что бы я добавил.
1. условие в одну строку

if (c >= "a") and (c <= "z") or (c >= "A") and (c <= "z") then
код
else

Убрать точку с запятой
неправильно
x := (a +b)*c; y := m + d;

правильно
x := (a +b)*c
y := m + d

Всё это лишь моё личное мнение, не подкрепленное десятками проектов, и тысячами строк кода.
Я уверен в том, что синтаксис языка нужно не придумывать, а разрабатывать.

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #251 : Ноябрь 29, 2012, 08:17:43 am »
С точками с запятой действительно нужно что-то делать, в обероне да и в С их явная избыточность.

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #252 : Ноябрь 29, 2012, 08:59:35 am »
Взято отсюда http://habrahabr.ru/post/152889/

Цитировать
Определение функций


Вы можете определять функции следующим образом:

На C:
int f(int x, int y) {
    return x*x + y*y;
}


На Javascript:
function f(x,y) {
    return x*x + y*y;
}


На Python:
def f(x,y):
    return x*x + y*y


На Ruby:
def f(x,y)
    x*x + y*y
end


На Scheme:
(define (f x y)
    (+ (* x x) (* y y)))


И наконец, Haskell:

f x y = x*x + y*y


Очень четко. Ни скобок, ни def-ов.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #253 : Ноябрь 29, 2012, 10:15:29 am »
Взято отсюда http://habrahabr.ru/post/152889/

Цитировать
Определение функций


Вы можете определять функции следующим образом:

На C:
int f(int x, int y) {
    return x*x + y*y;
}


На Javascript:
function f(x,y) {
    return x*x + y*y;
}


На Python:
def f(x,y):
    return x*x + y*y


На Ruby:
def f(x,y)
    x*x + y*y
end


На Scheme:
(define (f x y)
    (+ (* x x) (* y y)))


И наконец, Haskell:

f x y = x*x + y*y


Очень четко. Ни скобок, ни def-ов.
Ну таки да. Особенно если учесть, что однобуквенные названия функций пишут только те, кто сам себе злобный буратино. Вообще, если смотреть конкретно на СИНТАКСИС haskell'a то объявление функции будет такое:
foo :: Integer Integer -> Integer
foo a b = a*a + b*b
Это проще читать и редактировать чем сишный вариант. Другие варианты вообще в пролете - просто потому что там используется динамическая типизация (то есть в синтаксисе нет вообще ничего про типы). (замечу, что и в хаскельном изначальном варианте типиазция также строгая статическая, в отличае от того же питона например).
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #254 : Ноябрь 29, 2012, 10:16:44 am »
Сделайте уже питоноподобный синтаксис и не парьтесь всякими /while и end if
Тогда уж сразу хаскелеподобный :-)
давайте тогда уж Лисп подобный- такое же г. но хоть парится не надо с запоминанием г. на.. только считай себе скобки..
Вопрос - в каком месте СИНТАКСИСА хаскелля нужно что-то запоминать?
Ответ - в любом, хоть Хаскеля, хоть Оберона.. в Лиспе для бедных (Схеме) - всего пара основных форм да штук 5 специальных (разумеется для минимального ЯВУ), которые записываются единообразно