Лингвофорум

Общий раздел => Наука и техника => Компьютеры => Тема начата: Drundia от июля 16, 2011, 05:33

Название: Закон Мура и стили программирования
Отправлено: Drundia от июля 16, 2011, 05:33
Цитата: Python от июля 16, 2011, 05:18
А мне  нравится.
Во-первых, заставляет думать о приятном, т.е., о Лиспе)))
Во-вторых, еще никто не додумался конвертить простые скобки в нервно дергающиеся рожицы, не влезающие в высоту строки.
В-третьих, проще вводить с клавы, чем обычные смайлики.
((Скобки) ((вполне) можно (сделать ((обязательными) (в языке))))) ((Мне) (нравится))
Название: Закон Мура и техника программирования
Отправлено: From_Odessa от июля 16, 2011, 05:37
Цитата: Drundia от июля 16, 2011, 05:33
((Скобки) ((вполне) можно (сделать ((обязательными) (в языке))))) ((Мне) (нравится))
Похоже на запись из псевдокода или дискретной математики.
Название: Закон Мура и техника программирования
Отправлено: Python от июля 16, 2011, 06:16
Трудно будет языки со свободным порядком слов в скобки впихнуть... Тут больше структура с метками подойдет:

10 трудно
20 будет 10, 80
30 языки 50
40 со свободным
50 порядком 40, 60
60 слов
70 в скобки
80 впихнуть 30, 70
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 16, 2011, 06:20
(Ошибка (парсинга)) (Не обнаружено (скобок))
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 16, 2011, 06:22
Цитата: 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

Щас будут скобки.
Название: Закон Мура и техника программирования
Отправлено: Python от июля 16, 2011, 06:26
ЦитироватьЩас будут скобки.
Порядок слов сохранится такой, как был?
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 16, 2011, 06:27
((Трудно) будет ((языки (со ((свободным) порядком (слов)))) (в (скобки)) впихнуть))

Судя по всему порядок свободный только внутри одного уровня.
Название: Закон Мура и техника программирования
Отправлено: Python от июля 16, 2011, 06:32
ЦитироватьФейл!
Да ладно, для псевдокода сойдет.
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 16, 2011, 06:32
(
  (
    Трудно
  ) будет (
    (
      языки (
        со (
          (
            свободным
          ) порядком (
            слов
          )
        )
      )
    )
    (
      в (
        скобки
      )
    ) впихнуть
  )
)
Название: Закон Мура и техника программирования
Отправлено: Python от июля 16, 2011, 06:39
И все-таки, джависты приняли крайне неудобные правила оформления расстановки скобок.
Мне Whitesmiths style (http://en.wikipedia.org/wiki/Indent_style#Whitesmiths_style) больше нравится.
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 16, 2011, 06:46
Жужас, мне Вайтсмитс совсем не нравится. Особенно в таких ситуациях:


stat1;
stat2;
{
  stat3;
  stat4;
}
stat5;
stat6;



Возвращаясь к скобкам в пунктуации естественных языков: совсем не обязательно выделять каждое слово, главное пометить сложные для понимания (неочевидные) связи.
Название: Закон Мура и техника программирования
Отправлено: Python от июля 16, 2011, 10:55
Цитата: Drundia от июля 16, 2011, 06:46
Жужас, мне Вайтсмитс совсем не нравится. Особенно в таких ситуациях:


stat1;
stat2;
{
  stat3;
  stat4;
}
stat5;
stat6;

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

stat1;
stat2;
  {
  stat3;
  stat4;
  }
stat5;
stat6;

Скобки всегда идут на одном уровне с вложенным блоком, заголовок класса/функции/алгоритмической конструкции — на уровне блока, внутри которого он находится.
Название: Закон Мура и техника программирования
Отправлено: Python от июля 16, 2011, 11:01
Что мне нравится в этом стиле, так это то, что в нем практически невозможно потерять скобки. Простой оператор от блока можно отличить без особых зрительных усилий. Соответственно, нет и необходимости огораживать на всякий случай однооператорные тела циклов, как это практикуется у джавистов.
Название: Закон Мура и техника программирования
Отправлено: Hellerick от июля 16, 2011, 11:17
<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, 12:33
Ну вот, как всегда, приходят иксемельщики и все опошляют своей разметкой, за которой данные еле видно.
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 16, 2011, 13:41
Цитата: Python от июля 16, 2011, 10:55Потому что это Аллман. Правильный Уайтсмитс должен быть таким:

stat1;
stat2;
  {
  stat3;
  stat4;
  }
stat5;
stat6;
Да-да-да, вот именно такой Вайтсмитс мне и не нравится. Поэтому я продемонстрировал нормальную запись, которую ваш Вайтсмитс на хрень какую-то переделал.

Цитата: Python от июля 16, 2011, 11:01
Что мне нравится в этом стиле, так это то, что в нем практически невозможно потерять скобки. Простой оператор от блока можно отличить без особых зрительных усилий. Соответственно, нет и необходимости огораживать на всякий случай однооператорные тела циклов, как это практикуется у джавистов.
А чё их терять? Меняется отступ — должны быть скобки, как везде...
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 16, 2011, 13:45
Цитата: Hellerick от июля 16, 2011, 11:17
Вы ещё флексии отдельно выделите... всё-таки на пару с предлогами работают.
Название: Закон Мура и техника программирования
Отправлено: Python от июля 16, 2011, 14:43
ЦитироватьДа-да-да, вот именно такой Вайтсмитс мне и не нравится.
Ну, строго говоря, там пример был малопригодный для уайтсмитса. В реальном си-подобном коде любому блоку обычно предшествует заголовок, а здесь просто стейтменты и блоки без ифов/циклов/процедур.

ЦитироватьА чё их терять? Меняется отступ — должны быть скобки, как везде...
А потом лишние скобки усложняют чтение кода. Почему вместо

while(i++ <100)
    if(i%3==0)
        j*=i;

нужно писать

while(i++ <100) {
    if(i%3==0) {
        j*=i;
        }
    }

Синтаксис языка этих скобок не требует — зачем они вообще нужны, да еще и без видимой связи с уровнем отступа обрамляемого ими блока?
Название: Закон Мура и техника программирования
Отправлено: iopq от июля 16, 2011, 14:58
Цитата: Python от июля 16, 2011, 12:33
Ну вот, как всегда, приходят иксемельщики и все опошляют своей разметкой, за которой данные еле видно.
потому что XML дебильный язык вообще
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 17, 2011, 06:31
Цитата: 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;
    }
}


