В статье даются ссылки на язык ДРАКОН (DRAKON) и на программу Степана Митькина DrakonHub.
Создание кольцевых алгоритмов
Мансур Аюни
Глава
Первый онлайн: 31 мая 2020 года
347 доступов
Абстрактный
В своей самой базовой форме разработка алгоритма, независимо от того, какой язык программирования вы используете, заключается в преобразовании входных данных в выходы. Следовательно, по своей сути программирование — это процесс создания логического потока из полученных данных и доставки данных пользователю в качестве решения проблемы.
Это предварительный просмотр контента подписки, доступ к которому осуществляется через ваше учреждение.
Варианты покупки
DOI: 10.1007/978-1-4842-5833-0_5
Объем главы: 64 страницы
Мгновенная загрузка PDF
Читаемость на всех устройствах
Владейте им навсегда
Эксклюзивное предложение только для физических лиц
Расчет налога будет завершен при оформлении заказа
Купить главу
ISBN: 978-1-4842-5833-0
Мгновенная загрузка PDF
Читаемость на всех устройствах
Владейте им навсегда
Эксклюзивное предложение только для физических лиц
Расчет налога будет завершен при оформлении заказа
Купить электронную книгу
ISBN: 978-1-4842-5832-3
Отправлено в течение 3-5 рабочих дней
Эксклюзивное предложение только для физических лиц
Может применяться бесплатная доставка по всему миру Ограничения на доставку, проверьте, не пострадали ли вы.
Расчет налога будет завершен при оформлении заказа
Купить книгу в мягкой обложке
Подробнее об институциональных подписках
Примечания
1.
Брет Виктор — дизайнер интерфейсов, ученый-компьютерщик и инженер-электрик, известный своими докладами о будущем технологий. Виктор привлек внимание своими докладами «Изобретая в принципе» (2012) и «Будущее программирования» (2013). Сейчас он работает над своим видением Dynamicland, где «программирование» происходит в видимом пространстве: комнате. «Программист» использует свое зрение и свое тело, чтобы «прикоснуться» к программе, которую он создает, и жить внутри нее. Это видение, если оно будет достигнуто, освободит нас от того, чтобы быть рабами наших экранов и IDE, и превратит программирование в гуманизированную деятельность, открытую для всех. Вы можете найти больше на Dynamicland.org.
2.
Примерами являются Visual Studio от Microsoft, Eclipse IDE от IBM и Ring Notepad.
3.
Этот конкретный аспект визуализации компьютерных программ при их выполнении будет рассмотрен в главе 6, чтобы вы, как программист Ring, могли «наблюдать» за своими переменными, живущими во время выполнения и «перемещающимися» между локальной, объектной и глобальной областями. В текущей главе мы сосредоточимся на видимости аспекта проектирования компьютерного кода, а не на его аспекте среды выполнения.
4.
Содержание этого раздела широко основано на объяснениях, данных
https://drakonhub.com, онлайн-инструментом, предоставляющим язык
Drakon в веб-браузере. Сам проект
Drakon с открытым исходным кодом с бесплатной настольной версией программного обеспечения можно найти на
http://drakon-editor.sourceforge.net/.
5.
Шампур представляет собой длинный кусок дерева или металла, используемый для удержания кусочков пищи, обычно мяса, вместе во время приготовления. Проект
Drakon использует его в качестве метафоры для боковой линии, которая поддерживает все другие компоненты блок-схемы.
6.
Можно сказать, что хорошее и плохое, приятное и неприятное — это относительные суждения, которые не могут быть последовательными между людьми и даже между разными статусами одного и того же человека. Как это может быть использовано в структурированной дисциплине, такой как программирование? Мой короткий ответ заключается в том, что программирование структурировано по замыслу, но на самом деле это не так, потому что те, кто его пишет, являются людьми. Есть много суетливости в том, что мы говорим в коде. В небольших программах хорошее и плохое связано с оценкой программистом ситуации, но мы должны оставаться последовательными во всей программе. В больших кодовых базах необходимо принять точку зрения клиента: счастливый путь — это то, что делает клиента счастливее, а менее приятный путь — это то, чего он пытается избежать в первую очередь.
7.
Проверьте его в файле diskaria.ring, созданном в папке для этой главы: c:\ringbook\chap5.
8.
Оптимизация производительности является одним из основных требований к качеству программного обеспечения. Производительность может быть определена как объем работы, выполняемой компьютером для выполнения задачи программирования. На производительность программы влияет множество факторов: время, затрачиваемое на выполнение программы (включая время самой программы, время операционной системы и сетевое время), скорость процессора и, особенно, сложность программного кода. В главе 9 я дам вам подсказку о том, как к этому подходят профессиональные программисты с точки зрения планирования временной и пространственной сложности компьютерных программ.
9.
Знаете ли вы, для чего используется +=? Например, n += 1 является аббревиатурой n = n + 1, но она более элегантна и, как правило, поставляется с лучшей скоростью. Вы также можете использовать n -= 3, n ∗= 5 и так далее.
10.
Обратите внимание на изменение, которое я сделал для лучшей читабельности: но вместо этого. Узнайте о гибкости синтаксиса языка Ring в центре документации:
http://ring-lang.sourceforge.net/doc1.1 ... ility.html.
11.
Я объясню использование скобок ({ }) далее в этой главе.
12.
Обратите внимание, что я знаю, что это не самый чистый подход к алгоритму подсчета, но он полезен для педагогики. Кстати, протестируйте его в новом файле count10.ring.
13.
Подробнее об этом вы узнаете в следующем разделе.
14.
Вместо элемента можно использовать любое имя переменной. Обычно это должно отражать характер элементов списка. Итак, если мы перебираем список людей, называемых aPersons[],, мы говорим «для человека в aPerson[]».
15.
На самом деле это не переполнение стека, а числовое переполнение, даже если первая ошибка правильно сообщается в Ring Notepad. Я объясню корневую ошибку и то, как вы можете «развязать» ее в следующем разделе, когда я представлю циклы while. На данный момент вы можете поразмышлять о разнице между двумя видами ошибок, прочитав эти определения в Интернете.
Переполнение:
https://tinyurl.com/utbkceqЧисловой (или арифметический) переполнение:
https://tinyurl.com/tzubzemПереполнение стека:
https://tinyurl.com/yx85h2rzСтек вызовов:
https://tinyurl.com/crmdrwr16.
Как упоминалось в предыдущих главах, Ring не предоставляет нативную форму логической переменной. Они могут быть выражены двумя переменными TRUE и FALSE, которые соответствуют числам 1 и 0 соответственно. В Ring все имеет значение TRUE, кроме нулевого числа, которое является ЛОЖНЫМ.
17.
На самом деле, вы не должны заботиться о части программы // Functions, потому что то, что мы изучаем здесь, связано с «мышлением», разработанным на
Drakon-диаграмме. Структурно это соответствует основной области кольцевой программы, как было представлено в предыдущих главах. Помните, что функции и классы в Ring всегда идут в конец файла, и это действительно полезно, чтобы сосредоточиться на рассматриваемой проблеме.
18.
Не разочаровывайтесь, если результат «ничего» в окне «Вывод». Повторите попытку много раз (Ctrl+F5), чтобы обработчик случайности сгенерировал число, соответствующее существующему щенку в списке aMyPref[]. Мы исправим это в ближайшее время в разделе.
19.
Я посвящаю это одному из моих друзей в команде Apress, который узнает себя в этой истории.
20.
Не воспринимайте это как Евангелие. Я притворяюсь, что я быстрый, но на самом деле я особенно медленный в мышлении, прежде чем писать какой-либо код. Так что не торопитесь!
21.
Всегда лучше использовать переменные TRUE и FALSE для представления логических условий. Несмотря на это, использование строк типа :AVAILABLE и :UNAVAILABLE в текущем случае может дать нам больше ясности и выразительности.
22.
Всегда используйте консоль для тестирования программ, которые имеют дело с бесконечными циклами и большим объемом данных. Там вы можете прервать выполнение, в любое время, просто нажав Ctrl + D на клавиатуре. В окне Вывод Блокнота вы обязаны дождаться появления сообщения об ошибке или закрыть СРЕДУ IDE и открыть ее снова, что нецелесообразно. Вы предпочтете консоль, в этой ситуации, по другой причине, связанной с характером ошибки, генерируемой Ring. Чтобы объяснить это, давайте возьмем случай, когда итерация зацикливается на числе и увеличивает его бесконечно (у нас будет пример, подобный этому, в следующем разделе). При запуске цикла на консоли возникает ошибка Числовой переполнение, которое соответствует корню проблемы, с которой вы сталкиваетесь. Когда вы используете окно вывода Блокнота, которое использует внутри виджет QTextEdit с использованием объекта QProcess из платформы Qt, ошибка, которую вы получите, - это переполнение стека, которое не является неправильным, но маскирует корневую ошибку (Числовое переполнение) и предотвращает ее возникновение и передачу вам. Это рискованно и вводит в заблуждение, особенно при разработке критически важных приложений.
23.
В следующем разделе вы увидите, что это условие также может быть в нижней части блока while.
24.
Чтобы выучить язык, нужно понимать его культуру. Это включает в себя мотивацию дизайнера языка и проблемы, которые он хочет решить, а также варианты дизайна, которые он реализовал, чтобы отличить свой язык от других языков программирования. Во многих местах книги я пытаюсь показать вам культурные аспекты языка Кольца, поэтому, пожалуйста, обратите на них внимание. Кроме того, дискуссия, которую я имел с Махмудом Файедом, изобретателем Кольца, представленная в приложении к книге, может быть поучительной и действительно полезной.
25.
Вот несколько искренних советов: используйте эту визуальную парадигму до тех пор, пока она не станет вам ненужной и не станет естественным рефлексом, другими словами, спонтанным образом мышления в коде!
26.
Этот пример взят как есть из документации Ring.
27.
Знаете ли вы, что Linux, одно из самых безопасных и эффективных программных приложений в мире, широко использует GOTO? Хорошо, но это гуру кодирования, и вам лучше не подражать им.
28.
Это прекрасное определение из Википедии.
29.
Арабский термин, который означает поехали!
30.
Это бесплатная фотография из этого общественного достояния:
https://tinyurl.com/yxq4kosv.
31.
Практический пример этого будет представлен в главе 8, когда мы проведем рефакторинг одной из игр, поставляемых с Ring.
32.
Те, кто практиковал объектно-ориентированное программирование, знают, что эти принципы приводятся в действие самой объектной парадигмой (конфиденциальность и вызов метода). Тем не менее, многие ООП-программисты могут отклоняться от этих принципов и приходить с неорганизованными классами кода. Принимайте это как правило общего назначения, которому вы должны следовать, независимо от того, какую парадигму программирования вы выберете. Кстати, в главе 7 вы откроете для себя беглость языка Ring в поддержке многих парадигм программирования (структурированное, ООП, функциональное, декларативное, естественное и динамическое программирование) и установите между ними значимую связь.
Информация об авторе
Авторы и аффилированные лица
Калидия Консалтинг, Сус, Тунис
Мансур Аюни
Права и разрешения
Перепечатки и разрешения
Информация об авторских правах
© 2020 Мансур Аюни
Об этой главе
Проверка валюты и подлинности с помощью CrossMark
Процитируйте эту главу
Аюни, М. (2020). Создание кольцевых алгоритмов. В: Начало кольцевого программирования. Апресс, Беркли, Калифорния,
https://doi.org/10.1007/978-1-4842-5833-0_5Скачать цитату
. РИС. ЭНВ. НАГРУДНИК
ДОЙ
https://doi.org/10.1007/978-1-4842-5833-0_5Опубликованный
31 мая 2020
Имя издателя
Апресс, Беркли, Калифорния
Печать ISBN
978-1-4842-5832-3