Автор Тема: Oberon&INС/DEC  (Прочитано 17995 раз)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #30 : Январь 20, 2012, 09:57:18 pm »


Библиотека не катит. "module.inc(x, y)" сильно проигрывает "x += y". Должно быть в языке. Можно поспорить "насколько сильно это нужно по сравнению с ...". Конечно есть более важные свойства. Но тем не менее - такая запись имеет преимущества по сравнению с аналогами.
Зачем, если (как Алексей правильно заметил), ПО СУТИ все ее преимущество аналогично преимуществу SQR(x) над x*x - почему "должно", нафига нам 3 оператора присваивания (+= -= :=),

Потому что часто используется (по сравнению с SQR). И яснее выражает намерения (лучше воспринимается). "Увеличить X на Y" против "Присвоить X сумму X и Y".

а может еще пару ввести /=  *=   :D

Да, это подразумевалось. Ну и битовые конечно: &=, |=. Битовые даже "нужнее" арифметических.

DIzer

  • Гость
Re: Oberon&INС/DEC
« Ответ #31 : Январь 20, 2012, 10:03:03 pm »
Потому что часто используется (по сравнению с SQR). И яснее выражает намерения (лучше воспринимается). "Увеличить X на Y" против "Присвоить X сумму X и Y".
не знаю , по мне x:=2*x+x*x+F(x,10)  гораздо естественнее чем ублюдочное  x+=x+x*x+F(x,10)
« Последнее редактирование: Январь 20, 2012, 10:06:00 pm от DIzer »

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #32 : Январь 20, 2012, 11:13:32 pm »
Потому что часто используется (по сравнению с SQR). И яснее выражает намерения (лучше воспринимается). "Увеличить X на Y" против "Присвоить X сумму X и Y".
не знаю , по мне x:=2*x+x*x+F(x,10)  гораздо естественнее чем ублюдочное  x+=x+x*x+F(x,10)

Пример искуственный и ничего не показывает, кроме использования фичи "не по месту". Конечно никто (кто хочет "лучшего восприятия") не будет писать += в таком выражении.

DIzer

  • Гость
Re: Oberon&INС/DEC
« Ответ #33 : Январь 20, 2012, 11:34:58 pm »
Потому что часто используется (по сравнению с SQR). И яснее выражает намерения (лучше воспринимается). "Увеличить X на Y" против "Присвоить X сумму X и Y".
не знаю , по мне x:=2*x+x*x+F(x,10)  гораздо естественнее чем ублюдочное  x+=x+x*x+F(x,10)

Пример искуственный и ничего не показывает, кроме использования фичи "не по месту". Конечно никто (кто хочет "лучшего восприятия") не будет писать += в таком выражении.
  ;) Да ну ,  вместо бурды  ""Увеличить X на Y" против "Присвоить X сумму X и Y"." - всего лишь одно ВЫЧИСЛИТЬ ЗНАЧЕНИЕ ВЫРАЖЕНИЯ В ПРАВОЙ ЧАСТИ И ЗАПИСАТЬ ЕГО В ПЕРЕМЕННУЮ СТОЯЩУЮ В ЛЕВОЙ ЧАСТИ - вот это МОЕ НАМЕРЕНИЕ  ;D и для его реализации вполне хватает ОДНОГО оператора присваивания для всех 6 вариантов.
« Последнее редактирование: Январь 20, 2012, 11:42:53 pm от DIzer »

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #34 : Январь 21, 2012, 05:35:07 am »
Ну и бог бы с ним, а что по поводу псевдокарринга  с помощью дефолтных параметров?
Мне кажется, я не совсем понял суть предложения. Можно пример?
Запросто , допустить такую вещь
DEC(VAR a:INTEGER; b:INTEGER:=-1 )
  Пример ублюдочного карринга (каррирования)
VAR val2d,val1d:REAL;
PROCEDURE  _LEN(X:REAL;Y:REAL:=0; Z:REAL:=0  ):REAL;
BEGIN  RETURN  SQRT(x*x+y*y+z*z)  END _LEN;

BEGIN
......
val2d:=_LEN(5,6);
val1d:=_LEN(5);
.....

ну или чуть покруче
TYPE
Proc=PROCEDURE (X:REAL; Y:REAL=0; Z:REAL:=0):REAL;
Это не карринг, а опциональные параметры.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #35 : Январь 21, 2012, 07:05:33 am »
  ;) Да ну ,  вместо бурды  ""Увеличить X на Y" против "Присвоить X сумму X и Y"." - всего лишь одно ВЫЧИСЛИТЬ ЗНАЧЕНИЕ ВЫРАЖЕНИЯ В ПРАВОЙ ЧАСТИ И ЗАПИСАТЬ ЕГО В ПЕРЕМЕННУЮ СТОЯЩУЮ В ЛЕВОЙ ЧАСТИ - вот это МОЕ НАМЕРЕНИЕ  ;D и для его реализации вполне хватает ОДНОГО оператора присваивания для всех 6 вариантов.

Больше похоже на намерение процессора ;) Типа "мое дело взять отсюда, сделать это, и положить туда". А какое там было НАМЕРЕНИЕ у программиста и какое это имеет отношение к предметной области - не важно, на результат не влияет :)

DIzer

  • Гость