А без скобок только в одну строку.
Название: Закон Мура и техника программирования
Отправлено: Python от июля 17, 2011, 09:42
Цитата: 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;
    }
}


А без скобок только в одну строку.
Да, это по конвенции. Но так читать еще хуже.
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 17, 2011, 12:32
Цитата: Python от июля 17, 2011, 09:42Что же касается if(0), ІМНО, это плохой стиль: вложенный код все равно компилируется, хоть и не выполняется. Ну а если уж использовать такую конструкцию, то, наверное, лучше брать не if, а while, чтобы избежать возможного сцепления с else, если это ключевое слово случайно окажется после псевдокомментария.
По идее нормальные компиляторы не должны его компилировать. А else после таких вложенных конструкций (когда он не запсевдокомментированы) синтаксически невозможен.

Цитата: Python от июля 17, 2011, 09:42Да, это по конвенции. Но так читать еще хуже.
Сложностей не обнаружено.
Название: Закон Мура и техника программирования
Отправлено: Python от июля 17, 2011, 16:41
Цитата: Drundia от июля 17, 2011, 12:32
По идее нормальные компиляторы не должны его компилировать. А else после таких вложенных конструкций (когда он не запсевдокомментированы) синтаксически невозможен.

Цитата: Python от июля 17, 2011, 09:42Да, это по конвенции. Но так читать еще хуже.
Сложностей не обнаружено.
Нормальные компиляторы вымерли еще в те времена, когда оперативка измерялась в килобайтах, а ассемблерные вставки считались признаком высшего мастерства.

