Какой вариант синтаксиса предпочитаете?
От: DSblizzard Россия  
Дата: 11.12.09 07:03
Оценка:
Какой вариант синтаксиса предпочитаете:

1. Параметры функций разделены пробелами, можно использовать только префиксную нотацию, возможны почти произвольные имена функций:

+f&(1 *(-(+(2 3)) +(4 5)))
if(
  a
    b
  c
    d
  else
    e
)


2. Параметры функций разделены запятыми, можно комбинировать префиксную и инфиксную нотацию, имена функций только как в Си — знаки подчеркивания, буквы, цифры:

plus_f_ampersand(1, -(2+3)*(4+5))
if(
  a,
    b,
  c,
    d,
  else,  ; здесь запятую, в принципе, можно убрать
    e
)


Желательно оценить варианты по баллам (по любой системе оценок, главное чтобы можно было увидеть, насколько один вариант нравится больше другого)
Если кто-то может указать серьезные просчеты второго варианта или дать ссылку на его обсуждение — напишите.
Программировать сложно. Но не программировать еще сложнее.
Re: Какой вариант синтаксиса предпочитаете?
От: x-code  
Дата: 11.12.09 09:07
Оценка: 2 (1)
Здравствуйте, DSblizzard, Вы писали:

DS>Какой вариант синтаксиса предпочитаете:

DS>Желательно оценить варианты по баллам (по любой системе оценок, главное чтобы можно было увидеть, насколько один вариант нравится больше другого)
DS>Если кто-то может указать серьезные просчеты второго варианта или дать ссылку на его обсуждение — напишите.

Могу указать серьезные просчеты первого. Традиционно в качестве имен в языках программирования используются последовательности букв, цифр и символов подчеркивания, начинающиеся с буквы или символа подчеркивания. Чисто психологически при просмотре любого кода все небуквы и нецифры остальное воспринимаются как операторы, и это правильно. Зачем вводить спецсимволы в имена функций, если есть проверенная временем и общепринятая концепция построения синтаксиса, понятная 99% программистов?
Re: Какой вариант синтаксиса предпочитаете?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.12.09 09:10
Оценка:
Здравствуйте, DSblizzard, Вы писали:

DS>Какой вариант синтаксиса предпочитаете:


Что предпочитаете, дрель или ножевку?

(это толстый намек на то что не ясна задача)
Re: Какой вариант синтаксиса предпочитаете?
От: vshabanov http://vshabanov-ru.blogspot.com
Дата: 11.12.09 10:20
Оценка: 2 (1)
Здравствуйте, DSblizzard, Вы писали:

DS>Какой вариант синтаксиса предпочитаете:


DS>1. Параметры функций разделены пробелами, можно использовать только префиксную нотацию, возможны почти произвольные имена функций:


DS>
DS>+f&(1 *(-(+(2 3)) +(4 5)))
DS>if(
DS>  a
DS>    b
DS>  c
DS>    d
DS>  else
DS>    e
DS>)
DS>


Лучше нормальный лисп-синтаксис с именем ф-ии внутри скобок. А то тут похоже чтобы отличать вызов ф-ии от имени переменной всегда необходимо писать ф-ию и скобки слитно, без пробела. Ну и для человека с list background этот код выглядит жутко. Ну или tcl синтаксис возьми, нам на одну пару скобок меньше.

DS>2. Параметры функций разделены запятыми, можно комбинировать префиксную и инфиксную нотацию, имена функций только как в Си — знаки подчеркивания, буквы, цифры:


DS>
DS>plus_f_ampersand(1, -(2+3)*(4+5))
DS>if(
DS>  a,
DS>    b,
DS>  c,
DS>    d,
DS>  else,  ; здесь запятую, в принципе, можно убрать
DS>    e
DS>)
DS>


DS>Желательно оценить варианты по баллам (по любой системе оценок, главное чтобы можно было увидеть, насколько один вариант нравится больше другого)

DS>Если кто-то может указать серьезные просчеты второго варианта или дать ссылку на его обсуждение — напишите.

Та еще жуть, лучше хаскель/окемл синтаксис. Ф-ии с аргументами без лишних скобок/запятых, инфикс, специальный синтаксис для if.

