Re[11]: Про синтаксис
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.06.12 14:28
Оценка:
Здравствуйте, grosborn, Вы писали:

G>Я ни разу не видел что бы ты как-то обосновывал свое мнение по синтаксису. Все обсуждения что я читал, синтаксис вы обсуждаете на уровне нравится/не нравится. И даже где-то открыто было — вкусовщина. И вэтой ветке так же.

G>Особенно меня задевает отступной синтаксис. Как можно не понимать, что это абсолютно неприемлемо для любого языка, который использует человек?

Что не приемлемо?

G>Мы же не для дроидов языки создаем, <скипнуто сумбурное философское обоснование>

G>Нужно иметь четкие критерии позволяющие обоснованно подходить к формированию синтаксиса. Нужно понимать, что в процессе работы с этим синтаксисом, часть (текст программы -> программа) это мизерная часть. Основная задача синтаксиса, это не "оптимальное выражение инструкций препроцессору и компилятору". Основная задача синтаксиса, это документирование этих инструкций. Процесс работы с текстом программы, это многократное перечитывание и переписывание. Сокращая синтаксис, мы вроде бы как сокращаем затраты на переписывание, а поскольку это система, сокращая синтаксис и усложняя перечитывание (неинтуитивные соглашения) и понимание(не поддерживая структуру), мы увеличиваем объем переписывания.

Я не знаю что там было поскипано, но вся эта сентенция выражает одну мысль сказанную дальше явно:

G>Синтаксис — для человека, не для компилятора.


С чем я не могу не согласиться, за маленькой поправкой. В основном для человека, а не для компьютера. Компьютеру код тоже надо читать и кое какие требования это налагает. Но действительно язык в первую очередь должен быть понятен и удобен для человека.

Теперь, определившись с тем для кого нужен язык, можно сделать вывод является ли синтаксис вещью объективной или субъективной. Раз оценивают его люди (субъекты), значит оценка эта сугубо субъективная. Одному нравятся отступы, другом скобки, третьему begin/end и т.п.

G>Синтаксис должен отвечать целям документировани и понимания. Соглашения должны быть систематичны.


Давай ты нам объяснишь что же это за загадочные цели документирования и понимания. А?

А то я, грешным делом, привык к тому, что основным свойством языка является выразительность. Ну, традиционность еще можно вспомнить.

G>Страуструп буде гореть в аду вечно.


Может и будет. Пока он жив и здравствует. А его творение является одним из популярных языков.

Кстати, причем тут Страуструп? Не он же скобки придумал использовать.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Про синтаксис
От: grosborn  
Дата: 12.06.12 15:28
Оценка:
> G>Особенно меня задевает отступной синтаксис. Как можно не понимать, что это абсолютно неприемлемо для любого языка, который использует человек?
>
> Что не приемлемо?

Синтаксис на отступах. Отступы, традиционно это форматирование. А тут предлагается для традиционной и широко используемой вещи другое использование. Случайно поставили лишний пробел и получили неожидаемое поведение. Это вам не непарную скобочку искать, это покруче.

> Я не знаю что там было поскипано, но вся эта сентенция выражает одну мысль сказанную дальше явно:

>
> G>Синтаксис — для человека, не для компилятора.
>
> С чем я не могу не согласиться, за маленькой поправкой. В основном для человека, а не для компьютера. Компьютеру код тоже надо читать и кое какие требования это налагает. Но действительно язык в первую очередь должен быть понятен и удобен для человека.
>
> Теперь, определившись с тем для кого нужен язык, можно сделать вывод является ли синтаксис вещью объективной или субъективной. Раз оценивают его люди (субъекты), значит оценка эта сугубо субъективная. Одному нравятся отступы, другом скобки, третьему begin/end и т.п.

Не субъективная. Статистически объективная. Субъективные требования конечно учитывать нужно. Думаю комплексно нужно подходить.

> G>Синтаксис должен отвечать целям документировани и понимания. Соглашения должны быть систематичны.

>
> Давай ты нам объяснишь что же это за загадочные цели документирования и понимания. А?
>
> А то я, грешным делом, привык к тому, что основным свойством языка является выразительность. Ну, традиционность еще можно вспомнить.

Что объективно есть выразительность?
Ну с традиционностью сразу понятно, это форма систематичности. Повторяя устоявшиеся шаблоны мы придерживаемся определенной системы позволяющей облегчить переучивание, запоминать больше сходных вещей, мыслить по аналогии.
Более выразительная форма это более компактная форма записи или более понятная или нечто большее?
Как тут был пример самого выразительного языка — код программы "Hello, world!" это . (точка)
Это выразительность? Вот не думаю.
Давай объективно это попытаемся разобрать.