Re: Oberon&INС/DEC
« Ответ #36 : Январь 21, 2012, 08:52:49 am »

Это не карринг, а опциональные параметры.
точнее "параметры по умолчанию" или дефолтные.  Ну да , я и  сказал что это псевдо карринг ( более точно ублюдочный)  :D -  в данном случае введение их позволило разгрузить язык , от не совсем вписывающихся в него DEC, INC - понизив их до обычных процедур.
Но что мешает нам двигаться далее в этом направлении?
Type
 Pr=PROCEDURE(X:REAL; Y:REAL:=0; Z:REAL:=0):REAL;
Var c1,c2: Pr;
.....
c1:=_LEN(x,y,0);
c2:=_LEN(x,5,4);

DIzer

  • Гость
Re: Oberon&INС/DEC
« Ответ #37 : Январь 21, 2012, 09:01:48 am »

Больше похоже на намерение процессора ;) Типа "мое дело взять отсюда, сделать это, и положить туда". А какое там было НАМЕРЕНИЕ у программиста и какое это имеет отношение к предметной области - не важно, на результат не влияет :)
  ;) Хитрите Vlad - намерение программиста в первом приближении- либо составить  алгоритм исходя из  задачи , либо заложить его в компутер  заставив решать задачи (либо то и то)- и не фиг  ЯВУ мешать ему в этом - в любом случае, в  мою голову не влазит , каким образом Ваши ШЕСТЬ вариантов могут помочь ему в этом  ;) (в сравнении с ОДНИМ моим).
 Хотя, конечно, - что там часто случается умножение и деление на два ? - да нет проблем - введем операторы 2/=   и 2*= (для самовыражения программиста)  :)
« Последнее редактирование: Январь 21, 2012, 09:12:33 am от DIzer »

DIzer

  • Гость
Re: Oberon&INС/DEC
« Ответ #38 : Январь 21, 2012, 10:21:41 am »
да нет проблем - введем операторы 2/=   и 2*= (для самовыражения программиста)  :)
таки /2=  и *2= - представляется  более взвешенным решением  ;D  ;D  ;D , а компьютер - не имеет своего намерения и вообще не знает что такое переменная  ;D -или я несовременен ? , да, каюсь, но лет 20 назад все было именно так.... но тогда проггеров было достаточно мало, и не было у "дедков" от программирования нужды проводить отсеивания конкурентов, путем введения доп. операторов в язык и забивающей мозги болтовни.. ;D
« Последнее редактирование: Январь 21, 2012, 10:31:30 am от DIzer »

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #39 : Январь 21, 2012, 03:20:39 pm »
Больше похоже на намерение процессора ;) Типа "мое дело взять отсюда, сделать это, и положить туда". А какое там было НАМЕРЕНИЕ у программиста и какое это имеет отношение к предметной области - не важно, на результат не влияет :)
  ;) Хитрите Vlad - намерение программиста в первом приближении- либо составить  алгоритм исходя из  задачи , либо заложить его в компутер  заставив решать задачи (либо то и то)- и не фиг  ЯВУ мешать ему в этом - в любом случае, в  мою голову не влазит , каким образом Ваши ШЕСТЬ вариантов могут помочь ему в этом  ;)

Вы забыли про то, что потом программу надо будет прочесть и понять, что она делает применительно к предметной области. Причем возможно, что читать будет другой программист. Вот тут и начинается ЯВУ. И особенности синтаксиса (записи) начинают играть значение. А то да, можно было бы и на перле писать все скрипты :)

(в сравнении с ОДНИМ моим).
 Хотя, конечно, - что там часто случается умножение и деление на два ? - да нет проблем - введем операторы 2/=   и 2*= (для самовыражения программиста)  :)

Форма записи одна, использующая уже известные "значки" операций, не надо хитрить.  Операторы "2/=" не нужны: обсуждаемая форма замечательно покрывает эти частые операции:  x /= 2, x *= 2.

DIzer

  • Гость
Re: Oberon&INС/DEC
« Ответ #40 : Январь 21, 2012, 03:44:30 pm »

Вы забыли про то, что потом программу надо будет прочесть и понять, что она делает применительно к предметной области. Причем возможно, что читать будет другой программист. Вот тут и начинается ЯВУ. И особенности синтаксиса (записи) начинают играть значение. А то да, можно было бы и на перле писать все скрипты :)
 

Ну если  программист будет из лиги "любителей 6 видов присваивания" то наверное да....  :) Но вы мне так и не ответили каким образом ему поможет разбираться в  задаче членство в этом элитарном клубе  ;)

Форма записи одна, использующая уже известные "значки" операций, не надо хитрить.  Операторы "2/=" не нужны: обсуждаемая форма замечательно покрывает эти частые операции:  x /= 2, x *= 2.
Ну испортили шутку - я всего лишь попытался высмеять "наивное" фичевание языка, путем применения аргументов аналогичных вашему...
но, чувствую, с прогерами нужно быть попроще...  :)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #41 : Январь 23, 2012, 05:14:33 am »
x+=a; без ":"
Паскаль ближе к алголу, чем к сям, а значит должно быть: x +:= a, а не x += a.

+:=  -- это стандартная операция в алголе-68...
to iterate is human, to recurse, divine

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