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

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Oberon&INС/DEC
« : Январь 19, 2012, 10:43:50 pm »
Помнится кто-то говорил, что в Обероне INC/DEC были введены, ибо они отражают напрямую асмовые команды увеличения на единицу и уменьшения. То есть когда компилятор видит это, он не думает, а просто генерит напрямую соответствующий код. По сути это практически получаются прямые асмовые вставки.

Теперь предположим, что мы затачиваем Оберон, создавая его диалект, под собственную железку. В железке INC и x:=x+1 и даже x:=a+b - один фиг. То есть там нет выделенной команды для инкремента и/или декремента.

Теперь вопрос - нужно ли нам в этом самом диалекте в обязательном порядке оставить эти самые INC/DEC? Ведь они будут только смущать программиста, он будет думать, что это оптимальней. А это не так. И вообще это плодит сущности и делает язык толще.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #1 : Январь 20, 2012, 04:42:42 am »
Не надо.
Я сильно помог?  :)

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #2 : Январь 20, 2012, 07:58:45 am »
Более того, в реализации  XDS оператор x := x + a не всегда можно тупо заменить на INC(x, a). Не смотря на то, что эти два случая отличаются только формой записи, во втором случае компилятор начинает материться на несовместимость типов, а первый случай с теми же самыми аргументами проглатывает не поморщившись.  :)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #3 : Январь 20, 2012, 08:57:32 am »
Ага. Значит INC/DEC в топку.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #4 : Январь 20, 2012, 10:40:34 am »
ну, теоретически, inc/dec более прямо демонстрируют намерение программиста, да и меньше шансов сделать ашыпку типа x := y + a; вместо x := x + a; если программер хотел сделать inc(x, a);
to iterate is human, to recurse, divine

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

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #5 : Январь 20, 2012, 11:57:25 am »
ну, теоретически, inc/dec более прямо демонстрируют намерение программиста, да и меньше шансов сделать ашыпку типа x := y + a; вместо x := x + a; если программер хотел сделать inc(x, a);
INC(x,a) синтаксически гадость - не понятно кто тут вход а кто выход (и есть ли выход вообще). Легко перепутается с INC(a,x) (при условии что и a и x это переменная а не литерал).
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #6 : Январь 20, 2012, 11:59:38 am »
Поясню - INC(a) - тут однозначно что и с кем, ибо альтернативы вообще говоря нет. INC(a,b) - не понятно, ибо варианта два.

Ну и тем более INC(что-то-там) плох тем, что это не процедура по сути, а statement замаскированный под вызов процедуры.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #7 : Январь 20, 2012, 01:24:11 pm »
Более того, в реализации  XDS ...
Ага. Значит INC/DEC в топку.
Только нужно ещё иметь в виду, что в данном случае и реализация может быть не совсем удачная. Хотя, защищать INC/DEC я не берусь.

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #8 : Январь 20, 2012, 02:47:07 pm »
Мне нравятся Си-подобные конструкции, которые, имхо, очень даже подойдут Оберону:
x:=x+1    |    x++
x:=x+a    |    x+=a

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #9 : Январь 20, 2012, 03:47:19 pm »
Мне нравятся Си-подобные конструкции, которые, имхо, очень даже подойдут Оберону:
x:=x+1    |    x++
x:=x+a    |    x+=a
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Oberon&INС/DEC
« Ответ #10 : Январь 20, 2012, 05:13:26 pm »
Поясню - INC(a) - тут однозначно что и с кем, ибо альтернативы вообще говоря нет. INC(a,b) - не понятно, ибо варианта два.

Ну и тем более INC(что-то-там) плох тем, что это не процедура по сути, а statement замаскированный под вызов процедуры.
На мой взгляд, эта  процедура себя оправдывает только в том случае когда по второму параметру передается ЗНАЧЕНИЕ сложного выражения.По - факту, новички обычно не ошибаются с вызовами этой процедуры  (те кто ее использует).

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #11 : Январь 20, 2012, 05:19:51 pm »

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #12 : Январь 20, 2012, 05:28:00 pm »
x+=a; без ":"
Ну это ж полсинтаксиса переделывать :-) тогда и обычное присваивание будет =, а если так, то сравнение будет уже что-то другое. ==? но это как-то по уродски смотрится (несмотря на то что привык). А если инкремент сделать через +=, а просто присваивание через :=, то это ж неконсистентность синтаксиса выходит. То есть опять таки не красиво.

Поэтому делаем просто - выкидываем инкремент вообще нафиг. Ибо нинужен. :-)

PS. Если что - посмотрите на первое сообщение топика, там ясно, что я смотрю не в сторону совсем уж general purpose языка для жирного десктопного железа, меня сейчас больше мелкоконтроллеры заботят, а там взаимнооднозначность важна. И если чел видит x:=x+1 в одном месте, а в другом INC(x), то это действительно, РЕАЛЬНО должен быть разный код, а не потому, что левой пятке зачесалось. Байты имеют значение.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Oberon&INС/DEC
« Ответ #13 : Январь 20, 2012, 05:38:50 pm »
И если чел видит x:=x+1 в одном месте, а в другом INC(x), то это действительно, РЕАЛЬНО должен быть разный код, а не потому, что левой пятке зачесалось. Байты имеют значение.
А это еще с какого перепугу  - все таки Оберон ЯВУ, а то про что вы пишите даже СИ не гарантирует. :(

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Oberon&INС/DEC
« Ответ #14 : Январь 20, 2012, 05:42:49 pm »
И если чел видит x:=x+1 в одном месте, а в другом INC(x), то это действительно, РЕАЛЬНО должен быть разный код, а не потому, что левой пятке зачесалось. Байты имеют значение.
А это еще с какого перепугу  - все таки Оберон ЯВУ, а то про что вы пишите даже СИ не гарантирует. :(
В этом самом ЯВУ INC является рудиментом ЯНУ, да еще и не актуальной железяки. В сях, кстати, аналогично. А вот в С++ уже нет.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"