Кстати о Begin End. Со стороны может показаться, что паскалистам нравятся сами Begin End. Это не так. Сила языка паскакаля была не в этом и можно было бы заменить begin end на {} и это не встретило бы принципиальных возражений, не привело бы к каким-то изменениям. И где-то даже меняли. Паскаль на сколько я помню первый распространенный язык с четким подходом к структурированию кода, к его удобочитаемости. И был отличен практически только этим. В остальном это был язык с такими же как у фортрана и даже меньшими за счет малого количества библиотек возможностями. (С форматированием у него на первых порах тоже разногласия были.) И это основное отличие паскаля реализовано в C# только Begin End скобочками заменили.
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[13]: Про синтаксис
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.06.12 21:00
Оценка:
Здравствуйте, grosborn, Вы писали:

G>Синтаксис на отступах. Отступы, традиционно это форматирование. А тут предлагается для традиционной и широко используемой вещи другое использование. Случайно поставили лишний пробел и получили неожидаемое поведение. Это вам не непарную скобочку искать, это покруче.


Хотя твои аргументы — это не более чем домыслы, но хочется задать тебе вопрос. Что ты со мной тогда споришь то? Я как раз считаю, что скобки привычны и удобны.

G>Не субъективная. Статистически объективная. Субъективные требования конечно учитывать нужно. Думаю комплексно нужно подходить.


А, гулять так гулять! Озвучь как нам объективные "требования" к синтаксису.

G>Что объективно есть выразительность?


Выразительность вещь сугубо субъективная. То что одному кажется выразительным, другой даже понять не в силах. Тут работает исключительно предпочтение масс. Это единственный объективный критерий при выборе синтаксиса.

G>Ну с традиционностью сразу понятно, это форма систематичности.


Что за система?

Традиционность — это хождение на поводу людских привычек. Вот привык народ к фигурным скбокам и к круглым скобкам при вызове функции и это стало традицией. Никакой системы в этом нет. Вместо фигурных скобок могли быть использованы квадратные или круглые. Да и их вообще могло не быть. Это все стечение обстоятельств. Не более того.

G>Повторяя устоявшиеся шаблоны мы придерживаемся определенной системы позволяющей облегчить переучивание, запоминать больше сходных вещей, мыслить по аналогии.


Причем тут мышление по аналогии я не знаю. Но так, придерживаясь традиций облегчаешь людям обучение. Это бесспорно. Это и есть вся системность в твоем понимании?

G>Более выразительная форма это более компактная форма записи или более понятная или нечто большее?


Не обязательно компактная. Но, скажем, код распознавания с применением паттерн-матчинга более выразителен и более компактен чем тот же код написанный в ОО-манере.
Так что компактность несомненно важна, но не за счет сжатии записи одного и того же, а за счет поднятия уровня описания.

В прочем поднятие выразительности может приводить к плохой читаемости. Отличный пример — регулярные выражения. Они компакты и выразительны, но крайне трудно читаются из-за отсутствия декомпозиции и слияния грамматических символов и паттернов. PEG / EBNF менее компактны, но долее выразительны (поддерживают рекурсию и декомпозицию).

G>Как тут был пример самого выразительного языка — код программы "Hello, world!" это . (точка)


Ну, да. Для решения этой задачи — это очень выразительный язык. Жаль, что он бесполезен для других задач.

G>Это выразительность? Вот не думаю.


Это спекуляция на выразительности. Мы ведь говорим об языках общего назначения, а это пример бессмысленного специализированного языка.

G>Давай объективно это попытаемся разобрать.


Объективно тут можно только выявлять алогичные рассуждения.

G>Кстати о Begin End. Со стороны может показаться, что паскалистам нравятся сами Begin End. Это не так. Сила языка паскакаля была не в этом и можно было бы заменить begin end на {} и это не встретило бы принципиальных возражений, не привело бы к каким-то изменениям.


Привело бы. Это предпочтения, а именно они является яблоком раздора. Другое дело, что это не единственное и не главное отличие Си и Паскаля и тем более Дельфи и С++.

G>И где-то даже меняли. Паскаль на сколько я помню первый распространенный язык с четким подходом к структурированию кода, к его удобочитаемости.


Вообще-то он был наследником Алгола. А распространенным Паскаль стал сильно позже. Да и появился он не так давно — в 1970 (параллельно с С).

G> И был отличен практически только этим.


От чего? Все языки эволюционировали к структурным. А в начале 70-ых появилась целая куча очень структурированных языков (например, C и ML). А один из очень структурных языков — Лисп — появился на 12 лет раньше Паскаля.

