Как часто вы используете псевдокод в реальном мире?

Вернувшись в колледж, только использование псевдокода было проповедано больше, чем ООП в моей учебной программе. Так же, как комментирование (и другие проповедованные «лучшие практики»), я обнаружил, что во время кризиса psuedocode часто игнорировался. Итак, мой вопрос ... кто на самом деле использует это много времени? Или вы используете его только тогда, когда алгоритм действительно трудно полностью осмыслить? Я заинтересован в ответах от всех: начинающих разработчиков до ушей и ветеранов, которые были еще в дни перфокарт.

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

11.12.2008 18:53:19
Спасибо Даок ... вау. Я немного смущен этой орфографической ошибкой! ;)
Kyle Walsh 11.12.2008 18:58:00
Нет проблем, я тоже делаю много ошибок при наборе текста :)
Patrick Desjardins 11.12.2008 19:07:46
Ха-ха-ха ... Думаю, мне следует это отредактировать? Я буду, в духе точности.
Kyle Walsh 11.12.2008 19:35:24
14 ОТВЕТОВ
РЕШЕНИЕ

Я использую это все время. Каждый раз, когда мне нужно объяснить решение по проекту, я буду его использовать. Разговаривая с нетехническим персоналом, я им воспользуюсь. Он имеет приложение не только для программирования, но и для объяснения того, как что-то делается.

Работая с командой на нескольких платформах (в данном случае Java-интерфейс с бэкэндом COBOL), гораздо проще объяснить, как работает фрагмент кода с использованием псевдокода, чем показать реальный код.

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

15
11.12.2008 18:59:57

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

5
11.12.2008 18:58:47
Это не плохое эмпирическое правило.
Kyle Walsh 11.12.2008 18:59:55

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

Я также блок-схемы или диаграммы типа UML при попытке сделать выше также ...

1
11.12.2008 19:00:53

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

Таким образом, мне не нужно возвращаться и документировать это, так как это уже сделано.

1
11.12.2008 19:02:29

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

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

1
11.12.2008 19:02:38

Я почти всегда использую его сейчас при создании любых нетривиальных подпрограмм. Я создаю псевдокод в виде комментариев и продолжаю расширять его, пока не дойду до того, что смогу просто написать эквивалентный код под ним. Я обнаружил, что это значительно ускоряет разработку, уменьшает синдром «просто писать код», который часто требует переписывания для вещей, которые изначально не рассматривались, поскольку он заставляет вас продумывать весь процесс перед написанием реального кода и служит хорошей основой для Документация кода после того, как написано.

5
11.12.2008 19:02:51

Я не использую псевдокод вообще. С синтаксисом языков стилей C мне удобнее, чем с псевдокодом.

То, что я делаю довольно часто для целей дизайна, по сути является функциональным стилем кодирования.

public void doBigJob( params )
{
    doTask1( params);
    doTask2( params);
    doTask3( params);
}
private void doTask1( params)
{
    doSubTask1_1(params);
    ...
}

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

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

1
11.12.2008 19:03:37
Там определенно очарование минималистский код (для меня, в любом случае).
Kyle Walsh 11.12.2008 19:10:23

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

procedure GetTextFromValidIndex (input int indexValue, output string textValue)
// initialize
// check to see if indexValue is within the acceptable range
//    get min, max from db
//    if indexValuenot between min and max
//       then return with an error
// find corresponding text in db based on indexValue
// return textValue
   return "Not Written";
end procedure;
2
11.12.2008 19:05:26

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

Тем не менее, иногда мне приходилось писать псевдокод после написания кода, что обычно происходит, когда я пытаюсь описать реализацию программы высокого уровня, чтобы за короткий промежуток времени кто-то освоил новый код. И под «реализацией высокого уровня» я подразумеваю, что одна строка псевдокода описывает около 50 строк C #, например:

Ядро сбрасывает кучу файлов XML в папку и запускает файл process.exe.
  исполняемый файл с несколькими параметрами командной строки.

Process.exe читает каждый файл
    Каждый файл читается построчно
    Уникальные слова извлекаются из файла, хранящегося в базе данных
    Файл удаляется по окончании обработки

Такой псевдокод достаточно хорош для описания примерно 1000 строк кода и достаточно хорош для точного информирования новичка о том, что на самом деле делает программа.

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

2
11.12.2008 19:11:11

Я никогда не использую или не использовал это.

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

1
11.12.2008 19:14:23

Я и другие разработчики в моей команде использую его постоянно. В электронных письмах, на доске или просто в беседе. Psuedocode призван помочь вам думать так, как вам нужно, чтобы иметь возможность программировать. Если вы действительно не понимаете psuedocode, вы можете использовать практически любой язык программирования, потому что основным отличием между ними является синтаксис.

3
11.12.2008 19:18:14
Это может быть правдой, что большая часть программирования выполняется на языках, которые отличаются только синтаксисом. Вы можете сделать этот аргумент для C, C ++, C #, Pascal и Java. Вы можете сказать это для Perl, Python, Smalltalk, Ruby и, возможно, Scheme, в зависимости от вашего уровня макро-кунг-фу. Вы можете группировать Basic, COBOL и Fortran. И еще есть выбросы: Haskell, YACC, SQL - все они языки программирования, но с необычными семантическими паттернами. Вот что действительно делает новый язык: семантика.
Ian 11.08.2009 04:50:25

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

Я использую это изрядное количество на StackOverflow.

2
11.12.2008 19:22:24

Я не использую псевдокод, как его учат в школе, и не очень давно.

Я использую описания алгоритмов на английском языке, когда логика достаточно сложна, чтобы оправдать ее; они называются «комментарии». ;-)

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

2
11.12.2008 19:52:31

В статье 9 «Процесс программирования псевдокода» Стив Макконнел завершен , и в ней предлагается интересный подход: при написании функции длиннее нескольких строк используйте простой псевдокод (в форме комментариев), чтобы обозначить, для чего нужна функция / процедура. сделать перед написанием фактического кода, который это делает. Комментарии псевдокода могут затем стать реальными комментариями в теле функции.

Я склонен использовать это для любой функции, которая делает больше, чем то, что можно быстро понять, посмотрев на экран (максимум) кода. Это работает особенно хорошо, если вы уже использовали для разделения тела вашей функции в «параграфах» кода - единицах семантически связанного кода, разделенных пустой строкой. Тогда «комментарии псевдокода» работают как «заголовки» к этим абзацам.

PS: Некоторые люди могут утверждать, что «вы не должны комментировать, что, но почему, и только тогда, когда нет смысла понимать для читателя, который знает рассматриваемый язык лучше, чем вы» . Я в целом согласен с этим, но я делаю исключение для ГЧП. Критерии наличия и формы комментария не должны быть изложены в камне, но в конечном итоге должны определяться мудрым, продуманным применением здравого смысла . Если вы обнаружите, что отказываетесь испытать небольшую склонность к субъективному «правилу» просто ради этого, вам, возможно, придется отступить назад и понять, что вы недостаточно критически к нему относитесь.

2
31.08.2011 02:33:59