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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #75 : Январь 13, 2012, 07:17:43 am »
Если уж дальше идти в сторону радикального улучшения синтаксиса, то следует вспомнить о значимых отступах и питоноподобном синтаксисе.
Напоминаю о сообщении Криса Окасаки о том, что студентам сильно мешают синтаксические скобки (неважно, { .. } это, begin .. end или if .. end if):
In praise of mandatory indentation for novice programmers
to iterate is human, to recurse, divine

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

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #76 : Январь 13, 2012, 07:37:51 am »
Добавлю пример с соседнего форума, автор Jordan:.....

Ж)  Вот хороший пример того , к чему приводит бездумное фичевание... помимо бегинов под нож попали и var ы- и как по - вашему бедному проггеру помечать выходные переменные? или они не планируются ж)?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #77 : Январь 13, 2012, 07:41:06 am »
Если уж дальше идти в сторону радикального улучшения синтаксиса, то следует вспомнить о значимых отступах и питоноподобном синтаксисе.
Напоминаю о сообщении Криса Окасаки о том, что студентам сильно мешают синтаксические скобки (неважно, { .. } это, begin .. end или if .. end if):
In praise of mandatory indentation for novice programmers
Поэтому я в Си пишу без них вообще.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #78 : Январь 13, 2012, 07:51:59 am »

Поэтому я в Си пишу без них вообще.
Без {}?, :) а я вот не могу -  научите?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #79 : Январь 13, 2012, 07:56:23 am »
Использую оператор ",":
Пример:
#include <stdlib.h>
#include <stdio.h>

#define MAX(a,b) ((a)>(b) ? (a) : (b))

int main()
{
    int a, b, c;
    if (3!=scanf("%d %d %d", &a, &b, &c))
        fprintf(stderr, "Triangle side length must be natural number.\n"),
        exit(1);
    int max = MAX(a, MAX(b,c));
    printf("%s\n", a*a + b*b + c*c == max*max*2 ? "Yes" : "No");
    return 0;
}
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #80 : Январь 13, 2012, 08:05:56 am »
Вот хороший пример того , к чему приводит бездумное фичевание... помимо бегинов под нож попали и var ы- и как по - вашему бедному проггеру помечать выходные переменные? или они не планируются ж)?
Max(a, b: int): int;
    Result: int;
    if a > b then Result := a else Result := b end if;
    return Result;
end Max;
Можно подробней, что не так с выходными переменными?
« Последнее редактирование: Январь 13, 2012, 08:07:39 am от Vartovyj »

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #81 : Январь 13, 2012, 08:07:07 am »
Использую оператор ",":

Для примера приведенного вами пойдет, для того, что мне нужно было на ПРАКТИКЕ - ужасно.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #82 : Январь 13, 2012, 09:14:55 am »
Если уж дальше идти в сторону радикального улучшения синтаксиса, то следует вспомнить о значимых отступах и питоноподобном синтаксисе.
Напоминаю о сообщении Криса Окасаки о том, что студентам сильно мешают синтаксические скобки (неважно, { .. } это, begin .. end или if .. end if):
In praise of mandatory indentation for novice programmers
Поэтому я в Си пишу без них вообще.
Не поэтому, а вопреки!
    if (3!=scanf("%d %d %d", &a, &b, &c))
        fprintf(stderr, "Triangle side length must be natural number.\n");
        exit(1);
Вот тут прогер поставил не запятую, а точку с запятой -- это баг? Или так и должно быть?
Скобки или значимые отступы всё расставили бы по местам, а так только плодится глюкософт!!!111
to iterate is human, to recurse, divine

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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #83 : Январь 13, 2012, 09:18:27 am »
    printf("%s\n", a*a + b*b + c*c == max*max*2 ? "Yes" : "No");
а это вообще лучше уж так переписать:
    printf(a*a + b*b + c*c == max*max*2 ? "Yes\n" : "No\n");
to iterate is human, to recurse, divine

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

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #84 : Январь 13, 2012, 10:04:39 am »

Скобки или значимые отступы всё расставили бы по местам, а так только плодится глюкософт!!!111
  :) Даже тут не все однозначно -  с год назад дал студентам задачу,  написать программу пирамидальной сортировки по Кормену -от студентов ЧЕТКО требовалось 1. Разобраться с синтаксисом алгоритмического языка (на котором Кормен и К описывают алгоритмы). 2 сделать проекцию на базовые императивные понятия, 3 Написать  написать программу на Паскале. Так  вот, лучшие не написали по одной причине - у Кормена блоки виделялись отступами(как в Питоне) , а при печати строчки поползли + шрифт использовался  с литерами различной ширины  :)

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #85 : Январь 13, 2012, 10:35:48 am »
Напоминаю о сообщении Криса Окасаки о том, что студентам сильно мешают синтаксические скобки (неважно, { .. } это, begin .. end или if .. end if):
In praise of mandatory indentation for novice programmers
Довольно странно читать подобные рассуждения, когда много месяцев работаешь с такой картинкой (сам код не мой).



Как говорил Риббентроп, я спросил себя: "А не дурак ли он?" (c)

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #86 : Январь 13, 2012, 10:38:57 am »


Можно подробней, что не так с выходными переменными?
В исходном примере - переменные передаваемые в подпрограммы были помечены служебным словом var, в "улучшенных" - нет - это не одно и тоже. Разумеется, можно без пометки  в ряде случаев обойтись - например, используя глобальные переменные, но это "рецепт" в чем- то аналогичен предложению Алексея , по замене операторных скобок.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #87 : Январь 13, 2012, 10:43:16 am »
Напоминаю о сообщении Криса Окасаки о том, что студентам сильно мешают синтаксические скобки (неважно, { .. } это, begin .. end или if .. end if):
In praise of mandatory indentation for novice programmers
Довольно странно читать подобные рассуждения, когда много месяцев работаешь с такой картинкой (сам код не мой).



Как говорил Риббентроп, я спросил себя: "А не дурак ли он?" (c)
Ну вот, у кого-то есть такие костыли, а в моих средствах разработки такого нет...
to iterate is human, to recurse, divine

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

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #88 : Январь 13, 2012, 10:53:42 am »
Ну вот, у кого-то есть такие костыли, а в моих средствах разработки такого нет...
- Вот если бы я с вами пошел...
- Ну так в чем дело? Пошли!
(с)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #89 : Январь 13, 2012, 11:05:43 am »
Гм. Что-то я не понял. Отступы что со скобочками что без скобочек никуда не деваются. То есть они есть. Скобочки еще явнее выделяют блок/конструкцию (имеем отступ+скобочки). + еще и IDE нам может нарисовать докучи всяких пометок (что смотрится уже излишним).

Думаю скобочки плохи в одном случае - когда мы имеем в коде нечто вроде такого:
                    }
                }
            }
        }
    }
}
Но такая глубокая вложенность вообще признак того, что следует что-то в консерватории править. Тем более, что отсутствие скобочек (использование только отступов) сделает код еще менее понятным (и потенциально больше ошибок будет, да) в таком случае:
                    }
                }
                foo();
            }
            bar();
        }
    }
    zoo();
}
Тут если скобочек нет, то остается уповать лишь на IDE'шные костыли.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"