Так что это просто стереотип засевший в твоем мозгу, видимо из-за того, что тебе в начале обучения давали именно Паскаль.

G> (С форматированием у него на первых порах тоже разногласия были.) И это основное отличие паскаля реализовано в C# только Begin End скобочками заменили.


В общем, ясно. Ты начал программировать с Дельфи, вот тебе весь мир его клонами и кажется. Собственно это и есть подтверждение моих слов — привычки и стереотипы — это то что управляет людьми. Все суждения о языках и их синтаксисе сугубо субъективны. А субъективные суждения не систематизируешь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Про синтаксис
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 13.06.12 00:03
Оценка:
G>Синтаксис на отступах. Отступы, традиционно это форматирование. А тут предлагается для традиционной и широко используемой вещи другое использование. Случайно поставили лишний пробел и получили неожидаемое поведение. Это вам не непарную скобочку искать, это покруче.

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

зы
Если подводить научную базу, то восприятие человека можно представить в виде способности воспринять (прочитать, перенести в кратковременную память, обработать, воспроизвести) цепочку символов из алфавита A длины L. Понятие "символ" в данном случае рассматривается в широком смысле, например, взрослый человек отдельные слова или устойчивые обороты воспринимает как один символ.
L у реального человека ограничен десятком-парой десятков символов в зависимости от задачи. Размер алфавита ограничен десятками тысяч на восприятие, и в районе полусотни на вывод.
Размер передаваемой информации одной цепочкой символов составляет L * Log2 Len A.
Чтобы повысить скорость восприятия человеком информации, требуется понижать L и повышать A. Выкидывание скобок и замена их на отступы как раз этому способствует: длина программы уменьшается, а алфавит расширяется за счет использования формы отступов и цвета символов. При этом алфавит вывода (ввода в компьютер) остается тем же самым в размере стандартного набора символов.
Re[13]: Про синтаксис
От: AlexCab LinkedIn
Дата: 13.06.12 06:57
Оценка: +1
Здравствуйте, grosborn, Вы писали:
G>Синтаксис на отступах. Отступы, традиционно это форматирование. А тут предлагается для традиционной и широко используемой вещи другое использование. Случайно поставили лишний пробел и получили неожидаемое поведение. Это вам не непарную скобочку искать, это покруче.
Попробуй ради спортивного интереса добиться "неожиданного поведения" в Python'е, одним пробелом (используя традиционные отступы).
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[14]: Про синтаксис
От: grosborn  
Дата: 13.06.12 08:21
Оценка:
<с остальной частью согласен>

> Чтобы повысить скорость восприятия человеком информации, требуется понижать L и повышать A.

> Выкидывание скобок и замена их на отступы как раз этому способствует: длина программы уменьшается, а алфавит расширяется за счет использования формы отступов и цвета символов. При этом алфавит вывода (ввода в компьютер) остается тем же самым в размере стандартного набора символов.

Неверно. Мерой информации конечно является не длина двоичного представления. И человек не компьютер у него не идеальный ввод. Не учтен реальный механизм восприятия. Требуется увеличивать скорость восприятия и понимания, а не скорость чтения текста.
Краткое не обязательно быстрее и лучше воспринимаемое, да и не обязательно скорочитаемое. Сравни формы:
9996666544443333890006766666633333221226666766777777
999 6666 5
4444 3333 8 9 000 6 7 666666 33333 22 1 22 6666 7 66 777777

Скобки это поддержка понимания структуры кода программы. Разницу отступа в 10 или 11 пробелов я не замечу, выделить взглядом многострочную структурную единицу без скобок я не смогу, а выделение цветом это то же самое — замена символического выделения структурной единицы цветовой. На небольших модулях это может показаться нормальным. Но для больших текстов это сверло в голову. Проведи эксперимент, попробуй поработать в большом проекте с цветовым выделением. Это быстро надоедает, цвета должно быть в меру, в основном фон должен быть равномерным, эргономичным.
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[14]: Про синтаксис
От: grosborn  
Дата: 13.06.12 08:21
Оценка:
> G>Синтаксис на отступах. Отступы, традиционно это форматирование. А тут предлагается для традиционной и широко используемой вещи другое использование. Случайно поставили лишний пробел и получили неожидаемое поведение. Это вам не непарную скобочку искать, это покруче.
>
> Хотя твои аргументы — это не более чем домыслы, но хочется задать тебе вопрос. Что ты со мной тогда споришь то? Я как раз считаю, что скобки привычны и удобны.