Задачу не знаю, для прототипа лучше лисп-like, для людей лучше хаскель-like.
Re[2]: Какой вариант синтаксиса предпочитаете?
От: DSblizzard Россия  
Дата: 11.12.09 10:20
Оценка:
Здравствуйте, samius, Вы писали:

S>(это толстый намек на то что не ясна задача)


Возьмем тот язык, которым вы чаще всего пользуетесь и те задачи, которые вы чаще всего решаете. Представим, что вам предложили поменять его синтаксис либо на вариант 1, либо на вариант 2. Какой бы вы выбрали? Учтите, что второй вариант тоже может быть не слишком удобным для восприятия:
(a> >(b, c)) ; что эквивалентно (a > (b > c))
Программировать сложно. Но не программировать еще сложнее.
Re[3]: Какой вариант синтаксиса предпочитаете?
От: DSblizzard Россия  
Дата: 11.12.09 10:35
Оценка:
Здравствуйте, DSblizzard, Вы писали:

DS>(a> >(b, c))


Забыл добавить, есть несколько предопределенных функций (+, > и т. д.), которые совпадают по написанию с операторами и могут иметь произвольные имена.
Программировать сложно. Но не программировать еще сложнее.
Re[2]: Какой вариант синтаксиса предпочитаете?
От: DSblizzard Россия  
Дата: 11.12.09 10:44
Оценка:
Но какой из предложенных вариантов все-таки лучше? Ладно, хуже?
Кстати, во втором варианте забыл добавить запятую после первой функции
Программировать сложно. Но не программировать еще сложнее.
Re[3]: Какой вариант синтаксиса предпочитаете?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.12.09 10:45
Оценка:
Здравствуйте, DSblizzard, Вы писали:

DS>Здравствуйте, samius, Вы писали:


S>>(это толстый намек на то что не ясна задача)


DS>Возьмем тот язык, которым вы чаще всего пользуетесь и те задачи, которые вы чаще всего решаете. Представим, что вам предложили поменять его синтаксис либо на вариант 1, либо на вариант 2. Какой бы вы выбрали? Учтите, что второй вариант тоже может быть не слишком удобным для восприятия:

DS>(a> >(b, c)) ; что эквивалентно (a > (b > c))

До недавнего времени я бы вообще предпочел ничего не менять. Сейчас мне нравится синтаксис хаскелла.
По означенным пунктам:
* Смысла C-like ограничения на имена функций я не вижу. Ограничивать имеет смысл если это несет какую-то пользу (например упрощает разбор, но это хреновая причина).
* Ограничивать нотацию тоже смысла нет. Но префиксная нотация сама по себе ничего не дает. Она опять же вводится ради чего-то. Если нет цели воспользоваться преимуществами lisp-like синтаксиса, или там прикрутить карринг, то ради чего нужна префиксная нотация?
* по поводу if-ов я вообще не воткнул. Это попытка дотянуть его до паттерн матчинга? Имхо, неудачно. Первый вариант использовать в одной строке вообще нельзя. И если для выделения блоков используется табуляция, то нафига скобки?


Сейчас я больше на C#-е программирую. Но изменять его синтаксис на такое, я бы не согласился.
Re[3]: Какой вариант синтаксиса предпочитаете?
От: vshabanov http://vshabanov-ru.blogspot.com
Дата: 11.12.09 10:55
Оценка:
Здравствуйте, DSblizzard, Вы писали:

DS>Но какой из предложенных вариантов все-таки лучше? Ладно, хуже?


Наверное все-таки первый лучше, т.к. меньше писанины (запятые не надо).
Re[4]: Какой вариант синтаксиса предпочитаете?
От: DSblizzard Россия  
Дата: 11.12.09 11:38
Оценка:
Здравствуйте, samius, Вы писали:

S>* Если нет цели воспользоваться преимуществами lisp-like синтаксиса, или там прикрутить карринг, то ради чего нужна префиксная нотация?

Я еще не решил окончательно, будут у меня в языке макросы и рефлексия или нет, сейчас минимум синтаксиса служит только одной цели: чтобы не заморачиваться с ним раньше времени.