Безусловно, if(0) трудно вставить незаметно для себя в таком месте, жестко придерживаясь конвенции. Но глаза лезут на затылок, когда в более-менее крупном фрагменте джава-кода с вложенными блоками пытаешься определить, к чему относится та или иная скобка.
Название: Закон Мура и техника программирования
Отправлено: hurufu от июля 17, 2011, 17:55
Цитата: Python от июля 17, 2011, 16:41
Но глаза лезут на затылок, когда в более-менее крупном фрагменте джава-кода с вложенными блоками пытаешься определить, к чему относится та или иная скобка.
Подсветка диапазона между скобками рулит!
Название: Закон Мура и техника программирования
Отправлено: RawonaM от июля 17, 2011, 17:57
Цитата: hurufu от июля 17, 2011, 17:55
Подсветка диапазона между скобками рулит!
Не припоминаю такого. Где это есть?
Название: Закон Мура и техника программирования
Отправлено: hurufu от июля 17, 2011, 18:01
Это есть в kate (http://kate-editor.org/).
Наличествует в репозиториях убунты.
Offtop
А файл с правилами подсветки — на xml'е и пишется за рекордно короткое время.
Название: Закон Мура и техника программирования
Отправлено: Python от июля 17, 2011, 19:12
Цитата: hurufu от июля 17, 2011, 17:55
Цитата: Python от июля 17, 2011, 16:41
Но глаза лезут на затылок, когда в более-менее крупном фрагменте джава-кода с вложенными блоками пытаешься определить, к чему относится та или иная скобка.
Подсветка диапазона между скобками рулит!
Тогда отступы вообще не нужны.
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 17, 2011, 19:50
Цитата: Python от июля 17, 2011, 16:41Нормальные компиляторы вымерли еще в те времена, когда оперативка измерялась в килобайтах, а ассемблерные вставки считались признаком высшего мастерства.
Их что, с нуля переписывают?

Цитата: Python от июля 17, 2011, 16:41Но глаза лезут на затылок, когда в более-менее крупном фрагменте джава-кода с вложенными блоками пытаешься определить, к чему относится та или иная скобка.
А отступы зачем?

Цитата: Python от июля 17, 2011, 19:12Тогда отступы вообще не нужны.
Для большей наглядности.
Название: Закон Мура и техника программирования
Отправлено: hurufu от июля 17, 2011, 20:02
Offtop
А у вас тоже такое есть, что если нужно прочесть чей-то код, то не начинаете чтение до тех пор пока не будет оформлено все по своему.
Название: Закон Мура и техника программирования
Отправлено: hurufu от июля 17, 2011, 20:04
Цитата: Drundia от июля 17, 2011, 19:50
Цитата: Python от июля 17, 2011, 19:12Тогда отступы вообще не нужны.
Для большей наглядности.
Здесь на Лингвофоруме графические ЯП неоднократно обсуждались. ;D
Название: Закон Мура и техника программирования
Отправлено: Python от июля 17, 2011, 20:29
ЦитироватьИх что, с нуля переписывают?
javac — да, с нуля, скорее всего. Ассемблерные вставки, экономия оперативки, стремление все оптимизировать — стиль конца 80-х, джава — середина 90-х.
ЦитироватьА отступы зачем?
К отступам в стиле джаваковеншен трудно пририсовать вертикальную линию, соединяющую заголовок блока и закрывающую скобку. Чтобы видеть связь между телом блока и закрывающей скобкой, нужен хорошо отточенный глазомер. В общем, наглядности там недостаточно для того, чтобы глаза сами могли выхватить блок. В уайтсмитсе же и скобки, и тело блока идут под одну линейку, отчетливо видно начало и конец, всегда ясно, что к чему относится. Не нравиться он может только с непривычки.
Название: Закон Мура и техника программирования
Отправлено: RawonaM от июля 17, 2011, 20:42
Цитата: Python от июля 17, 2011, 20:29
javac — да, с нуля, скорее всего. Ассемблерные вставки, экономия оперативки, стремление все оптимизировать — стиль конца 80-х, джава — середина 90-х.
Вы так говорите, как будто это плохо. Сегодня человекочасы стоят дороже, чем оперативка и процессор, и чем дальше тем паче. Поэтому нет смысла тратить дорогое время на бессмысленные оптимизации.
Название: Закон Мура и техника программирования
Отправлено: hurufu от июля 17, 2011, 20:54
Цитата: RawonaM от июля 17, 2011, 20:42
Сегодня человекочасы стоят дороже, чем оперативка и процессор, и чем дальше тем паче. Поэтому нет смысла тратить дорогое время на бессмысленные оптимизации.
А вам самому не страшно от написанного?
Название: Закон Мура и техника программирования
Отправлено: RawonaM от июля 17, 2011, 21:00
Цитата: hurufu от июля 17, 2011, 20:54
Цитата: RawonaM от июля 17, 2011, 20:42Сегодня человекочасы стоят дороже, чем оперативка и процессор, и чем дальше тем паче. Поэтому нет смысла тратить дорогое время на бессмысленные оптимизации.
А вам самому не страшно от написанного?
Нет. Я знаю что говорю. Все новые языки нужны чтобы экономить драгоценное человеческое время, а старые языки чтобы экономить драгоценное процессорное время.
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 17, 2011, 21:02
Цитата: Python от июля 17, 2011, 20:29Чтобы видеть связь между телом блока и закрывающей скобкой, нужен хорошо отточенный глазомер. В общем, наглядности там недостаточно для того, чтобы глаза сами могли выхватить блок. В уайтсмитсе же и скобки, и тело блока идут под одну линейку, отчетливо видно начало и конец, всегда ясно, что к чему относится. Не нравиться он может только с непривычки.
Чё там видеть? Изменения отступа, короткая строка (одна скобка)...

Цитата: RawonaM от июля 17, 2011, 20:42Вы так говорите, как будто это плохо. Сегодня человекочасы стоят дороже, чем оперативка и процессор, и чем дальше тем паче. Поэтому нет смысла тратить дорогое время на бессмысленные оптимизации.
Благодаря такой философии в WOW во времена моей игры частота кадров падала в среднем в два раза в год. Учитывая что тормоза на разные процессоры не делились, явно надо подумать о человекочасах, которые смогут оптимизировать код под многопроцессорность.
Название: Закон Мура и техника программирования
Отправлено: RawonaM от июля 17, 2011, 21:07
Цитата: Drundia от июля 17, 2011, 21:02
Благодаря такой философии в WOW во времена моей игры частота кадров падала в среднем в два раза в год.
Это не философия, это правда жизни. Процессор вы меняли по закону Мура? Если нет, то что удивительного? Кроме того, что частота кадров падала, добавлялись новые вещи, из-за которых она падала собственно. Рассчитанные на то, что процессоры уже будут мощнее.
Что касается оптимизаций кадров и прочее, то там они конечно не бессмысленные.
Название: Закон Мура и техника программирования
Отправлено: hurufu от июля 17, 2011, 21:10
Цитата: Drundia от июля 17, 2011, 21:02
Благодаря такой философии в WOW во времена моей игры частота кадров падала в среднем в два раза в год. Учитывая что тормоза на разные процессоры не делились, явно надо подумать о человекочасах, которые смогут оптимизировать код под многопроцессорность.
Сейчас, таких специалистов очень мало, и никто из новых програмистов не хочет тратить свое время на оптимизацию. Поэтому имеем, что имеем.
Название: Закон Мура и техника программирования
Отправлено: RawonaM от июля 17, 2011, 21:16
Цитата: hurufu от июля 17, 2011, 21:10
Сейчас, таких специалистов очень мало, и никто из новых програмистов не хочет тратить свое время на оптимизацию.
Не так. Платят — тратят, не платят — не тратят. А платят только за то, где есть смысл. Оптимизация ради оптимизации — это к гуманитариям обращаться.
Название: Закон Мура и техника программирования
Отправлено: Drundia от июля 17, 2011, 21:36
Цитата: RawonaM от июля 17, 2011, 21:07Это не философия, это правда жизни. Процессор вы меняли по закону Мура? Если нет, то что удивительного? Кроме того, что частота кадров падала, добавлялись новые вещи, из-за которых она падала собственно. Рассчитанные на то, что процессоры уже будут мощнее.
Что касается оптимизаций кадров и прочее, то там они конечно не бессмысленные.
Правда жизни в том, что поддержки многопроцессорности не хватает. Многоядерные процессоры штампуют, а в играх с их поддержкой туговато... Нагрузку на процессор наращивали, а довести до ума код не смогли... впрочем WOW такой WOW, для него типично появление нужні вещей через ~4 года после того как они стали нужны.
Название: Закон Мура и техника программирования
Отправлено: RawonaM от июля 17, 2011, 21:40
Цитата: Drundia от июля 17, 2011, 21:36
Правда жизни в том, что поддержки многопроцессорности не хватает. Многоядерные процессоры штампуют, а в играх с их поддержкой туговато...
Это правда. При всем прогрессе хардвера софт-технологии остаются теми же и меняются очень медленно, а кое-кто тащит еще и назад в 80-ые потому что должно быть красиво и это искусство.
Никакого прорыва в ближайшее время не предвидится, хотя конечно сейчас нужно решать проблемы распараллеливания по разным процам/компам.
Название: Закон Мура и техника программирования
Отправлено: Python от июля 17, 2011, 23:27
У закона Мура тоже есть предел. Скорее всего, дальше нанометрических элементов прогресс не пойдет, если только мы не научимся делать процессоры из частиц меньше атома. Так что дальше вся надежда будет на оптимизацию софта и собственно архитектуры железа. Опыт 80-х мало пригодится: тогда многопроцессорность была лишь у суперкомпьютеров, в ближайшем будущем она будет повсюду. Хотя параллельно идущие сотни и тысячи процессов тоже, в идеале, будут требовать глубокой оптимизации — следовательно, можно ожидать реинкарнации низкоуровневого оптимизационного программирования.
Название: Закон Мура и техника программирования
Отправлено: RawonaM от июля 17, 2011, 23:29
Да, я же говорю, сейчас ставка на распараллеливание всего и по-максимуму. Нужен какой-то прорыв в технологиях софтостроения, а то он реально не поспевает за технологиями.
Название: Закон Мура и техника программирования
Отправлено: Валентин Н от июля 17, 2011, 23:31
троичные оптокомпы будут
Название: Закон Мура и стили программирования
Отправлено: Bhudh от июля 18, 2011, 17:46
Цитата: 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)
Название: Закон Мура и стили программирования
Отправлено: Тайльнемер от июля 24, 2011, 20:33
Цитата: Python от июля 16, 2011, 06:39
И все-таки, джависты приняли крайне неудобные правила оформления расстановки скобок.
Мне Whitesmiths style больше нравится.
¡  :UU:  ;up:  :=  :P !
Название: Закон Мура и стили программирования
Отправлено: arseniiv от июля 24, 2011, 21:19
А мне нравится Allman. Там скобки как бы показывают, какой уровень за блоком.