Я не спорю. Я указываю на пример, когда не имея четких критериев ты принимаешь возможность использования синтаксиса на отступах.

> G>Не субъективная. Статистически объективная. Субъективные требования конечно учитывать нужно. Думаю комплексно нужно подходить.

>
> А, гулять так гулять! Озвучь как нам объективные "требования" к синтаксису.

Ну во первых, разделяем объективные требования (критериии) и объективное обоснование и использование этих критериев. Сами критерии могут быть объективными и субъективными. Формировать их и использовать желательно на объективной основе. Извини за это жонглирование словами.
Во вторых, у меня пока нет ни того, ни другого. Их нужно выработать. У меня есть только общие соображения, которые могли бы вам в чем-то помочь.
В третьих, выработать их нужно вам, людям которые обладают более высокой квалификацией в предметной области, заинтересованным и вовлеченным. Сообществу Немерле в том числе. (это всего-лишь соображение).
В четвертых, а они может быть даже и есть от бородатых профессоров, нужно поискать хорошенько.

Я — всего-лишь праздно шатающаяся тут публика. Увы, не вовлечен и не заинтересован. А вам бы это было полезно.

Правда могу предварительно постулировать парочку-другую самых простых критериев.

Критерий Традиционность, прецедентность.
Предпочтение имеют синтаксические конструкции имеющие полные или частичные аналоги в других языках, или использующие известный принцип.
Заимствование не должно противоречить своим аналогам препятствуя пониманию и запоминанию.

Функциональные
Предпочтительны синтаксические конструкции поддерживающие комментирование.
Предпочтительны синтаксические конструкции легко читаемые и поддерживающие более легкое запоминание связанных с ними соглашений.
Предпочтительны синтаксические конструкции кратко записываемые.

Систематичность. (вообще этот критерий достаточно субъективен, по нему нужно спорить и его нужно формулировать)
Предпочтительны синтаксические конструкции построенные по известному, или по тому же принципу, что уже используется в языке. Например, следующие в какой-то системе, по какому-то известному алфавиту, фрактальные.
Пример: {} — фрактальный паттерн. Если сравнивать две конструкции, где скобочки используются для одних и тех же целей, то {{}} предпочтительна по отношению к {[]} или к { }
Конструкции вида add, remove — систематичны, поскольку используются конструкции английского языка. И если возникнет ситуация сравнения addi против add, по этому критерию add более предпочтительна.
Конструкции вида Абырвалг12 будет систематична, если уже существуют конструкции Абырвалг0-Абырвалг11 и если Абырвалг12 соответствует этой же системе. (Это я условно пишу, речь идет не только об идентификаторах, и о структурах, взаимосвязях других вещах)
if else систематична в системе с if


Критерий субъективного выбора
Предпочтительны синтаксические конструкции получившие больше голосов


> G>Что объективно есть выразительность?

>
> Выразительность вещь сугубо субъективная. То что одному кажется выразительным, другой даже понять не в силах. Тут работает исключительно предпочтение масс. Это единственный объективный критерий при выборе синтаксиса.

Предпочтения масс нужно изучать.
Пока мы сошлись на том, что выразительность не есть краткость, хотя коррелирует.

Мышление человека это не вычисления, не логика. Логика это высшая форма, базовым механизмом (уши которого торчат от всюду) есть комбинаторика на основе ассоциативной памяти. Мозг это в основном память. Но память не точная, а ассоциативная, то есть человек запоминает что-то похожее, на уже запомненное. Ему прочитать и запомнить 1234567890 1234567890 1234567890 1234567890 — длинное сочетание паттернов и системы проще чем 937566934057673, но не в силу принципиальной их разницы, а в силу привычки к первому способу записи.


> Причем тут мышление по аналогии я не знаю. Но так, придерживаясь традиций облегчаешь людям обучение. Это бесспорно. Это и есть вся системность в твоем понимании?


Не вся.

> Не обязательно компактная. Но, скажем, код распознавания с применением паттерн-матчинга более выразителен и более компактен чем тот же код написанный в ОО-манере.

> В прочем поднятие выразительности может приводить к плохой читаемости. Отличный пример — регулярные выражения. Они компакты и выразительны, но крайне трудно читаются из-за отсутствия декомпозиции и слияния грамматических символов и паттернов. PEG / EBNF менее компактны, но долее выразительны (поддерживают рекурсию и декомпозицию).

