2016-11-22 4 views
2

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

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

Тематическое исследование - это APL, язык, который мы полушутям описываем как «только для записи». Вот example:

m ← +/3+⍳4

(Пояснение: ⍳4 создает массив, [1,2,3,4], затем 3 добавляется к каждому компоненту, которые затем суммируются вместе и результат хранится в переменной м.)

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

Вот его Haskell эквивалент:

m = foldl (+) 0 (map (+3) [1..4])

И Python:

reduce(add, map(lambda x: x+3, range(4)))

Но принцип позади этих лаконичных языков программирования отличается: они используют слова и знаки препинания для описания высокого (например, fold), тогда как я хочу писать символы для этих общих действий.

Существует ли такой формализованный псевдокод?

+0

Заранее спасибо, ребята! – 0atman

+1

Если это так, что вы можете использовать его для себя, не было бы легче придумать свои собственные обозначения, которые точно соответствуют вашему домену и вашему образу мышления, чем узнать нотацию, изобретенную кем-то еще? – svick

+1

Просто быть любопытным (и я знаю только APL): действительно ли Python и Haskell-Samples эквивалентны? Где '3' в этом коде? (И BTW, я полностью согласен с Evans: APL, кажется, лучший ответ, особенно если вы ищете символы вместо слов) – MBaas

ответ

2

Не быть забавным, но вы можете использовать APL. В конце концов, это было первоначально изобретено как математическое обозначение, прежде чем оно превратилось в язык программирования. Кажется, я помню, что было что-то вроде того, о чем я думаю, что вы говорите в лекции Льюкса Тьюринга. Наконец, возможно, Z Notation - это то, что вы хотите: https://en.m.wikipedia.org/wiki/Z_notation

+0

Я думаю, что проблема с использованием APL или Z заключается в том, что это не тот домен, который, скажем, рассуждает о webapp. – 0atman

+0

Хм, извините, но я не вижу проблемы. Если вы выводите на консоль, в Windows-Form или HTML не должно быть такого различия на уровне псевдокода. Не являются ли алгоритмы и поток данных и т. Д. Главной проблемой? – MBaas

+1

Кстати, вы можете, конечно же, разработать веб-приложения с большинством/всеми вкусами APL - тот, который я знаю и как лучше всего http://miserver.dyalog.com - Dyalog APL бесплатно для личного использования :) – MBaas