S>* по поводу if-ов я вообще не воткнул. Это попытка дотянуть его до паттерн матчинга?

Нет.

S>* Первый вариант использовать в одной строке вообще нельзя.

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

S>* И если для выделения блоков используется табуляция, то нафига скобки?

Табуляция только для упрощения восприятия. Скобки — для того, чтобы if могла быть полноценной функцией.

Спасибо за развернутый ответ.
Программировать сложно. Но не программировать еще сложнее.
Re[5]: Какой вариант синтаксиса предпочитаете?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.12.09 12:03
Оценка:
Здравствуйте, DSblizzard, Вы писали:

DS>Здравствуйте, samius, Вы писали:


S>>* Если нет цели воспользоваться преимуществами lisp-like синтаксиса, или там прикрутить карринг, то ради чего нужна префиксная нотация?

DS>Я еще не решил окончательно, будут у меня в языке макросы и рефлексия или нет, сейчас минимум синтаксиса служит только одной цели: чтобы не заморачиваться с ним раньше времени.
Как наличие рефлексии влияет на нотацию?

S>>* Первый вариант использовать в одной строке вообще нельзя.

DS>Можно. Приведите пример, где вы считаете, что нельзя. Учтите, что имена ф-й пишутся слитно с открывающей скобкой.
Вот я взял и выпрямил оригинал
if(a b c d else e)
Мне вообще не понятно, что здесь что. 'a' и 'c' — это условия а все остальное выражения? Или 'a' условие а 'b', 'c', 'd' и 'e' это некие императивные действия?
Нельзя я написал в контексте того, что читаемость этого выражения не на высоте.

S>>* И если для выделения блоков используется табуляция, то нафига скобки?

DS>Табуляция только для упрощения восприятия. Скобки — для того, чтобы if могла быть полноценной функцией.
if — функция? Будут вычисляться все аргументы до проверки условия? Или речь идет о ленивом языке?
Re[6]: Какой вариант синтаксиса предпочитаете?
От: DSblizzard Россия  
Дата: 11.12.09 13:25
Оценка:
Здравствуйте, samius, Вы писали:

S>Как наличие рефлексии влияет на нотацию?

Имеется в виду рефлексия до уровня исходного кода — либо исходников программы, либо кода, который она генерирует. Предположим, что в исходниках был написан не тот оператор, но прога удачно распарсилась (правда, в совершенно другое дерево). Чтобы исправить ошибку в языке с префиксной нотацией, достаточно указать координаты ошибки в дереве. Для того, чтобы исправить такую же ошибку в обычном языке, нужно парсить программу или ее часть заново. Пример достаточно искусственный, так что возможно, реальных преимуществ в этом плане действительно нет.

S>if — функция? Будут вычисляться все аргументы до проверки условия? Или речь идет о ленивом языке?

Да, о ленивом.
Программировать сложно. Но не программировать еще сложнее.
Re: Какой вариант синтаксиса предпочитаете?
От: blackhearted Украина  
Дата: 11.12.09 16:01
Оценка:
Здравствуйте, DSblizzard, Вы писали:

Серёга Губанов,ты ?
Re: Какой вариант синтаксиса предпочитаете?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 11.12.09 16:25
Оценка:
Здравствуйте, DSblizzard, Вы писали:

DS>Какой вариант синтаксиса предпочитаете:


DS>1. Параметры функций разделены пробелами, можно использовать только префиксную нотацию, возможны почти произвольные имена функций:

DS>2. Параметры функций разделены запятыми, можно комбинировать префиксную и инфиксную нотацию, имена функций только как в Си — знаки подчеркивания, буквы, цифры:

Второй для меня много привычнее, в первом можно глазки сломать. А зачем так странно написан if?
Re[2]: Какой вариант синтаксиса предпочитаете?
От: DSblizzard Россия  
Дата: 11.12.09 23:42
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Второй для меня много привычнее, в первом можно глазки сломать. А зачем так странно написан if?