Я бы сказал это хороший пример. Они и компактны и выразительны. Но это пример плохого синтаксиса для языка. Сложные выражения не поддаются анализу, декомпозиции, рефакторингу. Я это не утверждаю. Посто наблюдал как народ месяцами обсуждал на форумах выражения для поиска url или им подобные и в итоге не приходил к какому-то разумному решению своей задачи, где-то что-то обязательно не учитывалось.
Хотя и этот язык имеет место быть, но оценка такому синтаксису должна быть низкой. Такие языки должны побеждать только если нет альтернативы.



> G>Кстати о Begin End. Со стороны может показаться, что паскалистам нравятся сами Begin End. Это не так. Сила языка паскакаля была не в этом и можно было бы заменить begin end на {} и это не встретило бы принципиальных возражений, не привело бы к каким-то изменениям.

>
> Привело бы. Это предпочтения, а именно они является яблоком раздора. Другое дело, что это не единственное и не главное отличие Си и Паскаля и тем более Дельфи и С++.

Вот здесь у нас спор.
Для подтверждения свего "домысла" как ты изволил выразиться, я открыл Голосование #3607. Посмотри.

> От чего? Все языки эволюционировали к структурным. А в начале 70-ых появилась целая куча очень структурированных языков (например, C и ML). А один из очень структурных языков — Лисп — появился на 12 лет раньше Паскаля.


От распространенных на тот момент языков. Лисп не был распространен, поскольку у него были довольно приличные требования к памяти, на слабом железе его не получалось завести. И он не был main-stream.

> Так что это просто стереотип засевший в твоем мозгу, видимо из-за того, что тебе в начале обучения давали именно Паскаль.


Предположение абсолютно не верное.

> В общем, ясно. Ты начал программировать с Дельфи, вот тебе весь мир его клонами и кажется. Собственно это и есть подтверждение моих слов — привычки и стереотипы — это то что управляет людьми. Все суждения о языках и их синтаксисе сугубо субъективны. А субъективные суждения не систематизируешь.


Предположения не верные.
Все языки клоны дельфи, это гхм... Влад, я тебя этим утверждением теперь могу шантажировать, ага, всем дифченкам расскажу Надо же было такое придумать.
Дельфи это же вообще-то продукт компиляции языка, библиотек и средства RAD. (Структурность там очень удачно легла.) Компиляция, а вот самостоятельным понятием оно стало потом при развитии.

Я вообще-то привел тебе пример, когда структурированность, читаемость и понимаемость кода давала преимущество в популяризации языка при прочих практически равных.
C# действительно в чем-то клон дельфи, но я такого не утверждал. На этом примере я всего-лишь пытался тебе показать, что конкретно это фундаментальное свойство языка — структурированность кода, настолько удачно, что даже перешло по наследству в C#. О родственных связях C# и дельфи ты же не можешь отрицать?
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[15]: Про синтаксис
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 13.06.12 09:57
Оценка:
G>Краткое не обязательно быстрее и лучше воспринимаемое, да и не обязательно скорочитаемое. Сравни формы:
G>9996666544443333890006766666633333221226666766777777
G>999 6666 5 4444 3333 8 9 000 6 7 666666 33333 22 1 22 6666 7 66 777777

в данном случае, наблюдается переход от последовательности длины 52 с алфавитом 0-9
к последовательности длины 19 с алфавитом вида (digit,len).


G>Скобки это поддержка понимания структуры кода программы. Разницу отступа в 10 или 11 пробелов я не замечу, выделить взглядом многострочную структурную единицу без скобок я не смогу,


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

