LINUX.ORG.RU

Ответ на: комментарий от DonkeyHot

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

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

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

P.S. Я говорю "излишними", потому как введение богатых операторов (одно-операндных и двух-операндных, с разными приорететами) делает большинство скобок Лиспа лишними.

mihalych ★★★
()
Ответ на: комментарий от DonkeyHot

Давай пойдем до конца с твоим отступническим синтаксисом. Перл:

is_ok = send("/join #$channel\n hi, all", sub { log($_[0]) }, [ $timezone + 3, 0]) == OK;

Твой гипотетический язык:

set is_ok
        cmp
                call send
                        percent
                                string
                                        /join #%s
                                        \040hi, all\NO_EOLN
                                var channel
                        sub
                                call log
                                        arg 0
                        array
                                plus
                                        var timezone
                                        3
                                0
                constant OK

Человеческий мозг легко читает слева направо и управляется с несколькими (), {} и ""
в строке. Он не приспособлен к чтению глазами вправо-влево-вниз с замерами отступов для
понимания прочитанного. Да и работа с таким кодом жуткая, для того чтобы ввести "!",
надо добавить "not" и полностью сдвинуть весь большой блок на один отступ вправо. Извини,
я предпочитаю богатый синтаксис Perl. :)

mihalych ★★★
()
Ответ на: комментарий от mihalych

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

Нет, я скорее "перфекционист" - то, что может быть лучше - должно быть лучше.

>идеям Перл, где синтаксис здрав

Ты имеешь ввиду 6й или шутишь?

>Так как ты попросту заменил множество излишних скобок

О!

DonkeyHot ★★★★★
()
Ответ на: комментарий от mihalych

>Давай пойдем до конца ... Твой гипотетический язык

Это не "мой" язык - это твоя попытка. Я не призывал выбрасывать инфиксные операторы и растаскивать всё по максимальному кол-ву строк. Я только предложил выбросить те скобки, которые вменяемые программисты дублируют отступами для повышения читаемости.

А идти до конца нужно в другую сторону. Очевидно, что в предельных случаях читаемость обращается в 0 - следовательно где-то посередине есть максимум. Вот туда нужно.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

> я скорее "перфекционист" - то, что может быть лучше - должно быть лучше

Да-да, существует один правильный путь делать вещи, который _должен_ быть закреплён намертво. Только он никак не лучший. Лучше - это когда существует множество путей, пригодных для каждого конкретного требования.

> Ты имеешь ввиду 6й или шутишь?

Ты Perl 5 не знаешь, чтобы его судить. Синтаксис в нём и так оптимален. В 6-ом лишь небольшие изменения (относительно других языков), осталась та же идиология. Лёгкие вещи - легки, сложные вещи - осуществимы.

> А идти до конца нужно в другую сторону.

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

mihalych ★★★
()
Ответ на: комментарий от mihalych

>существует один правильный путь делать вещи, который _должен_ быть закреплён намертво

Ты сказал.

>Синтаксис в нём и так оптимален.

Только критерий, по которому его оптимизировали, необычный:-).

>Я думаю, из моего последнего примера стало лучше понятно, почему я (и не только я) считаю синтаксис Питона нечитаемым

Твой пример всего лишь показал, что при большом желании можно так напользоваться отступами, что читать станет трудно. Только это не проблема синтаксиса, но проблема его использования. Всё же ты не пишешь весь перловый код в одну строку, и AFAIR "форматируешь" его правильно. Т.ч. значимость отступов для кода ты признаёшь.

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

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

Противоречия тут нет. Предположим, что я разбиваю 50% кода аналогично тому как это заставляет делать Питон, 20% кода разбиваю иначе (более логично, по определённым критериям), 10% кода не разбиваю вообще (то есть, если один или два коротких блока {} помещаются в строке, то почему бы и нет), 10% кода разбиваю комбинируя 2 уровня в один (то есть {...{ на открывающей строке и }...} на закрывающей). Примем также, что код, в языке которого есть вложенные регулярные выражения, интерполяция переменных в самом стринге, и не требуется создавать множество мелких функций лишь бы не сбиться с уровнями - попросту на 10% короче.

Исходя из этих предположительных цифр и учитывая, что весь код написан в наиболее возможно читаемой форме, легко может получиться, что код Питона в 50% случаях не оптимально читаемый, а зачастую и вовсе плохо читаемый.

И это только по критерию читаемости. Практичность и здравый смысл (а вернее их отсутствие) в таком синтаксисе мы уже давно не обсуждаем. :)

mihalych ★★★
()
Ответ на: комментарий от mihalych

>Противоречия тут нет

Согласен:-)