Например, для облегчения генетического программирования — можно легко заменять функции друг на друга. Я тоже склоняюсь ко второму варианту — он допускает большую свободу по последующему изменению синтаксиса. Несмотря на гибкость Лиспа в других аспектах его нотация превращает его в синтаксическом плане в камень.

Префиксная нотация у меня сейчас "на вырост", реально я пока ее преимуществ не использовал. То ли предусмотрительность, то ли жадность, не пойму. Ленивые вычисления по умолчанию — точно была жадность. Пока обхожусь без них, если понадобятся — введу, только с помощью ключевых слов.
Кстати, с целью языка определился — он предназначен для написания интерпретаторов.
Программировать сложно. Но не программировать еще сложнее.
Re[2]: Какой вариант синтаксиса предпочитаете?
От: DSblizzard Россия  
Дата: 11.12.09 23:45
Оценка:
Здравствуйте, blackhearted, Вы писали:

B>Здравствуйте, DSblizzard, Вы писали:


B>Серёга Губанов,ты ?


Нет. А почему вы так подумали? Серьезно, интересно.
Программировать сложно. Но не программировать еще сложнее.
Re: Какой вариант синтаксиса предпочитаете?
От: FDSC Россия consp11.github.io блог
Дата: 11.12.09 23:56
Оценка:
Здравствуйте, DSblizzard, Вы писали:

DS>Какой вариант синтаксиса предпочитаете:


Уж тогда если экономить на синтаксисе, то сразу так, чтобы никому мало не показалось

addFAmp
  1
  *
    -
      + 2 3
    + 4 5

if
  a
    b
  c
    d
  else
    e


Re: Какой вариант синтаксиса предпочитаете?
От: TimurSPB Интернет  
Дата: 12.12.09 00:06
Оценка: 2 (1) +1
Здравствуйте, DSblizzard, Вы писали:

DS>Какой вариант синтаксиса предпочитаете:


DS>1. Параметры функций разделены пробелами, можно использовать только префиксную нотацию, возможны почти произвольные имена функций:


DS>
DS>+f&(1 *(-(+(2 3)) +(4 5)))
DS>if(
DS>  a
DS>    b
DS>  c
DS>    d
DS>  else
DS>    e
DS>)
DS>


DS>2. Параметры функций разделены запятыми, можно комбинировать префиксную и инфиксную нотацию, имена функций только как в Си — знаки подчеркивания, буквы, цифры:


DS>
DS>plus_f_ampersand(1, -(2+3)*(4+5))
DS>if(
DS>  a,
DS>    b,
DS>  c,
DS>    d,
DS>  else,  ; здесь запятую, в принципе, можно убрать
DS>    e
DS>)
DS>


DS>Желательно оценить варианты по баллам (по любой системе оценок, главное чтобы можно было увидеть, насколько один вариант нравится больше другого)

DS>Если кто-то может указать серьезные просчеты второго варианта или дать ссылку на его обсуждение — напишите.


А можно как нибудь так, что бы понятно было что выполниться в моем коде?
Первый вариант -500
Второй -100
а else внутри условия if что значит на языке булевой алгебры?
Make flame.politics Great Again!
Re[2]: Какой вариант синтаксиса предпочитаете?
От: FDSC Россия consp11.github.io блог
Дата: 12.12.09 00:13
Оценка:
Здравствуйте, TimurSPB, Вы писали:


TSP>а else внутри условия if что значит на языке булевой алгебры?


Мне показалось, что if здесь является switch (или case, если брать паскаль), то бишь в булевой алгебре его не выразишь
Re[3]: Какой вариант синтаксиса предпочитаете?
От: TimurSPB Интернет  
Дата: 12.12.09 00:17
Оценка: 1 (1)
Здравствуйте, FDSC, Вы писали:

FDS>Здравствуйте, TimurSPB, Вы писали:



TSP>>а else внутри условия if что значит на языке булевой алгебры?


FDS>Мне показалось, что if здесь является switch (или case, если брать паскаль), то бишь в булевой алгебре его не выразишь


Нам показалось разное, что уже настораживает
Я пытаюсь интерпретировать условие оператора if, как выражение дающее true или false
Make flame.politics Great Again!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.