Возьмем следующий код (это стандартный c#-код, в котором лишь убраны символы, которые однозначно восстанавливаются из форматирования, также убрано new, как однозначно восстанавливаемое при условии, что функция и класс не могут иметь одинаковые названия; убрано явное указание enum-а, как востанавливаемое из контекста; оставлены внутристрочные разделители)
    public WindowMain() 
       InitializeComponent() 

       this.InputBindings.Add
         InputBinding 
           SaveAll 
           KeyGesture(S, Shift | Control) 

       var cb = CommandBinding(SaveAll) 
       cb.Executed += ExecutedRoutedEventHandler(HandlerThatSavesEverthing) 
       this.CommandBindings.Add(cb) 
 
    private void HandlerThatSavesEverthing (object obSender, ExecutedRoutedEventArgs e) 
      // Do the Save All thing here.


лишний пробел тут роли не играет и будет подсвечен IDE как ошибка, например, в случаях:
       this.InputBindings.Add
         InputBinding 
           SaveAll 
            KeyGesture(S, Shift | Control)

или
       this.InputBindings.Add
         InputBinding 
           SaveAll 
          KeyGesture(S, Shift | Control)


смотрится непривычно, но читабельно. при этом в поле зрения находится больше информации, чем при классическом синтаксисе
Re[15]: Про синтаксис
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.06.12 20:56
Оценка:
Здравствуйте, grosborn, Вы писали:

G>Я не спорю. Я указываю на пример, когда не имея четких критериев ты принимаешь возможность использования синтаксиса на отступах.


Я? Где? Ты точно внимательно тему прочел? Я как раз автора темы подколов тем, что его проблема решается переходом на скобки. Это конечно был подкол, так как я точно знаю, что автор имеет ИМХО которое говорит ему, что отступы рулят. Но в том-то и заключалась ирония.

Неужели в наше время надо даже иронию до косточек расписывать?

Кстати, то что я предпочитаю скобки не является догмой для меня. Я четко понимаю, что это не более чем дань привычки (первый язык был С, да и на отступных писал, вообще, мало). Я знаю много народа которые пишут на отступных языках и неимоверно прутся от этого.

У каждого своя правда, потому что она субъективна!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Про синтаксис
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.06.12 21:11
Оценка:
Здравствуйте, grosborn, Вы писали:

G>Ну во первых, разделяем объективные требования (критериии) и объективное обоснование и использование этих критериев. Сами критерии могут быть объективными и субъективными. Формировать их и использовать желательно на объективной основе. Извини за это жонглирование словами.

G>Во вторых, у меня пока нет ни того, ни другого. Их нужно выработать. У меня есть только общие соображения, которые могли бы вам в чем-то помочь.

Проблема в том, что все (ну, большинство) объективные объективных критериев (при обсуждения синтаксиса) субъективны. Мы основываемся на опыте и привычках. А это очень субъективно. Вот
Автор: grosborn
Дата: 13.06.12
DarkGray очень хорошо об этом написал.

Аргументы могут быть за разные решения. Просто для кого-то этот аргумент логичен и ценен, а для кого-то "очередная отмазка".

За отступный синтаксис, кстати, есть не мало аргументов. Он компактнее, нельзя неправильно отформатировать код, лишние символы не зашумляют код. Можно наверно еще что-то придумать. Но лично для меня эти аргументы не столь значительны чтобы перевесить свою привычку. К тому же есть аргументы и против. Решение — нравится или не нравится тебе отсупный синтаксиса — принимается на основе весов дающихся этим аргументов. А веса — это чистый субъективизм. Может статься так, что некоторые из аргументов "за" ты будешь трактовать как аргументы "против" (т.е. дашь отрицательный вес).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Про синтаксис
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.06.12 21:22
Оценка:
Здравствуйте, DarkGray, Вы писали:



DG>...Чтобы повысить скорость восприятия человеком информации, требуется понижать L и повышать A.


До этого момента согласен.

DG>Выкидывание скобок и замена их на отступы как раз этому способствует: длина программы уменьшается, а алфавит расширяется за счет использования формы отступов и цвета символов. При этом алфавит вывода (ввода в компьютер) остается тем же самым в размере стандартного набора символов.


А вот это чистой воды заблуждение. Удивительно как ты умудрился на совершенно безупречной базе сделать неверный вывод.

Взрослый человек не рассматривает скобки за символы языка. Это знаки пунктуации позволяющие структурировать код и тем самым группировать реальные символы в сентенции.

Скобки и отступы одинаково (для привыкших к ним) группируют символы в сентенции и для на скорость усвоения информации не влияют.

Отступы делают текст того же объема записанным более компактно. Но это не всегда хорошо. Ведь для восприятия текста важно выделять отдельные его части. А это в отступных синтаксисах не всегда возможно (имеется ряд ограничений на пустые строки и перенос кода).

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

Короче, вкусовщина. Но теория алфавитов мне понравилась .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Про синтаксис
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.06.12 21:39
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>Не требуется считать и замечать кол-во пробелов, необходимо лишь замечать пробелов в данной строке больше, чем в предыдущей или меньше, чем в предыдущей. Что приводит к решению задачи — какую форму образуют левый край строк (ровную, впуклую, выпуклую и т.д.), такую задачу человек решает хорошо, т.к. его зрительный аппарат заточен под выделение формы.


DG>Возьмем следующий код (это стандартный c#-код, в котором лишь убраны символы, ...


Предлагаю брать реальный пример, а не гипотетический. Вот реально написанный в индент-стиле (на Nemerle) фрагмент кода:
def pms_literal(numargs, byrefs)
  def pms_needed = need:
    foreach(byref in byrefs) when(byref)
      need(true)
    false
  if(pms_needed)
    def pms = Macros.NewSymbol()
    def init(byrefs, i = 0, r = [])
      match(byrefs)
        | true :: byrefs when (i < numargs) => init(byrefs, i + 1, <[ $(pms : name)[$(i : int)] = true ]> :: r)
        | _ => <[ { ..$(r.Rev()) } ]>
    <[ array[{ def $(pms : name) = PM($(numargs : int)); $(init(byrefs)); $(pms : name) }] ]>
  else
    <[ null ]>


А вот он же переписанный мною со скобками и форматированием которые привычны мне.
def pms_literal(numargs, byrefs)
{
  def pms_needed = need:
    {
      foreach(byref when(byref) in byrefs)
        need(true);

      false
    };

  if (pms_needed)
  {
    def pms = Macros.NewSymbol();

    def init(byrefs, i = 0, r = [])
    {
      match(byrefs)
      {
        | true :: byrefs when (i < numargs) => init(byrefs, i + 1, <[ $(pms : name)[$(i : int)] = true ]> :: r)
        | _ => <[ { ..$(r.Rev()) } ]>
      }

      <[ 
         def $(pms : name) = PM($(numargs : int));
         $(init(byrefs));
         array[$(pms : name)] 
      ]>
    }
  }
  else
    <[ null ]>
}


Я 2 раза ошибся вставляя скобки. Мой, заточенный на распознавание обзоров, зрительный аппарат дал сбой два раза даже на таком мелком фргменте.

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

DG>смотрится непривычно, но читабельно. при этом в поле зрения находится больше информации, чем при классическом синтаксисе


Непривычно == нечитабельно. Если код тебя раздражает (а тем более бесит), то ты не сможешь прочесть его так же качественно как тот, что тебе нравится.

Это, блин, махровый субъективизм. И я это понимаю и принимаю. Но это так!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Про синтаксис
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.06.12 21:54
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Это как раз вопрос, который и относится к теме — в отличие от скобочек. Речь именно об этом. Так как layout не включен для выражений на топ-левеле их необходимо разделяться через sequencing оператор. Если оператор забыть, то выражения на разных строках склеиваются.


Хреновое синтаксическое решение, на мой взгляд.

ВВ>>> Выглядит как два, на самом деле — одно.

VD>>Как что выглядит мало кого интересует. В правильных языках тебя об этом предупредят.

ВВ>В каких?


Nemerle ловит потерянные значения (вычисления). Шарп заставляет return использовать. Оба заставляют использовать ";".

Описанные тобой ошибки из разряда фантастики для любого сиподобного языка.

А учитывая наличие IDE форматирущих код при вводе — из разряда сказок, так как фантастика обычно бывает научной .

Код
x+y
-z

возможно будет корректным, но вот:
x+y
-z

уже не будет. Так что это чисто отступные тараканы.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Про синтаксис
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.06.12 21:59
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

VD>>Ты же об отступах речь вел. Вот скобки и решают все проблемы с отступами.


ВВ>Нет. Речь о многострочных выражениях. Включение отступов как раз *решает* эту проблему.


Дык если выражение оканчивается символом ";" (или точнее разделяются им) и отсупы не влияют на их вложенность, то и проблем таких не возникает.

Ну, хоть бы кто за 30 лет существования С обратил вниманиена эту гипер-проблему.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Про синтаксис
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 13.06.12 22:30
Оценка:
VD>Взрослый человек не рассматривает скобки за символы языка.

Использование скобок раздувает код прежде всего по вертикали, что уменьшает кол-во смысловых строк воспринимаемых за единицу времени — приходится чаще передвигать глаза, и чаще скроллировать.

VD>И в этих условиях решающую роль начинает играть фактор привычек и предпочтений.


Привычки меняются тяжело, но все-таки это возможно. И дальше возникает основной вопрос: стоит ли потратить неделю-месяц на выработку новой привычки ради ускорения чтения текста на 3-10% в течении следующего десятка лет.
Re[16]: Про синтаксис
От: grosborn  
Дата: 14.06.12 07:47
Оценка:
Я понимаю, что тебе может быть технически трудно трудно принимать объективные подходы в такой сложной деятельности. Но все-равно нужно по меньшей мере это не отрицать, твое отрицание непродуктивно. В любой на первый взгляд субъективной и хаотичной системе есть элементы четкой логики. История знает таких примеров — та же статистика, теорвер.
Я тоже далек от мысли, что абсолютно все можно рассчитать и обосновать. Что-то можно, что-то нельзя, что-то не получается. Но пытаться необходимо. У вас с синтаксисом ужос-ужос-ужос.
Posted via RSDN NNTP Server 2.1 beta
Забанен на рсдн за применение слова "Маргинал"
Re[10]: Про синтаксис
От: Воронков Василий Россия  
Дата: 14.06.12 08:41
Оценка:
Здравствуйте, VladD2, Вы писали:

ВВ>>Нет. Речь о многострочных выражениях. Включение отступов как раз *решает* эту проблему.

VD>Дык если выражение оканчивается символом ";" (или точнее разделяются им) и отсупы не влияют на их вложенность, то и проблем таких не возникает.
VD>Ну, хоть бы кто за 30 лет существования С обратил вниманиена эту гипер-проблему.

Ну да, никто прям не обратил. До сих пор как страшный сон помню высеры VC по поводу забытого ";"/
Re[10]: Про синтаксис
От: Воронков Василий Россия  
Дата: 14.06.12 08:47
Оценка:
Здравствуйте, VladD2, Вы писали:

ВВ>>Это как раз вопрос, который и относится к теме — в отличие от скобочек. Речь именно об этом. Так как layout не включен для выражений на топ-левеле их необходимо разделяться через sequencing оператор. Если оператор забыть, то выражения на разных строках склеиваются.

VD>Хреновое синтаксическое решение, на мой взгляд.

Судя по всему, так и есть. Мне это казалось "оптимизацией" синтаксиса в виду того, что два выражения подряд на топ левеле — это достаточно бессмысленная штука.

VD>Nemerle ловит потерянные значения (вычисления). Шарп заставляет return использовать. Оба заставляют использовать ";".

VD>Описанные тобой ошибки из разряда фантастики для любого сиподобного языка.

Ну как из разряда фантастики — забыть ";" написать тоже ведь можно.

VD>А учитывая наличие IDE форматирущих код при вводе — из разряда сказок, так как фантастика обычно бывает научной .


Ну для хаскелл-стайл синтаксиса автоматическое форматирование по мере ввода — smart indent то есть — это как раз фантастика и есть.

VD>Код

VD>
VD>x+y
VD>-z
VD>

VD>возможно будет корректным, но вот:
VD>
VD>x+y
VD>-z
VD>

VD>уже не будет. Так что это чисто отступные тараканы.

Два твоих примера одинаковые. Отступные тараканы не в этом. Включая layout, выражения на разных строках как в этом примере воспринимаются как разные выражения. Таракан в том, что, если ты хочешь, чтобы это было одно многострочное выражение, то надо писать так:

x+y
  -z


Или:

if cond then
   expr1
   else
   expr2
Re: Про синтаксис
От: Temoto  
Дата: 14.06.12 10:28
Оценка:
ВВ>Какое из двух зол лучше?

Василий, пожалуйста, напишите потом какое решение вы приняли и по каким причинам.
Re[11]: Про синтаксис
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.06.12 11:39
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Судя по всему, так и есть. Мне это казалось "оптимизацией" синтаксиса в виду того, что два выражения подряд на топ левеле — это достаточно бессмысленная штука.


Мне кажется, что два выражения подряд — это хреновая идея на любом уровне, если конечно, выражение не вызов функции с побочным эффектом.

Если говорить серьезно, то я бы на твоем месте запретил перенос строк без отсутпа. Хотите переносить? Покажите это отступом на любом уровне. И все сразу встанет на свои места.

Ну, или введи терминатор выражения (по аналогии точки с запятой в С). В общем случае это не спасет, но на практике проблема будет возникать крайне редко.

ВВ>Ну как из разряда фантастики — забыть ";" написать тоже ведь можно.


Ты очень теоретически рассуждаешь. Префиксных операторов раз два и обчелся. Все остальные (в том числе и вызов функции) приводят двум выражениям без разделителя, что явно является ошибкой. А выражение -чтото — столь редки в коде, что ими можно пренебречь.

ВВ>Ну для хаскелл-стайл синтаксиса автоматическое форматирование по мере ввода — smart indent то есть — это как раз фантастика и есть.


Создатели Хаскеля хотели создать язык не похожий на другие. И им это удалось. Вот только плюс ли это?

ВВ>Два твоих примера одинаковые.


Сори. Точку с запятой забыл.

ВВ>Отступные тараканы не в этом. Включая layout, выражения на разных строках как в этом примере воспринимаются как разные выражения. Таракан в том, что, если ты хочешь, чтобы это было одно многострочное выражение, то надо писать так:


ВВ>
ВВ>x+y
ВВ>  -z
ВВ>


Ну, и в чем тогда проблема?

Все что тебе остается сделать — это выдавать предупреждения о потере вычисленного значения в первой строке (если отступа во второй нет).

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