>50% кода аналогично тому как это заставляет делать Питон ... 10% кода разбиваю комбинируя 2 уровня в один (то есть {...{ на открывающей строке и }...}

Интересно было бы посмотреть на полезный '{...{'.

Есть подозрение, что если блок или 2 приемлемо умещаются на одной строке, читаемость в случае отступов не будет хуже - как мы выяснили она мешает на бОльших блоках. Отступы, конечно, потребуют больше символов, но "видимых" будет меньше.

>Исходя из этих предположительных цифр

Мы получим, что в 60%(моя оценка незначительно выше - но ведь твоя сдача:-) читатель питонского кода видит меньше "структурирующих" символов, чем читатель аналогичного перлового. Потому избавлен от необходимости их считать, чтобы определить блок, содержащий код. Читаемость, однако.

Оставшиеся

>10% кода не разбиваю вообще

а также

>код, в языке которого есть вложенные регулярные выражения, интерполяция переменных в самом стринге попросту - на 10% короче

всего лишь указывают на преимущества перла при обработке простых текстов. Причём, если вернуться к перло-питонской войне, они довольно редко короче на 10%, если питонский код тоже соптимизировать по этому критерию, при этом _без_ включения в синтаксис. Что делает именно синтаксис слабым местом перла.

Сравнение ниже, т.к. lor по прежнему не даёт вставить преформатированый код.

DonkeyHot ★★★★★
()
Ответ на: комментарий от mihalych

Строкомерка

выигрыш в 10% возможен при 

>вложенные регулярные выражения

$v=~s/asd/qwe/;  #8 символов "синтаксиса",
s('asd','qwe',v) #+1 символ, при s=re.sub

длинной до 2х символов.

>интерполяция переменных в самом стринге

"${var}${var}"; #8 символов "синтаксиса"
"%s%s"%(var,var) # +2 символа, 

"стрингах" вместе с именами переменных - до 12 символов. 
Вот мы и нашли   область эффективности перла.

DonkeyHot ★★★★★
()
Ответ на: Строкомерка от DonkeyHot

PS: Строкомерка

>"%s%s"%(var,var) # +2 символа,

Блин, ошибся - 1 лишний символ. Правда есть ещё более простые случаи для перла, т.ч. пусть остаётся "до 12".

DonkeyHot ★★★★★
()
Ответ на: комментарий от wpp

>Because life's too short to code without punctuation

Погорячились парни с "without". Жалко тратить время на $@{};.

DonkeyHot ★★★★★
()
Ответ на: Строкомерка от DonkeyHot

Если уже меряться собрался, то ты сделал 3 ошибки.

1) Если считаешь ";", то считай тогда уж и "\n", или не учитывай обоих.

2) $var =~ s/1999/2000/ переводится в re.sub('1999', '2000', var, 1)

3) В 99% случаев, {} лишние. "Hello, $user ($prefix$name[0])."

mihalych ★★★
()
Ответ на: комментарий от mihalych

>Если считаешь ";", то считай тогда уж и "\n"

А мы разве байтами меряемся? Более того, ты сам говорил, что твой код всегда форматирован, т.е. чаще всего '\n' у тоже есть.

>$var =~ s/1999/2000/ переводится в re.sub('1999', '2000', var, 1)

Ты видишь большую разницу? В перле $=~///, в питоне ('','',,). "s" с умолчанием 1 так же легко определяется. Ну получишь ты выигрыш в 2-3 символа на использовании регекспа. В каких стучаях оно даст 10% на _всей_ программе - не видно.

>В 99% случаев, {} лишние

Ещё 2 байта на переменную. Не ври себе. Возьми любой свой законченый, полезный и читаемый кусок кода, хотя бы строк на 50, перепиши его _аккуратно_(или попроси ближайшего питонера) и сравни. Вероятность получить код короче на 10% очень невелика, особенно если отступы TAB-ами делать.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

У меня нет времени на мерки, я лишь твои фактические ошибки исправляю. Скажем, при переходе с пробелов в уровнях на табы, размер кода Питон может уменьшится в 2 раза запросто. Какие тут уж 10%. :)

mihalych ★★★
()
Ответ на: комментарий от DonkeyHot

> Интересно было бы посмотреть на полезный '{...{'.

Да полно примеров, а полезность и частота применения от задач зависит. Вот, скажем, вчера опубликовали тут скриншот: http://www.linux.org.ru/gallery/bigiMdVg9.jpg Без видимых символов начала и конца блока совсем нечитаемо было бы.

mihalych ★★★
()
Ответ на: комментарий от mihalych

За дискуссию пять баллов.

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

Спасибо.

APM
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.