Обновить
25
ApeCoder@ApeCoder

Разработчик

0,1
Рейтинг
6
Подписчики
Отправить сообщение
аналог FOR i:=a; WHILE i<=x DO INC(i, step) END;


Не является ли второй цикл тоже циклом со счетчиком — счетчик то есть? А если он есть не было бы лучше чтобы он имел смысл только внутри цикла?
Посты про Оберон ломают мем «Оберон забыт».


Я не думаю, что Оберон занимает хоть какое-то место в голове присутствующего здесь большинства. Сомневаюсь в существовании такого мема.

Любое поползновение к изменению точки зрения грозит разрушением картины мира.


Я вот пока не вижу какой-то особой мирровозренческой ценности в Обероне. По крайней мере, описанной в ваших постах. Гораздо необычнее монады в Haskell или «все есть объект» в Smalltalk, или минималистичный подход LISP.

Я про это говорю совершенно серьёзно, потому что мои посты про то, что даёт оберон-подход, встречают обструкцию вида «оберон не лучше того, к чему мы привыкли, вы всё врёте».


А где, собственно, посты про то, что дает Оберон — подход? Я пока вижу только общие слова (прошерстил по тегу «Оберон»). Где пост проиллюстрированный примерами кода на Обероне?

Приведите пример позитивного поста про Оберон (не путать с негативными постами про другие языки в ставнении с Обероном), который вызвал такую реацию?

Есть ли какое-то объяснение тому, что именно посты про оберон собирают негатив (вы выше привели пост про Смолток, в обсуждении которого упоминался Оберон, и дискуссия была в довольно приличной манере, хотя стороны друг друга явно не понимали).
Например, если вы уже написали стройно труктурированную статью «почему мне нравится Оберон» можно дать на нее ссылку.

Или можно просто игнорировать сообщения, которые вам кажется глупыми.

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

with( var f = openFile())
{
    f.Write("foo");
}


То есть поддерживается контроль за закрытием файла — невозможно забыть его закрыть и невозможно его использовать после закрытия.

Как в Обероне с этим?

Можно было бы не использовать спецконструкцию а просто сделать библиотечный метод:
openFile().With(f => f.Write("foo"));

Я не настолько умный, чтобы знать это понятие. Не затруднит ли вас пояснить свою точку зрения на остальные вопросы и языки (например можно мысленно вычистить brainfuck из коммента и ответить на него).
Надёжность языка обеспечивается компактностью (не примитивностью!) синтаксиса


Нет ли языков с более компактным синтаксисом? (LISP, Smalltalk, Brainfuck)

Если какую-то синтаксическую конструкцию где-то можно реализовать как функцию, меняет ли это принипиально дело?

Почему «вытребенька» foreach ненадежна вот так:
foreach(var customer in customers){
    Console.WriteLine(customer.Name);
}


Но надежна вот так:
customers.ForEach( customer => Console.WriteLine(customer.Name))


Почему дублирование кода надежнее чем использование готовых конструкций?
Мне кажется, это проекция :). Я просто изложил свое видение вопроса. Мне было бы интересно если бы вы со мной аргументированно не согласились, но вы не привели ни одного аргумента. Как жаль.

Может напишете позитивную статью про Оберон?
Далее следует объявление переменной, которое совмещено с инициализацией и размещено прямо в коде. Ну а как еще, не делать же отдельную секцию переменных, как в восьмидесятых. Тогда угрюмые колхозники писали все переменные в строго выделенном месте, чтобы потом их в этом месте найти. Вот так ограничивали свободу выражения творческих личностей. Принуждали к порядку. Хорошо, что мы избавились от этого пережитка.


С моей точки зрения переменная, это второстепенная деталь реализации и очень хорошо, когда ее пишут по месту первого использования.
— сразу понятно где и зачем она нужна
— этот кусок кода легко выделить в отдельный метод, если надо (не надо одновременно копировать из двух мест)
— не надо куда-то перемещаться смотреть ее объявление (а может Оберон надо ввести подобие дублирования имени метода после END — при каждом использовании переменной введсти обязательное дублирование ее описания?)
— нельзя случайно ее использовать (например присвоить туда значение) до той строки, где она объявлена — если она имеет смысл в цикле, то и область видимости будет в цикле

Оберон действительно производит впечатление языка, где порядок ради порядка. Еще можно потребовать идентификаторы упорядочивать по алфавиту…

Семантическии скобочки ничем не отличаются от begin и end. Это исключительно представление границ блока.
Мне нравится чтобы все элементы программы были «осязаемы».


Привыкните так привыкните по другому потом сравните. Вон автор статьи привык повторять название процедуры после каждого END
Я думаю, если есть итератор, его можно употребить неправильно. Foreach его вообще скрывает. То есть мы абстрагируемся от способа перебора элементов. Нам не надо постоянно копировать один и тот же по сути while
Да даже без этого они, как правило, нормально выделены отсутпами. Мне чаще приходится смотреть парные круглые скобки, если выражение не очень простое.
Если с отступами все нормально и метод умещается на экран, то никакой проблемы нет. В питоне и F# вот вообще никаких фигурных скобочек
что такое «охрана цикла»? Что за язык, в котором у foreach есть break и continue, а у while нет?

Напишите как вы видите аналог этого кода:

C#
foreach (var client in Clients.Where(x =>  x.Balance > 100))
{
    Console.WriteLine(string.Format("Client: {0} Balance: {1} ", client.FullName, client.Balance);
}


Powershell

clients | where Balance -gt 100 | foreach { "Client: $($_.FullName) Balance:$($_.Balance)" }


F#
clients |> seq.filter (fun x ->  x.Balance > 100) |> Seq.iter (fun x -> sprintf "%A %A" x.FullName x.Balance}
Как его иметь ввиду? Это просто частный случай while. В случае while который совпадает с этим частным случаем нам надо его внимательно прочитать и убедиться что он подходит под паттерн, а в случае foreach этот паттерн явно назван.
Пишу от 0 до нескольких раз.

Читаю почаще.

Читаю код с while и сожалею, что нет foreach в этом языке — еще чаще.
Моя точка зрения, заключается в том, что если возникла необходимость в такой фиче, значит пора рефакторить
Сайт хреновый — по нему совершенно не понятно, для кого они это сделали и в чем достоинства именно их FW. Нет примеров кода. Сравните, например, websharper.com
Если написать интерпретатор php на обероне и написать CMS на php то результат будет менее надежный, чем если написать CMS на обероне так как мы принимаем допущение, что программы Обероне более надежные чем на PHP

Информация

В рейтинге
4 813-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность