Цитата: Python от июля 16, 2011, 05:18
А мне нравится.
Во-первых, заставляет думать о приятном, т.е., о Лиспе)))
Во-вторых, еще никто не додумался конвертить простые скобки в нервно дергающиеся рожицы, не влезающие в высоту строки.
В-третьих, проще вводить с клавы, чем обычные смайлики.
((Скобки) ((вполне) можно (сделать ((обязательными) (в языке))))) ((Мне) (нравится))
Цитата: Drundia от июля 16, 2011, 05:33
((Скобки) ((вполне) можно (сделать ((обязательными) (в языке))))) ((Мне) (нравится))
Похоже на запись из псевдокода или дискретной математики.
Трудно будет языки со свободным порядком слов в скобки впихнуть... Тут больше структура с метками подойдет:
10 трудно
20 будет 10, 80
30 языки 50
40 со свободным
50 порядком 40, 60
60 слов
70 в скобки
80 впихнуть 30, 70
(Ошибка (парсинга)) (Не обнаружено (скобок))
Цитата: Python от июля 16, 2011, 06:16
10 трудно
20 будет 10, 80
30 языки 50
40 со свободным
50 порядком 40, 60
60 слов
70 в скобки
80 впихнуть 30, 70
Фейл!
10 трудно
20 будет 10, 80
30 языки 35
35 со 50
40 свободным50 порядком 40, 60
60 слов
70 в 75
75 скобки80 впихнуть 30, 70
Щас будут скобки.
ЦитироватьЩас будут скобки.
Порядок слов сохранится такой, как был?
((Трудно) будет ((языки (со ((свободным) порядком (слов)))) (в (скобки)) впихнуть))
Судя по всему порядок свободный только внутри одного уровня.
ЦитироватьФейл!
Да ладно, для псевдокода сойдет.
(
(
Трудно
) будет (
(
языки (
со (
(
свободным
) порядком (
слов
)
)
)
)
(
в (
скобки
)
) впихнуть
)
)
И все-таки, джависты приняли крайне неудобные правила оформления расстановки скобок.
Мне Whitesmiths style (http://en.wikipedia.org/wiki/Indent_style#Whitesmiths_style) больше нравится.
Жужас, мне Вайтсмитс совсем не нравится. Особенно в таких ситуациях:
stat1;
stat2;
{
stat3;
stat4;
}
stat5;
stat6;
Возвращаясь к скобкам в пунктуации естественных языков: совсем не обязательно выделять каждое слово, главное пометить сложные для понимания (неочевидные) связи.
Цитата: Drundia от июля 16, 2011, 06:46
Жужас, мне Вайтсмитс совсем не нравится. Особенно в таких ситуациях:
stat1;
stat2;
{
stat3;
stat4;
}
stat5;
stat6;
Потому что это Аллман. Правильный Уайтсмитс должен быть таким:
stat1;
stat2;
{
stat3;
stat4;
}
stat5;
stat6;
Скобки всегда идут на одном уровне с вложенным блоком, заголовок класса/функции/алгоритмической конструкции — на уровне блока, внутри которого он находится.
Что мне нравится в этом стиле, так это то, что в нем практически невозможно потерять скобки. Простой оператор от блока можно отличить без особых зрительных усилий. Соответственно, нет и необходимости огораживать на всякий случай однооператорные тела циклов, как это практикуется у джавистов.
<sentence>
<mode>Трудно</mode>
будет
<infinite>
<object type=direct>
языки
<object type=prepositive>
<preposition>со</preposition>
<adjective>свободным</adjective>
порядком
<object>слов</object>
</object>
</object>
<object type=prepositive>
<preposition>в</preposition>
скобки
</object>
впихнуть
</infinite>
</sentence>
Ну вот, как всегда, приходят иксемельщики и все опошляют своей разметкой, за которой данные еле видно.
Цитата: Python от июля 16, 2011, 10:55Потому что это Аллман. Правильный Уайтсмитс должен быть таким:
stat1;
stat2;
{
stat3;
stat4;
}
stat5;
stat6;
Да-да-да, вот именно такой Вайтсмитс мне и не нравится. Поэтому я продемонстрировал нормальную запись, которую ваш Вайтсмитс на хрень какую-то переделал.
Цитата: Python от июля 16, 2011, 11:01
Что мне нравится в этом стиле, так это то, что в нем практически невозможно потерять скобки. Простой оператор от блока можно отличить без особых зрительных усилий. Соответственно, нет и необходимости огораживать на всякий случай однооператорные тела циклов, как это практикуется у джавистов.
А чё их терять? Меняется отступ — должны быть скобки, как везде...
Цитата: Hellerick от июля 16, 2011, 11:17
Вы ещё флексии отдельно выделите... всё-таки на пару с предлогами работают.
ЦитироватьДа-да-да, вот именно такой Вайтсмитс мне и не нравится.
Ну, строго говоря, там пример был малопригодный для уайтсмитса. В реальном си-подобном коде любому блоку обычно предшествует заголовок, а здесь просто стейтменты и блоки без ифов/циклов/процедур.
ЦитироватьА чё их терять? Меняется отступ — должны быть скобки, как везде...
А потом лишние скобки усложняют чтение кода. Почему вместо
while(i++ <100)
if(i%3==0)
j*=i;
нужно писать
while(i++ <100) {
if(i%3==0) {
j*=i;
}
}
Синтаксис языка этих скобок не требует — зачем они вообще нужны, да еще и без видимой связи с уровнем отступа обрамляемого ими блока?
Цитата: Python от июля 16, 2011, 12:33
Ну вот, как всегда, приходят иксемельщики и все опошляют своей разметкой, за которой данные еле видно.
потому что XML дебильный язык вообще
Цитата: Python от июля 16, 2011, 14:43Ну, строго говоря, там пример был малопригодный для уайтсмитса. В реальном си-подобном коде любому блоку обычно предшествует заголовок, а здесь просто стейтменты и блоки без ифов/циклов/процедур.
В плюсах в конце такого блока исчезают объявленные в нём переменные. А во-вторых их удобно комментировать добавлением «if(0)», и никаких проблем со вложенными комментариями.
Цитата: Python от июля 16, 2011, 14:43А потом лишние скобки усложняют чтение кода. Почему вместо
while(i++ <100)
if(i%3==0)
j*=i;
нужно писать
while(i++ <100) {
if(i%3==0) {
j*=i;
}
}
Синтаксис языка этих скобок не требует — зачем они вообще нужны, да еще и без видимой связи с уровнем отступа обрамляемого ими блока?
Нужно писать
while(i++ <100) {
if(i%3==0) {
j*=i;
}
}
А без скобок только в одну строку.
Цитата: Drundia от июля 17, 2011, 06:31
Цитата: Python от июля 16, 2011, 14:43Ну, строго говоря, там пример был малопригодный для уайтсмитса. В реальном си-подобном коде любому блоку обычно предшествует заголовок, а здесь просто стейтменты и блоки без ифов/циклов/процедур.
В плюсах в конце такого блока исчезают объявленные в нём переменные. А во-вторых их удобно комментировать добавлением «if(0)», и никаких проблем со вложенными комментариями.
Да, но в таких внутриблочных локальных переменных редко возникает необходимость.
Что же касается if(0), ІМНО, это плохой стиль: вложенный код все равно компилируется, хоть и не выполняется. Ну а если уж использовать такую конструкцию, то, наверное, лучше брать не if, а while, чтобы избежать возможного сцепления с else, если это ключевое слово случайно окажется после псевдокомментария.
Цитировать
Нужно писать
while(i++ <100) {
if(i%3==0) {
j*=i;
}
}
А без скобок только в одну строку.
Да, это по конвенции. Но так читать еще хуже.
Цитата: Python от июля 17, 2011, 09:42Что же касается if(0), ІМНО, это плохой стиль: вложенный код все равно компилируется, хоть и не выполняется. Ну а если уж использовать такую конструкцию, то, наверное, лучше брать не if, а while, чтобы избежать возможного сцепления с else, если это ключевое слово случайно окажется после псевдокомментария.
По идее нормальные компиляторы не должны его компилировать. А else после таких вложенных конструкций (когда он не запсевдокомментированы) синтаксически невозможен.
Цитата: Python от июля 17, 2011, 09:42Да, это по конвенции. Но так читать еще хуже.
Сложностей не обнаружено.
Цитата: Drundia от июля 17, 2011, 12:32
По идее нормальные компиляторы не должны его компилировать. А else после таких вложенных конструкций (когда он не запсевдокомментированы) синтаксически невозможен.
Цитата: Python от июля 17, 2011, 09:42Да, это по конвенции. Но так читать еще хуже.
Сложностей не обнаружено.
Нормальные компиляторы вымерли еще в те времена, когда оперативка измерялась в килобайтах, а ассемблерные вставки считались признаком высшего мастерства.
Безусловно, if(0) трудно вставить незаметно для себя в таком месте, жестко придерживаясь конвенции. Но глаза лезут на затылок, когда в более-менее крупном фрагменте джава-кода с вложенными блоками пытаешься определить, к чему относится та или иная скобка.
Цитата: Python от июля 17, 2011, 16:41
Но глаза лезут на затылок, когда в более-менее крупном фрагменте джава-кода с вложенными блоками пытаешься определить, к чему относится та или иная скобка.
Подсветка диапазона между скобками рулит!
Цитата: hurufu от июля 17, 2011, 17:55
Подсветка диапазона между скобками рулит!
Не припоминаю такого. Где это есть?
Это есть в kate (http://kate-editor.org/).
Наличествует в репозиториях убунты.
А файл с правилами подсветки — на xml'е и пишется за рекордно короткое время.
Цитата: hurufu от июля 17, 2011, 17:55
Цитата: Python от июля 17, 2011, 16:41
Но глаза лезут на затылок, когда в более-менее крупном фрагменте джава-кода с вложенными блоками пытаешься определить, к чему относится та или иная скобка.
Подсветка диапазона между скобками рулит!
Тогда отступы вообще не нужны.
Цитата: Python от июля 17, 2011, 16:41Нормальные компиляторы вымерли еще в те времена, когда оперативка измерялась в килобайтах, а ассемблерные вставки считались признаком высшего мастерства.
Их что, с нуля переписывают?
Цитата: Python от июля 17, 2011, 16:41Но глаза лезут на затылок, когда в более-менее крупном фрагменте джава-кода с вложенными блоками пытаешься определить, к чему относится та или иная скобка.
А отступы зачем?
Цитата: Python от июля 17, 2011, 19:12Тогда отступы вообще не нужны.
Для большей наглядности.
А у вас тоже такое есть, что если нужно прочесть чей-то код, то не начинаете чтение до тех пор пока не будет оформлено все по своему.
Цитата: Drundia от июля 17, 2011, 19:50
Цитата: Python от июля 17, 2011, 19:12Тогда отступы вообще не нужны.
Для большей наглядности.
Здесь на Лингвофоруме графические ЯП неоднократно обсуждались. ;D
ЦитироватьИх что, с нуля переписывают?
javac — да, с нуля, скорее всего. Ассемблерные вставки, экономия оперативки, стремление все оптимизировать — стиль конца 80-х, джава — середина 90-х.
ЦитироватьА отступы зачем?
К отступам в стиле джаваковеншен трудно пририсовать вертикальную линию, соединяющую заголовок блока и закрывающую скобку. Чтобы видеть связь между телом блока и закрывающей скобкой, нужен хорошо отточенный глазомер. В общем, наглядности там недостаточно для того, чтобы глаза сами могли выхватить блок. В уайтсмитсе же и скобки, и тело блока идут под одну линейку, отчетливо видно начало и конец, всегда ясно, что к чему относится. Не нравиться он может только с непривычки.
Цитата: Python от июля 17, 2011, 20:29
javac — да, с нуля, скорее всего. Ассемблерные вставки, экономия оперативки, стремление все оптимизировать — стиль конца 80-х, джава — середина 90-х.
Вы так говорите, как будто это плохо. Сегодня человекочасы стоят дороже, чем оперативка и процессор, и чем дальше тем паче. Поэтому нет смысла тратить дорогое время на бессмысленные оптимизации.
Цитата: RawonaM от июля 17, 2011, 20:42
Сегодня человекочасы стоят дороже, чем оперативка и процессор, и чем дальше тем паче. Поэтому нет смысла тратить дорогое время на бессмысленные оптимизации.
А вам самому не страшно от написанного?
Цитата: hurufu от июля 17, 2011, 20:54
Цитата: RawonaM от июля 17, 2011, 20:42Сегодня человекочасы стоят дороже, чем оперативка и процессор, и чем дальше тем паче. Поэтому нет смысла тратить дорогое время на бессмысленные оптимизации.
А вам самому не страшно от написанного?
Нет. Я знаю что говорю. Все новые языки нужны чтобы экономить драгоценное человеческое время, а старые языки чтобы экономить драгоценное процессорное время.
Цитата: Python от июля 17, 2011, 20:29Чтобы видеть связь между телом блока и закрывающей скобкой, нужен хорошо отточенный глазомер. В общем, наглядности там недостаточно для того, чтобы глаза сами могли выхватить блок. В уайтсмитсе же и скобки, и тело блока идут под одну линейку, отчетливо видно начало и конец, всегда ясно, что к чему относится. Не нравиться он может только с непривычки.
Чё там видеть? Изменения отступа, короткая строка (одна скобка)...
Цитата: RawonaM от июля 17, 2011, 20:42Вы так говорите, как будто это плохо. Сегодня человекочасы стоят дороже, чем оперативка и процессор, и чем дальше тем паче. Поэтому нет смысла тратить дорогое время на бессмысленные оптимизации.
Благодаря такой философии в WOW во времена моей игры частота кадров падала в среднем в два раза в год. Учитывая что тормоза на разные процессоры не делились, явно надо подумать о человекочасах, которые смогут оптимизировать код под многопроцессорность.
Цитата: Drundia от июля 17, 2011, 21:02
Благодаря такой философии в WOW во времена моей игры частота кадров падала в среднем в два раза в год.
Это не философия, это правда жизни. Процессор вы меняли по закону Мура? Если нет, то что удивительного? Кроме того, что частота кадров падала, добавлялись новые вещи, из-за которых она падала собственно. Рассчитанные на то, что процессоры уже будут мощнее.
Что касается оптимизаций кадров и прочее, то там они конечно не бессмысленные.
Цитата: Drundia от июля 17, 2011, 21:02
Благодаря такой философии в WOW во времена моей игры частота кадров падала в среднем в два раза в год. Учитывая что тормоза на разные процессоры не делились, явно надо подумать о человекочасах, которые смогут оптимизировать код под многопроцессорность.
Сейчас, таких специалистов очень мало, и никто из новых програмистов не хочет тратить свое время на оптимизацию. Поэтому имеем, что имеем.
Цитата: hurufu от июля 17, 2011, 21:10
Сейчас, таких специалистов очень мало, и никто из новых програмистов не хочет тратить свое время на оптимизацию.
Не так. Платят — тратят, не платят — не тратят. А платят только за то, где есть смысл. Оптимизация ради оптимизации — это к гуманитариям обращаться.
Цитата: RawonaM от июля 17, 2011, 21:07Это не философия, это правда жизни. Процессор вы меняли по закону Мура? Если нет, то что удивительного? Кроме того, что частота кадров падала, добавлялись новые вещи, из-за которых она падала собственно. Рассчитанные на то, что процессоры уже будут мощнее.
Что касается оптимизаций кадров и прочее, то там они конечно не бессмысленные.
Правда жизни в том, что поддержки многопроцессорности не хватает. Многоядерные процессоры штампуют, а в играх с их поддержкой туговато... Нагрузку на процессор наращивали, а довести до ума код не смогли... впрочем WOW такой WOW, для него типично появление нужні вещей через ~4 года после того как они стали нужны.
Цитата: Drundia от июля 17, 2011, 21:36
Правда жизни в том, что поддержки многопроцессорности не хватает. Многоядерные процессоры штампуют, а в играх с их поддержкой туговато...
Это правда. При всем прогрессе хардвера софт-технологии остаются теми же и меняются очень медленно, а кое-кто тащит еще и назад в 80-ые потому что должно быть красиво и это искусство.
Никакого прорыва в ближайшее время не предвидится, хотя конечно сейчас нужно решать проблемы распараллеливания по разным процам/компам.
У закона Мура тоже есть предел. Скорее всего, дальше нанометрических элементов прогресс не пойдет, если только мы не научимся делать процессоры из частиц меньше атома. Так что дальше вся надежда будет на оптимизацию софта и собственно архитектуры железа. Опыт 80-х мало пригодится: тогда многопроцессорность была лишь у суперкомпьютеров, в ближайшем будущем она будет повсюду. Хотя параллельно идущие сотни и тысячи процессов тоже, в идеале, будут требовать глубокой оптимизации — следовательно, можно ожидать реинкарнации низкоуровневого оптимизационного программирования.
Да, я же говорю, сейчас ставка на распараллеливание всего и по-максимуму. Нужен какой-то прорыв в технологиях софтостроения, а то он реально не поспевает за технологиями.
троичные оптокомпы будут
Цитата: Python от Скорее всего, дальше нанометрических элементов прогресс не пойдет, если только мы не научимся делать процессоры из частиц меньше атома.
(wiki/ru) Квантовый компьютер (http://ru.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D0%BD%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80)
Цитата: Python от июля 16, 2011, 06:39
И все-таки, джависты приняли крайне неудобные правила оформления расстановки скобок.
Мне Whitesmiths style больше нравится.
¡ :UU: ;up: := :P !
А мне нравится Allman. Там скобки как бы показывают, какой уровень за блоком.